《高級程序設(shè)計語言課程設(shè)計報告- -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《高級程序設(shè)計語言課程設(shè)計報告- -學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
河南工程學(xué)院《高級程序設(shè)計語言》課程設(shè)計
成果報告
學(xué)生成績管理系統(tǒng)設(shè)計與實現(xiàn)
學(xué)生學(xué)號:
學(xué)生姓名:
學(xué) 院: 計算機(jī)學(xué)院
專業(yè)班級:
專業(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è)計目的 1
1.1 設(shè)計內(nèi)容 1
1.2 設(shè)計目的: 1
1.3設(shè)計要求:
3、1
第2章 系統(tǒng)實現(xiàn)思路 3
2.1 系統(tǒng)分析 3
2.2 系統(tǒng)模塊框架圖: 4
第3章系統(tǒng)詳細(xì)設(shè)計 5
3.1系統(tǒng)設(shè)計 5
3.2系統(tǒng)的實現(xiàn) 5
3.3 詳細(xì)設(shè)計 5
第4章 系統(tǒng)調(diào)試運行 17
課程設(shè)計體會 22
參考文獻(xiàn) 24
第1章 系統(tǒng)設(shè)計目的
1.1 設(shè)計內(nèi)容
- 設(shè)計四個類;學(xué)生類(描述學(xué)生基本信息);成績類:班級類;課程(描述課程信息:課程編號,科目名稱(如高等數(shù)學(xué),大學(xué)英語等);學(xué)生成績及課程信息用文件保存,每個類一個文件,程序執(zhí)行時從文件讀入;
- 能按學(xué)期,按班級完成對學(xué)生成績的錄入,修改,能按班級統(tǒng)計學(xué)生的成績;求學(xué)生的總分及
4、平均分;并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。
– 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比
– 計算學(xué)生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比)
– 顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信 息。分單人顯示和以班輸出(班成績單格式輸出到文件)
– 注意,至少一個班,30人三門;
1.2 設(shè)計目的:
(1)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;
(2)達(dá)到熟練掌握C++語
5、言的基本知識和技能,解決簡單的程序設(shè)計問題
(3)能夠利用所學(xué)的基本知識和技能,解決簡單的程序設(shè)計問題
1.3設(shè)計要求:
基本要求:
(1) 要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計;
(2) 要求在設(shè)計的過程中,建立清晰的類層次;
(3) 在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制;
(4)根據(jù)C++課程所學(xué)的概念、理論和方法,按照C++程序設(shè)計的基本 步驟,設(shè)計出一個適當(dāng)
6、規(guī)模的程序來實現(xiàn)設(shè)計課程內(nèi)容中的全部功能;
(5)設(shè)計主控模塊程序.對給出的程序源代碼要給出各部分的詳細(xì)注釋.自己根據(jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能。
第2章 系統(tǒng)實現(xiàn)思路
2.1 系統(tǒng)分析
1.需求分析:
a.能對學(xué)生各科成績進(jìn)行錄入:。
b.能對學(xué)生的成績進(jìn)行增加。
c.能對學(xué)生的成績進(jìn)行刪除。
d.能對學(xué)生的成績進(jìn)行修改。
e.能對學(xué)生的成績按總成績,姓名,進(jìn)行查詢。
f.能輸出學(xué)生的所有數(shù)據(jù)。
g.能進(jìn)行成績統(tǒng)計
h.能進(jìn)行總分查詢排名。
2.系統(tǒng)功能描述:
(1)使用繼承的方法構(gòu)造函數(shù)的類
(2)用文本文檔來顯示所
7、錄入的數(shù)據(jù)
(3)用switch函數(shù)來選擇執(zhí)行的功能
3.系統(tǒng)的功能分析:
資料維護(hù):系統(tǒng)維護(hù)包括對學(xué)生信息錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。
系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對學(xué)生的信息進(jìn)行查詢。
2.2 系統(tǒng)模塊框架圖:
1.通過分析畫出程序結(jié)構(gòu)圖:
學(xué)生成績管理系統(tǒng)
圖0-0程序框架圖
操作
查詢學(xué)生信息
修改
增加
總成績
查詢
姓名查詢
輸出所有學(xué)生的成績
錄入
刪除
每個學(xué)生的平均成績
每個學(xué)生的總評成績
按總成績排名
查詢
各科不及格人數(shù)
8、
第3章系統(tǒng)詳細(xì)設(shè)計
3.1系統(tǒng)設(shè)計
1. 界面設(shè)計
程序運行后會出現(xiàn)一個簡捷的窗口,便于用戶查詢數(shù)據(jù)。
3.2系統(tǒng)的實現(xiàn)
通過主窗體調(diào)用其他窗體,具體實現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。應(yīng)用系統(tǒng)主控界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學(xué)生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進(jìn)行查詢
3.3 詳細(xì)設(shè)計
(1)定義一個基類student:class Student{ //定義學(xué)生類
public:
Student(char n[20]
9、,int num,float xuen){
strcpy(name,n);
number=num;
xuenian=xuen;}
char name[20];
int number;
int xuenian;
(2)再派生出成績類:class Chengji: public Student //設(shè)置成績類學(xué)生成績
{ public:
Chengji(char n[20],int num,float xuen, float ma2,float ma,float cy2,float cy,float eng2,float eng):Student(
10、n,num,xuen){
cyuyan=cy;
english=eng;
math=ma;
cyuyan2=cy2;
english2=eng2;
math2=ma2;}
在這個類中把一些需要用到的成員函數(shù)寫上,來計算總分,總評成績,平均成績注意參數(shù); float get_sum(){ //計算總分
sum=english2+math2+cyuyan2;
return sum;
}
friend void main();//將主函數(shù)定義為友元函數(shù),方便訪問類中的成員
float get_a
11、ver(){ //得到平均分的函數(shù)
average=get_sum()/3;
return average;
}
(3)定義主函數(shù):void main() //主函數(shù)
{
cout<<"**********歡迎來到學(xué)生成績查詢系統(tǒng)**********"<
12、cout<<"查詢:"<
13、變量: int p=0;//全局變量,用于選擇菜單時的輸入
char w;//全局變量,用于在大項中選擇是否繼續(xù)操作
Chengji *s[100];//類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲
ofstream *file[100];
int i=0;//全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo)
int j=0;
(5)運用switch函數(shù)來實現(xiàn)用戶所要求的功能,并用do……while 來進(jìn)行循環(huán)。do//判斷輸入是否正確
{
cin>>p;
if(p>=1&&p<=11) chris1=1;
else
cout<<"指令錯誤!
14、請重新輸入:"<
15、ath,cyuyan,english,bf,xuenian;
do{ cout<<"請輸入學(xué)年"<>xuenian;
cout<<"請輸入姓名"<>name;
cout<<"請輸入學(xué)號"<>number;
cout<<"請輸入數(shù)學(xué)期末成績"<>math2;
cout<<"請輸入數(shù)學(xué)平時成績"<>math;
c
16、out<<"請輸入c++期末成績"<>cyuyan2;
cout<<"請輸入c++平時成績"<>cyuyan;
cout<<"請輸入英語期末成績"<>english2;
cout<<"請輸入英語平時成績"<>english;
cout<<"請輸入成績百分比"<>
17、bf; zong=(english2+math2+cyuyan2)*(1-bf)+(english+math+cyuyan)*bf;
fstream outfile,infile;//作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
outfile.open("f1.txt",ios::out|ios::app);if(!file){
cout<<"f1.txt can not open.\n";return ;}
outfile<<"姓名:"<
18、c++成績:"<
19、umber;
float cyuyan,math,english,cyuyan2,math2,english2,bf,xuenian;
char c;
do
{ cout<<"請輸入學(xué)年"<>xuenian;
cout<<"請輸入您要增加的學(xué)生的名字:"<>name;
cout<<"請輸入你要增加的學(xué)生的學(xué)號:"<>number;
cou
20、t<<"請輸入數(shù)學(xué)成績"<>math2;
cout<<"請輸入數(shù)學(xué)平時成績"<>math;
cout<<"請輸入c++成績"<>cyuyan2;
cout<<"請輸入c++平時成績"<>cyuyan;
cout<<"請輸入英語成績"<>english2;
cout<<"請輸入英語平時成績"<
21、>english;
cout<<"請輸入成績百分比"<>bf;
fstream outfile,infile;
outfile.open("f1.txt",ios::out|ios::app);
if(!file){
cout<<"f1.txt can not open.\n";
return ;
}
outfile<<"姓名:"<
22、