學生成績管理系統_第1頁
學生成績管理系統_第2頁
學生成績管理系統_第3頁
學生成績管理系統_第4頁
學生成績管理系統_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 湖南工業大學課 程 設 計資 料 袋 計算機與通信學院 學院(系、部) 2010 2011 學年第 一 學期 課程名稱 面向對象程序設計 指導教師 職稱 學生姓名 專業班級 學號 題 目 學生成績管理系統(基于控制臺應用程序) 成 績 起止日期 2011 年 1 月 3 日 2011 年 1 月 8 日目 錄 清 單序號材 料 名 稱資料數量備 注1課程設計任務書12課程設計說明書13源程序(電子文檔)1456湖南工業大學課程設計任務書2010 2011 學年第 一 學期 學院(系、部) 專業 班級課程名稱: 面向對象程序設計 設計題目: 學生成績管理系統(基于控制臺應用程序) 完成期限:自

2、 2011 年 1 月 3 日至 2011 年 1 月 8 日共 1 周內容及任務一、設計的任務及主要技術參數1 學生成績的讀入和寫出模塊: 主要功能是讀出要管理的成績文檔,保存修改后的成績文檔。實際生活中學生成績的文件主要以word或excel保存,為了方便操作,我在調試本系統中成績文件采用了txt的文檔格式保存,當然以word文檔形式保存也是可以的。2 學生成績添加刪除模塊:主要功能是添加、刪除學生成績的操作。刪除操作是根據用戶的要求實現的。例如用戶可以輸入要刪除學生的學號或是要刪除學生的姓名刪除學生的信息。此程序輸入學生成績時就計算個人的總分和平均分,并保存到數據結構中相應的變量中。3

3、學生成績的查詢修改模塊主要功能是按照用戶的要求查詢學生的成績。其中用戶可以選擇查詢單個學生的成績或是選擇修改先查詢到要修改的學生信息然后進行相應的修改,成績查詢中包括個人學生的總分和平均分,。4 學生成績的分類排序匯總模塊 主要功能是統計所輸入學生的每門學科的總分和平均分,同時可以選擇按學號、各科成績、總分或是平均分進行排序。二、設計任務1 進行系統的需求分析和功能設計。寫出系統的需求,分析出系統主要用到的類和對象。然后,畫出系統的功能模塊圖,設計每個模塊的功能。2 詳細設計,包括類與對象的設計(屬性設計、成員函數設計等)、界面設計、類的繼承與派生關系等。3 編碼實現。即針對每個功能模塊進行編

4、碼。4 軟件測試。首先進行單元模塊的測試,單元測試通過以后,再進行集成測試和系統聯調。系統編寫測試完成后,形成一個可運行的系統。5 要求源程序書寫格式規范,可讀性好,進行必要的注釋,采用縮進格式。6 撰寫課程設計說明書三、設計工作量 用文件保存數據,具有簡單的數據添加、修改、刪除、查詢、統計、顯示等功能。進度安排起止日期工作內容第1天根據問題描述,分析系統功能,劃分功能模塊,完成程序的數據設計。第2天詳細設計,即針對每個功能模塊進行編碼第34天各功能模塊編碼及調試第5天程序整體調試第6天完成設計文檔和課程設計說明書主要參考資料1 譚浩強.c+面向對象程序設計m.北京:清華大學出版社,2006.

5、2 譚浩強.c+面向對象程序設計題解與上機指導m.北京:清華大學出版社,2006.3 劉恒洋,楊宏雨.面向對象程序設計案例教程m.北京:機械工業出版社,2010.4 羅建軍.c/c+語言程序設計案例教程m.北京:機械工業出版社,2010.5 張海林,杜忠友,姜玉波. visual c+簡明教程m.北京:電子工業出版社,2007.6 丁展,四維科技.visual c+游戲開發技術與實例m北京:人民郵電出版社,2005指導教師(簽字): 年 月 日系(教研室)主任(簽字): 年 月 日 面向對象程序設計課程設計設計說明書學生成績管理系統(基于控制臺應用程序)起止日期: 2011 年 1 月 3 日

6、 至 2011 年 1 月 8 日學生姓名班級學號成績指導教師(簽字)2010年 1 月 8 日目 錄1.問題描述12. 需求分析12.1. 功能需求分析12.1.1. 學生成績的讀入和寫出模塊12.1.2. 學生成績添加刪除模塊12.1.3. 學生成績的查詢修改模塊22.1.4. 學生成績的分類排序匯總模塊22.2. 環境需求分析22.3. 方法需求分析23. 概要設計23.1. 系統功能模塊圖23.2. 系統流程圖34. 詳細設計44.1. 設計原理44.2. 系統各模塊分析設計44.2.1. 學生成績的讀入和寫出模塊44.2.2. 學生成績添加刪除模塊44.2.3. 學生成績的查詢修改模

7、塊44.2.4. 學生成績的分類排序匯總模塊55. 編碼實現55.1. 系統各模塊編碼實現55.1.1. 系統的定義55.1.2. 類定義55.1.3. 主函數定義65.1.4. 學生信息修改函數75.1.5. 學生信息刪除函數85.1.6. 學生信息修改函數105.1.7. 學生信息查詢125.1.8. 學生信息排序顯示函數145.1.9. 學生信息讀入讀出函數156. 調試與測試17 6.1.主界面. 176.2.增加學生信息界面:176.3.刪除學生界面:186.4.修改學生信息界面:186.5.查詢學生信息界面196.6.排序界面:196.7.操作說明197. 設計總結208. 致謝2

8、19. 參考資料211. 問題描述隨著科學技術的發展,計算機領域不斷取得新的研究成果。計算機在代替和延伸腦力勞動方面發揮越來越重要的作用,不僅在工業方面而且在日常生活中也越來越離不開計算機。尤其是在學校里,要處理大量的學生數據。隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著越來越重要的作用.作為計算機應用的一部分,使用計算機對學生成績信息進行管理,有著手工管理所無法比擬的優點。學生成績管理系統能方便用戶迅速、準確處理學生的成績,得到想要的數據并能將學生的信息以文檔保存。本文介紹了簡易學生成績管理系統在microsoft visual

9、 c+ 6.0環境下的實現過程:系統的分析,功能模塊的設計,系統的調試和測試。此系統的主要管理的信息有:學生的班級、學號、姓名和四門(可以更改)課的成績以及學生的總分和平均分。本系統的主要功能有學生成績的添加、刪除、查詢、修改,能對學生成績按分數或學號進行排序,可以根據用戶的要求按學號,姓名查詢學生的成績信息,同時計算每位學生的總分和平均分,能將每位同學的信息保存到文件data.txt中以及從文件中讀取信息等功能。2. 需求分析2.1. 功能需求分析簡易學生成績管理系統主要有4個大的模塊:學生成績從文件讀入和寫入,學生成績的輸入添加和刪除,學生成績信息的查詢和修改,以及學生成績的分類排序匯總。

10、2.1.1. 學生成績的讀入和寫出模塊主要功能是讀出要管理的成績文檔,保存修改后的成績文檔。實際生活中學生成績的文件主要以word或excel保存,為了方便操作,我在調試本系統中成績文件采用了txt的文檔格式保存,當然以word文檔形式保存也是可以的。2.1.2. 學生成績添加刪除模塊主要功能是添加、刪除學生成績的操作。刪除操作是根據用戶的要求實現的。例如用戶可以輸入要刪除學生的學號或是要刪除學生的姓名刪除學生的信息。此程序輸入學生成績時就計算個人的總分和平均分,并保存到數據結構中相應的變量中。2.1.3. 學生成績的查詢修改模塊主要功能是按照用戶的要求查詢學生的成績。其中用戶可以選擇查詢單個

11、學生的成績或是選擇修改先查詢到要修改的學生信息然后進行相應的修改,成績查詢中包括個人學生的總分和平均分。2.1.4. 學生成績的分類排序匯總模塊主要功能是統計所輸入學生的每門學科的總分和平均分,同時可以選擇按學號、各科成績、總分或是平均分進行排序。2.2. 環境需求分析 硬件:pc機,檔次不低于cpu為piii667,內存為256m,40g硬盤,其它硬件與此相配套。 軟件:操作系統為windowsxp、windows2000等,開發工具為vc+6.0,數據庫管理系統為sql server2000或access(可選)。2.3. 方法需求分析由于數組存放數據的時候要先確定數組的規模,不能動態的分

12、配內存空間,而單鏈表是非連續存放的,可以對內存空間進行動態分配,此系統是用單鏈表完成的。然后定義鏈表的結點類型為結構就可以實現對學生學號、姓名、成績等進行保存。每次只要返回頭指針,就可以對整個鏈表進行操作,因此選鏈表來存放學生信息。3. 概要設計3.1. 系查詢學生信息 排序保存信息讀取信息鏈表初始化修改學生信息刪除學生信息輸入學生信息學 生 成 績 信 息 管 理 系 統統功能模塊圖 3.2. 系統流程圖開 始退出輸入學生信息刪除學生信息修改學生信息查詢學生信息排序保存信息讀取信息請輸入學生信息學號姓名數學成績計算機成績英語成績面向對象程序設計成績輸入完畢!輸入刪除/修改/查詢方式按學號刪除

13、/修改/查詢按姓名刪除/修改/查詢返回以學號排序以數學成績排序以計算機成績排序以英語成績排序以c+成績排序以總分排序以平均分排序請選擇以何種方式排序顯示設計思想:學生成績管理系統是用面向對象的方法設計,由于數組的存放是連續的,而單鏈表是非連續存放的,是動態分配內存空間,因此此系統采用單鏈表來完成。各個功能模塊的實現主要轉變到對單鏈表的遍歷,添加和刪除結點。4. 詳細設計4.1. 設計原理學生成績管理系統以菜單選擇,通過調用各個函數,對單鏈表的遍歷,實現不同的功能,不同函數處理后返回的只是一個頭結點,但是通過頭結點可以找到所有鏈表中的信息,只要有函數,找到頭指針就能進行相應的操作,所以模塊化的程

14、序方便以后添加或者刪除某些功能,程序中通過system(“cls”)清屏函數實現界面的轉換,通過sleep(*)來實現界面的延遲,主函數中的循環保證程序不會退出,一個循環和一個清屏函數實現了主菜單和各子畫面的切換(子函數)。這樣的話各個子函數都可以調用一開始輸入的數據,這樣就實現了各個不同函數調用時都能使用整個系統連續起來了。作為一個學生成績管理系統,增加了文件的讀入和寫出功能,增加了程序的實用性。4.2. 系統各模塊分析設計4.2.1. 學生成績的讀入和寫出模塊主要功能是讀出要管理的成績文檔,保存修改后的成績文檔。文件輸入輸出流頭文件#include定義fstream類用來對磁盤文件的輸入輸

15、出。定義了一個輸出文件流對象ofstream tfile和一個輸入文件流對象ifstream tfile。利用ssave()(保存)sload()(讀取)函數來實現。在調試本系統中成績文件采用了txt的文檔格式保存,數據保存在data.txt中。4.2.2. 學生成績添加刪除模塊主要功能是添加、刪除學生成績的操作。刪除操作是根據用戶的要求實現的,可以通過選擇相應的刪除方式(按學號/按姓名)對相應的學生信息進行刪除。添加采用函數sadd()刪除采用函數sremove()來實現,同時此程序輸入學生成績時就可計算個人的總分和平均分,并保存到數據結構中相應的變量中。4.2.3. 學生成績的查詢修改模塊

16、主要功能是按照用戶的要求查詢學生的成績。其中用戶可以選擇查詢或者修改方式(按學號查詢/按姓名查詢)來查詢或修改學生的信息保存在相應的變量中,成績查詢中包括學生的總分和平均分。分別采用函數samend()修改和函數ssearch()查詢來實現。4.2.4. 學生成績的分類排序匯總模塊主要功能是統計和顯示所輸入學生的信息,包括學號、姓名、每門學科成績以及總分和平均分。在排序函數中可以選擇按學號(pxh())、各科成績( pxx()數學、pyy()計算機、pzz()英語、pmm()c+)、總分(paa())或是平均分(pav())進行排序同時統計顯示。各函數實現又是采用相應變量進行比較,再將結點進行

17、交換。5. 編碼實現5.1. 系統各模塊編碼實現5.1.1. 系統的定義#include /輸入輸出流頭文件#include /文件輸入輸出頭文件#include /字符串頭文件#include / windows的所有資料型態、函數調用、資料結構和常數識別字using namespace std; /標識符被定義于一個名為std的namespace中#define max 100; /宏定義5.1.2. 類定義class student /定義學生類 public: student *next; string name;/姓名 long num;/學號 float x,y,z,m;/數學,計

18、算機,英語,面向對象程序設計 float aa,av;/總分,平均分 void display1() cout cout 學 號 姓 名 數 學 計算機 英 語cout endl; c+ 總 分 平均分endl; endl;void display2()cout num name x y z m aa avnext; delete stu; stu=p; stu=0; void sadd(); /添加 void sremove(); /刪除 void samend(); /修改 void ssearch(); /查詢 void staxis(); /排序 void ssave(); /保存 v

19、oid sload(); /讀取 /排序函數 void pxh();/按學號排序 void pxx(); /按數學成績排序void pyy(); /按計算機成績排序void pzz();/按英語成績排序void pmm();/按面向對象程序設計成績排序void paa(); /按總分排序void pav();/按平均成績排序private: student *stu; /頭接點 ;5.1.3. 主函數定義void main() /*cout0=黑色 8=灰色endl; cout1=藍色 9=淡藍色endl;cout2=綠色 a=淡綠色endl;cout3=淺綠色 b=淡淺綠色endl;cout

20、4=紅色 c=淡紅色endl;cout5=紫色 d=淡紫色endl;cout6=黃色 e=淡黃色endl;cout7=白色 f=亮白色endl;*/system(color 5f);/5=紫色,f=亮白色char c; cla a; do system(cls); cout( _ ) 學生成績管理系統 ( o )endl; cout endl;cout 1增加學生 endl; cout 2刪除學生 endl; cout 3修改學生 endl; cout 4查詢學生信息 endl; cout 5排序 endl; cout 6保存信息 endl; cout 7讀取信息 endl; cout 8退出

21、 endl; cout endl; 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;case 8:return;break;default: cout命令錯誤!endl;sleep(1000); while(c!=8); 5.1.4. 學生信息修改函數vo

22、id cla:sadd() student *q; string name1; long num1; float x1,y1,z1,m1; system(cls);a:system(cls);coutendl增加的學生endl; cout 請輸入學生的信息:endl; coutnum1;coutname1;coutx1;couty1; coutz1; coutm1;q=new student(name1,num1,x1,y1,z1,m1); q-next=0;q-aa=x1+y1+z1+m1;q-av=(q-aa)/4;if(stu) student *t; t=stu; if(t-num=n

23、um1) cout 該學號已存在,請重新輸入!next) if(t-num=num1) cout 該學號已存在,請重新輸入!next; t-next=q; else stu=q;cout 輸入完畢!endl;sleep(2000); 5.1.5. 學生信息刪除函數void cla:sremove() system(cls); coutendl刪除學生信息endl; cout 1.按學號刪除endl; cout 2.按姓名刪除endl; cout 3.返回endl; coutc; switch (c) case 1: long num1; coutnum1;/查找要刪除的結點 student *

24、p1,*p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1;p1=p1-next; /刪除結點 if(p1!=null)/若找到結點,則刪除 system(cls);coutendl name學生的學號是numendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl;cout 確定刪除學號為num1的學生信息嗎?y/nc; if(toupper(c)!=y) return; if(p1=stu)

25、/若要刪除的結點是第一個結點 stu=p1-next; delete p1; else /若要刪除的結點是后續結點 p2-next=p1-next; delete p1; system(cls);cout 找到了學號為num1的學生信息,并刪除.n; else /未找到結點system(cls);cout 未找到想要刪除的學生!n;sleep(2050);break;case 2: string name1; coutname1; /查找要刪除的結點 student *p1,*p2; p1=stu; while(p1) if(p1-name=name1) break; else p2=p1;p

26、1=p1-next; /刪除結點 if(p1!=null)/若找到結點,則刪除 system(cls);coutendl name學生的學號是numendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl; cout 確定刪除name1的學生信息嗎?y/nc; if(toupper(c)!=y) return; if(p1=stu) /若要刪除的結點是第一個結點 stu=p1-next; delete p1; else /若要刪除的結點是后續結點 p2-n

27、ext=p1-next; delete p1; system(cls);cout 找到了name1學生的信息,并刪除.endl; else /未找到結點 system(cls);cout 未找到想要刪除的學生!;sleep(2050);break; case 3: return;default: cout 命令錯誤!endl;sleep(1000); 5.1.6. 學生信息修改函數void cla:samend() system(cls); coutendl 修改學生信息 endl;cout 1.按學號查詢修改endl; cout 2.按姓名查詢修改endl; cout 3.返回endl; c

28、outc;system(cls);switch (c) case 1: long num1; 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 姓名:nameendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl;cou

29、t 請輸入修改后的信息:endl;coutp1-name;coutp1-x; coutp1-y; coutp1-z;coutp1-m; p1-aa=p1-x+p1-y+p1-z+p1-m;p1-av=(p1-aa/4);cout 修改成功!endl;sleep(2050); else /未找到接點 cout 未找到要修改的學生信息!endl;sleep(2050);break; case 2: string name1; coutname1; /查找要修改的結點 student *p1,*p2; p1=stu; while(p1) if(p1-name=name1) break; else p

30、2=p1; p1=p1-next; if(p1!=null) cout name1學生的信息:endl; cout 學號:numendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl;cout 請輸入修改后的信息:endl;coutp1-num;coutp1-x; coutp1-y; coutp1-z;coutp1-m; p1-aa=p1-x+p1-y+p1-z+p1-m;p1-av=(p1-aa/4);cout 修改成功!endl;sleep(2050

31、); else /未找到接點 cout 未找到要修改的學生信息!endl;sleep(2050);break; case 3: return;break;default: cout 命令錯誤!endl;sleep(1000); 5.1.7. 學生信息查詢void cla:ssearch() system(cls); coutendl查詢學生信息endl; cout 1.按學號查詢endl; cout 2.按姓名查詢endl; cout 3.返回endl; coutc; switch (c) case 1: long num1; coutnum1; /查找要查詢的結點 student *p1,*

32、p2; p1=stu; while(p1) if(p1-num=num1) break; else p2=p1; p1=p1-next; if(p1!=null) cout 學號是num1的學生的信息:endl; cout 姓名:nameendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl;cout 查詢完畢.; sleep(2050); else /未找到接點 cout 未找到要查詢的學生信息!n;sleep(2050);break; case 2:

33、 string name1; coutname1; /查找要查詢的結點 student *p1,*p2; p1=stu; while(p1) if(p1-name=name1) break; else p2=p1; p1=p1-next; if(p1!=null) cout 姓名是name1的學生的信息:endl; cout 姓名:nameendl;cout 數學:xendl;cout 計算機:yendl;cout 英語:zendl;cout 面向對象程序設計:mendl;cout 總分:aaendl;cout 平均分:avendl;cout 查詢完畢.;sleep(2050); else /

34、未找到接點 cout 未找到要查詢的學生信息!endl;sleep(2050);break; case 3: return;default: cout命令錯誤!endl;sleep(1000); 5.1.8. 學生信息排序顯示函數排序函數中包括可以選擇按學號(pxh())、各科成績( pxx()數學、pyy()計算機、pzz()英語、pmm()c+)、總分(paa())或是平均分(pav())進行排序同時統計顯示。因為基本原理相同,下面為按總分排序的編碼,另外六個函數只是變量不同,稍做修改便可。 進入排序功能的主界面函數編碼void cla:staxis() system(cls); char

35、 c; coutendl學生信息排序顯示 endl;cout 1以學號排序endl; cout 2以數學成績排序endl; cout 3以計算機成績排序endl; cout 4以英語成績排序endl;cout 5以面向對象程序設計成績排序endl;cout 6以總分排序endl;cout 7以平均分排序endl; cout 8返回endl; coutc; switch (c) case 1:pxh(); break; case 2:pxx(); break; case 3:pyy(); break; case 4:pzz(); break; case 5:pmm(); break;case 6

36、:paa(); break; case 7:pav(); break;case 8:return;default: cout 命令錯誤!next) n+; p1=p1-next; cout 共有n個學生信息.display1();p1=stu; for(int 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;

溫馨提示

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

評論

0/150

提交評論