1、课程设计汇报课程设计题目: 学生信息管理系统 学生姓名: 张鹏专 业: 软件工程(嵌入式)班 级: 1621806指导老师: 高 永 平 6 月 9 日目录一、需求分析:2二、总体设计:2三、具体设计。3四、测试结果。12五、软件操作使用说明书。17六、总结。17七、代码:17一、需求分析:依据对学生信息管理需要,建立一个“学生信息管理系统”,以方便对学生信息数据录入、修改、删除和查询功效。、要求完:1.有菜单界面能够对功效进行选择;2.能录入姓名、性别、学号、班级和电话号码等学生信息并保留到文件中;3.能依据学生学号进行排序;4.能依据学生学号对学生信息进行修改;5.能依据学生学号对学生信息
2、进行删除;6.能依据学生学号、姓名和班级等对学生信息进行查询;7.能依据班级对学生人数进统计。二、总体设计:依据以上分析,本系统关键包含:1.从键盘录入学生个人信息,并保留到文件中;2.按学号对学生信息进行排序3.按学号对学生信息进行修改;4.按学号对学生信息进行删除;5.按学号对学生信息进行查询;6.按姓名对学生信息进行查询;7.按班级对学生信息进行查询;8.结束目前途序; 等8大功效,系统关键定义了1个类和16个函数以实现各个功效:(1)主函数main():调用录入、查找、修改、排序、统计、删除等函数对学生组员信息进行处理。(2)定义类class student:用于定义组员结构体数组。(
3、3)类中结构函数student():对类中各项私有组员进行传值。(4)类中输入运算符重载函数operator ():方便对类对象输入。(5)类中输出运算符重载函数operator ():方便对类对象输出。(6)获取函数getnum():方便在类外对类中私有组员num数据进行调用。(7)获取函数getname():方便在类外对类中私有组员name数据进行调用。(8)获取函数getban():方便在类外对类中私有组员ban数据进行调用。(9)录入函数 enter():从键盘输入学生个人信息,并保留到文件中。(10)查找函数 search_num():按学号查找学生个人信息。(11)查找函数 sea
4、rch_name():按姓名查找学生个人信息。(12)查找函数 search_ban():按班级查找学生个人信息。(13)修改函数 changr():按学号修改学生个人信息,保留文件中。(14)删除函数 del():按学号删除学生个人信息,保留到文件中。(15)排序函数sort():按学号对学生个人信息进行排序。(16)统计函数count():按班级对学生人数进行统计。程序功效结构图图1所表示:学生信息管理系统键 盘 输 入保 存 数 据学 号 排 序信 息 修 改信 息 删 除学 号 查 询班 级 查 询 人 数 统 计姓 名 查 询图1程序功效结构图图三、具体设计。本系统有一个主函数,8个
5、功效模块,每个功效模块函数全部是由主函数调用,分别说明以下:(1)主函数main():调用录入、查找、修改、排序、统计、删除等函数对学生组员信息进行处理。主函数步骤图图2所表示:开 始输出菜单输入操作选择cc=0c=8c=7c=6c=5c=3c=2c=1退出系统保留数据输入数据学号排序信息修改信息删除学号查询姓名查询统计人数班级查询c=4继续操作否YN结束图2主函数步骤图(2)键盘输入函数步骤图:从键盘输入学生个人信息,并保留到文件中。步骤图图3所表示:开 始输入学生个人信息是否继续结束输入学生人数保留数据到文件中YN图3键盘输入函数步骤图(3)排序函数步骤图:按学号对学生个人信息进行排序。步
6、骤图图4所表示:开 始是否继续结束按学号进行学排序输出排序完成后信息NY图4排序函数步骤图(4)信息修改函数步骤图:由用户输入需要修改组员学号,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。步骤图图5所表示:开 始输出不存在组员信息信息打开文件输入组员学号查询到否输出查到组员信息信息输入修改组员信息信息关闭文件结束图5信息修改函数步骤图(5)信息删除函数步骤图:由用户输入需要删除组员学号,在现有学生信息中查询是否有此学生信息存在,查到删除该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。步骤图图6所表示:开 始打开文件查
7、询到否关闭文件结束Y删除此学生信息N输入不存在信息读入学生信息输入删除学号图6信息删除函数步骤图(6)学号查询函数步骤图:由用户输入需要查询组员学号,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。步骤图图7所表示:开 始打开文件输出不存在学生信息结束关闭文件查询到否输入学生学号N输出查到学生信息信息Y图7学号查询函数步骤图(7)姓名查询函数步骤图:由用户输入需要查询组员姓名,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“姓名为XX学生不存在!”信息。步骤图图8所表示:开 始打开文件输出不存在学生信
8、息结束关闭文件查询到否输入学生姓名N输出查到学生信息信息Y图8姓名查询函数步骤图(8)班级查询函数步骤图:由用户输入需要查询组员班级,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“班级为XX学生不存在!”信息。步骤图图9所表示:开 始打开文件输出不存在该班级学生结束关闭文件查询到否输入学生班级N输出查到学生信息信息Y图9班级查询函数步骤图(9)按班级统计函数步骤图:由用户输入需要查询组员班级,在现有学生信息中查询是否有此学生信息存在,查到即对该班级人数进行统计,没查到则输出“班级为XX学生不存在!”信息。步骤图图10所表示:开 始打开文件输出不存在该班级学生结
9、束关闭文件查询到否输入学生班级N输出该班级人数Y图10按班级统计函数步骤图四、测试结果。(1)程序运行主菜单图11所表示:图11(2)从键盘上输入学生人数和学生信息图12所表示:图12(3)按学号修改图13所表示:图13(4)按学号删除图14:图14(5)按学号查找图15:图15(6)按姓名查找图16:图16(7)按班级查找图17:图17(8)按班级统计人数图18:图18(9)按学号进行排序图19:图19五、软件操作使用说明书。本软件采取命令行对话方法进行操作,运行后出现主界面如上图所表示,然后按菜单提醒操作即可。六、总结。经过一个星期不停上机实践练习,我对c+有了更深入认识和了解,学好它重在
10、实践,要经过不停上机操作不停进行操作和试运行才能愈加好地掌握它,经过这次实践,我发觉了自己很多不足:我对多种循环了解深度还不够,对字符组员调用还不是很熟练,对指针了解还是不透彻,和对处理问题想法不够全方面。这些不足,在这次实践中全部有所提升,而且对这些不足我全部会在后续学习中努力补足。七、代码: #include#include#include#define M 5000using namespace std;class studentpublic:student()student(char na10,char se10,int n,int b,char t12):num(n),ban(b)s
11、trcpy(sex,se);strcpy(name,na);strcpy(tel,t);friend istream & operator (istream & is,student & s)iss.names.sexs.nums.bans.tel;return is;friend ostream & operator (ostream & os,student & s)oss.name s.sex s.num s.ban s.telendl;return os;int getnum()return num;int getban()return ban;char *getsex()char *
12、s=new charstrlen(sex);s=sex;return s;char *getname()char *p=new charstrlen(name);p=name;return p;char *gettel()char *t=new charstrlen(tel);t=tel;return t;private:char name10;char sex10;int num,ban;char tel12;int menu()char s80;int c;cout* 主 菜 单 *endlendl;cout | 0.退出目前途序 | nendl;cout | 1.输入学生信息 | nen
13、dl;cout | 2.依据学号查询 | nendl;cout | 3.依据姓名查询 | nendl;cout | 4.依据班级查询 | nendl;cout | 5.依据学号排序 | nendl;cout | 6.按班级计人数 | nendl;cout | 7.依据学号删除 | nendl;cout | 8.依据学号修改 | nendl;cout-endl;cout 输入您菜单选项编号(0-8):endl;cout Designed by Peng8)cout输入错误,请重新输入!:;elsebreak;return c;int enter(student t)int i,n;system(
14、cls);cout 请输入学生信息条数n;cout 请输入学生信息nendl;cout姓名 性别 学号 班级 联络电话endl;fstream fs;fs.open(c:item.txt,ios:out);for(i=0;iti;fsti;fs.close();getchar();return n;void search_num(student t,int n)int i,nu,temp=-1000;system(cls);cout请输入查找学生学号:nu;for(i=0;in;i+)if(nu=ti.getnum()cout该学生信息为:endl姓名 性别 学号 班级 联络电话endl;co
15、utti;temp=i;if(temp=-1000)coutendlendl学号为 nu 学生不存在!endl;getchar();void search_ban(student t,int n)int i,ba,temp=-1000;system(cls);cout请输入查找学生班级号:ba;cout该学生信息为:endl姓名 性别 学号 班级 联络电话endl;for(i=0;in;i+)if(ba=ti.getban()coutti;temp=i;if(temp=-1000)coutendlendl班级为 ba 学生不存在!endl;getchar();void search_name(
16、student t,int n)int i,temp=-1000;char na20;system(cls);cout请输入查找学生姓名:na;for(i=0;in;i+)if(strcmp(na,ti.getname()=0)cout该学生信息为:endl姓名 性别 学号 班级 联络电话endl;coutti;temp=i;if(temp=-1000)coutendlendl姓名为 na 学生不存在!endl;getchar();void sort(student t,int n)student p;int s;system(cls);cout请选择升序或降序(1或2):s;if(s=1)c
17、out按学号排序(升序)完成以下:endl;for(int i=0;in-1;i+)for(int j=0;jtj+1.getnum()p=tj;tj=tj+1;tj+1=p;cout姓名 性别 学号 班级 联络电话endl;for(int a=0;an;a+)coutta;if(s=2)cout按学号排序(降序)完成以下:endl;for(int i=0;in-1;i+)for(int j=0;jn-1-i;j+)if(tj.getnum()tj+1.getnum()p=tj;tj=tj+1;tj+1=p;cout姓名 性别 学号 班级 联络电话endl;for(int a=0;an;a+)
18、coutta;getchar();void count(student t,int n)int i,c,temp=-1000;system(cls);fstream fs;fs.open(c:item.txt,ios:in);cout请输入想统计人数班级:c;int s=0;for(i=0;iti;if(c=ti.getban()s+;temp=i;cout该班级人数为:sendl;fs.close();if(temp=-1000)coutendlendl班级为 c 学生不存在!endl;getchar();void change(student t,int n)int id,i,temp=-
19、1000,run=0;system(cls);cout请输入要修改学生学号:id;fstream fs;fs.open(c:item.txt,ios:in|ios:out);for(i=0;in;i+)if(id=ti.getnum()cout修改前该学生信息为:endl姓名 性别 学号 班级 联络电话endl;coutti;temp=i;run=;fs.close();if(run=)fs.open(c:item.txt,ios:in|ios:out);cout请输入你修改该学生信息为:endl姓名 性别 学号 班级 联络电话ti;fsti;fs.close();cout修改成功!endl;
20、if(temp=-1000)coutendlendl姓名为 id 学生不存在!endl;getchar();int del(student t,int n)int ber,temp=-1000,run=0;int i,j,nu;system(cls);cout请输入要删除学生学号:ber;for(i=0;in;i+)if(ber=ti.getnum()temp=i;run=;if(run=)cout删除中.endl;cout删除后数据为:endl姓名 性别 学号 班级 联络电话endl;fstream fs;fs.open(c:item.txt,ios:out);for(int x=0;xn;
21、x+)if(ber=tx.getnum()for(j=0;jn;j+)if(j=x)continue;elsefstj;couttj;nu=n-1;fs.close();if(temp=-1000)coutendlendl学号为 ber 学生不存在!endl;getchar();return nu;void main()student sM;int length;for(;)system(cls);switch(menu()case 0:exit(0);break;case 1:length=enter(s);break;case 5:sort(s,length);break;case 8:change(s,length);break;case 7:length=del(s,length);break;case 2:search_num(s,length);break;case 3:search_name(s,length);break;case 4:search_ban(s,length);break;case 6:count(s,length);break;cout按回车返回主菜单.endl;getchar();return;