c学生成绩管理系统课设报告含程序和截图.docx
《c学生成绩管理系统课设报告含程序和截图.docx》由会员分享,可在线阅读,更多相关《c学生成绩管理系统课设报告含程序和截图.docx(35页珍藏版)》请在冰豆网上搜索。
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("color97");//设置背景和字体颜色F是背景颜色的设置值0是字体颜色的设置值(程序第764行)
改变9和7的值即改变颜色。
五、总结
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
六、参考资料
C++程序设计谭浩强清华大学出版社
附录:
源程序
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classstudent
{
private:
charname[20];//姓名
charsex[8];//性别
charnative[8];//籍贯
doublecpro;
doubleenglish;
doublephysical;
doubleallscore;
doubleaverage;//课程
intorder;//名次
intnumber;//学号
public:
student(){}
student(char*n,intnu,char*sex,char*native,doublecc,doubleeng,doublephy,doubleas,doubleav)
{
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;
}
doublegetcpro()
{
returnthis->cpro;
}
doublegetenglish()
{
returnthis->english;
}
doublegetphysical()
{
returnthis->physical;
}
doublegetalls()
{
returnthis->allscore;
}
doublegetAverage()
{
returnthis->average;
}
char*getname()
{
returnthis->name;
}
intgetnumber()
{
returnthis->number;
}
friendvoidShowHightsrcore();
friendvoidShowStuInfo();
friendvoidQueryByNumber();
friendvoidQueryByName();
friendvoidSaveFlie();
friendvoidInputStudentInfo();
};
students[50];//指针对象,最多存50个学生数据
intindex=0;
voidShowMenu()
{
cout<<"******************************************"<cout<<"****学生成绩管理系统****"<cout<<"******************************************"<cout<<"0、输入学生信息"<cout<<"1、显示各单科成绩平均分"<cout<<"2、显示总成绩和各单科分最高的同学"<cout<<"3、删除学生的信息"<cout<<"4、按姓名查询"<cout<<"5、按学号查询"<cout<<"6、排序分系统"<cout<<"7、显示所有学生信息"<cout<<"8、保存文件"<cout<<"9、退出系统"<cout<<"********************************************"<cout<<"选择0-9数字进行操作"<cout<<"********************************************"<}
voidInputStudentInfo()
{
chargetkey=0;//是否录入的选择标记
charname[20]={0};//姓名临时中间变量
intnumber=0;//学号
charsex[8]={0};//性别
charnative[8]={0};//籍贯
doublecpro=0;//c语言成绩
doubleenglish=0;//英语成绩
doublephysical=0;//物理成绩
doubleallscore=0;//总成绩
doubleaverage=0;//平均成绩
intcore=0;//名次
cout<<"请按照提示输入学生信息......"<do
{
cout<";
cin>>number;
boolIsOk;
do
{
boolIsOk=true;
for(intn=0;n{
if(number==s[n].number)
{
cout<<"输入的学号重复,请重新输入:
"<cin>>number;
IsOk=false;
break;
}
}
}while(!
IsOk);
cout<";
cin>>name;
cout<";
cin>>sex;
cout<";
cin>>native;
cout<";
cin>>cpro;
cout<";
cin>>english;
cout<";
cin>>physical;
cout<allscore=cpro+english+physical;//计算该生的总成绩
cout<<"总成绩:
"<average=allscore/3;//技术该生平均成绩总成绩/科目数
cout<<"平均成绩:
"<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();
}
voidShowAverage()
{
if(index==0)
{
cout<<"管理系统中没有输入数据!
"<cout<"<getchar();
getchar();
return;
}
doublecpro_ave=0;
doubleenglish_av=0;
doublephysical_ave=0;
for(inti=0;i{
cpro_ave+=s[i].getcpro();
english_av+=s[i].getenglish();
physical_ave+=s[i].getphysical();
}
cout<<"该班级各单科总平均分分别为:
"<cout<<"VC++平均成绩为"<cout<<"英语平均成绩为"<cout<<"物理平均成绩为"<cout<"<getchar();
getchar();
}
voidShowStuInfo()
{
cout<<"学号姓名c++英语物理总成绩平均成绩"<for(inti=0;i{
cout<
<
<
<
}
}
voidShowHightsrcore()
{
if(index==0)
{
cout<<"管理系统中没有输入数据!
"<cout<"<getchar();
getchar();
return;
}
doubleallscoretmp=0;//用来存放总分最高的临时变量
doublecprotmp=0;//用来存放VC最高的临时变量
doubleenglishtmp=0;//用来存放英语最高的临时变量
doublephysicaltmp=0;//用来存放物理最高的临时变量
inti;
for(i=0;i{
allscoretmp=allscoretmp
s[i].getalls():
allscoretmp;
cprotmp=cprotmp
s[i].getcpro():
cprotmp;
englishtmp=englishtmp
s[i].getenglish():
englishtmp;
physicaltmp=physicaltmp
s[i].getphysical():
physicaltmp;
}
cout<<"总成绩最高的学生为:
"<cout<<"学号姓名c++英语物理总成绩平均成绩"<for(i=0;i{
if(allscoretmp==s[i].getalls())
{
cout<
<
<
}
}
cout<<"VC成绩最高的学生为:
"<cout<<"学号姓名c++英语物理总成绩平均成绩"<for(i=0;i{
if(cprotmp==s[i].getcpro())
{
cout<
<
<
}
}
cout<<"英语成绩最高的学生为:
"<cout<<"学号姓名c++英语物理总成绩平均成绩"<for(i=0;i{
if(englishtmp==s[i].getenglish())
{
cout<
<
<
}
}
cout<<"物理成绩最高的学生为:
"<cout<<"姓名学号c++英语物理总成绩平均成绩"<for(i=0;i{
if(physicaltmp==s[i].getphysical())
{
cout<
<
<
}
}
cout<"<getchar();
getchar();
}
voidDelete()
{
if(index==0)
{
cout<<"管理系统中没有输入数据!
"<cout<"<getchar();
getchar();
return;
}
while
(1)
{
boolIsfind=false;
cout<<"请输入你要删除的学生姓名:
";
charnametmp[20];
cin>>nametmp;
for(inti=0;i{
if(strcmp(s[i].getname(),nametmp)==0)//在数组中找到要删除学生
{
Isfind=true;
for(intj=i;j{
s[j]=s[j+1];//将删除的学生后的数据全部往前移一位
}
index--;
cout<<"删除成功!
"<}
}
if(!
Isfind)//没有找到输入的学生的姓名
{
cout<<"没有找要删除的学生的信息,请查证后再试。
"<}
cout<<"要删除其他的学生么?
(Y/N)";
chargetkey;
cin>>getkey;
if(getkey!
='y'&&getkey!
='Y')
{
cout<break;
}
}//while
(1)
cout<"<getchar();
getchar();
}
voidQueryByNumber()
{
if(index==0)
{
cout<<"管理系统中没有输入数据!
"<cout<"<getchar();
getchar();
return;
}
chargetkey;
do{
boolIsFind=false;
intnumbertmp;
cout<<"请输入你要查询的学生的学号:
";
cin>>numbertmp;
cout<for(inti=0;i{
if(s[i].number==numbertmp)
{
IsFind=true;
cout<<"您要查询的学生是:
"<<(s[i]).name<cout<<(s[i]).name<<"的成绩是:
"
<<"C++:
"<<(s[i]).cpro<<"英语:
"<<(s[i]).english<<"物理:
"<<(s[i]).physica