《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(34頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 河南工程學(xué)院《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 成果報(bào)告 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)號: 學(xué)生姓名: 學(xué) 院: 計(jì)算機(jī)學(xué)院 專業(yè)班級: 軟件工程1341 專業(yè)課程: 《高級程序設(shè)計(jì)語言》 指導(dǎo)教師: 2014 年 6 月 27 日 題 目 學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 考核項(xiàng)目 考核內(nèi)容 得分 平時(shí)考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力 系統(tǒng)設(shè)計(jì)
2、 (20分)分析系統(tǒng)的功能模塊 編程調(diào)試 (20分)實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊,并完成調(diào)試 回答問題 (15分)回答老師針對課程設(shè)計(jì)提出的問題 課程設(shè)計(jì)報(bào)告撰寫 (10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報(bào)告 源代碼 (5分)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版 總 評 成 績 指導(dǎo)教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設(shè)計(jì)目的和要求 1 1.1 設(shè)計(jì)的目的 1 1.2 設(shè)計(jì)的要求 1 1
3、.3 設(shè)計(jì)的背景 1 第2章 系統(tǒng)實(shí)現(xiàn)思路 3 2.1 需求分析 3 2.2 系統(tǒng)性能要求 3 2.3 模塊框圖 3 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 4 3.1 類的設(shè)計(jì) 4 3.2 功能函數(shù)的設(shè)計(jì) 5 3.3 主函數(shù)的設(shè)計(jì) 14 第4章 系統(tǒng)調(diào)試運(yùn)行 18 4.1 逐步調(diào)試 18 4.2 分級調(diào)試 18 課程設(shè)計(jì)體會(huì) 20 參考文獻(xiàn) 21 第1章 課程設(shè)計(jì)目的和要求 1.1 課程設(shè)計(jì)目的 (1)將學(xué)到的面向?qū)ο蟮某绦蛟O(shè)計(jì)思想用到工作和學(xué)習(xí)中,加深對類與對象的理解。通過課程設(shè)計(jì),能夠提高學(xué)生分析解決問題能力,從而運(yùn)用所學(xué)知識解決實(shí)際問題的能力。 (2)進(jìn)一
4、步深化掌握C++語言的基本知識;掌握結(jié)構(gòu)化程序設(shè)計(jì)的方法和技巧,了解算法分析與設(shè)計(jì)概念;運(yùn)用面向?qū)ο蟪绦蛟O(shè)計(jì)方法進(jìn)行程序設(shè)計(jì)。 1.2課程設(shè)計(jì)要求 根據(jù)提供的實(shí)習(xí)題目,完成軟件設(shè)計(jì)的全部過程,并以最終軟件設(shè)計(jì)成果來證明其完成實(shí)際任務(wù)的能力,完成軟件設(shè)計(jì)和程序調(diào)試并提交文檔:課程設(shè)計(jì)報(bào)告書,報(bào)告書中包含設(shè)計(jì)的算法及部分程序代碼。 1.3課程設(shè)計(jì)題目 (1)設(shè)計(jì)四個(gè)類;學(xué)生類(描述學(xué)生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱(如高等數(shù)學(xué),大學(xué)英語等);學(xué)生成績及課程信息用文件保存,每個(gè)類一個(gè)文件,程序執(zhí)行時(shí)從文件讀入; (2)能按學(xué)期,按班級完成對學(xué)生成績的
5、錄入,修改,能按班級統(tǒng)計(jì)學(xué)生的成績;求學(xué)生的總分及平均分;并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時(shí)成績、期末成績、平時(shí)成績所占百分比 計(jì)算學(xué)生總評成績:總評成績=平時(shí)成績*平時(shí)成績所占百分比+期末成績*(1-平時(shí)成績所占百分比) 顯示學(xué)生的姓名、所選課程名稱以及平時(shí)成績、期末成績和總評成績信息 分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少一個(gè)班,30人三門課 第2章 系統(tǒng)實(shí)現(xiàn)思路 2.1需求分析 根據(jù)對題目的分析,程序所需要的功能大概非為如下
6、幾種: (1)能對學(xué)生各科成績進(jìn)行錄入:。 (2)能對學(xué)生的成績進(jìn)行刪除。 (3)能對學(xué)生的成績進(jìn)行修改。 (4)能對學(xué)生的成績按總成績,姓名,進(jìn)行查詢。 (5)能輸出學(xué)生的所有數(shù)據(jù)。 (6)能進(jìn)行成績統(tǒng)計(jì) (7)能進(jìn)行總分查詢排名。 2.2系統(tǒng)性能要求 要對于程序的整體把握,宏觀的規(guī)劃程序,所以對系統(tǒng)的性能要有以下的要求: (1)系統(tǒng)安全、可靠; (2)功能齊全; (3)操作方便、界面友好; (4)易于維護(hù)和擴(kuò)充; 2.3模塊框圖 為了方便算法的完成,應(yīng)該先畫出模塊框圖,并根據(jù)框圖進(jìn)行算法的編寫和程序的規(guī)劃。 學(xué)生成績管理系統(tǒng) 操作
7、 查詢 成績統(tǒng)計(jì) 按總成績排名 錄入 增加 刪除 修改 總成績查詢 姓名 每個(gè)學(xué)生的平均成績 各科不及格的人數(shù) 輸出所有學(xué)生的成績 圖2—1 模塊框圖 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 3.1類的設(shè)計(jì) 設(shè)計(jì)兩個(gè)類,其一為Student類,包含了需要錄入和使用的數(shù)據(jù),另一個(gè)為Function類,包含了功能函數(shù)的聲明。并且將這兩個(gè)類封裝在一個(gè)頭文件中。 學(xué)生類: //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(); //輸出所有學(xué)生的數(shù)據(jù) void show_average(); //每個(gè)學(xué)生的平均成績 void show_num(); //各科不及格人數(shù) void show(); //按總分查詢排名 int end();//結(jié)束 }; 3.2功能函數(shù)設(shè)計(jì) 將功能函數(shù)封裝在同一個(gè)cpp(Fucti
10、on.cpp)文件中,理清程序的條理,降低主函的冗雜性,便于程序的編寫和調(diào)試,同時(shí)增加程序的隱蔽性。(Student類中的兩個(gè)功能函數(shù),即getsum()和getaver()兩個(gè)簡單的功能函數(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<<"請輸入學(xué)號:"< 12、
if(!outfile) //判斷文件是否打開
{ cerr<<"f1.txt can not open"< 13、udent(name, number,math, cpp, english);
i++;
cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎e(y/n)"< 14、 chris1=1;
}
while(chris1==0);
}while(c=='y'); //重復(fù)輸入
}
(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); //作一個(gè)文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) 15、
cout<<"請輸入您要?jiǎng)h除的學(xué)生的姓名:"< 16、e< 17、 cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯(cuò)誤!請重新輸入!”< 18、0;
cout<<"請輸入您要修改的學(xué)生的姓名:";
cin>>name;
fstream fin("f1.txt",ios::in);
ofstream outfile("f.txt",ios::trunc|ios::out);
cout< 19、
outfile< 20、ios::trunc|ios::out);
fstream inf("f.txt",ios::in);
outf< 21、earch_sum() //按總成績查詢
{
float SUM;char c;int flag;
{
flag=0;
cout<<"請輸入您要查詢的學(xué)生的總成績¨:"< 22、<<" c++分?jǐn)?shù):"<<(*S[j]).cpp<<" 英語分?jǐn)?shù)"<<(*S[j]).english< 23、[20];char c;int flag;
flag=0;
cout<<"請輸入要查詢的名字: "< 24、
}
if(flag==0)
cout<<"對不起您要查詢的學(xué)生不存在,請查證后再輸入!"< 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ù)學(xué)不及格人數(shù)為:"< 27、< 28、< 29、ring>
#include 30、(1)數(shù)據(jù)錄入"< 31、((a>=1&&a<=11))
b=1;
else
cout<<"指令錯(cuò)誤!請重新輸入:"< 32、) {f.show_student_date();}//輸出所有學(xué)生的數(shù)據(jù)
if(a==7) {f.show_average();} //每個(gè)學(xué)生的平均成績
if(a==8) {f.show_num();}//各科不及格人數(shù)
if(a==9) {f.show();}//按總分查詢排名
if(a==10) {f.end();}//結(jié)束
}while(b==0);
cout<<" 您想繼續(xù)進(jìn)行其他操作嗎?(y/n):"< 33、;
if(w!='y'&&w!='n')
cout<<" 指令錯(cuò)誤!請重新輸入!"< 34、
操作界面:
圖4—1 操作界面
功能1:數(shù)據(jù)錄入:
圖4—2數(shù)據(jù)錄入
功能2:刪除學(xué)生信息:
圖4—3刪除信息
課程設(shè)計(jì)體會(huì)
本次實(shí)踐,是第一次使用C++編寫有實(shí)際使用功能的應(yīng)用程序。這次實(shí)踐的過程,也是對C++的一次摸索的過程。通過本次實(shí)踐,我的C++編程思路變得更加明確。
本次實(shí)踐中,我還懂得了程序開發(fā)的一些重要步驟,比如需求分析、總體設(shè)計(jì)、程序模塊設(shè)計(jì)等。
在此次實(shí)踐之前,我對C++的理解認(rèn)識有不足之處,某些知識點(diǎn)的掌握并不牢固。此次實(shí)踐,使用到了很多先前學(xué)習(xí)的編程技巧和C++知識,等于一次變相的綜合復(fù)習(xí),對我C++語言的使用能力有了不錯(cuò)的 35、提升。
參考文獻(xiàn)
[1]譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》.清華大學(xué)出版社
[2]譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計(jì)題解與上機(jī)指導(dǎo)》.清華大學(xué)出版社
[3]譚浩強(qiáng).《C++程序設(shè)計(jì)實(shí)踐指導(dǎo)》.清華大學(xué)出版社
[4]譚浩強(qiáng).《C語言程序設(shè)計(jì)》.清華大學(xué)出版社
[5]《大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)案例教程》
[6]《計(jì)算機(jī)信息技術(shù)基礎(chǔ)教程》
[7]《計(jì)算機(jī)與信息技術(shù)應(yīng)用指導(dǎo)》
//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(); //輸出所有學(xué)生的數(shù)據(jù)
void show_average(); //每個(gè)學(xué)生的平均成績
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<<"請輸入姓名:"< 39、 cin>>cpp;
cout<<"請輸入英語成績¨:"< 40、 "<<"C++成績¨:"< 41、 if(c!='y'&&c!='n')
{ cout<<"指令錯(cuò)洙誤請重新輸入!"< 42、eam fin("f1.txt");
fstream outfile("f2.txt",ios::trunc|ios::out); //作一個(gè)文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
cout<<"請輸入您要?jiǎng)h除的學(xué)生的姓名:"< 43、.substr(0,line.find(" ",0));//找到名字,判斷是否相等
if(name != xingming)
outfile< 44、 outf.close();
f.close();
cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎e(y/n)"< 45、e,line,str,name;
int nu;float eng,ma,com;int flag;char c;
do
{
flag=0;
cout<<"請輸入您要修改的學(xué)生的姓名:";
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< 47、績¨:"< 48、 ";
cin>>c;
}
}while(c=='y');
}
void Fuction::search_sum() //按總成績查詢
{
float SUM;char c;int flag;
{
flag=0;
cout<<"請輸入您要查詢的學(xué)生的總成績¨:"< 49、;
cout<<" 學(xué)號:"<<(*S[j]).number<<" 數(shù)學(xué)分?jǐn)?shù):"<<(*S[j]).math<<" c++分?jǐn)?shù):"<<(*S[j]).cpp<<" 英語分?jǐn)?shù)"<<(*S[j]).english< 50、:search_name() //按名字查詢
{
char n[20];char c;int flag;
flag=0;
cout<<"請輸入要查詢的名字: "< 51、<<"英語分?jǐn)?shù)"<<(*S[j]).english< 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ù)學(xué)不及格人數(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 56、ion f;//功能函數(shù)類
cout<<"請選擇您需要的操作"< 57、ut<<"(10)退出"< 58、
if(a==5) {f.search_name();}//按名字查詢
if(a==6) {f.show_student_date();}//輸出所有學(xué)生的數(shù)據(jù)
if(a==7) {f.show_average();} //每個(gè)學(xué)生的平均成績
if(a==8) {f.show_num();}//各科不及格人數(shù)
if(a==9) {f.show();}//按總分查詢排名
if(a==10) {f.end();}//結(jié)束
}while(b==0);
cout<<" 您想繼續(xù)進(jìn)行其他操作嗎?(y/n):"<
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公有云業(yè)務(wù)能力和應(yīng)用場景課件
- 第二章教育與人發(fā)展總結(jié)課件
- 2020年各平臺(tái)品牌藍(lán)V“成長”指南ppt課件
- 全能型生產(chǎn)主管資料
- 【人教版音樂】小學(xué)2二年級上冊:小貓釣魚-ppt課件
- 三叉神經(jīng)痛的治療護(hù)理常識課件
- 滿分作文:家有寵物(第二課時(shí))課件
- 莫言文學(xué)小說《檀香刑》讀書分享會(huì)
- 《小毛蟲》完整ppt課件
- 五年級下冊語文第一單元語文園地人教部編版課件
- 人教新課標(biāo)版五年級下語文同步備課資料包(ppt課件)-第七組:24.金錢的魔力
- 人教版五年級數(shù)學(xué)下冊5.1旋轉(zhuǎn)ppt課件
- 精算基礎(chǔ)知識課件
- 第七章--寶石的分類及命名課件
- 詠懷八十二首課件