




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<stdio.h> #include<stdlib.h> #include<string.h>定义学生结构体struct Studentint dorNo; / 宿舍号char stuName20; 学生姓专业资料int stuNo;学生学号char stuSex10;/性别char dept20;系别char major20;专业int tel; / 电话 *stu;/函数指针void(*p)(struct Student *,int);/录入学生信息void insert(struct Student *,int);/按学号查找void
2、noSeek(struct Student *,int);函数功能:打印信息void output(struct Student *,int);/*函数功能:将数据写入文件*/ void write(struct Student*,int);/函数功能:读取文件数据*/ void read(struct Student*,int);按宿舍查找void dSeek(struct Student *,int);按姓名查找void naSeek(struct Student *,int);按系别查找void deSeek(struct Student *,int);删除学生信息void del(st
3、ruct Student *,int);/修改学生信息void modify(struct Student *,int);增加学生信息void add(struct Student *,int);/全局变量来记录存储学生的人数int num=0;主函数int main()char ch10;printf ("t欢迎进入宿舍管理系统n");printf ("请输入你想存储的学生人数:");scanf(H%d",&num); system(nclsu);/申请动态存储空间stu=(struct Student *)malloc(sizeof
4、(struct Student)*num);while(1)systemCls");printf (An");printf(H t欢迎进入宿舍管理系统nn);printf(nt*nn);printf(nt1 .录入学生信息”printf(nt2 ,按学号查询nM);printf(nt3.按宿舍号查询”);printf (”t4 ,按姓名查询nn);printf(Mt5,按系别或专业查询”);printf(nt6.添加信息nn);printf (”t7.修改信息n);printf(”t8,保存信息 nn);printf("printf("printf(&q
5、uot;t9 .读取信息”t10.删除信息nn);tO,退出系统nn);专业资料printf("t*n“);printf(n printf(n t请选择你想实现的功能 scanf("%sH,&ch);用函数指针指向各函数if(strcmp(ch,'1',)=0)p=insert;(*p)(stu,num);)else if (strcmp(ch,n2")=0)p=noSeek; (*p)(stu,num);)else if(strcmp(ch,3,)=0) p=dSeek;(*p)(stu,num);)else if(strcmp(ch,n
6、4n)=0)p=naSeek;(*p)(stu,num);)else if(strcmp(ch/'5n)=0)p=deSeek;(*p)(stu,num);)else if(strcmp(ch,"6")=0)(p=add;(*p)(stu,num);)else if(strcmp(ch/7H)=0)(p=modify;专业资料(*p)(stu,num);else if(strcmp(ch,M8H)=0)p=write;(*p)(stu,num);)else if(strcmp(ch,n9H)=0)p=read;(*p)(stu,num);)else if(strcm
7、p(ch,10")=0)p=del;(*p)(stu,num);)else if(strcmp(ch,nO,')=O)exit(O);/ write(stu,num);/read(stu,num);return 0;输入学生相关信息void insert(struct Student *stu,int num)int i=0;char ch;system(Hclsn);doif(i<num)(printf("输入第d个学生的宿舍号:i+1);scanf(1,%dn,&stui.dorNo);printf(nn 姓名:");scanf(&quo
8、t;%sH,&stui.stuName);printf(”n 学号:”);专业资料scanf("%dn,&stui.stuNo);printf("n 性别scanf("%s'&stui.stuSex);printf(Hn 系别scanf("%s'&stui.dept);printf(Hn 专业scant (n%sn5 &stui .major);printf(Hn 电话scanf(H%dH,&stui.tel);i+;else(printf(”nt人数已满无法继续输入”);printf(An
9、是退出该功能输入?(Y/N):");ch=getchar();ch=getchar();while(ch!=y&&ch !='¥*);write(stu,num);system, cis");/按学号查找void noSeek(struct Student *stu,int num)int i;int m;char ch;char a;system(nclsH);printf(Hn确认您已录入学生信息?vy/n>:");a=getchar();a=getchar();if(a!=,nf&&a!=lNl)pri
10、ntf(“n请输入你想要查找的学生学号:”);scanf(H%dH,&m);for(i=0;i<num;i+)if(m=stui.stuNo)printf(Hn宿舍号:%dn姓名:sn学号:%dn性别:%sn系别:%sn专业:%sn电话号码:%dnn,stui.dorNo,stui.stuNameJstui.stuNo,stui.stuSex,stui.dept,s tui.major,stui.tel);)elseprintf("nt没有你要查找的学生信息)n");printf(”n请按任意键返回 ”);getchar();getchar();)按宿舍查找v
11、oid dSeek(struct Student* stujnt num )int i;int dor;char ch,a;system("clsH);printf(Hn确认您已录入学生信息?vy/n>:“);a=getchar();a=getchar();if(a!=h&&a!=N)printf("n请输入你想要查找的学生宿舍号:");scanf(n%dn,&clor);for(i=0;i<num;i+)(if(dor=stui.dorNo)printf(Hn宿舍号:%dn姓名:%sn学号:%dn性别:%sn系别:%sn专业:
12、%sn电话号码:%dn,stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex,stui.dept,s tui.major,stui.tel);) ) elseprintf(n t没找到你要的学生信息。nnn);)printf(An请按任意键返回”);getchar();getchar();)按姓名查询void naSeek(struct Student *stu,int num)(int i;char name20;char ch,a;system(”cls");printf(Hn确认您已录入学生信息?vy/n>:");专业资料
13、a=getchar();a=getchar();if(a!='n,&&a!=,N,)printf("n请输入你想要查找的学生姓名:");scanf("s”,name);for(i=0;i<num;i+)if(strcmp(name,stui.stuName)=O)专业资料printf(Hn宿舍号:%dn姓名:sn学号:dn性别:%sn系别:%sn专业:%sn电话号码:%dnn,stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex3stui.dept,s tui.major,stui.tel);)
14、 ) ) else (printf(n n nt没找到你要的学生信息。nnH);printf(”n请按任意键返回 ”);getchar();getchar();)按系别或专业查询void deSeek(struct Student *stu,int num)int i;)char de20;char ch,a;system("clsH);printf(Hn确认您已录入学生信息?vy/n>:");a=getchar();a=getchar();if(a!='n,&&a!=,N,) printf(nnt请输入你想要查找的系别或专业:");
15、scanf(”%s”,de);for(i=0;i<num;i+) (if(strcmp(de,stui.dept)=O)print/n宿舍号:%dn姓名:sn学号:dn性别:%sn系 别:%sn专业:%sn电话号码:%dnn,stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex3stui.dept,s tui.major,stui.tel);elseprints nnt没找到你要的学生信息nH);printf(nn请按任意键返回”);getchar();getchar();/*函数功能:将数据写入文件7void write(struct Stude
16、nt *stu,int num)int i;/控制循环FILE *fp ;定义文件指针if(stunum-1 .stuNo!=0)if(fp = fopen(HE:student.txr,nwtn) = NULL) / 如果文件没有打 开,提示错 误并退出(printf(”nt文件没有打开!程序结束! ”);getchar(); /等待用户观察exit(O);结束整个程序)else (for(i=0; i<num; i+)将数据依次写入文件(fprintf(fp,nn 宿舍号:%dn 姓名:sn 学号:%dn 性别:%sn 系别:%sn专业:%sn电话号码:%dnM,stui.dorNo
17、,stui.stuName,stui.stuNo,stui.stuSex,stui.dept,s tui.major,stui.tel);getchar();printf(”nt已将学生信息保存在了 D盘根目录下的studenttxt 文件中。nn);专业资料elseprintf(nnt没有学生信息。 )getchar(););fclose(fp);)/*函数功能:读取文件数据/void read(struct Student *stu,int num)int i;FILE *fp ;if(stunum-1 .stuNo!=0) (if(fp = fopen(,'E:student.t
18、xtn,HrtH) (printf("数据读取失败!n“);exit(O);=NULL) elsefor(i=0; i<num; i+)从文件中读出数据fscanf(fpjn 宿舍号:%dn 姓名:%sn 学号:%dn 性别:%sn 系别:%sn专业:%sn电话号码 : %dnn,&stui.dorNo5&stui.stuName,&stui.stuNo,&stui.stuSex,&stu i.dept,& stui.major,&stui.tel);printf(nn宿舍号:%dn姓名:sn学号:%dn性别:%sn系别:
19、%sn专业:%sn电话号码:%dnn,stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex,stui.dept,stui.major,stui.tel);) ) else (printf("nt没有学生信息。”);)getchar();getchar();fclose(fp);/修改信息void modify(struct Student *stu,int num)(int m;int i;char ch;system("clsn);printf("请输入你想修改学生的学号:");scanf("%dn,&
20、amp;m);for(i=0;i<num;i+)if(m=stui.stuNo)(printf(”n 宿舍号:dn 姓名:%sn 学号:%dn 性别:sn 别:%sn专业:%sn电话码:%dnn,stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex,stui.dept,stui.major,stui.tel);printf(nn您确认修改该学生信息吗?<y/n>:»);ch=getchar();ch=getchar();if(ch!='N'&&ch!='n')printf(”n
21、输入该学生的宿舍号:"); scanf(-d”,&st皿dorNo);printf(Hn 姓名scanf("%sM,&stui.stuName); printf(nn 学号scanf(n%dn,&stui.stuNo);printf("n 性别scanf("%sn,&stui.stuSex);printf(nn 系别scanf(n%sH,&stui.dept);printf(nn 专业scanf("%s",&stui.major);printf(nn 电话scanf("%dM,
22、&stui.tel); write(stu,num);system("clsn);printfC* nt修改成功! ! ! nn“);output(stu,num);else (printf("nt 无法修改信息! ! ! nH);/break; )else(continue;)printf(An请按任意键返回 ”);getchar();getchar();删除相关学生信息void del(struct Student *stu,int num) (int no;int i;char ch;intj;专业资料print/n请输入您想删除的学生学号:“);scanf(
23、"d”,&no);for(i=0;i<num;i+)if(no=stui.stuNo)(print/n 宿舍号:%dn 姓名:%sn 学号:%dn 性别:%sn 别:%sn 专业:%sn电话码:%dn'stui.dorNo,stui.stuName,stui.stuNo,stui.stuSex,stui.deptJstui.major,stui.tel);printf(An您确认删除该学生信息? <y/n>:");ch=getchar();ch=getchar();if(ch!=n'&&ch!='N,) /实
24、现删除学生信息 (for(j=i;j<=num-1 ;j+) (stu+j)=*(stu+j+1);num-;printf(”nt已成功删除该学生信息! ! n");write(stu,num);output(stu,num);else(printf(nn t 无法删除! ! n");else(continue;)printf(nn请按任意键返回 ”);getchar();getchar();添加学生信息void add(struct Student *stu,int num)(int no;int i;printf("n t请输入你想添加的学生人数:scanf("d”,&no););if(stunum-1.stuNo)!=0)(stu=(struct Student *)realloc(stu,num+no);for(i=num;i<num+no;i+)(*(stu+num+no)=*(stu+num);printf(”n输入第d个学生的宿舍号scanf("cT,&stui.dorNo);printf("n 姓名:");:"j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论