《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) -學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) -學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) -學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(38頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 河南工程學(xué)院《高級程序設(shè)計(jì)語言》課程設(shè)計(jì) 成果報告 學(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)容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力 系統(tǒng)
2、設(shè)計(jì) (30分)分析系統(tǒng)的功能模塊 編程調(diào)試 (30分)實(shí)現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試 回答問題 (15分)回答老師針對課程設(shè)計(jì)提出的問題 課程設(shè)計(jì)報告撰寫 (10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報告 源代碼 (5分)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版 總 評 成 績 指導(dǎo)教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設(shè)計(jì)目的 1 1.1 設(shè)計(jì)內(nèi)容 1 1.2 課程設(shè)計(jì)的要求 1
3、 1.3課程設(shè)計(jì)基本操作方法 1 第2章 系統(tǒng)實(shí)現(xiàn)思路 2 2.1 頁面設(shè)計(jì) 2 2.2 功能設(shè)計(jì)與實(shí)現(xiàn) 2 2.3系統(tǒng)模塊化設(shè)計(jì)圖 3 2.4 系統(tǒng)需求分析 3 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 4 3.1 系統(tǒng)的需求 4 3.2主函數(shù)設(shè)計(jì) 11 3.3系統(tǒng)的性能要求 13 3.4 系統(tǒng)的功能分析 13 3.5系統(tǒng)的功能模塊 13 第4章 系統(tǒng)調(diào)試運(yùn)行 14 4.1測試結(jié)果 14 4.2程序運(yùn)行總結(jié) 17 課程設(shè)計(jì)體會 19 參考文獻(xiàn) 20 第1章 系統(tǒng)設(shè)計(jì)目的 1.1 設(shè)計(jì)內(nèi)容 a.設(shè)計(jì)四個類;學(xué)生類(描述學(xué)生基本信息);成績類;班級類;課程類(描述
4、課程信息:課程編號,科目名稱(如高等數(shù)學(xué),大學(xué)英語等);學(xué)生成績及課程信息用文件保存,每個類一個文件,程序執(zhí)行時從文件讀入。 b.能按學(xué)期,按班級完成對學(xué)生成績的錄入,修改,能按班級統(tǒng)計(jì)學(xué)生的成績;求學(xué)生的總分及平均分;并能根據(jù)學(xué)生的平均成績進(jìn)行排序。能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出的學(xué)生的成績單。 —設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 —計(jì)算學(xué)生總評成績:總評成績=平時成績*平時成績所占比百分比+期末成績*(1—平時成績所占百分比) —顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和
5、以班輸出(班成績單格式輸出到文件) —注意,至少一個班,30人三門課 1.2 課程設(shè)計(jì)的要求 根據(jù)c++課程所學(xué)的概念、理論和方法,按照c++程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個適當(dāng)規(guī)模的程序設(shè)計(jì)課程內(nèi)容中的全部內(nèi)容功能;設(shè)計(jì)主控模塊程序。對給出的程序源代碼要給出各部分的詳細(xì)注釋。自己根據(jù)能力及需要添加相應(yīng)功能模塊。包括系統(tǒng)的功能分析、系統(tǒng)的功能模塊設(shè)計(jì)、程序流程圖或結(jié)構(gòu)框圖、邏輯結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)庫中的表、視圖(如果使用)、索引的機(jī)構(gòu)和定義、觸發(fā)器、儲存過程、課程設(shè)計(jì)體會。 1.3課程設(shè)計(jì)基本操作方法 1.按照系統(tǒng)用戶手冊及文檔規(guī)范要求進(jìn)行操作,養(yǎng)成查閱手冊、文檔的良好習(xí)慣; 2.對特殊疑
6、難問題采用討論、協(xié)作等方式進(jìn)行解決,有意識地訓(xùn)練團(tuán)隊(duì)合作意識; 3.課程設(shè)計(jì)報告應(yīng)多包含在課程設(shè)計(jì)過程中出現(xiàn)的錯誤及解決方法。 第2章 系統(tǒng)實(shí)現(xiàn)思路 2.1 頁面設(shè)計(jì) 程序運(yùn)行后會出現(xiàn)一個簡潔的窗口,便于用戶查詢數(shù)據(jù)。 (1)基本要求: a.要求利用面向?qū)ο蟮姆椒ㄒ约癱++的編程思想來完成系統(tǒng)的設(shè)計(jì); b.要求在設(shè)計(jì)的過程中,建立清晰的類層次; c.在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; d.在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 (2)創(chuàng)新設(shè)計(jì)在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。 (3)寫出設(shè)計(jì)說明書 2.2
7、功能設(shè)計(jì)與實(shí)現(xiàn) 通過主窗體調(diào)用其他窗體,具體實(shí)現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。應(yīng)用系統(tǒng)主控界面包括記錄編和記錄查詢等功能模塊。記錄編輯功能完成學(xué)生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進(jìn)行查詢 1.設(shè)計(jì)方法和基本原理: (1)問題描述—設(shè)計(jì)一個實(shí)用的小型班級程序,具有查詢和刪除功能,并且能夠打開或修改指定文件及將多個文件組成組成一個文件。他完全使用類來實(shí)現(xiàn),充分體現(xiàn)面向?qū)ο蟮某绦蛟O(shè)計(jì)特點(diǎn)。要求:實(shí)現(xiàn)主要功能:建立文件,文件的存取和顯示,刪除記錄,查詢記錄。 (2)問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題分為: a.應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框
8、圖以及界面的設(shè)計(jì)和組織; b.分析系統(tǒng)中的各個實(shí)體及它們之間的關(guān)系包括屬性和行為; c.根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次; d.完成類層次中各個類的描述(包括屬性和方法); e.完成類中各個成員函數(shù)的定義; f.完成系統(tǒng)的應(yīng)用模塊; g.功能調(diào)試; h.完成系統(tǒng)總結(jié)以及系統(tǒng)應(yīng)用說明書。 2.3系統(tǒng)模塊化設(shè)計(jì)圖 該學(xué)生管理系統(tǒng)主要分為七個功能模塊,各個功能模塊由相應(yīng)的功能函數(shù)來實(shí)現(xiàn),模塊化圖如下: 學(xué)生管理系統(tǒng) 主菜單 錄入數(shù)據(jù) 查詢數(shù)據(jù) 修改數(shù)據(jù) 保存數(shù)據(jù) 數(shù)據(jù)排序 數(shù)據(jù)讀取 退出系統(tǒng) 圖表 21 系統(tǒng)模塊化設(shè)計(jì)圖 2.4 系統(tǒng)需求分析 (1)
9、學(xué)生信息錄入功能; (2)學(xué)生成績查詢功能; (3)學(xué)生成績輸出功能; (4)學(xué)生信息修改功能; (5)學(xué)生信息刪除功能; (6)學(xué)生成績的排序功能。 第3章 系統(tǒng)詳細(xì)設(shè)計(jì) 3.1 系統(tǒng)的需求 1.構(gòu)造學(xué)生信息結(jié)構(gòu)體存儲學(xué)生信息 學(xué)生信息包括:姓名,學(xué)號,數(shù)學(xué),英語,數(shù)構(gòu),物理,總分,平均分等信息。構(gòu)造代碼如下: struct Student //聲明一個名為student的結(jié)構(gòu)體類型 { string name; //姓名 string number; //學(xué)號 double maths; //數(shù)學(xué) doubl
10、e english; //英語 double datastruct; //數(shù)構(gòu) double physical; //物理 double total; //總分 double average;//均分 }; 2. 系統(tǒng)功能函數(shù)類的設(shè)計(jì) 把該系統(tǒng)要實(shí)現(xiàn)的功能封裝在此類中,方便增加和修改。在本系統(tǒng)中設(shè)計(jì)了七個函數(shù)分別實(shí)現(xiàn)學(xué)生成績的錄入,查詢,輸出,修改,刪除,求總分和平均分。其代碼如下:: class SYSTEM //聲明類system { public: SYSTEM(){n=0;} //構(gòu)造函數(shù)
11、void add();//添加 void show();//顯示 void search();//查詢 void change();//修改 void delet();//刪除 void sort();//排序 void Max();//最高分 void Min();//最低分 private: Student stu[1000];//定義一個結(jié)構(gòu)體類型student的變量stu int n; }; 各功能函數(shù)代碼如下: 學(xué)生信息輸入函數(shù)add() void SYSTEM::add()//添加 { cout<<"
12、學(xué)號:"<
13、].english+ stu[n].datastruct+ stu[n].physical;
stu[n].average=stu[n].total/4;
n++;//學(xué)生人數(shù)增加一個
}
(2)學(xué)生成績查詢函數(shù)search()
void SYSTEM::search()//查詢
{
cout<<"請選擇查詢方式:"<
14、號查詢
{
string num;
cout<<"請輸入要查詢的學(xué)號:"< 15、ical<<" "
< 16、數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"< 17、 {
cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分 平均分"< 18、 SYSTEM::change() //修改
{
string num;
int i;
cout<<"請輸入要修改的學(xué)生學(xué)號:"< 19、<" "< 20、e=stu[i].name;
cout<<"數(shù)學(xué):"< 21、stu[i].physical;
stu[n].physical=stu[i].physical;
stu[i].total= stu[i].maths+ stu[i].english+ stu[i].datastruct+ stu[i].physical;
stu[i].average=stu[i].total/4;
break;
}
if(stu[i].number!=num)
cout<<"無此學(xué)生信息!!"< 22、
cout<<"請輸入要刪除學(xué)生的學(xué)號,然后按回車確認(rèn):"< 23、序
{
cout<<"請選擇排序方式:"< 24、=stu[j];
stu[j]=stu[j+1];
stu[j+1]=p;
}
}
cout<<"學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)構(gòu) 物理 總分"< 25、
}
}break;
case 2://按學(xué)生平均分排序
{
Student p;//定義一個Student類型的變量p
for(int i=0;i 26、 for(int m=0;m 27、le max1,max2,max3,max4,max5,max6;
max1=stu[0].maths;
max2=stu[0].english;
max3=stu[0].datastruct;
max4=stu[0].physical;
max5=stu[0].total;
max6=stu[0].average;
for(int i=0;i 28、 max2=stu[i].english;
if(stu[i].datastruct>max3)
max3=stu[i].datastruct;
if(stu[i].physical>max4)
max4=stu[i].physical;
if(stu[i].total>max5)
max5=stu[i].total;
if(stu[i].average>max6)
max6=stu[i].average;
}
cout<<"數(shù)學(xué)最高分 英語最高分 數(shù)構(gòu)最高分 物理 29、最高分 總分最高 平均分最高"< 30、t;
min4=stu[0].physical;
min5=stu[0].total;
min6=stu[0].average;
for(int i=0;i 31、4)
min4=stu[i].physical;
if(stu[i].total 32、 "< 33、**************************************************"< 34、學(xué)生成績 8.最低分"< 35、 person.add();
break;
case 2:
person.search();
break;
case 3:
person.show();
break;
case 4:
person.change();
break;
case 5:
person.delet();
break;
case 6:
person.sort();
break;
case 7:
person.Max(); 36、
break;
case 8:
person.Min();
break;
case 0:
cout<<"謝謝使用本系統(tǒng)!!!"< 37、模塊
學(xué)生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改、數(shù)據(jù)查詢,排序顯示構(gòu)成。
第4章 系統(tǒng)調(diào)試運(yùn)行
4.1測試結(jié)果
每一個case都能執(zhí)行,但是很多的地方都不夠完善,例如:在總成績排序中,只能輸出總成績,不能單獨(dú)的輸出學(xué)生的相應(yīng)的信息;每次進(jìn)行別的操作之前都要進(jìn)行一次數(shù)據(jù)的錄入,不能直接對原有的文件進(jìn)行讀取。
4-1修改學(xué)生成績
4-2刪除學(xué)生成績
4-3學(xué)生成績排序
4-4輸出各科最高分
4-5輸出各科最低分
4-6退出系統(tǒng)
4.2程序運(yùn)行總結(jié)
該程序經(jīng)過多次運(yùn)行后,最終通過執(zhí)行結(jié)果,很多細(xì)節(jié)需要我們留意, 38、一個很小的錯誤就可能造成程序無法運(yùn)行。
課程設(shè)計(jì)體會
親身體會:這次的c++課程設(shè)計(jì)實(shí)踐中,在老師的指導(dǎo)下,運(yùn)用c++的知識編寫一個課題。在整個過程中我們要明白設(shè)計(jì)目的,然后進(jìn)行分析,而且團(tuán)隊(duì)意識很重要。在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。
第一次進(jìn)行實(shí)訓(xùn),剛開始不知該如何下手, 39、感覺跟平時學(xué)的知識跟現(xiàn)實(shí)無法連接,但是在老師和其他同學(xué)的幫助下,還是最終做到了有始有終,嘗到了成功的甜頭。對程序這門課又有了新的認(rèn)識,并且產(chǎn)生了濃厚的興趣。
參考文獻(xiàn)
[1] 譚浩強(qiáng)著,《C++語言設(shè)計(jì)題解與上機(jī)指導(dǎo)》,清華大學(xué)出版社
[2] 譚浩強(qiáng)著,《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》,清華大學(xué)出版社
[3]? Deitel.《Java大學(xué)基礎(chǔ)教程》(第六版).電子工業(yè)出版社??
[4] ?MaryCampione.《Java語言導(dǎo)學(xué)》(第四版).機(jī)械工業(yè)出版社?
[5]? Y.Daniel?Liang.《Java語言程序設(shè)計(jì)基 40、礎(chǔ)篇》(第六版).?機(jī)械工業(yè)出版社?
[6]? Kathy?Sierra.《Head?First?Java》(第二版).東南大學(xué)出版社
#include 41、m;
public:
Tstu()
{};
Tstu ( char n[20], int num,float ma,float cj,float eng ) ;
float getsum();//得到總分的函數(shù)
float getaver(); //得到平均分的函數(shù)
friend void main(); //將主函數(shù)定義為友元函數(shù),方便訪問類中的成員
};
Tstu::Tstu ( char n[20], int num,float ma,float cj,float eng )
{
strcpy(name,n); / 42、/得到姓名
number=num; //得到學(xué)號
math=ma; //得到數(shù)學(xué)成績
cpp=cj; //得到c++成績
english=eng; //得到英語成績
}
float Tstu::getsum() //得到總分的函數(shù)
{
sum=cpp+english+math;
return sum;
}
float Tstu::getaver() //得到平均分的函數(shù)
{
average=getsum()/3;
return average;
}
void main() 43、
{
cout<<"*****************歡迎來到學(xué)生成績查詢系統(tǒng)*****************"< 44、詢"< 45、否繼續(xù)操作
Tstu *s[100]; //類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲
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、h(p)
{
case 1: //數(shù)據(jù)的錄入
{
char c; //用于在小項(xiàng)中選擇是否繼續(xù)操作
char name[20];
int number;
float math,cpp,english;
do{
cout<<"請輸入姓名:"< 47、 cout<<"請輸入數(shù)學(xué)成績:"< 48、 if(!file)
{ cout<<"f1.txt can not open.\n";
return;
}
outfile< 49、
{ cout<<"f1.txt can not open.\n";
return;
}
char ch;
while(infile.get(ch))
cout< 50、 i++;
cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"< 51、重復(fù)輸入
break;
}
case 2: //增加學(xué)生數(shù)據(jù)
{
char name[20];
int number;
float math,cpp,english;
char c;
do
{
cout<<"請輸入您要增加的學(xué)生的姓名:"< 52、請輸入你要增加的學(xué)生的學(xué)號:"< 53、 outfile.open("f1.txt",ios::out|ios::app);
if(!file)
{
cout<<"f1.txt can not open.\n";
return;
}
outfile< 54、
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< 55、 cout< 56、 cout<<"指令錯誤!請重新輸入!"< 57、eam outfile("f2.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
cout<<"請輸入您要刪除的學(xué)生的姓名:"< 58、 name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等
if(name != xingming)
outfile< 59、,ios::trunc|ios::out);
ifstream outf("f2.txt");
f< 60、='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"< 61、
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 62、 getline(fin,line);
istringstream stream(line);
sname = line.substr(0,line.find(" ",0));
if(name!=sname)
{
outfile< 63、 cin>>name>>nu>>ma>>com>>eng;
cout< 64、;
outf.close();
inf.close();
}
if(flag=0)cout<<"對不起,您要修改的學(xué)生不存在!請查證后輸入!"< 65、 break;
}
case 5://按總分查詢
{
int j=0;float SUM;char c;int flag;
if(i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 66、tsum()==SUM)
{
flag=1;
cout<<"您要查詢的學(xué)生是:"<<(*s[j]).name<
- 溫馨提示:
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é)前工作重點(diǎn)總結(jié)
- 物業(yè)管理:某小區(qū)消防演習(xí)方案
- 某物業(yè)公司客服部工作職責(zé)