C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁
C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁
C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁
C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁
C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

年4月19日C語言程序設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告文檔僅供參考重慶科技學(xué)院《C語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告學(xué)院:_電氣與信息工程學(xué)院_專業(yè)班級(jí):自動(dòng)化-03學(xué)生姓名:高躍躍學(xué)號(hào):443321設(shè)計(jì)地點(diǎn)(單位)_____計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心_______

設(shè)計(jì)題目:《學(xué)生成績(jī)管理系統(tǒng)》的設(shè)計(jì)與實(shí)現(xiàn)完成日期:年09月25日指導(dǎo)教師評(píng)語:___________________________________________________________________________________________________________________________________________________________________________________________________________成績(jī)(五級(jí)記分制):________________

指導(dǎo)教師(簽字):________________ 課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:《學(xué)生成績(jī)管理系統(tǒng)》的設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名高躍躍課程名稱C語言課程設(shè)計(jì)專業(yè)班級(jí)自動(dòng)化地點(diǎn)計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心起止時(shí)間.9.9-.9.26設(shè)計(jì)內(nèi)容及要求內(nèi)容強(qiáng)化C語言中有關(guān)結(jié)構(gòu)體數(shù)組及外部文件的內(nèi)容,獨(dú)立設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng),并編程實(shí)現(xiàn)以下功能:1、整個(gè)系統(tǒng)均用C語言實(shí)現(xiàn);2、利用結(jié)構(gòu)體數(shù)組來實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入、保存、讀取等基本功能;4、系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來實(shí)現(xiàn);5、要求能將學(xué)生成績(jī)信息保存在文件中;6、要求能從文件中讀取學(xué)生信息并進(jìn)行相關(guān)處理。設(shè)計(jì)參數(shù)1、每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門成績(jī)、平均成績(jī)。2、輸入功能:進(jìn)入后能夠進(jìn)行多條記錄的輸入并保存。3、顯示功能:完成全部學(xué)生或滿足指定條件記錄的顯示。4、查找功能:完成按學(xué)號(hào)或姓名查找學(xué)生記錄,并顯示。5、排序功能:按學(xué)生學(xué)號(hào)或平均成績(jī)進(jìn)行排序。6、插入功能:按學(xué)生學(xué)號(hào)或平均成績(jī)高低插入一條學(xué)生記錄。7、保存功能:將學(xué)生記錄保存在自定義名稱的文件中。8、讀取功能:將保存在文件中的學(xué)生記錄讀取出來。9、有一個(gè)文本菜單來調(diào)用各個(gè)功能。進(jìn)度要求1.布置設(shè)計(jì)題目,講解要求和說明.9.92.確定設(shè)計(jì)任務(wù),確定具體的功能,熟悉相關(guān)知識(shí).9.93.按功能需求確定程序的主要模塊.9.104.編程實(shí)現(xiàn)程序的功能.9.11–.9.155.調(diào)試并完善程序.9.16–.9.226.撰寫課程設(shè)計(jì)報(bào)告.9.23-.9.247.提交課程設(shè)計(jì)報(bào)告并答辯.9.25其它譚浩強(qiáng),《C語言程序設(shè)計(jì)(第三版)》,清華大學(xué)出版社,.2說明1.本表應(yīng)在每次實(shí)施前一周由負(fù)責(zé)教師填寫二份,院系審批后交院系辦備案,一份由負(fù)責(zé)教師留用。2.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共享的,在設(shè)計(jì)內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。摘要學(xué)生成績(jī)管理系統(tǒng)是為了實(shí)現(xiàn)學(xué)校對(duì)學(xué)生成績(jī)管理的系統(tǒng)化、規(guī)范化和自動(dòng)化,從而提高學(xué)校管理效率而設(shè)計(jì)的。它完全取代了原來一直用人工管理的工作方式,避免了由于管理人員的工作疏忽以及管理質(zhì)量問題所造成的各種錯(cuò)誤,為及時(shí)、準(zhǔn)確、高效的完成學(xué)生成績(jī)管理提供了強(qiáng)有力的工具和管理手段。學(xué)生成績(jī)管理系統(tǒng)是一個(gè)中小型數(shù)據(jù)庫管理系統(tǒng),它界面美觀、操作簡(jiǎn)單、安全性高,基本滿足了學(xué)生成績(jī)管理的要求。本系統(tǒng)是在以MicrosoftVisualC++6.0作為后臺(tái)來開發(fā)的。學(xué)生成績(jī)管理系統(tǒng)在運(yùn)行階段,效果好,數(shù)據(jù)準(zhǔn)確性高,提高了工作效率,同時(shí)也實(shí)現(xiàn)了學(xué)生成績(jī)管理計(jì)算機(jī)化。關(guān)鍵詞:成績(jī)管理系統(tǒng)C語言目錄1.軟件需求說明 11.1程序的界面要求 11.2程序的功能 12.程序的分析與設(shè)計(jì) 12.1程序的數(shù)據(jù)結(jié)構(gòu)分析 42.2程序的算法設(shè)計(jì) 63.程序的實(shí)現(xiàn) 73.1主函數(shù) 73.2定義數(shù)據(jù)結(jié)構(gòu) 8 4.程序試用說明 104.1主頁面 114.2錄入信息頁面 185.總結(jié) 195.1致謝 195.2參考文獻(xiàn) 19軟件需求說明1.1程序的界面要求①整個(gè)系統(tǒng)均用C語言實(shí)現(xiàn);②利用結(jié)構(gòu)體數(shù)組來實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);③系統(tǒng)具有輸入、顯示、查詢、刪除、排序、插入、保存、讀取等基本功能;④系統(tǒng)的各個(gè)功能模塊都用函數(shù)的形式來實(shí)現(xiàn);⑤要求能將學(xué)生成績(jī)信息保存在文件中;⑥要求能從文件中讀取學(xué)生信息并進(jìn)行相關(guān)處理。1.2程序的功能每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門成績(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é)生記錄讀取出來。有一個(gè)文本菜單來調(diào)用各個(gè)功能。系統(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;/*英語成績(jī)*/ doubleaver; /*平均成績(jī)*/}CStudent;2.1.2main()主函數(shù)主函數(shù)功能比較簡(jiǎn)單,用while循環(huán)語句和switch多重選擇語句來顯示主界面和調(diào)用函數(shù)。在主函數(shù)的前面要寫必須的頭文件,預(yù)定義語句以及全局變量的結(jié)構(gòu)體。2.1.3del()刪除函數(shù)在C語言中無法做到刪除和移動(dòng)數(shù)據(jù),因此刪除記錄要先將所有記錄從文件中讀出,刪除后再將記錄寫回文件中。每讀出一條記錄,按其在文件中的順序做好指針鏈接關(guān)系,然后查處要?jiǎng)h除的學(xué)生信息,將其在鏈表中刪除,最后再將變動(dòng)的記錄重新寫回文件中。用指針,else/if結(jié)構(gòu)來實(shí)現(xiàn)查找出要?jiǎng)h除的學(xué)生。2.1.4insert()插入函數(shù)在插入函數(shù)中利用指針,while循環(huán)和else/if語句來實(shí)現(xiàn)輸入的數(shù)據(jù)按照插入相 應(yīng)的位置。2.1.5讀取函數(shù)利用指針、鏈表打開已經(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ù)主要利用指針來把信息保存在文件中。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é)生信息輸出至文件輸出至屏幕刪除學(xué)生信息學(xué)生信息排序插入學(xué)生信息按學(xué)號(hào)查詢按姓名查詢從鍵盤輸入從學(xué)生信息排序插入學(xué)生信息按學(xué)號(hào)查詢按姓名查詢從鍵盤輸入從文件讀入圖2.2學(xué)生成績(jī)管理系統(tǒng)功能模塊圖開始開始開始按學(xué)號(hào)按學(xué)號(hào)輸入name輸入輸入name輸入輸入numi=j 1輸入numi=j輸出數(shù)據(jù)輸入數(shù)據(jù)輸出數(shù)據(jù)輸入數(shù)據(jù)結(jié)束結(jié)束按9 按0圖2.2輸入模塊圖2.2查詢模塊開始輸入學(xué)號(hào)輸入學(xué)號(hào)該學(xué)號(hào)已存在該學(xué)號(hào)已存在 Y輸入信息N輸入信息保存并結(jié)束保存并結(jié)束圖2.2插入模塊程序的實(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);定義數(shù)據(jù)結(jié)構(gòu)用一個(gè)類的嵌套定義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;/*英語成績(jī)*/ doubleaver; /*平均成績(jī)*/}CStudent;CStudentexample[1024];intSavePos=0;3.3函數(shù)說明鏈表定義頭指針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)文件錄入功能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("英語:"); scanf("%lf",&example[j].dEnglish); printf("平均成績(jī):"); scanf("%lf",&example[j].aver);文件讀取功能讀取功能運(yùn)用文件指針的方法,與While循環(huán)語句完成。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();}插入功能首先建立循環(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.1主頁面將寫好的程序用MicrosoftVisualC++6.0打開并運(yùn)行,首先出現(xiàn)的是主頁面,如圖4-1所示。圖4-1錄入信息頁面輸入數(shù)字1,按提示進(jìn)行學(xué)生成績(jī)的錄入,并按數(shù)字5保存信息。繼續(xù)錄入按數(shù)字9,結(jié)束錄入按數(shù)字0。如圖4-2圖4-2信息查詢頁面返回主頁面,按數(shù)字2,進(jìn)行學(xué)生信息查詢,分為按學(xué)號(hào)查詢和姓名查詢。如圖4-3-1。圖4-3-1按數(shù)字1與按數(shù)字2查詢結(jié)果頁面如圖4-3-2所示。圖4-3-2圖4-3-2插

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論