成绩管理新4.docx
《成绩管理新4.docx》由会员分享,可在线阅读,更多相关《成绩管理新4.docx(16页珍藏版)》请在冰豆网上搜索。
成绩管理新4
目录
1前言1
2需求分析1
2.1要求1
2.2任务1
2.3运行环境1
2.4开发工具1
3分析和设计1
3.1系统分析及设计思路1
3.2主要类图4
3.3函数流程图5
4具体代码实现6
5课程设计总结13
5.1程序运行结果或预期运行结果13
5.3设计结论16
参考文献17
致谢17
1前言
《C++语言程序设计》是通过面向对象程序设计的设计,他能使我们理解面向对象的程序设计思想用到具体的工作和学习中。
这次设计中我们遇到很多困难,我们小组分工合作也完成了这次设计。
设计让我们充分认识到c++的好处。
他能插入让我们分工更准确精细。
此此设计加深了对类与对象的理解,提高分析问题、解决问题的能力。
2需求分析
2.1要求
具体要求:
(1)可以进行学生成绩的输入和查询。
(2)可以通过学号查找某个同学的总成绩,学分,平均成绩。
(3)可以查询同学的达标情况和没有及格的科目。
2.2任务
某学校学生选择的课程包括选修课可必修课,每门课程有相应的学分,学生每学期可以选择若干门课程,设计学生成绩管理系统,计算学生某一学期的总成绩和平均成绩。
2.3运行环境
(1)WINDOWS2000/XP系统
(2)VisualC++6.0编译环境或DEVC++5.0编译环境
2.4开发工具
C++语言
3分析和设计
3.1系统分析及设计思路
使用类来设计一个学生成绩管理系统。
首先定义一个父类stu用来存放学生的基本信息(学号,姓名)。
再定义一个子类stu1用了存放课程信息(课程号,课程名,平时成绩,实验成绩,卷面成绩,总成绩,学分)。
其中总成绩=∑(学分×成绩);平均成绩=总成绩/∑学分;学分=平时成绩×0.3+卷面成绩×0.7或学分=平时成绩×0.15+实验成绩×0.15+卷面成绩×0.7。
main函数用来实现操作,我们这个程序提供了三个选项1输入学生成绩;2学生成绩查询;3达标查询。
main函数主要用了if语句,cin,cout语句,for语句。
通过文件来存储信息。
父类stu类的设计:
classstu/*定义一个父类,用来存放学生基本信息*/
{
charnumber[20];
charname[20];
public:
stu(chara[20],charb[20])
{
strcpy(number,a);
strcpy(name,b);
}
char*getnumber()
{
returnnumber;
}
char*getname()
{
returnname;
};
子类stu1的设计:
classstu1:
publicstu/*定义子类存放课程信息*/
{
charclassnumber[10];
charclassname[10];
doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;
public:
stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):
stu(a,b)
{
strcpy(classnumber,f);
strcpy(classname,g);
score=aa;
pingshifen=bb;
shiyanfen=cc;
juanmianfen=dd;
zongfen=ee;
lastscore=ff;
}
friendvoidmain();
};
3.2主要类图
Stu
public:
stu(chara[20],charb[20])
{strcpy(number,a);strcpy(name,b);}
char*getnumber()
{returnnumber;}
char*getname()
{returnname;};
图3.1父类stu类图
Stu1
public:
stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):
stu(a,b)
{strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshifen=bb;shiyanfen=cc;juanmianfen=dd;zongfen=ee;lastscore=ff;
}
图3.2子类stu1类图
3.3函数流程图
4具体代码实现
#include
#include
#include
#include
usingnamespacestd;
classstu/*定义一个父类,存放姓名和学号信息*/
{
charnumber[20];
charname[20];
public:
stu(chara[20],charb[20])
{
strcpy(number,a);
strcpy(name,b);
}
char*getnumber()
{
returnnumber;
}
char*getname()
{
returnname;
}
};
classstu1:
publicstu/*定义另一个子类,存放课程信息和成绩*/
{
charclassnumber[10];
charclassname[10];
doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;
public:
stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):
stu(a,b)
{
strcpy(classnumber,f);
strcpy(classname,g);
score=aa;
pingshifen=bb;
shiyanfen=cc;
juanmianfen=dd;
zongfen=ee;
lastscore=ff;
}
friendvoidmain();
};
voidmain()/*主函数*/
{
charc;intflag5=0;ints=0;
cout<<"欢迎进入学生管理系统"<cout<<"进入(y/n)"<cin>>c;
do
{/*判断是否进入系统*/
if(c=='n')
break;
else
{
flag5=1;
charnumber[10];
charname[20];
inti=0,I=0,j=0;intja;ja=0;
ofstream*file[50];
stu1*s1[50];/*定义指针存放课程信息*/
charclassnumber[8];
charclassname[10];
doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;
boolflag=0;
intp;
charc4;
do
{/*选择菜单*/
cout<<"请选择操作"<cout<<"1输入学生成绩信息"<cout<<"2成绩查询"<cout<<"3达标查询"<do
{/*判断输入字符*/
cin>>p;
if(1<=p&&p<=3)
flag=1;
else
cout<<"指令错误,请重新输入!
"<}while(flag==0);
if(p==1)/*进入信息输入系统*/
{
cout<<"进入信息添加"<charc1,c2;
do{/*信息的输入*/
cout<<"请输入课程编号"<cin>>classnumber;
cout<<"请输入课程名"<cin>>classname;
do{
cout<<"请输入学生学号"<cin>>number;
cout<<"请输入学生姓名"<cin>>name;
cout<<"课程总学分"<cin>>score;
cout<<"学生的平时成绩"<cin>>pingshifen;
cout<<"学生的实验成绩"<cin>>shiyanfen;
cout<<"学生卷面成绩"<cin>>juanmianfen;
if(shiyanfen==0)/*总分的算法判断*/
zongfen=pingshifen*0.3+juanmianfen*0.7;
else
zongfen=pingshifen*0.15+shiyanfen*0.15+juanmianfen*0.7;
if(90<=zongfen&&zongfen<=100)/*学分的计算*/
lastscore=score;
elseif(80<=zongfen)
lastscore=score*0.8;
elseif(70<=zongfen)
lastscore=score*0.7;
elseif(60<=zongfen)
lastscore=score*0.6;
else
lastscore=0;
file[j]=newofstream("e:
\\eeee.txt",ios:
:
app);/*信息存储文件的建立*/
*file[j]<<"学号"<j++;
s1[I]=newstu1(number,name,classnumber,classname,score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore);
I++;
cout<<"数据输入成功,继续输入其他学生成绩?
(y/n)";
cin>>c1;
intflag1=0;
do
{
if(c1!
='y'&&c1!
='n')
{
cout<<"错误指令"<cin>>c1;
}
else
flag1=1;
}
while(flag1==0);
}
while(c1=='y');
cout<<"输入其他课程成绩?
(y/n)";/*转入其他成绩输入判断*/
cin>>c2;
intflag2=0;
do{
if(c2!
='y'&&c2!
='n')
{
cout<<"错误指令"<cin>>c2;
}
else
flag2=1;
}
while(flag2==0);
}
while(c2=='y');
}
if(p==2)/*成绩查询系统*/
{
cout<<"进入成绩查询"<charnum[10];
cout<<"请输入学号"<cin>>num;
intii=0;doublesum=0;doublefen=0;doublepingjunfen;
for(intj=0;j
{
if(strcmp((*s1[j]).getnumber(),num)==0)/*判断学号是否存在*/
{
cout<<"课程编号"<<(*s1[j]).classnumber<<"课程名称"<<(*s1[j]).classname<<"学分"<<(*s1[j]).score<<"平时成绩"<<(*s1[j]).pingshifen<<"实验成绩"<<(*s1[j]).shiyanfen<<"卷面成绩"<<(*s1[j]).juanmianfen<<"综合成绩"<<(*s1[j]).zongfen<<"实得学分"<<(*s1[j]).lastscore<ii++;
sum+=(*s1[j]).lastscore;/*总学分计算*/
if((*s1[j]).score!
=0)
{/*平均分的计算*/
fen+=(*s1[j]).zongfen;
pingjunfen=fen/sum;
}
}
}
cout<<"共修"<}
if(p==3)/*达标查询系统*/
{
cout<<"进入达标查询"<charnum[10];doublesum;
cout<<"请输入学号"<cin>>num;
for(intj=0;j
{
if(strcmp((*s1[j]).getnumber(),num)==0)
{
sum+=(*s1[j]).lastscore;
if((*s1[j]).zongfen<60)/*未及格学科的*/
{
cout<<(*s1[j]).classname<<"未及格"<}
}
}
if(sum<10)/*留级判断*/
{
cout<<"不好意思同学你未通过,需留级!
"<}
}
cout<<"进行其他操作(y/n)"<cin>>c4;
}
while(c4=='y');
}
}
while(flag5==0);
}
5课程设计总结
5.1程序运行结果或预期运行结果
图5.1菜单栏
图5.2成绩的输入
图5.3成绩的输入
5.4成绩的查询
图5.5达标查询
5.3设计结论
通过这次课程设计我学到了很多,也认识到自己很多的不足之处。
通过这次课程设计,我充分理解了学生成绩管理的设计,并对期设计过程有了进一步了解,特别是加深了对c++的理解与运用,也巩固了c语言的运用,对此有了进一步认识。
在编写程序与程序运行过程中也遇到了不少的困难,经过反反复复的调试与运行才得到正确的结果,在此过程中自己的缺点就凹显出来,归根结底还是对这门课程的熟悉程度不够,c++这门课程要求很高,不仅要有强硬的理论知识,还有一定的实际操作能力,这也是学每们课程所要必须的,c++就更不用说了,c++还需要严谨的态度与不断地练习。
参考文献
[1]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
[2]黄同成,黄俊民,董建寅数据机构2008.2.
[3]马石安,魏文平,面向对象程序设计教程(C++语言描述),清华大学出版社,2010.
致谢
这次课程设计使我对C++有了更进一步的认识,也使我了解了团队合作的重要性,我要感谢和我一起的组员和为我解难的朋友。
对于指导老师陈智老师,表示衷心的感谢!