




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
--29/26內(nèi)容摘要摘要:本次課程設(shè)計的課題是學生成績管理系統(tǒng),本文介紹課程設(shè)計課題的選題意義,說明了本系統(tǒng)提供的主要功能,對設(shè)計思路、功能模塊、流程圖、功能模塊、中心算法進行了詳細的說明,并畫出流程框圖。本文提供了完整的源程序代碼,并展示了系統(tǒng)使用和運行效果。最后給出了在小學期高級語言程序設(shè)計過程中的總結(jié),其中包含本程序獨特設(shè)計,作者的設(shè)計收獲、設(shè)計中遇到的困難和問題,以及作者對設(shè)計題目及功能的改進意見,查閱的參考文獻等方面的內(nèi)容。索引關(guān)鍵字關(guān)鍵詞:源程序代碼,學生成績管理,流程框圖內(nèi)容目錄TOC\o"1-5"\h\z題目要求4內(nèi)容要求4設(shè)計要求4設(shè)計思想5功能模塊及流程圖5數(shù)據(jù)結(jié)構(gòu)7中心算法代碼說明7系統(tǒng)實現(xiàn)86.1程序代碼8系統(tǒng)使用21運行效果說明21總結(jié)24致謝詞25參考文獻25.正文1題目要求1.1內(nèi)容要求要求能夠?qū)崿F(xiàn)輸入記錄、查詢記錄、更新記錄、統(tǒng)計記錄、輸出記錄等功能。輸入記錄。對每個學生的學號、姓名、班級、數(shù)學、英語、計算機成績進行輸入并存儲,在程序的運行過程中,數(shù)據(jù)的存儲可以采用結(jié)構(gòu)體數(shù)組或者鏈表,但是最終應(yīng)該存儲在文件中。維護記錄。能夠?qū)崿F(xiàn)添加、刪除、修改學生記錄,但是一定要將最終數(shù)據(jù)存儲到文件中。查詢記錄。根據(jù)班級、學號、科目等查詢學生的成績。如果查詢時學生數(shù)據(jù)并沒有讀入到結(jié)構(gòu)體數(shù)組或者鏈表中,則應(yīng)該先從文件中讀出數(shù)據(jù)并存儲在結(jié)構(gòu)體數(shù)組或者鏈表中,然后在結(jié)構(gòu)體數(shù)組或者鏈表中查詢滿足條件的數(shù)據(jù)。統(tǒng)計記錄。完成對各門功課最高分和不及格人數(shù)的統(tǒng)計。1.2設(shè)計要求各級菜單及功能間必須建立必要的聯(lián)系,要定義參照完整性規(guī)則。使用二進制文件方式存儲數(shù)據(jù)。要求有菜單界面,結(jié)果顯示時應(yīng)達到界面友好。將完成的全部內(nèi)容連編成一個.exe文件。2設(shè)計思想在設(shè)計時考慮以下幾個方面:操作簡單。因為使用者多為非計算機專業(yè)人員,所以該系統(tǒng)要求設(shè)計的界面美觀,操作方便。要充分考軟件界面友好和操作方便,便愈使用人員快速上手。易于維護。一個軟件的好壞,關(guān)鍵在于產(chǎn)品的可靠,穩(wěn)定,便于維護。2.開發(fā)語言的選擇針對世界上流行的大量軟件和開發(fā)工具,經(jīng)過認真分析其優(yōu)缺點,結(jié)合目前的軟硬件開發(fā)環(huán)境,選用微軟WINDOWS平臺下的VisualC++作為軟件開發(fā)工具。選用工具有幾下幾方面優(yōu)點:C語言簡潔、緊湊、使用方便、靈活。有32個關(guān)鍵字。C語言程序比其他許多高級語言簡練,源程序短,因此輸入程序時工作量小。運算符豐富。數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。C語言是完全模塊化和結(jié)構(gòu)化的語言。用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。語法限制不太嚴格,程序設(shè)計自由度大。生成目標代碼質(zhì)量高,程序執(zhí)行效率高。用C語言編寫的程序可移植性好。綜上所述,VisualC++可以滿足學生成績管理的要求,所以用來開發(fā)學生成績管理系統(tǒng)是非常合適的。3功能模塊及流程圖學生成績管理系統(tǒng)對學校加強學生基本情況及學生成績管理有著重要的作用。為了能使該系統(tǒng)具有更為廣泛的功能:應(yīng)該將該系統(tǒng)細分為學生操作系統(tǒng)、教師操作系統(tǒng)、教務(wù)處操作系統(tǒng),以滿足不同身份的人的需求??傮w來說,該系統(tǒng)應(yīng)分為輸入模塊、維護模塊、查詢模塊以及統(tǒng)計模塊。由于本軟件為學校中多個身份的人的定制開發(fā)的。我們經(jīng)過反復(fù)論證,最終確定了學生成績管理系統(tǒng)的設(shè)計方案,主要流程圖如下所示:系統(tǒng)主菜單通過系統(tǒng)主菜單,可以使學校中不同身份的人選擇不同的操作系統(tǒng),從而合理的使用不同的功能。4數(shù)據(jù)結(jié)構(gòu)結(jié)構(gòu)體:程序設(shè)計中用到的結(jié)構(gòu)體類型學生信息結(jié)構(gòu)體類型:structstudent{intnum;charnam[20];charclas[20];floatmath;floatenglish;floatcomputer;}stu[SIZE];5中心算法代碼說明說明1.voidsave(){FILE*fp;intj;if((fp=fopen("stu_list","wb"))==NULL){printf("cannotopenfile\n");return;}for(j=0;j<SIZE;j++)if(fwrite(&stu[j],sizeof(structstudent),1,fp)!=1)printf("error\n");fclose(fp);}以上代碼將數(shù)據(jù)存入文件中,操作起來避免了直接對內(nèi)存進行操作,可對文件進行操作for(i=0;i<SIZE;i++)for(j=0;j<SIZE-i;j++){if(stu[i].math>stu[i+1].math){t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}}for(j=0,i=0;i<SIZE;i++){if(stu[i].math<60)j=j+1;}統(tǒng)計函數(shù)中使用起泡法排序再統(tǒng)計的方法6.系統(tǒng)實現(xiàn)6.1程序代碼代碼如下:#include<stdio.h>#include<string.h>#defineSIZE34structstudent{intnum;charnam[20];charclas[20];floatmath;floatenglish;floatcomputer;}stu[SIZE];voidsave()/*將數(shù)據(jù)儲存于文件*/{FILE*fp;intj;if((fp=fopen("stu_list","wb"))==NULL){printf("cannotopenfile\n");return;}for(j=0;j<SIZE;j++)if(fwrite(&stu[j],sizeof(structstudent),1,fp)!=1)printf("error\n");fclose(fp);
search(intn)/*查詢學號函數(shù)*/{intj;for(j=0;j<SIZE;j++)if(n==stu[j].num)returnj;/*將j的值返回,通過search帶回調(diào)用處*/if(j>SIZE)return-1;/*添加記錄*//*添加記錄*/學生信voidfunction1(){voidxt2();inti;chark;printf("********************************\n");for(i=0;i<SIZE;i++){printf(”請輸入該生學號:\n");scanf("%d",&stu[i].num);printf("請輸入該生姓名:\n");scanf("%s",&stu[i].nam);printf("請輸入該生所在班級:\n");scanf("%s",&stu[i].clas);printf("請輸入該生數(shù)學成績:\n");scanf("%f",&stu[i].math);printf("請輸入該生英語成績:\n");scanf("%f",&stu[i].english);printf("請輸入該生計算機成績:\n");scanf("%f",&stu[i].computer);getchar();printf("完成本次操作?。?!\n");printf("是否返回上一菜單?y/n:\n");k=getchar();if(k=='n')continue;/*判斷*/else
break;break;}save();xt2();}/*刪除學生記錄*//*刪除學生記錄*/除學生信息{voidxt2();inti,j;chara,k;printf("******************************\n");printf(”請輸入要刪除學生的學號:\n");scanf("%d",&i);j=search(i);if(j==-1){loop:printf("該學生不存在,請重新輸入!\n");printf("輸入0退出\n");for(j=0;j<SIZE;j++){if(j==-1)gotoloop;elsebreak;}}else{for(i=0;i<SIZE;i++){printf(”原數(shù)據(jù)為:\n");printf("學號%d,姓名%s,班級%s,數(shù)學成績%4.1f,英語成績%4.1f,計算機成^%4.1f\n",stu[j].num,stu[j].nam,stu[j].clas,stu[j].math,stu[j].english,stu[j].computer);stu[j].num=0;stu[j].nam[20]=0;stu[j].clas[20]=0;stu[j].math=0;stu[j].english=0;stu[j].computer=0;printf("刪除結(jié)果為\n");printf("學號%d,姓名%s,班級%s,數(shù)學成績%4.1f,英語成績%4.1f,計算機成^%4.1f\n",stu[j].num,stu[j].nam,stu[j].clas,stu[j].math,stu[j].english,stu[j].computer);save();printf("完成本次操作!!!\n");k=getchar();if(k=='y')continue;/*判斷*/elsebreak;}}printf("是否返回主菜單y/n:\n");scanf("%c",&a);if(a=='y')xt2();elsefunction2();}voidfunction3()/*修改*/{charname[20],phy[10];voidxt2();printf("請輸入要修改的學生姓名:”);scanf("%s",name);printf("\n");inti;floatt;for(i=0;i<SIZE;i++)change:if(strcmp(stu[i].nam,name)==0){printf("請輸入要修改的科目:");scanf("%s",phy);if(strcmp("math",phy)==0){printf("輸入成績:”);scanf("%f",&t);stu[i].math=t;printf("成績?yōu)?%4.2f\n",stu[i].math);}elseif(strcmp("english",phy)==0){printf("輸入成績:”);scanf("%f",&t);stu[i].english=t;printf("成績?yōu)?%4.2f\n",stu[i].english);}elseif(strcmp("computer",phy)==0){printf("輸入成績:”);scanf("%f",&t);stu[i].computer=t;printf("成績?yōu)?%4.2f\n",stu[i].computer);}else{printf("錯誤,請重新輸入:”);gotochange;}}save();printf("完成本次操作?。n");xt2();}voidway1()/*按班級查詢*/{voidfunction4();inti;charclas[20];chara;loop:printf("請輸入要查詢學生的班級:\n");scanf("%s",clas);for(i=0;i<SIZE;i++){if(strcmp(clas,stu[i].clas)==0)printf("學號%d,姓名%s,班級%s,數(shù)學成績%f,英語成績%f,計算機成績%f\n",stu[i].num,stu[i].nam,stu[i].clas,stu[i].math,stu[i].english,stu[i].computer);if(i==SIZE){printf(”您所查詢的信息不存在,請重新輸入”);gotoloop;}}printf("完成本次操作?。?!\n");scanf("%c",&a);if(a=='y')way1();elsefunction4();}voidway2()/*按學號查詢*/{voidfunction4();inti;intnumber;chara;loop:printf("請輸入要查詢學生的學號:\n");scanf("%d",&number);for(i=0;i<SIZE;i++){if(number==stu[i].num)printf("學號%d,姓名%s,班級%s,數(shù)學成績%f,英語成績%f,計算機成績%f\n",stu[i].num,stu[i].nam,stu[i].clas,stu[i].math,stu[i].english,stu[i].computer);if(i==SIZE){printf("您所查詢的信息不存在,請重新輸入\n");gotoloop;}}printf("完成本次操作!!!\n");scanf("%c",&a);if(a=='y')way2();elsefunction4();voidcheck1()/*按學生數(shù)學成績查詢*/{voidway3();inti;chara;charname[20];loop:printf(”請輸入要查詢的學生姓名\n");scanf("%s",name);for(i=0;i<SIZE;i++){if(strcmp(name,stu[i].nam)==0)printf("%s的數(shù)學成績是%f\n",name,stu[i].math);}printf("完成本次操作!??!\n");scanf("%c",&a);if(a=='y')gotoloop;elseway3();}voidcheck2()/*按學生英語成績查詢*/{voidway3();inti;chara;charname[20];loop:printf("請輸入要查詢的學生姓名\n");scanf("%s",name);for(i=0;i<SIZE;i++){if(strcmp(name,stu[i].nam)==0)printf("%s的英語成績是%f\n",name,stu[i].english);}printf("完成本次操作!!!\n");scanf("%c",&a);if(a=='y')gotoloop;elseway3();
}voidcheck3()/*按學生計算機成績查詢*/{voidway3();inti;chara;charname[20];printf("請輸入要查詢的學生姓名\n");scanf("%s",name);for(i=0;i<SIZE;i++){if(strcmp(name,stu[i].nam)==0)printf("%s的計算機成績是%f\n",name,stu[i].computer);}printf("完成本次操作?。?!\n");scanf("%c",&a);if(a=='y')check3();elseway3();}voidway3()/*按科目查詢*/{voidfunction4();intcheck;printf("請輸入要查詢的科目:**********************\n");printf("請輸入要查詢的科目:**********************\n");printf("printf("printf("printf("printf("printf("printf("printf("請選擇:\n");scanf("%d",&check);switch(check){case1:check1();break;case2:check2();break;case3:check3();break;case4:function4();break;}1按學生數(shù)學成績查詢\n");2按學生英語成績查詢\n");3按學生計算機成績查詢\n");4.返回上一菜單\n");printf("1按班級查詢\n");printf("2按學號查詢\n");printf("3按科目查詢\n");printf("4返回主菜單\n");}voidfunction4()/*查詢記錄*/}voidfunction4()/*查詢記錄*/{voidmain();intway;printf("學生成績printf("printf(”請選擇:\n");scanf("%d",&way);switch(way){case1:way1();break;case2:way2();break;case3:way3();break;case4:main();break;}voidfunction5()/*統(tǒng)計*/{voidmain();charphy[10];inta;printf("請輸入要統(tǒng)計的科目:”);shuru:scanf("%s",phy);if(strcmp("math",phy)==0){inti,j;floatt;for(i=0;i<SIZE;i++)for(j=0;j<SIZE-i;j++){if(stu[i].math>stu[i+1].math){t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}}for(j=0,i=0;i<SIZE;i++){{if(stu[i].math<60)j=j+1;}}printf("數(shù)學最高分為%4.1f,不及格人數(shù)為%d\n",stu[SIZE].math,j);}if(strcmp("english",phy)==0){inti,j;floatt;for(i=0;i<SIZE;i++)for(j=0;j<SIZE-i;j++){if(stu[i].english>stu[i+1].english){t=stu[i].english;stu[i].english=stu[i+1].english;stu[i+1].english=t;}}for(j=0,i=0;i<SIZE;i++){if(stu[i].english<60){j=j+1;}}printf("英語最高分為%4.1f,不及格人數(shù)為%d\n",stu[SIZE].english,j);}if(strcmp("computer",phy)==0){
inti,j;floatt;for(i=0;i<SIZE;i++)for(j=0;j<SIZE-i;j++){if(stu[i].computer>stu[i+1].computer){t=stu[i].computer;stu[i].computer=stu[i+1].computer;stu[i+1].computer=t;}}for(j=0,i=0;i<SIZE;i++)if(stu[i].computer<60){j=j+1;}printf("計算機最高分為%4.1f,不及格人數(shù)為%d\n",stu[SIZE].computer,j);}printf("1,繼續(xù)統(tǒng)計\n");printf("2,返回主菜單\n");printf("請選擇:\n");scanf("%d",&a);switch(a){case1:function5();break;case2:main();break;}}voidxt1()voidmain();printf("學生操作系printf("**********************************\n");printf("printf("1.查詢記錄\n");printf("printf("2.返回上一菜單\n");
printf("printf("\n");intfunction;printf(”請輸入要選擇的功能:”);scanf("%d",&function);switch(function){case1:function4();break;case2:main();break;}}voidxt2(){師操voidmain();師操printf("printf("1.添加記錄\n");printf("2.刪除記錄\n");printf("3.修改記錄\n");printf("4.查詢記錄\n");printf("5.統(tǒng)計記錄\n");printf("6.返回上一菜單\n");printf("***********************************************************************\n");printf("\n");intfunction;printf(”請輸入要選擇的功能:”);scanf("%d",&function);switch(function){case1:function1();break;case2:function2();break;case3:function3();break;case4:function4();break;case5:function5();break;case6:main();break;}
}voidxt3(){voidmain();**************************教務(wù)處操作printf("*********************************\n");**************************教務(wù)處操作printf("*********************************\n");查詢記錄\n");統(tǒng)計記錄\n");返回上一菜單\n");printf("printf("printf("printf("*************************************************************************\n");printf("\n");intfunction;printf(”請輸入要選擇的功能:”);scanf("%d",&function);switch(function)case1:function4();break;case2:function5();break;case3:main();break;voidmain()************************學生成績管理************************學生成績管理printf("***********************************\n");3?教務(wù)處\n");printf("l.學生3?教務(wù)處\n");printf("***************************************************************************\n");printf("請選擇運行身份:");scanf("%d",&a);if(a==1){xt1();}if(a==2){xt2();}if(a==3)}6.2系統(tǒng)使用錄入信息時,每一個項目都必須輸入相應(yīng)的內(nèi)容,輸入錯誤時,系統(tǒng)自動提供輸入錯誤提示,可以根據(jù)提示重新輸入。修改、增加、刪除,查找記錄前必須先打開一個文件修改完后必須記得保存信息。6.3運行效果說明主菜單:供使用人選擇身份,進入相應(yīng)的管理系統(tǒng)。^D^^WFVDelraEyCppl.bhcXXMXKMXXMXKXJOIXXKXMXMXKXM^"jIltwF^,>^XMMKKMXXMKKMXXXKKXXMMKHXXMMKKMXXMKi-niN-1Ik2誠記舉m-修咚記隸冬學門怎皿1由衛(wèi)⑺疤三上一用牟F!^ti~ijIM■寫SSSfeSJ§?Fj串嚀:'局豐「笄呵即Dr.w完成本次換作u是否返回上一菜單旳巾;添加學生信息:是教師能夠錄入添加學生信息。盂*血\合程再辺仙血\Cpp1.CEtt*咅宅、參?丸;圣丸叼±::;4XXXXKXXXXXKXXXXXKX:“『iulG.U:H±-t_:lf7r=1XS±-::■:質(zhì)輸入妥查詢學生的學號;1?"'3弋T-匸蘭件
4匱蘭亍栄工A二2匕曲2414”姫莒Jin旳期,I;毅瞄"數(shù)罕爆顏9£-ULUHJWy”妄:吾h;,^MW-BWUMUU1?"'3弋T-匸蘭件
4匱蘭亍栄工■i!IC!?:H9l!9i?!IC!H!M:?l!?i8iii!K!H!M:3<JM8iii!K!K!H:?l!舅8*8"J"J查詢功能:使使用人可以根據(jù)班級'學號'科目查詢成績。刪除功能:教師能夠刪除學生信息并儲存。"*D;\fi'SJT\PcbuE'\Cpp].cxc彗去「僉殳_一X一囂記記記記上妁J、
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年零售業(yè)店鋪安全運營計劃
- 基于FCS-MPC的光伏逆變器并網(wǎng)過電壓抑制策略研究
- 小組合作學習在二年級數(shù)學教學中的應(yīng)用
- 基于混合AlxGa1-xN勢壘層的增強型GaN P-HFETs及其互補邏輯電路研究
- 2025年九年級語文中考重點復(fù)習計劃
- 跨學科理念下初中山水游記類文言文教學策略研究
- 人教版七年級歷史知識點復(fù)習計劃
- 《困在時間里的父親》與《困在思緒中的兒子》的焦慮主題-以敘事學為研究視角
- 物流項目合同執(zhí)行與監(jiān)控措施
- 2025-2030年中國陶瓷紅外加熱器行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 中醫(yī)護理不良事件
- 初中常見原子團及其化合價、化學式、化學方程式
- 《城市公園配套設(shè)施設(shè)計導則》
- 供應(yīng)鏈安全培訓教材課件
- 2024年醫(yī)院考勤的管理制度
- 卡西歐手表5213(PRG-550)中文說明書
- 2024年度北京市安全員之B證(項目負責人)測試卷(含答案)
- 蘋果電腦macOS效率手冊
- 2024年新人教版七年級上冊數(shù)學教學課件 第四章 整式的加減 章末復(fù)習
- 卸車工合同協(xié)議書
- 字節(jié)跳動會議管理制度
評論
0/150
提交評論