c++大作业学生实验报告.docx
《c++大作业学生实验报告.docx》由会员分享,可在线阅读,更多相关《c++大作业学生实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
c++大作业学生实验报告
学生实验报告
实验课名称:
C++程序设计
实验项目名称:
综合大作业——学生成绩管理系统
专业名称:
电子信息工程
班级:
学号:
学生:
同组成员:
教师:
2011年6月23日
题目:
学生成绩管理系统
一、实验目的:
(1)对C++语法、基础知识进行综合的复习。
(2)对C++语法、基础知识和编程技巧进行综合运用,编写具有一定综合应用价值的稍大一些的程序。
培养学生分析和解决实际问题的能力,增强学生的自信心,提高学生学习专业课程的兴趣。
(3)熟悉掌握C++的语法和面向对象程序设计方法。
(4)培养学生的逻辑思维能力,编程能力和程序调试能力以及工程项目分析和管理能力。
二、设计任务与要求:
(1)只能使用/C++语言,源程序要有适当的注释,使程序容易阅读。
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)。
(3)要求划分功能模块,各个功能分别使用函数来完成。
三、系统需求分析:
1.需求分析:
为了解决学生成绩管理过程中的一些简单问题,方便对学生成绩的管理
(录入,输出,查找,增加,删除,修改。
)
系统功能分析:
(1):
学生成绩的基本信息:
学号、、性别、C++成绩、数学成绩、英语成绩、总分。
(2):
具有录入信息、输出信息、查找信息、增加信息、删除信息、修改信息、排序等功能。
2.系统功能模块(要求介绍各功能)
(1)录入信息(Input):
录入学生的信息。
(2)输出信息(Print):
输出新录入的学生信息。
(3)查找信息(Find):
查找已录入的学生信息。
(4)增加信息(Add):
增加学生信息。
(5)删除信息(Remove):
在查找到所要删除的学生成绩信息后进行删除并输出删除后其余信息。
(6)修改信息(Modify):
在查到所要修改的学生信息后重新输入新的学生信息从而进行修改,然后输出修改后的所有信息。
(7)排序(Sort):
按照学生学号进行排序。
3.模块功能框架图
4.
四、系统设计与实现
1.菜单设计与实现:
菜单将所有功能划入一个简单而又醒目的功能区,再通过分行及分列从而将各功能巧妙划分开来,方便操作,也会让人觉得界面简单别致而不单调。
(界面如下)
2.功能设计与实现:
录入信息、输出信息、查找信息、增加信息、删除信息、修改信息、排序等功能。
调试过程:
1.输入信息
2.输出信息
3.查找信息
4.增加信息
5.删除信息
6.修改信息
7.排序
8.清屏
9.退出系统
五、系统有待改进的地方
1.未能实现数据的写入、读出,每次要重新输入数据,可以应用文件流来实现。
2.源程序有点复杂,可以应用链表加以简化。
六、设计心得与体会
通过这次大作业,我熟悉了类的一些应用,还熟悉了循环语句以及条件语句的组合使用。
而且通过团结合作,可以减少自己许多工作量,而这也体现了C++的优越性。
可以在同学所做的基础上来完善程序。
七、参考资料
《C++程序设计大学教程》
源程序:
//学生成绩管理系统
#include
#include
#include//用getch();
usingnamespacestd;
classStudent
{
private:
intCnum;//C课程得分
intMnum;//数学课程得分
intEnum;//英语课程得分
intsum;//总分
charnum[10];
charname[20];
charsex[5];
intage;
public:
staticinti;
staticintk;
staticintCount;
intx;
voidInput();
voidPrint();
voidFind();
voidAdd();
voidRemove();
voidModify();
voidSort(Student*stu);
voidShowMenu();
Student(char*name,char*num,char*sex,intCnum,intMnum,intEnum,intsum,intage);
Student();
virtual~Student();
};
intStudent:
:
k=0;
intStudent:
:
i=0;
intStudent:
:
Count=0;
Studentstu[200];
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统☆〓〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆1.录入学生成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆3.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆4.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆7.排序统计成绩☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆8.清屏☆★〓〓〓〓〓〓〓〓〓"<cout<<"〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"<cout<<"\n\t\t\n\t\t请选择:
";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Student:
:
Student()
{
strcpy(name,"");strcpy(num,"");strcpy(sex,"");Cnum=90;Mnum=90;Enum=90;sum=270;;age=20;
}
Student:
:
Student(char*name1,char*num1,char*sex1,intCnum1,intMnum1,intEnum1,intsum1,intage1)
{
strcpy(name,name1);strcpy(num,num1);strcpy(sex,sex1);Cnum=Cnum1;Mnum=Mnum1;Enum=Enum1;sum=sum1;age=age1;
Count++;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Student:
:
~Student()
{
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌录入函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Input()
{
intn;
cout<<"输入学生的人数:
"<cin>>n;k=n;
for(i=0;i{
cout<<"输入第"<
"<cin>>stu[i].num>>stu[i].name>>stu[i].sex>>stu[i].age>>stu[i].Cnum>>stu[i].Mnum>>stu[i].Enum;
stu[i].sum=stu[i].Cnum+stu[i].Mnum+stu[i].Enum;
}
cout<<"录入成功!
"<}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌输出函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Print()
{
cout<<"学号\t\t性别\t年龄\tc++\t高数\t英语\t总分"<for(i=0;i{
cout<}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Find()
{
cout<<"请输入所查学生学号、"<cin>>num>>name;
for(i=0;i{
if((strcmp(stu[i].num,num)==0)&&(strcmp(stu[i].name,name)==0))
{
x=1;break;
}
}
if(x==1)
{
cout<<"学号\t\t性别\t年龄\tC++\t高数\t英语\t总分"<cout<}
else
{
cout<<"\t\t没有找到该学生!
"<<'\n'<cout<<"输入任意字符!
继续……"<getch();
}/**/
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌增加信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Add()
{
intn,j,i;
cout<<"输入学生的人数:
"<cin>>n;
for(i=k,j=0;i{
cout<<"输入第"<"<cin>>stu[i].num>>stu[i].name>>stu[i].sex>>stu[i].age>>stu[i].Cnum>>stu[i].Mnum>>stu[i].Enum;
stu[i].sum=stu[i].Cnum+stu[i].Mnum+stu[i].Enum;
}
cout<<"录入成功!
"<}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Remove()
{
Student:
Find();
/*Studenta;
a.Find();
if(x==1)
{}*/
for(intz=i;zstu[z]=stu[z+1];
cout<<"删除成功!
"<cout<<"删除后信息:
"<for(z=0;zcout<}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Modify()
{Studentt;
t.Find();
if(x==1)
{
cout<<"输入新信息:
"<cout<<"请输入学号、、性别、年龄、C++、高数、英语"<cin>>t.num>>t.name>>t.sex>>t.age;
strcpy(stu[i].name,t.name);
strcpy(stu[i].num,t.num);
strcpy(stu[i].sex,t.sex);
stu[i].age=t.age;
stu[i].Cnum=t.Cnum;
stu[i].Mnum=t.Mnum;
stu[i].Enum=t.Enum;
cout<<"修改成功!
"<cout<<"修改后信息:
"<cout<<"学号\t\t性别\t年龄\tC++\t高数\t英语\t总分"<for(inta=0;acout<}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌排序函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidStudent:
:
Sort(Student*stu)
{
for(inti=1;ifor(intj=0;jif(strcmp(stu[j].num,stu[j+1].num)>0)
{
Studentt;
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
cout<<"排序后信息!
"<cout<<"学号\t\t性别\t年龄"<for(intj=0;jcout<}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
intmain()
{intw;intf;
boolquit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<for(f=0;f<3;f++)
cout<<"\t\t◎\t\t\t\t\t\t◎"<cout<<"\t\t◎★★★★【欢迎进入学生成绩管理系统】★★★★◎"<for(f=0;f<3;f++)
cout<<"\t\t◎\t\t\t\t\t\t◎"<cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<Students;
cout<<"按任意键开始……"<getch();
while(!
quit)
{
s.ShowMenu();
cin>>w;
switch(w)
{
case0:
quit=true;break;
case1:
s.Input();break;
case2:
s.Print();break;
case3:
s.Find();break;
case4:
s.Add();break;
case5:
s.Remove();break;
case6:
s.Modify();break;
case7:
s.Sort(stu);break;
case8:
system("cls");break;
default:
cout<<"选择错误"<}
}
return0;
}