《高級程序設計語言》課程設計- 學生成績管理系統(tǒng)設計與實現(xiàn)
《《高級程序設計語言》課程設計- 學生成績管理系統(tǒng)設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《《高級程序設計語言》課程設計- 學生成績管理系統(tǒng)設計與實現(xiàn)(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 河南工程學院《高級程序設計語言》課程設計 成果報告 學生成績管理系統(tǒng)設計與實現(xiàn) 學生學號: 學生姓名: 學 院: 計算機學院 專業(yè)班級: 軟件工程1341班 專業(yè)課程: 《高級程序設計語言》 指導教師: 2014 年 6 月 27 日 題 目 學生成績管理系統(tǒng)設計與實現(xiàn) 考核項目 考核內容 得分 平時考核 (30分)出勤情況、態(tài)度、效率;知識掌握情況、基
2、本操作技能、知識應用能力、獲取知識能力 系統(tǒng)設計 (20分)分析系統(tǒng)的功能模塊 編程調試 (20分)實現(xiàn)系統(tǒng)的各個功能模塊,并完成調試 回答問題 (15分)回答老師針對課程設計提出的問題 課程設計報告撰寫 (10分)嚴格按照規(guī)范要求完成課程設計報告 源代碼 (5分)按照規(guī)范要求完成課程設計源代碼的排版 總 評 成 績 指導教師評語: 日期: 年 月 日 目 錄 第1章 系統(tǒng)設計的概述和目的 1 1.1系統(tǒng)設計的目的 1 1.2 系統(tǒng)設計的任務 1 第2章 系統(tǒng)實現(xiàn)思路 2
3、 2.1 系統(tǒng)需求分析 2 2.2 系統(tǒng)功能分析 2 2.3 系統(tǒng)性能要求 3 第3章 系統(tǒng)詳細設計 4 3.1模塊設計與分析 4 3.2主函數(shù)設計 5 3.3特色算法分析 6 第4章 系統(tǒng)調試運行 15 課程設計體會 19 參考文獻 20 第1章 系統(tǒng)設計的概述和目的 在計算機領域中,任何好的創(chuàng)意和設計最終都需要通過高水平的程序設計實現(xiàn),因此學習程序設計是計算機及相關專業(yè)學生必備的基本技能之一。 1.1系統(tǒng)設計的目的 C++課程設計是計算機應用技術專業(yè)的重要實踐性環(huán)節(jié)之一,是學生學習該課程后的一次全面綜合訓練。通過本課程設計的實踐,更進一步總結C+
4、+課程學習中的的數(shù)據(jù)類型、程序結構、數(shù)組、函數(shù)、指針、結構體等基本概念,掌握其使用方法。掌握面向對象程序設計中有關類、對象、繼承、重載、多態(tài)性、輸入輸出流類體系、文件操作的基本概念,初步學會用類與對象這種面向對象的程序設計方法編寫應用程序。培養(yǎng)使用面向對象的程序設計方法編寫計算機程序的能力。同時,也鍛煉學生的團隊分工、協(xié)作能力,讓同學們在實踐的過程中,提高發(fā)現(xiàn)問題、分析問題、解決問題的能力。學會團結互助,共同合作,培養(yǎng)良好的團隊精神。 1.2 系統(tǒng)設計的任務 (1)設計四個類,包括學生類(描述學生基本信息)、成績類、班級類、課程類(描述課程信息:課程編號,科目名稱,如高等數(shù)學,大學英語等)
5、; (2)學生成績及課程信息用文件保存,程序執(zhí)行時從文件讀入; (3)能按學期、按班級完成對學生成績的錄入、修改,能按班級統(tǒng)計學生的成績; (4)求學生的總分及平均分,并能根據(jù)學生的平均成績進行排序,能查詢學生成績,不及格科目及學生名單;能按班級輸出學生的成績單。 ① 設置學生的成績信息:學生學號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 ②計算學生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) ③顯示學生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件)
6、 ④注意:至少應包含一個班、30人、三門課 第2章 系統(tǒng)實現(xiàn)思路 系統(tǒng)主要根據(jù)學生成績管理的需要,而建立一個“學生成績管理系統(tǒng)”,以方便對成績的各項管理操作。 2.1 系統(tǒng)需求分析 學生成績管理系統(tǒng)可以用來管理規(guī)模較大的成績信息,對學生的成績信息進行維護和統(tǒng)計。系統(tǒng)的目標用戶為老師或其他需要統(tǒng)計各種信息的人員。系統(tǒng)可以極大的減少用戶的工作量,為用戶節(jié)省更多的時間,讓用戶在幾秒鐘內獲得各種統(tǒng)計信息,在第一時間對學生成績有全面的了解。系統(tǒng)給用戶提供了簡單而實用的功能,如圖2-1所示。 學生成績管理系統(tǒng) 操作 查詢 成績統(tǒng)計 按總成績排名 錄入 增加 刪除 修改
7、 總成績查詢 姓名、平均分查詢 每個學生的平均成績 各科不及格的人數(shù) 輸出所有學生的成績 2-1模塊框架圖 2.2 系統(tǒng)功能分析 根據(jù)課程設計題目的要求,以及我們小組成員的討論,最終確定此程序有 以下功能: 1、資料維護: 系統(tǒng)維護包括對各個學生姓名、成績、學號的錄入操作,對數(shù)據(jù)表中的信息進行瀏覽。 2、成績查詢:可以對學生成績進行詳細查詢。 3、排列顯示:包括統(tǒng)計學生排名成績等。 (1)能夠實現(xiàn)學生學號、姓名、成績的錄入 (2)能夠實現(xiàn)對學生信息的瀏覽、查找、刪除 (3)能夠實現(xiàn)對學生信
8、息按學號順序顯示,成績排名 (4)能夠對各科成績統(tǒng)計情況輸出 2.3 系統(tǒng)性能要求 根據(jù)學生成績管理系統(tǒng)的標準,以及考慮到用戶的需求,所以我們在編寫系統(tǒng)程序時注意其實用性如下: (1)系統(tǒng)安全、可靠 (2)功能齊全 (3)操作方便 (4)易于維護和擴充 第3章 系統(tǒng)詳細設計 要開發(fā)學生成績管理信息系統(tǒng),首先需要進行需求分析和總體設計,分析系統(tǒng)的使用對象和用戶需求,設計系統(tǒng)的體系結構,決定使用的開發(fā)工具和后臺數(shù)據(jù)庫,規(guī)劃項目開發(fā)進程。 3.1模塊設計與分析 (1)輸入學生資料模塊 主要功能用來對學生的成績進行收集和輸入。在學生信息保存在系統(tǒng)中的前提下,成績錄入需要
9、輸入學生資料,比如班級,學號,姓名。在準確輸入學生資料后,就可以對該學生的各科成績進行錄入。該學生各科成績輸入成功后,系統(tǒng)會提示是否繼續(xù)進行操作,如果想繼續(xù)輸入學生成績就輸入y,不想再輸入學生成績的話就輸入n,再輸入n之后,系統(tǒng)返回到主菜單。 (2)輸出學生資料模塊 主要功能用來對學生的成績進行輸出。在系統(tǒng)已經(jīng)錄入了學生資料成績的前提下,使用該功能可以顯示所有學生的信息,資料等等。具體包括學生的班級,學號,姓名和各科成績。在查看學生的資料,成績各方面的信息后,按任意鍵就可以返回到主菜單。 (3) 按學生姓名進行排列模塊 主要功能是用來對學生的資料按姓名進行排序。在系統(tǒng)保存學生資料
10、,成績的前提下,使用此功能可以對學生的資料按姓名進行排序,這樣就方便查找姓氏相同或是相近的同學的資料。 (4) 添加學生資料模塊 主要功能是用來添加學生資料,成績。如果系統(tǒng)有保存學生資料的情況下,想錄入學生成績的話,就不用添加學生資料這模塊。如果系統(tǒng)沒有保存該學生信息的話,就要使用此模塊,在成功添加學生資料后,就可以對該學生進行其他的操作。 (5)按姓名查找,刪除該學生資料模塊 主要功能是用來刪除學生資料。在系統(tǒng)保存學生資料的前提下,想刪除某學生的資料,可以輸入學生姓名,系統(tǒng)查找該學生資料后,就可以刪除了。由于學生輟學,畢業(yè)等原因,及時對系統(tǒng)進行更新,刪除一些沒用的信息,可以使系統(tǒng)更
11、加優(yōu)化。 (6)查找并顯示學生資料模塊 主要功能是用來查找學生資料。在系統(tǒng)保存了某學生資料的前提下,想要查找該學生資料,可以輸入該學生姓名,這樣系統(tǒng)就會顯示該學生資料和各科成績等信息。 (7)按姓名查找,修改學生資料模塊 主要功能是用來修改學生資料。在系統(tǒng)保存了某學生資料的前提下,想要查找該學生資料,可以輸入該學生姓名,系統(tǒng)就會顯示該學生資料和各科成績等信息,這樣就可以修改該學生的資料,成績等信息。 (8)從文件中讀入數(shù)據(jù)模塊 主要功能是用來從文件中讀入學生數(shù)據(jù)。由于一些資料可以用Word文檔或Excel表格輸入,故在此模塊中增加了導入數(shù)據(jù)的功能。這樣就方便很多,不用把學生資
12、料一個一個添加,節(jié)省了很多時間精力。 (9)儲存學生資料并退出系統(tǒng)模塊 主要功能是用來儲存學生資料。在對系統(tǒng)進行一系列操作,比如添加、刪除、修改學生資料后,對系統(tǒng)的最新操作進行保存,及時更新系統(tǒng),方便下一次的操作。 3.2主函數(shù)設計 在main()函數(shù)中主要是通過”switch(menu())”選擇判斷來調用相關功能模塊。系統(tǒng)的運行是在一個永真的循環(huán)里進行的,只有在主界面并選擇“退出本系統(tǒng)”時,才會跳出永真循環(huán),并退出程序。主函數(shù)在程序中起核心作用,本程序的主函數(shù)主要完成了界面的設計、調用成績類的函數(shù)計算總成績、平均成績和總評成績,然后是定義指針方便后面調用類的數(shù)據(jù)成員,還定義了全局
13、變量用于輸入數(shù)據(jù)的下標。
(1)首先是介紹界面設計和選擇操作的設計:
void main()
{
cout<<" 歡迎進入學生成績管理系統(tǒng) "< 14、< 15、色算法分析
功能:定義菜單函數(shù),通過輸出函數(shù)顯示系統(tǒng)功能。利用switch語句實現(xiàn)多分支選擇結構。
1.算法思路:switch語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與某個case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句。
代碼:
void main() //主函數(shù)調用。
{
int n=0;
for(;;)
{
switch(menu())
{
case 1: 輸入學生資料
16、cout< 17、etw(15)<<" "<<"插入學生資料"< 18、<"查找學生"< 19、ext(stu,n);
break;
case 9: 將所有資料寫入文件
cout< 20、()
{};
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;
cpp=cj;
english=eng;
}
float 21、Tstu::getsum() //得到總分的函數(shù)
{
sum=cpp+english+math;
return sum;
}
float Tstu::getaver()
{
average=getsum()/3;
return average;
}
(3)然后用switch函數(shù)判斷和選擇
case 1: 數(shù)據(jù)的錄入
case 2: 增加學生數(shù)據(jù)
case 3:刪除學生信息
case 4:修改數(shù)據(jù)
case 5:按總分查詢
case 6:按姓名查詢
case 7:輸出所有學生數(shù)據(jù)
case 8:統(tǒng)計每個學生的平均成績
c 22、ase 9:統(tǒng)計各學科不及格人數(shù)
case 10:按總分排名
2.下面是操作選項的選擇下標的設計,設計全局變量可以很好的控制下標的選擇,而且定義的指向各個類的指針可以方便后面操作程序的編寫。
(1)cout<<"選擇操作請選擇相應操作前的阿拉伯數(shù)字!"< 23、000];
int i=0;//全局變量,用于做每個錄入數(shù)據(jù)的下標
int j=0;
int chrisl=0;//用于判斷do-while語句
do//判斷輸入是否正確
{
cin>>p;
if((p>=1&&p<=12))
chrisl=1;
else
cout<<"!!輸入錯誤,請重新輸入:"< 24、1://數(shù)據(jù)錄入
{char c;//用于在小項中選擇是否繼續(xù)操作
char name[30];//定義各個數(shù)據(jù)
int number;
float math,cpp,chinese;
float pingshicj;
float zpcj;
上面是數(shù)據(jù)成員的定義,接下來是具體操作的編譯:
do{
cout<<"請輸入姓名"< 25、l;
cin>>cpp;
cout<<"請輸入語文成績"< 26、
do{
flag=0;
cout<<"請輸入你要查詢的學生的總成績:"< 27、語文分數(shù):"<<(*d[j]).chinese<<"平時成績:"<<(*f[j]).pingshicj< 28、方便的查詢到你所希望的平均分的學生輸出所以學生數(shù)據(jù)操作
case 6://輸出所有學生數(shù)據(jù)
{
cout<<"所有學生數(shù)據(jù)如下:"< 29、m=0;m
30、=0;n=0;k=0;
for(j=0;jmath<60)m++;
if(d[j]->cpp<60)n++;
if(d[j]->chinese<60)k++;
}
cout<<"數(shù)學不及格人數(shù)為:"< 31、來測試,從而保證每個模塊作為一個單元能正確運行。進而進行子系統(tǒng)測試,子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試。模塊相互間的協(xié) 行系統(tǒng)測試,系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試,在這個過程中我發(fā)現(xiàn)設計和編碼的一些錯誤,并改正。
進入主界面,首先可以看到,主界面共有11個操作選項,11個小選項又分為4個大的選項:操作、查詢、成績統(tǒng)計和排名,當用戶看完操作選項以后是一條溫馨的提示:選擇操作請選擇相應的阿拉伯數(shù)字。如圖4-1所示。
用戶選擇的是數(shù)字“1”,接下來就是輸入學生姓名等信息了。
4-1 登陸界面圖
輸入完學生信息以后界面顯示的信息,可以看到 32、,當輸入完成時系統(tǒng)會自動顯示出學生信息,如圖4-2所示。
4-2學生數(shù)據(jù)的錄入圖
選擇刪除操作,可以發(fā)現(xiàn)當完成刪除操作后都會提醒您是否要繼續(xù),如圖4-3。
4-3學生數(shù)據(jù)的刪除圖
數(shù)據(jù)的修改操作,您可以發(fā)現(xiàn)當完成刪除操作后都會提醒您是否要繼續(xù),如圖4-4所示。
4-4學生數(shù)據(jù)的修改圖
執(zhí)行按總成績查詢操作,需要先輸入總成績,如圖4-5所示。
4-5按總成績查詢圖
執(zhí)行按學生姓名操作,需要先輸入學生姓名,如圖4-6所示。
4-6按姓名查詢圖
每個學生平均成績的輸出,如圖4-7所示。
4-7每個學生的平均成績圖
各科不及格人數(shù)的輸出如圖4-8所 33、示。
4-8各科不及格的人數(shù)圖
系統(tǒng)的退出,如圖4-9所示。
4-9退出圖
課程設計體會
通過這次的實訓我深刻的體會到了要想把程序做好要有清晰的思路有較強的語言組織能力,一絲的馬虎否則會前功盡棄。程序的檢查和系統(tǒng)的調用程序寫完后并不能保證它一定能運行,所以要對它進行調試發(fā)現(xiàn)其中的弊端并作出相應的修改以完善程序的目的。經(jīng)過努力,課程設計基本完成了。通過本次實訓,我對所學的C++語言知識有同學請教,借助網(wǎng)絡等等。實驗過程中也走了很多的彎路,由于在開始設計的時候思路不時很清晰,對于一些問題不能很好的提出解決問題的方法,在設計過程中,代碼總是重復的修改,在很多問題上,代 34、碼并不時最優(yōu)的。相信在以后的學習中,隨著知識的增多,問題會逐漸得到解決。在課程設計的實踐中,學到很多有用的知識,也積累了不少寶貴的經(jīng)驗。我相信本次的課程設計會使我以后再各種方面都有很大的提高。
參考文獻
[1] 譚浩強.《C++面向對象程序設計》.清華大學出版社
[2] 譚浩強.《C++面向對象程序設計習題上機指導》.清華大學出版社
[3] Kenneth C.Louden.《編譯原理及實踐》.機械工業(yè)出版社
[4] H.M.Deitel(美) P.J.Deitel(美).《C++大學教程》.電子工業(yè)出版社
[5] Herbert Schildt.《C++編譯藝術》.清華大學出版 35、社?
[6] Al Stevens Clayton Walnum(美).《標準C++寶典》.電子工業(yè)出版社
#include 36、 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); //得到姓名
numbe 37、r=num; //得到學號
math=ma; //得到數(shù)學成績
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()
{
cout<<" 38、*****************歡迎來到學生成績查詢系統(tǒng)*****************"< 39、ut<<"(7)輸出所有學生的數(shù)據(jù)"< 40、s[100]; //類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲
ofstream *file[100];
int i=0; //全局變量,用于做每個錄入數(shù)據(jù)的下標
int j=0;
int chris1=0; //用于判斷do—while語句
do //判斷輸入是否正確
{
cin>>p;
if((p>=1&&p<=11))
chris1=1;
else
cout<<"指令錯誤!請重新輸入:"< 41、 case 1: //數(shù)據(jù)的錄入
{
char c; //用于在小項中選擇是否繼續(xù)操作
char name[20];
int number;
float math,cpp,english;
do{
cout<<"請輸入姓名:"< 42、<"請輸入數(shù)學成績:"< 43、
{ cout<<"f1.txt can not open.\n";
return;
}
outfile< 44、1.txt can not open.\n";
return;
}
char ch;
while(infile.get(ch))
cout< 45、 cout<<"數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)"< 46、;
}
case 2: //增加學生數(shù)據(jù)
{
char name[20];
int number;
float math,cpp,english;
char c;
do
{
cout<<"請輸入您要增加的學生的姓名:"< 47、< 48、file.open("f1.txt",ios::out|ios::app);
if(!file)
{
cout<<"f1.txt can not open.\n";
return;
}
outfile< 49、 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< 50、< 51、cout<<"指令錯誤!請重新輸入!"< 52、.txt",ios::trunc|ios::out); //作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)
cout<<"請輸入您要刪除的學生的姓名:"< 53、 name = line.substr(0,line.find(" ",0));//找到名字,判斷是否相等
if(name != xingming)
outfile< 54、::out);
ifstream outf("f2.txt");
f< 55、
{
cout<<"指令錯誤!請重新輸入!"< 56、ut<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 57、line);
istringstream stream(line);
sname = line.substr(0,line.find(" ",0));
if(name!=sname)
{
outfile< 58、nu>>ma>>com>>eng;
cout< 59、lose();
inf.close();
}
if(flag=0)cout<<"對不起,您要修改的學生不存在!請查證后輸入!"< 60、}
case 5://按總分查詢
{
int j=0;float SUM;char c;int flag;
if(i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"< 61、 {
flag=1;
cout<<"您要查詢的學生是:"<<(*s[j]).name< 62、<<"是否繼續(xù)查?(y/n):";
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令錯誤!請重新輸入!"< 63、l;break;
}
do
{
flag=0;
cout<<"請輸入要查詢的名字: "< 64、s[j]).math<<"c++分數(shù):"<<(*s[j]).cpp<<"英語分數(shù):"<<(*s[j]).english< 65、le(c=='y');
break;
}
case 7://輸出所有學生數(shù)據(jù)
{
cout<<"所有學生數(shù)據(jù)如下:"< 66、i==0)
{
cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會全文PPT
- 2025年寒假安全教育班會全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專題PPT
- 主播直播培訓提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機關工委2024年度年終黨建工作總結述職匯報
- 心肺復蘇培訓(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學生活介紹
- XX單位2024年終專題組織生活會理論學習理論學習強黨性凝心聚力建新功
- 2024年XX單位個人述職述廉報告
- 一文解讀2025中央經(jīng)濟工作會議精神(使社會信心有效提振經(jīng)濟明顯回升)
- 2025職業(yè)生涯規(guī)劃報告自我評估職業(yè)探索目標設定發(fā)展策略
- 2024年度XX縣縣委書記個人述職報告及2025年工作計劃
- 寒假計劃中學生寒假計劃安排表(規(guī)劃好寒假的每個階段)
- 中央經(jīng)濟工作會議九大看點學思想強黨性重實踐建新功