版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1、軟件需求說(shuō)明1.1程序的界面要求①整個(gè)系統(tǒng)均用C語(yǔ)言實(shí)現(xiàn);②利用結(jié)構(gòu)體數(shù)組來(lái)實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);③系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入、保存、讀取等基本功能;④系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來(lái)實(shí)現(xiàn);⑤要求能將學(xué)生成績(jī)信息保存在文件中;⑥要求能從文件中讀取學(xué)生信息并進(jìn)行相關(guān)處理。1.2程序的功能每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門(mén)成績(jī)、平均成績(jī)。輸入功能:進(jìn)入后可以進(jìn)行多條記錄的輸入并保存。顯示功能:完成全部學(xué)生或滿足指定條件記錄的顯示。查找功能:完成按學(xué)號(hào)或姓名查找學(xué)生記錄,并顯示。排序功能:按學(xué)生學(xué)號(hào)或平均成績(jī)進(jìn)行排序。插入功能:按學(xué)生學(xué)號(hào)或平均成績(jī)高低插入一條學(xué)生記錄。保存功能:將學(xué)生記錄保存在自定義名稱的文件中。讀取功能:將保存在文件中的學(xué)生記錄讀取出來(lái)。有一個(gè)文本菜單來(lái)調(diào)用各個(gè)功能。2.系統(tǒng)分析與設(shè)計(jì)2.1程序的數(shù)據(jù)(結(jié)構(gòu))分析2.1.1定義結(jié)構(gòu)體本程序需要定義多個(gè)結(jié)構(gòu)體,用于存放學(xué)生的相關(guān)信息typedefstructCStudent{ charName[32]; /*學(xué)生姓名*/ intSno; /*學(xué)號(hào)*/ doubledDataStruct;/*數(shù)據(jù)結(jié)構(gòu)成績(jī)*/ doubledMath;/*數(shù)學(xué)成績(jī)*/ doubledEnglish;/*英語(yǔ)成績(jī)*/ doubleaver; /*平均成績(jī)*/}CStudent;2.1.2main()主函數(shù)主函數(shù)功能比較簡(jiǎn)單,用while循環(huán)語(yǔ)句和switch多重選擇語(yǔ)句來(lái)顯示主界面和調(diào)用函數(shù)。在主函數(shù)的前面要寫(xiě)必須的頭文件,預(yù)定義語(yǔ)句以及全局變量的結(jié)構(gòu)體。2.1.3del()刪除函數(shù)在C語(yǔ)言中無(wú)法做到刪除和移動(dòng)數(shù)據(jù),所以刪除記錄要先將所有記錄從文件中讀出,刪除后再將記錄寫(xiě)回文件中。每讀出一條記錄,按其在文件中的順序做好指針鏈接關(guān)系,然后查處要?jiǎng)h除的學(xué)生信息,將其在鏈表中刪除,最后再將變動(dòng)的記錄重新寫(xiě)回文件中。用指針,else/if結(jié)構(gòu)來(lái)實(shí)現(xiàn)查找出要?jiǎng)h除的學(xué)生。2.1.4insert()插入函數(shù)在插入函數(shù)中利用指針,while循環(huán)和else/if語(yǔ)句來(lái)實(shí)現(xiàn)輸入的數(shù)據(jù)按照插入相 應(yīng)的位置。2.1.5讀取函數(shù)利用指針、鏈表打開(kāi)已經(jīng)儲(chǔ)存的信息。voidRead() /*從文檔讀取*/{ charp[128]="file.txt";FILE*fp; if((fp=fopen("file.txt","r"))==NULL) { printf("Openfile%serror!Strikeanykeytoexit!",p); system("pause"); exit(0); } SavePos=0; while(!feof(fp)) { fscanf(fp,"Name:%s\n",example[SavePos].Name); fscanf(fp,"Sno:%d\n",&example[SavePos].Sno); fscanf(fp,"Score(DS)%lf\n",&example[SavePos].dDataStruct); fscanf(fp,"Score(M)%lf\n",&example[SavePos].dMath); fscanf(fp,"Score(E)%lf\n",&example[SavePos].dEnglish); fscanf(fp,"Score(Average)%lf\n",&example[SavePos].aver); fscanf(fp,"*********************\n"); SavePos++; } fclose(fp); Display();}2.1.6save()保存函數(shù)主要利用指針來(lái)把信息保存在文件中。voidSave() /*保存到文檔*/{ intj=0; constcharfname[128]="file.txt"; FILE*fp; //openfile fp=fopen(fname,"w"); //writeinfile for(j=0;j<SavePos;j++) { //fprintf(fp,"Thisisthefile.\n") fprintf(fp,"Name:%s\n",example[j].Name); fprintf(fp,"Sno:%d\n",example[j].Sno); fprintf(fp,"Score(DS)%f\n",example[j].dDataStruct); fprintf(fp,"Score(M)%f\n",example[j].dMath); fprintf(fp,"Score(E)%f\n",example[j].dEnglish); fprintf(fp,"Score(Average)%f\n",example[j].dEnglish); fprintf(fp,"*********************\n"); } //closefile fclose(fp); printf("保存成功\n");}2.2程序的算法設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)學(xué)生成績(jī)管理系統(tǒng)輸出信息輸出信息修改信息查詢信息輸入信息整理信息輸入信息整理信息輸出至文件輸出至屏幕刪除學(xué)生信息學(xué)生信息排序插入學(xué)生信息按學(xué)號(hào)查詢按姓名查詢從鍵盤(pán)輸入從輸出至文件輸出至屏幕刪除學(xué)生信息學(xué)生信息排序插入學(xué)生信息按學(xué)號(hào)查詢按姓名查詢從鍵盤(pán)輸入從文件讀入圖2.2學(xué)生成績(jī)管理系統(tǒng)功能模塊圖圖2.2輸入模塊圖2.2查詢模塊圖2.2插入模塊3、程序的實(shí)現(xiàn)3.1主函數(shù)intmain(){ intchoice1=1,choice2; inti=1,s=1; do { printf("歡迎使用學(xué)生成績(jī)管理系統(tǒng)\n"); printf("請(qǐng)選擇程序功能\n");printf("1、信息錄入\n"); printf("2、信息查詢\n"); printf("3、插入\n"); printf("4、排序\n"); printf("5、保存\n"); printf("6、刪除\n"); printf("7、讀取并顯示\n"); printf("8、退出程序\n"); scanf("%d",&choice1);3.2定義數(shù)據(jù)結(jié)構(gòu)用一個(gè)類(lèi)的嵌套定義structstudent*next;用整型數(shù)據(jù)定義學(xué)號(hào)和成績(jī),用char定義姓名。typedefstructCStudent{ charName[32]; /*學(xué)生姓名*/ intSno; /*學(xué)號(hào)*/ doubledDataStruct;/*數(shù)據(jù)結(jié)構(gòu)成績(jī)*/ doubledMath;/*數(shù)學(xué)成績(jī)*/ doubledEnglish;/*英語(yǔ)成績(jī)*/ doubleaver; /*平均成績(jī)*/}CStudent;CStudentexample[1024];intSavePos=0;3.3函數(shù)說(shuō)明鏈表定義頭指針stu*s,switch函數(shù)中用了8個(gè)case。case1: Record(SavePos);break;//錄入學(xué)生信息case2:Search_Name();Search_Sno();break;//查詢學(xué)生信息case3:Insert_Score();break;//插入學(xué)生信息case4: Sort_Sno();Sort_Score();break;//學(xué)生信息排序case5:Save()student(s);break;//保存學(xué)生信息case6: Delete_Sno();Delete_Name();break;//刪除學(xué)生信息case7:Read()student(s);break;//讀取學(xué)生信息case8: exit(0);break;//退出系統(tǒng)3.4文件錄入功能voidRecord(intj)/*錄入*/{ printf("信息錄入\n"); printf("姓名:"); scanf("%s",example[j].Name); printf("學(xué)號(hào):"); scanf("%d",&example[j].Sno); printf("數(shù)據(jù)結(jié)構(gòu):"); scanf("%lf",&example[j].dDataStruct); printf("數(shù)學(xué):"); scanf("%lf",&example[j].dMath); printf("英語(yǔ):"); scanf("%lf",&example[j].dEnglish); printf("平均成績(jī):"); scanf("%lf",&example[j].aver);3.5文件讀取功能讀取功能運(yùn)用文件指針的方法,與While循環(huán)語(yǔ)句完成。voidRead() /*從文檔讀取*/{ charp[128]="file.txt"; FILE*fp; if((fp=fopen("file.txt","r"))==NULL) { printf("Openfile%serror!Strikeanykeytoexit!",p); system("pause"); exit(0); } SavePos=0; while(!feof(fp)) { fscanf(fp,"Name:%s\n",example[SavePos].Name); fscanf(fp,"Sno:%d\n",&example[SavePos].Sno); fscanf(fp,"Score(DS)%lf\n",&example[SavePos].dDataStruct); fscanf(fp,"Score(M)%lf\n",&example[SavePos].dMath); fscanf(fp,"Score(E)%lf\n",&example[SavePos].dEnglish); fscanf(fp,"Score(Average)%lf\n",&example[SavePos].aver); fscanf(fp,"*********************\n"); SavePos++; } fclose(fp); Display();}3.6插入功能首先建立循環(huán),檢測(cè)插入的學(xué)號(hào)是否已存在,若存在則停止插入;若不存在,則繼續(xù)進(jìn)行輸入學(xué)生信息。voidInsert_Score(){ inti,j,m,flag; i=SavePos; do { flag=1; while(flag) { flag=0; printf("請(qǐng)輸入第%d位:\n",i+1); printf("請(qǐng)輸入學(xué)號(hào)檢驗(yàn)該生是否已經(jīng)存在\n"); scanf("%d",&example[i].Sno); for(j=0;j<i;j++) if(example[i].Sno==example[j].Sno) { printf("已存在該號(hào),請(qǐng)檢查重新錄入!\n"); flag=1; break;/*重復(fù)立即退該層循環(huán),提高判斷速度*/ } Record(i); printf("錄入完畢\n\n"); Sort_Score(); }while(0);}4、程序使用說(shuō)明4.1主頁(yè)面將寫(xiě)好的程序用MicrosoftVisualC++6.0打開(kāi)并運(yùn)行,首先出現(xiàn)的是主頁(yè)面,如圖4-1所示。圖4-14.2錄入信息頁(yè)面輸入數(shù)字1,按提示進(jìn)行學(xué)生成績(jī)的錄入,并按數(shù)字5保
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修回收協(xié)議書(shū)
- 銷(xiāo)售石材合同范本
- 預(yù)占用林地協(xié)議書(shū)
- 自我隔離協(xié)議書(shū)
- 藥品購(gòu)贈(zèng)協(xié)議書(shū)
- 質(zhì)量與環(huán)保協(xié)議書(shū)
- 2026福建三明市尤溪縣總醫(yī)院醫(yī)學(xué)人才校園(福建中醫(yī)藥大學(xué))專場(chǎng)公開(kāi)招聘7人考試核心試題及答案解析
- 意向房源協(xié)議書(shū)
- 征收賠償協(xié)議書(shū)
- 蝦池合作協(xié)議書(shū)
- 2026成方金融信息技術(shù)服務(wù)有限公司校園招聘5人考試題庫(kù)附答案
- 車(chē)輛租賃服務(wù)協(xié)議書(shū)
- 2025安徽安慶市公安機(jī)關(guān)招聘警務(wù)輔助人員418人備考筆試題庫(kù)及答案解析
- 2024-2025學(xué)年北京朝陽(yáng)區(qū)九年級(jí)初三(上)期末歷史試卷(含答案)
- MOOC 國(guó)際商務(wù)-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 玻璃絕緣子生產(chǎn)工藝
- 《儒林外史》整本書(shū)閱讀教學(xué)設(shè)計(jì)案例
- 《郵儲(chǔ)業(yè)務(wù)介紹》課件
- 醫(yī)療器械臨床評(píng)價(jià)報(bào)告模板
- 污染場(chǎng)地調(diào)查評(píng)價(jià)與修復(fù)
- 生物計(jì)算機(jī)課件
評(píng)論
0/150
提交評(píng)論