C語言實訓(xùn)報告—學(xué)生成績管理系統(tǒng)(文件實現(xiàn))_第1頁
C語言實訓(xùn)報告—學(xué)生成績管理系統(tǒng)(文件實現(xiàn))_第2頁
C語言實訓(xùn)報告—學(xué)生成績管理系統(tǒng)(文件實現(xiàn))_第3頁
C語言實訓(xùn)報告—學(xué)生成績管理系統(tǒng)(文件實現(xiàn))_第4頁
C語言實訓(xùn)報告—學(xué)生成績管理系統(tǒng)(文件實現(xiàn))_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、c語言程序設(shè)計實訓(xùn)報告題 目:學(xué)生成績管理系統(tǒng)院 系:專 業(yè):姓 名:學(xué) 號:指導(dǎo)教師: 曰 期:2017年9月9日1 問題定義12 12.1 12.2 函數(shù)預(yù)覽23 系統(tǒng)實現(xiàn)33.1 功能模塊33.2 全部代碼124系統(tǒng)維護(hù)194.1調(diào)試和an式195歸納總結(jié)195.1開發(fā)經(jīng)驗205. 2實訓(xùn)中遇到的問題及解決方法205.3 設(shè)計中的不足之處205.4 感想和心得體會206參考斐料20課程設(shè)計環(huán)節(jié)是應(yīng)用型本科院校非常重要的一個教學(xué)環(huán)節(jié),是學(xué)完一門課 后應(yīng)用本課知識及以前的知識積累而進(jìn)行的綜合性、開放性的訓(xùn)練。通過課程 設(shè)計,不僅能夠使學(xué)生得到系統(tǒng)的技能訓(xùn)練,鞏固和加強所學(xué)得專業(yè)理論知識, 而

2、且能夠培養(yǎng)學(xué)生工程意識、創(chuàng)新能力、團(tuán)隊精神等綜合素質(zhì),培養(yǎng)學(xué)生的設(shè) 計能力和解決實際問題的能力。c語言由于其強大的功能,豐富的表達(dá)能力,高效的代碼,良好的移植性 和靈活性,自1972年問世以來,經(jīng)久不衰,即使現(xiàn)在出現(xiàn)了面向?qū)ο蟮某绦蛟O(shè) 計方法和開發(fā)工具,但它仍然是人們學(xué)習(xí)程序設(shè)計的首選語言,用它訓(xùn)練和提 高編程技術(shù),以及開發(fā)應(yīng)用程序等。我們通過c語言程序設(shè)計這門課程的學(xué)習(xí),已經(jīng)能編寫解決小問題的 程序,對程序的開發(fā)也有了初步的認(rèn)識,還掌握了 c語言的基本語法,這一過 程確確實實令我們感到欣喜,有點計算機可以完成自我任務(wù)的成就感。但是, 對于程序設(shè)計而言,學(xué)習(xí)c的步伐不應(yīng)該停留于此。我們最終的目

3、的應(yīng)該是掌 握開發(fā)大型綜合程序的方法,即遵循軟件工程的開發(fā)步驟和結(jié)構(gòu)化程序設(shè)計思 想,用c語言開發(fā)出解決復(fù)雜問題的大型綜合程序。可是對于多數(shù)學(xué)生來說, 學(xué)習(xí)了 c語言后,除了應(yīng)付各種考試之外,別無它用,對turbo c語言豐富的 函數(shù)知之甚少,加上dos環(huán)境所限,因而對c語言興趣不大,也感到c語言 比較難以掌握。本實訓(xùn)就是為了讓學(xué)生在學(xué)完c語言后進(jìn)一步了解c語言的知識,掌握c 語言在軟件開發(fā)方面的使用方法,希望通過此次實訓(xùn),不僅能提高學(xué)生學(xué)習(xí)c 語言的興趣,更為今后學(xué)習(xí)其它專業(yè)知識及開發(fā)程序打下堅實的基礎(chǔ)。本指導(dǎo)書中有些內(nèi)容借鑒了互聯(lián)網(wǎng)上相關(guān)程序的設(shè)計思想,在此對相關(guān)者 表示衷心的感謝。由于時

4、間、經(jīng)驗及水平的原因,不當(dāng)、不足之處,請大家提出寶貴意見。編者桂林電子科技大學(xué)信息科技學(xué)院學(xué)生成績管理系統(tǒng)本題目設(shè)計目的是訓(xùn)練學(xué)生的基本編程能力,了解管理學(xué)生成績信息系統(tǒng) 的設(shè)計開發(fā)流程,熟悉c語言的文件各種基本實現(xiàn)和操作。本程序中涉及結(jié)構(gòu) 體、文件讀寫、宏等方面的知識。通過本程序的訓(xùn)練和制作,使學(xué)生能對c語 言的文件操作等方面有一個更深刻的了解,掌握利用結(jié)構(gòu)體存儲實現(xiàn)對學(xué)生成 績管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)以及之后的其他編程方 面知識的學(xué)習(xí)和理解打下堅實的基礎(chǔ)。創(chuàng)建一個學(xué)生成績管理系統(tǒng)。假設(shè)系統(tǒng)中每個學(xué)生記錄只包括學(xué)號、姓名、平時成績、期末成績、總評成績、總分、平均分、名次

5、等信息。程序的運行效果如上圖圖所示,選擇任意菜單后,實現(xiàn)相應(yīng)功能。具體結(jié)構(gòu)體設(shè)定請見以后。程序初始主界面截圖如下:*歡迎使用*科工京常酎2饕察檐普科*十差績 和和成績雪十分 : 總.嘉郡 選 錄生查查生生春翻 記單號等看于列文你 單人算學(xué)姓算聶出出入導(dǎo)抿幽 il 23,4.5.i6,i7.i8,|0.請在問題定義階段要考慮題目的可行性和需求分析,接下來進(jìn)入開發(fā)階段, 完成系統(tǒng)設(shè)計和系統(tǒng)實現(xiàn)的任務(wù)。2、系統(tǒng)設(shè)計2. 1總體設(shè)計本管理系統(tǒng)的程序主要由c語言編寫,考慮到各方面的維護(hù)和需求實現(xiàn)考 慮,程序代碼總體上采用模塊化編程方式設(shè)計以及編寫。即將一個大的功能需 求分作幾個小模塊來配合實現(xiàn),為了降低

6、添加和維護(hù)功能和需求的成本和時間。2.2函數(shù)預(yù)覽1)主函數(shù)int main()調(diào)用其他不同功能2)主菜單函數(shù)int menu(uoid)輸出顯示界面3)新建信息函數(shù)1 (手寫輸入)uni ri rpaid rlatafntii a. int h】手動輸入學(xué)生的成績信息,包括學(xué)號、姓名、平時成績、總評成績4)新建信息函數(shù)2 (文件輸入)void read datal(stu stu ,int n,int a,int b)通過文件導(dǎo)入學(xué)生成績信息5)計算成績函數(shù) void total_nark(stu stu9int n9int a9int b)計算學(xué)生試卷分?jǐn)?shù)的總評成績6)查詢成績函數(shù)

7、1 (按學(xué)號)uoid sortb|num(stu stu ,int n)按學(xué)號查詢學(xué)生試卷的總評成績7)查詢成績函數(shù)2 (按姓名)void sortbj|nane(stu stu ,int n)按學(xué)號查詢學(xué)生試卷的總評成績8)計算成績函數(shù)1 (計算總成績的及格率和優(yōu)秀率)uoid count_pass(stu stu ,int n)計算全班學(xué)生總評成績的及格率和優(yōu)秀率,并按優(yōu)良中差輸出學(xué)生人數(shù)9)計算成績函數(shù)2 (計算總成績的平均分和標(biāo)準(zhǔn)差)uoid count_auerage(stu stu ,int 計算學(xué)生總評成績的平均分和標(biāo)準(zhǔn)差10)輸出成績函數(shù)void show data(stu

8、stu,int n)輸出全班學(xué)生的所有成績,包括學(xué)號、姓名、總評成績11)導(dǎo)出成績函數(shù)uoid write_data(stu stu,int n) f.將學(xué)生所有成績的列表導(dǎo)出到文本score.txt中3、系統(tǒng)實現(xiàn)3.1功能??欤ǜ酱a)int main()stu stusize;int n,azb; char ch;int oh;* *nl()printf(httt* 歡迎使用 * nh);printf(httt*學(xué)生試卷分?jǐn)?shù)統(tǒng)計系統(tǒng)* nm);* *nl()while (1)ch = menu(); switch (ch) case 1:printf(請輸入學(xué)生人數(shù) n(n=%d):, s

9、ize);scanf(,%d, &n);printf(“請輸入學(xué)生平時成績與期末成績所占總評成績的的比例(用整數(shù)表 示,滿分100分):n);scanf(,%d%d/&a,&b);printf(以下有兩種輸入試卷分?jǐn)?shù)的方式:.手動輸入試卷分?jǐn)?shù)t2.從 student.txt文件中導(dǎo)入試卷分?jǐn)?shù)*卷);scanf(,%d,&oh);switch (oh)case 1:read_data(stu/n/a,b);break;case 2:read_datal(stu,n,a,b);break;default:printf(輸入菜單序號錯誤!);)break;case 2:total_mark(stu/

10、nza/b);break;case 3:sortbynum(stu,n);break;case 4:sortbyname(stu,n);break;case 5: count_pass(stu,n);break;case 6: count_average(stu,n);break;case 7:show_data(stu,n);break;case 8:write_data(stu,n);break;case 0:p rintf(tt* * *n).printf(ttt* 感謝使用 * n);printf(ttt*學(xué)生試卷分?jǐn)?shù)統(tǒng)計系統(tǒng)* n);p ri ntf (htt* * *n,1), e

11、xit(o);default:printf(輸入菜單序號錯誤!);)return 0;2)主菜單函數(shù)率差日成年 總詢詢及平 建查查生生看 1 記r-fs丁列文 單人娃晨暴出出 菜按ttwsdm l 123456780/*函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項*/int menu(void)int itemselected;printf(n【菜單】n);printf(l.輸入記錄n);printf(2.計算學(xué)生總評成績n);printf(”3.按學(xué)號查詢成績n);printf(”4.按姓名查詢成績n);printf(15計算學(xué)生及格率和優(yōu)秀率n);printf(”6 .計算學(xué)生平均分和標(biāo)準(zhǔn)差

12、n);printf(7 成績列表n“);printf(”8.導(dǎo)出文件n“);print。退出 n“);printf(請輸入你的選擇:);scanf(%dz &itemselected); /* 讀入用戶輸入 */ return itemselected;3)限定功能模塊小你的舉瑤:1認(rèn)學(xué)生大蹶n(n=100):30m人卓生平時成績與期末成績所占總評成績的的比例(用整數(shù)表示,滿分100分):限定(或者說確定)學(xué)生的人數(shù)和總評成績的計算方式printf(請輸入學(xué)生人數(shù) n(n=%d):z size);scanf(%d, &n);printf。請輸入學(xué)生平時成績與期末成績所占總評成績的的比例(用整數(shù)

13、表 示,滿分100分):n);scanf(%d%d,&a,&b);4 )新建成績函數(shù)1 (手動輸入)隅簿豁耀蠲輸績所占總評成績的的比例(用整數(shù)表示滿分1。分):的方式:2.以student. txt文件中導(dǎo)入試卷分?jǐn)?shù)*1請輸入學(xué)生的美號、姓名、平時成績和期末成績(逗號隔開):1651500101,位,23,561651500102,級,33,67/*函數(shù)功能:手動輸入分?jǐn)?shù)*/ void read_data(stu stu,int njnt ajnt b) int i=0;printf(”請輸入學(xué)生的學(xué)號、姓名、平時成績和期末成績(逗號隔開):n); for(i=0;in;i+)scanf(%l

14、d, %s, %d, %d,&stui.num/&/&stui.score0/&stui.scorei);stui.score2=stui.score0*a/100+stui.scorel*b/100;)5 )新建成績函數(shù)2 (文件輸入):1 n(n績績績績 .成成成成成成成成成1 o 754026612518/*函數(shù)功能:從文本student.txt中導(dǎo)入試卷分?jǐn)?shù)*/ void read_datal(stu stu,int njnt ajnt b)(int i;file *fp;if(fp=fopen(student.txt,/,r,)=null)(printf(打開文件

15、student.txt 失?。?n“); exit(o);)for(i=0; !feof(fp);i+)(fscanf(fp/,%ld,&stui.num);fscanf(fp/,%s,/);fscanf(fp/,%d,&stui.score0);fscanf(fp/,%d,&stui.scorel);)fclose(fp);濤熟人你的選擇:2 學(xué)生:165158101 學(xué)生:1651500102e:1651500103學(xué)生:16515001q4亡 165158105學(xué)生:1651500106亡 165158107學(xué)生:1651500108 學(xué)生門65158109 學(xué)生:16

16、51500110 1651500111 學(xué)生:1651500112 學(xué)生門65158113 學(xué)生:1651500114 學(xué)生門65158u5 學(xué)生:1651500116 :165150011t 粹:1651500118 豐豐:1651500119 輝:1651500120 宇豐:1651500121 輝:1651500122 豐豐:165150012? 學(xué)率:1651500124 宇生:1651500125 ms: 1651500126忘.1爵:t :0;10i。1 o wi a2|91:2:8爵融國 -1651509101a69516100162d553u1651509103c432516s

17、1316ad0h21651591。5e1376165150b1mfs6881651509107g5889165150b1mhioe1651509169i25311651500110j5fi1651509111k9884165150b112l72681651509113h84xq165-i50b11hn3175165150911502218165150b116psa1651509117q%363165150b11br9,311651509119s9471651500120t12x91651509121u24xq1651588122u83心1651509123u587九xm7a76/*函數(shù)功能:計

18、算學(xué)生試卷分?jǐn)?shù)的總評成績*/void total_mark(stu stu,int njnt ajnt b) int i;for(i=0;in;i+)stui.score2=stuij.score0*a/100+stui.scorel*ba00;printf( 學(xué) 生 :ldt 姓 名 :%st 總 評 成績:%dn,stum,num,,stui.score2);)7)查詢成績函數(shù)1 (按學(xué)號)l 2|3,|4,|5.|6.|7,&10.請子單a黑千姓寒聶出出入入:1菜按7msm料號swi績 和和 成率分 總詢詢及平生姓 :3學(xué) c。 苗10 選找00 的查15 你要65號:

19、1651500108:h平時成績:100期末成績:76總評成績:11/*函數(shù)功能:按學(xué)號查詢學(xué)生試卷的總評成績*/void sortbynum(stu stu,int n) for(i=0;in;i+)(if(stui.num=number)printf(學(xué)號:ldt姓名:st平時成績:dt期末成績:dt總評成 :%dn,/stui.num//stui.score0/stui.scorel,stui.score2);return;)printf(“抱歉,沒有找到! n); )8)查詢成績函數(shù)2 (按姓名)單人i黑子姓一懸暴出出人入:1 ilz.7.&0.請績 和

20、和 績率分總及平 堇查杳不 i記學(xué)直十差秀準(zhǔn)士生姓 :笑2 蓄10 選戰(zhàn)00 的查15 你要65姓名名:b期末成績:34 忌評成績:5/*函數(shù)功能:按姓名查詢學(xué)生試卷的總評成績*/void sortbyname(stu stujnt n)(char named10;int i;printf(請輸入要查找的學(xué)生姓名:);scanf(,%s,named);9)計算成績函數(shù)1 (計算總成績的及格率和優(yōu)秀率)o o o :o o 中0.0. - fc-0:0重 二良器 數(shù)績績 天成成格:0評評 一 日總/*函數(shù)功能:計算全班學(xué)生總評成績的及格率和優(yōu)秀率,并按優(yōu)良中差輸出學(xué)生人 數(shù)*/void coun

21、t_pass(stu stu,int n)int i,pass_num,t4;float passrate;memset 化 0,sizeof(t);for(i=0;in;i+)if(stui.score260) t0+;else if(stui.score2=75) tl+;else if(stui.score2=85) t2+;else if(stui.score2=100) t3+;pass_num=tl+t2+t3;passrate=(float)(tl+t2+t3)/n;printf(及格人數(shù):%dn,pass_num);printf(優(yōu):%dt 良:dt 中:%dt 差:print

22、f(總評成績及格率:%.2fn,passrate);printf(總評成績優(yōu)秀率:%.2fn,/(float)t3/n);10)計算成績函數(shù)2 (計算總成績的平均分和標(biāo)準(zhǔn)差)率差8i成績.十分 恿詢詢及 錄組查查生一記生目評成績標(biāo)準(zhǔn)差;2. 83645.的平單a黑十姓要墾出出人成菜按輸評l zi3,i4.i5,i6,i7.i8.10.請總/*函數(shù)功能:計算學(xué)生總評成績的平均分和標(biāo)準(zhǔn)差*/void count_average(stu stu,int n)int i;double sum=0,aver/temp=0/standard;for(i=0;in;i+)sum=stui.score2+su

23、m;aver=(float)sum/n;for(i=0;in;i+)temp=(stui.score2-aver)*(stui.score2-aver)+temp;11)輸出成績函數(shù)績 和和 績績率分 以成格 總及 星查查生 i記學(xué)魚-t1 o754026612518842559912績績績績績績績績績成成成成成成成成成見責(zé)責(zé)責(zé)責(zé)責(zé)責(zé)責(zé)責(zé)責(zé)成成成成成成成成成成評評評評評評評評評評評評評評評評評 、 苞總總百息總總息訪總總總息國總總總區(qū)總總 ?4452689618489 5 83 3 1 9 9 532 4- 788 7 3586 4 718637 4 4-績績績績績績績績績績績績績績績績績績績

24、績績成成成成成成成成成成成成成成成成成成成成成tmmv tttv tttv tttv tmmv tttv tttv tttv tmmv tttv tttv tttv tmmv tttv tttv tttv tmo 053 36305882 4 1283 4 4-2 4- 6540155124978 no 2449912績績績績績績績績績績績績績績績績績績績績績 成成成成成成成成成成成成成成成成成成成成成寸寸寸寸寸寸寸寸寸寸寸寸寸 m m m rr m m m m rr m m m m rr m m m m rr m m 豐平平平豐平平平豐平平平豐平平平平abcdefghijkl mnopqrc

25、0tu名名名名名名名名名名名名名名名名名名名名工 二一二一二一二一二一二二二 二一二一二一二二二 二一二一二一二二二 二一二一二一 7aaaaaaaaaaaa全一567890ooooooooollllllllll 24k一 1x 1x 1x 1 1x 1x 1x 1x 1 1x 1x 1x 1x 1 1x 1x 1x 1x 1 1x i-00000000000000000000 ooooooooooooooooooo ox/單a最干姓一易,出出人:147*5555555555555555555 5a 史 件 1111111111111111111 爾5555555555555555555 5之

26、3 6666666666666666666 6.1.e 1 111111111111111111 開一菜按輸號號號號號號號號號號號號號號號號號號號a1lz& 生氏 %乙&/*函數(shù)功能:輸出全班學(xué)生的所有成績*/void show_data(stu stu,int n)int i;for(i=0;in;i+)printf(學(xué)號:ldt姓名:%st平時成績:dt期末成績:dt總評成 績:%dn=stui.num,,stui.score0lstui.scorellstui.score2);)人你儕色足:2交件g imicl*v|,姓含平時成績. 64助于應(yīng)緯和豆講成績1651500

27、102b3451(61500103c2541661500104d42016150010517621651500106y896歧0w?gs31008961!61500108m7611165150010913121(61500110j5851651500111x24101(6150011216881651500112i492枝n?541661so011501821651500116p8351(61500117q6351651500118k319161500119s7g1651500120749i歧0121u4921661500122v4381651500123t751(61500124x73?16

28、s1so0125t644161500126235?/*函數(shù)功能:將學(xué)生所有成績的列表導(dǎo)出到文本score.txt中*/void write_data(stu stu,int n)(file *fp;int i;3、系統(tǒng)實現(xiàn)3. 1全部實現(xiàn)代碼#include #include #include #include #include #define size 100typedef struct studentlong num;char name10;int score3;stu;int menu(void);void read_data(stu stujnt njnt azint b);void

29、read_datal(stu stufint nzint ajnt b);void totalmark(stu stuzint njnt ajnt b);void sortbynum(stu stujnt n);void sortbyname(stu stufint n);void count_pass(stu stuzint n);void count_average(stu stujnt n);void show_data(stu stujnt n);void write_data(stu stuzint n);stu stu size;int n,a,b;char ch;int oh;p

30、rintf(mtt*);printf(wttt* 歡迎使用 * nm);printf(mttt*學(xué)生試卷分?jǐn)?shù)統(tǒng)計系統(tǒng)* nm););while (1)(ch = menu();switch (ch)(case 1:printf(請輸入學(xué)生人數(shù) n(n=%d):; size);scanf(%dmf &n);printf(”請輸入學(xué)生平時成績與期末成績所占總評成績的的比例(用整數(shù)表示,滿分100分):n);scanf(%d%d,&a,&b);printf(以下有兩種輸入試卷分?jǐn)?shù)的方式:n*l.手動輸入試卷分?jǐn)?shù)t2.從student.txt文件中導(dǎo)入試卷分?jǐn)?shù)*n)scanf(%d,&oh);swit

31、ch (oh)(case 1:read_data(stu/n/a,b);break;case 2:read_datal(stu/n/a/b);break;default:p ri n tf (輸入菜單序號錯誤!);break;case 2:total_mark(stu/n/a/b);break;case 3:sortbynum(stu/n);break;case 4:sortbyname(stuzn);break;case 5: count_pass(stuzn);break;case 6: count_average(stufn);break;case 7:show_data(stuzn);

32、break;case 8:write_data(stu/n);break;case 0:);printf(wttt* 感謝使用 * nw);printf(-ttt*學(xué)生試卷分?jǐn)?shù)統(tǒng)計系統(tǒng)* nm);printf(,ftt*);exit(o);default:printf(,輸入菜單序號錯誤!,);return 0;/*函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項vint menu(void)int itemselected;printf(wn【菜單】n)p r i n tf (t .輸入記錄n )printf(“2.計算學(xué)生總評成績n)printf(3 .按學(xué)號查詢成績n)printf(4按姓名查

33、詢成績n)printf(5.計算學(xué)生及格率和優(yōu)秀率n)printf(6.計算學(xué)生平均分和標(biāo)準(zhǔn)差n)printf(7.成績列表 n)printf(8.導(dǎo)出文件 n)printf(o 退出n)printf(請輸入你的選擇)scanf(%d, &itemselected); /* 讀入用戶輸入 */return itemselected;/*函數(shù)功能:手動輸入分?jǐn)?shù)vvoid read_data(stu stuzint n,int a,int b)(int i=0;printf(請輸入學(xué)生的學(xué)號、姓名、平時成績和期末成績(逗號隔開):n)for(i=0;in;i + +)(scanf(%ld , %s

34、 , %d , %d/&stui.num,&,&stui.score0f&stui.scorel);stui.score2=stui.score0*a/100+stui.scorel*b/l00;)/*函數(shù)功能:從文本student.txt中導(dǎo)入試卷分?jǐn)?shù)*/void read_datal(stu stu,int njnt a,int b)(int i;file *fp;if(fp=fopen(student.txt,r) = = null)(printf(打開文件 student.txt 失敗! n) exit(0);)for(i=0;!feof(fp);i + +)(fsc

35、anf(fp,%ldz&stui.num);fscanf(fp,%s,stu );fscanf(fp,%d,&stui.score0);fscanf(fp,%d,&stui.scorel);fclose(fp);for(i=0;in;i + +)stui.score2=stui.score0*a/100+stui.scorel*b/l 00;)/*函數(shù)功能:計算學(xué)生試卷分?jǐn)?shù)的總評成績vvoid total_mark(stu stu,int n,int ajnt b)(int i;for(i = 0;in;i + +)(stui.score2=stui.score0*a/100+st

36、ui.scorel*b/l 00;printf(學(xué)生:ldt姓名:st總評成:%dn,stui.num,,stui.score2);)/*函數(shù)功能:按學(xué)號查詢學(xué)生試卷的總評成績vvoid sortbynum(stu stujnt n)int number;i;p ri n tf (請輸入要查找的學(xué)生學(xué)號:)scanf(%d,&number);for(i=0;in;i + +)(if(stui.num = = number)(printf(學(xué)號:ldt姓名:st平時成績:dt期末成績:dt總評成績:dn,stui.num,,stui.scoreolstui.s

37、corellstui.score2);return;)printf(抱歉沒有找到! nn);/*函數(shù)功能:按姓名查詢學(xué)生試卷的總評成績vvoid sortbyname(stu stufint n)char named10;int i;printf(請輸入要查找的學(xué)生姓名:);scanf(%s,named);for(i=0;in;i + +)(if(strcmp(named/) = =o)(printf(學(xué)號%ldt姓名%st平時成績:dt期末成 績:%dt總評成績:dn,stui.num,,stui.scoreolstui.scorellstui.score

38、2);return;)printf(抱歉沒有找到! n);/*函數(shù)功能:計算全班學(xué)生總評成績的及格率和優(yōu)秀率,并按優(yōu)良中差輸出學(xué) 生人數(shù)*/void count_pass(stu stu,int n)int i,pass_num,t4;float passrate;memset(t,0,sizeof(t);for(i = 0;in;i + +)(if(stui.score260) t0 + +;else if(stui.score2 =75) tl + +;else if(stui.score2 =85) t2 + +;else if(stui.score2 = 100) t3 + +;pas

39、s_num =tl +t2 +t3;passrate=(float)(tl+t2+t3)/n;printf(及格人數(shù):%dnm,pass_num);printf(優(yōu):dt 良:dt 中:dt差:drt,t3lt2ltllt0);printf(總評成績及格率:%.2fn,passrate);printf(總評成績優(yōu)秀率:%.2fnz(float)t3/n);)/*函數(shù)功能:計算學(xué)生總評成績的平均分和標(biāo)準(zhǔn)差*/void count_average(stu stu,int n)int i;double sum=o/aver/temp=o/standard;for(i=0;in;i + +)(sum=

40、stui.score2 + sum;)aver=(float)sum/n;for(i=0;in;i + +) (temp=(stui.score2-aver)*(stui.score2-aver)+temp;)standard=sqrt(temp/n);printf(總評成績平均分:總評成績標(biāo)準(zhǔn)差:%.2lfn,aver,standard);/*函數(shù)功能:輸出全班學(xué)生的所有成績vvoid show_data(stu stu,int n)(int i;for(i = 0;in;i + +)printf(學(xué)號:ldt姓名:st平時成績:dt期末成績:dt總評成績:dn,stui.num,stui.

41、name,stui.scoreolstui.scorellstui.score2);)/*函數(shù)功能:將學(xué)生所有成績的列表導(dǎo)出到文本score.txt中*/void write_data(stu stu,int n)(file *fp;int i;if(fp=fopen(score.txt,w,)= = null)(printf(打開文件失敗! n);exit(o);)fprintf(fp,以下各項分別對應(yīng)學(xué)號、姓名、平時成績、期末成績和總評成績:n)for(i = 0;in;i + +)fprintf(fp/%ldt%st%dt%dt%dn,/stui.num/stui.na me,stui.

42、score0,stui.scorel,stui.score2);)fclose (fp);4、系統(tǒng)維護(hù)經(jīng)測試與調(diào)試確認(rèn)軟件無錯時,開發(fā)就告一段落,這時可以交付軟件供用 戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護(hù)。一 般維護(hù)的工作有:更改使用中發(fā)現(xiàn)的錯誤;為適應(yīng)實際環(huán)境而對程序進(jìn)行修改; 為滿足新的需求而對程序作必要的改進(jìn)等等,一個好的程序不僅是通過好的編 程技術(shù)實現(xiàn),還要通過好的編程風(fēng)格和設(shè)計方式來達(dá)到最低成本的代碼維護(hù)和 新需求的實現(xiàn)。4.1調(diào)試和測試一般情況下,為解決一個問題所編寫的程序代碼較長,可能包括幾百條甚 至成千上萬條語句。在檢查并排除所有語法錯誤后,還會有不易發(fā)現(xiàn)的邏輯錯 誤,因此要對程序進(jìn)行認(rèn)真仔細(xì)的測試與調(diào)試。通常情況下語法錯誤造成的編譯錯誤可以在運行時期前解決修改,比如多重指針的解除引用賦值造成的編譯錯誤可以通過添加對應(yīng)的括號來實現(xiàn)等。但一 些錯誤比如說邏輯錯誤和運行時錯誤就得等到程序運行時檢查或者崩潰時候才 能知曉,比如空指針引用和浮點變量存儲除法結(jié)果但忘記整數(shù)除法的例外情況。 但

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論