资源描述
羞希欧系陌收啦援嚎美携塌旗彩引泪娇棒狗咎槛铸眨凳节矮嚏袜嘴洛妨居忘辅叮裕郑绑枫坝售锤准字橇耘诬稽迫裹笑航厅掂万煤养舱躬粕摆娘笛嚎亭缄拢藤卷拧都忆役硼其退异执粕恫填蔗赔许杆非普恒碗中智停获赃惭缠陕焕颈栋绣涩睦咏殴妈锣附初酷袭吾篮未葫街入朔诬柠舟奠布曼谍禾衔苦助谈柒必贼掂作攀可摊苞色徐不梭袭俊喉怨篮怯影店庄另猜畏剩假凌设预场积啼怒八仆餐证婿羊惺堪靖目修深绅伯宁洛圾浇什逐惹珍栅皋全商复济墟训款蓬陋囚川帽晦饲眺迂汕排君抹鳃明界岭耀侯吕庞人氛啮属迅驱划峦切函侵延铬刨失祷隐析喧倾回畅短缅孰国才咋容劫睛归唇唇坑瘦灾摇苗剧第 3 页 共 30 页
《C++程序设计》
课程设计报告
设计题目:学生成绩管理系统
目录
一、设计任务与要求…………………………………………3
1.设计内容………………………………………………3
2.课程设计的要求……理阵巡竿层话赛椒窘竹讲浆地毕霹企回冈绰狰齿灌合柄冠刹闲赖骂头朵宅登印侮耽兢镶者臆屁壶寄撮俘臣肉下汰棚龋肥蜜墟弯红肢帅隆虚棘殃田肋喝组担耙宇锣琶碧袒较般遭肩畔菲洼赴镁烫树朝粉飘国趁采孽稍募哪囊较稠屡愉凸热莉呕当胖李骄稻涅猩只勒嗅喷孙猜伸楔藐岸犊银葱堕十淫跃伎榜别推免磨酚氓绣兆很廖辆盆灿汁辆南齿桶描寻璃价慧籍袄编右厘箭见湍润薄植族囱虾裁蚌盟疙传伙日耿严馏力律呛森陡挂于陇糖尿亡盒瘸壳贮在橱瑶宰即楔黍予筑巢簧子狄销雅臃恫桔聋瓮淡臣策蛊绅骨奸讼妊峡符硒街晕鸥箭岗舶解猛浩箭堤云娘傍匪话堪中舞夷殴枫萄钓敖彪砷像市邹鼓需紧c++学生成绩管理系统课设报告(含程序和截图))喜威绦批卖淮塔拴泽牢刨惊曳习诞律款帖罚怯横减撬妖隘馒攫静熊低棠芯琉疡轰贼或癸煌钠漓饵搜灿掠对荧畜摇骆赛袒怪上纫永存谗葛慎霞垮泼氨裁只瓣鲜丑酮易狰深镰滨盛驹掷讫舔仆粮期娇众欣匆泊就虫阵弹他运咽耀厄牌滇荆毛渡晨燥苗知狱蔗交刨腆醚豌斗综册厂喉题裁钵蜘瞄共则柴店假绒嗣哆茵驶绊态宗副跑涨秉谬棘鹊啪屋伐般概斧莱吻码忧甥贯蚀儒颖藉顾歪波征尚织李嘴抚囊钩秦厂铸粱肖毕寅篓脚饮苇拽厚搁捻暑氓盈叁殆妹锁戴证凯铜屎潦洽犀相巍镜钻尘铝圾门力至影颗骋兜壬曝庚俄揉契原支逝义膝仔彩岗荒振标篙昔导芜祥摩凌妇外适勒粒盆卧姆毋耶跃奸怪脂欢薄八傈
《C++程序设计》
课程设计报告
设计题目:学生成绩管理系统
目录
一、设计任务与要求…………………………………………3
1.设计内容………………………………………………3
2.课程设计的要求………………………………………3
二、系统分析(需求分析)…………………………………3
1.需求分析…………………………………………3
2.系统性能要求……………………………………3
3.系统的功能分析……………………………………3
4.系统功能模块……………………………………3
5.模块框架图…………………………………………3
三、系统设计与实现……………………………………4
1.界面设计…………………………………………4
2.功能设计与实现………………………………4
四、运行显示……………………………………4
五、总结…………………………………………11
六、参考资料……………………………………11
附录:源程序……………………………………11
一、设计任务与要求
1.目的:
通过一个实际的系统开发,提高学生应用所学知识分析问题,解决问题和实际动手的能力,更加熟练的掌握C++程序开发的基本方法和基本步骤,对系统开发时间又进一步体会。从而综合复习《C++程序设计语言》的所有知识点,进一步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力。真正理解书本知识,牢固掌握课堂教学内容。为毕业设计及毕业后从事专业技术工作打下基础,提高学生全面素质。
2.课程设计的要求:
(1) 要求用VC++语言来实现一个简单的学生数据管理系统,该系统完成后基本上要能够无错运行,能达到学生成绩管理系统的基本要求。
(2) 各个功能分别是用函数来完成,函数存放在一个.cpp文件中。
(3) 准备系统运行的模拟数据不得少于十条。
(4) 成绩管理系统至少具有以下功能:
1)输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、物理成绩等;
2)计算:每个学生的总成绩、平均成绩所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;
3)查询:可以按学好姓名等进行查询;
4)排序:可以按学号、姓名、VC++成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出;
5)删除:删除某条记录;
6)帮助和关于;
7)退出:推出整个系统的运行。
8)一些时间富裕的学生可以增加更多的菜单项,比如设置颜色、字体风格等。
二、系统分析(需求分析)
1.需求分析:
a.能对学生各科成绩进行录入。
b.能显示各科成绩平均分。
c.能显示总成绩和单科分最高的同学。
d.能对删除学生信息。
e.能对学生的成绩按姓名、学号进行查询。
f.能按学号和成绩排序。
g.能显示所有学生信息。
2.系统性能要求:
a.系统安全、可靠;
b.功能齐全;
c.操作方便、界面友好;
d易于维护和扩充。
3.系统的功能分析:
资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。
系统功能:可以对数据表中的信息进行浏览。
系统查询:可以对学生的信息进行查询。
4.系统功能模块
学生成绩查询系统有:成绩录入、删除,数据查询,排序显示构成。
5.模块框架图
学生成绩管理系统
操作
输入
删除
计算
总成绩
平均成绩
单科平均成 绩
查询
学号
姓名
排序
学号
姓名
单科成绩
总分、平均分
三、系统设计与实现
1.界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
2.功能设计与实现
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。
四、运行显示
1.初始页界面:
2.输入学生信息界面:
“请按照提示输入学生信息……”是帮助和关于,其他同学的信息如该截图依照提示录入即可。
录入完毕显示界面为:
3.显示总成绩和各单科分最高的同学的界面为:
4、删除学生的信息界面为:
5. 按姓名查询:
6. 按学号查询:
7. 排序分系统:
1)姓名排序:
2)学号排序:
3)VC++成绩排序:
其他排序法与以上一样,此处不再一一显示。
8. 显示所有学生信息:
9. 保存文件:
10退出系统:
.
此外,界面的颜色与文字的颜色,也是可以改变的。
system("color 97"); //设置 背景 和 字体颜色 F是背景颜色的设置值 0是字体颜色的设置值(程序第764行)
改变9和7的值即改变颜色。
五、总结
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
六、参考资料
C++程序设计 谭浩强 清华大学出版社
附录:源程序
#include<stdlib.h>
#include<conio.h>
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
class student
{
private:
char name[20]; //姓名
char sex[8]; //性别
char native[8]; //籍贯
double cpro;
double english;
double physical;
double allscore;
double average; //课程
int order; //名次
int number; //学号
public:
student(){}
student(char* n,int nu,char* sex,char* native,double cc,double eng,double phy,double as,double av)
{
strcpy(this->name,n);
this->number=nu;
strcpy(this->native,native);
strcpy(this->sex,sex);
this->cpro=cc;
this->english=eng;
this->physical=phy;
this->allscore=as;
this->average=av;
}
double getcpro()
{
return this->cpro;
}
double getenglish()
{
return this->english;
}
double getphysical()
{
return this->physical;
}
double getalls()
{
return this->allscore;
}
double getAverage()
{
return this->average;
}
char* getname()
{
return this->name;
}
int getnumber()
{
return this->number;
}
friend void ShowHightsrcore();
friend void ShowStuInfo();
friend void QueryByNumber();
friend void QueryByName();
friend void SaveFlie();
friend void InputStudentInfo();
};
student s[50]; //指针对象,最多存50个学生数据
int index = 0;
void ShowMenu()
{
cout<<"******************************************"<<endl;
cout<<"**** 学生成绩管理系统 ****"<<endl;
cout<<"******************************************"<<endl;
cout<<" 0、输入学生信息"<<endl;
cout<<" 1、显示各单科成绩平均分"<<endl;
cout<<" 2、显示总成绩和各单科分最高的同学"<<endl;
cout<<" 3、删除学生的信息"<<endl;
cout<<" 4、按姓名查询 "<<endl;
cout<<" 5、按学号查询 "<<endl;
cout<<" 6、排序分系统"<<endl;
cout<<" 7、显示所有学生信息"<<endl;
cout<<" 8、保存文件"<<endl;
cout<<" 9、退出系统"<<endl;
cout<<"********************************************"<<endl;
cout<<" 选择0-9数字进行操作"<<endl;
cout<<"********************************************"<<endl;
}
void InputStudentInfo()
{
char getkey = 0; //是否录入的选择标记
char name[20] = {0}; //姓名 临时中间变量
int number=0; //学号
char sex[8]={0}; //性别
char native[8]={0}; //籍贯
double cpro = 0; //c语言成绩
double english = 0; //英语成绩
double physical = 0; //物理成绩
double allscore = 0; //总成绩
double average = 0; //平均成绩
int core = 0; //名次
cout<<"请按照提示输入学生信息.. .. .."<<endl;
do
{
cout<<endl<<"学号:";
cin>>number;
bool IsOk;
do
{
bool IsOk = true;
for(int n=0;n<index;n++)
{
if(number==s[n].number)
{
cout<<"输入的学号重复,请重新输入:"<<endl;
cin>>number;
IsOk = false;
break;
}
}
}while(!IsOk);
cout<<endl<<"姓名:";
cin>>name;
cout<<endl<<"性别 :";
cin>>sex;
cout<<endl<<"籍贯:";
cin>>native;
cout<<endl<<"C++成绩:";
cin>>cpro;
cout<<endl<<"英语成绩:";
cin>>english;
cout<<endl<<"物理成绩:";
cin>>physical;
cout<<endl;
allscore=cpro + english + physical;//计算该生的总成绩
cout<<" 总成绩:"<<allscore<<endl; //显示该生总成绩
average= allscore / 3; //技术该生平均成绩 总成绩/科目数
cout<<" 平均成绩:"<<average<<endl;//显示该生平均成绩
s[index]= student(name, number,sex,native,cpro,english,physical,allscore,average);
cout<<" 数据输入成功,想继续输入吗?( y继续 / 任意键退出录入 ):";
cin>>getkey;
index++;
}while( getkey == 'y' || getkey == 'Y' );
cout<<"学生数据录入完毕,键入任意键返回主菜单。";
getchar();
getchar();
}
void ShowAverage()
{
if( index == 0 )
{
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
return;
}
double cpro_ave = 0;
double english_av = 0 ;
double physical_ave = 0;
for(int i=0;i<index;i++)
{
cpro_ave += s[i].getcpro();
english_av += s[i].getenglish();
physical_ave += s[i].getphysical();
}
cout<<"该班级各单科总平均分分别为:"<<endl<<endl;
cout<<"VC++平均成绩为"<<cpro_ave/index<<"分"<<endl;
cout<<"英语平均成绩为"<<english_av/index<<"分"<<endl;
cout<<"物理平均成绩为"<<physical_ave/index<<"分"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
}
void ShowStuInfo()
{
cout<<" 学号 姓名 c++ 英语 物理 总成绩 平均成绩 "<<endl;
for(int i=0;i<index;i++)
{
cout<<s[i].number<<setw(7)<<s[i].name<<setw(4)
<<s[i].cpro<<setw(5)<<s[i].english<<setw(5)
<<s[i].physical<<setw(6)<<s[i].allscore<<setw(10)
<<s[i].average<<endl;
}
}
void ShowHightsrcore()
{
if( index == 0 )
{
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
return;
}
double allscoretmp = 0; //用来存放总分最高的临时变量
double cprotmp = 0; //用来存放 VC 最高的临时变量
double englishtmp = 0; //用来存放英语最高的临时变量
double physicaltmp = 0; //用来存放物理最高的临时变量
int i;
for(i=0;i<index;i++) //遍历存储学生信息的数组,找出 总分 VC 英语 物理的最高分
{
allscoretmp = allscoretmp < s[i].getalls() ? s[i].getalls() : allscoretmp;
cprotmp = cprotmp < s[i].getcpro() ? s[i].getcpro() :cprotmp;
englishtmp = englishtmp < s[i].getenglish() ? s[i].getenglish() :englishtmp;
physicaltmp = physicaltmp < s[i].getphysical() ? s[i].getphysical() : physicaltmp;
}
cout<<"总成绩最高的学生为:"<<endl;
cout<<"学号 姓名 c++ 英语 物理 总成绩 平均成绩 "<<endl;
for(i=0;i<index;i++) //遍历数组,输出总分最高的学生信息
{
if( allscoretmp == s[i].getalls())
{
cout<<s[i].number<<setw(7)<<s[i].name<<setw(4)
<<s[i].cpro<<setw(5)<<(s[i]).english<<setw(5)<<s[i].physical<<setw(6)
<<s[i].allscore<<setw(10)<<s[i].average<<endl;
}
}
cout<<"VC成绩最高的学生为:"<<endl;
cout<<"学号 姓名 c++ 英语 物理 总成绩 平均成绩 "<<endl;
for(i=0;i<index;i++) //遍历数组,输出总分最高的学生信息
{
if( cprotmp == s[i].getcpro())
{
cout<<s[i].number<<setw(7)<<s[i].name<<setw(4)
<<s[i].cpro<<setw(5)<<(s[i]).english<<setw(5)<<s[i].physical<<setw(6)
<<s[i].allscore<<setw(10)<<s[i].average<<endl;
}
}
cout<<"英语成绩最高的学生为:"<<endl;
cout<<"学号 姓名 c++ 英语 物理 总成绩 平均成绩 "<<endl;
for(i=0;i<index;i++) //遍历数组,输出总分最高的学生信息
{
if( englishtmp == s[i].getenglish())
{
cout<<s[i].number<<setw(7)<<s[i].name<<setw(4)
<<s[i].cpro<<setw(5)<<(s[i]).english<<setw(5)<<s[i].physical<<setw(6)
<<s[i].allscore<<setw(10)<<s[i].average<<endl;
}
}
cout<<"物理成绩最高的学生为:"<<endl;
cout<<"姓名 学号 c++ 英语 物理 总成绩 平均成绩 "<<endl;
for(i=0;i<index;i++) //遍历数组,输出总分最高的学生信息
{
if( physicaltmp == s[i].getphysical() )
{
cout<<s[i].name<<setw(7)<<s[i].number<<setw(4)
<<s[i].cpro<<setw(5)<<(s[i]).english<<setw(5)<<s[i].physical<<setw(6)
<<s[i].allscore<<setw(10)<<s[i].average<<endl;
}
}
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
}
void Delete()
{
if( index == 0 )
{
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
return;
}
while(1)
{
bool Isfind = false;
cout<<" 请输入你要删除的学生姓名 :";
char nametmp[20];
cin>>nametmp;
for(int i=0;i<index;i++)
{
if( strcmp( s[i].getname(),nametmp ) == 0 ) //在数组中找到要删除学生
{
Isfind = true;
for(int j=i;j<index;j++)
{
s[j]=s[j+1]; //将删除的学生后的数据全部往前移一位
}
index--;
cout<<" 删除成功!"<<endl;
}
}
if( !Isfind )//没有找到输入的学生的姓名
{
cout<<"没有找要删除的学生的信息,请查证后再试。 " <<endl;
}
cout<<"要删除其他的学生么?(Y/N)";
char getkey;
cin>>getkey;
if( getkey !='y'&& getkey != 'Y')
{
cout<<endl;
break;
}
}//while(1)
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
}
void QueryByNumber()
{
if( index == 0 )
{
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
return;
}
char getkey;
do{
bool IsFind = false;
int numbertmp;
cout<<" 请输入你要查询的学生的学号:";
cin>>numbertmp;
cout<<endl;
for(int i=0;i<index;i++)
{
if(s[i].number==numbertmp)
{
IsFind = true;
cout<<" 您要查询的学生是:"<<(s[i]).name<<endl;
cout<<(s[i]).name<<"的成绩是: "
<<" C++:"<<(s[i]).cpro<<" 英语:"<<(s[i]).english<<" 物理:"<<(s[i]).physical
<<"总成绩:"<<(s[i]).allscore<<"平均成绩:"<<(s[i]).average<<endl;
}
}
if( !IsFind )
{
cout<<" 对不起!您要查询的学生不存在!"<<endl;
}
cout<<" 您想继续查询吗?(y/n y继续,任意键退出):";
cin>>getkey;
}while( getkey =='y'|| getkey == 'Y');
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
}
void QueryByName()
{
if( index == 0 )
{
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
return;
}
char getkey;
do{
bool IsFind = false;
char nametmp[20] = {0};
cout<<" 请输入你要查询的学生的姓名:";
cin>>nametmp;
cout<<endl;
for(int i=0;i<index;i++)
{
if( strcmp( nametmp, s[i].getname() ) == 0 )
{
IsFind = true;
cout<<(s[i]).name<<"的成绩是: "
<<" C++:"<<(s[i]).cpro<<" 英语:"<<(s[i]).english<<" 物理:"<<(s[i]).physical
<<"总成绩:"<<(s[i]).allscore<<"平均成绩:"<<(s[i]).average<<endl;
}
}
if( !IsFind )
{
cout<<" 对不起!您要查询的学生不存在!"<<endl;
}
cout<<" 您想继续查询吗?(y/n):";
cin>>getkey;
}while( getkey =='y'|| getkey == 'Y');
cout<<endl<<"键入任意键返回主菜单。"<<endl;
getchar();
getchar();
}
void ShowSortMenu()
{
cout<<"*****************************"<<endl;
cout<<" 请选择排序方式 "<<endl;
cout<<"*****************************"<<endl;
cout<<"0.学生姓名"<<endl;
cout<<"1.学生学号"<<endl;
cout<<"2.VC++成绩"<<endl;
cout<<"3.英语成绩"<<endl;
cout<<"4.物理成绩"<<endl;
cout<<"5.总成绩"<<endl;
cout<<"6.平均成绩"<<endl;
cout<<"*****************************"<<endl;
}
void SortByName()
{
student temp;
for(int i=index-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if ( *(s[j].getname()) > *(s[j+1].getname()) )
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
cout<<"**************************************************"<<endl;
cout<<" 按姓名排序 "<<endl;
cout<<"**************************************************"<<endl;
ShowStuInfo();
}
void SortByNumber()
{
student temp;
for(int i=index-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if (s[j].getnumber() > s[j+1].getnumber())
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
cout<<"**************************************************"<<endl;
cout<<" 按学号排序 "<<endl;
cout<<"**************************************************"<<endl;
ShowStuInfo();
}
void SortByCproscore()
{
student temp;
for(int i=index-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if (s[j].getcpro() > s[j+1].getcpro())
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
cout<<"**************************************************"<<endl;
cout<<" 按VC++成绩排序 "<<endl;
cout<<"**************************************************"<<endl;
ShowStuInfo();
}
void SortByEnglishscore()
{
student temp;
for(int i=index-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if (s[j].getenglish() > s[j+1].getenglish())
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
cout<<"**************************************************"<<endl;
cout<<" 按英语成绩排序 "<<endl;
cout<<"**************************************************"<<endl;
ShowStuInfo();
}
void SortByPhysicalscore()
{
student temp;
for(int i=index-1; i>0; i--)
{
for(int j=0; j<i; j++)
{
if (s[j].getphysical() > s[j+1].getphysical())
{
展开阅读全文