学生实验报告实验课名称: 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.模块功能框架图四、 系统设计与实现1. 菜单设计与实现:菜单将所有功能划入一个简单而又醒目的功能区,再通过分行及分列从而将各功能巧妙划分开来,方便操作,也会让人觉得界面简单别致而不单调。
(界面如下)2. 功能设计与实现:录入信息、输出信息、查找信息、增加信息、删除信息、修改信息、排序等功能。
调试过程:1. 输入信息主函数(main)修改信息(Modify) 排序(Sort) 删除信息(Remove)2.输出信息3.查找信息4.增加信息5.删除信息6.修改信息7.排序8.清屏9.退出系统五、系统有待改进的地方1.未能实现数据的写入、读出,每次要重新输入数据,可以应用文件流来实现。
2.源程序有点复杂,可以应用链表加以简化。
六、设计心得与体会通过这次大作业,我熟悉了类的一些应用,还熟悉了循环语句以及条件语句的组合使用。
而且通过团结合作,可以减少自己许多工作量,而这也体现了C++的优越性。
可以在同学所做的基础上来完善程序。
七、参考资料《C++程序设计大学教程》源程序://学生成绩管理系统#include<iostream>#include<string>#include <conio.h>//用getch();using namespace std;class Student{private:int Cnum; //C课程得分int Mnum; //数学课程得分int Enum; //英语课程得分int sum; //总分char num[10];char name[20];char sex[5];int age;public:static int i;static int k;static int Count;int x;void Input();void Print();void Find();void Add();void Remove();void Modify();void Sort(Student *stu);void ShowMenu();Student(char *name,char *num,char *sex,int Cnum,int Mnum,int Enum,int sum,int age);Student();virtual ~Student();};int Student::k=0;int Student::i=0;int Student::Count=0;Student stu[200];//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::ShowMenu()cout<<"〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统☆〓〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 1.录入学生成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 3.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 4.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 7.排序统计成绩☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 8.清屏☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"〓〓〓〓〓〓〓〓〓★☆ 0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"<<endl;cout<<"\n\t\t\n\t\t请选择:";}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student::Student(){strcpy(name,"");strcpy(num,"");strcpy(sex,"");Cnum=90;Mnum=90;Enu m=90;sum=270;;age=20;}Student::Student(char *name1,char *num1,char *sex1,int Cnum1,int Mnum1,int Enum1,int sum1,int age1){strcpy(name,name1);strcpy(num,num1);strcpy(sex,sex1);Cnum=Cnum1;Mnum=Mnum1;Enum=Enum 1;sum=sum1;age=age1;Count++;}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student::~Student(){}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌录入函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Input()int n;cout<<"输入学生的人数:"<<endl;cin>>n;k=n;for(i=0;i<n;i++){cout<<"输入第"<<i+1<<"个学生的学号、、性别、年龄、C课程得分、数学课程得分、英语课程得分:"<<endl;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<<"录入成功!"<<endl;}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌输出函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Print(){cout<<"学号\t\t性别\t年龄\tc++\t高数\t英语\t总分"<<endl;for(i=0;i<k;i++){cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].sex<<"\t"<<stu[ i].age<<"\t"<<stu[i].Cnum<<"\t"<<stu[i].Mnum<<"\t"<<stu[i].Enum<<"\t "<<stu[i].sum<<endl;}}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Find(){cout<<"请输入所查学生学号、"<<endl;cin>>num>>name;for(i=0;i<k;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<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].sex<<"\t"<<stu[ i].age<<"\t"<<stu[i].Cnum<<"\t"<<stu[i].Mnum<<"\t"<<stu[i].Enum<<"\t "<<stu[i].sum<<endl;}else{cout<<"\t\t没有找到该学生!"<<'\n'<<endl;cout<<"输入任意字符!继续……"<<endl;getch();}/**/}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌增加信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Add(){int n,j,i;cout<<"输入学生的人数:"<<endl;cin>>n;for(i=k,j=0;i<n+k;i++,j++){cout<<"输入第"<<j+1<<"个学生的学号、、性别、年龄、C课程得分、数学课程得分、英语课程得分:"<<endl;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<<"录入成功!"<<endl;k+=n;}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Remove(){Student:Find();/* Student a;a.Find();if(x==1){}*/for(int z=i;z<k;z++)stu[z]=stu[z+1];cout<<"删除成功!"<<endl;cout<<"删除后信息:"<<endl;for(z=0;z<k-1;z++)cout<<stu[z].num<<"\t"<<stu[z].name<<"\t"<<stu[z].sex<<"\t"<<stu[z]. age<<"\t"<<stu[z].Cnum<<"\t"<<stu[z].Mnum<<"\t"<<stu[z].Enum<<"\t"<< stu[z].sum<<endl;}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Modify(){ Student t;t.Find();if(x==1){cout<<"输入新信息:"<<endl;cout<<"请输入学号、、性别、年龄、C++、高数、英语"<<endl;cin>>t.num>>>>t.sex>>t.age;strcpy(stu[i].name,);strcpy(stu[i].num,t.num);strcpy(stu[i].sex,t.sex);stu[i].age=t.age;stu[i].Cnum=um;stu[i].Mnum=t.Mnum;stu[i].Enum=t.Enum;cout<<"修改成功!"<<endl;cout<<"修改后信息:"<<endl;cout<<"学号\t\t性别\t年龄\tC++\t高数\t英语\t总分"<<endl;for(int a=0;a<k;a++)cout<<stu[a].num<<"\t"<<stu[a].name<<"\t"<<stu[a].sex<<"\t"<<stu[a]. age<<"\t"<<stu[a].Cnum<<"\t"<<stu[a].Mnum<<"\t"<<stu[a].Enum<<"\t"<<stu[a].sum<<en dl;}}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌排序函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌void Student::Sort(Student *stu){for(int i=1;i<k;i++)for(int j=0;j<k-i;j++)if(strcmp(stu[j].num,stu[j+1].num)>0){Student t;t=stu[j];stu[j]=stu[j+1];stu[j+1]=t;}cout<<"排序后信息!"<<endl;cout<<"学号\t\t性别\t年龄"<<endl;for(int j=0;j<k;j++)cout<<stu[j].num<<"\t"<<stu[j].name<<"\t"<<stu[j].sex<<"\t"<<stu[ j].age<<"\t"<<stu[j].Cnum<<"\t"<<stu[j].Mnum<<"\t"<<stu[j].Enum<<"\t "<<stu[j].sum<<endl;}//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌int main(){int w;int f;bool quit=false;cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<en dl;for(f=0;f<3;f++)cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;cout<<"\t\t◎★★★★【欢迎进入学生成绩管理系统】★★★★◎"<<endl;for(f=0;f<3;f++)cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<< endl;;Student s;cout<<"按任意键开始……"<<endl;getch();while(!quit){s.ShowMenu();cin>>w;switch(w){case 0:quit=true;break;case 1:s.Input();break;case 2:s.Print();break;case 3:s.Find();break;case 4:s.Add();break;case 5:s.Remove();break;case 6:s.Modify();break;case 7:s.Sort(stu);break;case 8:system("cls");break;default :cout<<"选择错误"<<endl;}}return 0;}。