收藏 分销(赏)

C学生信息标准管理系统实验报告示例.doc

上传人:快乐****生活 文档编号:2827614 上传时间:2024-06-06 格式:DOC 页数:30 大小:327.04KB 下载积分:12 金币
下载 相关 举报
C学生信息标准管理系统实验报告示例.doc_第1页
第1页 / 共30页
C学生信息标准管理系统实验报告示例.doc_第2页
第2页 / 共30页


点击查看更多>>
资源描述
课程设计汇报 课程设计题目: 学生信息管理系统 学生姓名: 张鹏 专 业: 软件工程(嵌入式) 班 级: 1621806 指导老师: 高 永 平 6 月 9 日 目录 一、需求分析: 2 二、总体设计: 2 三、具体设计。 3 四、测试结果。 12 五、软件操作使用说明书。 17 六、总结。 17 七、代码: 17 一、需求分析: 依据对学生信息管理需要,建立一个“学生信息管理系统”,以方便对学生信息数据录入、修改、删除和查询功效。、 要求完: 1.有菜单界面能够对功效进行选择; 2.能录入姓名、性别、学号、班级和电话号码等学生信息并保留到文件中; 3.能依据学生学号进行排序; 4.能依据学生学号对学生信息进行修改; 5.能依据学生学号对学生信息进行删除; 6.能依据学生学号、姓名和班级等对学生信息进行查询; 7.能依据班级对学生人数进统计。 二、总体设计: 依据以上分析,本系统关键包含: 1.从键盘录入学生个人信息,并保留到文件中; 2.按学号对学生信息进行排序 3.按学号对学生信息进行修改; 4.按学号对学生信息进行删除; 5.按学号对学生信息进行查询; 6.按姓名对学生信息进行查询; 7.按班级对学生信息进行查询; 8.结束目前途序; 等8大功效,系统关键定义了1个类和16个函数以实现各个功效: (1)主函数main():调用录入、查找、修改、排序、统计、删除等函数对学生组员信息进行处理。 (2)定义类class student:用于定义组员结构体数组。 (3)类中结构函数student():对类中各项私有组员进行传值。 (4)类中输入运算符重载函数operator >>():方便对类对象输入。 (5)类中输出运算符重载函数operator <<():方便对类对象输出。 (6)获取函数getnum():方便在类外对类中私有组员num数据进行调用。 (7)获取函数getname():方便在类外对类中私有组员name数据进行调用。 (8)获取函数getban():方便在类外对类中私有组员ban数据进行调用。 (9)录入函数 enter():从键盘输入学生个人信息,并保留到文件中。 (10)查找函数 search_num():按学号查找学生个人信息。 (11)查找函数 search_name():按姓名查找学生个人信息。 (12)查找函数 search_ban():按班级查找学生个人信息。 (13)修改函数 changr():按学号修改学生个人信息,保留文件中。 (14)删除函数 del():按学号删除学生个人信息,保留到文件中。 (15)排序函数sort():按学号对学生个人信息进行排序。 (16)统计函数count():按班级对学生人数进行统计。 程序功效结构图图1所表示: 学生信息管理系统 键 盘 输 入 保 存 数 据 学 号 排 序 信 息 修 改 信 息 删 除 学 号 查 询 班 级 查 询 人 数 统 计 姓 名 查 询 图1程序功效结构图图 三、具体设计。 本系统有一个主函数,8个功效模块,每个功效模块函数全部是由主函数调用,分别说明以下: (1)主函数main(): 调用录入、查找、修改、排序、统计、删除等函数对学生组员信息进行处理。 主函数步骤图图2所表示: 开 始 输出菜单 输入操作选择c c=0 c=8 c=7 c=6 c=5 c=3 c=2 c=1 退 出 系统 保留数据 输入数据 学号排序 信息修改 信息删除 学号查询 姓名查询 统计人数 班级查询 c=4 继续操作否 Y N 结束 图2主函数步骤图 (2)键盘输入函数步骤图: 从键盘输入学生个人信息,并保留到文件中。 步骤图图3所表示: 开 始 输入学生个人信息 是否继续 结束 输入学生人数 保留数据到文件中 Y N 图3键盘输入函数步骤图 (3)排序函数步骤图: 按学号对学生个人信息进行排序。 步骤图图4所表示: 开 始 是否继续 结束 按学号进行学排序 输出排序完成后信息 N Y 图4排序函数步骤图 (4)信息修改函数步骤图: 由用户输入需要修改组员学号,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。 步骤图图5所表示: 开 始 输出不存在组员信息信息 打开文件 输入组员学号 查询到否 输出查到组员信息信息 输入修改组员信息信息 关闭文件 结束 图5信息修改函数步骤图 (5)信息删除函数步骤图: 由用户输入需要删除组员学号,在现有学生信息中查询是否有此学生信息存在,查到删除该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。 步骤图图6所表示: 开 始 打开文件 查询到否 关闭文件 结束 Y 删除此学生信息 N 输入不存在信息 读入学生信息 输入删除学号 图6信息删除函数步骤图 (6)学号查询函数步骤图: 由用户输入需要查询组员学号,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“学号为XX学生不存在!”信息。 步骤图图7所表示: 开 始 打开文件 输出不存在学生信息 结束 关闭文件 查询到否 输入学生学号 N 输出查到学生信息信息 Y 图7学号查询函数步骤图 (7)姓名查询函数步骤图: 由用户输入需要查询组员姓名,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“姓名为XX学生不存在!”信息。 步骤图图8所表示: 开 始 打开文件 输出不存在学生信息 结束 关闭文件 查询到否 输入学生姓名 N 输出查到学生信息信息 Y 图8姓名查询函数步骤图 (8)班级查询函数步骤图: 由用户输入需要查询组员班级,在现有学生信息中查询是否有此学生信息存在,查到输出该学生全部信息,没查到则输出“班级为XX学生不存在!”信息。 步骤图图9所表示: 开 始 打开文件 输出不存在该班级学生 结束 关闭文件 查询到否 输入学生班级 N 输出查到学生信息信息 Y 图9班级查询函数步骤图 (9)按班级统计函数步骤图: 由用户输入需要查询组员班级,在现有学生信息中查询是否有此学生信息存在,查到即对该班级人数进行统计,没查到则输出“班级为XX学生不存在!”信息。 步骤图图10所表示: 开 始 打开文件 输出不存在该班级学生 结束 关闭文件 查询到否 输入学生班级 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++有了更深入认识和了解,学好它重在实践,要经过不停上机操作不停进行操作和试运行才能愈加好地掌握它,经过这次实践,我发觉了自己很多不足:我对多种循环了解深度还不够,对字符组员调用还不是很熟练,对指针了解还是不透彻,和对处理问题想法不够全方面。这些不足,在这次实践中全部有所提升,而且对这些不足我全部会在后续学习中努力补足。 七、代码: #include<iostream> #include<fstream> #include<cstring> #define M 5000 using namespace std; class student { public: student(){} student(char na[10],char se[10],int n,int b,char t[12]):num(n),ban(b) { strcpy(sex,se); strcpy(name,na); strcpy(tel,t); } friend istream & operator >>(istream & is,student & s) { is>>s.name>>s.sex>>s.num>>s.ban>>s.tel; return is; } friend ostream & operator <<(ostream & os,student & s) { os<<s.name<<" "<<s.sex<<" "<<s.num<<" "<<s.ban<<" "<<s.tel<<endl; return os; } int getnum() { return num; } int getban() { return ban; } char *getsex() { char *s=new char[strlen(sex)]; s=sex; return s; } char *getname() { char *p=new char[strlen(name)]; p=name; return p; } char *gettel() { char *t=new char[strlen(tel)]; t=tel; return t; } private: char name[10]; char sex[10]; int num,ban; char tel[12]; }; int menu() { char s[80]; int c; cout<<"************************** 主 菜 单 ***************************"<<endl<<endl; cout<<" | 0.退出目前途序 | \n"<<endl; cout<<" | 1.输入学生信息 | \n"<<endl; cout<<" | 2.依据学号查询 | \n"<<endl; cout<<" | 3.依据姓名查询 | \n"<<endl; cout<<" | 4.依据班级查询 | \n"<<endl; cout<<" | 5.依据学号排序 | \n"<<endl; cout<<" | 6.按班级计人数 | \n"<<endl; cout<<" | 7.依据学号删除 | \n"<<endl; cout<<" | 8.依据学号修改 | \n"<<endl; cout<<"-----------------------------------------------------------------------------"<<endl; cout<<" 输入您菜单选项编号(0-8):"<<endl; cout<<" Designed by Peng"<<endl; for(;;) { gets(s); c=atoi(s); if(c>8) cout<<"输入错误,请重新输入!:"; else break; } return c; } int enter(student t[]) { int i,n; system("cls"); cout<<" 请输入学生信息条数"<<endl; cin>>n; cout<<" 请输入学生信息\n"<<endl; cout<<"姓名 性别 学号 班级 联络电话"<<endl; fstream fs; fs.open("c:\\item.txt",ios::out); for(i=0;i<n;i++) { cin>>t[i]; fs<<t[i]; } fs.close(); getchar(); return n; } void search_num(student t[],int n) { int i,nu,temp=-1000; system("cls"); cout<<"请输入查找学生学号:"<<endl; cin>>nu; for(i=0;i<n;i++) { if(nu==t[i].getnum()) { cout<<"该学生信息为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; cout<<t[i]; temp=i; } } if(temp==-1000) cout<<endl<<endl<<"学号为 "<<nu<<" 学生不存在!"<<endl; getchar(); } void search_ban(student t[],int n) { int i,ba,temp=-1000; system("cls"); cout<<"请输入查找学生班级号:"<<endl; cin>>ba; cout<<"该学生信息为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; for(i=0;i<n;i++) { if(ba==t[i].getban()) cout<<t[i]; temp=i; } if(temp==-1000) cout<<endl<<endl<<"班级为 "<<ba<<" 学生不存在!"<<endl; getchar(); } void search_name(student t[],int n) { int i,temp=-1000; char na[20]; system("cls"); cout<<"请输入查找学生姓名:"<<endl; cin>>na; for(i=0;i<n;i++) { if(strcmp(na,t[i].getname())==0) { cout<<"该学生信息为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; cout<<t[i]; temp=i;} } if(temp==-1000) cout<<endl<<endl<<"姓名为 "<<na<<" 学生不存在!"<<endl; getchar(); } void sort(student t[],int n) { student p;int s; system("cls"); cout<<"请选择升序或降序(1或2):"<<endl; cin>>s; if(s==1) {cout<<"按学号排序(升序)完成以下:"<<endl; for(int i=0;i<n-1;i++) {for(int j=0;j<n-1-i;j++) { if(t[j].getnum()>t[j+1].getnum()) { p=t[j]; t[j]=t[j+1]; t[j+1]=p; } } } cout<<"姓名 性别 学号 班级 联络电话"<<endl; for(int a=0;a<n;a++) { cout<<t[a]; } } if(s==2) {cout<<"按学号排序(降序)完成以下:"<<endl; for(int i=0;i<n-1;i++) {for(int j=0;j<n-1-i;j++) { if(t[j].getnum()<t[j+1].getnum()) { p=t[j]; t[j]=t[j+1]; t[j+1]=p; } } } cout<<"姓名 性别 学号 班级 联络电话"<<endl; for(int a=0;a<n;a++) { cout<<t[a]; } } getchar(); } void count(student t[],int n) { int i,c,temp=-1000; system("cls"); fstream fs; fs.open("c:\\item.txt",ios::in); cout<<"请输入想统计人数班级:"<<endl; cin>>c; int s=0; for(i=0;i<n;i++) { fs>>t[i]; if(c==t[i].getban()) { s++; temp=i; } } cout<<"该班级人数为:"<<s<<endl; fs.close(); if(temp==-1000) cout<<endl<<endl<<"班级为 "<<c<<" 学生不存在!"<<endl; getchar(); } void change(student t[],int n) { int id,i,temp=-1000,run=0; system("cls"); cout<<"请输入要修改学生学号:"<<endl; cin>>id; fstream fs; fs.open("c:\\item.txt",ios::in|ios::out); for(i=0;i<n;i++) { if(id==t[i].getnum()) { cout<<"修改前该学生信息为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; cout<<t[i]; temp=i; run=;} } fs.close(); if(run==) {fs.open("c:\\item.txt",ios::in|ios::out); cout<<"请输入你修改该学生信息为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; cin>>t[i]; fs<<t[i]; fs.close(); cout<<"修改成功!"<<endl;} if(temp==-1000) cout<<endl<<endl<<"姓名为 "<<id<<" 学生不存在!"<<endl; getchar(); } int del(student t[],int n) { int ber,temp=-1000,run=0; int i,j,nu; system("cls"); cout<<"请输入要删除学生学号:"<<endl; cin>>ber; for(i=0;i<n;i++) { if(ber==t[i].getnum()) { temp=i; run=; } } if(run==) { cout<<"删除中........"<<endl; cout<<"删除后数据为:"<<endl<<"姓名 性别 学号 班级 联络电话"<<endl; } fstream fs; fs.open("c:\\item.txt",ios::out); for(int x=0;x<n;x++) { if(ber==t[x].getnum()) { for(j=0;j<n;j++) { if(j==x) continue; else fs<<t[j]; cout<<t[j]; } } } nu=n-1; fs.close(); if(temp==-1000) cout<<endl<<endl<<"学号为 "<<ber<<" 学生不存在!"<<endl; getchar(); return nu; } void main() { student s[M]; 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; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服