C語言學(xué)生信息管理系統(tǒng)_第1頁
C語言學(xué)生信息管理系統(tǒng)_第2頁
C語言學(xué)生信息管理系統(tǒng)_第3頁
C語言學(xué)生信息管理系統(tǒng)_第4頁
C語言學(xué)生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C語言課程設(shè)計題目名稱: 學(xué)生信息管理系統(tǒng) 姓 名 XXX 學(xué) 號 XXXXXXXX 專 業(yè) 網(wǎng)絡(luò)工程 班 級 一班 指導(dǎo)教師 XXX 編寫日期 2011/6/6 目錄1、序言32、需求分析32.1.具體目標..3、總體設(shè)計43.1.算法分析43.2.程序框圖54、詳細設(shè)計54.1.函數(shù)模塊54.1.1.主界面函數(shù)54.1.2.輸入函數(shù)64.1.3.查詢函數(shù)74.1.4.修改信息函數(shù)94.1.5.增加信息函數(shù)114.1.6刪除信息函數(shù).134.1.7.輸出信息函數(shù)144.1.8保存信息函數(shù)144、組員名單155、結(jié)論和心得156、致謝211、

2、序言隨著學(xué)校的規(guī)模不斷過大,學(xué)生數(shù)量急劇增加,有關(guān)學(xué)生的各種信息量也成倍增加。面對龐大的信息量需要有學(xué)生信息管理系統(tǒng)來提高學(xué)生管理工作的效率。通過這樣的系統(tǒng)可以做到信息的規(guī)范化管理、科學(xué)性統(tǒng)計和快速查詢、修改、增加、刪除等,從而減少管理方面的工作量。2、需求分析 本系統(tǒng)主要需要解決的任務(wù)是實現(xiàn)學(xué)生信息關(guān)系的系統(tǒng)化、規(guī)范化和自動化,其主要目的是計算學(xué)生各種信息進行日常管理,如查詢、修改、增加刪除學(xué)生信息等。在實現(xiàn)程序功能的同時應(yīng)該做到界面簡單易懂,容易操作,方便使用的要求。并且程序需要有一定的糾錯能力。2.1.具體目標本系統(tǒng)主要應(yīng)用于學(xué)生學(xué)籍管理、信息查詢等部分,具有不同的操作功能。具體功能如下

3、:2.1.1 有關(guān)學(xué)生信息的錄入,學(xué)生信息包括輸入學(xué)生的學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-mail等(學(xué)生信息用文件保存)。 2.1.2. 學(xué)生信息的瀏覽功能。2.1.3. 學(xué)生信息的查詢功能,其中實現(xiàn)按學(xué)號和姓名二種方式查詢。2.1.4. 學(xué)生信息的修改功能,包括增加、刪除等。3、總體設(shè)計3.1.算法分析首先,考慮信息的錄入,一個學(xué)生包括這么多的屬性,應(yīng)該考慮定義一個結(jié)構(gòu)體。其次,我們應(yīng)該考慮數(shù)據(jù)的存儲形式,在這里我們用一個數(shù)組。從文件中錄入我們首先要定義一個文件指針,打開該文件后通過一個循環(huán)來讀文件,將所有信息讀出來后關(guān)閉文件。對于菜單的實現(xiàn),首先用printf語句把程序的

4、功能列出來,然后等待用戶輸入而執(zhí)行不同的函數(shù),執(zhí)行完了一個功能后又回到菜單。信息的瀏覽,我們只需要通過一個循環(huán)將結(jié)構(gòu)體中所有元素輸出就行了。信息的查詢,我們選擇用switch結(jié)構(gòu)來解決用學(xué)號和姓名二種方式來查詢的要求。等輸入學(xué)號或者姓名的時候,通過字符串比較函數(shù),如果存在,那么輸出學(xué)生信息,否則提示錯誤并要求重新輸入。信息的修改,輸入要修改信息的學(xué)號。首先用字符串比較函數(shù)判斷改學(xué)生信息是否存在,如果存在,同過switch語句來依次修改學(xué)生的各項信息。修改信息我們需要用字符串復(fù)制函數(shù)。增加新學(xué)生信息,輸入要增加的學(xué)號。首先用字符串比較函數(shù)判斷,如果輸入的學(xué)號已經(jīng)存在,則提示重新輸入,否則依次輸入

5、各項信息。刪除學(xué)生信息,通過比較找到要刪除的學(xué)號,用后一個學(xué)生的信息直接賦值,后面的依次賦值給前一個學(xué)生的信息。3.2.程序框圖 學(xué)生信息管理錄入學(xué)生信息查詢學(xué)生信息修改學(xué)生信息增加學(xué)生信息刪除學(xué)生信息顯示當前信息保存學(xué)生信息退出系統(tǒng)按學(xué)號按姓名4、詳細設(shè)計4.1.函數(shù)模塊4.1.1.主界面函數(shù)void menu() int num; printf( 簡易學(xué)生通訊錄系統(tǒng)nn); printf( -系統(tǒng)功能菜單-n); printf( *n); printf( * 1.讀入學(xué)生信息 *n); printf( *2.查詢學(xué)生信息 *n); printf( *3.修改學(xué)生信息 *n); printf

6、( *4.增加學(xué)生信息 *n); printf( *5.按學(xué)號刪除信息 *n); printf( *6.顯示當前信息 *n); printf( *7.保存當前學(xué)生信息 *n); printf( *8.退出系統(tǒng) *n); printf( *n); printf(請選擇菜單編號:); scanf(%d,&num); switch(num) case 1:input();break; case 2:inquir();break; case 3:modify();break; case 4:increase();break; case 5:del();break; case 6:output();br

7、eak; case 7:save();break; case 8:k=0;break; default:printf(請在1-8之間選擇n); 說明:此函數(shù)的功能是輸出主界面功能菜單,已供選擇相應(yīng)的模塊進行操作。其中定義一個變量num,通過輸入num的值來進入相應(yīng)的功能,switch提供了不同選擇的入口。在結(jié)束相應(yīng)功能的操作后又返回主界面,并且對錯誤的輸入有一定的糾錯能力。4.1.2.輸入函數(shù)void input() FILE *fp; int i=0; if (fp=fopen(student.dat,r)=NULL) printf(Open file studentdent.dat err

8、or! Strike any key to exit!); exit(0); while(fscanf(fp,%s %s%d%s %s %s %s %s,studenti.number,,&studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email)=8) i+; fclose(fp); n=i; printf(錄入完畢!n);說明:此函數(shù)的功能是從文件中錄入信息。首先定義了一個文件指針fp,用他來打開文件student.dat(事先已經(jīng)儲存),通過while循環(huán)錄

9、入信息,最后關(guān)閉文件。顯示錄入信息成功!4.1.3.查詢函數(shù)void inquir()int i,j,item,flag; char s1LEN; printf(-n);printf(1.按學(xué)號查詢n);printf(2.按姓名查詢n);printf(3.退出本菜單n);printf(-n);while(1) printf(請選擇子菜單編號:); scanf(%d,&item); flag=0; switch(item) case 1: printf(請輸入要查詢的學(xué)生的學(xué)號:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,

10、s1)=0) flag=1; printf(該學(xué)生學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-email 分別為:n); printf(%s %s %d %s %s %s %s %sn,studenti.number,,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); if(flag=0) printf(該學(xué)號不存在!n); break; case 2: printf(請輸入要查詢的學(xué)生的姓名:n); scanf(%s,s1); for(i=0;

11、in;i+) if(strcmp(,s1)=0) flag=1; printf(該學(xué)生學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-email 分別為:n); printf(%s %s %d %s %s %s %s %sn,studenti.number,,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); if(flag=0) printf(該姓名不存在!n); break; case 3:return; default:

12、printf(請在1-3之間選擇n); 說明:首先定義一個變量,輸入值通過switch來選擇相應(yīng)模塊。用一個for循環(huán)和字符串比較函數(shù)來不斷的把輸入的數(shù)據(jù)和系統(tǒng)儲存的信息比較,如果相同,則輸出信息。否則提示信息不存在!4.1.4.修改信息函數(shù)void modify() int i,j,item,num; char sex13,s1LEN,s2LEN; printf(請輸入要要修改的學(xué)生的學(xué)號:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,s1)=0) num=i;printf(-n);printf(1.修改姓名n);pri

13、ntf(2.修改年齡n);printf(3.修改性別n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改電話號碼n);printf(7.修改E-email地址n);printf(8.退出本菜單n);printf(-n);while(1) printf(請選擇子菜單編號:); scanf(%d,&item); switch(item) case 1: printf(請輸入新的姓名:n); scanf(%s,s2); strcpy(,s2); break; case 2: printf(請輸入新的年齡:n); scanf(%

14、d,&studentnum.age);break; case 3: printf(請輸入新的性別:n); scanf(%s,sex1); strcpy(studentnum.sex,sex1); break; case 4: printf(請輸入新的出生年月:n); scanf(%s,s2); strcpy(studentnum.time,s2); break; case 5: printf(請輸入新的地址:n); scanf(%s,s2); strcpy(studentnum.add,s2); break; case 6: printf(請輸入新的電話號碼:n); scanf(%s,s2);

15、 strcpy(studentnum.tel,s2); break; case 7: printf(請輸入新的E-email地址:n); scanf(%s,s2); strcpy(studentnum.email,s2); break; case 8:return; default:printf(請在1-8之間選擇n); 說明:首先輸入要修改信息的學(xué)號,同樣通過字符串比較函數(shù)來判斷學(xué)號是否存在。如果存在則通過switch語句來選擇需要修改的信息,修改通過字符串復(fù)制函數(shù)。修改結(jié)束后可以選擇退出該模塊,進入主界面。4.1.5.增加信息函數(shù)void increase() int i=n,j,flag

16、; printf(請輸入待增加的學(xué)生數(shù):n); scanf(%d,&m); do flag=1; while(flag) flag=0; printf(請輸入第 %d 個學(xué)生的學(xué)號:n,i+1); scanf(%s,studenti.number); for(j=0;ji;j+) if(strcmp(studenti.number,studentj.number)=0) printf(已有該學(xué)號,請檢查后重新錄入!n); flag=1; break; printf(請輸入第 %d 個學(xué)生的姓名:n,i+1); scanf(%s,); printf(請輸入第 %d 個學(xué)

17、生的年齡:n,i+1); scanf(%d,&studenti.age); printf(請輸入第 %d 個學(xué)生的性別:n,i+1); scanf(%s,studenti.sex); printf(請輸入第 %d 個學(xué)生的出生年月:(格式:年.月)n,i+1); scanf(%s,studenti.time); printf(請輸入第 %d 個學(xué)生的地址:n,i+1); scanf(%s,studenti.add); printf(請輸入第 %d 個學(xué)生的電話:n,i+1); scanf(%s,studenti.tel); printf(請輸入第 %d 個學(xué)生的E-email:n,i+1);

18、scanf(%s,studenti.email); if(flag=0) i+; while(in+m); n+=m; printf(錄入完畢!nn);說明:首先判斷學(xué)號是否存在,如果存在,則提示學(xué)號已經(jīng)存在。否則通過循環(huán)依次輸入學(xué)生的各種信息,輸入結(jié)束后返回主界面。4.1.6刪除信息函數(shù).void del() int i,j,flag=0; char s1LEN+1; printf(請輸入要刪除學(xué)生的學(xué)號:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,s1)=0) flag=1; for(j=i;jn-1;j+) stu

19、dentj=studentj+1; if(flag=0) printf(該學(xué)號不存在!n); if(flag=1) n-; printf(刪除成功,顯示結(jié)果請選擇菜單6n); 說明:該函數(shù)的目的是為了刪除學(xué)生信息,我們定義了四個變量,其中數(shù)組s1用來輸入需要刪除的學(xué)生學(xué)號。i為for的循環(huán)變量,用來遍歷全部學(xué)生信息,通過strcmp函數(shù)來判斷該學(xué)號是否存在。如果存在,將定義的變量flag賦值為1,同時將i后面的每一個學(xué)生信息都賦給前一個學(xué)生的信息,達到刪除的效果。如果學(xué)號不存在,那么flag為0,這時系統(tǒng)則提示學(xué)號不存在。函數(shù)調(diào)用完后返回主界面,可以繼續(xù)選用其他模塊的功能。4.1.7.輸出信息

20、函數(shù)void output() int i; printf(所有學(xué)生的信息為:n); for(i=0;in;i+) printf(%s %s %d %s %s %s %s %sn,studenti.number,,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); 說明:此函數(shù)是為了輸出所有的學(xué)生信息,要實現(xiàn)比較簡單,只需直接通過一個循環(huán)將結(jié)構(gòu)體中的元素遍歷輸出即可。輸出后返回主界面。4.1.8保存信息函數(shù)void save() int i,j,k,fl

21、ag=0; FILE *fp; fp=fopen(student.dat,w); for(i=0;in;i+) fprintf(fp,%s %s %d %s %s %s %s %sn,studenti.number,,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); fclose(fp);說明:定義該函數(shù)是為了保存信息至文件,首先必須定義一個文件指針,用指針打開函數(shù)打開一個已經(jīng)存儲好的文件,通過一個循環(huán)將n個學(xué)生的信息存進文件。最后關(guān)閉文件,以保證信息

22、不會丟失。函數(shù)調(diào)用完畢后返回主界面,從而可以繼續(xù)操作程序。4、組員名單XXX 7 模塊:刪除學(xué)生信息、輸出學(xué)生信息、將信息存入文件XXX 5 模塊:結(jié)構(gòu)體定義、錄入信息XXX 3 模塊:修改學(xué)生信息XXX 9 模塊:查詢學(xué)生信息XXX 0 模塊:主界面、增加學(xué)生信息5、結(jié)論和心得XXX:在這次的C程序課程設(shè)計中我負責三個模塊,分別是:刪除學(xué)生信息,輸出學(xué)生信息和將學(xué)生信息存入文件。我負責的是相對比較簡單的模塊,實現(xiàn)的時候不是很吃力。但還是存在很多的小問題,列如忘記分號啊、某些表達式位置不正確導(dǎo)致的邏輯錯誤等等。在這次設(shè)計中我體會到了寫程序一定得細心,因為幾乎全對還是等于錯誤,細節(jié)決定成敗。另外

23、也加強了組員中的友誼,有很多問題都是大家一起討論解決的。我們討論分配了各自負責的模塊,在接口方面我們開始有一些分歧,但最后都達成了一致。我們每個人都在努力,當最后我們用文件包含語句將所有的模塊包含起來運行成功的那一刻,我覺得我的付出得到了收獲。當然這收獲不僅僅是成功的完成了作業(yè),更多是過程中的那種不懈努力的精神,組員間相互的幫助鼓舞,讓我收益良多。當然也要感謝老師在設(shè)計中對我的幫助,給我的啟發(fā),謝謝你們!XXX:通過此次C語言程序設(shè)計實踐,我實在是獲益不淺!C語言是這個學(xué)期才開始學(xué)習(xí)的,有很多地方都沒弄懂,所以一開始做題,也是有點模糊,在指導(dǎo)老師的指導(dǎo)下,我們慢慢的進入狀態(tài),我們做的是一個學(xué)生

24、信息管理系統(tǒng),內(nèi)容包括很多。運用的函數(shù)也是非常的復(fù)雜,我們一組有五個人,我們分工合作,我們每個人各負責一塊功能區(qū)域,經(jīng)過幾星期的努力,我們完成了大半個程序,但是總是有很多錯誤出現(xiàn),有好多是些小問題,這都是我們粗心大意造成的,所以設(shè)計程序一定要仔細,不容一點的馬虎。同時,也讓我們知道了,合作的力量,如果是孤軍奮戰(zhàn)的話,我們也不能在規(guī)定時間內(nèi)完成,當然,也多虧老師的指導(dǎo)。程序設(shè)計過程有如解決一實際問題,從解決實際問題的角度,我們可以這樣來看:首先要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;其次,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何

25、從輸入導(dǎo)出輸出,在這個過程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理過程算法??傻米詈蠼Y(jié)論。在程序設(shè)計中,可認為也是一個社會,每個一同的社會成員都有不同的想法。程序設(shè)計學(xué)得的好壞要看你在社會中解決問題的能力的高低,所以不同的人編程的結(jié)果是不同的。在這個社會中,經(jīng)驗與想法最為重要。這次設(shè)計,讓我掌握了C語言,而且還得到了用C語言解決實際問題的寶貴經(jīng)驗!XXX:這學(xué)期我們學(xué)的C語言,以前就聽過這個名字,打開書一看簡直一竅不通,學(xué)好這門科簡直就是一個挑戰(zhàn),課前課后都要把書啃一遍,要不然上課就跟不上,終于學(xué)期快結(jié)束了,我們有一個課程設(shè)計,完成一個復(fù)雜的程序,我們的題目是做簡易學(xué)生通訊錄系統(tǒng),難度不

26、小啊。通過組員的分工合作。終于還是完成了設(shè)計。 首先感謝郭美老師給予的幫助。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表通過這次課程設(shè)計之后,我們把前面所學(xué)過的知識又重新溫故了一遍。 做它,難就難在不知從何開始,這個時候才知道上課老師們不厭其煩的教導(dǎo)是多么的寶貴,這個時候才后悔上課的時候沒有認真的聽講??墒乾F(xiàn)在一切都晚了,還好時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論