學(xué)生作業(yè)完成情況管理系統(tǒng)(數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言實(shí)習(xí)論文)_第1頁(yè)
學(xué)生作業(yè)完成情況管理系統(tǒng)(數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言實(shí)習(xí)論文)_第2頁(yè)
學(xué)生作業(yè)完成情況管理系統(tǒng)(數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言實(shí)習(xí)論文)_第3頁(yè)
學(xué)生作業(yè)完成情況管理系統(tǒng)(數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言實(shí)習(xí)論文)_第4頁(yè)
學(xué)生作業(yè)完成情況管理系統(tǒng)(數(shù)據(jù)結(jié)構(gòu)和c語(yǔ)言實(shí)習(xí)論文)_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西北農(nóng)林科技大學(xué)信息工程學(xué)院實(shí)習(xí)報(bào)告題 目:學(xué)生作業(yè)完成情況管理系統(tǒng) 學(xué) 號(hào)姓 名專(zhuān)業(yè)班級(jí)指導(dǎo)教師實(shí)踐日期目 錄一、綜合訓(xùn)練目的與要求1二、綜合訓(xùn)練任務(wù)1三、總體設(shè)計(jì)1四、詳細(xì)設(shè)計(jì)說(shuō)明3五、測(cè)試說(shuō)明5六、實(shí)習(xí)日志9七、實(shí)習(xí)總結(jié)10八、附錄:核心代碼清單10一、綜合訓(xùn)練目的與要求正文本綜合訓(xùn)練是計(jì)算機(jī)科學(xué)與技術(shù)、信息管理與信息系統(tǒng)、軟件工程專(zhuān)業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完程序設(shè)計(jì)語(yǔ)言(C)、數(shù)據(jù)結(jié)構(gòu)課程后進(jìn)行的一次全面的綜合練習(xí)。本課綜合訓(xùn)練的目的和任務(wù):1 鞏固和加深學(xué)生對(duì)C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)課程的基本知識(shí)的理解和掌握2 掌握C語(yǔ)言編程和程序調(diào)試的基本技能3 利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)4

2、 掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力5 提高運(yùn)用C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問(wèn)題的能力二、綜合訓(xùn)練任務(wù)題目:學(xué)生作業(yè)完成情況管理系統(tǒng):假設(shè)某門(mén)課程一學(xué)期要留10次作業(yè),每次老師要進(jìn)行批改,給出分?jǐn)?shù)后還要進(jìn)行登記。學(xué)期期末要根據(jù)每次作業(yè)的成績(jī)計(jì)算出最終的平時(shí)成績(jī)。要求:1. 用戶(hù)注冊(cè)登錄功能;2. 通過(guò)鍵盤(pán)輸入某位學(xué)生某次作業(yè)的分?jǐn)?shù);3. 從磁盤(pán)文件導(dǎo)入學(xué)生信息;4. 給定學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況;5. 給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況;6. 給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息;7. 給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息;8. 按班級(jí)號(hào)查詢(xún)?cè)摪鄬W(xué)生成績(jī);9. 按學(xué)號(hào)查詢(xún)

3、該學(xué)生成績(jī);10. 將所有學(xué)生成績(jī)按降序排列。三、總體設(shè)計(jì)程序整體分為用戶(hù)登錄部分、獲取數(shù)據(jù)部分、數(shù)據(jù)處理及處理信息反饋部分、數(shù)據(jù)導(dǎo)出保存部,。程序功能模塊如圖1、圖2所示。登錄部分登陸注冊(cè)退出 學(xué)生作業(yè)完成情況管理程序手動(dòng)輸入學(xué)生姓名班級(jí)學(xué)號(hào)各次作業(yè)分?jǐn)?shù)從文件導(dǎo)入學(xué)生信息輸入學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況輸入班號(hào),顯示該班學(xué)生的作業(yè)完成情況輸入學(xué)生的學(xué)號(hào),修改該學(xué)生的各類(lèi)信息輸入學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息顯示各類(lèi)統(tǒng)計(jì)信息返回主菜單清屏導(dǎo)出至文件默認(rèn)路徑導(dǎo)入自定義路徑導(dǎo)入修改姓名修改班級(jí)修改成績(jī)按學(xué)號(hào)查詢(xún)平均成績(jī)(最終成績(jī))按班級(jí)查看平均成績(jī)(最終成績(jī))查看平均成績(jī)降序序列默認(rèn)路徑導(dǎo)出自定義

4、路徑導(dǎo)出 圖2 程序流程:登錄部分分為登錄、注冊(cè)和退出三部分。程序采取一次性注冊(cè),即用戶(hù)名與密碼不可修改,每次只能注冊(cè)一個(gè)用戶(hù)名。登錄之前需要先注冊(cè),否則登錄時(shí)程序會(huì)提示“未注冊(cè)”,第二次注冊(cè)程序會(huì)提示“賬戶(hù)已存在,請(qǐng)返回登錄”。登錄成功后會(huì)提示登錄成功,選擇退出時(shí),程序會(huì)結(jié)束。第二部分為登錄成功后,進(jìn)入系統(tǒng)可進(jìn)行的操作,可以在系統(tǒng)中輸入學(xué)生的各項(xiàng)信息和成績(jī),也可以從文件中直接導(dǎo)入(文件中保存的信息應(yīng)該依次是姓名、學(xué)號(hào)、班級(jí)號(hào)、連續(xù)十次的成績(jī),各個(gè)信息用空格隔開(kāi))。文件導(dǎo)入分為默認(rèn)路徑導(dǎo)入和自定義路徑導(dǎo)入,導(dǎo)入方式?jīng)Q定于用戶(hù)上次導(dǎo)出時(shí)(即保存信息時(shí))的選擇,導(dǎo)出部分和導(dǎo)入部分相同,為了不會(huì)在異

5、常情況下導(dǎo)致數(shù)據(jù)丟失,導(dǎo)出時(shí)都采用追加式導(dǎo)入文件(之前導(dǎo)出信息不會(huì)被覆蓋),可以自己進(jìn)入導(dǎo)出文件或在程序中將無(wú)效信息刪除。四、詳細(xì)設(shè)計(jì)說(shuō)明Int Main()Void User_log()Void Input()Void read_file()Int log()school_num_search(st);class_num_search(st);school_num_change(st);school_num_delete(st);void creat_files(stupt st,FILE* &fp)statistics_result(st);system(CLS);Printf_help(

6、);Void inpu()Void login()Void Printf_log()write_in_file(a,name,fp);Void read_passwd(a,name,fp);Void Log_timefilep_read_to_st(st,fp);read(p,fp);search(st,snum);void printf_score(stupt p)search_2(st,clnum);void printf_infor(stupt p)search_3(st,snum);void change(stupt&p)change_name(p);change_class(p);c

7、hange_score(p);printf_help_2();delete_pt(st,snum);printf_infor(q);void fileprintf(stupt st,FILE* fp)cnum_check_aver(st);printf_help_3();descending_order_check(st);snum_check_aver(st);system(color F9);int aver(stupt p)search_4(st,snum);int aver(stupt p)search_5(st,cnum);int aver(stupt p)選3開(kāi)始已注冊(cè)?注冊(cè)N登錄

8、讀取信息?Y默認(rèn)路徑自定義路徑Y(jié)(選2)選a選bN(選1)手動(dòng)輸入查詢(xún)信息總體信息?輸學(xué)號(hào)查該生信息全部成績(jī)降序排列Y選4輸班號(hào)查該班信息輸班號(hào)查平均成績(jī)輸學(xué)號(hào)查平均成績(jī)選1N(選7)選3選2修改、刪除信息修改信息?Y(選5)選1選2選3修改班級(jí)修改姓名修改成績(jī)刪除信息N(選6)清除屏幕退出?返回主菜單N(選8)Y(選a)默認(rèn)路徑導(dǎo)出自定義路徑導(dǎo)出結(jié)束五、測(cè)試與分析5.1測(cè)試環(huán)境該程序是在Windows XP的code blocks的環(huán)境下完成的。5.2測(cè)試過(guò)程1. 登錄部分:登錄時(shí)菜單,第一次直接運(yùn)行.exe文件時(shí)必須要自己先在該目錄下passwd.txt,然后注冊(cè),如已注冊(cè)則第二無(wú)法繼續(xù)注

9、冊(cè)2. 如果該文件不存在,注冊(cè)是會(huì)有以下提示圖3. 文件導(dǎo)出,選擇a會(huì)默認(rèn)導(dǎo)出到程序所在目錄下的D:student_homework_infor.txt;也可以選擇b自定義導(dǎo)出,格式不限(一般就.doc、.eio、.txt;定義為.infor、.reg、.exe也可以4.導(dǎo)入成功,查看成績(jī)5.按提示刪除成績(jī)6.按提示修改成績(jī)7.退出5.3測(cè)試分析1. 存在不能完全清空緩沖區(qū)問(wèn)題,導(dǎo)致一旦輸入錯(cuò)誤程序無(wú)法繼續(xù)正常運(yùn)行,無(wú)論輸入什么,會(huì)不斷彈出輸入錯(cuò)誤提示, 結(jié)果使得程序變得不可操作,也不能正常結(jié)束,通過(guò)編寫(xiě)clear()函數(shù),每次輸入之后徹底清空緩沖區(qū),讓程序出錯(cuò)的可能降到極低;2. 在第七部分

10、第三項(xiàng)按平均成績(jī)給學(xué)生排序的哪里,開(kāi)始采用的是降序輸出,即不排序,每次僅找到上次最大值結(jié)點(diǎn)的次大值結(jié)點(diǎn)并輸出信息,在遇到有很多平均成績(jī)相同的結(jié)點(diǎn)無(wú)法正常輸出;后來(lái)采用將學(xué)生信息鏈表按平均成績(jī)大小插入到一個(gè)新的空鏈表中(即對(duì)其排序),排好后在讓st(頭指針)指向空鏈表頭的下一個(gè),使得問(wèn)題解決;3. 在文件導(dǎo)入時(shí),因?yàn)槭褂胒eof();開(kāi)始采用的是先判斷后讀取,使得讀入信息最后一項(xiàng)為隨機(jī)值,隨后上網(wǎng)了解資料之后之后采用先讀取,后判斷,問(wèn)題得到解決。六、實(shí)習(xí)日志2012年7月6日 星期五今天是實(shí)習(xí)的第一天,我的題目是學(xué)生作業(yè)完成情況管理系統(tǒng)。我覺(jué)得首先應(yīng)該對(duì)于程序的功能有一個(gè)大的框架,經(jīng)過(guò)和同學(xué)老師

11、的商量討論,在題目要求的基礎(chǔ)上拓展了好多的功能,下一步就是通過(guò)代碼實(shí)現(xiàn)功能了。2012年7月7日 星期六實(shí)習(xí)的第二天,在老師的提議下開(kāi)始詳細(xì)的寫(xiě)設(shè)計(jì)說(shuō)明。我用流程圖的形式將功能展示出來(lái),這樣會(huì)使各個(gè)功能之間的關(guān)系看起來(lái)一目了然??磥?lái)是萬(wàn)事俱備只欠東風(fēng)咯2012年7月8日 星期日今天開(kāi)始編程序,發(fā)現(xiàn)并沒(méi)有想象中的那么順利。所以首先將該用到的程序好好復(fù)習(xí)了一下,感覺(jué)心里踏實(shí)多了。然后開(kāi)始著手編小程序,到時(shí)候再把他們連接在一起就好。只是真正動(dòng)手做起來(lái)好難啊,只做了一點(diǎn)點(diǎn)就頭暈眼花的。2012年7月9日 星期一今天繼續(xù)編一個(gè)個(gè)子函數(shù),有了昨天的鋪墊,覺(jué)得不那么難了。通過(guò)不斷的試驗(yàn)和請(qǐng)教老師同學(xué),終于完

12、成好多的子函數(shù),仿佛已經(jīng)看到的一片光明的“未來(lái)”,哈哈。2012年7月10日 星期二今天已經(jīng)是實(shí)習(xí)的第五天了,我動(dòng)用了一切可以動(dòng)用的資源,終于完成了各個(gè)子函數(shù)的編程。我根據(jù)之前的畫(huà)流程框圖一步步的構(gòu)建嵌套的大框架,只可惜最終才完成了一部分。雖然有點(diǎn)累,但還是很開(kāi)心,覺(jué)得過(guò)的無(wú)比的充實(shí)。2012年7月11日 星期三今天繼續(xù)完成程序框架的嵌套,功夫不負(fù)有心人,總算是弄完了。無(wú)比激動(dòng)的運(yùn)行之后發(fā)現(xiàn)就編譯錯(cuò)誤就有好多,這無(wú)疑給我潑了一大盆的冷水。雖然覺(jué)得很麻煩,但是沒(méi)辦法,還是乖乖的改吧2012年7月12日 星期四今天繼續(xù)修改程序,按照計(jì)劃今天可是最后一天改程序了,時(shí)間緊迫。我集中精力的排查錯(cuò)誤,終于

13、基本改好了,剩下的一點(diǎn)點(diǎn)小問(wèn)題。只能留到明天解決了。2012年7月13日 星期五今天調(diào)動(dòng)所有的腦細(xì)胞,終于將程序完全的完全的改完了,開(kāi)始寫(xiě)課程設(shè)計(jì)報(bào)告了。這個(gè)報(bào)告只要按自己的真實(shí)想法真心體會(huì)來(lái)寫(xiě),比編程序輕松多了呢。2012年7月14日 星期六今天完成了實(shí)習(xí)報(bào)告的撰寫(xiě)和整合,并且向老師建議的那樣再做了ppt。讓我對(duì)自己程序的框架更加的明白,還鍛煉了其他各個(gè)方面的能力,真是一舉多得?。∑?、實(shí)習(xí)總結(jié)為期十天的數(shù)據(jù)結(jié)構(gòu)與c語(yǔ)言應(yīng)用實(shí)習(xí)就告一段落了,經(jīng)過(guò)這段時(shí)間的實(shí)習(xí),我確實(shí)收獲了很多。自己的數(shù)據(jù)結(jié)構(gòu)本來(lái)學(xué)的就很不扎實(shí),所以實(shí)習(xí)一直很忐忑,本來(lái)還想著在網(wǎng)上找點(diǎn)資料,后來(lái)也是以失敗告終??粗瑢W(xué)們都好好

14、的完成作業(yè),我也決定通過(guò)自己的努力來(lái)實(shí)現(xiàn)程序要求的功能。剛開(kāi)始的時(shí)候一直和老師同學(xué)多多討論,終于自己有了一些思路。為了成功的編寫(xiě)代碼我一直查看課本,沒(méi)當(dāng)自己編出哪怕小小的一個(gè)簡(jiǎn)單的程序,我也會(huì)開(kāi)心好久。終于我的程序完成了,雖然過(guò)程很坎坷,但是畢竟是自己完成的。這幾天的實(shí)習(xí)讓我對(duì)c語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)有了更深層次的了解。我相信以后我還是會(huì)像這次一樣不論多艱難都會(huì)完成自己的目標(biāo)的。八、附錄:核心代碼清單#include #include #include #include #include #include #include typedef struct student char name10; int

15、 schoolnumber; int classnumber; float score10; struct student *next; stu,*stupt;stupt st=NULL;/學(xué)生信息的頭指針stupt qt=NULL;/學(xué)生信息的尾指針FILE* fp;/文件指針typedef struct user char logname10; char passwd6;*userpt,user;/-clear-/void clear(void)/清空緩沖區(qū)函數(shù) char ch; do ch=getchar(); while(ch!=n);/主菜單/void Printf_help() p

16、rintf( n); printf( |*尊敬的用戶(hù)請(qǐng)您選擇操作: *|n); printf( |* 1.手動(dòng)輸入學(xué)生作業(yè)的分?jǐn)?shù) *|n); printf( |* 2.從文件導(dǎo)入學(xué)生信息 *|n); printf( |* 3.輸入學(xué)號(hào),顯示某位學(xué)生作業(yè)完成情況 *|n); printf( |* 4.輸入班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況 *|n); printf( |* 5.輸入學(xué)生的學(xué)號(hào),修改該學(xué)生的各類(lèi)信息 *|n); printf( |* 6.輸入學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息 *|n); printf( |* 7.顯示各類(lèi)統(tǒng)計(jì)信息 *|n); printf( |* 8.菜單 *|

17、n); printf( |* 9.清屏 *|n); printf( |* a.導(dǎo)出至文件 *|n); printf( |* 0.退出系統(tǒng) *|n); printf( n); printf(:);/-1-/輸入成績(jī)/void inpu(stupt p) int n; int m=0; int flag; while(mscorem=0; m+; printf(請(qǐng)您輸入姓名:); scanf(%s,p-name); clear(); printf(請(qǐng)您輸入學(xué)號(hào):); scanf(%d,&p-schoolnumber); clear(); printf(請(qǐng)您輸入班級(jí)號(hào)(如:101):); scanf

18、(%d,&p-classnumber); clear(); do printf(請(qǐng)您輸入第幾次作業(yè)(110):); scanf(%d,&n); clear(); printf(請(qǐng)您輸入該次作業(yè)成績(jī):); scanf(%f,&p-scoren-1); clear();/清空緩沖區(qū) printf(您是否繼續(xù)輸入該生成績(jī),退出請(qǐng)按q,其他鍵繼續(xù):); flag=getchar(); clear();/清空緩沖區(qū)堆積 while(flag!=q);void input(stupt&st,stupt&qt) char flag; stupt p,q; p=q=NULL; printf(請(qǐng)問(wèn)您確認(rèn)輸入?y

19、.是 n.取消(注意大小寫(xiě))n); while(flag=getchar()!=n) clear();/清空緩沖區(qū) if(flag=y) p=(stupt)malloc(sizeof(stu); if(p=NULL) exit(1); inpu(p); if(st=NULL) st=qt=p; else if(qt!=NULL) qt-next=p; /尾指針?lè)强眨版湵硪汛嬖?接著尾指針建立鏈表 qt=p; else printf(溫馨提示:您存在非法輸入,請(qǐng)進(jìn)入菜單界面重新選擇(按8或9):); return; printf(請(qǐng)問(wèn)您是否繼續(xù)輸入?y.是 n.否(注意大小寫(xiě))n); if(f

20、lag=n) Printf_help(); clear(); if(p!=NULL&qt!=NULL) qt-next=NULL; /-2-/導(dǎo)入成績(jī)/void read(stupt p,FILE* fp) fscanf(fp,%s,p-name); fscanf(fp,%d,&p-schoolnumber); fscanf(fp,%d,&p-classnumber); fscanf(fp,%f,&p-score0); fscanf(fp,%f,&p-score1); fscanf(fp,%f,&p-score2); fscanf(fp,%f,&p-score3); fscanf(fp,%f,

21、&p-score4); fscanf(fp,%f,&p-score5); fscanf(fp,%f,&p-score6); fscanf(fp,%f,&p-score7); fscanf(fp,%f,&p-score8); fscanf(fp,%f,&p-score9); /fread(p,sizeof(stu),1,fp);/*int judge(FILE * fp) int ch; ch=fgetc(fp); fseek(fp,-1l,SEEK_CUR);/回退一個(gè)字符位 if(ch=EOF) return 1; else return 0;/返回1文件結(jié)尾*/void filep_rea

22、d_to_st(stupt &st,FILE* fp) /int k; stupt p; st=NULL;/置空st,準(zhǔn)備從文件中導(dǎo)入學(xué)生信息 while(1) /if(judge(fp) break; p=(stupt)malloc(sizeof(stu); read(p,fp); if(feof(fp) break; if(st=NULL) st=qt=p; else if(qt!=NULL) qt-next=p; /尾指針?lè)强眨存湵硪汛嬖?接著尾指針建立鏈表 qt=p; if(feof(fp) qt-next=NULL; /如果文件結(jié)束,尾指針next指空 /k=judge(fp);

23、/printf(%d,k); if(st!=NULL&feof(fp) printf(溫馨提示:您的文件導(dǎo)入成功!n); else printf(溫馨提示:您的文件導(dǎo)入失敗,請(qǐng)重新導(dǎo)入!n);void readfile(stupt &st,FILE* fp) char flag,flag_1; char filename90; printf(溫馨提示:您如果在導(dǎo)入前有過(guò)手動(dòng)輸入,請(qǐng)先導(dǎo)出至文件后再進(jìn)行導(dǎo)入,否則輸入那部分?jǐn)?shù)據(jù)將丟失。n); printf(按任意鍵繼續(xù),退出請(qǐng)按q:); flag_1=getchar(); clear(); if(flag_1=q) return; lab_2:

24、printf(請(qǐng)您選擇:a.程序默認(rèn)路徑導(dǎo)入(之前導(dǎo)出時(shí)需要是默認(rèn)導(dǎo)出) b.自定義導(dǎo)入路徑(請(qǐng)確保導(dǎo)入路徑合法):); flag=getchar(); clear(); if(flag=b) printf(請(qǐng)您輸入導(dǎo)入路徑(請(qǐng)確保導(dǎo)入路徑合法)(如c:.student_homework_infor.txt):); scanf(%s,filename); clear(); if(access(filename,0)=1) printf(溫馨提示:您的文件路徑不合法或文件不存在,請(qǐng)重新選擇!n); goto lab_2; fp=fopen(filename,rb); if(fp=NULL) pr

25、intf(溫馨提示:打開(kāi)%s文件失敗,請(qǐng)返回主菜單重試!n,filename); return; else filep_read_to_st(st,fp); fclose(fp); else if(flag=a) fp=fopen(student_homework_infor.txt,r); if(access(student_homework_infor.txt,0)=1) printf(溫馨提示:您的文件不存在!n); if(fp=NULL) printf(溫馨提示:打開(kāi)程序所在目錄下的student_homework_infor.txt文件失敗,請(qǐng)返回主菜單重試!n); return;

26、else filep_read_to_st(st,fp); fclose(fp); else printf(溫馨提示:您存在非法輸入!程序?qū)⒎祷刂鞑藛?n); /-3-/按學(xué)號(hào)查詢(xún)/void printf_score(stupt p) int n=0; printf(前十次成績(jī)?nèi)缦拢簄); printf(n); while(nscoren); n+; printf(n);void search(stupt&st,int snum) stupt p,q; if(st=NULL) printf(未建立學(xué)生信息表,請(qǐng)返回主菜單輸入或?qū)胨袑W(xué)生的信息n); return; else p=st; q=

27、p-next; if(p-schoolnumber=snum) printf_score(p); /查找成功輸出并返回上級(jí)函數(shù) return; while(q!=NULL) if(q-schoolnumber=snum) printf_score(q); /查找成功輸出并返回上級(jí)函數(shù) return; q=q-next;/下一個(gè) printf(查詢(xún)失敗,該學(xué)號(hào)學(xué)生信息不存在n);void school_num_search(stupt&st) int snum; char flag; do printf(請(qǐng)輸入要查找的學(xué)生學(xué)號(hào)(如221):); scanf(%d,&snum); clear();

28、/清空scanf結(jié)束時(shí)進(jìn)入緩沖的enter符 search(st,snum); printf(退出請(qǐng)按q,其它任意鍵繼續(xù)查找:); flag=getchar(); clear();/清空回車(chē)符 while(flag!=q); if(flag=q) Printf_help(); /-4-/給定班級(jí)查詢(xún)/void printf_infor(stupt p) printf(%-5d%-8s%-5d%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1f%-6.1fn,p-classnumber,p-name,p-schoolnumber,p-sco

29、re0,p-score1,p-score2,p-score3,p-score4,p-score5,p-score5,p-score7,p-score8,p-score9); printf(n);void search_2(stupt st,int clnum) stupt p,q; int f=0; if(st=NULL) printf(未建立學(xué)生信息表,請(qǐng)返回主菜單輸入所有學(xué)生的信息n); return; else p=st; q=p-next; printf(班級(jí) 姓名 學(xué)號(hào) 成績(jī)1 成績(jī)2 成績(jī)3 成績(jī)4 成績(jī)5 成績(jī)6 成績(jī)7 成績(jī)8 成績(jī)9 成績(jī)10n); printf(n); if

30、(p-classnumber=clnum) printf_infor(p); f+; /查找成功輸出 while(q!=NULL) if(q-classnumber=clnum) printf_infor(q); f+; /查找成功輸出 q=q-next;/下一個(gè) if(f=0) printf(沒(méi)有該班級(jí)學(xué)生信息n); void class_num_search(stupt st) int clnum; char flag; do printf(請(qǐng)輸入班級(jí)(如101):); scanf(%d,&clnum); clear();/清空scanf結(jié)束時(shí)進(jìn)入緩沖的enter符 search_2(st

31、,clnum); printf(退出請(qǐng)按q,其它任意鍵繼續(xù)查找:); flag=getchar(); clear();/清空回車(chē)符 while(flag!=q); if(flag=q) Printf_help(); /-5-/修改姓名班級(jí)成績(jī)/void change_name(stupt& p) printf(原姓名為:%sn,p-name); printf(請(qǐng)輸入新姓名:); scanf(%s,p-name); clear();void change_class(stupt& p) printf(原班級(jí)為:%dn,p-classnumber); printf(請(qǐng)輸入新班級(jí):); scanf(

32、%d,&p-classnumber); clear();void change_score(stupt&p) int n; char flag; do printf(請(qǐng)輸入:要修改的作業(yè)的次數(shù)(110):); scanf(%d,&n); clear(); printf(原成績(jī)?yōu)?%fn,p-scoren-1); printf(請(qǐng)輸入:該次作業(yè)新成績(jī):); scanf(%f,&p-scoren-1); clear();/清空緩沖區(qū) printf(是否繼續(xù)修改該生成績(jī),退出請(qǐng)按q,其他鍵繼續(xù)); flag=getchar(); clear(); while(flag!=q);void printf

33、_help_2() printf( n); printf( |* 請(qǐng)選擇操作: *|n); printf( |* 1.修改姓名 *|n); printf( |* 2.修改班級(jí) *|n); printf( |* 3.修改成績(jī) *|n); printf( |* 0.返回 *|n); printf( n); printf(:);void change(stupt&p) char a; printf_help_2(); while(a=getchar()!=0) clear(); printf(班級(jí) 姓名 學(xué)號(hào) 成績(jī)1 成績(jī)2 成績(jī)3 成績(jī)4 成績(jī)5 成績(jī)6 成績(jī)7 成績(jī)8 成績(jī)9 成績(jī)10n); p

34、rintf(n); printf_infor(p); switch(a) case 1: printf(您選擇了:1.修改姓名n); change_name(p); break; case 2: printf(您選擇了:2.修改班級(jí)n); change_class(p); break; case 3: printf(您選擇了:3.修改成績(jī)n); change_score(p); break; default: printf(非法輸入,請(qǐng)重新選擇!n); break; printf_help_2(); if(a=0) clear(); printf(您選擇了:0.返回n); void searc

35、h_3(stupt&st,int snum) stupt p,q; int f=0; if(st=NULL) printf(未建立學(xué)生信息表,請(qǐng)返回主菜單輸入或?qū)胨袑W(xué)生的信息n); return; else p=st; q=p-next; if(p-schoolnumber=snum) change(p); /查找成功并修改 f+; return; while(q!=NULL) if(q-schoolnumber=snum) change(q); /查找成功并修改 return; q=q-next;/下一個(gè) if(f=0) printf(沒(méi)有該學(xué)生信息n); void school_num

36、_change(stupt&st) int snum; char flag; do printf(請(qǐng)輸入要修改學(xué)生學(xué)號(hào)(如101):); scanf(%d,&snum); clear();/清空scanf結(jié)束時(shí)進(jìn)入緩沖的enter符 search_3(st,snum); printf(退出請(qǐng)按q,其它任意鍵繼續(xù)按學(xué)號(hào)查找修改信息:); flag=getchar(); clear();/清空回車(chē)符 while(flag!=q); if(flag=q) Printf_help(); /-6-/刪除學(xué)生信息/void delete_pt(stupt&st,int snum) stupt p,q; if(st=NULL) printf(未建立學(xué)生信息表,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論