學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 《高級程序設(shè)計語言》課程設(shè)計報告
《學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 《高級程序設(shè)計語言》課程設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 《高級程序設(shè)計語言》課程設(shè)計報告(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 河南工程學(xué)院《高級程序設(shè)計語言》課程設(shè)計 成果報告 學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 學(xué)生學(xué)號: 學(xué)生姓名: 學(xué) 院: 計算機(jī)學(xué)院 專業(yè)班級: 軟件工程 1341 專業(yè)課程: 《高級程序設(shè)計語言》 指導(dǎo)教師: 2014 年 6 月 27 日 題 目 學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn) 考核項目 考核內(nèi)容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力
2、系統(tǒng)設(shè)計 (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è)計目的 1 1.1 課程設(shè)計目的 1 1.2 系統(tǒng)設(shè)計要求
3、 1 第2章 系統(tǒng)實現(xiàn)思路 2 2.1設(shè)計程序 2 2.2系統(tǒng)功能的分析 2 2.3程序流程圖 2 第3章 系統(tǒng)詳細(xì)設(shè)計 3 3.1 程序首頁 3 3.2錄入模塊 6 3.3 增加模塊 7 3.4刪除模塊 10 3.5修改模塊 11 3.6查詢模塊 12 3.7統(tǒng)計模塊 13 第4章 系統(tǒng)調(diào)試運行 14 4.1 程序運行 14 4.2 錄入功能 14 4.3增加功能 15 4.4刪除功能 16 課程設(shè)計體會 17 參考文獻(xiàn) 18 第1章 系統(tǒng)設(shè)計目的 1.1 課程設(shè)計目的 在計算機(jī)領(lǐng)域中,任何好的創(chuàng)意和設(shè)計最終都需要通過高水平的程
4、序設(shè)計實現(xiàn),因此學(xué)習(xí)程序設(shè)計是計算機(jī)及相關(guān)專業(yè)學(xué)生必備的基本技能之一。為了使學(xué)生更好的學(xué)習(xí)和掌握這一基本技能,必須系統(tǒng)而全面地的安排程序設(shè)計課程設(shè)計,目的是通過具體的課程設(shè)計,不僅使學(xué)生能夠進(jìn)一步理解程序設(shè)計的基本概念,掌握基本的程序設(shè)計方法,培養(yǎng)良好的程序設(shè)計風(fēng)格,同時還可以借助程序設(shè)計技巧的訓(xùn)練,培養(yǎng)學(xué)生抽象思維、邏輯思維及統(tǒng)籌規(guī)劃的能力。 1.2 系統(tǒng)設(shè)計要求 (1)設(shè)計四個類,包括學(xué)生類(描述學(xué)生基本信息);成績類;班級類;課程類(描述課程信息:課程編號,科目名稱,如高等數(shù)學(xué),大學(xué)英語等); (2)學(xué)生成績及課程信息用文件保存,程序執(zhí)行時從文件讀入; (3)能按學(xué)期,按班級完
5、成對學(xué)生成績的錄入、修改,能按班級統(tǒng)計學(xué)生的成績; (4)求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 – 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 – 計算學(xué)生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) – 顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件) – 注意,至少應(yīng)包含一個班、30人、三門課 第2章 系統(tǒng)實現(xiàn)思路 2
6、.1設(shè)計程序 采用現(xiàn)有的資源,先進(jìn)的管理系統(tǒng)開發(fā)方案,充分利用學(xué)?,F(xiàn)有的資源,減少開發(fā)中的時間和財力、物力、提高系統(tǒng)開發(fā)的水平和應(yīng)用效果。系統(tǒng)就滿足學(xué)校的需求,例如學(xué)生信息的錄入、查詢、更新等。系統(tǒng)就具備數(shù)據(jù)庫維護(hù)功能,及時根據(jù)用戶需求進(jìn)行數(shù)據(jù)添加、刪除、修改等操作。 2.2系統(tǒng)功能的分析 錄入功能:為用戶提供相應(yīng)的錄入功能。 查詢功能:為用戶提供查詢功能,可查詢允許范圍內(nèi)的所有信息。 維護(hù)功能:為用戶提供查詢及相應(yīng)的修改,刪除功能。 返回功能:為用戶提供相應(yīng)操作后返回到主頁面。 2.3程序流程圖 流程程序圖是進(jìn)行流程程序分析過程中最基本的工具,是程序分析中最基本、最重要的分
7、析技術(shù)。它運用工序圖標(biāo)符號對生產(chǎn)現(xiàn)場的整個制造過程做詳細(xì)的記錄,以便對零部件、產(chǎn)品在整個制造過程中的生產(chǎn)、加工、檢驗、儲存等環(huán)節(jié)待作詳細(xì)的研究與分析,特別適用于分析生產(chǎn)過程中的成本浪費,提高經(jīng)濟(jì)效益。 流程圖:學(xué)生管理系統(tǒng) 操作 查詢 成績統(tǒng)計 按總成績排名 錄 入 增 加 成 績 刪 除 修 改 每個學(xué)生的平均成績 輸 出 姓. 名 各科不及格人數(shù) 圖2-3程序流程圖 第3章 系統(tǒng)詳細(xì)設(shè)計 3.1 程序首頁 程序運行后會出現(xiàn)一個間接地窗口,便于用戶查詢數(shù)據(jù)。 主函數(shù)用循環(huán)
8、體以及switch語句實現(xiàn)功能選擇。 主界面展示 **************歡迎來到學(xué)生成績查詢系統(tǒng)************** 請選擇需要的操作! (1)數(shù)據(jù)錄入 (2)增加學(xué)生 (3)刪除學(xué)生 (4)修改數(shù)據(jù) 查詢: (5)按總成績查詢 (6)按姓名查詢 (7)輸出所有學(xué)生的數(shù)據(jù) 成績統(tǒng)計: (8)每個學(xué)生的平均成績 (9)各個學(xué)科不及格人數(shù) 排名: (10)按總分查詢排名 (11)退出 選擇相關(guān)操作請輸入相對的括號里的阿拉伯?dāng)?shù)字及字母! 主程序代碼 void main() //
9、主函數(shù)
{
system("color 07e"); //設(shè)置當(dāng)前窗口的背景色和前景色 0 = 黑色 8 = 灰色
// 1 = 藍(lán)色 9 = 淡藍(lán)色
// 2 = 綠色 A = 淡綠色
// 3 = 淺綠色 B = 淡淺綠色
// 4 = 紅色 C = 淡紅色
// 5 = 紫色 D = 淡紫色
// 6 = 黃色 E = 淡黃色
// 7 = 白色 F = 亮白色
cout<<"**********歡迎來到學(xué)生成績查詢系統(tǒng)**********"< 10、cout<<"(2)增加學(xué)生"< 11、out<<"(11)退出"< 12、
{
switch(p)
{
case 1:{.............} //錄入功能
case 2:{.............} //增加功能
case 3:{.............} //刪除功能
case 4:{.............} //修改數(shù)據(jù)功能
case 5:{.............} //按成績查詢功能
case 6:{.............} //按姓名查詢功能
case 7:{.............} //輸出所有的數(shù)據(jù)
case 8:{.............} //輸出學(xué)生的平均分
case 9:{.. 13、...........} / /查詢不及格人數(shù)
case 10:{.............} //總成績排名
}while(w=='y');//循環(huán)語句結(jié)束 }
3.2錄入模塊
根據(jù)程序的要求,我們建立了錄入功能的switch函數(shù),要求用戶輸入數(shù)據(jù),以便存入文檔,這就實現(xiàn)了數(shù)據(jù)的錄入。
case 1: //數(shù)據(jù)的錄入
char c; //用于在小項中選擇是否繼續(xù)操作
char name[20];
int number;
int banji;
float pmath,pcpp,penglish,psu 14、m,bl,sum,sump;
float math,cpp,english;
do{
cout<<"請輸入姓名:"< 15、ut<<"請輸入cpp成績:"< 16、"平時成績所占比例"< 17、er;
int banji;
float math,cpp,english,bl,sum,sump,psum;
float pmath,pcpp,penglish;
char c;
do {
cout<<"請輸入您要增加的學(xué)生的姓名:"< 18、number;
cout<<"請輸入班級:"< 19、 cin>>pmath;
cout<<"請輸入平時cpp成績:"< 20、um*bl;
fstream outfile,infile;
outfile.open("f1.txt",ios::out|ios::app);
if(!file)
{ cout<<"f1.txt can not open.\n";
return; }
outfile< 21、cpp成績:"< 22、 cout<<"f1.txt can not open.\n";
return; }
char h;
while(infile.get(h))
cout< 23、 banji,math, cpp, english,pmath, pcpp, penglish);
i++;
cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"< 24、,name;
do
{ ifstream fin("f1.txt");
fstream outfile("f2.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
cout<<"請輸入您要刪除的學(xué)生的姓名:"< 25、e(fin,line);
istringstream stream(line);
name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等
if(name != xingming)
outfile< 26、lose();
fstream f("f1.txt",ios::trunc|ios::out);
ifstream outf("f2.txt");
f< 27、 為防止用戶不慎輸入錯誤信息,我們還建立了一個修改功能的文件,以實現(xiàn)用戶在輸入錯誤信息后可修改此信息。
string sname,line,str,name;
int bj;
int nu;float eng,ma,com,peng,pma,pcom,bl;int flag;char c;
if(i==0){
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 28、 fstream fin("f1.txt",ios::in);
ofstream outfile("f.txt",ios::trunc|ios::out);
cout< 29、< 30、<<"cpp成績:"< 31、 inf.close(); }
if(flag=0)cout<<"對不起,您要修改的學(xué)生不存在!請查證后輸入!"< 32、;
}
do
{
flag=0;
cout<<"請輸入您要查詢的學(xué)生的總成績:"< 33、number<<"班級:"<<(*s[j]).banji<<" 數(shù)學(xué)分?jǐn)?shù):"<<(*s[j]).math<<" cpp分?jǐn)?shù):"<<(*s[j]).cpp<<" 英語分?jǐn)?shù)"<<(*s[j]).english<<" 平時數(shù)學(xué)分?jǐn)?shù):"<<(*s[j]).pmath<<" 平時cpp分?jǐn)?shù):"<<(*s[j]).pcpp<<" 平時英語分?jǐn)?shù)"<<(*s[j]).penglish< 34、 cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 35、-1 系統(tǒng)主界面
4.2 錄入功能
當(dāng)用戶進(jìn)入到首頁面后,輸入1可進(jìn)行數(shù)據(jù)的錄入功能,用戶可錄入學(xué)生的姓名、學(xué)號、成績等信息,并且儲存在文檔中。
圖4-3 錄入功能
4.3增加功能
在錄入學(xué)生信息后還想增加另一個學(xué)生的信息可選擇繼續(xù)錄入數(shù)據(jù),也可選擇增加學(xué)生,只需在首頁中輸入2即可進(jìn)行增加操作。
圖4-3 增加功能
4.4刪除功能
進(jìn)行數(shù)據(jù)的錄入或增加后,方可進(jìn)行數(shù)據(jù)的刪除或修改,如需要對數(shù)據(jù)進(jìn)行刪除只需輸入3即可進(jìn)行此操作,在進(jìn)行此操作時需輸入學(xué)生的姓名可刪除。
圖4-4 刪除功能
課程設(shè)計體會
長達(dá)一周的程序設(shè)計課程實 36、踐終于結(jié)束了,雖然整個過程不完全是自己一個人獨立完成的,而且做出來的結(jié)果也不是很好,但是在請教同學(xué)和老師的同時,對這方面也有了進(jìn)一步的了解,對課程設(shè)計的內(nèi)容也基本上進(jìn)行了掌握。
通過這次實踐讓我認(rèn)識到C++程序設(shè)計是一門實踐性很強(qiáng)的課程,學(xué)習(xí)程序設(shè)計不能僅限于紙上談兵,許多程序方法和技巧不是光靠聽課和看書就能學(xué)得到的,而是必須通過大量的上機(jī)實踐慢慢積累起來,程序設(shè)計能力的培養(yǎng)必須以實踐為重,近兩周的學(xué)習(xí)給了我鍛煉的機(jī)會。另外通過這次實踐,培養(yǎng)了自己做事認(rèn)真,嚴(yán)謹(jǐn)?shù)膽B(tài)度。還有程序設(shè)計,程序編譯及運行過程中不可避免會出現(xiàn)不會、不懂的地方,出現(xiàn)程序錯誤以及不能編譯運行等種種困難,讓我必須非常嚴(yán)謹(jǐn)對 37、待每一個語句,鍛煉了嚴(yán)謹(jǐn)?shù)乃季S。
在這次設(shè)計程序中,我找出學(xué)習(xí)中的不足,以便為完善學(xué)習(xí)計劃,改變學(xué)習(xí)內(nèi)容與方法提供實踐依據(jù)。
參考文獻(xiàn)
(1) 譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計》.清華大學(xué)出版社
(2) 譚浩強(qiáng).《C++面向?qū)ο蟪绦蛟O(shè)計題解與上機(jī)指導(dǎo)》.清華大學(xué)出版社
(3) LippmanBarbara.《C++?Primer》.人民郵電出版社
(4) Bjarne Stroustrup.《The C++ Programming Language》.機(jī)械工業(yè)出版社
(5)《C++語言的設(shè)計和演化》,機(jī)械工業(yè)出版社
(6)《C++語言的設(shè)計和演化(英文版)》 38、,機(jī)械工業(yè)出版社
(7)《C++程序設(shè)計語言(特別版)》,機(jī)械工業(yè)出版社
#include 39、 void main(); //將主函數(shù)定義為友元函數(shù),方便訪問類中的成員
};
Student::Student(char n[20],int num,int bj)
{
strcpy(name,n); //得到姓名
number=num; //得到學(xué)號
banji=bj;//得到班級
}
class chengji:public Student//設(shè)置成績類并繼承學(xué)生類記錄學(xué)生成績
{
public:
float math,cpp,english,average,sum;
float pmath,pcpp,penglish,psum;
floa 40、t bl;
public:
chengji(char n[20],int num,int bj,float ma,float cj,float eng, float pma,float pcj,float peng):Student(n,num,bj)
{
math=ma;//得到數(shù)學(xué)成績
cpp=cj;//得到C語言成績
english=eng;//得到英語成績
pmath=pma;//得到平時數(shù)學(xué)成績
pcpp=pcj;//得到平時C語言成績
penglish=peng;//得到平時英語成績
}
float ge 41、tsum();//得到總分的函數(shù)
float getaver(); //得到平均分的函數(shù)
float getpsum();//得到總評成績的函數(shù)
friend void main(); //將主函數(shù)定義為友元函數(shù),方便訪問類中的成員
};
float chengji::getsum() //得到總分的函數(shù)
{
sum=cpp+english+math;
return sum;
}
float chengji::getaver() //得到平均分的函數(shù)
{
average=getsum()/3;
return aver 42、age;
}
float chengji::getpsum()//得到總評成績的函數(shù)
{
psum=(pcpp+penglish+pmath)*bl+getsum()*(1-bl);
return psum;
}
void main()
{
cout<<"*****************歡迎來到學(xué)生成績查詢系統(tǒng)*****************"< 43、
cout<<"*******(2)增加學(xué)生"< 44、平均成績"< 45、分別存儲
ofstream *file[100];
int i=0; //全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo)
int j=0;
int chris1=0; //用于判斷do—while語句
do //判斷輸入是否正確
{
cin>>p;
if((p>=1&&p<=11))
chris1=1;
else
cout<<"指令錯誤!請重新輸入:"< 46、 char c; //用于在小項中選擇是否繼續(xù)操作
char name[20];
int number;
int banji;
float pmath,pcpp,penglish,psum,bl,sum,sump;
float math,cpp,english;
do{
cout<<"請輸入姓名:"< 47、 cin>>number;
cout<<"請輸入班級:"< 48、math;
cout<<"請輸入平時cpp成績:"< 49、文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
outfile.open("f1.txt",ios::out|ios::app);
if(!file)
{ cout<<"f1.txt can not open.\n";
return;
}
outfile< 50、 51、;
}
char ch;
while(infile.get(ch))
cout< 52、入成功,想繼續(xù)錄入嗎(y/n)"< 53、 }
case 2: //增加學(xué)生數(shù)據(jù)
{
char name[20];
int number;
int banji;
float math,cpp,english,bl,sum,sump,psum;
float pmath,pcpp,penglish;
char c;
do
{
cout<<"請輸入您要增加的學(xué)生的姓名:"< 54、 cin>>name;
cout<<"請輸入你要增加的學(xué)生的學(xué)號:"< 55、ut<<"請輸入英語成績:"< 56、l;
sum=math+cpp+english;
sump=pmath+pcpp+penglish;
psum=sump*bl+sum*bl;
fstream outfile,infile;
outfile.open("f1.txt",ios::out|ios::app);
if(!file)
{
cout<<"f1.txt can not open.\n";
r 57、eturn;
}
outfile< 58、;
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< 59、 cout< 60、f(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"< 61、 string xingming,line,str,name;
do
{ ifstream fin("f1.txt");
fstream outfile("f2.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
cout<<"請輸入您要刪除的學(xué)生的姓名:"< 62、eof() )
{
getline(fin,line);
istringstream stream(line);
name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等
if(name != xingming)
outfile< 63、 outfile.close();
fin.close();
fstream f("f1.txt",ios::trunc|ios::out);
ifstream outf("f2.txt");
f< 64、 cout<<"數(shù)據(jù)刪除成功,想繼續(xù)刪除嗎(y/n)"< 65、修改數(shù)據(jù)
{
string sname,line,str,name;
int bj;
int nu;float eng,ma,com,peng,pma,pcom,bl;int flag;char c;
if(i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 66、.txt",ios::in);
ofstream outfile("f.txt",ios::trunc|ios::out);
cout<
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理制度:常見突發(fā)緊急事件應(yīng)急處置程序和方法
- 某物業(yè)公司冬季除雪工作應(yīng)急預(yù)案范文
- 物業(yè)管理制度:小區(qū)日常巡查工作規(guī)程
- 物業(yè)管理制度:設(shè)備設(shè)施故障應(yīng)急預(yù)案
- 某物業(yè)公司小區(qū)地下停車場管理制度
- 某物業(yè)公司巡查、檢查工作內(nèi)容、方法和要求
- 物業(yè)管理制度:安全防范十大應(yīng)急處理預(yù)案
- 物業(yè)公司巡查、檢查工作內(nèi)容、方法和要求
- 某物業(yè)公司保潔部門領(lǐng)班總結(jié)
- 某公司安全生產(chǎn)舉報獎勵制度
- 物業(yè)管理:火情火災(zāi)應(yīng)急預(yù)案
- 某物業(yè)安保崗位職責(zé)
- 物業(yè)管理制度:節(jié)前工作重點總結(jié)
- 物業(yè)管理:某小區(qū)消防演習(xí)方案
- 某物業(yè)公司客服部工作職責(zé)