學生成績管理系統(tǒng)C++編程實驗報告_第1頁
學生成績管理系統(tǒng)C++編程實驗報告_第2頁
學生成績管理系統(tǒng)C++編程實驗報告_第3頁
學生成績管理系統(tǒng)C++編程實驗報告_第4頁
學生成績管理系統(tǒng)C++編程實驗報告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、c+程序設計課程設計報告設計題目:學生成績管理系統(tǒng)專業(yè):計算機科學與技術(網絡工程)班級:學號:姓名:指導老師: 日期:2009.05.31 目錄一、設計任務與要求31.設計內容32.課程設計的要求3二、系統(tǒng)分析(需求分析)31.需求分析32.系統(tǒng)性能要求33.系統(tǒng)的功能分析34.系統(tǒng)功能模塊35.模塊框架圖3三、系統(tǒng)設計與實現(xiàn)41.界面設計42.功能設計與實現(xiàn)4四、測試結果4五、總結5六、參考資料5附錄:源程序5一、設計任務與要求1.設計內容: a.設計四個類;學生類(描述學生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數(shù)學,大學英語等);學生成績及課程信息用

2、文件保存,每個類一個文件,程序執(zhí)行時從文件讀入; b.能按學期,按班級完成對學生成績的錄入,修改,能按班級統(tǒng)計學生的成績;求學生的總分及平均分;并能根據(jù)學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。 設置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 計算學生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) 顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少一個班,30人三門課2.課程設計的要求:根據(jù)c+

3、課程所學的概念、理論和方法,按照c+程序設計的基本步驟,設計出一個適當規(guī)模的程序來實現(xiàn)設計課程內容中的全部功能;設計主控模塊程序對給出的程序源代碼要給出各部分的詳細注釋自己根據(jù)能力及需要添加相應功能模塊,增強模擬系統(tǒng)功能。包括系統(tǒng)的功能分析、系統(tǒng)的功能模塊設計、程序流程圖或結構框圖、邏輯結構設計,數(shù)據(jù)庫中的表、視圖(如果使用)、索引的結構和定義、觸發(fā)器、存儲過程、課程設計體會。二、系統(tǒng)分析(需求分析)1.需求分析:a.能對學生各科成績進行錄入:。b.能對學生的成績進行增加。c.能對學生的成績進行刪除。d.能對學生的成績進行修改。e.能對學生的成績按總成績,姓名,進行查詢。f.能輸出學生的所有數(shù)

4、據(jù)。g.能進行成績統(tǒng)計h能進行總分查詢排名。2.系統(tǒng)性能要求:a.系統(tǒng)安全、可靠;b.功能齊全;c.操作方便、界面友好;d易于維護和擴充。3.系統(tǒng)的功能分析:資料維護:系統(tǒng)維護包括對學生信息的錄入操作及數(shù)據(jù)表中的信息進行瀏覽。系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進行瀏覽。系統(tǒng)查詢:可以對學生的信息進行查詢。4.系統(tǒng)功能模塊學生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改,數(shù)據(jù)查詢,排序顯示構成。5.模塊框架圖學生成績管理系統(tǒng)操作查詢成績統(tǒng)計按總成績排名錄入增加刪除修改總成績查詢姓名每個學生的平均成績各科不及格的人數(shù)輸出所有學生的成績三、系統(tǒng)設計與實現(xiàn)1.界面設計程序運行后會出現(xiàn)一個簡捷的窗口,便于用戶

5、查詢數(shù)據(jù)。2.功能設計與實現(xiàn)通過主窗體調用其他窗體,具體實現(xiàn)可以參照系統(tǒng)分析相關內容。應用系統(tǒng)主控界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進行查詢四、測試結果每一個case都能執(zhí)行,但是有很多的地方都不夠完善,例如:在總成績排序中,只能輸出總成績,不能單獨的輸出學生的相應的信息;每次進行別的操作之前都要在進行一次數(shù)據(jù)的錄入,不能直接對原有的文件進行讀取。五、總結此次c+課程設計,在指導教師的精心教導下,我們學會了如何用c+編寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系統(tǒng)分析與系統(tǒng)設計,最

6、后是代碼設計與調試。程序實現(xiàn)上,設計了簡單的查詢界面,將各個功能集中出來按照程序編寫原則,便于查詢。根據(jù)c+課程所學的概念、理論和方法,按照c+程序設計的基本步驟,設計出一個適當規(guī)模的程序;進一步加深對c+語言的理解和掌握。理論聯(lián)系實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進,才能更好提高編程能力。六、參考資料c+程序設計 譚浩強 清華大學出版社附錄:源程序 #include #include #include#include#includeusing namespace std; c

7、lass tstu /通過定義一個類來定義數(shù)據(jù)錄入的函數(shù) char name20; int number; float math,cpp,english,average,sum; public: tstu() ; tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum();/得到總分的函數(shù) float getaver(); /得到平均分的函數(shù) friend void main(); /將主函數(shù)定義為友元函數(shù),方便訪問類中的成員 ; tstu:tstu ( char n20, int num,float ma,f

8、loat cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到學號 math=ma; /得到數(shù)學成績 cpp=cj; /得到c+成績 english=eng; /得到英語成績 float tstu:getsum() /得到總分的函數(shù) sum=cpp+english+math; return sum; float tstu:getaver() /得到平均分的函數(shù) average=getsum()/3; return average; void main() cout*歡迎來到學生成績查詢系統(tǒng)*endl; cout請選擇您需要的操作!endl;

9、/菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)增加學生endl; cout(3)刪除學生endl; cout(4)修改數(shù)據(jù)endl; cout查詢:endl; cout(5)按總成績查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學生的數(shù)據(jù)endl; cout成績統(tǒng)計:endl; cout(8)每個學生的平均成績endl; cout(9)各科不及格人數(shù)endl; cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl; cout選擇相關操作請輸入相對的括號里的阿拉伯數(shù)字及字母!p; i

10、f(p=1&p=11) chris1=1; else cout指令錯誤!請重新輸入:endl; while(chris1=0); do switch(p) case 1: /數(shù)據(jù)的錄入 char c; /用于在小項中選擇是否繼續(xù)操作 char name20; int number; float math,cpp,english; do cout請輸入姓名:name; cout請輸入學號:number; cout請輸入數(shù)學成績:math; cout請輸入c+成績:cpp; cout請輸入英語成績:english; fstream outfile,infile; /作一個文本文檔在文件夾中用于顯示

11、所錄入的數(shù)據(jù) outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 學號:number 數(shù)學成績:math c+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判斷文件是否打開 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; inf

12、ile.close(); j+; si=new tstu(name, number,math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; else chris1=1; while(chris1=0); while(c=y); /重復輸入 break; case 2: /增加學生數(shù)據(jù) char name20; int number; float math,cpp,english; char c; do cout請輸入您要增加的學生的姓名:name; cout請輸

13、入你要增加的學生的學號:number; cout請輸入數(shù)學成績:math; cout請輸入c+成績:cpp; cout請輸入英語成績:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 學號:number 數(shù)學成績:math c+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) cou

14、tf1.txt can not open.n; return; char h; while(infile.get(h) couth; coutendl; infile.close(); j+; si=new tstu(name,number, math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; while(c=y); break; case 3:/刪除學生信息 char c; string xingming,line,str,name; do ifstream fin(f1.txt)

15、; fstream outfile(f2.txt,ios:trunc|ios:out); /作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) cout請輸入您要刪除的學生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判斷是否相等 if(name != xingming) outfilelineendl; outfile.close(); fin.close(); fstream f(f1.txt,ios

16、:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbuf(); outf.close(); f.close(); cout數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)c; if(c!=y&c!=n) cout指令錯誤!請重新輸入!c; while(c=y); break; case 4:/修改數(shù)據(jù) string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break;do flag=0; coutname; fst

17、ream fin(f1.txt,ios:in); ofstream outfile(f.txt,ios:trunc|ios:out); coutendl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutnamenumacomeng;coutendl;outfilename 學號:

18、nu 數(shù)學成績:ma c+成績:com 外語成績:engendl; outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close(); if(flag=0)cout對不起,您要修改的學生不存在!請查證后輸入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令錯誤!請重新輸入!endlc; while(c=y);break; case 5:/按總分查詢 int j=0;flo

19、at sum;char c;int flag; if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入您要查詢的學生的總成績:sum; for(int j=0;jgetsum()=sum) flag=1;cout您要查詢的學生是:(*sj).nameendl;cout該生的信息為:endl;cout 學號:(*sj).number 數(shù)學分數(shù):(*sj).math c+分數(shù):(*sj).cpp 英語分數(shù)(*sj).englishendl; if(flag=0)cout對不起!您要查詢的學生不存在!endl;coutc;if(c!=y&

20、c!=n)cout指令錯誤!請重新輸入!c; ; while(c=y); break; case 6:/按姓名查詢 char n20;char c;int j=0;int flag; if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入要查詢的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout您要查詢的學生是:(*sj).nameendl;cout該生的信息是:學號:(*sj).number 數(shù)學分數(shù):(*sj).mathc+分數(shù):(*sj).cpp英語分

21、數(shù):(*sj).englishendl; if(flag=0)cout對不起您要查詢的學生不存在,請查證后再輸入!endl;coutc;if(c!=y&c!=n)cout指令錯誤!請重新輸入:c; while(c=y); break; case 7:/輸出所有學生數(shù)據(jù) cout所有學生數(shù)據(jù)如下:endl; ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close(); break; case 8:/統(tǒng)計每個學生的平均成績 if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; for(int m=0;mi;m+) cout(*sm).name 學號:(*sm).number 總分:(*sm).getsum() 均分:(*sm).getaver()endl; break; case 9:/統(tǒng)計各學科不及格人數(shù) if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; int m,n,k,j;m=0;n=0;k=0; for(j=0;jmathcppenglish60)k+; cout數(shù)學

溫馨提示

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

評論

0/150

提交評論