#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<windows.h>#include<conio.h>struct information{char name[100]; //姓名char tel[100]; //电话char homenum[100]; //宿舍号char num[100]; //学号char classnum[100]; //班级struct information *next;}student;struct information *head,*p,*pr;void tianjia(); //添加新学生int chaxun(); //查询学生void shanchu(); //删除学生struct 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");printf("\t| 1.添加新学生 2.查询学生信息 |\n\n");printf("\t| 3.删除学生信息 4.修改学生信息 |\n\n");printf("\t| 5.显示所有学生信息 6.查询空余床位 |\n\n");printf("\t| 7.退出 |\n\n");printf("\t|注:本系统文件保存在C:\学生管理系统\学生信息.txt |\n");printf("\t-----------------------------------------------------\n");printf("\t 请按1-7进行选择\n\n");printf("请输入数值,按回车键结束:");scanf("%d",&m);while(m<1||m>7){printf("输入错误!!!请重新键入:");scanf("%d",&m);}switch(m)//选择语句知识点{case 1:tianjia();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;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(fp,"%3s",(*pr).homenum);printf(" 学号(11位):");scanf("%s",&(*pr).num); //学号fprintf(fp,"%11s",(*pr).num);printf(" 班级(4位班级序号):");scanf("%s",&(*pr).classnum); //班级fprintf(fp,"%4s\n",(*pr).classnum);(*pr).next=NULL;fclose(fp);printf("按任意键返回主菜单");getch();;}void sushehao() //按宿舍号查询{system("cls");head=read(head);int i,a=0;FILE *fp;char home[10];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("%s\n",(*pr).name);printf("电话");printf("%s\n",(*pr).tel);printf("宿舍号");printf("%s\n",(*pr).homenum);printf("学号");printf("%s\n",(*pr).num);printf("班级");printf("%s\n",(*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();}else{fclose(fp);printf("按任意键返回查询菜单\n");getch();}}void xuehao() //按学号查询{system("cls");head=read(head);int i,a=0;FILE *fp;char numa[20];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);while(pr!=NULL){if(strcmp(numa,(*pr).num)==0){printf("姓名");printf("%s\n",(*pr).name);printf("电话");printf("%s\n",(*pr).tel);printf("宿舍号");printf("%s\n",(*pr).homenum);printf("学号");printf("%s\n",(*pr).num);printf("班级");printf("%s\n",(*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();}else{fclose(fp);printf("按任意键返回查询菜单\n");getch();}}void xingming() //按姓名查询{system("cls");head=read(head);int i,a=0;FILE *fp;char numa[20];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);while(pr!=NULL){if(strcmp(numa,(*pr).name)==0){printf("姓名");printf("%s\n",(*pr).name);printf("电话");printf("%s\n",(*pr).tel);printf("宿舍号");printf("%s\n",(*pr).homenum);printf("学号");printf("%s\n",(*pr).num);printf("班级");printf("%s\n",(*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();}else{fclose(fp);printf("按任意键返回查询菜单\n");getch();}}void banji() //按班级查询{system("cls");head=read(head);int i,a=0;FILE *fp;char numa[20];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);while(pr!=NULL){if(strcmp(numa,(*pr).classnum)==0){printf("姓名:");printf("%s\n",(*pr).name);printf("电话:");printf("%s\n",(*pr).tel);printf("宿舍号:");printf("%s\n",(*pr).homenum);printf("学号:");printf("%s\n",(*pr).num);printf("班级:");printf("%s\n",(*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();}else{fclose(fp);printf("按任意键返回查询菜单\n");getch();}}void kongyu() //显示空余床位数{system("cls");head=read(head);FILE *fp;char numa[20];int i=0,y,x,z,q;if((fp=fopen("学生信息.txt","r"))==NULL){printf("无法打开文件\n");exit(1);}printf("\t 查询剩余空余床位\n");printf("\t============================\n");printf("注:以每宿舍六人为基准,本宿舍共120个宿舍,每层20个,按(楼层数+宿舍编号)标号\n\n");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%11s%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 name[10];FILE *fp;//p=(information *)malloc(sizeof(information));if((fp=fopen("学生信息.txt","r"))==NULL){printf("无法打开该文件\n");exit(1);}printf("\t 删除学生信息\n");printf("\t…………………………………………\n\n");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&&(*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("%s\n",(*p).name);printf("电话");printf("%s\n",(*p).tel);printf("宿舍号");printf("%s\n",(*p).homenum);printf("学号");printf("%s\n",(*p).num);printf("班级");printf("%s\n",(*p).classnum);if(strcmp(name,(*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%4s\n",(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);p=(*p).next;}fprintf(fp,"%4s%11s%3s%11s%4s\n",(*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 numa[20];printf("\t 修改学生信息\n");printf("\t…………………………………………\n\n");printf("请输入要修改的学生姓名:");if((fp=fopen("学生信息.txt","r"))==NULL){printf("无法打开该文件\n");exit(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("%s\n",(*pr).name);printf("电话");printf("%s\n",(*pr).tel);printf("宿舍号");printf("%s\n",(*pr).homenum);printf("学号");printf("%s\n",(*pr).num);printf("班级");printf("%s\n",(*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); //姓名fprintf(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); //班级fprintf(fp,"%4s\n",(*pr).classnum);p=pr;p=head;while((*p).next!=NULL){fprintf(fp,"%4s%11s%3s%11s%4s\n",(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);p=(*p).next;}fprintf(fp,"%4s%11s%3s%11s%4s\n",(*p).name,(*p).tel,(*p).homenum,(*p).num,(*p).classnum);fclose(fp);printf("按任意键返回主菜单");getch();;}void suoyou() //显示所有学生信息{system("cls");head=read(head);FILE *fp;if((fp=fopen("学生信息.txt","r"))==NULL){printf("无法打开该文件\n");printf("按任意键返回主菜单");getch();}printf("\t 所有学生信息\n");。