c设计报告学生管理系统.docx
《c设计报告学生管理系统.docx》由会员分享,可在线阅读,更多相关《c设计报告学生管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
c设计报告学生管理系统
封面
作者:
PanHongliang
仅供个人学习
设计任务与要求:
设计一个学生成绩管理系统,包含学号、姓名、课程、成绩、数据录入、查询、修改、排序等功能.
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能自己根据能力及需要添加相应功能模块,增强模拟系统功能.包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、结构设计等.
需求分析:
a.能对学生各科成绩进行录入:
.
b.能对学生的成绩进行增加.
c.能对学生的成绩进行删除.
d.能对学生的成绩进行修改.
e.能对学生的成绩按总成绩,姓名,进行查询.
f.能输出学生的所有数据.
g.能进行成绩统计
h能进行总分查询排名.
系统性能要求:
a.系统安全、可靠;
b.功能齐全;
c.操作方便、界面友好;
d易于维护和扩充.
一、实验目的
进一步巩固所学c++的基本概念和理论;能够完成简单的程序设计;进一步培养实际分析问题和实践动手编程的能力;
二、实验内容
采用vc6.0环境编译学生成绩管理系统.运用char,int,float等数据类型,输入学生的学号、姓名、班级及各科成绩并对各科成绩进行分析.并对学生各科成绩进行录入,对学生的成绩进行增加,对学生的成绩进行删除.对学生的成绩进行修改.对学生的成绩按总成绩,姓名,进行查询等.
三、设计思想及主界面设计
运用“数组”对程序进行编写,按照c++设计的基本步骤逐步编写运行.设置学生的成绩信息:
学生学号、姓名、课程及成绩.计算学生总成绩:
总评成绩=各科成绩之和;显示学生的姓名、平均成绩及总成绩;并能对成绩进行查询;用冒泡法进行排序.
四、程序结构
在main()函数中主要是通过”switch()”选择判断来调用相关功能模块.在主界面并选择“退出本系统”时退出程序.主函数代码为:
voidmain()
for(。
。
)
{switch()
{case0:
输入学生成绩
break。
case1:
增加学生数据
break。
case2:
修改学生数据
strcmp(name,s[h].name
break。
case3:
按姓名查询
break。
case4:
按学号查询
break。
case5:
按平均分排序
break。
case6:
按总分排序
break。
case7:
退出程序
五、程序功能模块图
功能:
学生成绩查询系统有:
成绩录入、增加、修改,数据查询,排序.
模块框架图:
六、程序
#include
#include
#include
#include
#include
classstudent
{
private:
charname[4]。
//姓名
doublecpro,english,math,sport,allscore,average。
//课程
intorder,number。
//名次,学号
public:
student(){}
student(charn[4],intnu,doublecc,doubleeng,doublema,doublesp,doubleas,doubleav)
{strcpy(name,n)。
number=nu。
cpro=cc。
english=eng。
math=ma。
sport=sp。
。
allscore=as。
average=av。
}
friendvoidmain()。
}。
voidmain()
{doubleallscore。
doubleaverage。
cout<<"欢迎使用学生管理系统"<cout<<"0、输入数据"<cout<<"1、增加数据"<cout<<"2、修改数据"<cout<<"3、按姓名查询"<cout<<"4、按学号查询"<cout<<"5、按平均分排序"<cout<<"6、按总分高低排序"<cout<<"7、退出系统"<cout<<"选择0-7数字进行操作"<charp。
charw。
students[50]。
//指针对象,最多存50个学生数据
ofstream*file[50]。
//负责对文件插入操作
inti=0。
intj=0。
intflag=0。
do//flag判断输入是否有效
{cin>>p。
if((p>='0'&&p<='7'))
flag=1。
else
cout<<"指令错误!
请重新输入:
"<}while(flag==0)。
do{
switch(p)//接收功能选项
{
case'0':
//输入数据
{
charc。
charname[4]。
intnumber。
doublecpro,english,math,sport。
do{
cout<"。
cin>>name。
cout<"。
cin>>number。
cout<"。
cin>>cpro。
cout<"。
cin>>english。
cout<"。
cin>>math。
cout<"。
cin>>sport。
{allscore=cpro+english+math+sport。
}
cout<<"总成绩:
"<{average=(cpro+english+math+sport)/4。
}
cout<<"平均成绩:
"<file[j]=newofstream("D:
\student.dat",ios:
:
ate)。
*file[j]<<"姓名"<<<"英语成绩"<<j++。
s[i]=student(name,number,cpro,english,math,sport,allscore,average)。
i++。
cout<<"数据输入成功,想继续输入吗(y/n):
"。
cin>>c。
cout<do
{if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c。
}
else
flag=1。
}while(flag==0)。
}while(c=='y')。
break。
}
case'1':
//增加数据
{charname[20]。
intnumber。
doublecpro,english,math,sport。
charc。
do
{cout<<"请输入您要增加的学生的姓名:
"。
cin>>name。
cout<"。
cin>>number。
cout<"。
cin>>cpro。
cout<"。
cin>>english。
cout<"。
cin>>math。
cout<"。
cin>>sport。
cout<{allscore=cpro+english+math+sport。
}
cout<<"总成绩:
"<{average=(cpro+english+math+sport)/4。
}
cout<<"平均成绩:
"<file[j]=newofstream("D:
\student.dat",ios:
:
ate)。
*file[j]<<"姓名"<<<"英语成绩"<<j++。
s[i]=student(name,number,cpro,english,math,sport,allscore,average)。
i++。
cout<<"数据输入成功,想继续数入吗(y/n):
"。
cin>>c。
cout<if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c。
}
}
while(c=='y')。
break。
}
case'2':
//修改数据
{charname[20]。
intnu。
doublecc,eng,ma,sp,as,av。
flag=0。
charc。
if(i==0)
{cout<<"系统中找不到这个学生"。
}
do
{cout<<"请输入您要修改的学生的姓名:
"。
cin>>name。
cout<for(inth=0。
h
h++)//h纪录要修改学生的位置
{if(strcmp(name,s[h].name)==0)//找到要修改名字的位置
{flag=1。
cout<<"新的学号:
"。
cin>>nu。
cout<"。
cin>>cc。
cout<"。
cin>>eng。
cout<"。
cin>>ma。
cout<"。
cin>>sp。
{as=cc+eng+ma+sp。
}
cout<"<{av=as/6。
}
cout<"<cout<s[h].cpro=cc。
s[h].english=eng。
s[h].math=ma。
s[h].sport=sp。
s[h].number=nu。
cout<<"数据修改成功!
"<}
}
if(flag==0)
{cout<<"您要修改的学生本来就不存在!
请检查重新输入!
"<}
cout<<"想继续修改吗(y/n):
"。
cin>>c。
cout<if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c。
}
}while(c=='y')。
break。
}
case'3':
//按姓名查询
{charn[20]。
intj=0。
charc。
if(i==0)
{cout<<"管理系统中没有输入数据!
"<break。
}
do{
intflag=0。
cout<<"请输入你要查询的学生姓名:
"。
cin>>n。
cout<for(intj=0。
j
j++)
{if(strcmp(n,(s[j]).name)==0)
{flag=1。
cout<<"您要查询的学生是:
"<<(s[j]).name<cout<<(s[j]).name<<"的成绩是:
"<<"C++:
"<<(s[j]).cpro<<"英语:
"<<(s[j]).english<<"线代:
"<<(s[j]).math<<"体育:
"<<(s[j]).sport<<"总成绩"<<(s[j]).allscore<<"平均成绩"<<(s[j]).average<}
}
if(flag==0)
cout<<"对不起!
您要查询的学生不存在!
"<cout<<"您想继续查询吗?
(y/n):
"。
cin>>c。
cout<if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c。
}
}
while(c=='y')。
break。
}
case'4':
//按学号查询
{
intn,j=0。
charc。
if(i==0){
cout<<"管理系统中没有输入数据!
"<break。
}
do{
intflag=0。
cout<<"请输入你要查询的学生的学号:
"。
cin>>n。
cout<for(intj=0。
j
j++)
{
if(s[j].number==n)
{
flag=1。
cout<<"您要查询的学生是:
"<<(s[j]).name<cout<<(s[j]).name<<"的成绩是:
"<<"C++:
"<<(s[j]).cpro<<"英语:
"<<(s[j]).english<<"线代:
"<<(s[j]).math<<"体育:
"<<(s[j]).sport<<"总成绩:
"<<(s[j]).allscore<<"平均成绩:
"<<(s[j]).average<}
}
if(flag==0)
cout<<"对不起!
您要查询的学生不存在!
"<cout<<"您想继续查询吗?
(y/n):
"。
cin>>c。
cout<if(c!
='y'&&c!
='n')
{
cout<<"指令错误!
请重新输入!
"<cin>>c。
}
}
while(c=='y')。
break。
}
case'5':
//平均分排序
{studenttemp。
for(inta=0。
a
a++)
for(intb=a+1。
b
b++)
while(s[a].average
{
temp=s[a]。
s[a]=s[b]。
s[b]=temp。
}
cout<<"已经排好序了,是否需要输出(y/n):
"。
charyn。
cin>>yn。
while(yn!
='y'&&yn!
='n')
{
cout<<"操作错误!
!
!
请重新输入:
"。
cin>>yn。
}
if(yn=='y')
{
cout<<"所有学生的成绩按总分从高到低的排名是:
"<cout<<"本系统所有学生数据如下:
"<if(i==0)
cout<<"管理系统中没有输入数据!
"<cout<<"姓名学号c++英语线代体育总成绩平均成绩"<for(intb=0。
b
b++)
{
cout<
<<(s[b]).cpro<<<(s[b]).math<<
}
}
break。
}
case'6':
//总成绩排序
{studenttemp。
for(intt=0。
t
t++)
for(intk=t+1。
k
k++)
while(s[t].allscore
{temp=s[t]。
s[t]=s[k]。
s[k]=temp。
}
cout<<"已经排好序了,是否需要输出(y/n):
"。
charyn。
cin>>yn。
while(yn!
='y'&&yn!
='n')
{cout<<"操作错误!
!
!
请重新输入:
"。
cin>>yn。
}
if(yn=='y')
{cout<<"所有学生的成绩按总分从高到低的排名是:
"<cout<<"本系统所有学生数据如下:
"<if(i==0)
cout<<"管理系统中没有输入数据!
"<cout<<"姓名学号c++英语线代体育总成绩平均成绩"<for(intk=0。
k
k++)
{cout<
<<(s[k]).cpro<<<(s[k]).math<<
}
}
break。
}
case'7':
//退出
{exit(0)。
cout<<"Byebye!
"<}
}
cout<<"您想继续进行其他操作吗?
(y/n):
"。
intflag=0。
do
{cin>>w。
cout<if(w!
='y'&&w!
='n')
cout<<"指令错误!
请重新输入!
"<else
flag=1。
}while(flag==0)。
if(w=='y')
cout<<"请输入操作代码:
0输入数据"<cout<<"1增加数据"<cout<<"2修改数据"<cout<<"3按姓名查询"<cout<<"4按学号查找"<cout<<"5按平均分高低排序"<cout<<"6按总分高低排序"<cout<<"7退出系统"<cin>>p。
}while(w=='y')。
}
七、程序未完成和添加的功能
程序未完成功能有对学生的成绩进行删除和按总成绩查询.添加的功能有按平均分排序.
八、总结及参考资料
参考资料:
《c++全方位学习》中国铁道出版社,《c++程序设计题解与上机指导》清华大学出版社,《c++语言基础教程》人民邮电出版社,《c++程序设计基础(第3版),以及上网查询资料等.
总结:
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序.首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试.程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询.
通过这次c++程序设计,我从中得到很大的收益,并且学的了很多知识.C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多.对这些知识也有了更深的理解和很好的掌握.我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的.同时我还深刻的认识到,实践是检验真理的唯一标准.没有实践,就不会发现和深刻体会它的真实所在.只有通过检验的真理,在自己的心里,才会认可它的真实性.我从中深深的感觉到实践和理论的差异,只懂理论而没有实践是不行的,只有把理论和实践相结合才能才能更好的了解程序设计的开发和运行,才能从中有所收益.程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识.措施是很不值得的.
同时,在此我对在程序过程中,老师同学给了我很多宝贵的建议和指点,我很感谢他们.使他们让我学到了很多知识,让我对所学知识有了更深层次的理解.我从中受益很多.
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproductionorquotationofthecontentofthisarticlemustbereasonableandgood-faithcitation