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

下載本文檔

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

文檔簡介

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

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

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

[2]譚浩強.C++程序設計題解與上機指導(第二版)[M].北京:清華大學出版社,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;/*標記位*/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歡送使用學生作業(yè)完成情況管理系統(tǒng)\n\n"); printf("\n\t\t\t\t1.錄入學生信息\n\t\t\t\t2.顯示學生信息\n\t\t\t\t3.查找學生作業(yè)完成情況的信息\n\t\t\t\t4.修改學生完成情況的信息\n\t\t\t\t5.刪除學生信息\n\t\t\t\t6.添加學生信息\n\t\t\t\t7.讀入學生信息\n\t\t\t\t8.保存學生信息\n\t\t\t\t9.退出"); printf("\n\n\n\t\t\t\t請選擇"); 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請輸入添加的學生數(shù)量(在%d以內(nèi)):",max-now);scanf("%d",&n); if(n>max)printf("\n請確保添加的數(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個學生的信息\n",i+1); printf("\n輸入學生的學號:"); scanf("%d",&stu[i].num); getchar(); printf("\n輸入學生的姓名:"); gets(stu[i].name); printf("\n請輸入學生第一次作業(yè)分數(shù):"); scanf("%f",&stu[i].score1); printf("\n請輸入學生第二次作業(yè)分數(shù):"); scanf("%f",&stu[i].score2);printf("\n請輸入學生第三次作業(yè)分數(shù):"); scanf("%f",&stu[i].score3); printf("\n請輸入學生第四次作業(yè)分數(shù):"); scanf("%f",&stu[i].score4); printf("\n請輸入學生第五次作業(yè)分數(shù):"); scanf("%f",&stu[i].score5); printf("\n請輸入學生第六次作業(yè)分數(shù):"); scanf("%f",&stu[i].score6); printf("\n請輸入學生第七次作業(yè)分數(shù):"); scanf("%f",&stu[i].score7); printf("\n請輸入學生第八次作業(yè)分數(shù):"); scanf("%f",&stu[i].score8); printf("\n請輸入學生第九次作業(yè)分數(shù):"); scanf("%f",&stu[i].score9); printf("\n請輸入學生第十次作業(yè)分數(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班級學生作業(yè)完成情況的列表\n\n\n"); printf("\n\t\t\t\t請選擇\n\n\t\t\t1.按名次輸出\n\t\t\t2.按學號輸出\n\t\t\t3.不及格的學生信息\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請選擇\n\n\n"); printf("\n\t\t\t1.按學號查找\n\t\t\t2.按姓名查找\n\t\t\t");scanf("%d",&as); switch(as) { case1:system("cls");printf("請輸入要查找的學號:"); 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該生信息不存在!!!請重新輸入學號:"); }while(i>=now);break; case2:system("cls");getchar();printf("請輸入要查找的學生姓名:"); 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該生信息不存在!!!請重新輸入姓名:"); }while(i>=now);break; } }附錄1.4刪除模塊源程序voiddel()/*刪除函數(shù)*/ { intnum,i; printf("\n\t\t\t輸入要刪除的學生學號"); scanf("%d",&num); for(i=0;i<=now;i++) { if(i>=now) { printf("\n\n\n\t\t\t學號輸入有誤!!!刪除失敗!!!\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個學生信息!!!\n\n",max-now); if(now<max) { do { printf("\n\t\t\t\t輸入新插入學生的信息\n"); printf("\n輸入學生的學號:"); scanf("%d",&stu[now].num); getchar(); printf("\n輸入學生的姓名:"); gets(stu[now].name); printf("\n輸入學生的性別(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ū)分大小寫)!!!"); getchar(); } printf("\n輸入學生的成績1:"); scanf("%f",&stu[now].score1); printf("\n輸入學生的成績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存儲空間已滿無法繼續(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文件保存錯誤!!!"); fclose(fp); }附錄1.6排序模塊源程序voidread()/*從磁盤讀入函數(shù)*/ { inti; FILE*fp;/*fp為文件指針*/ fp=fopen("stu_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論