1、#include #include #include #include #include #include struct information char name100; /姓名 char tel100; /电话 char homenum100; /宿舍号 char num100; /学号 char classnum100; /班级 struct information *next; student; struct information *head,*p,*pr;void tianjia(); /添加新学生int chaxun(); /查询学生void shanchu(); /删除学生st
2、ruct information *read(struct information *head);void xiugai(); /修改学生 void suoyou(); /显示所有学生信息void kongyu(); /显示所有宿舍号和宿舍中空余床数 void xingming(); /按姓名查找 void xuehao(); /按学号查找 void sushehao(); /按宿舍号查找 void banji(); /按班级查找 int main()while(1)system(cls);FILE *fp;int m;printf(t 学 生 宿 舍 管 理 系 统n);printf(t-n
3、);printf(t| 1.添加新学生 2.查询学生信息 |nn);printf(t| 3.删除学生信息 4.修改学生信息 |nn);printf(t| 5.显示所有学生信息 6.查询空余床位 |nn);printf(t| 7.退出 |nn);printf(t|注:本系统文献保留在C:学生管理系统学生信息.txt |n);printf(t-n);printf(t 请按1-7进行选择nn);printf(请输入数值,按回车键结束:);scanf(%d,&m);while(m7)printf(输入错误!请重新键入:);scanf(%d,&m);switch(m)/选择语句知识点 case 1:ti
4、anjia();break;case 2:chaxun();break;case 3:shanchu();break;case 4:xiugai();break;case 5:suoyou();break;case 6:kongyu(); break;case 7:printf(退出系统.);exit(0);break;void tianjia() /添加联络人system(CLS);FILE *fp;p=(information *)malloc(sizeof(information);fp=fopen(学生信息.txt,a);if(head=NULL)head=p;else pr=head
5、;while(*pr).next!=NULL)pr=(*pr).next;(*pr).next=p;pr=p;printf(t 添加新学生信息n);printf(t=n);printf(请输入学生信息:n);printf( 姓名:);scanf(%s,&(*pr).name); /姓名fprintf(fp,%4s,(*pr).name);printf( 电话(11位):);scanf(%s,&(*pr).tel); /电话fprintf(fp,%11s,(*pr).tel);printf( 宿舍号(例如:101):);scanf(%s,&(*pr).homenum); /宿舍号 fprintf
6、(fp,%3s,(*pr).homenum);printf( 学号(11位):);scanf(%s,&(*pr).num); /学号 fprintf(fp,%11s,(*pr).num);printf( 班级(4位班级序号):);scanf(%s,&(*pr).classnum); /班级 fprintf(fp,%4sn,(*pr).classnum);(*pr).next=NULL;fclose(fp);printf(按任意键返回主菜单);getch();void sushehao() /按宿舍号查询 system(cls);head=read(head);int i,a=0;FILE *f
7、p;char home10;if(fp=fopen(学生信息.txt,r)=NULL) printf(无任何学生信息!n请按任意键返回主菜单.n);getch();exit(0);printf(输入要查询学生旳宿舍号:); scanf(%s,home);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);while(pr!=NULL)if(strcmp(home,(*pr).homenum)=0)printf(姓名); printf(%sn,(*
8、pr).name); printf(电话); printf(%sn,(*pr).tel); printf(宿舍号); printf(%sn,(*pr).homenum); printf(学号); printf(%sn,(*pr).num); printf(班级); printf(%sn,(*pr).classnum); a+;pr=(*pr).next;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);if(a=0) printf(无该宿舍学生信息);printf(按
9、任意键返回查询菜单);getch();elsefclose(fp);printf(按任意键返回查询菜单n);getch();void xuehao() /按学号查询system(cls);head=read(head);int i,a=0;FILE *fp;char numa20;if(fp=fopen(学生信息.txt,r)=NULL)printf(无任何学生信息!n请按任意键返回查询菜单.n);getch();chaxun();printf(输入要查询学生旳学号:); scanf(%s,numa);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).
10、name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);while(pr!=NULL)if(strcmp(numa,(*pr).num)=0)printf(姓名); printf(%sn,(*pr).name); printf(电话); printf(%sn,(*pr).tel); printf(宿舍号); printf(%sn,(*pr).homenum); printf(学号); printf(%sn,(*pr).num); printf(班级); printf(%sn,(*pr).classnum); a+;pr=(*pr).next
11、;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);if(a=0) printf(无该学生信息);printf(按任意键返回查询菜单);getch();elsefclose(fp);printf(按任意键返回查询菜单n);getch();void xingming() /按姓名查询system(cls);head=read(head);int i,a=0;FILE *fp;char numa20;if(fp=fopen(学生信息.txt,r)=NULL)printf(
12、无任何学生信息!n请按任意键返回查询菜单.n);getch();chaxun();printf(输入要查询学生旳姓名:); scanf(%s,numa);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);while(pr!=NULL)if(strcmp(numa,(*pr).name)=0)printf(姓名); printf(%sn,(*pr).name); printf(电话); printf(%sn,(*pr).tel); printf(
13、宿舍号); printf(%sn,(*pr).homenum); printf(学号); printf(%sn,(*pr).num); printf(班级); printf(%sn,(*pr).classnum); a+;pr=(*pr).next;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);if(a=0) printf(无该学生信息);printf(按任意键返回查询菜单);getch();elsefclose(fp);printf(按任意键返回查询菜单n);g
14、etch();void banji() /按班级查询system(cls);head=read(head);int i,a=0;FILE *fp;char numa20;if(fp=fopen(学生信息.txt,r)=NULL)printf(无任何学生信息!n请按任意键返回查询菜单.n);getch();chaxun();printf(输入要查询学生旳班级:); scanf(%s,numa);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);w
15、hile(pr!=NULL)if(strcmp(numa,(*pr).classnum)=0)printf(姓名:); printf(%sn,(*pr).name); printf(电话:); printf(%sn,(*pr).tel); printf(宿舍号:); printf(%sn,(*pr).homenum); printf(学号:); printf(%sn,(*pr).num); printf(班级:); printf(%sn,(*pr).classnum); a+;pr=(*pr).next;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).
16、tel,(*pr).homenum,(*pr).num,(*pr).classnum);if(a=0) printf(无该班级学生信息);printf(按任意键返回查询菜单);getch();elsefclose(fp);printf(按任意键返回查询菜单n);getch();void kongyu() /显示空余床位数 system(cls);head=read(head);FILE *fp;char numa20;int i=0,y,x,z,q;if(fp=fopen(学生信息.txt,r)=NULL)printf(无法打开文献n);exit(1);printf(t 查询剩余空余床位n);
17、printf(t=n);printf(注:以每宿舍六人为基准,本宿舍共120个宿舍,每层20个,按(楼层数+宿舍编号)标号nn);p=head;pr=p;printf(输入要查询旳宿舍号:); scanf(%s,numa);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);while(pr!=NULL)if(strcmp(numa,(*pr).homenum)=0) i+;pr=(*pr).next;fscanf(fp,%4s%11s%3s%1
18、1s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);if(i=6) printf(该宿舍已满员);printf(按任意键返回查询菜单);getch();elseprintf(该宿舍尚有%d个空余床位n,6-i); fclose(fp);printf(按任意键返回查询菜单n);getch();void shanchu() /删除学生信息/出现错误,删除会所有删除 system(cls);head=read(head);char name10;FILE *fp;/p=(information *)malloc(siz
19、eof(information);if(fp=fopen(学生信息.txt,r)=NULL)printf(无法打开该文献n);exit(1); printf(t 删除学生信息n);printf(tnn);printf(请输入要删除旳学生姓名:);scanf(%s,name);if(head=NULL)printf(无任何学生信息n);exit(1); p=head;fscanf(fp,%4s%11s%3s%11s%4s,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);while(strcmp(name,(*p).name)!=0&
20、(*p).next!=NULL)pr=p; p=(*p).next;fscanf(fp,%4s%11s%3s%11s%4s,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);printf(姓名);printf(%sn,(*p).name);printf(电话);printf(%sn,(*p).tel);printf(宿舍号);printf(%sn,(*p).homenum);printf(学号);printf(%sn,(*p).num);printf(班级);printf(%sn,(*p).classnum);if(strcmp(n
21、ame,(*p).name)=0)if(p=head)head=(*p).next;else (*pr).next=(*p).next;free(p);printf(n已删除此学生旳信息);if(fp=fopen(学生信息.txt,w)=NULL)printf(无法打开该文献n);exit(1);p=head;while(*p).next!=NULL)fprintf(fp,%4s%11s%3s%11s%4sn,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);p=(*p).next;fprintf(fp,%4s%11s%3s%11s
22、%4sn,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);elseprintf(无该学生信息);fclose(fp);printf(按任意键返回主菜单);getch();void xiugai() /修改学生信息 system(cls);head=read(head);int i,a=0;FILE *fp;char numa20;printf(t 修改学生信息n);printf(tnn);printf(请输入要修改旳学生姓名:); if(fp=fopen(学生信息.txt,r)=NULL)printf(无法打开该文献n);exit
23、(1); scanf(%s,numa);p=head;pr=p;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);while(pr!=NULL)if(strcmp(numa,(*pr).name)=0)printf(姓名); printf(%sn,(*pr).name); printf(电话); printf(%sn,(*pr).tel); printf(宿舍号); printf(%sn,(*pr).homenum); printf(学号); printf(%sn,(
24、*pr).num); printf(班级); printf(%sn,(*pr).classnum); a+;pr=(*pr).next;fscanf(fp,%4s%11s%3s%11s%4s,(*pr).name,(*pr).tel,(*pr).homenum,(*pr).num,(*pr).classnum);pr=p;if(fp=fopen(学生信息.txt,w)=NULL)printf(无法打开该文献);exit(1);printf(请重新输入此人旳有关信息n);printf(请输入学生信息:n);printf( 姓名:);scanf(%s,&(*pr).name); /姓名fprint
25、f(fp,%4s,(*pr).name);printf( 电话(11位):);scanf(%s,&(*pr).tel); /电话fprintf(fp,%11s,(*pr).tel);printf( 宿舍号(例如:101):);scanf(%s,&(*pr).homenum); /宿舍号 fprintf(fp,%3s,(*pr).homenum);printf( 学号(11位):);scanf(%s,&(*pr).num); /学号 fprintf(fp,%11s,(*pr).num);printf( 班级(4位班级序号):);scanf(%s,&(*pr).classnum); /班级 fpr
26、intf(fp,%4sn,(*pr).classnum);p=pr;p=head;while(*p).next!=NULL)fprintf(fp,%4s%11s%3s%11s%4sn,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);p=(*p).next;fprintf(fp,%4s%11s%3s%11s%4sn,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);fclose(fp);printf(按任意键返回主菜单);getch();void suoyou() /显示
27、所有学生信息 system(cls);head=read(head);FILE *fp;if(fp=fopen(学生信息.txt,r)=NULL)printf(无法打开该文献n);printf(按任意键返回主菜单);getch();printf(t 所 有 学 生 信 息n);printf(t=nn);if(head=NULL)printf(无任何学生信息n);printf(按任意键返回主菜单);getch();main();p=head;dofscanf(fp,%4s%11s%3s%11s%4s,(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).cl
28、assnum);printf(姓名); printf(%sn,(*p).name); printf(电话); printf(%sn,(*p).tel); printf(宿舍号); printf(%sn,(*p).homenum); printf(学号); printf(%sn,(*p).num); printf(班级); printf(%snn,(*p).classnum);p=(*p).next;while(p!=NULL);fclose(fp);printf(按任意键返回主菜单);getch();int chaxun()while(1)system(CLS);int m;printf(t
29、信 息 查 询 系 统n);printf(t-n);printf(t| 1.按姓名查询 2.按宿舍号查询 |nn);printf(t| 3.按学号查询 4.按班级查询 |nn);printf(t| 5.返回主菜单 |n);printf(t-n);printf(t 按1-5进行选择nn);printf(请输入数值,按回车键结束:);scanf(%d,&m);while(m5)printf(输入错误!请重新键入:);scanf(%d,&m);switch(m)case 1:xingming();break;case 2:sushehao();break;case 3:xuehao();break;
30、case 4:banji();break;case 5:main();break;return 0;struct information *read(struct information *head)system(cls);FILE *fp;struct information *p,*pr;if(fp=fopen(学生信息.txt,r)=NULL)return head;while(!feof(fp)p=(struct information *)malloc(sizeof(struct information);if(p!=NULL)p-next=NULL;fscanf(fp,%4s%11s%3s%11s%4s,p-name,p-tel,p-homenum,p-num,p-classnum);if(head=NULL)head=p;pr=head;elsepr-next=p;p=p-next;fclose(fp);return head;