學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)_第1頁
學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)_第2頁
學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)_第3頁
學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)_第4頁
學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++課程設(shè)計(jì)課程報(bào)告(2023--2023年度第二學(xué)期)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名班級(jí)學(xué)號(hào)指導(dǎo)教師完成日期2013年目錄TOC\o"1-5"\h\z\u1概述11.1課程設(shè)計(jì)目的11.2課程設(shè)計(jì)內(nèi)容12系統(tǒng)總體設(shè)計(jì)12.1系統(tǒng)目標(biāo)12.2主體功能22.3系統(tǒng)流程32.4開發(fā)環(huán)境43系統(tǒng)詳細(xì)設(shè)計(jì)43.1系統(tǒng)主界面設(shè)計(jì)43.2輸入模塊設(shè)計(jì)53.3輸出模塊設(shè)計(jì)53.4查詢模塊設(shè)計(jì)53.5更改模塊設(shè)計(jì)53.6統(tǒng)計(jì)模塊設(shè)計(jì)53.7保存退出模塊設(shè)計(jì)54測試64.1測試方案64.2測試結(jié)果65小結(jié)10參考文獻(xiàn)12附錄13附錄1源程序清單13附錄1.1主函數(shù)源程序13附錄1.2輸入模塊源程序14附錄1.3查詢模塊源程序16附錄1.4刪除模塊源程序17附錄1.5添加模塊源程序18附錄1.6排序模塊源程序19學(xué)生學(xué)籍管理系統(tǒng)程序的設(shè)計(jì)與實(shí)現(xiàn)1概述1.1課程設(shè)計(jì)目的1、穩(wěn)固并加深學(xué)生對(duì)C++語言程序設(shè)計(jì)知識(shí)的理解;2、培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,使學(xué)生認(rèn)識(shí)面向過程和面向?qū)ο髢煞N設(shè)計(jì)方法的區(qū)別;3、進(jìn)一步掌握和應(yīng)用VC++6.0集成開發(fā)環(huán)境;4、提高運(yùn)用C++語言解決實(shí)際問題的能力;5、初步掌握開發(fā)小型實(shí)用軟件的根本方法,能獨(dú)立設(shè)計(jì)、實(shí)現(xiàn)具有實(shí)際功能的小系統(tǒng);6、掌握書寫程序設(shè)計(jì)開發(fā)文檔的能力〔書寫課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告〕。1.2課程設(shè)計(jì)要求1、根據(jù)分組情況對(duì)規(guī)定的課程設(shè)計(jì)題目要求進(jìn)行分析、設(shè)計(jì);2、利用VisualC++獨(dú)立編寫程序代碼,并調(diào)試程序使其能正確運(yùn)行;3、源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀;4、設(shè)計(jì)完成的軟件要便于操作和使用,采用模塊化設(shè)計(jì)方法,可以根據(jù)實(shí)際情況選擇SDI、MDI或Dialog-Based方式實(shí)現(xiàn)系統(tǒng);5、要求系統(tǒng)的用戶界面盡量簡單、合理,鼓勵(lì)學(xué)生自動(dòng)增加新功能模塊〔視情況可另行加分〕;6、完成并提交課程設(shè)計(jì)報(bào)告,具體要求見相關(guān)說明文檔。1.3課程設(shè)計(jì)內(nèi)容課題名稱:學(xué)籍管理系統(tǒng)說明:學(xué)生學(xué)籍記錄以下信息:姓名、家庭住址、學(xué)號(hào),成績、性別等??梢杂媚鼙硎緦W(xué)生學(xué)籍信息的類存儲(chǔ)數(shù)據(jù)。要求:1)

具備對(duì)學(xué)籍的管理功能〔添加、刪除、排序〕2)

具備按姓名、學(xué)號(hào)查詢學(xué)生學(xué)籍的功能。3〕給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的作業(yè)完成情況;4〕給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的作業(yè)完成信息;5〕給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的信息;6〕提供一些統(tǒng)計(jì)各類信息的功能。2系統(tǒng)總體設(shè)計(jì)2.1系統(tǒng)目標(biāo)根據(jù)查詢條件實(shí)現(xiàn)學(xué)生的作業(yè)的完成情況查詢學(xué)生的作業(yè)完成信息的增加、刪除、修改方便各任課教師記錄,統(tǒng)計(jì)所帶班學(xué)生的在作業(yè)完成情況,提高工作效率,減輕負(fù)擔(dān);總結(jié)經(jīng)驗(yàn),提高教學(xué)質(zhì)量為教務(wù)處管理人員提供各學(xué)期、各班級(jí)學(xué)生的作業(yè)完成情況,以作為其進(jìn)行作業(yè)分?jǐn)?shù)的匯總,分析和總結(jié)評(píng)比的依據(jù)。2.2主體功能據(jù)需求把整個(gè)系統(tǒng)分化成不同的模塊,每個(gè)模塊完成一個(gè)特定的子功能。把這些模塊結(jié)合起來組成一個(gè)整體。逐一實(shí)現(xiàn)各個(gè)功能。學(xué)生學(xué)生學(xué)籍管理系統(tǒng)輸入模塊輸出模塊更改模塊查詢模塊統(tǒng)計(jì)模塊保存退出排序?qū)W生成績退出模塊按姓名查詢按學(xué)號(hào)查詢退出模塊添加學(xué)生學(xué)籍信息刪除學(xué)生學(xué)籍信息修改學(xué)生學(xué)籍信息退出模塊圖2-1系統(tǒng)功能模塊圖2.3系統(tǒng)流程開始開始輸入學(xué)生a學(xué)籍信息判斷學(xué)生a學(xué)籍信息輸入模塊輸出模塊查詢模塊更新模塊排序模塊退出模塊輸要更新的值輸要查詢的值輸要排序的值判斷a的值判斷a的值判斷a的值分?jǐn)?shù)排序退出模塊修改模塊刪除模塊退出模塊添加模塊按學(xué)號(hào)查詢按姓名查詢退出模塊圖3-1數(shù)據(jù)的錄入:如錄入學(xué)生的根本信息數(shù)據(jù)的修改:如修改指定學(xué)號(hào)、或者指定姓名的學(xué)生信息,數(shù)據(jù)的插入:插入某個(gè)學(xué)生信息;數(shù)據(jù)的查詢:如按學(xué)號(hào)查詢、按姓名查詢等;數(shù)據(jù)的刪除:如刪除指定學(xué)號(hào)、或者指定姓名的學(xué)生;列出不及格學(xué)生清單〔學(xué)號(hào)、姓名、不及格的課程和成績〕。用文件把數(shù)據(jù)保存起來2.4開發(fā)環(huán)境系統(tǒng)開發(fā)環(huán)境:MicrosoftVisualC++6.0系統(tǒng)開發(fā)語言:C語言3系統(tǒng)詳細(xì)設(shè)計(jì)3.1系統(tǒng)主界面設(shè)計(jì)由主函數(shù)界面分成留個(gè)子模塊主函數(shù)界面主函數(shù)界面輸入學(xué)生信息修改學(xué)生學(xué)籍信息刪除學(xué)生學(xué)籍信息查詢學(xué)生學(xué)籍信息排序?qū)W生成績保存退出圖4-13.2輸入模塊設(shè)計(jì)數(shù)據(jù)的錄入:錄入學(xué)生的根本信息,如姓名、學(xué)號(hào)3.3輸出模塊設(shè)計(jì)兩局部:1.按總分名次輸出2.按學(xué)號(hào)順序輸出3.4查詢模塊設(shè)計(jì)查詢信息:本功能實(shí)現(xiàn)是調(diào)用structstu*findnum(void)函數(shù)查找該條信息的地址,然后再采用for循環(huán)進(jìn)行信息的輸出,本功能的實(shí)現(xiàn)比擬簡單,難點(diǎn)在于對(duì)函數(shù)的調(diào)用的靈活運(yùn)用。3.5更改模塊設(shè)計(jì)信息的修改:本系統(tǒng)采用的是按學(xué)號(hào)查找信息,系統(tǒng)采用一個(gè)由判斷語句和循環(huán)語句構(gòu)成的查詢函數(shù)structstu*findnum(void)來提供信息存儲(chǔ)地址;再按照地址來進(jìn)行修改,其中采用switch語句和循環(huán)語句來控制使系統(tǒng)能夠提供選擇修改的功能。在這一功能的設(shè)計(jì)中,作者感到課程信息的修改中的添加課程信息功能是一個(gè)難點(diǎn),解決方案是按插入方案來進(jìn)行設(shè)計(jì)。增加信息:本系統(tǒng)采用的是按學(xué)號(hào)順序來進(jìn)行插入的,在這一功能的設(shè)計(jì)中,首先在開辟一個(gè)結(jié)構(gòu)體空間將插入學(xué)生的信息存儲(chǔ)于其中,在采用判斷語句和循環(huán)語句來查找該條信息應(yīng)該插入位置的地址,將上一結(jié)點(diǎn)的下行指針指向本結(jié)點(diǎn),再將該節(jié)點(diǎn)的下行指針指向下一個(gè)結(jié)點(diǎn)從而到達(dá)插入信息的目的。在這一功能的設(shè)計(jì)中作者感到插入的具體算法是個(gè)難點(diǎn),本系統(tǒng)采用的教材書本上的方法。刪除信息:系統(tǒng)采用按學(xué)號(hào)刪除的方案,在這一功能的設(shè)計(jì)中我沒有采用直接調(diào)用structstu*findnum(void)函數(shù),而是又重寫查找地址程序,這是出于考慮系統(tǒng)功能的更好實(shí)現(xiàn)而采用的舉措。具體刪除算法采用該節(jié)點(diǎn)上一個(gè)結(jié)點(diǎn)的下行指針直接指向該結(jié)點(diǎn)下一個(gè)結(jié)點(diǎn)從而到達(dá)刪除該結(jié)點(diǎn)的目的。在此功能的設(shè)計(jì)中,本作者感到難點(diǎn)不在于算法而在于思維設(shè)計(jì)的是否縝密。3.6統(tǒng)計(jì)模塊設(shè)計(jì)排序?qū)W生成績:通過菜單項(xiàng)選擇擇排序依據(jù),采用排序算法〔冒泡、插入、選擇等〕對(duì)數(shù)據(jù)進(jìn)行排序并輸出結(jié)果。首先要讀文件。3.7保存退出模塊設(shè)計(jì)每次執(zhí)行完修改信息包括添加、錄入、修改、刪除等都需要保存信息。當(dāng)然在每個(gè)修改函數(shù)最后都需要調(diào)用一下保存函數(shù)。4測試4.1測試方案測試方案一:登錄學(xué)生作業(yè)完成管理系統(tǒng)測試方案二:錄入學(xué)生信息測試方案三:顯示學(xué)生信息測試方案四:查找學(xué)生作業(yè)完成情況的信息測試方案五:修改學(xué)生作業(yè)完成情況的信息測試方案六:刪除學(xué)生信息測試結(jié)果七:添加學(xué)生信息測試結(jié)果八:保存退出4.2測試結(jié)果測試結(jié)果一:圖6-1測試結(jié)果二:測試方案三:圖7-1測試結(jié)果三:圖7-2測試結(jié)果四:圖8-1測試結(jié)果五:圖8-2測試結(jié)果六:圖9-1測試結(jié)果七:圖9-2測試結(jié)果八:圖10-15小結(jié)為期兩周的課程設(shè)計(jì)結(jié)束了,在老師和同學(xué)的幫助下,我根本完成系統(tǒng)的設(shè)計(jì)。我按照系統(tǒng)工程軟件設(shè)計(jì)的要求,從需求分析,概念設(shè)計(jì),總體設(shè)計(jì),詳細(xì)設(shè)計(jì),系統(tǒng)測試等各個(gè)步驟,分步完成系統(tǒng)的各項(xiàng)任務(wù),實(shí)現(xiàn)了系統(tǒng)中的學(xué)生作業(yè)完成情況的查詢,學(xué)生信息更新,學(xué)生信息添加等模塊的功能。在這兩個(gè)星期里我收獲如下:1、穩(wěn)固和加深了對(duì)C++的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。2、培養(yǎng)了我選用參考書,查閱手冊及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。3、通過實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。根據(jù)我在課程設(shè)計(jì)中遇到的問題,我將在以后的學(xué)習(xí)當(dāng)中注意以下幾點(diǎn):1、認(rèn)真上好專業(yè)實(shí)驗(yàn)課,多在實(shí)踐中鍛煉自己。2、寫程序的過程中要考慮周到,嚴(yán)密。3、在做設(shè)計(jì)的時(shí)候要有信心,有耐心,切勿急躁。4、認(rèn)真的學(xué)習(xí)課本知識(shí),掌握課本中的知識(shí)點(diǎn),并在此根底上學(xué)會(huì)靈活運(yùn)用。5、在課余時(shí)間里多寫程序,熟練掌握在調(diào)試程序的過程中所遇到的常見錯(cuò)誤,以便能節(jié)省調(diào)試程序的時(shí)間。參考文獻(xiàn)[1]譚浩強(qiáng).C++程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,2023.

[2]譚浩強(qiáng).C++程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版)[M].北京:清華大學(xué)出版社,2023.J,附錄附錄1源程序清單附錄1.1主函數(shù)源程序#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#definemax10voidinput();voiddisplay();voidfind();voidchange();voiddel();voidread();voidsave();voidadd();voidsort(intn);voidsortx(intn);voidshuchu(intn);voidno_pass();intnow=0;/*標(biāo)記位*/structstudent{ intnum; charname[20]; charsex; intNO; floatscore1; floatscore2;floatscore3; floatscore4; floatscore5; floatscore6; floatscore7; floatscore8; floatscore9; floatscore10; floatsum;};structstudentstu[max+1];voidmain()/*主函數(shù)(菜單)*/{ intas; do { printf("\n\t\t\t歡送使用學(xué)生作業(yè)完成情況管理系統(tǒng)\n\n"); printf("\n\t\t\t\t1.錄入學(xué)生信息\n\t\t\t\t2.顯示學(xué)生信息\n\t\t\t\t3.查找學(xué)生作業(yè)完成情況的信息\n\t\t\t\t4.修改學(xué)生完成情況的信息\n\t\t\t\t5.刪除學(xué)生信息\n\t\t\t\t6.添加學(xué)生信息\n\t\t\t\t7.讀入學(xué)生信息\n\t\t\t\t8.保存學(xué)生信息\n\t\t\t\t9.退出"); printf("\n\n\n\t\t\t\t請(qǐng)選擇"); scanf("%d",&as); switch(as) { case1:system("cls");input();break; case2:system("cls");display();break; case3:system("cls");find();break; case4:system("cls");change();break; case5:system("cls");del();break; case6:system("cls");add();break; case7:system("cls");read();break; case8:system("cls");save();break; case9:system("cls");exit(0); } } while(1);}附錄1.2輸入模塊源程序voidinput()/*輸入函數(shù)*/ { inti,n,j; for(i=0;;i++) {printf("\n請(qǐng)輸入添加的學(xué)生數(shù)量(在%d以內(nèi)):",max-now);scanf("%d",&n); if(n>max)printf("\n請(qǐng)確保添加的數(shù)量在%d以內(nèi)\t!!!",max); if(n<=max)break; }now=n; for(i=0;i<n;i++) { printf("\n\t\t\t\t輸入第%d個(gè)學(xué)生的信息\n",i+1); printf("\n輸入學(xué)生的學(xué)號(hào):"); scanf("%d",&stu[i].num); getchar(); printf("\n輸入學(xué)生的姓名:"); gets(stu[i].name); printf("\n請(qǐng)輸入學(xué)生第一次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score1); printf("\n請(qǐng)輸入學(xué)生第二次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score2);printf("\n請(qǐng)輸入學(xué)生第三次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score3); printf("\n請(qǐng)輸入學(xué)生第四次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score4); printf("\n請(qǐng)輸入學(xué)生第五次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score5); printf("\n請(qǐng)輸入學(xué)生第六次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score6); printf("\n請(qǐng)輸入學(xué)生第七次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score7); printf("\n請(qǐng)輸入學(xué)生第八次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score8); printf("\n請(qǐng)輸入學(xué)生第九次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score9); printf("\n請(qǐng)輸入學(xué)生第十次作業(yè)分?jǐn)?shù):"); scanf("%f",&stu[i].score10); stu[i].sum=stu[i].score1+stu[i].score2; } sort(n); save();system("cls"); } voiddisplay()/*整體輸出函數(shù)*/ { intas,i; printf("\n\t\t\t班級(jí)學(xué)生作業(yè)完成情況的列表\n\n\n"); printf("\n\t\t\t\t請(qǐng)選擇\n\n\t\t\t1.按名次輸出\n\t\t\t2.按學(xué)號(hào)輸出\n\t\t\t3.不及格的學(xué)生信息\n\t\t\t"); scanf("%d",&as); switch(as) { case1:sort(now);for(i=0;i<now;i++)shuchu(i);break; case2:sort(now);sortx(now);for(i=0;i<now;i++)shuchu(i);break; case3:no_pass();break; } }附錄1.3查詢模塊源程序voidfind()/*查詢函數(shù)*/ { intnum,as,i; charname[20]; printf("\n\t\t\t請(qǐng)選擇\n\n\n"); printf("\n\t\t\t1.按學(xué)號(hào)查找\n\t\t\t2.按姓名查找\n\t\t\t");scanf("%d",&as); switch(as) { case1:system("cls");printf("請(qǐng)輸入要查找的學(xué)號(hào):"); do { scanf("%d",&num); for(i=0;i<now;i++) { if(num==stu[i].num) { shuchu(i);break; } } if(i>=now) printf("\n\t\t該生信息不存在!!!請(qǐng)重新輸入學(xué)號(hào):"); }while(i>=now);break; case2:system("cls");getchar();printf("請(qǐng)輸入要查找的學(xué)生姓名:"); do { gets(name); for(i=0;i<now;i++) { if(strcmp(name,stu[i].name)==0) { shuchu(i);break; } }if(i>=now) printf("\n\n\t\t\t該生信息不存在!!!請(qǐng)重新輸入姓名:"); }while(i>=now);break; } }附錄1.4刪除模塊源程序voiddel()/*刪除函數(shù)*/ { intnum,i; printf("\n\t\t\t輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)"); scanf("%d",&num); for(i=0;i<=now;i++) { if(i>=now) { printf("\n\n\n\t\t\t學(xué)號(hào)輸入有誤!!!刪除失敗!!!\n\n"); break; } if(stu[i].num==num) { if(i==now-1) now-=1; else { stu[i]=stu[now-1]; now-=1; } printf("\n\n\t\t\t刪除成功!!!\n\n");sort(now); break; } } save(); }附錄1.5添加模塊源程序voidadd()/*添加函數(shù)*/ { charch; intj; printf("\n\t\t\t\t還能添加%d個(gè)學(xué)生信息!!!\n\n",max-now); if(now<max) { do { printf("\n\t\t\t\t輸入新插入學(xué)生的信息\n"); printf("\n輸入學(xué)生的學(xué)號(hào):"); scanf("%d",&stu[now].num); getchar(); printf("\n輸入學(xué)生的姓名:"); gets(stu[now].name); printf("\n輸入學(xué)生的性別(M/W):"); for(j=0;;j++) { stu[now].sex=getchar(); if(stu[now].sex=='M'||stu[now].sex=='W')break; elseprintf("\n\t\t\t請(qǐng)確保輸入性別的正確性(區(qū)分大小寫)!!!"); getchar(); } printf("\n輸入學(xué)生的成績1:"); scanf("%f",&stu[now].score1); printf("\n輸入學(xué)生的成績2:"); scanf("%f",&stu[now].score2); stu[now].sum=stu[now].score1+stu[now].score2; now=now+1;sort(now); if(now>=max) { printf("\n\n\n\t\t存儲(chǔ)空間已滿無法繼續(xù)添加!!!\n\n"); break; } printf("\n\t\t\t是否繼續(xù)添加?(Y/N)"); getchar(); ch=getchar(); } while(ch!='n'||ch!='n'); } } voidsave()/*文件保存函數(shù)*/ { FILE*fp;/*fp為文件指針*/ inti; if((fp=fopen("stu_infer","wb"))==NULL) { printf("\n\n\t\t\t文件翻開失敗!!!"); return; } for(i=0;i<max+1;i++) if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1) printf("\n\n\t\t\t文件保存錯(cuò)誤!!!"); fclose(fp); }附錄1.6排序模塊源程序voidread()/*從磁盤讀入函數(shù)*/ { inti; FILE*fp;/*fp為文件指針*/ fp=fopen("stu_

溫馨提示

  • 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)論