课程设计学生信息管理系统.docx
课程设计报告 课程名称:面向对象程序设计C+ 设计题目: 学生信息管理系统 专 业:计算机科学与技术 姓 名: 学 号 指导教师:李 晓 虹2015 年 1 月 5 日一、 系统需求分析随着计算机的普及,计算机在生活中得到越来越多的应用,其中在计算机上运行的各种软件在解决生活中的实际问题中起着重大的作用,而目前在编写应用程序时,C+以其高效及灵活性成为大多程序设计者的首选。其次对于普通用户的应用者,利用C+语言设计出适用的小型软件对解决生活中的繁琐问题有很大的作用。在学校或班级,我们经常会对某次考试中所有学生的成绩进行统计和管理,由于学生数目经常繁多,所以在处理统计学生总成绩和平均成绩时工作会相对繁琐,所以针对这种情况,同时我们分析了成绩管理系统所需要的功能,在利用C+语言及VC+6.0程序运行平台之下,设计了一种小型的成绩管理系统,该系统具有学生成绩相关信息的录入、显示、查询、修改、删除和统计等功能。二、 总体设计图2-1学生成绩管理系统总体框架图三、 详细设计程序的主要功能:1. 录入功能:录入一些学生的基本信息,包括姓名、学号、7门课堂的课程的成绩(C+、英语、数学、体育、网络基础、C语言、数据库)。2. 显示功能:显示所有学生的主要信息包括姓名、学号、7门课程的课程成绩。3. 查询功能:根据学号、姓名查询这个学生的所有课程成绩。4. 修改功能:对学生信息进行修改。5. 删除功能:根据输入的学生姓名,删除其信息。6. 统计功能:对所有录入的学生的所有课程成绩进行统计。四、 系统调式由于用了switch-case语句,调试代码如下:case 1: /增加数据 char name20;intnumber;doublecpro,english,math,sport,law,hbpro,computer;char c;do cout<<" 请输入您要增加的学生的姓名:"cin>>name;cout<<endl<<" 请输入学号:"cin>>number;cout<<endl<<" 请输入C+成绩:"cin>>cpro;cout<<endl<<" 请输入英语成绩:"cin>>english;cout<<endl<<" 请输入数学成绩:"cin>>math;cout<<endl<<" 请输入体育成绩:"cin>>sport;cout<<endl<<" 请输入网络基础成绩:"cin>>law;cout<<endl<<" 请输入C语言成绩:"cin>>hbpro;cout<<endl<<" 请输入数据库成绩:"cin>>computer;cout<<endl;filej=new ofstream("d:document",ios:ate); *filej<<" 姓名 "<<name<<" 学号 "<<number<<" C+成绩 "<<cpro<<" 英语成绩 "<<english<<" 数学成绩 "<<math<<" 体育成绩 "<<sport<<" 网络基础成绩 "<<law<<" C成绩 "<<hbpro<<" 数据库成绩 "<<computer<<endl;j+; si=new student(name, number, cpro,english,math,sport,law,hbpro,computer);i+;cout<<" 数据输入成功,想继续数入吗(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl<<" "cin>>c; while(c=y);break; case 2: /修改数据 char name20;intnu;doublecc,eng,ma,sp,l,hb,com;flag=0;char c;if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;break; do cout<<" 请输入您要修改的学生的姓名:"cin>>name;cout<<endl; for(int h=0;h<i;h+) /h纪录要修改学生的位置 if(strcmp(name,sh->name)=0) flag=1;cout<<" 请输入新的学号:"cin>>nu;cout<<endl<<" 请输入C+成绩:"cin>>cc;cout<<endl<<" 请输入英语成绩:"cin>>eng;cout<<endl<<" 请输入数学成绩:"cin>>ma;cout<<endl<<" 请输入体育成绩:"cin>>sp;cout<<endl<<" 请输入网络基础成绩:"cin>>l;cout<<endl<<" 请输入C语言成绩:"cin>>hb;cout<<endl<<" 请输入数据库成绩:"cin>>com;cout<<endl;sh->cpro=cc;sh->english=eng;sh->math=ma;sh->sport=sp;sh->law=l;sh->hbpro=hb;sh->computer=com;sh->number=nu;cout<<" 数据修改成功!"<<endl; if(flag=0) cout<<" 您要修改的学生本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续修改吗(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl<<" "cin>>c; while(c=y);break; case 3: /按姓名查询 char n20;int j=0;char c;if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;break; doint flag=0;cout<<" 请输入你要查询的学生姓名:"cin>>n;cout<<endl;for(int j=0;j<i;j+) if(strcmp(n,(*sj).name)=0) flag=1;cout<<" 您要查询的学生是:"<<(*sj).name<<endl;cout<<(*sj).name<<"的成绩是: "<<" C+: "<<(*sj).cpro<<" 英语: "<<(*sj).english<<" 数学:"<<(*sj).math<<" 体育:"<<(*sj).sport<<" 法律:"<<(*sj).law<<" C:"<<(*sj).hbpro<<" 数据库 "<<(*sj).computer<<endl; if(flag=0)cout<<" 对不起!您要查询的学生不存在!"<<endl;cout<<" 您想继续查询吗?(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl;cin>>c; while(c=y);break; case 4: /按学号查询 intn,j=0;char c;if(i=0)cout<<" 管理系统中没有输入数据!"<<endl;break; doint flag=0;cout<<" 请输入你要查询的学生的学号:"cin>>n;cout<<endl;for(int j=0;j<i;j+) if(sj->number=n) flag=1;cout<<" 您要查询的学生是:"<<(*sj).name<<endl;cout<<(*sj).name<<"的成绩是: "<<" C+:"<<(*sj).cpro<<" 英语:"<<(*sj).english<<" 数学:"<<(*sj).math<<" 体育:"<<(*sj).sport<<" 法律:"<<(*sj).law<<" C:"<<(*sj).hbpro<<" 数据库 "<<(*sj).computer<<endl; if(flag=0)cout<<" 对不起!您要查询的学生不存在!"<<endl;cout<<" 您想继续查询吗?(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl;cin>>c; while(c=y);break; case 5: /输出 cout<<" 本系统所有学生数据如下:"<<endl;if(i=0)cout<<" 管理系统中没有输入数据!"<<endl;cout<<" 姓名 学号 c+ 英语 数学 体育 网络基础 C语言 数据库 "<<endl;for(int k=0;k<i;k+) cout<<sk->name<<setw(7)<<sk->number<<setw(6)<<(*sk).cpro<<setw(6)<<(*sk).english<<setw(6)<<(*sk).math<<setw(6)<<(*sk).sport<<setw(7)<<(*sk).law <<setw(10)<<(*sk).hbpro<<setw(10)<<(*sk).computer<<setw(10)<<endl; break; case6:/退出 exit(0); cout<<"Bye bye!"<<endl;cout<<" 您想继续进行其他操作吗?(y/n):"int flag=0;docin>>w;cout<<endl;if(w!=y&&w!=n)cout<<" 指令错误!请重新输入!"<<endl;elseflag=1;while(flag=0);if(w=y)cout<<" 请输入操作代码:0 输入数据"<<endl;cout<<" 1 增加数据"<<endl;cout<<" 2 修改数据"<<endl;cout<<" 3 按姓名查询"<<endl;cout<<" 4 按学号查找"<<endl;cout<<" 5 输出所有学生成绩"<<endl;cout<<" 6 退出系统"<<endl;cin>>p;while(w=y);五、 结果分析调试代码正确,每一个case都能执行,但是有很多的地方都不够完善,例如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次数据的录入,不能直接对原有的文件进行读取。六、 总结此次c+课程设计,在指导教师的精心教导下,我学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。 根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。源代码:#include<iostream.h>#include<string.h>#include<fstream.h>#include<stdlib.h>#include<iomanip.h>class student private: char name20; /姓名 double cpro,english,math,sport,law,hbpro,computer;/课程int order, number; /名次,学号public:student() student(char n20,intnu,doublecc,doubleeng,doublema,doublesp,doublel,doublehb,double com) strcpy(name,n);number=nu;cpro=cc; english=eng;math=ma;sport=sp;law=l;hbpro=hb;computer=com; friend void main();void main()cout<<" 欢迎进入*学生成绩管理系统*!"<<endl;cout<<" *"<<endl;cout<<" * 学生成绩管理系统 *"<<endl;cout<<" *"<<endl;cout<<" *"<<endl;cout<<" *0、输入数据 *"<<endl;cout<<" *1、增加数据 *"<<endl;cout<<" *2、修改数据 *"<<endl;cout<<" *3、按姓名查询 *"<<endl;cout<<" *4、按学号查询 *"<<endl;cout<<" *5、输出所有学生的成绩 *"<<endl;cout<<" *6、退出系统 *"<<endl;cout<<" *"<<endl;cout<<" 选择0-6数字进行操作"<<endl;charp;char w; student *s50; /指针对象,最多存50个学生数据ofstream *file50; /负责对文件插入操作inti=0;int j=0;int flag=0; do /flag判断输入是否有效 cin>>p;if(p>=0&&p<=6)flag=1;elsecout<<" 指令错误!请重新输入:"<<endl;while(flag=0);do switch(p) /接收功能选项 case 0: /输入数据 char c; char name20;intnumber;doublecpro,english,math,sport,law,hbpro,computer;docout<<" 请输入姓名:"cin>>name;cout<<endl<<" 请输入学号:"cin>>number;cout<<endl<<" 请输入C+成绩:"cin>>cpro;cout<<endl<<" 请输入英语成绩:"cin>>english;cout<<endl<<" 请输入数学成绩:"cin>>math;cout<<endl<<" 请输入体育成绩:"cin>>sport;cout<<endl<<" 请输入网络基础成绩:"cin>>law;cout<<endl<<" 请输入C语言成绩:"cin>>hbpro;cout<<endl<<" 请输入数据库成绩:"cin>>computer;cout<<endl;filej=new ofstream("D:document",ios:ate); *filej<<" 姓名 "<<name<<" 学号 "<<number<<" C+成绩 "<<cpro<<" 英语成绩 "<<english<<" 数学成绩 "<<math<<" 体育成绩 "<<sport<<" 网络基础成绩 "<<law<<" C成绩 "<<hbpro<<" 数据库成绩 "<<computer<<endl;j+; si=new student(name, number,cpro,english,math,sport,law,hbpro,computer);i+;cout<<" 数据输入成功,想继续输入吗(y/n):"cin>>c;cout<<endl;do if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl<<" "cin>>c; elseflag=1;while(flag=0);while(c=y);break; case 1: /增加数据 char name20;intnumber;doublecpro,english,math,sport,law,hbpro,computer;char c;do cout<<" 请输入您要增加的学生的姓名:"cin>>name;cout<<endl<<" 请输入学号:"cin>>number;cout<<endl<<" 请输入C+成绩:"cin>>cpro;cout<<endl<<" 请输入英语成绩:"cin>>english;cout<<endl<<" 请输入数学成绩:"cin>>math;cout<<endl<<" 请输入体育成绩:"cin>>sport;cout<<endl<<" 请输入网络基础成绩:"cin>>law;cout<<endl<<" 请输入C语言成绩:"cin>>hbpro;cout<<endl<<" 请输入数据库成绩:"cin>>computer;cout<<endl;filej=new ofstream("d:document",ios:ate); *filej<<" 姓名 "<<name<<" 学号 "<<number<<" C+成绩 "<<cpro<<" 英语成绩 "<<english<<" 数学成绩 "<<math<<" 体育成绩 "<<sport<<" 网络基础成绩 "<<law<<" C成绩 "<<hbpro<<" 数据库成绩 "<<computer<<endl;j+; si=new student(name, number, cpro,english,math,sport,law,hbpro,computer);i+;cout<<" 数据输入成功,想继续数入吗(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl<<" "cin>>c; while(c=y);break; case 2: /修改数据 char name20;intnu;doublecc,eng,ma,sp,l,hb,com;flag=0;char c;if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;break; do cout<<" 请输入您要修改的学生的姓名:"cin>>name;cout<<endl; for(int h=0;h<i;h+) /h纪录要修改学生的位置 if(strcmp(name,sh->name)=0) flag=1;cout<<" 请输入新的学号:"cin>>nu;cout<<endl<<" 请输入C+成绩:"cin>>cc;cout<<endl<<" 请输入英语成绩:"cin>>eng;cout<<endl<<" 请输入数学成绩:"cin>>ma;cout<<endl<<" 请输入体育成绩:"cin>>sp;cout<<endl<<" 请输入网络基础成绩:"cin>>l;cout<<endl<<" 请输入C语言成绩:"cin>>hb;cout<<endl<<" 请输入数据库成绩:"cin>>com;cout<<endl;sh->cpro=cc;sh->english=eng;sh->math=ma;sh->sport=sp;sh->law=l;sh->hbpro=hb;sh->computer=com;sh->number=nu;cout<<" 数据修改成功!"<<endl; if(flag=0) cout<<" 您要修改的学生本来就不存在!请检查重新输入!"<<endl; cout<<" 想继续修改吗(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl<<" "cin>>c; while(c=y);break; case 3: /按姓名查询 char n20;int j=0;char c;if(i=0) cout<<" 管理系统中没有输入数据!"<<endl;break; doint flag=0;cout<<" 请输入你要查询的学生姓名:"cin>>n;cout<<endl;for(int j=0;j<i;j+) if(strcmp(n,(*sj).name)=0) flag=1;cout<<" 您要查询的学生是:"<<(*sj).name<<endl;cout<<(*sj).name<<"的成绩是: "<<" C+: "<<(*sj).cpro<<" 英语: "<<(*sj).english<<" 数学:"<<(*sj).math<<" 体育:"<<(*sj).sport<<" 法律:"<<(*sj).law<<" C:"<<(*sj).hbpro<<" 数据库 "<<(*sj).computer<<endl; if(flag=0)cout<<" 对不起!您要查询的学生不存在!"<<endl;cout<<" 您想继续查询吗?(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl;cin>>c; while(c=y);break; case 4: /按学号查询 intn,j=0;char c;if(i=0)cout<<" 管理系统中没有输入数据!"<<endl;break; doint flag=0;cout<<" 请输入你要查询的学生的学号:"cin>>n;cout<<endl;for(int j=0;j<i;j+) if(sj->number=n) flag=1;cout<<" 您要查询的学生是:"<<(*sj).name<<endl;cout<<(*sj).name<<"的成绩是: "<<" C+:"<<(*sj).cpro<<" 英语:"<<(*sj).english<<" 数学:"<<(*sj).math<<" 体育:"<<(*sj).sport<<" 法律:"<<(*sj).law<<" C:"<<(*sj).hbpro<<" 数据库 "<<(*sj).computer<<endl; if(flag=0)cout<<" 对不起!您要查询的学生不存在!"<<endl;cout<<" 您想继续查询吗?(y/n):"cin>>c;cout<<endl;if(c!=y&&c!=n) cout<<" 指令错误!请重新输入!"<<endl;cin>>c; while(c=y);break; case 5: /输出 cout<<" 本系统所有学生数据如下:"<<endl;if(i=0)cout<<" 管理系统中没有输入数据!"<<endl;cout<<" 姓名 学号 c+ 英语 数学 体育 网络基础 C语言 数据库 "<<endl;for(int k=0;k<i;k+) cout<<sk->name<<setw(7)<<sk->number<<setw(6)<<(*sk).cpro<<setw(6)<<(*sk).english<<setw(6)<<(*sk).math<<setw(6)<<(*sk).sport<<setw(7)<<(*sk).law <<setw(10)<<(*sk).hbpro<<setw(10)<<(*sk).computer<<setw(10)<<endl; break; case6:/退出 exit(0); cout<<"Bye bye!"<<endl;cout<<" 您想继续进行其他操作吗?(y/n):"int flag=0;docin>>w;cout<<endl;if(w!=y&&w!=n)cout<<" 指令错误!请重新输入!"<<endl;elseflag=1;while(flag=0);if(w=y)cout<<" 请输入操作代码:0 输入数据"<<endl;cout<<" 1 增加数据"<<endl;cout<<" 2 修改数据"<<endl;cout<<" 3 按姓名查询"<<endl;cout<<" 4 按学号查找"<<endl;cout<<" 5 输出所有学生成绩"<<endl;cout<<" 6 退出系统"<<endl;cin>>p;while(w=y);运行截图: (注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)