《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)

上傳人:na****u 文檔編號:56908902 上傳時間:2022-02-22 格式:DOC 頁數(shù):34 大?。?22.50KB
收藏 版權(quán)申訴 舉報 下載
《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)_第1頁
第1頁 / 共34頁
《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)_第2頁
第2頁 / 共34頁
《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)_第3頁
第3頁 / 共34頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《《高級程序設計語言》課程設計 學生成績管理系統(tǒng)設計與實現(xiàn)(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 河南工程學院《高級程序設計語言》課程設計 成果報告 學生成績管理系統(tǒng)設計與實現(xiàn) 學生學號: 學生姓名: 學 院: 計算機學院 專業(yè)班級: 軟件工程1341 專業(yè)課程: 《高級程序設計語言》 指導教師: 2014 年 6 月 27 日 題 目 學生成績管理系統(tǒng)設計與實現(xiàn) 考核項目 考核內(nèi)容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應用能力、獲取知識能力 系統(tǒng)設計

2、 (20分)分析系統(tǒng)的功能模塊 編程調(diào)試 (20分)實現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試 回答問題 (15分)回答老師針對課程設計提出的問題 課程設計報告撰寫 (10分)嚴格按照規(guī)范要求完成課程設計報告 源代碼 (5分)按照規(guī)范要求完成課程設計源代碼的排版 總 評 成 績 指導教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設計目的和要求 1 1.1 設計的目的 1 1.2 設計的要求 1 1

3、.3 設計的背景 1 第2章 系統(tǒng)實現(xiàn)思路 3 2.1 需求分析 3 2.2 系統(tǒng)性能要求 3 2.3 模塊框圖 3 第3章 系統(tǒng)詳細設計 4 3.1 類的設計 4 3.2 功能函數(shù)的設計 5 3.3 主函數(shù)的設計 14 第4章 系統(tǒng)調(diào)試運行 18 4.1 逐步調(diào)試 18 4.2 分級調(diào)試 18 課程設計體會 20 參考文獻 21 第1章 課程設計目的和要求 1.1 課程設計目的 (1)將學到的面向?qū)ο蟮某绦蛟O計思想用到工作和學習中,加深對類與對象的理解。通過課程設計,能夠提高學生分析解決問題能力,從而運用所學知識解決實際問題的能力。 (2)進一

4、步深化掌握C++語言的基本知識;掌握結(jié)構(gòu)化程序設計的方法和技巧,了解算法分析與設計概念;運用面向?qū)ο蟪绦蛟O計方法進行程序設計。 1.2課程設計要求 根據(jù)提供的實習題目,完成軟件設計的全部過程,并以最終軟件設計成果來證明其完成實際任務的能力,完成軟件設計和程序調(diào)試并提交文檔:課程設計報告書,報告書中包含設計的算法及部分程序代碼。 1.3課程設計題目 (1)設計四個類;學生類(描述學生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數(shù)學,大學英語等);學生成績及課程信息用文件保存,每個類一個文件,程序執(zhí)行時從文件讀入; (2)能按學期,按班級完成對學生成績的

5、錄入,修改,能按班級統(tǒng)計學生的成績;求學生的總分及平均分;并能根據(jù)學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。 設置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 計算學生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) 顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息 分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少一個班,30人三門課 第2章 系統(tǒng)實現(xiàn)思路 2.1需求分析 根據(jù)對題目的分析,程序所需要的功能大概非為如下

6、幾種: (1)能對學生各科成績進行錄入:。 (2)能對學生的成績進行刪除。 (3)能對學生的成績進行修改。 (4)能對學生的成績按總成績,姓名,進行查詢。 (5)能輸出學生的所有數(shù)據(jù)。 (6)能進行成績統(tǒng)計 (7)能進行總分查詢排名。 2.2系統(tǒng)性能要求 要對于程序的整體把握,宏觀的規(guī)劃程序,所以對系統(tǒng)的性能要有以下的要求: (1)系統(tǒng)安全、可靠; (2)功能齊全; (3)操作方便、界面友好; (4)易于維護和擴充; 2.3模塊框圖 為了方便算法的完成,應該先畫出模塊框圖,并根據(jù)框圖進行算法的編寫和程序的規(guī)劃。 學生成績管理系統(tǒng) 操作

7、 查詢 成績統(tǒng)計 按總成績排名 錄入 增加 刪除 修改 總成績查詢 姓名 每個學生的平均成績 各科不及格的人數(shù) 輸出所有學生的成績 圖2—1 模塊框圖 第3章 系統(tǒng)詳細設計 3.1類的設計 設計兩個類,其一為Student類,包含了需要錄入和使用的數(shù)據(jù),另一個為Function類,包含了功能函數(shù)的聲明。并且將這兩個類封裝在一個頭文件中。 學生類: //Student.h class Student { protected: char name[20]; int number; double math,cpp,engli

8、sh,average,sum; public: Student(){}; Student ( char n[20], int num,double m,double c,double e ) ; double getsum(); //得到總分的函數(shù) double getaver(); //得到平均分的函數(shù) friend class Fuction; }; 功能函數(shù)類: //Student.h class Fuction {public: void messin(); //錄入數(shù)據(jù) void

9、 delete(); //刪除信息 void change(); //修改數(shù)據(jù) void search_sum(); //按恪總成績查詢 void search_name(); //按名字查詢 void show_student_date(); //輸出所有學生的數(shù)據(jù) void show_average(); //每個學生的平均成績 void show_num(); //各科不及格人數(shù) void show(); //按總分查詢排名 int end();//結(jié)束 }; 3.2功能函數(shù)設計 將功能函數(shù)封裝在同一個cpp(Fucti

10、on.cpp)文件中,理清程序的條理,降低主函的冗雜性,便于程序的編寫和調(diào)試,同時增加程序的隱蔽性。(Student類中的兩個功能函數(shù),即getsum()和getaver()兩個簡單的功能函數(shù)在此處略去。) (1)錄入數(shù)據(jù)函數(shù)(用于錄入數(shù)據(jù),存放于文件中) void Fuction::messin () //錄入數(shù)據(jù) { char name[20]; char c; int number; double math,cpp,english; do{ cout<<"請輸入姓名:"<

11、 cin>>name; cout<<"請輸入學號:"<>number; cout<<"請輸入數(shù)學成績¨:"<>math; cout<<"請輸入C++成績¨:"<>cpp; cout<<"請輸入英語成績¨:"<>english; ofstream outfile("f1.txt",ios::out|ios::app);

12、 if(!outfile) //判斷文件是否打開 { cerr<<"f1.txt can not open"<

13、udent(name, number,math, cpp, english); i++; cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎e(y/n)"<>c; chris1=0; do{ //判斷是否繼續(xù)輸入 if(c!='y'&&c!='n') { cout<<"指令錯洙誤請重新輸入!"<>c; } else

14、 chris1=1; } while(chris1==0); }while(c=='y'); //重復輸入 } (2)刪除數(shù)據(jù)函數(shù)(用于刪除數(shù)據(jù)) void Fuction::delete() //刪除信息 { char c; string xingming,line,str,name; do { ifstream fin("f1.txt"); fstream outfile("f2.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)

15、 cout<<"請輸入您要刪除的學生的姓名:"<>xingming; while(!fin.eof() ) { getline(fin,line); istringstream stream(line); name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等 if(name != xingming) outfile<

16、e<

17、 cin>>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!”<>c; } }while(c=='y'); } (3)修改數(shù)據(jù)函數(shù)(用于錄入數(shù)據(jù)的修改) void Fuction::change() //修改數(shù)據(jù) { string sname,line,str,name; int nu;float eng,ma,com;int flag;char c; do { flag=

18、0; cout<<"請輸入您要修改的學生的姓名:"; cin>>name; fstream fin("f1.txt",ios::in); ofstream outfile("f.txt",ios::trunc|ios::out); cout<

19、 outfile<>name>>nu>>ma>>com>>eng; cout<

20、ios::trunc|ios::out); fstream inf("f.txt",ios::in); outf<>c; cout<>c; } }while(c=='y'); } (4)按總成績查詢函數(shù)(用于實現(xiàn)按總成績查詢) void Fuction::s

21、earch_sum() //按總成績查詢 { float SUM;char c;int flag; { flag=0; cout<<"請輸入您要查詢的學生的總成績¨:"<>SUM; for(int j=0;jgetsum()==SUM) { flag=1; cout<<"您要查詢的學生是:"<<(*S[j]).name<

22、<<" c++分數(shù):"<<(*S[j]).cpp<<" 英語分數(shù)"<<(*S[j]).english<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!"<>c; }; }while(c=='y'); } (5)按名字查詢函數(shù)(用于按名字查詢信息) void Fuction::search_name() //按名字查詢 { char n

23、[20];char c;int flag; flag=0; cout<<"請輸入要查詢的名字: "<>n; for(int j=0;j

24、 } if(flag==0) cout<<"對不起您要查詢的學生不存在,請查證后再輸入!"<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入:"<>c; } while(c=='y'); } (6)輸出學生所有的數(shù)據(jù)(用于輸出學生數(shù)據(jù)) void Fuction::show_student_date()//輸出所有學生的數(shù)據(jù) { cout<<"所有學生數(shù)據(jù)如?下?:"<

25、le.open("f1.txt",ios::in); cout<

26、 } } (8)各科不及格人數(shù)(用于輸出各科不及格人數(shù)) void Fuction::show_num()//各科不及格人數(shù) { int m,n,k; m=0; n=0; k=0; for(j=0;jmath<60)m++; if(S[j]->cpp<60)n++; if(S[j]->english<60)k++; } cout<<"數(shù)學不及格人數(shù)為:"<

27、<a[n+1]) { temp=a[n];a[n]=a[n+1];a[n+1]=temp; } } for(n=1;n<=i;n++) cout<

28、< #include #include

29、ring> #include #include #include"Student.h" using namespace std; //主函數(shù)需要的各個頭文件的聲明。 利用函數(shù)的遞歸調(diào)用,來實現(xiàn)函數(shù)的循環(huán),讓程序能夠在需要的情況下一直運行下去。 void menu() //利用遞歸調(diào)用實現(xiàn)循環(huán)的功能函數(shù)集合 { int a;//判斷變量 int b;//判斷變量 char w;//判斷變量 Fuction f;//功能函數(shù)類 cout<<"請選擇您需要的操作"<

30、(1)數(shù)據(jù)錄入"<>a; //判斷輸入是否正確 if

31、((a>=1&&a<=11)) b=1; else cout<<"指令錯誤!請重新輸入:"<

32、) {f.show_student_date();}//輸出所有學生的數(shù)據(jù) if(a==7) {f.show_average();} //每個學生的平均成績 if(a==8) {f.show_num();}//各科不及格人數(shù) if(a==9) {f.show();}//按總分查詢排名 if(a==10) {f.end();}//結(jié)束 }while(b==0); cout<<" 您想繼續(xù)進行其他操作嗎?(y/n):"<>w; cout<

33、; if(w!='y'&&w!='n') cout<<" 指令錯誤!請重新輸入!"<

34、 操作界面: 圖4—1 操作界面 功能1:數(shù)據(jù)錄入: 圖4—2數(shù)據(jù)錄入 功能2:刪除學生信息: 圖4—3刪除信息 課程設計體會 本次實踐,是第一次使用C++編寫有實際使用功能的應用程序。這次實踐的過程,也是對C++的一次摸索的過程。通過本次實踐,我的C++編程思路變得更加明確。 本次實踐中,我還懂得了程序開發(fā)的一些重要步驟,比如需求分析、總體設計、程序模塊設計等。 在此次實踐之前,我對C++的理解認識有不足之處,某些知識點的掌握并不牢固。此次實踐,使用到了很多先前學習的編程技巧和C++知識,等于一次變相的綜合復習,對我C++語言的使用能力有了不錯的

35、提升。 參考文獻 [1]譚浩強.《C++面向?qū)ο蟪绦蛟O計》.清華大學出版社 [2]譚浩強.《C++面向?qū)ο蟪绦蛟O計題解與上機指導》.清華大學出版社 [3]譚浩強.《C++程序設計實踐指導》.清華大學出版社 [4]譚浩強.《C語言程序設計》.清華大學出版社 [5]《大學計算機應用基礎案例教程》 [6]《計算機信息技術(shù)基礎教程》 [7]《計算機與信息技術(shù)應用指導》 //Student.h class Student { protected: char name[20]; int number; double math,cpp,english,av

36、erage,sum; public: Student(){}; Student ( char n[20], int num,double m,double c,double e ) ; double getsum(); //得到總分的函數(shù) double getaver(); //得到平均分的函數(shù) friend class Fuction; }; //Student.h class Fuction {public: void putin(); //錄入數(shù)據(jù) void dele();

37、 //刪除信息 void change(); //修改數(shù)據(jù) void search_sum(); //按恪總成績查詢 void search_name(); //按名字查詢 void show_student_date(); //輸出所有學生的數(shù)據(jù) void show_average(); //每個學生的平均成績 void show_num(); //各科不及格人數(shù) void show(); //按總分查詢排名 int end();//結(jié)束 }; void Fuction::putin () //錄入數(shù)據(jù) {

38、 char name[20]; char c; int number; double math,cpp,english; do{ cout<<"請輸入姓名:"<>name; cout<<"請輸入學號:"<>number; cout<<"請輸入數(shù)學成績¨:"<>math; cout<<"請輸入C++成績¨:"<

39、 cin>>cpp; cout<<"請輸入英語成績¨:"<>english; ofstream outfile("f1.txt",ios::out|ios::app); if(!outfile) //判斷文件是否打開 { cerr<<"f1.txt can not open"<

40、 "<<"C++成績¨:"<>c; chris1=0; do{ //判斷是否繼續(xù)輸入

41、 if(c!='y'&&c!='n') { cout<<"指令錯洙誤請重新輸入!"<>c; } else chris1=1; } while(chris1==0); }while(c=='y'); //重復輸入 } void Fuction::dele() //刪除信息 { char c; string xingming,line,str,name; do { ifstr

42、eam fin("f1.txt"); fstream outfile("f2.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) cout<<"請輸入您要刪除的學生的姓名:"<>xingming; while(!fin.eof() ) { getline(fin,line); istringstream stream(line); name = line

43、.substr(0,line.find(" ",0));//找到名字,判斷是否相等 if(name != xingming) outfile<

44、 outf.close(); f.close(); cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎e(y/n)"<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!”<>c; } }while(c=='y'); } void Fuction::change() //修改數(shù)據(jù) { string snam

45、e,line,str,name; int nu;float eng,ma,com;int flag;char c; do { flag=0; cout<<"請輸入您要修改的學生的姓名:"; cin>>name; fstream fin("f1.txt",ios::in); ofstream outfile("f.txt",ios::trunc|ios::out); cout<

46、tream(line); sname = line.substr(0,line.find(" ",0)); if(name!=sname) { outfile<>name>>nu>>ma>>com>>eng; cout<

47、績¨:"<>c; cout<

48、 "; cin>>c; } }while(c=='y'); } void Fuction::search_sum() //按總成績查詢 { float SUM;char c;int flag; { flag=0; cout<<"請輸入您要查詢的學生的總成績¨:"<>SUM; for(int j=0;jgetsum()==SUM) { flag=1; cout<<"您要查詢的學生是:"<<(*S[j]).name<

49、; cout<<" 學號:"<<(*S[j]).number<<" 數(shù)學分數(shù):"<<(*S[j]).math<<" c++分數(shù):"<<(*S[j]).cpp<<" 英語分數(shù)"<<(*S[j]).english<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入!"<>c; }; }while(c=='y'); } void Fuction:

50、:search_name() //按名字查詢 { char n[20];char c;int flag; flag=0; cout<<"請輸入要查詢的名字: "<>n; for(int j=0;j

51、<<"英語分數(shù)"<<(*S[j]).english<>c; if(c!='y'&&c!='n') { cout<<"指令錯誤!請重新輸入:"<>c; } while(c=='y'); } void Fuction::show_student_date()//輸出所有學生的數(shù)據(jù) { cout<<"所有學生數(shù)據(jù)如?下?:"<

52、file; file.open("f1.txt",ios::in); cout<

53、uction::show_num()//各科不及格人數(shù) { int m,n,k; m=0; n=0; k=0; for(j=0;jmath<60)m++; if(S[j]->cpp<60)n++; if(S[j]->english<60)k++; } cout<<"數(shù)學不及格人數(shù)為:"<

54、名 { int h,g,n;float a[100],temp; for(g=0;ga[n+1]) { temp=a[n];a[n]=a[n+1];a[n+1]=temp; } } for(n=1;n<=i;n++) cout<

55、eturn 0; } //main.cpp #include #include #include #include #include #include"Student.h" using namespace std; //主函數(shù)需要的各個頭文件的聲明。 void menu() //利用遞歸調(diào)用實現(xiàn)循環(huán)的功能函數(shù)集合 { int a;//判斷變量 int b;//判斷變量 char w;//判斷變量 Fuct

56、ion f;//功能函數(shù)類 cout<<"請選擇您需要的操作"<

57、ut<<"(10)退出"<>a; //判斷輸入是否正確 if((a>=1&&a<=11)) b=1; else cout<<"指令錯誤!請重新輸入:"<

58、 if(a==5) {f.search_name();}//按名字查詢 if(a==6) {f.show_student_date();}//輸出所有學生的數(shù)據(jù) if(a==7) {f.show_average();} //每個學生的平均成績 if(a==8) {f.show_num();}//各科不及格人數(shù) if(a==9) {f.show();}//按總分查詢排名 if(a==10) {f.end();}//結(jié)束 }while(b==0); cout<<" 您想繼續(xù)進行其他操作嗎?(y/n):"<>w; cout<

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!