版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《高級語言程序設(shè)計(jì)》課程設(shè)計(jì)</p><p><b> 實(shí)驗(yàn)報(bào)告</b></p><p> 題目: 學(xué)生成績管理系統(tǒng) </p><p> 專業(yè): </p><p> 班級:
2、 </p><p> 學(xué)號: </p><p> 姓名: </p><p> 成績: </p><p> 指導(dǎo)教師:
3、 </p><p> 完成日期: 2010年 月 日</p><p><b> 目錄:</b></p><p> 一、課程設(shè)計(jì)目的3</p><p> 二、課程設(shè)計(jì)內(nèi)容3</p><p><b> 三、總體設(shè)計(jì)
4、4</b></p><p><b> 1、模塊化設(shè)計(jì)4</b></p><p><b> 2、模塊調(diào)用圖6</b></p><p><b> 四、詳細(xì)設(shè)計(jì)7</b></p><p> ?。?)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)7</p><p>
5、(2)模塊接口設(shè)計(jì)9</p><p> 五、調(diào)試與測試12</p><p> (1)調(diào)試過程中的主要問題12</p><p> (2)測試結(jié)果的分析與討論12</p><p><b> 附錄:15</b></p><p> 《高級語言課程設(shè)計(jì)》</p><
6、;p><b> 學(xué)生成績管理系統(tǒng)</b></p><p><b> 一、課程設(shè)計(jì)目的</b></p><p> 通過課程設(shè)計(jì),加深對結(jié)構(gòu)化設(shè)計(jì)思想的理解,能對系統(tǒng)功能進(jìn)行分析,并設(shè)計(jì)合理的模塊化結(jié)構(gòu)。</p><p> 通過課程設(shè)計(jì),學(xué)會設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)。其中包括對結(jié)構(gòu)數(shù)組、鏈表和數(shù)據(jù)文件等知識的運(yùn)用。</
7、p><p> 通過課程設(shè)計(jì),提高程序開發(fā)功能,能運(yùn)用合理的控制流程編寫清晰高效的程序。</p><p> 通過課程設(shè)計(jì),訓(xùn)練C程序調(diào)試能力,能將一個(gè)中小型各級組織系統(tǒng)聯(lián)調(diào)通過。</p><p> 通過課程設(shè)計(jì),開發(fā)一個(gè)中小型系統(tǒng),掌握系統(tǒng)研發(fā)全過程。</p><p> 通過課程設(shè)計(jì),培養(yǎng)分析問題、解決實(shí)際問題的能力。</p>
8、<p> 通過課程設(shè)計(jì),培養(yǎng)良好的編程習(xí)慣,體驗(yàn)程序開發(fā)的過程。</p><p><b> 二、課程設(shè)計(jì)內(nèi)容</b></p><p> 設(shè)計(jì)一個(gè)實(shí)用的學(xué)生成績管理系統(tǒng),能以簡便高效的方式對學(xué)生成績進(jìn)行管理和檢索,具體要示:</p><p> 登陸:要求輸入用戶名和密碼登陸,登陸模式分為教師和學(xué)生模式,教師模式可以進(jìn)行全部的管
9、理操作學(xué)生模式只能進(jìn)行部分操作。要求系統(tǒng)根據(jù)用戶名判斷用戶的權(quán)限自動選擇登陸的模式。并且在系統(tǒng)中可以實(shí)現(xiàn)登陸模式的改變。</p><p> 輸入:學(xué)生個(gè)人信息包括:學(xué)號,性別,年齡,高數(shù),政治,英語和體育等等個(gè)人信息。當(dāng)檢測到本地有過往成績記錄時(shí)可以進(jìn)行數(shù)據(jù)導(dǎo)入。</p><p> 更新:能插入、刪除、修改全部學(xué)生個(gè)人信息。</p><p> 瀏覽:按學(xué)號為序
10、進(jìn)行學(xué)生個(gè)人信息瀏覽。</p><p> 查詢:能實(shí)現(xiàn)指定學(xué)生成績,個(gè)人總分,各科平均分查詢功能。</p><p> 導(dǎo)出:可以將學(xué)生個(gè)人信息導(dǎo)出到文件便于查看。</p><p> 記錄:自動記錄用戶的操作,并保存在管理日志,便于檢查監(jiān)督。</p><p> 系統(tǒng)以菜單方式工作,要求界面友好,易于操作。</p><
11、p><b> 三、總體設(shè)計(jì)</b></p><p><b> 1、模塊化設(shè)計(jì)</b></p><p> 為實(shí)現(xiàn)系統(tǒng)功能,本程序主要分為3個(gè)主模塊:登陸界面、教師模式界面和學(xué)生模式界面。</p><p> 登陸界面包含歡迎信息,登陸模式介紹,以及用戶名和密碼輸入判斷,通過主函數(shù)調(diào)用登陸函數(shù)來得以實(shí)現(xiàn),并向主函數(shù)
12、返回值用來判斷登陸模式。</p><p> 教師模塊界面又分為10個(gè)小模塊,它們分別為:1.初始化學(xué)生成績表單;2.查找一個(gè)學(xué)生的成績;3.插入一個(gè)學(xué)生的成績;4.刪除一個(gè)學(xué)生的成績;5.修改一個(gè)學(xué)生的成績;6.導(dǎo)出全部學(xué)生的成績;7.打印全部學(xué)生的成績;8..其他附加功能;9.注銷用戶;0.保存退出;這些功能除了9.注銷用戶和0.保存退出外都通過主函數(shù)調(diào)用來得以實(shí)現(xiàn)。其中8.其他附加功能中有四個(gè)分模塊:1.查
13、看當(dāng)前各科的平均分2.查看當(dāng)前學(xué)生的總分3.查看當(dāng)前管理日志0.返回上一級;</p><p> 學(xué)生模式界面只包含教師模塊中的部分功能,分別是:1查找一個(gè)學(xué)生的成績2.注銷用戶0.退出系統(tǒng)。 其中1通過調(diào)用教師模塊的函數(shù)來實(shí)現(xiàn)。實(shí)現(xiàn)前提是當(dāng)前學(xué)生成績數(shù)據(jù)庫中有數(shù)據(jù)。</p><p> 主函數(shù),首先調(diào)用登陸函數(shù),打印登陸界面,根據(jù)用戶名和密碼來判斷是否允許登陸及其登陸模式,用戶名和密碼連
14、續(xù)3次輸入錯(cuò)誤則自動退出系統(tǒng)。根據(jù)登陸函數(shù)返回的值,判斷登陸模式,若返回值等于1進(jìn)入教師模式,打印教師模式界面,供用戶做出選擇,以便決定使用系統(tǒng)的哪種功能,然后通過執(zhí)行多分支選擇語句——switch語句,分別實(shí)現(xiàn)其它各個(gè)函數(shù)的調(diào)用功能。若返回值等于2.進(jìn)入學(xué)生模式,打印學(xué)生模式界面供用戶做出選擇,以便決定使用系統(tǒng)的哪種功能,然后通過執(zhí)行多分支選擇語句——switch語句,分別實(shí)現(xiàn)其它各個(gè)函數(shù)的調(diào)用功能。</p><p
15、> 系統(tǒng)中用到的頭文件和宏定義:</p><p> #include<stdio.h></p><p> #include<stdlib.h>/*調(diào)用其中的exit(0)和malloc()*/</p><p> #include<string.h>/*調(diào)用其中的strcmp()用來比較字符串*/</
16、p><p> #include <time.h>/*調(diào)用其中的函數(shù)用來返回系統(tǒng)當(dāng)前時(shí)間寫日志時(shí)用到*/</p><p> #define LEN sizeof(struct student)</p><p> #define STU struct student</p><p> 其它各個(gè)函數(shù)的功能分別如下:</p
17、><p> char Enter(); /*定義附加功能1登陸判斷函數(shù)*/</p><p> void Creat(); /*定義初始化生成鏈表函數(shù)*/</p><p> void Cin(STU *p); /*學(xué)生個(gè)人信息輸入*/</p><p> void Infile(STU *p); /*導(dǎo)入
18、學(xué)生個(gè)人函數(shù)*/</p><p> void Insert(STU *p); /*定義插入學(xué)生成績函數(shù)*/</p><p> void Delete(STU *p); /*定義刪除學(xué)生成績函數(shù)*/</p><p> void Tofile(STU *p); /*導(dǎo)出到文件函數(shù)*/</p><p> void Print(S
19、TU *p); /*打印學(xué)生成績函數(shù)*/</p><p> STU *Search(STU *p); /*查找學(xué)生成績函數(shù)*/</p><p> void Correct(STU *p); /*修改學(xué)生成績函數(shù)*/</p><p> void Extra(STU *p); /*定義附加功能選擇函數(shù)*/</p><
20、p> char Enter(); /*定義附加功能1登陸判斷函數(shù)*/</p><p> void Extra_avg(STU *p); /*定義附加功能2_求各科平均數(shù)函數(shù)*/</p><p> void Extra_sum(STU *p); /*定義附加功能2_求學(xué)生總成績函數(shù)*/</p><p> void Extra_log_
21、watch(); /*定義附加功能3_查看當(dāng)前管理日志*/</p><p> void Extra_log_write(int o); /*定義附加功能3_記錄管理日志*/</p><p> void Extra_Mark_Time(); /*記錄當(dāng)前時(shí)間函數(shù)*/</p><p><b> 2、模塊調(diào)用圖</b><
22、/p><p><b> 登陸界面流程圖</b></p><p><b> 教師界面流程圖</b></p><p><b> 學(xué)生界面流程圖 </b></p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p><b&
23、gt; (1)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> 本程序中,運(yùn)用了多種數(shù)據(jù)結(jié)構(gòu)。首先對于學(xué)生通訊錄中各項(xiàng)詳細(xì)信息的記錄用了結(jié)構(gòu)數(shù)組的形式,然后又運(yùn)用鏈表動態(tài)地分配內(nèi)存單元,在creat函數(shù)中,把保存在數(shù)組中的值再賦值給其中的一個(gè)結(jié)點(diǎn),通過指針的后移,把多個(gè)數(shù)據(jù)連成一個(gè)鏈,形成一個(gè)鏈表。在這過程當(dāng)中,還運(yùn)用了數(shù)據(jù)文件的方式,每一次從終端輸入的數(shù)據(jù)都以數(shù)據(jù)文件的形式保存到了磁盤。</p>
24、;<p> 對于主要數(shù)據(jù)結(jié)構(gòu)的舉例如下:</p><p><b> 鏈表:</b></p><p> ① struct student /*用來保存學(xué)生信息的結(jié)構(gòu)體鏈表*/</p><p><b> {</b></p><p> int num;/*學(xué)號*/
25、</p><p> char name[20]; /*姓名*/</p><p> char sex; /*性別*/</p><p> int score1;/*高數(shù)成績*/</p><p> int score2; /*政治成績*/</p><p&g
26、t; int score3;/*英語成績*/</p><p> int score4; /*體育成績*/</p><p> struct student *next; /*結(jié)構(gòu)體指針*/</p><p><b> };</b></p><p><b> 結(jié)構(gòu)體
27、數(shù)組:</b></p><p> struct idcode/*用來保存用戶名和密碼的結(jié)構(gòu)體數(shù)組*/</p><p><b> {</b></p><p> char ID[10];/*用戶名*/</p><p> char CODE[10];/*密碼*/</p>
28、<p> char shell;/*權(quán)限T---teacher,S-----student*/</p><p> }user[10]={{"admin","000000",'T'},{"guest1","000000",'S'},{"guest2","
29、000000",'S'}};</p><p> 登陸時(shí) 用戶名密碼和密碼比較 </p><p> for(i=0;i<10;i++)</p><p> if ((strcmp(id,user[i].ID)==0&&strcmp(code,user[i].CODE)==0)) </p><p&g
30、t;<b> { </b></p><p> if (user[i].shell=='T') {ch=1; break;}</p><p> if (user[i].shell=='S') {ch=2; break;}</p><p><b> }</b></p>&
31、lt;p><b> 數(shù)據(jù)文件:</b></p><p> ① if ((fp1=fopen("學(xué)生成績.db","r"))==NULL) {printf("沒有發(fā)現(xiàn)過往成績記錄!!!");Creat();} else{printf("發(fā)現(xiàn)過往成績記錄!是否開始導(dǎo)入(Y/N)?");</p>
32、;<p> ch=getchar();</p><p> getchar();</p><p> if (ch=='Y'||ch=='y') </p><p><b> { </b></p><p> head=NULL;</p><p>
33、 p2=p1=(STU *)malloc(LEN);</p><p> while(!feof(fp1))</p><p><b> {……};</b></p><p> ?、?FILE *fp1;</p><p> Int flag=1;</p><p><b> char
34、ch;</b></p><p> if (ch=='Y'||ch=='y') </p><p> {if((fp1=fopen("學(xué)生成績.db","w"))==NULL)</p><p> { printf("導(dǎo)出失敗!!");</p>&l
35、t;p><b> flag=0;</b></p><p><b> }</b></p><p> while((log=fopen("admin.log","a"))==NULL)</p><p><b> {</b></p><
36、;p> printf("寫入日志文件失敗,請聯(lián)系管理員!!");</p><p> exit(0); </p><p><b> }</b></p><p><b> (2)模塊接口設(shè)計(jì)</b></p><p> 由于本程序中大部分運(yùn)用了鏈表這一數(shù)據(jù)結(jié)構(gòu),函數(shù)中
37、存在很多指針,所以這個(gè)程序中被調(diào)用的函數(shù)都是空類型的,但這并沒有影響最終結(jié)果的輸出,反而使得函數(shù)調(diào)用的過程更加簡便。</p><p> 本程序執(zhí)行的入口是main函數(shù),然后在main函數(shù)中首先調(diào)用了Infile函數(shù),這就實(shí)現(xiàn)了對成績管理系統(tǒng)中的數(shù)據(jù)以文件的方式進(jìn)行讀入。接下來在while語句中再套用switch語句實(shí)現(xiàn)對各個(gè)函數(shù)的調(diào)用。被調(diào)用的函數(shù)很多都是沒有形參的,但是通過對鏈表的使用,可以使得每一次的函數(shù)調(diào)
38、用都能得到返回值。最后,再從main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。 </p><p> 其中涉及到被調(diào)用的函數(shù)有:</p><p> void Creat(); /*定義初始化生成鏈表函數(shù)*/</p><p> void Cin(STU *p); /*學(xué)生個(gè)人信息輸入*/</p><p> void Infile(STU *
39、p); /*導(dǎo)入學(xué)生個(gè)人函數(shù)*/</p><p> void Insert(STU *p); /*定義插入學(xué)生成績函數(shù)*/</p><p> void Delete(STU *p); /*定義刪除學(xué)生成績函數(shù)*/</p><p> void Tofile(STU *p); /*導(dǎo)出到文件函數(shù)*/</p><p&g
40、t; void Print(STU *p); /*打印學(xué)生成績函數(shù)*/</p><p> STU *Search(STU *p); /*查找學(xué)生成績函數(shù)*/</p><p> void Correct(STU *p); /*修改學(xué)生成績函數(shù)*/</p><p> void Extra_avg(STU *p); /*定義附加功能2_求各科平
41、均數(shù)函數(shù)*/</p><p> void Extra_sum(STU *p); /*定義附加功能2_求學(xué)生總成績函數(shù)*/(3)流程圖:</p><p> void Creat(); /*定義初始化生成鏈表函數(shù)*/</p><p> void Tofile(STU *p); /*導(dǎo)出到文件函數(shù)*/</p><p> v
42、oid Infile(STU *p); /*導(dǎo)入學(xué)生個(gè)人函數(shù)*/</p><p> void Delete(STU *p); /*定義刪除學(xué)生成績函數(shù)*/</p><p> void Print(STU *p); /*打印學(xué)生成績函數(shù)*/</p><p><b> 五、調(diào)試與測試</b></p>&l
43、t;p> 調(diào)試過程中的主要問題</p><p> 由于本程序是分模塊設(shè)計(jì)的,所以運(yùn)行時(shí)選擇完任務(wù)并且執(zhí)行完任務(wù)后,又會繼續(xù)回到用戶選擇界面,供用戶繼續(xù)選擇任務(wù)并執(zhí)行任務(wù),整個(gè)程序以文件形式讀寫,所以每次都可對輸入的數(shù)據(jù)進(jìn)行保存。對于本程序的調(diào)試運(yùn)行,總體上情況良好。但是,其中也出現(xiàn)了一些小問題。我發(fā)現(xiàn)的主要問題有:</p><p> 用戶界面雖然比較簡潔,但是在有些地方的顯示和
44、提示,還是不夠規(guī)范和統(tǒng)一,還有在導(dǎo)入文件時(shí)如果文件中含有漢字或者沒有按照一定的格式對齊,則很容易發(fā)生亂碼,所以在導(dǎo)出和導(dǎo)入過程中的格式很重要。</p><p> 測試結(jié)果的分析與討論</p><p><b> 用戶界面</b></p><p><b> 輸入學(xué)生信息</b></p><p>&
45、lt;b> 查找學(xué)生信息</b></p><p><b> 刪除學(xué)生信息</b></p><p><b> 修改學(xué)生信息</b></p><p><b> 打印學(xué)生信息</b></p><p><b> 附加功能:</b><
46、;/p><p><b> 查看管理日志:</b></p><p><b> 附錄:</b></p><p> /*********************************************************************************************************
47、* </p><p><b> C語言課程設(shè)計(jì) </b></p><p><b> 學(xué)生成績管理系統(tǒng):</b></p><p><b> 系統(tǒng)需求</b></p><p> 一、 (完成)當(dāng)前學(xué)生信息:通過結(jié)構(gòu)體struct student 來保存學(xué)生的姓名,學(xué)號,性
48、別,年齡,高數(shù),政治,英語和體育等等相關(guān)信息,</p><p> 并且通過cin函數(shù)來進(jìn)行給當(dāng)前學(xué)生輸入初始信息. </p><p> 二、(完成)學(xué)生成績查詢: 輸入一個(gè)學(xué)號, 查找此學(xué)生, 若找到則輸出此學(xué)生的全部信息和成績; 若找不到則輸出查找失敗的信息. 同時(shí)也可以全部把各科的平均成績,最高和最低分輸出。</p><p> 三、(完成)新生插入 :通
49、過給該生的學(xué)號來和原班上的學(xué)生的學(xué)號比較大小,若大就在后,若小則靠前排,將此生的信息保存下來。</p><p> 四、(完成)刪除學(xué)生信息: 輸入一個(gè)學(xué)號,查找此學(xué)生, 若找到則將此學(xué)生的全部信息刪除; 若找不到則輸出無此學(xué)生的信息</p><p> 五、(完成)修改學(xué)生信息: 輸入一個(gè)學(xué)號,查找此學(xué)生, 若找到則修改此學(xué)生的全部信息; 若找不到則輸出無此學(xué)生的信息</p>
50、<p> 六、(完成)將全部學(xué)生的信息保存在文件中,下次啟動該程序時(shí)自動讀入所有數(shù)據(jù)。</p><p> 七、(完成)輸出全部學(xué)生的信息。</p><p> 八、(完成)退出系統(tǒng).</p><p> 九、其他功能(自行設(shè)計(jì))三項(xiàng)。</p><p> 例如:系統(tǒng)將來完善的功能有:可以選擇根據(jù)各科成績進(jìn)行排序,可以通過性別
51、來模糊查詢,也可以通過姓名的姓來先進(jìn)行模糊查詢,以便后面精確查找。</p><p> 9.1 求輸出當(dāng)前學(xué)生各科成績的平均分</p><p> 9.2 (完成)設(shè)置使用教師和學(xué)生登陸模式,其中教師模式能使用全部功能,學(xué)生模式只能使用成績查詢、注銷和退出系統(tǒng);</p><p> 9.3 實(shí)現(xiàn)記錄管理操作保存在admin.log文件中,用Extra_log_
52、watch()函數(shù)查看學(xué)生成績管理系統(tǒng)日志</p><p> **********************************************************************************************************/</p><p><b> /*</b></p><p> 部分
53、函數(shù)使用說明: system("cls"); 用來清除當(dāng)前屏幕;</p><p> system("pause"); 暫停按任意鍵繼續(xù),用于看處理結(jié)果;</p><p> system("del ***");用來刪除某些文件;</p><p> system("type ***"
54、;); 顯示文件內(nèi)容;</p><p><b> */</b></p><p> #include<stdio.h></p><p> #include<stdlib.h>/*調(diào)用其中的exit(0)和malloc()*/</p><p> #include<string.h&
55、gt;/*調(diào)用其中的strcmp()用來比較字符串*/</p><p> #include <time.h>/*調(diào)用其中的time()函數(shù)用來返回系統(tǒng)當(dāng)前時(shí)間*/</p><p> #define LEN sizeof(struct student)</p><p> #define STU struct student</p&g
56、t;<p> struct student /*用來保存學(xué)生信息的結(jié)構(gòu)體鏈表*/</p><p><b> {</b></p><p> int num;/*學(xué)號*/</p><p> char name[20]; /*姓名*/</p><p>
57、 char sex; /*性別*/</p><p> int score1;/*高數(shù)成績*/</p><p> int score2; /*政治成績*/</p><p> int score3;/*英語成績*/</p><p> int score4;
58、/*體育成績*/</p><p> struct student *next;/*結(jié)構(gòu)體指針*/</p><p><b> };</b></p><p> STU *head;/*用來記錄鏈表的頭指針*/ </p><p> int n=0;/*用來記錄當(dāng)前記錄數(shù)*/</p>
59、<p> struct idcode/*用來保存用戶名和密碼的結(jié)構(gòu)體數(shù)組*/</p><p><b> {</b></p><p> char ID[10];/*用戶名*/</p><p> char CODE[10];/*密碼*/</p><p> char shell;
60、/*權(quán)限T---teacher,S-----student*/</p><p> }user[10]={{"admin","000000",'T'},{"guest1","000000",'S'},{"guest2","000000",'S'}
61、};</p><p> char id[10];/*定義全局變量,用以顯示當(dāng)前登陸用戶的用戶名*/</p><p> FILE *log;</p><p> /*******************************************************************</p><p><b>
62、 主函數(shù)</b></p><p> ********************************************************************/</p><p> void main()</p><p><b> {</b></p><p> int x,mode=1;
63、</p><p> void Creat(); /*定義初始化生成鏈表函數(shù)*/</p><p> void Cin(STU *p); /*學(xué)生個(gè)人信息輸入*/</p><p> void Infile(STU *p); /*導(dǎo)入學(xué)生個(gè)人函數(shù)*/</p><p> void Insert(STU *p
64、); /*定義插入學(xué)生成績函數(shù)*/</p><p> void Delete(STU *p); /*定義刪除學(xué)生成績函數(shù)*/</p><p> void Tofile(STU *p); /*導(dǎo)出到文件函數(shù)*/</p><p> void Print(STU *p); /*打印學(xué)生成績函數(shù)*/</p><p>
65、 STU *Search(STU *p); /*查找學(xué)生成績函數(shù)*/</p><p> void Correct(STU *p); /*修改學(xué)生成績函數(shù)*/</p><p> void Extra(STU *p); /*定義附加功能選擇函數(shù)*/</p><p> char Enter(); /*定義附加功能1登陸判斷函數(shù)*
66、/</p><p> void Extra_avg(STU *p); /*定義附加功能2_求各科平均數(shù)函數(shù)*/</p><p> void Extra_sum(STU *p); /*定義附加功能2_求學(xué)生總成績函數(shù)*/</p><p> void Extra_log_watch(); /*定義附加功能3_查看當(dāng)前管理日志*/<
67、;/p><p> void Extra_log_write(int o); /*定義附加功能3_記錄管理日志*/</p><p> void Extra_Mark_Time(); /*記錄當(dāng)前時(shí)間函數(shù)*/</p><p><b> Loop:</b></p><p> system("
68、cls");</p><p> printf("________________________________________________________________________________\n");</p><p> printf("\t\t\t歡迎進(jìn)入學(xué)生成績管理系統(tǒng)\n");</p><p&g
69、t; printf("\t\t\t\t\t\t\t09計(jì)算機(jī)3班周海鋒\n");</p><p> printf("________________________________________________________________________________");</p><p> mode=Enter();</p>
70、;<p> Extra_log_write(-1); /*把登陸信息寫入日志*/</p><p> if(mode==1) /******教師登陸模式*****/</p><p><b> {</b></p><p> while(1) </p><p>&l
71、t;b> {</b></p><p> system("cls");</p><p> printf("________________________________________________________________________________\n");</p><p> prin
72、tf("\t\t\t學(xué)生成績管理系統(tǒng)教師端\n");</p><p> printf("________________________________________________________________________________");</p><p> printf("用戶:%s\t\t\t\t\t當(dāng)前共有%d條成績
73、記錄\n",id,n);</p><p> printf("________________________________________________________________________________\n");</p><p> printf("\t\t\t 按1.初始化學(xué)生成績表單\n");</p>
74、<p> printf("\t\t\t 按2.查找一個(gè)學(xué)生的成績\n");</p><p> printf("\t\t\t 按3.插入一個(gè)學(xué)生的成績\n");</p><p> printf("\t\t\t 按4.刪除一個(gè)學(xué)生的成績\n");</p><p> printf("
75、\t\t\t 按5.修改一個(gè)學(xué)生的成績\n");</p><p> printf("\t\t\t 按6.導(dǎo)出全部學(xué)生的成績\n");</p><p> printf("\t\t\t 按7.打印全部學(xué)生的成績\n");</p><p> printf("\t\t\t 按8.其他附加功能\n")
76、;</p><p> printf("\t\t\t 按9.注銷用戶\n");</p><p> printf("\t\t\t 按0.保存退出\n");</p><p> printf("_______________________________________________________________
77、_________________");</p><p> printf("您輸入的是:");</p><p> scanf("%d",&x);</p><p> getchar();</p><p> system("cls");</p>&
78、lt;p> printf("________________________________________________________________________________\n");</p><p> printf("\t\t\t學(xué)生成績管理系統(tǒng)教師端\n");</p><p> printf("________
79、________________________________________________________________________");</p><p> printf("用戶:%s\t\t\t\t\t當(dāng)前共有%d條成績記錄\n",id,n);</p><p> printf("___________________________
80、_____________________________________________________");</p><p><b> switch(x)</b></p><p><b> {</b></p><p> case 1: Infile(head);Extra_log_write(x);br
81、eak;</p><p> case 2: Search(head);Extra_log_write(x);break;</p><p> case 3: Insert(head);Extra_log_write(x);break;</p><p> case 4: Delete(head);Extra_log_write(x);break;</p>
82、;<p> case 5: Correct(head);Extra_log_write(x);break;</p><p> case 6: Tofile(head);Extra_log_write(x);break;</p><p> case 7: Print(head);Extra_log_write(x);break;</p><p>
83、 case 8: Extra(head);Extra_log_write(x);break;</p><p> case 9: goto Loop; Extra_log_write(x);break;</p><p> case 0: if (n!=0) Tofile(head);Extra_log_write(x);exit(0);</p><p> def
84、ault:printf("請輸入0~4之間的數(shù)字\n"); </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> else if (mode==2) /********
85、*學(xué)生登陸模式***********/</p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> system("cls");</p><p&
86、gt; printf("________________________________________________________________________________\n");</p><p> printf("\t\t\t學(xué)生成績管理系統(tǒng)學(xué)生端\n");</p><p> printf("_____________
87、___________________________________________________________________");</p><p> printf("用戶:%s\t\t\t\t\t當(dāng)前共有%d條成績記錄\n",id,n);</p><p> printf("________________________________
88、________________________________________________\n");</p><p> printf("\t\t\t 按1.查找一個(gè)學(xué)生的成績\n");</p><p> printf("\t\t\t 按2.注銷用戶返回登陸界面\n");</p><p> printf(&
89、quot;\t\t\t 按0.退出系統(tǒng)\n");</p><p> printf("________________________________________________________________________________");</p><p> printf("您輸入的是:");</p><p
90、> scanf("%d",&x);</p><p> getchar();</p><p> system("cls");</p><p> printf("_____________________________________________________________________
91、___________\n");</p><p> printf("\t\t\t學(xué)生成績管理系統(tǒng)學(xué)生端\n");</p><p> printf("________________________________________________________________________________");</p>
92、<p> printf("用戶:%s\t\t\t\t\t當(dāng)前共有%d條成績記錄\n",id,n);</p><p> printf("________________________________________________________________________________");</p><p><b>
93、 switch(x)</b></p><p><b> {</b></p><p> case 1: Search(head);break;</p><p> case 2: goto Loop;break;</p><p> case 0: exit(0);</p><p>
94、 default:printf("請輸入0~1之間的數(shù)字\n"); </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else {</b&g
95、t;</p><p> printf("對不起!您連續(xù)三次輸入用戶名或密碼錯(cuò)誤!系統(tǒng)將自動退出");</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p>
96、<p> /**********************************************************************</p><p><b> 登陸模式判斷函數(shù)</b></p><p> ****************************************************************
97、*****/</p><p> char Enter()</p><p><b> {</b></p><p> char code[10];</p><p><b> char ch;</b></p><p><b> int i;</b>&
98、lt;/p><p> int errortime=0;</p><p> for(errortime=0;errortime<3;errortime++)</p><p> { printf("----------------------------------------------------------------------------
99、----");</p><p> printf("\t\t\t\t登陸模式:\n");</p><p> printf("\t\t\t1.教師模式(可以進(jìn)行全部操作)\n"); </p><p> printf("\t\t\t2.學(xué)生模式(只能進(jìn)行成績查詢)\n");</p>
100、<p> printf("--------------------------------------------------------------------------------");</p><p> printf("當(dāng)前默認(rèn)教師用戶名:admin 密碼:000000 \n當(dāng)前默認(rèn)學(xué)生用戶1:guest1 密碼:000000 \n當(dāng)前默認(rèn)學(xué)生用戶2:gues
101、t2 密碼:000000\n\n");</p><p> printf("請輸入您的用戶名和密碼,系統(tǒng)將根據(jù)你的權(quán)限選擇登陸模式:\n");</p><p> printf("輸入用戶名:");</p><p> scanf("%s",id);</p><p> p
102、rintf("請輸入密碼:");</p><p> scanf("%s",code);</p><p> for(i=0;i<10;i++)</p><p> if ((strcmp(id,user[i].ID)==0&&strcmp(code,user[i].CODE)==0)) </p&g
103、t;<p><b> { </b></p><p> if (user[i].shell=='T') {ch=1; break;}</p><p> if (user[i].shell=='S') {ch=2; break;}</p><p><b> }</b>&l
104、t;/p><p> if (ch==1||ch==2) break;</p><p> else if (i>=10)</p><p><b> {</b></p><p> system("cls");</p><p> printf("用戶名或密碼錯(cuò)
105、誤!!,請重新輸入[錯(cuò)誤三次將自動退出系統(tǒng)][你還有%d次機(jī)會]\n",2-errortime);</p><p><b> continue;</b></p><p><b> }</b></p><p><b> } </b></p><p> retur
106、n(ch);</p><p><b> }</b></p><p> /*******************************************************************</p><p><b> 學(xué)生個(gè)人信息輸入</b></p><p> *******
107、************************************************************/</p><p> void Cin(STU *p)</p><p><b> {</b></p><p> printf("請 輸 入 學(xué) 號:");</p><p>
108、scanf("%d",&p->num);</p><p> printf("請 輸 入 姓 名:"); </p><p> scanf("%s",p->name); </p><p> printf("請 輸 入 性 別(M/F):"); </p>
109、<p> getchar();/*接收上一個(gè)的回車*/</p><p> scanf("%c",&p->sex); </p><p> printf("請輸入高數(shù)成績:"); </p><p> scanf("%d",&p->score1);
110、 </p><p> printf("請輸入政治成績:"); </p><p> scanf("%d",&p->score2); </p><p> printf("請輸入英語成績:"); </p><p> scanf("%d",&
111、p->score3);</p><p> printf("請輸入體育成績:");</p><p> scanf("%d",&p->score4);</p><p> getchar();</p><p><b> }</b></p><
112、;p> /*************************************************************************</p><p><b> 成績導(dǎo)入函數(shù)</b></p><p> *******************************************************************
113、*******/</p><p> void Infile(STU *p)</p><p><b> {</b></p><p> STU *p1,*p2;</p><p> FILE *fp1;</p><p><b> char ch;</b></p>
114、;<p><b> n=0;</b></p><p> if ((fp1=fopen("學(xué)生成績.db","r"))==NULL) {printf("沒有發(fā)現(xiàn)過往成績記錄!!!");Creat();}</p><p><b> else{</b></p&g
115、t;<p> printf("發(fā)現(xiàn)過往成績記錄!是否開始導(dǎo)入(Y/N)?");</p><p> ch=getchar();</p><p> getchar();</p><p> if (ch=='Y'||ch=='y') </p><p><b> {
116、 </b></p><p> head=NULL;</p><p> p2=p1=(STU *)malloc(LEN);</p><p> while(!feof(fp1))</p><p><b> {</b></p><p><b> n++;</b&
117、gt;</p><p> fscanf(fp1,"%d ",&p1->num);</p><p> fscanf(fp1,"%s ",p1->name); </p><p> fscanf(fp1,"%c ",&p1->sex); </p><p&
118、gt; fscanf(fp1,"%d ",&p1->score1);</p><p> fscanf(fp1,"%d ",&p1->score2);</p><p> fscanf(fp1,"%d ",&p1->score3);</p><p> fscan
119、f(fp1,"%d ",&p1->score4);</p><p> if (n==1) head=p1;</p><p> else p2->next=p1;</p><p><b> p2=p1;</b></p><p> p1=(STU *)malloc(LEN);
120、 </p><p><b> } </b></p><p> p2->next=NULL;</p><p> fclose(fp1);</p><p> Extra_Mark_Time();</p><p> printf("已完成成績導(dǎo)入.....");
121、</p><p> system("pause");</p><p><b> }</b></p><p> else Creat();</p><p><b> }</b></p><p><b> }</b></p
122、><p> /*****************************************************************</p><p><b> 生成鏈表函數(shù)</b></p><p> ******************************************************************
123、*/</p><p> void Creat()</p><p><b> {</b></p><p> char flag;</p><p> STU *p1,*p2;</p><p> p1=p2=(STU *)malloc(LEN); </p><p>
124、 printf("是否開始輸入成績?(Y/N):"); </p><p> flag=getchar();</p><p> getchar();</p><p> head=NULL;</p><p> while(flag=='Y'||flag=='y')</p>
125、<p><b> {</b></p><p><b> flag='N';</b></p><p> n++; /*記錄數(shù)加一*/</p><p> if (n==1) head=p1;</p><p> else p2-
126、>next=p1;</p><p><b> Cin(p1);</b></p><p><b> p2=p1;</b></p><p> p1=(STU *)malloc(LEN);</p><p> printf("學(xué)生成績添加成功,是否還要繼續(xù)添加?(Y/N):"
127、;); </p><p> flag=getchar();</p><p> getchar();</p><p> system("cls");</p><p> printf("______________________________________________________________
128、__________________\n");</p><p> printf("\t\t\t學(xué)生成績管理系統(tǒng)教師端\n");</p><p> printf("________________________________________________________________________________");</
129、p><p> printf("\t\t\t\t\t\t當(dāng)前共有%d條成績記錄\n",n);</p><p> printf("________________________________________________________________________________");</p><p><b>
130、; } </b></p><p> p2->next=NULL;</p><p> Extra_Mark_Time();</p><p> printf("已完成成績輸入.....");</p><p> system("pause");</p><p&g
131、t;<b> }</b></p><p> /************************************************************************</p><p><b> 插入成績函數(shù)</b></p><p> *****************************
132、********************************************/</p><p> void Insert(STU *p)</p><p><b> {</b></p><p> STU *p0,*p2;</p><p> p0=(STU *)malloc(LEN);</p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高級語言課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- 計(jì)算機(jī)高級語言課程設(shè)計(jì)(c)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)--c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)———學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)_學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論