




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C+程序設計課程設計報告設計題目:學生成績管理系統專業:計算機科學與技術(網絡工程)班級:學號:姓名:指導老師: 日期: 目錄一、設計任務與要求31.設計內容32.課程設計的要求3二、系統分析(需求分析)31.需求分析32.系統性能要求33.系統的功能分析34.系統功能模塊35.模塊框架圖3三、系統設計與實現41.界面設計42.功能設計與實現4四、測試結果4五、總結5六、參考資料5附錄:源程序5一、設計任務與要求1.設計內容: a.設計四個類;學生類(描述學生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數學,大學英語等);學生成績及課程信息用文件保存,每個類一個
2、文件,程序執行時從文件讀入; b.能按學期,按班級完成對學生成績的錄入,修改,能按班級統計學生的成績;求學生的總分及平均分;并能根據學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。 設置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 計算學生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) 顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少一個班,30人三門課2.課程設計的要求:根據C+課程所學的概念、理論
3、和方法,按照C+程序設計的基本步驟,設計出一個適當規模的程序來實現設計課程內容中的全部功能;設計主控模塊程序對給出的程序源代碼要給出各部分的詳細注釋自己根據能力及需要添加相應功能模塊,增強模擬系統功能。包括系統的功能分析、系統的功能模塊設計、程序流程圖或結構框圖、邏輯結構設計,數據庫中的表、視圖(如果使用)、索引的結構和定義、觸發器、存儲過程、課程設計體會。二、系統分析(需求分析)1.需求分析:a.能對學生各科成績進行錄入:。b.能對學生的成績進行增加。c.能對學生的成績進行刪除。d.能對學生的成績進行修改。e.能對學生的成績按總成績,姓名,進行查詢。f.能輸出學生的所有數據。g.能進行成績統
4、計h能進行總分查詢排名。2.系統性能要求:a.系統安全、可靠;b.功能齊全;c.操作方便、界面友好;d易于維護和擴充。3.系統的功能分析:資料維護:系統維護包括對學生信息的錄入操作及數據表中的信息進行瀏覽。系統功能:可以對數據表中的信息進行瀏覽。系統查詢:可以對學生的信息進行查詢。4.系統功能模塊學生成績查詢系統有:成績錄入、增加、刪除、修改,數據查詢,排序顯示構成。5.模塊框架圖學生成績管理系統操作查詢成績統計按總成績排名錄入增加刪除修改總成績查詢姓名每個學生的平均成績各科不及格的人數輸出所有學生的成績三、系統設計與實現1.界面設計程序運行后會出現一個簡捷的窗口,便于用戶查詢數據。2.功能設
5、計與實現通過主窗體調用其他窗體,具體實現可以參照系統分析相關內容。應用系統主控界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數據各分類的記錄進行查詢四、測試結果每一個case都能執行,但是有很多的地方都不夠完善,例如:在總成績排序中,只能輸出總成績,不能單獨的輸出學生的相應的信息;每次進行別的操作之前都要在進行一次數據的錄入,不能直接對原有的文件進行讀取。五、總結此次c+課程設計,在指導教師的精心教導下,我們學會了如何用C+編寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系統分析與系統設計,最后是代碼設計與調試。
6、程序實現上,設計了簡單的查詢界面,將各個功能集中出來按照程序編寫原則,便于查詢。根據C+課程所學的概念、理論和方法,按照C+程序設計的基本步驟,設計出一個適當規模的程序;進一步加深對C+語言的理解和掌握。理論聯系實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進,才能更好提高編程能力。六、參考資料C+程序設計 譚浩強 清華大學出版社附錄:源程序 #include<iostream> #include<string> #include<fstream>#in
7、clude<sstream>#include<iomanip>using namespace std; class Tstu /通過定義一個類來定義數據錄入的函數 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();/得到總分的函數 float getaver(); /得到平均分的函數 friend void main();
8、/將主函數定義為友元函數,方便訪問類中的成員 ; Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到學號 math=ma; /得到數學成績 cpp=cj; /得到c+成績 english=eng; /得到英語成績 float Tstu:getsum() /得到總分的函數 sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函數 average=getsum()/3; return
9、average; void main() cout<<"*歡迎來到學生成績查詢系統*"<<endl; cout<<"請選擇您需要的操作!"<<endl; /菜單的輸出 cout<<"操作:"<<endl; cout<<"(1)數據錄入"<<endl; cout<<"(2)增加學生"<<endl; cout<<"(3)刪除學生"<<en
10、dl; cout<<"(4)修改數據"<<endl; cout<<"查詢:"<<endl; cout<<"(5)按總成績查詢"<<endl; cout<<"(6)按姓名查詢"<<endl; cout<<"(7)輸出所有學生的數據"<<endl; cout<<"成績統計:"<<endl; cout<<"(8)每個學
11、生的平均成績"<<endl; cout<<"(9)各科不及格人數"<<endl; cout<<"排名:"<<endl; cout<<"(10)按總分查詢排名"<<endl; cout<<"(11)退出"<<endl; cout<<"選擇相關操作請輸入相對的括號里的阿拉伯數字及字母!"<<endl; int p=0; /全局變量,用于選擇菜單時的輸入 cha
12、r w;/全局變量,用于在大項中選擇是否繼續操作 Tstu *s100; /類定義的指針將所錄入的數據按類中的形式分別存儲 ofstream *file100; int i=0; /全局變量,用于做每個錄入數據的下標 int j=0; int chris1=0; /用于判斷dowhile語句 do /判斷輸入是否正確 cin>>p; if(p>=1&&p<=11) chris1=1; else cout<<"指令錯誤!請重新輸入:"<<endl; while(chris1=0); do switch(p) ca
13、se 1: /數據的錄入 char c; /用于在小項中選擇是否繼續操作 char name20; int number; float math,cpp,english; do cout<<"請輸入姓名:"<<endl; cin>>name; cout<<"請輸入學號:"<<endl; cin>>number; cout<<"請輸入數學成績:"<<endl; cin>>math; cout<<"請輸入C+成
14、績:"<<endl; cin>>cpp; cout<<"請輸入英語成績:"<<endl; cin>>english; fstream outfile,infile; /作一個文本文檔在文件夾中用于顯示所錄入的數據 outfile.open("f1.txt",ios:out|ios:app); if(!file) cout<<"f1.txt can not open.n" return; outfile<<name<<"
15、"<<"學號:"<<number<<" "<<"數學成績:"<<math<<" "<<"C+成績:"<<cpp<<" "<<"外語成績:"<<english<<endl; outfile.close(); infile.open("f1.txt",ios:in); if(!file)
16、/判斷文件是否打開 cout<<"f1.txt can not open.n" return; char ch; while(infile.get(ch) cout<<ch; cout<<endl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl; cin>>c; chris1=0; do if(c!='y'&a
17、mp;&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; else chris1=1; while(chris1=0); while(c='y'); /重復輸入 break; case 2: /增加學生數據 char name20; int number; float math,cpp,english; char c; do cout<<"請輸入您要增加的學生的姓名:"<<endl; cin>>name; c
18、out<<"請輸入你要增加的學生的學號:"<<endl; cin>>number; cout<<"請輸入數學成績:"<<endl; cin>>math; cout<<"請輸入C+成績:"<<endl; cin>>cpp; cout<<"請輸入英語成績:"<<endl; cin>>english; fstream outfile,infile; outfile.open(&q
19、uot;f1.txt",ios:out|ios:app); if(!file) cout<<"f1.txt can not open.n" return; outfile<<name<<" "<<"學號:"<<number<<" "<<"數學成績:"<<math<<" "<<"C+成績:"<<cpp<<&
20、quot; "<<"外語成績:"<<english<<endl; outfile.close(); infile.open("f1.txt",ios:in); if(!file) cout<<"f1.txt can not open.n" return; char h; while(infile.get(h) cout<<h; cout<<endl; infile.close(); j+; si=new Tstu(name,number, math, c
21、pp, english); i+; cout<<"數據錄入成功,想繼續錄入嗎(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; while(c='y'); break; case 3:/刪除學生信息 char c; string xingming,line,str,name; do ifstream fin("f
22、1.txt"); fstream outfile("f2.txt",ios:trunc|ios:out); /作一個文本文檔在文件夾中用于顯示所錄入的數據 cout<<"請輸入您要刪除的學生的姓名:"<<endl; cin>>xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find(" ",0);/找到名字,判斷是否相等 if(name
23、 != xingming) outfile<<line<<endl; outfile.close(); fin.close(); fstream f("f1.txt",ios:trunc|ios:out); ifstream outf("f2.txt"); f<<outf.rdbuf(); outf.close(); f.close(); cout<<"數據刪除成功,想繼續刪除嗎(y/n)"<<endl; cin>>c; if(c!='y'&
24、;&c!='n') cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; while(c='y'); break; case 4:/修改數據 string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break;do flag=0; cout<<"請輸入您要修改的學
25、生的姓名:" cin>>name; fstream fin("f1.txt",ios:in); ofstream outfile("f.txt",ios:trunc|ios:out); cout<<endl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find(" ",0);if(name!=sname)outfile<<line&
26、lt;<endl;else flag=1; fin.close(); if(flag=1) cout<<"請輸入修改學生姓名及其新學號,數學,c+和英語成績:"cin>>name>>nu>>ma>>com>>eng;cout<<endl;outfile<<name<<" "<<"學號:"<<nu<<" "<<"數學成績:"<<
27、;ma<<" "<<"C+成績:"<<com<<" "<<"外語成績:"<<eng<<endl; outfile.close();fstream outf("f1.txt",ios:trunc|ios:out);fstream inf("f.txt",ios:in);outf<<inf.rdbuf()<<endl;outf.close();inf.close(); if
28、(flag=0)cout<<"對不起,您要修改的學生不存在!請查證后輸入!"<<endl; cout<<"想繼續修改嗎(y/n):" cin>>c; cout<<endl; if(c!='y'&&c!='n') cout<<" 指令錯誤!請重新輸入!"<<endl<<" "cin>>c; while(c='y');break; case 5:/按
29、總分查詢 int j=0;float SUM;char c;int flag; if(i=0)cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break; do flag=0; cout<<"請輸入您要查詢的學生的總成績:"<<endl; cin>>SUM; for(int j=0;j<i;j+) if(sj->getsum()=SUM) flag=1;cout<<"您要查詢的學生是:"<<(*sj).name<<
30、;endl;cout<<"該生的信息為:"<<endl;cout<<" 學號:"<<(*sj).number<<" 數學分數:"<<(*sj).math<<" c+分數:"<<(*sj).cpp<<" 英語分數"<<(*sj).english<<endl; if(flag=0)cout<<"對不起!您要查詢的學生不存在!"<&l
31、t;endl;cout<<"是否繼續查?(y/n):"cin>>c;if(c!='y'&&c!='n')cout<<"指令錯誤!請重新輸入!"<<endl; cin>>c; ; while(c='y'); break; case 6:/按姓名查詢 char n20;char c;int j=0;int flag; if(i=0)cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl
32、;break; do flag=0; cout<<"請輸入要查詢的名字: "<<endl; cin>>n; for(int j=0;j<i;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout<<"您要查詢的學生是:"<<(*sj).name<<endl;cout<<"該生的信息是:學號:"<<(*sj).number<<" 數學分數:"<<(*sj).math
33、<<"c+分數:"<<(*sj).cpp<<"英語分數:"<<(*sj).english<<endl; if(flag=0)cout<<"對不起您要查詢的學生不存在,請查證后再輸入!"<<endl;cout<<"您想繼續查詢嗎?(y/n):"cin>>c;if(c!='y'&&c!='n')cout<<"指令錯誤!請重新輸入:"&
34、lt;<endl;cin>>c; while(c='y'); break; case 7:/輸出所有學生數據 cout<<"所有學生數據如下:"<<endl; ifstream file; file.open("f1.txt",ios:in); cout<<file.rdbuf(); file.close(); break; case 8:/統計每個學生的平均成績 if(i=0) cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl
35、;break; for(int m=0;m<i;m+) cout<<(*sm).name<<" 學號:"<<(*sm).number<<" 總分:"<<(*sm).getsum()<<" 均分:"<<(*sm).getaver()<<endl; break; case 9:/統計各學科不及格人數 if(i=0) cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break; i
36、nt m,n,k,j;m=0;n=0;k=0; for(j=0;j<i;j+) if(sj->math<60)m+; if(sj->cpp<60)n+; if(sj->english<60)k+; cout<<"數學不及格人數為:"<<m<<endl; cout<<"c+不及格人數為:"<<n<<endl; cout<<"英語不及格人數為:"<<k<<endl; break; case 10:/按總分排名 if(i=0)cout<<"系統中沒有輸入數據,請先輸入數據!"<<endl;break; int h,g,n;int j=0;float a100,temp; for(g=0;g<i;g+) aj=(*sg).getsum();j+; for(h=0;h<i;h+) for(n=0;n<i-h;n+) if(a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掌握項目時間管理技巧試題及答案
- 注冊會計師考試專題試題及答案
- 真人圖書執行方案范本
- 2024項目管理項目實施方案試題及答案
- 2024年項目管理考試實踐試題及答案
- 項目管理中的溝通與反饋機制試題及答案
- 2024年項目評估的標準題目及答案
- 地鐵拱蓋法施工方案
- 知識點全面覆蓋園藝師試題及答案
- 園林金屬工具生產工藝流程優化考核試卷
- 社區便利店計劃書
- 人工智能的風險與挑戰
- 基層紀檢委員培訓課件
- 信息論與編碼期末考試題(全套)
- 肺癌麻醉科教學查房
- 氣體檢測系統中英文對照外文翻譯文獻
- 死亡病例監測報告督導記錄表
- 綠化自動滴灌系統施工方案
- 車站信號自動控制教案-TYJL-ADX型計算機聯鎖系統組成及功能
- 爐壁溫度計算詳解
- 綠色建筑驗收自評報告全
評論
0/150
提交評論