软件实习-学生管理系统
2014-06-29 21:00
267 查看
/*10.学生信息管理 [问题描述] 编写一个程序实现学生基本信息的管理功能。 [基本要求] (1)每个学生的基本信息包括:学号,姓名,性别,出生日期,所属学院,专业,年级等,其中学号不允许重复。。 (2)采用交互工作方式,输入N个学生的基本信息,N的值大于10。 (3)建立数据文件,存入所输入的N个学生的信息,数据文件按关键字(学号)进行排序,排序方法可以自己选择。 (4)可以对学生的基本信息进行更新操作(添加、删除),更新之后的数据文件保持原有的有序性。 (5)查询操作: (用二分查找实现以下操作) A.按姓名查询 B.按学号查询 C.提供模糊查找的功能,如输入“刘”,可以查找到所有姓“刘”的学生的基本信息。 */ #include<iostream> #define N 100 using namespace std; class sim { public: void init(sim s[],int n); void show(sim s[],int n); void insert(sim s[],int n,int n1); void del(sim s[],int n,int n2); void find1(sim s[],int n,char f[]); void find2(sim s[],int n,char f[]); void find3(sim s[],int n,char c[]); char sname[20];//sname 本来应该代表sn(student number) ,但是我马虎写成了 sname,所以..... char name[20]; char sex[4]; char bd[20];//birthday char c[20];//college char m[20];//major char g[20];//grade }; void sim::init(sim s[],int n)//initialization. { for(int i=0;i<n;i++) { cout<<"请输入学号"<<endl; cin>>s[i].sname; cout<<"请输入姓名"<<endl; cin>>s[i].name; cout<<"请输入性别"<<endl; cin>>s[i].sex; cout<<"请输入出生日期"<<endl; cin>>s[i].bd; cout<<"请输入所属学院"<<endl; cin>>s[i].c; cout<<"请输入所属专业"<<endl; cin>>s[i].m; cout<<"请输入年级"<<endl; cin>>s[i].g; } } void sim::show(sim s[],int n)//输出已输入的数据 { int j=0; for(int i=0;i<n;i++) { cout<<endl; cout<<"学号: "<<s[i].sname<<endl; cout<<"姓名: "<<s[i].name<<endl; cout<<"性别(1 for male, 0 for female): "<<s[i].sex<<endl; cout<<"出生日期: "<<s[i].bd<<endl; cout<<"所属学院: "<<s[i].c<<endl; cout<<"专业: "<<s[i].m<<endl; cout<<"年级: "<<s[i].g<<endl; cout<<endl; j=1; } if(j==0) { cout<<endl; cout<<"无学生信息!"<<endl; cout<<endl; } cout<<"学生总数:"<<n<<endl; } void sim::insert(sim s[],int n,int n1)//插入学生信息 { // 0 1 2 0 1 2 3 for(int i=n-2;i>=n1-1;i--)//ex: 有3个学生信息:a,b,c要将d学生的信息插入到1号位置,则为a d b c .(用户输入的1代表0,2代表1,即用户输入i,这里对应的下标应为i-1) { strcpy(s[i+1].sname,s[i].sname); strcpy(s[i+1].name,s[i].name); strcpy(s[i+1].sex,s[i].sex); strcpy(s[i+1].bd,s[i].bd); strcpy(s[i+1].c,s[i].c); strcpy(s[i+1].m,s[i].m); strcpy(s[i+1].g,s[i].g); } i+=1;//总长+1 cout<<"请输入学号"<<endl; cin>>s[i].sname; cout<<"请输入姓名"<<endl; cin>>s[i].name; cout<<"请输入性别"<<endl; cin>>s[i].sex; cout<<"请输入出生日期"<<endl; cin>>s[i].bd; cout<<"请输入所属学院"<<endl; cin>>s[i].c; cout<<"请输入所属专业"<<endl; cin>>s[i].m; cout<<"请输入年级"<<endl; cin>>s[i].g; } void sim::del(sim s[],int n,int n2) { for(int i=n2-1;i<n;i++){ { strcpy(s[i].sname,s[i+1].sname); strcpy(s[i].name,s[i+1].name); strcpy(s[i].sex,s[i+1].sex); strcpy(s[i].bd,s[i+1].bd); strcpy(s[i].c,s[i+1].c); strcpy(s[i].m,s[i+1].m); strcpy(s[i].g,s[i+1].g); } } } void sim::find1(sim s[],int n,char f[])//查询方法1 { int j=0; for(int i=0;i<n;i++) { if(!strcmp(s[i].sname,f)) { cout<<"学号: "<<s[i].sname<<endl; cout<<"姓名: "<<s[i].name<<endl; cout<<"性别: "<<s[i].sex<<endl; cout<<"出生日期: "<<s[i].bd<<endl; cout<<"所属学院: "<<s[i].c<<endl; cout<<"专业: "<<s[i].m<<endl; cout<<"年级: "<<s[i].g<<endl; cout<<endl; j=1; } } if(j==0) { cout<<endl; cout<<"无该学生信息!"<<endl; cout<<endl; } } void sim::find2(sim s[],int n,char f[])//查询方法2 { int j=0; for(int i=0;i<n;i++) { if(!strcmp(s[i].name,f)) { cout<<"学号: "<<s[i].sname<<endl; cout<<"姓名: "<<s[i].name<<endl; cout<<"性别: "<<s[i].sex<<endl; cout<<"出生日期: "<<s[i].bd<<endl; cout<<"所属学院: "<<s[i].c<<endl; cout<<"专业: "<<s[i].m<<endl; cout<<"年级: "<<s[i].g<<endl; cout<<endl; j=1; } } if(j==0) { cout<<endl; cout<<"无该学生信息!"<<endl; cout<<endl; } } void sim::find3(sim s[],int n,char c[])//查询方法3 { int k=0; for(int i=0;i<n;i++) { for(int j=0;j<strlen(s[i].name);j++) { if(c[0]==s[i].name[j])//ex: 模糊查找输入了一个字:森;s[i].name="黄逸森",则会用森字分别和黄,逸,森,三个字进行比较,符合则输出 { cout<<"学号: "<<s[i].sname<<endl; cout<<"姓名: "<<s[i].name<<endl; cout<<"性别: "<<s[i].sex<<endl; cout<<"出生日期: "<<s[i].bd<<endl; cout<<"所属学院: "<<s[i].c<<endl; cout<<"专业: "<<s[i].m<<endl; cout<<"年级: "<<s[i].g<<endl; cout<<endl; k=1; } } } if(k==0) { cout<<endl; cout<<"无该学生信息!"<<endl; cout<<endl; } } void write(sim s[],int n)//将数据写入文件 { FILE *fp; fp=fopen("F:\\Students_Information.txt","w"); for(int i=0;i<n;i++) { fputs("学号: ",fp); fputs(s[i].sname,fp); fputs("\n",fp); fputs("姓名: ",fp); fputs(s[i].name,fp); fputs("\n",fp); fputs("性别: ",fp); fputs(s[i].sex,fp); fputs("\n",fp); fputs("出生日期: ",fp); fputs(s[i].bd,fp); fputs("\n",fp); fputs("所属学院: ",fp); fputs(s[i].c,fp); fputs("\n",fp); fputs("专业: ",fp); fputs(s[i].m,fp); fputs("\n",fp); fputs("年级: ",fp); fputs(s[i].g,fp); fputs("\n",fp); fputs("\n",fp); } } void maopao(sim s1[],int n) { sim s2[5]; for(int i=0;i<n-1;i++) for(int j=0;j<n-1-i;j++) { if(strcmp(s1[j].sname,s1[j+1].sname)>0) { s2[0]=s1[j]; s1[j]=s1[j+1]; s1[j+1]=s2[0]; } } } int erfen(sim s1[],char f[],int n)//二分查找 { int l=0,r=n-1,m; while(l<=r) { m=(l+r)/2; if(strcmp(f,s1[m].sname)>0) l=m+1; else if(strcmp(f,s1[m].sname)<0) r=m-1; else return m; } return -1; } void main() { sim s,s1 ; int n,m,n1,n2; cout<<"请输入你要输入的学生总数"<<endl; cin>>n; while(1) { cout<<"功能如下:"<<endl; cout<<" 1.输入学生数据(重复运行这步会把数据覆盖。)"<<endl; cout<<" 2.添加学生"<<endl; cout<<" 3.删除指定学生数据"<<endl; cout<<" 4.查询指定学生数据"<<endl; cout<<" 5.显示所有学生数据"<<endl; cout<<" 6.结束输入,并将数据写入到文件 (Path:F:\\Students_Information.txt) "<<endl; cout<<" 7.按学号进行升序排序"<<endl; cin>>m; if(m==1) { cout<<"!!!!!Attentions:学号不能重复!!!!"<<endl; s.init(s1,n); } else if(m==2) { n+=1; cout<<"插入到第几个学生?"<<endl; cin>>n1; s.insert(s1,n,n1); } else if(m==3) { cout<<"你想删除哪一个学生的信息?"<<endl; cin>>n2; s.del(s1,n,n2); n-=1; } else if(m==4) { int i,j=0; char f[30],c[1]; cout<<"查询方式:"<<endl; cout<<" 1.输入学号查找."<<endl; cout<<" 2.输入姓名查找."<<endl; cout<<" 3.模糊查找,如输入“刘”,可以查找到所有姓名中有“刘”字的学生的基本信息."<<endl; cin>>i; if(i==1) { cout<<"请输入要查询的学号"<<endl; cin>>f; /* j=erfen(s1,f,n);//若要用二分查找,则将注释去掉即可 if(j==-1) cout<<"无该学生信息!"<<endl; else { cout<<"学号: "<<s[j].sname<<endl; cout<<"姓名: "<<s[j].name<<endl; cout<<"性别: "<<s[j].sex<<endl; cout<<"出生日期: "<<s[j].bd<<endl; cout<<"所属学院: "<<s[j].c<<endl; cout<<"专业: "<<s[j].m<<endl; cout<<"年级: "<<s[j].g<<endl; cout<<endl; }*/ s.find1(s1,n,f); } else if(i==2) { cout<<"请输入要查询的姓名"<<endl; cin>>f; s.find2(s1,n,f); } else if(i==3) { cout<<"请输入要查询学生姓名中含有的一个字"<<endl; cin>>c; s.find3(s1,n,c); } } else if(m==5) { s.show(s1,n); } else if(m==6) { write(s1,n); break; } else if(m==7) { maopao(s1,n); } } }
相关文章推荐
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- 学生信息管理系统软件的修改与感想
- 临时占坑 大一实习 学生信息管理系统
- 实习的随手记录-学生,教师,校长管理系统
- 软件课设,学生信息与成绩管理系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 我要准备开始做学生学籍管理系统了!可是用什么软件好呢?
- 软件工程课设——学生信息管理系统
- 学生实习管理系统源码
- 利用python创建学生管理系统软件代码赏析
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 清华大学软件学院学生实习管理系统
- 【班级学生量化管理系统软件专业版】
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 学生信息管理系统[有软件截图]
- 开源软件 SellWin@China客户关系管理系统1.0 发布