高級程序設(shè)計語言課程設(shè)計- -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)
《高級程序設(shè)計語言課程設(shè)計- -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《高級程序設(shè)計語言課程設(shè)計- -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)(39頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 河南工程學(xué)院《高級程序設(shè)計語言》課程設(shè)計 成果報告 學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 學(xué)生學(xué)號: 學(xué)生姓名: 學(xué) 院: 計算機學(xué)院 專業(yè)班級: 軟件工程1341班 專業(yè)課程: 《高級程序設(shè)計語言》 指導(dǎo)教師: 2014 年 6 月 27 日 題 目 學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 考核項目 考核內(nèi)容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力 系統(tǒng)設(shè)計
2、(20分)分析系統(tǒng)的功能模塊 編程調(diào)試 (20分)實現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試 回答問題 (15分)回答老師針對課程設(shè)計提出的問題 課程設(shè)計報告撰寫 (10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計報告 源代碼 (5分)按照規(guī)范要求完成課程設(shè)計源代碼的排版 總 評 成 績 指導(dǎo)教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設(shè)計目的 4 1.1課程設(shè)計的要求 4 1.2課程設(shè)計的目的 4 第2章
3、 系統(tǒng)實現(xiàn)思路 5 2.1系統(tǒng)的需求分析 5 2.2系統(tǒng)的功能分析 5 2.3系統(tǒng)流程圖 6 第3章 系統(tǒng)詳細設(shè)計 7 3.1系統(tǒng)的界面設(shè)計 7 3.2功能設(shè)計與分析 7 第4章 系統(tǒng)調(diào)試運行 20 4.1主頁面 20 4.2錄入和增加功能 21 4.3刪除功能 22 4.4查詢功能 22 4.5查詢不及格人數(shù) 22 課程設(shè)計體會 23 參考文獻 24 第1章 系統(tǒng)設(shè)計目的 1.1課程設(shè)計的要求 (1)設(shè)計四個類,包括學(xué)生類(描述學(xué)生基本信息);成績類:班級類;課程類(描述課程信息:課程編號,科目名稱,如高等數(shù)學(xué),大學(xué)英語等); (2)學(xué)生成績
4、及課程信息用文件保存,程序執(zhí)行時從文件讀入; (3)能按學(xué)期,按班級完成對學(xué)生成績的錄入、修改,能按班級統(tǒng)計學(xué)生的成績; (4)求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 – 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 – 計算學(xué)生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) – 顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件) – 注意,至
5、少應(yīng)包含一個班、30人、三門課 。 1.2課程設(shè)計的目的 通過本課程設(shè)計,使自己運用C或C++語言實現(xiàn)所設(shè)計的算法,編寫較大型的程序,分析和解決實際應(yīng)用問題,進一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握C語言或C++語言獨立的編寫、調(diào)試應(yīng)用程序和進行其它相關(guān)設(shè)計的技能。 第2章 系統(tǒng)實現(xiàn)思路 2.1系統(tǒng)的需求分析 學(xué)生成績管理系統(tǒng)主要提供成績查詢,方便管理的網(wǎng)上的信息查詢平臺,學(xué)生可以通過該系統(tǒng)查閱與自己相關(guān)信息。教師可以通過成績管理統(tǒng)查閱學(xué)生成績信息等相關(guān)操作。系統(tǒng)管理員可以實現(xiàn)以上的所有功能,還有對學(xué)生的添加、刪
6、除、修改、等相關(guān)操作。 根據(jù)開發(fā)要求,學(xué)生成績管理系統(tǒng)主要應(yīng)用于教育系統(tǒng),完成對日常的教學(xué)教務(wù)、教師以及學(xué)生的計算機化的管理。開發(fā)學(xué)生成績管理系統(tǒng)可使學(xué)院教職員減輕工作壓力,比較系統(tǒng)地對教務(wù)、教學(xué)上的各項服務(wù)和信息進行管理,同時,可以減少勞動力的使用,加快查詢速度、加強管理,以及國家各部門關(guān)于信息化的步伐,使各項管理更加規(guī)范化。目前,學(xué)校工作繁雜、資料重多。目前,管 理信息系統(tǒng)已進入高校,但還未普及,而對于學(xué)生成績管理來說,目前還沒有一套完整的、統(tǒng)一的系統(tǒng)。因此,開發(fā)一套適和大眾的、兼容性好的系統(tǒng)是很有必要的。 2.2系統(tǒng)的功能分析 系統(tǒng)類設(shè)計: (1)學(xué)生類用于存放基本個人信息;
7、 (2)課程類用于存放課程信息; (3)班級類用于分類班級; (4)成績類用于存放成績。 功能分析: (1)能對學(xué)生各科成績進行錄入; (2)能對學(xué)生的成績進行增加; (3)能對學(xué)生的成績進行刪除; (4)能對學(xué)生的成績進行修改; (5)能對學(xué)生的成績按總成績,姓名,進行查詢; (6)能輸出學(xué)生的所有數(shù)據(jù); (7)能進行成績統(tǒng)計; (8)能進行總分查詢排名。 2.3系統(tǒng)流程圖 “學(xué)生成績管理系統(tǒng)”包括十一個模塊:學(xué)生數(shù)據(jù)錄入,增加學(xué)生,刪除學(xué)生,修改數(shù)據(jù) ,按總成績查詢 ,按姓名查詢 ,輸出所有學(xué)生的數(shù)據(jù) ,每個學(xué)生平均成績,各科不及格人數(shù),按總分查詢排名及退出系統(tǒng)。
8、這十一個模塊既有聯(lián)系又相互獨立。
系統(tǒng)流程圖:
開始
主界面
數(shù)據(jù)錄入
修改數(shù)據(jù)
刪除學(xué)生
增加學(xué)生
按總成績查詢
每個學(xué)生的平均成績
按姓名查詢
各科不及格人數(shù)
按總分查詢排名
退出本系統(tǒng)
輸出所有學(xué)生
結(jié)束
圖2-1 系統(tǒng)流程圖
第3章 系統(tǒng)詳細設(shè)計
3.1系統(tǒng)的界面設(shè)計
程序運行后會出現(xiàn)一個簡捷的窗口,便于用戶查詢數(shù)據(jù)。
定義菜單函數(shù),通過輸出函數(shù)顯示系統(tǒng)功能。
代碼:
cout<<"*****************歡迎來到學(xué)生成績查詢系統(tǒng)*****************"< 9、endl; //菜單的輸出
cout<<"操作:"< 10、(9)各科不及格人數(shù)"< 11、績
float getshu();//數(shù)學(xué)總評成績
float getcpp();//c總評成績
float geteng();//英語總評成績
float getaver();//總平均成績
(2)main()函數(shù)的設(shè)計。
在main()函數(shù)中主要運用do-while循環(huán)語句和switch()-case選擇判斷語句來調(diào)用相關(guān)功能模塊。系統(tǒng)的運行是在一個永真的循環(huán)里進行的,只有在主界面并選擇“退出”時,才會跳出永真循環(huán),并退出程序。
(3)程序類的構(gòu)造與繼承。
基類class student和class kecheng用來封裝學(xué)生的所有信息具體見代碼分析。派生類class c 12、hengji繼承了兩個類的所有數(shù)據(jù),同時增加了自己的成員,并添加了多個函數(shù)。Main()用來實現(xiàn)所有的操作以及對程序的整體控制;定義文件輸入流對象in和輸出流對象out,實現(xiàn)對外部文件的操作,使得數(shù)據(jù)得以保存。
程序代碼
class Student //聲明學(xué)生類
{public:
Student(int n,char nu[20]) //構(gòu)造函數(shù)
{
num=n;
strcpy(name,nu);
}
friend void main(); //聲明友元類
protected:
in 13、t num;//學(xué)號
char name[20];//姓名
};
class Kecheng //聲明課程類
{public: //構(gòu)造函數(shù)
Kecheng(float ma,float cp,float eng)
{
math=ma;
cpp=cp;
english=eng;
}
friend void main(); //聲明友元
protected:
float math;//數(shù)學(xué)
float english;//英語
float 14、cpp;//c++
};
class Chengji:public Student,public Kecheng //聲明成績類
{public:
Chengji(int n,string nam,float ma,float cp,float eng,float map,float cpp,float engp,float,bf,float mz,float cz,float ez): //構(gòu)造函數(shù)Student(n,nam),Kecheng(ma,cp,eng),mathp(map),cppp(cpp),englishp(engp),ba 15、if(bf),mathz(mz),cppz(cz),englishz(ez)
{
mathp=map;
cppp=cpp;
englishp=engp;
baif=bf;
mathz=mz;
cppz=cz;
englishz=ez;
}
float getsum();//綜合函數(shù)
float getshu();//數(shù)學(xué)最后成績
float getcpp();//c最后成績
float geteng();//英語最后成績
friend void main();//聲明友元
float getaver();//平均值函數(shù)
protected:
float mat 16、hp ;//數(shù)學(xué)平時成績
float cppp;//c++平時成績
float englishp;//英語平時成績
float baif;//成績百分比
float mathz ;//數(shù)學(xué)總成績
float cppz;//c++總成績
float englishz;//英語總成績
};
(4).利用switch語句實現(xiàn)多分枝選擇結(jié)構(gòu),分支流程圖:
圖3-2 分支流程圖
具體功能設(shè)計
通過主窗體調(diào)用其他窗體,實現(xiàn)其它功能。
Case1:錄入功能
使用cin輸入流輸入學(xué)生的相關(guān)信息,并創(chuàng)立文件,將所輸入的數(shù)據(jù)存入到文件中。
程序代碼
do
{
cout< 17、<"請輸入姓名"< 18、lishp;
cout<<"請輸入成績百分比"< 19、tw(20)<<"數(shù)總成績: "< 20、tw(2)< 21、(ch))
cout< 22、ris1=1;
}while(chris1==0);
Case2:增加功能
與錄入功能程序操作與代碼大體相同 參考錄入功能。
Case3:刪除功能
用對文件的操作,判斷所需刪除的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)是否相同,利用文件流操作刪除對應(yīng)數(shù)據(jù)。
程序代碼
char c;
string xingming,line,str,name;
do
{
ifstream fin("f1.txt");
fstream outfile("f2.txt",ios::trunc|ios::out); //創(chuàng)建文件2
cout<<"請輸入您要刪除的學(xué)生的姓名:"< 23、gming;
while(!fin.eof()) //執(zhí)行判斷并刪除數(shù)據(jù)
{
getline(fin,line);
istringstream stream(line);
name=line.substr(0,line.find(" ",0));
if(name!=xingming)
outfile< 24、.rdbuf();
outf.close();
f.close();
cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)"< 25、輸入數(shù)據(jù)!"< 26、數(shù):"<<(*s[j]).math*(*s[j]).baif+(*s[j]).mathp*(1-(*s[j]).baif)<<" c++分?jǐn)?shù)"<<(*s[j]).cpp*(*s[j]).baif+(*s[j]).cppp*(1-(*s[j]).baif)<<" 英語分?jǐn)?shù)"<<(*s[j]).english*(*s[j]).baif+(*s[j]).englishp*(1-(*s[j]).baif)< 27、查?(y/n);";
cin>>c;
.......
}
Case6:按姓名查詢
程序代碼與按總分功能類似,區(qū)別在于這個功能中利用指針訪問類中成員,并進行判斷。
Case7:輸出所有數(shù)據(jù)
通過打開文件,對文件中的所有數(shù)據(jù)進行輸出。
程序代碼
cout<<"所有學(xué)生數(shù)據(jù)如下:"< 28、問Chengji類中的成員,調(diào)用getaver ()函數(shù)求得平均分并執(zhí)行輸出操作。
程序代碼
if(i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 29、0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 30、
通過for函數(shù)尋找最大值并進行交換,交換得最大值與最大值對應(yīng)名字。
程序代碼
if(i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 31、
{
temp=a[n]; //交換得到最大值
a[n]=a[n+1];
a[n+1]=temp;
temp1=k[n]; //交換名字
k[n]=k[n+1];
k[n+1]=temp1;
}
}
for(n=1;n<=i;n++)
{
cout< 32、關(guān)信息,并保存到f1.txt中。
圖4-2 學(xué)生成績的錄入
如果想要增加學(xué)生數(shù)據(jù),系統(tǒng)就會按照錄入一樣增加同學(xué)數(shù)據(jù)。
圖4-3 學(xué)生數(shù)據(jù)的增加
4.3刪除功能
輸入刪除名字,程序自動尋找與名字相符數(shù)據(jù)并刪除。
圖4-4 學(xué)生數(shù)據(jù)的刪除
4.4查詢功能
分為按總成績查詢和按姓名查詢兩種方式。
圖4-5 按名字查詢學(xué)生信息
圖4-6 輸出所有學(xué)生數(shù)據(jù)
4.5查詢不及格人數(shù)
調(diào)用get函數(shù)求三科平均成績并統(tǒng)計不及格人數(shù)并輸出查詢結(jié)果。
圖4-8 各科不及格人數(shù)
課程設(shè)計體會
本學(xué)生成績管理系統(tǒng)由十一個模塊組成,每個模塊相互聯(lián)系又相互獨立。 33、這個學(xué)生成績管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問題,這個系統(tǒng)可以實現(xiàn)的功能非常有限。只能實現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進行簡單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信息,能直接從文件中讀入數(shù)據(jù),能對系統(tǒng)所作的修改、操作進行保存等。而且在每個模塊也有不足的地方,比如在輸入學(xué)生資料時,對每個信息項沒有嚴(yán)格的規(guī)定,可以輸入任何的字符。同時有些模塊還不能實現(xiàn)本應(yīng)該有的功能,這有待以后努力,爭能夠?qū)崿F(xiàn)該有的功能。
參考文獻
[1] 譚浩強《C語言程序設(shè)計》 清華大學(xué)出版社
[2] 陳國君等《C++程序設(shè)計基礎(chǔ)》 清華大學(xué)出版社
[3] 譚浩強《C++面向程序設(shè)計》 清華大學(xué) 34、出版社
[4] MaryCampione.《C++語言導(dǎo)學(xué)》 機械工業(yè)出版社
[5] Y.Daniel Liang.《C++語言程序設(shè)計基礎(chǔ)篇》 機械工業(yè)出版社
[6] Kathy Sierra.《Head First C++》 東南大學(xué)出版社
#include 35、math,cpp,english,average,sum;
public:
Tstu()
{};
Tstu(char n[20],int num,float ma,float cj,float eng);
float getsum();
float getaver();
friend void main();
};
Tstu::Tstu ( char n[20], int num,float ma,float cj,float eng )
{
strcpy(name,n);
number=num;
math=ma;
cp 36、p=cj;
english=eng;
}
float Tstu::getsum()
{
sum=cpp+english+math;
return sum;
}
float Tstu::getaver()
{
average=getsum()/3;
return average;
}
void main()
{
cout<<"*****************歡迎來到學(xué)生成績查詢系統(tǒng)*****************"< 37、"< 38、ndl;
cout<<"排名:"< 39、
int chris1=0; //用于判斷do—while語句
do //判斷輸入是否正確
{
cin>>p;
if((p>=1&&p<=11))
chris1=1;
else
cout<<"指令錯誤!請重新輸入:"< 40、 int number;
float math,cpp,english;
do{
cout<<"請輸入姓名:"< 41、
cout<<"請輸入英語成績:"< 42、<<" "<<"數(shù)學(xué)成績:"<
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公有云業(yè)務(wù)能力和應(yīng)用場景課件
- 第二章教育與人發(fā)展總結(jié)課件
- 2020年各平臺品牌藍V“成長”指南ppt課件
- 全能型生產(chǎn)主管資料
- 【人教版音樂】小學(xué)2二年級上冊:小貓釣魚-ppt課件
- 三叉神經(jīng)痛的治療護理常識課件
- 滿分作文:家有寵物(第二課時)課件
- 莫言文學(xué)小說《檀香刑》讀書分享會
- 《小毛蟲》完整ppt課件
- 五年級下冊語文第一單元語文園地人教部編版課件
- 人教新課標(biāo)版五年級下語文同步備課資料包(ppt課件)-第七組:24.金錢的魔力
- 人教版五年級數(shù)學(xué)下冊5.1旋轉(zhuǎn)ppt課件
- 精算基礎(chǔ)知識課件
- 第七章--寶石的分類及命名課件
- 詠懷八十二首課件