




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C+課程設計報告摘要:隨著科學技術的發(fā)展,計算機領域不斷取得新的研究成果。計算機在代替和延伸腦力勞動方面發(fā)揮越來越重要的作用,不僅在工業(yè)方面而且在日常生活中也越來越離不開計算機。尤其是在學校里,要處理大量的學生數(shù)據。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用.作為計算機應用的一部分,使用計算機對學生成績信息進行管理,有著手工管理所無法比擬的優(yōu)點。學生成績管理系統(tǒng)能方便用戶迅速、準確處理學生的成績,得到想要的數(shù)據并能將學生的信息以文檔保存。本文介紹了簡易學生成績管理系統(tǒng)在Microsoft Visual C+ 6.0環(huán)境下的實現(xiàn)過程:系統(tǒng)的分析,功能模塊的設計,系統(tǒng)的調試和測試。此系統(tǒng)的主要管理的信息有:學生的班級,學號,姓名和三(可以更改)門課的成績。本系統(tǒng)的主要功能有學生成績的添加、刪除、插入、顯示,能對學生成績按分數(shù)或學號進行排序,可以根據用戶的要求按班級,姓名,學號查詢學生的成績信息,計算每位學生的總分,分類匯總統(tǒng)計每門課的的總分均分能保存信息到文件以及從文件中讀取信息等功能。關鍵詞:學生成績管理系統(tǒng);功能模塊(函數(shù));指針;結構;鏈表;文件保存及讀取。 目錄1 需求分析41.1功能需求分析:41.11學生成績的讀入和寫出模塊41.12學生成績輸入刪除模塊41.13學生成績的查詢模塊51.14學生成績的分類匯總模塊51.2 環(huán)境需求分析:51.3 方法需求分析52概要設計62.1 系統(tǒng)功能模塊圖62.2 設計思想:63詳細設計73.1 設計原理73.2程序詳細代碼描述73.3系統(tǒng)界面214調試與操作說明214.1調試過程214.2操作說明23總 結24致 謝251 需求分析1.1功能需求分析:簡易學生成績管理系統(tǒng)主要有4個大的模塊:學生成績從文件讀入和寫入,學生成績的輸入和刪除,學生成績信息的查詢,以及學生成績的分類匯總。1.11學生成績的讀入和寫出模塊主要功能是讀出要管理的成績文檔,保存修改后的成績文檔。實際生活中學生成績的文件主要以word或excel保存,為了方便操作我在調式本系統(tǒng)中成績文件采用了txt的文檔格式保存,當然以word文檔形式保存也是可以的。1.12學生成績輸入刪除模塊主要功能是輸入、追加、刪除學生成績的操作。添加操作是根據用戶的要求實現(xiàn)的。例如用戶可以輸入要刪除學生的學號刪除學生的信息。此程序輸入學生成績時就計算個人的總分,并保存到數(shù)據結構中相應的變量中。1.13學生成績的查詢模塊主要功能是按照用戶的要求查詢學生的成績。其中用戶可以選擇查詢單個學生的成績還是某個班級的成績,成績查詢中包括個人學生的總分,。1.14學生成績的分類匯總模塊統(tǒng)計主要功能是某個班級的每門學科的總分。1.2 環(huán)境需求分析:操作系統(tǒng): Windows XP開發(fā)軟件: Visual C+ 6.01.3 方法需求分析由于數(shù)組存放數(shù)據的時候要先確定數(shù)組的規(guī)模,不能動態(tài)的分配內存空間,而單鏈表是非連續(xù)存放的,可以對內存空間進行動態(tài)分配,此系統(tǒng)是用單鏈表完成的。然后定義鏈表的結點類型為結構就可以實現(xiàn)對學生學號、姓名、成績、班級等學保存。 每次只要返回頭指針,就可以對整個鏈表進行操作,因此選鏈表來存放學生信息。2概要設計2.1 系統(tǒng)功能模塊圖學 生 成 績 管 理 系 統(tǒng) 鏈表的初始化 輸入學生成績刪除學生成績顯示學生成績按姓名找學生保存學生成績讀取學生成績計算總分學生成績排序按學號查成績分類合計2.2 設計思想:學生成績管理系統(tǒng)是用面向對象的方法設計,由于數(shù)組的存放是連續(xù)的,而單鏈表是非連續(xù)存放的,是動態(tài)分配內存空間,因此此系統(tǒng)采用單鏈表來完成。各個功能模塊的實現(xiàn)主要轉變到對單鏈表的遍歷,添加和刪除結點。3詳細設計3.1 設計原理 學生成績管理系統(tǒng)以菜單選擇,通過調用各個函數(shù),對單鏈表的遍歷,實現(xiàn)不同的功能,不同函數(shù)處理后返回的只是一個頭結點,但是通過頭結點可以找到所有鏈表中的信息,只要有函數(shù),找到頭指針就能進行相應的操作,所以模塊化的程序方便以后添加或者刪除某些功能,程序中通過system(“cls”)清屏函數(shù)實現(xiàn)界面的轉換,主函數(shù)中的循環(huán)保證程序不會退出,一個循環(huán)和一個清屏函數(shù)實現(xiàn)了主菜單和各子畫面的切換(子函數(shù))。這樣的話各個子函數(shù)都可以調用一開始輸入的數(shù)據,這樣就實現(xiàn)了各個不同函數(shù)調用時都能使用整個系統(tǒng)連續(xù)起來了。作為一個學生成績管理系統(tǒng),增加了文件的讀入和寫出功能,增加了程序的實用性。3.2程序詳細代碼描述#include #include #include #include using namespace std; #define max 100; class student public: student *next; public: string name;/姓名 long num;/學號 int x,y,z;/數(shù)學,計算機,英語 int AA;/總分 void play()coutname學生的學號是num,數(shù)學:x,計算機:y,英語:z,總分:AAnext; delete stu; stu=p; stu=0; void sadd(); /添加 void sremove(); /刪除 void samend(); /修改 void ssearch(); /查詢 void staxis(); /排序 void ssave(); /保存 void sload(); /讀取 /排序函數(shù) void pxh(); void psx(); void pyw(); void pyy(); void pAA(); private: student *stu; /頭接點 ; void cla:sadd()/添加 student *q; string name1; long num1; int x1,y1,z1; system(cls); coutn *增加的學生* nendl; cout請輸入學生的(中間用空格間隔) endl; cout姓名 學號 數(shù)學成績 計算機成績 英語成績:name1num1x1y1z1; q=new student(name1,num1,x1,y1,z1); q-next=0; q-AA=x1+y1+z1; if(stu) student *t; t=stu; if(t-num=num1) cout學號已存在,請重新輸入next) if(t-num=num1) cout學號已存在,請重新輸入next; t-next=q; else stu=q; cout輸入完畢endl; void cla:sremove()/刪除 system(cls); int num1; coutn* 刪除學生信息 *n; coutnum1; /查找要刪除的結點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; /刪除結點 if(p1!=NULL)/若找到結點,則刪除 p1-play(); cout確定刪除嗎?Y/Nc; if(toupper(c)!=Y) return; if(p1=stu) /若要刪除的結點是第一個結點 stu=p1-next; delete p1; else /若要刪除的結點是后續(xù)結點 p2-next=p1-next; delete p1; cout找到學號為num1的學生,并刪除n; else /未找到結點 cout未找到想要刪除的學生!n; void cla:samend()/修改 system(cls); long num1; coutn* 修改學生信息 *n; coutnum1; /查找要修改的結點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=NULL) cout學號是num1的學生的信息endl; cout姓名 name數(shù)學x計算機y英語zendl; cout請輸入修改后的信息:姓名 數(shù)學成績 計算機24 成績 英語成績p1-namep1-xp1-yp1-z; p1-AA=p1-x+p1-y+p1-z; cout修改成功endl; else /未找到接點 cout未找到!n; void cla:ssearch()/查詢 system(cls); coutn* 查詢學生信息 *nendl; cout請輸入查詢方式:endl; cout1.按學號查詢endl; cout2.按姓名查詢endl; cout3.返回c; switch (c) case 1: long num1; cout要查詢的學號num1; /查找要查詢的結點 student *p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=NULL) cout學號是num1的學生的信息endl; cout姓名:name 數(shù)學:x 計算機:y 英語:zendl; cout查詢完畢.; else /未找到接點 cout未找到!n; break; case 2: string name1; cout要查詢的學生姓名name1; /查找要查詢的結點 student *p1,*p2; p1=stu; while(p1) if(p1-name=name1) break; else p2=p1; p1=p1-next; if(p1!=NULL) coutname1的學生的信息endl; cout學號:num 數(shù)學:x 計算機:y 英語:zendl; cout查詢完畢.; else /未找到接點 coutnext) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;inump1-next-num) / 如果頭結點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-nump1-next-num) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:psx()/按數(shù)學成績排序 student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;ixp1-next-x) / 如果頭結點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-xp1-next-x) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:pyw()/按語文成績排序 student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;iyp1-next-y) / 如果頭結點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-yp1-next-y) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:pyy()/按英語成績排序 student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;izp1-next-z) / 如果頭結點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-zp1-next-z) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:pAA()/按總分排序 student *p1,*p2; int n; p1=stu; n=1; while(p1-next) n+; p1=p1-next; cout共有n條信息.endl; int i; p1=stu; for(i=1;iAAp1-next-AA) / 如果頭結點大于第二個的 p2=p1-next; p1-next=p1-next-next; p2-next=p1; /頭結點交換 stu=p2; p1=stu; while(p1-next-next) /中間的交換 p2=p1; p1=p1-next; if(p1-AAp1-next-AA) p2-next=p1-next; p1-next=p1-next-next; p2-next-next=p1; p1=p2-next; /交換 p1=stu; do p1-play(); p1=p1-next; while(p1); void cla:staxis()/排序 system(cls); char c; cout請選擇以何種方式排序:endl; cout1以學號排序endl; cout2以數(shù)學成績排序endl; cout3以計算機成績排序endl; cout4以英語成績排序endl; cout5以總分排序endl; cout6返回endl; cout請選擇(1-6)c; switch (c) case 1:pxh(); break; case 2:psx(); break; case 3:pyw(); break; case 4:pyy(); break; case 5:pAA(); break; case 6:return; void cla:ssave() /保存到文件 system(cls); char c; coutc; if(toupper(c)!=Y) return; ofstream tfile(date.txt,ios_base:binary); student *p=stu; while(p)/ 寫入文件 tfilenametnumtxtytz; tfilenext; tfile.close(); cout保存完畢.next; delete p; p=stu; ifstream tfile(date.txt,ios_base:binary); string name1; long num1; int x1,y1,z1; tfilename1num1x1y1z1; while(tfile.good() /創(chuàng)建學生接點 student *s; s=stu; s=new student(name1,num1,x1,y1,z1); s-next=0; s-AA=x1+y1+z1; if(stu) /若已經存在結點 student *p2; p2=stu; while(p2-next) /查找尾結點 p2=p2-next; p2-next=s; /連接 else /若不存在結點(表空) stu=s; /連接 tfilename1num1x1y1z1; tfile.close(); coutn學生信息已經裝入.n; void main() char c; cla a; do coutn 學 生 成 績 管 理 系 統(tǒng) n; cout*n; cout 作者:09軟件+信息(2)班: n; cout 1增加學生 n; cout 2刪除學生 n; cout 3修改學生 n; cout 4查詢學生信息 n; cout 5排序 n; cout 6保存信息 n; cout 7讀取信息 n; cout 8退出 n; cout*n; coutc; switch(c) case 1: a.sadd();break; case 2: a.sremove();break; case 3: a.samend();break; case 4: a.ssearch();break; case 5: a.staxis();break; case 6: a.ssave();break; case 7: a.sload();break; while(c!=8); 3.3系統(tǒng)界面系統(tǒng)主菜單列出了該程序的所有功能,學生個人的總分在輸入創(chuàng)建鏈表是就計算好并儲存好了,同時顯示學生信息是就一起顯示出來了,使用時該適當?shù)氖褂玫谝粋€初始化鏈表的功能,否則可能出現(xiàn)意想不到的錯誤。初始界面圖01:4調試與操作說明4.1調試過程增加學生修改信息查詢方式排序方式保存信息4.2操作說明一個成績管理系統(tǒng)如果不能進行文檔的讀出和寫入的操作,功能再多,程序關閉后,所做的操作都將沒有,這就失去了實際的意義。此系統(tǒng)當用戶退出系統(tǒng)時,用戶可以選擇是否保存已做的修改。當用戶任意選擇一個操作時,系統(tǒng)將會提示。此外在輸入成績時,輸入錯誤的數(shù)字系統(tǒng)可以提示錯誤,但是如果輸入標點和字母時,系統(tǒng)將會出錯,因此輸入成績時不可以輸入字母和標點。此外,注意適當?shù)氖褂面湵沓跏蓟?,防止出現(xiàn)意外錯誤,例如,一開始不初始化就顯示學生信息,由于鏈表還未創(chuàng)建,會出現(xiàn)內存不能為read的錯誤。提示是否返回主菜單,如果不返回則自動提示退出系統(tǒng),選擇是的話返回主菜單??偨Y一開始知道課題后,以為很簡單,但我想如果用數(shù)組實現(xiàn)的話,在內存中是以連續(xù)地址存放的,不方便操作,所以我選擇了使用鏈表,它可以實現(xiàn)無序的在內存中存放,只要有一個頭結點,就可以對整個鏈表進行相關的操作,在調式時遇到了很多問題,最多的是指針問題引起的內存不能為read,因此指針這一塊知識還得好好的加強,當我將學生成績管理系統(tǒng)的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 邏輯與企業(yè)管理的關系試題及答案
- 設計學習路徑Photoshop考題及答案
- 軟件設計評審中的常見問題與解決方案試題及答案
- 法律問題面試題及答案
- 法律文秘期末考試題及答案
- 2025年計算機二級MySQL專題總結試題及答案
- 法律兩類考試題及答案
- 法律考試題目視頻教學及答案
- 法律基礎知識試題及答案
- 知識補充2025年Msoffice考試試題及答案
- 隧道工程隧道洞口臨建施工方案
- 心理咨詢的面談技術
- DBJ∕T13-374-2021 福建省鋼筋桁架疊合樓板技術標準
- 事故池管理的有關規(guī)定
- (word完整版)污水處理廠安全評價報告
- DB50∕T 867.6-2019 安全生產技術規(guī)范 第6部分:黑色金屬冶煉企業(yè)
- 新產品開發(fā)流程課件
- 高中語文部編版選擇性必修下冊第四單元 單元學習導航 課件 (8張PPT)
- 化妝品原料-PPT課件
- 重慶市參加企業(yè)職工基本養(yǎng)老保險人員退休審批表
- 混凝土結構課程設計244
評論
0/150
提交評論