当前位置:文档之家› C++学生信息管理系统课程设计报告42596

C++学生信息管理系统课程设计报告42596

面向对象的程序设计课程设计报告姓名:学号:班级:院系日期:目录1课程设计目的……………………………………………………2项目要求与简介…………………………………………………3设计题目…………………………………………………………题目学生成绩管理系统……………………………………4测试运行的结果………………………………………………….5心得体会与进一步的改进………………………………………6参考书目…………………………………………………………7源代码…………………………………………………………《《程序设计语言(C++)》》课程设计一.设计目的1.进一步掌握用C++进行类的定义和操作2.进一步掌握类的继承和派生3.掌握在Visual C++6进行编程的技术4.综合利用上述知识,编写面向对象的简单程序5.培养团结合作能力和自主学习的能力二.项目要求与简介1.要求系统具备一定的存储记忆功能2.要求系统能够处理常见异常并作出反映3.系统具备常用的学生信息处理功能4.本系统还处于1.1版本,还会发布后续版本三.设计题目题目学生成绩管理系统(一).系统的主要功能1.增加学生系统可以提示用户输入增加的学生个数,添入到student.dat2.删除首先由用户输入要删除的位置,然后系统调用删除函数3.查找系统提示用户输入要查找的学号,成绩,姓名然后系统再传递用户选择的项目分别调用以上三个函数4.修改系统提示用户要修改的位置,然后传递给修改函数。

接着系统出现提示提示用户修改的项目,可以修改学号,姓名或者成绩5.成绩信息用户选择该功能以后,系统出现提示。

总共有六项,求平均成绩,成绩排序低于平均成绩的学生信息,高于90分的学生信息,低于60分的学生信息或退出该功能6.显示所有学生信息调用此功能,系统读取文件中当前所有内容输出7.当前学生总数读取long.txt中保存的信息并输出8.交换两个学生信息调用函数交换两个学生的信息9.插入学生信息在指定位置新建一个学生信息,位置由用户输入(二).系统总体框架(三).系统数据结构定义class student{//这是数据节点public:student(){};student(student &c){this->number=c.getnumber();this->setname(c.getname());this->setsex(c.getsex());this->grade=c.getgrade();}void setname(char *name1){strcpy(this->name,name1);}void setnumber(int num){this->number=num;}void setgrade(double grade1){this->grade=grade1;}void setsex(char *sex1){strcpy(this->sex,sex1);}char *getname(){return this->name;}double getgrade(){return this->grade;}int getnumber(){return this->number;}char *getsex(){return this->sex;}private:char name[20];char sex[5];double grade;int number;};四.测试运行的结果<1>测试新建学生信息功能<2>测试查看学生总数功能<3>测试插入学生信息功能<4>测试显示所有学生信息功能<5>测试学生成绩信息功能<6>测试交换学生信息功能<7>测试删除学生信息功能<7>测试修改学生信息功能<8>测试查找学生信息功能五.心得体会与进一步改进通过此次VC++课程设计,我了解了Visual C++6的调试和找错基本方法。

系统的设计基本实现了老师所要求的功能,同时还增添加了交换学生信息的新功能。

同时在设计过程中,对于系统的功能还有许多不完善的地方,例如为了是对输入信息的限制,没有在系统中做限制用户可以随意输入,由此可能导致系统出错。

另外对于删除没有实现按学号删除,因此还需要更多的设计来完善对于表达式的处理;设计一开始是以链表为基础的,后来进行不下去了。

重新用了现在C ++中对文件处理的知识;界面风格只是使用默认的,没有创新,这个需要在以后的设计中加以改进。

此次的课程设计让自己在学习新知识上有了更高的理解,有些只是只有在你想到要用时才会自己去学,同时自己在编程上的理解更深一层,逐步了解编程在实际中的运用,掌握了更多编程方法和思想,拓宽了知识面,为进一步的学习继续打牢根基。

六.参考书目Visualc++入门到精通七.源代码class list:public student{public:v oid display(){ifstream infile;int a=1;infile.open("student.dat",ios::binary);student c;while(infile.read((char *)&c,sizeof(c))){cout<<" 第"<<a<<"个学生信息"<<endl;cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;a++;cout<<endl;}infile.close();}//显示学生信息v oid write(int i){int a,t,b=0;char name1[20];char sex1[5];int number1;double grade1;ofstream outfile;outfile.open("student.dat",ios::app);student c;for(a=1;a<=i;a++){cout<<"请输入姓名:";cin>>name1;c.setname(name1);cout<<"请输入学生学号:";cin>>number1;c.setnumber(number1);cout<<"请输入学生性别:";cin>>sex1;c.setsex(sex1);cout<<"请输入学生成绩:";cin>>grade1;c.setgrade(grade1);outfile.write((char * )&c,sizeof(c)); }outfile.close();ifstream infile;//infile.seekg(0,ios::end);infile.open("long.txt");if(infile.is_open()){while(!infile.eof()){char temp[50];infile.getline(temp,50);b=atoi(temp);}}else{b=0;}infile.close();ofstream outfile1("long.txt");t=i+b;outfile1<<t;outfile1.close();}//增加学生信息v oid modify2(int i,int j){int cap1;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();student c;ifstream infile1("student.dat");ofstream outfile("temp.dat");int a;for(a=1;a<i;a++){infile1.read((char *)&c,sizeof(c));outfile.write((char *)&c,sizeof(c));}outfile.close();infile1.close();ifstream infile2("student.dat");infile2.seekg(sizeof(c)*(i-1));infile2.read((char *)&c,sizeof(c));char name1[20];cout<<"输入姓名:";c.setnumber(c.getnumber());c.setgrade(c.getgrade());c.setname(name1);c.setsex(c.getsex());ofstream outfile1("temp.dat",ios::app);outfile1.write((char *)&c,sizeof(c));outfile1.close();ifstream infile3("student.dat");infile3.seekg(sizeof(c)*i);ofstream outfile2("temp.dat",ios::app);for(a=i+1;a<=cap1;a++){infile3.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}outfile2.close();infile3.close();ifstream infile4("temp.dat");ofstream outfile3("student.dat");for(a=1;a<=cap1;a++){infile4.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}remove("temp.dat");infile4.close();outfile3.close();}v oid modify1(int i,int j){int cap1;ifstream infile;infile.open("long.txt");infile.close();student c;ifstream infile1("student.dat"); ofstream outfile("temp.dat");int a;for(a=1;a<i;a++){infile1.read((char *)&c,sizeof(c));outfile.write((char *)&c,sizeof(c)); }outfile.close();infile1.close();ifstream infile2("student.dat");infile2.seekg(sizeof(c)*(i-1));infile2.read((char *)&c,sizeof(c));int number1;cout<<"输入学号:";cin>>number1;c.setnumber(number1);c.setgrade(c.getgrade());c.setname(c.getname());c.setsex(c.getsex());ofstream outfile1("temp.dat",ios::app); outfile1.write((char *)&c,sizeof(c)); outfile1.close();ifstream infile3("student.dat");infile3.seekg(sizeof(c)*i);ofstream outfile2("temp.dat",ios::app); for(a=i+1;a<=cap1;a++){infile3.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}outfile2.close();infile3.close();ifstream infile4("temp.dat");ofstream outfile3("student.dat");for(a=1;a<=cap1;a++){infile4.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}remove("temp.dat");infile4.close();outfile3.close();}void modify3(int i,int j){int cap1;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();student c;ifstream infile1("student.dat");ofstream outfile("temp.dat");int a;for(a=1;a<i;a++){infile1.read((char *)&c,sizeof(c));outfile.write((char *)&c,sizeof(c));}outfile.close();infile1.close();ifstream infile2("student.dat");infile2.seekg(sizeof(c)*(i-1));infile2.read((char *)&c,sizeof(c));char sex1[5];cout<<"输入性别:";cin>>sex1;c.setnumber(c.getnumber());c.setgrade(c.getgrade());c.setname(c.getname());c.setsex(sex1);ofstream outfile1("temp.dat",ios::app);outfile1.write((char *)&c,sizeof(c));outfile1.close();ifstream infile3("student.dat");infile3.seekg(sizeof(c)*i);ofstream outfile2("temp.dat",ios::app);for(a=i+1;a<=cap1;a++){infile3.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}outfile2.close();infile3.close();ifstream infile4("temp.dat");ofstream outfile3("student.dat");for(a=1;a<=cap1;a++){infile4.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}remove("temp.dat");infile4.close();outfile3.close();}void modify4(int i,int j){int cap1;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();student c;ifstream infile1("student.dat"); ofstream outfile("temp.dat");int a;for(a=1;a<i;a++){infile1.read((char *)&c,sizeof(c));outfile.write((char *)&c,sizeof(c)); }outfile.close();infile1.close();ifstream infile2("student.dat");infile2.seekg(sizeof(c)*(i-1));infile2.read((char *)&c,sizeof(c)); double grade1;cout<<"输入成绩:";cin>>grade1;c.setnumber(c.getnumber());c.setgrade(grade1);c.setname(c.getname());c.setsex(c.getsex());ofstream outfile1("temp.dat",ios::app); outfile1.write((char *)&c,sizeof(c)); outfile1.close();ifstream infile3("student.dat");infile3.seekg(sizeof(c)*i);ofstream outfile2("temp.dat",ios::app);for(a=i+1;a<=cap1;a++){infile3.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}outfile2.close();infile3.close();ifstream infile4("temp.dat");ofstream outfile3("student.dat");for(a=1;a<=cap1;a++){infile4.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}remove("temp.dat");infile4.close();outfile3.close();}void modify(int i){int cap1;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();student c;ifstream infile1("student.dat");if(i<=cap1){int j=1;while(j!=0){cout<<" __________________________________"<<endl;cout<<" |**** 请输入你想执行的操作****|"<<endl;cout<<" |**** 1.修改学生学号****|"<<endl;cout<<" |**** 2.修改学生姓名****|"<<endl;cout<<" |**** 3.修改学生性别****|"<<endl;cout<<" |**** 4.修改学生成绩****|"<<endl;cout<<" |**** 5.显示该学生信息***|"<<endl;cout<<" |**** 0.退出操作****|"<<endl;cout<<" —————————————————"<<endl;cin>>j;switch(j){case 1:this->modify1(i,j);break;case 2:this->modify2(i,j);break;case 3:this->modify3(i,j);break;case 4:this->modify4(i,j);break;case 5:infile1.seekg(sizeof(c)*(i-1));infile1.read((char *)&c,sizeof(c));cout<<" 第"<<i<<"个学生信息"<<endl;cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;break;case 0:break;}}}elsecout<<"你修改的位置有误"<<endl; }//修改学生信息void change(int i,int j){int cap1,t;if(i>j){t=i;i=j;j=t;}student b;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();if(i!=j){if(i<=cap1&&j<=cap1){b=this->Delete(i);this->insert(j-1,b);b=this->Delete(j);this->insert(i,b);}}}//交换两学生信息void sort(){int cap1,i,j;student a,b;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();for(i=0;i<cap1-1;i++){for(j=i+1;j<cap1;j++){ifstream infile1("student.dat");ifstream infile2("student.dat");infile1.seekg(sizeof(a)*(i));infile1.read((char *)&a,sizeof(a));infile2.seekg(sizeof(b)*(j));infile2.read((char *)&b,sizeof(b));if(a.getgrade()<=b.getgrade())this->change(i+1,j+1);infile1.close();infile2.close();}}}//从大到小排列成绩void insert(int i,student b) {int cap1;ifstream infile;infile.open("long.txt");infile>>cap1;infile.close();if(i<=cap1){student c;ifstream infile1("student.dat");ofstream outfile("temp.dat");int a;for(a=1;a<i;a++){infile1.read((char *)&c,sizeof(c));outfile.write((char *)&c,sizeof(c));}outfile.close();infile1.close();ofstream outfile1("temp.dat",ios::app);outfile1.write((char * )&b,sizeof(b));outfile1.close();ifstream infile2("student.dat");infile2.seekg(sizeof(c)*(i-1));ofstream outfile2("temp.dat",ios::app);for(a=i;a<=cap1;a++){infile2.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}outfile2.close();infile2.close();ifstream infile3("temp.dat");ofstream outfile3("student.dat");for(a=1;a<=cap1+1;a++){infile3.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}remove("temp.dat");cap1++;infile3.close();outfile3.close();ofstream outfile4("long.txt");outfile4<<cap1;outfile4.close();}elsecout<<"你输入的插入位置有误"<<endl;}//插入学生信息student Delete(int i){int cap1;ifstream infile1("long.txt");infile1>>cap1;infile1.close();student c,b;ifstream infile2("student.dat",ios::binary);int a;ofstream outfile1("temp1.dat");for(a=1;a<i;a++){infile2.read((char *)&c,sizeof(c));outfile1.write((char *)&c,sizeof(c));}infile2.seekg(sizeof(c)*(i-1));infile2.read((char *)&c,sizeof(c));b=c;infile2.seekg(sizeof(c)*(i));ofstream outfile2("temp1.dat",ios::app);for(a=i+1;a<=cap1;a++){infile2.read((char *)&c,sizeof(c));outfile2.write((char *)&c,sizeof(c));}infile2.close();outfile1.close();outfile2.close();ofstream outfile3("student.dat");ifstream infile3("temp1.dat");for(a=1;a<=cap1-1;a++){infile3.read((char *)&c,sizeof(c));outfile3.write((char *)&c,sizeof(c));}infile3.close();outfile3.close();cap1--;ofstream outfile4("long.txt");outfile4<<cap1;outfile4.close();remove("temp1.dat");return b;}//删除学生信息void find_number(int number1){student c;ifstream infile;infile.open("student.dat");while(infile.read((char *)&c,sizeof(c))){if(c.getnumber()==number1){cout<<" 学号为"<<number1<<"的学生信息"<<endl;cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile.close();}v oid find_grade(double grade1){student c;ifstream infile;infile.open("student.dat");while(infile.read((char *)&c,sizeof(c))){if(c.getgrade()==grade1){cout<<" 成绩为"<<grade1<<"的学生信息"<<endl;cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile.close();}v oid find_name(char *name1){student c;ifstream infile;infile.open("student.dat");while(infile.read((char *)&c,sizeof(c))){if(!strcmp(c.getname(),name1)){cout<<" 姓名为"<<name1<<"的学生信息"<<endl;cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile.close();}//查找学生信息int length(){i fstream infile("long.txt");i nt a;i nfile>>a;r eturn a;}//学生总数double average(){i nt cap1;i fstream infile;infile.open("long.txt");infile>>cap1;i nt i;d ouble total=0,average;s tudent c;i fstream infile1("student.dat");f or(i=1;i<=cap1;i++){infile1.read((char *)&c,sizeof(c));total=total+c.getgrade();}i nfile1.close();a verage=total/cap1;r eturn average;}//求平均成绩void low_average(){s tudent c;d ouble average=this->average();i fstream infile1("student.dat");w hile(infile1.read((char *)&c,sizeof(c))){if(c.getgrade()<average){cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile1.close();}//低于平均成绩void high(){s tudent c;d ouble average=this->average();i fstream infile1("student.dat");w hile(infile1.read((char *)&c,sizeof(c))){if(c.getgrade()>90){cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile1.close();}void low(){s tudent c;d ouble average=this->average();i fstream infile1("student.dat");w hile(infile1.read((char *)&c,sizeof(c))){if(c.getgrade()<60){cout<<"姓名:"<<c.getname()<<endl;cout<<"性别:"<<c.getsex()<<endl;cout<<"成绩:"<<c.getgrade()<<endl;cout<<"学号:"<<c.getnumber()<<endl;}}i nfile1.close();}l ist(){}};void show(){i nt j=1,cap1;c har name1[20];c har sex1[5];i nt number1;d ouble grade1;s tudent d;l ist c;i nt a,b;c out<<" 欢迎使用学生管理系统"<<endl;w hile(j!=0){cout<<" __________________________________"<<endl;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<<" |**** 9.交换学生信息****|"<<endl;cout<<" |**** 0.退出操作****|"<<endl;cout<<" —————————————————"<<endl;cin>>j;switch(j){case 1:cout<<"你想添加的学生个数:";cin>>a;c.write(a);break;case 2:cout<<"当前学生总数:"<<c.length()<<endl;break;case 3: {ifstream infile("long.txt");infile>>cap1;infile.close();cout<<"删除的范围1~"<<cap1<<endl;cout<<"请输入你想删除的学生位置:";cin>>a;while(a<=0||a>cap1){cout<<"你输入的位置有误,请重新输入"<<endl;cin>>a;}cout<<a<<endl;d=c.Delete(a);cout<<" 你删除的学生信息"<<endl;cout<<"姓名:"<<d.getname()<<endl;cout<<"性别:"<<d.getsex()<<endl;cout<<"成绩:"<<d.getgrade()<<endl;cout<<"学号:"<<d.getnumber()<<endl;break;}case 4:cout<<"请输入你想插入的位置:";cin>>a;cout<<"请输入姓名:";cin>>name1;c.setname(name1);cout<<"请输入学生学号:";cin>>number1;c.setnumber(number1);cout<<"请输入学生性别:";cin>>sex1;c.setsex(sex1);cout<<"请输入学生成绩:";cin>>grade1;c.setgrade(grade1);c.insert(a,c);break;case 5:cout<<" ________________________________"<<endl;cout<<" |**** 请输入你想执行的操作****|"<<endl;cout<<" |**** 1.按学号查找****|"<<endl;cout<<" |**** 2.按成绩查找****|"<<endl;cout<<" |**** 3.按姓名查找****|"<<endl;cout<<" |**** 0.退出操作****|"<<endl;cout<<" ————————————————"<<endl;cin>>a;while(a!=0){switch(a){case 1:cout<<"请输入你要查找的学号:";cin>>number1;c.find_number(number1);break;case 2:cout<<"请输入你要查找的成绩:";cin>>grade1;c.find_grade(grade1);break;case 3:cout<<"请输入你要查找的姓名:";cin>>name1;c.find_name(name1);break;case 0:break;default :break;}cout<<" ________________________________"<<endl;cout<<" |**** 请输入你想执行的操作****|"<<endl;cout<<" |**** 1.按学号查找****|"<<endl;cout<<" |**** 2.按成绩查找****|"<<endl;cout<<" |**** 3.按姓名查找****|"<<endl;cout<<" |**** 0.退出操作****|"<<endl;cout<<" ————————————————"<<endl;cin>>a;}break;case 6:cout<<" __________________________________"<<endl;cout<<" |**** 请输入你想执行的操作****|"<<endl;cout<<" |**** 1.学生成绩排名****|"<<endl;cout<<" |**** 2.低于平均成绩****|"<<endl;cout<<" |**** 3.学生平均成绩****|"<<endl;cout<<" |**** 4.高于90的学生****|"<<endl;cout<<" |**** 5.低于60的学生****|"<<endl;cout<<" |**** 0.退出操作****|"<<endl;cout<<" —————————————————"<<endl;cin>>a;while(a!=0){switch(a){case 1:c.sort();c.display();break;case 2:cout<<" 低于平均成绩的学生信息"<<endl;c.low_average();break;case 3:cout<<"学生平均成绩:"<<c.average()<<endl;break;case 4:cout<<" 高于90的学生信息"<<endl;c.high();break;case 5:cout<<" 低于60的学生信息"<<endl;c.low();break;case 0:break;default:break;}cout<<" __________________________________"<<endl; cout<<" |**** 请输入你想执行的操作****|"<<endl; cout<<" |**** 1.学生成绩排名****|"<<endl; cout<<" |**** 2.低于平均成绩****|"<<endl; cout<<" |**** 3.学生平均成绩****|"<<endl; cout<<" |**** 4.高于90的学生****|"<<endl;cout<<" |**** 5.低于60的学生****|"<<endl;cout<<" |**** 0.退出****|"<<endl;cout<<" —————————————————"<<endl;cin>>a;}break;case 7:c.display();break;case 8:cout<<"请输入你想修改学生的位置:";cin>>a;c.modify(a);break;case 9:cout<<"请输入交换的位置:";cin>>a;cin>>b;c.change(a,b);break;case 10:cout<<"学生平均成绩:"<<c.average()<<endl;break;case 0:cout<<"编程人员:杜君完成日期:2011.1.3"<<endl;cout<<" 欢迎下次使用"<<endl;break;default:break;}if(j==0)break;}}//界面系统void main(){s how();}。

相关主题