《计算机程序设计VC++课程设计》报告.docx
《《计算机程序设计VC++课程设计》报告.docx》由会员分享,可在线阅读,更多相关《《计算机程序设计VC++课程设计》报告.docx(22页珍藏版)》请在冰豆网上搜索。
《计算机程序设计VC++课程设计》报告
计算机程序设计语言(VC++)课程设计报告
一、目的
通过一个学生成绩管理系统的实际开发,提高应用所学知识分析问题,解决问题和实际动手的能力,更加熟练地掌握C++程序开发的基本方法和工作步骤,对系统开发实践有进一步体会。
从而综合复习课程中的所有理论知识点,进一步熟练面向对象程序的开发方法和流程,提高独立分析问题和解决问题的能力。
真正理解书本知识,牢固掌握课堂教学内容。
二、设计任务
设计一程序,实现对某班级学生成绩的管理及奖学金、三好生的评定工作。
要求具备查询和检索等功能,并且能够对指定文件进行操作,也可以将多个文件组成一个文件。
三、设计要求
⒈应严格按照开发小型项目的基本流程进行设计。
⒉成绩管理程序至少应具有以下功能:
⑴输入:
学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、高数成绩等;
⑵计算:
每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;
⑶查询:
可以按学号、姓名等进行成绩查询;
⑷排序:
可以按学号、姓名、VC++成绩、英语成绩、高数成绩、总成绩、平均成绩等进行排序并输出;
⑸删除:
删除某条记录;
⑹按学分绩点计算办法计算出每个学生的学分绩点,并按从高到低的顺序排列输出。
⑺按奖学金评定办法,从特等奖开始,输出获得奖学金的学生名单及该生的学习成绩与学分绩点。
⑻按三好生评定办法,输出获得三好生的学生名单。
⑼定义类,用类和对象的知识进行系统设计和实现。
本课程设计由单人一组独立完成,根据课程设计任务和设计要求,在教师的指导下,进行资料的查阅,规范地进行系统分析与系统设计工作。
本课程设计是以学生自主设计为主的开放模式组织教学。
设计完成后要求提交设计电子文档的设计报告,并以“学号姓名.doc”文件命名,刻录在同一张光盘上。
四、设计思路
1.定义一个student类,包含学生的基本信息:
姓名,学号,各科成绩等。
2.在类外构造函数,print函数输出学生信息。
3.count函数计算各学生的总成绩以及平均成绩,并输出各科成绩最高的学生。
4.Search函数用来查询学生的基本信息,可用学号或姓名进行查询。
5.Low函数按学生的成绩进行从高到低排序。
6.Score函数计算学生的学生绩点,判断出各等奖学金名额并输出。
7.Goodstudent函数是根据学分绩点选出三好学生的名额。
8.Deletenode函数根据学号或姓名删除学生的信息。
9.定义主函数进行测试。
五、主要算法设计过程描述
1.其中的排序以及奖学金的评定主要用了冒泡排序。
2.用了switch()选择语句,来解决输入数字到达对应功能。
3.最高的成绩主要用了max()的内置函数。
4.查询主要用了指针所指的内容与输入的内容进行比对
5.主函数即为主界面,用了do-while进行循环
六、程序代码
#include
#include
#include
#defineNULL0
classstudent
{public:
longintnum;//学号.
charname[20];//姓名.
charsex[20];//性别.
charplace[20];//籍贯.
floatc;//VC++成绩.
floaten;//英语成绩.
floatma;//高数成绩.
floatPE;//体育成绩.
student*next;//指向下一个结点的指针.
};
student*create(intn)//输入函数.
{
student*p,*pend,*h=NULL;
inti=0;
if(n<1)returnNULL;
cout<<"学号姓名性别籍贯VC++成绩英语成绩高数成绩体育成绩"<while(i{
p=newstudent;
cin>>p->num>>p->name>>p->sex>>p->place>>p->c>>p->en>>p->ma>>p->PE;
p->next=NULL;
if(h==NULL){h=p;pend=p;}
else{pend->next=p;pend=p;}
i++;
}
returnh;
}
voidprint(student*h)
{
student*p;
p=h;
cout<<"学号姓名性别籍贯vc++成绩英语成绩高数成绩体育成绩"<while(p!
=0)
{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\t'<PE<p=p->next;
}
}
voidcount(student*h,intn)//计算成绩函数.
{
floatS[20],aver[20],aver1=0,aver2=0,aver3=0,MAX,max1,max2,max3;
floats1[20],s2[20],s3[20];
student*p;
p=h;
for(inti=0;i{
S[i]=p->c+p->en+p->ma;
aver[i]=S[i]/3;
p=p->next;}
for(p=h,i=0;i{
aver1+=p->c;aver2+=p->en;aver3+=p->ma;p=p->next;
}
aver1=aver1/n;
aver2=aver2/n;
aver3=aver3/n;
for(p=h,i=0;ic;s2[i]=p->c;s3[i]=p->ma;p=p->next;}
MAX=0;max1=0;max2=0;max3=0;
for(i=0;i{
if(MAX
if(max1if(max2if(max3}
cout<<"总成绩最高的学生:
"<<'\n';
for(p=h,i=0;i{
if(MAX==S[i])cout<num<<'\t'<name<<'\t'<next;
}
cout<<"VC++成绩最高的学生:
"<<'\n';
for(p=h,i=0;inum<<'\t'<name<<'\t'<next;}
cout<<"英语成绩最高的学生:
"<<'\n';
for(p=h,i=0;inum<<'\t'<name<<'\t'<next;}
cout<<"高数成绩最高的学生:
"<<'\n';
for(p=h,i=0;inum<<'\t'<name<<'\t'<next;}
}
voidsearch(student*h)//搜索函数
{
student*p;
p=h;
intr,t;
charname[10];
cout<<"按学号查询请输入1,按姓名查询请输入2!
"<cin>>r;
switch(r)
{
case1:
{
cout<<"请输入要查询的学号:
"<cin>>t;
while(p!
=0)
{
if(p->num==t)
{
cout<<"学号姓名性别籍贯vc++成绩英语成绩高数成绩体育成绩"<cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\t'<PE<break;
}
elsep=p->next;
}
}break;
case2:
{
cout<<"请输入要查询的姓名:
"<cin>>name;
while(p!
=0)
{
if(strcmp(name,p->name)==0)
{
cout<<"学号姓名性别籍贯vc++成绩英语成绩高数成绩体育成绩"<cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\t'<PE<break;
}
elsep=p->next;
}
}
}
}
voidLOW(student*h,inta,intn)//排序函数.
{
student*p,*p1,*p2;
longintNUM;
charNAME[20],SEX[20],PLACE[20];
floatS[20],aver[20],CSCORE,CENGLISH,CMATH;
p=h;
for(inti=0;i{
S[i]=p->c+p->en+p->ma;
aver[i]=S[i]/3;
p=p->next;
}
cout<<"请选择排序方式!
"<cout<<"按姓名排序请输入1"<cout<<"按VC++成绩排序请输入2"<cout<<"按英语成绩排序请输入3"<cout<<"按高数成绩排序请输入4"<cout<<"按总成绩排序请输入5"<cout<<"按平均成绩排序请输入6"<cin>>a;
switch(a)
{
case1:
if(h==0)cout<<"无结点"<<'\n';
else{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
{
for(intj=i+1;j{
if(strcmp(p1->name,p2->name)==1)
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;strcpy(NAME,p1->name);strcpy(p1->name,p2->name);
strcpy(p2->name,NAME);
strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;
CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<case2:
if(h==0)cout<<"无结点"<<'\n';
else
{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
for(intj=i+1;j{
if(p1->c>=p2->c)
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;strcpy(NAME,p1->name);strcpy(p1->name,p2->name);
strcpy(p2->name,NAME);strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<case3:
if(h==0)cout<<"无结点"<<'\n';
else
{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
{
for(intj=i+1;j{
if(p1->en>=p2->en)
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;
strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME);
strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;
CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<case4:
if(h==0)cout<<"无结点"<<'\n';
else
{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
{
for(intj=i+1;j{
if(p1->c>=p2->c)
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;
strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME);
strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<case5:
if(h==0)cout<<"无结点"<<'\n';
else
{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
{
for(intj=i+1;j{
if(S[i]>=S[j])
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;
strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME);
strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;
CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<case6:
if(h==0)cout<<"无结点"<<'\n';
else
{
p1=h;
while(p1->next!
=0)
for(i=0;i{
p2=p1->next;
{
for(intj=i+1;j{
if(aver[i]>=aver[j])
{
NUM=p1->num;p1->num=p2->num;p2->num=NUM;
strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME);
strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX);
strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE);
CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;
CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH;
CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH;
}
p2=p2->next;
}
p1=p1->next;
}
}
}
p=h;
for(i=0;i{
cout<num<<'\t'<name<<'\t'<sex<<'\t'<place<<'\t'<c<<'\t'<en<<'\t'<ma<<'\n';
p=p->next;
}
cout<default:
cout<<"无可排序的依据!
"<}
}
voiddeletenode(student*h,intdata)//删除学生信息函数.
{
student*p1,*p2;
intb;
cout<<"如果要删除学生的信息请输入1!
"<<'\n'<<"如果不需要删除学生的信息请输入2!
"<cin>>b;
switch(b)
{
case1: