宿舍管理系统(应用C语言、数据结构与算法知识).链表。(文件自己创建,这是代码).
2021/8/6 22:06:10
本文主要是介绍宿舍管理系统(应用C语言、数据结构与算法知识).链表。(文件自己创建,这是代码).,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream> #include <windows.h> #include<stdio.h> #include<string.h> #include<stdlib.h> #define MAX 10 using namespace std; struct Stu { char seId[20]; char seName[20]; char cGender[10]; char seCollege[40]; char seMajor[40]; char seClass[40]; char seDrom[20]; }; typedef struct Student { struct Stu date; struct Student *next; } Student; struct DORM { char dorm[20]; int stuNum; }; typedef struct Dorm { struct DORM date; struct Dorm *next; Student *next1; } Dorm; struct FlOOR { char floor[20]; int DormNum; }; typedef struct Floor { struct FlOOR date; struct Floor *next; struct Dorm *next1; } Floor; struct BUILD { char build[20]; int floorNum; }; typedef struct Building { struct Floor *next1; struct BUILD date; } Building; int SentenceFull(int n);//判满 void LegalInput(char *str,int n);//数字字符串合法输入 void stringInput(char *str,int n);//合法输入 void SexSelection(char *str);//性别选择 void print_Stu(struct Stu F);//输出学生详情 void print_Dorm(Dorm *F);//输出寝室详情 void print_Floor(Floor *F);//输出楼层详情 void print_Build(Building *F);//输出宿舍楼详情 Student *Tofind_stu(Student *F,char id[]);//按学号查找学生 Dorm *Tofind_dorm(Dorm *F,char id[],int n);//按寝室号查找寝室,n>4,嵌套查学生 Floor *Tofind_floor(Floor *F,char id,int n);//按楼层号查找楼层 void Find_Stu(Student *F);//查找 并输出学生详情 void Find_Dorm(Dorm *F);//查找并输出寝室详情 void Find_Floor(Floor *F);//查找并输出楼层详情 void Sort_stu(Student *L);//按学号将学生从小到大排序 void Sort_Dorm(Dorm *L);//按寝室号将寝室从小到大排序 void Sort_Floor(Floor *L);//按楼层号将楼层从小到大排序 void StudentInformation(struct Stu *F,char dorm[]);//录入学生信息 void CreatStudent(Student **F,char dorm[],int n);//创建n个学生 void CreatDorm(Dorm **F,int n);//创建n个寝室 void CreatFloor(Floor **F,int n);//创建n层楼层 void CreatBuild(Building **F,int n);//创建n栋大楼 void modify_stu(Student *F);//修改学生信息 void DeleteStudet(Student **F,char id[]);//按学号删除学生 void Delete_Stu(Student **D);//删除学生,寝室版 int Delete_Dorm(Dorm **L,char dorm[]);//删除寝室 int Delete_Floor(Floor **L,char floor[]);//删除楼层 int DestroyDorm(Student **L);//清空寝室内所有学生,需手动改变学生数量(D->date.stunum) int DestroyFloor(Dorm **L);//清空楼层所有寝室,需手动改变寝室数量(D->date.dornNum) int DestroyBuild(Floor **L);//清空大楼 int OperationDorm(Dorm **F);//寝室操作 int OperationFloor(Floor **F);//楼层操作 int OperationBuild(Building **F);//大楼操作 int FileStore(Building *B);//从文件读取 int FileRead(Building **D);//存储链表到文件 //判断选择 int SentenceFull(int n) { int x; scanf("%d",&x); if(n+x<=MAX&&x>=0) { return x; } else { printf("输入错误,请重新输入\n"); SentenceFull(n); } } void stringInput(char *str,int n)//合法输入 { scanf("%s",str); getchar(); while(strlen(str)>n) { printf("长度超过 %d, 重新输入\n",n); scanf("%s",str); getchar(); } } void LegalInput(char *str,int n)//数字字符串合法输入 { scanf("%s",str); getchar(); int i=0; if(strlen(str)<n) { for(int i=0; i<strlen(str); i++) { if(str[i]>'9'||str[i]<'0') { printf("输入的字符非数字,请重新输入\n"); LegalInput(str,n); } } } if(strlen(str)>n) { printf("长度超过 %d, 重新输入\n",n); LegalInput(str,n); } } void SexSelection(char *str)//性别选择 { printf("男0,女1 "); int n=0; scanf("%d",&n); if(n==0) strcpy(str,"男"); if(n==1) strcpy(str,"女"); } //输出 void print_Stu(struct Stu F) { system("cls"); printf("----------------------------\n"); printf("| |\n"); printf("|学号: %s \n",F.seId); printf("|名字: %s \n",F.seName); printf("|性别: %s \n",F.cGender); printf("|寝室: %s \n",F.seDrom); printf("|学院: %s \n",F.seCollege); printf("|专业: %s \n",F.seMajor); printf("|班级: %s \n",F.seClass); printf("| |\n"); printf("----------------------------\n"); } void print_Dorm(Dorm *F) { printf(" 寝室号: %s\n",F->date.dorm); Student *p1; p1=F->next1; if(F->date.stuNum==0) printf("寝室为空\n"); while(p1!=NULL) { printf("------------------------\n"); printf("学号:%s \n",p1->date.seId); printf("名字:%s \n",p1->date.seName); printf("------------------------\n"); p1=p1->next; } } void print_Floor(Floor *F) { printf(" 楼层名:%s \n",F->date.floor); Dorm *p1; p1=F->next1; if(F->date.DormNum==0) printf("楼层为空\n"); while(p1!=NULL) { printf("---------------------------\n"); printf("寝室号:%s \n",p1->date.dorm); printf("学生数量:%d\n",p1->date.stuNum); printf("---------------------------\n"); p1=p1->next; } } void print_Build(Building *F) { printf(" 大楼: %s\n",F->date.build); Floor *p1; p1=F->next1; if(F->date.floorNum==0) printf("大楼为空\n"); while(p1!=NULL) { printf("----------------------------\n"); printf("楼层名:%s \n",p1->date.floor); printf("寝室数量:%d\n",p1->date.DormNum); printf("----------------------------\n"); p1=p1->next; } } //查找 Student *Tofind_stu(Student *F,char id[])//查学生 { Student *p1,*p2=NULL; p1=F; while(p1!=NULL) { if(strcmp(p1->date.seId,id)==0) { p2=p1; break; } if(strcmp(p1->date.seName,id)==0) { p2=p1; break; } else p1=p1->next; } if(p1==NULL) return p1; else { return p2; } } Dorm *Tofind_dorm(Dorm *F,char id[],int n) { Dorm *p1,*p2=NULL; p1=F; int flag=0; while(p1!=NULL) { if(n>4) { Tofind_stu(p1->next1,id); } if(strcmp(p1->date.dorm,id)==0) { p2=p1; break; } else p1=p1->next; } if(p1==NULL) return p1; else { return p2; } } Floor *Tofind_floor(Floor *F,char id[],int n) { Floor *p1,*p2=NULL; p1=F; int flag=0; while(p1!=NULL) { if(n>3) { Tofind_dorm(p1->next1,id,n); } if(strcmp(p1->date.floor,id)==0) { p2=p1; break; } else p1=p1->next; } if(p1==NULL) return p1; else { return p2; } } //查找加输出 void Find_Stu(Student *F) { Student *p1=NULL; char id[20]; printf("查询学生学号: "); LegalInput(id,20); p1=Tofind_stu(F,id); if(p1==NULL) { printf("该学生不存在\n"); printf("----------------------------\n\n"); } if(p1) { printf("----------------------------\n"); printf("| |\n"); print_Stu(p1->date); printf("| 修改信息 1 返回 0 |\n"); printf("| |\n"); printf("----------------------------\n\n"); int n; scanf("%d",&n); if(n==1) { modify_stu(p1); } } } void Find_Dorm(Dorm *F) { int n; Dorm *p1=NULL; char id[20]; printf("查询寝室: "); scanf("%s",id); p1=Tofind_dorm(F,id,4); if(p1==NULL) { printf("该寝室不存在\n"); printf("----------------------------\n\n"); } if(p1) { printf("----------------------------\n"); printf("| |\n"); print_Dorm(p1); printf("| 操作 1 返回 |\n"); printf("| |\n"); printf("----------------------------\n\n"); scanf("%d",&n); if(n==1) { OperationDorm(&p1); } } } void Find_Floor(Floor *F) { Floor *p1=NULL; char id[20]; printf("查询楼层: "); scanf("%s",id); p1=Tofind_floor(F,id,3); if(p1==NULL) { printf("该楼层不存在\n"); printf("----------------------------\n\n"); } if(p1) { printf("----------------------------\n"); printf("| |\n"); print_Floor(p1); printf("| 操作 1 返回 |\n"); printf("| |\n"); printf("----------------------------\n\n"); int n; scanf("%d",&n); if(n==1) { OperationFloor(&p1); } } } //排序 void Sort_stu(Student *L) { Student *p,*q; Stu temp; for (p=L; p!=NULL; p=p->next) { for(q=p->next; q!=NULL; q=q->next) { if(strcmp(p->date.seId,q->date.seId)<0) { temp=q->date; q->date=p->date; p->date=temp; } } } } void Sort_Dorm(Dorm *L) { Dorm *p,*q; Dorm temp; for (p=L; p!=NULL; p=p->next) { for(q=p->next; q!=NULL; q=q->next) { if(strcmp(p->date.dorm,q->date.dorm)<0) { temp.date=q->date; temp.next1=q->next1; q->date=p->date; q->next1=p->next1; p->date=temp.date; p->next1=temp.next1; } } } } void Sort_Floor(Floor *L) { Floor *p,*q; Floor temp; for (p=L; p!=NULL; p=p->next) { for(q=p->next; q!=NULL; q=q->next) { if(strcmp(p->date.floor,q->date.floor)<0) { temp.date=q->date; temp.next1=q->next1; q->date=p->date; q->next1=p->next1; p->date=temp.date; p->next1=temp.next1; } } } } //创建 void StudentInformation(struct Stu *F,char dorm[])//录入学生信息 { char id[20]; printf("-------------------------------------\n"); printf("学号: "); LegalInput(id,20); if(id=="000") F=NULL; else { strcpy((*F).seId,id); printf("名字: "); stringInput( (*F).seName,20); printf("性别: "); SexSelection((*F).cGender); printf("学院: "); stringInput((*F).seCollege,40); printf("专业: "); stringInput((*F).seMajor,40); printf("班级: "); stringInput( (*F).seClass,40); strcpy((*F).seDrom,dorm); printf("\n学生%s 信息录入成功\n",(*F).seName); printf("-------------------------------------\n\n"); } } void CreatStudent(Student **F,char dorm[],int n)//插入n个学生 { if(n==0) (*F)=NULL; else { for(int i=0; i<n; i++) { Student *p1=new Student; StudentInformation(&(p1->date),dorm); p1->next = NULL; if(*F) { p1->next=(*F)->next; (*F)->next=p1; } else { *F = p1; } } } } void CreatDorm(Dorm **F,int n)//创建寝室 { if(n==0) (*F)=NULL; else { for(int i=0; i<n; i++) { Dorm *p1; int num; printf("\n-------------------------------------\n"); printf("寝室号: "); char id[20]; scanf("%s",id); printf("寝室学生人数(<=10): ");//输入寝室人数 scanf("%d",&num); if(num<0) p1=NULL; else { p1=new Dorm; p1->date.stuNum=num; strcpy(p1->date.dorm,id); Student * D = NULL; CreatStudent(&D,id,num); p1->next1=D; } p1->next=NULL; if(*F) { p1->next=(*F)->next; (*F)->next=p1; } else { *F = p1; } } printf("寝室%s创建成功\n",(*F)->date.dorm); printf("-------------------------------------\n\n"); } } void CreatFloor(Floor **F,int n)//创建楼层 { if(n==0) (*F)=NULL; else { for(int i=0; i<n; i++) { Floor *p1; int num; printf("-------------------------------------\n\n"); printf("楼层名:"); char floor[20]; scanf("%s",floor); printf("楼层寝室数量:(<=10)");//输入寝室数量 scanf("%d",&num); if(num<0) p1=NULL; else { p1=new Floor; p1->date.DormNum=num; strcpy(p1->date.floor,floor); printf("请输入寝室信息\n"); Dorm * D = NULL; CreatDorm(&D,p1->date.DormNum); p1->next1=D; } p1->next=NULL; if(*F!=NULL) { p1->next=(*F)->next; (*F)->next=p1; } else { *F=p1; } } printf("楼层%s创建成功\n\n",(*F)->date.floor); printf("-------------------------------------\n\n"); } } void CreatBuild(Building **F) { Building *p1; printf(" 创建宿舍楼\n"); printf("-------------------------------------\n"); printf("宿舍楼名称: "); char build[20]; scanf("%s",&build); int num; printf("楼层数量:(<=10) "); num=SentenceFull(0); if(num<0) p1=NULL; else { p1=new Building; p1->date.floorNum=num; strcpy(p1->date.build,build); printf(" 请输入楼层信息\n"); printf("-------------------------------------\n\n"); Floor * D = NULL; CreatFloor(&D,p1->date.floorNum); p1->next1=D; } *F = p1; } //修改 void modify_stu(Student *F)//学生信息修改 { printf("_____________________________\n"); printf("|修改名字 1 "); printf("修改学号 2 \n"); printf("|修改性别 3 |"); printf("修改班级 4 \n"); printf("|修改学院 5 "); printf("修改专业 6 |\n"); printf("_____________________________\n"); printf("请输入选择:"); int n; scanf("%d",&n); if(F!=NULL) { if(n==1) { printf("输入修改后学生名字."); char name[20]; stringInput(name,20); memset(F->date.seName,'\0',20*sizeof(char)); strcpy(F->date.seName,name); } if(n==2) { printf("输入修改后学生学号 "); char ID[20]; scanf("%s",ID); memset(F->date.seId,'\0',20*sizeof(char)); strcpy(F->date.seId,ID); } if(n==3) { printf("输入学生性别"); char Gender[10]; SexSelection(Gender); memset(F->date.cGender,'\0',10*sizeof(char)); strcpy(F->date.cGender,Gender); } if(n==4) { printf("输入修改后学生所在班级"); char College[40]; stringInput( College,40); memset(F->date.seCollege,'\0',40*sizeof(char)); strcpy(F->date.seCollege,College); } if(n==5) { printf("输入修改后学生所在学院"); char Major[40]; stringInput(Major,40); memset(F->date.seMajor,'\0',40*sizeof(char)); strcpy(F->date.seMajor,Major); } if(n==6) { printf("输入修改后学生所在专业 "); char Class[40]; stringInput( Class,40); memset(F->date.seClass,'\0',40*sizeof(char)); strcpy(F->date.seClass,Class); } } } //删除 void DeleteStudet(Student **F,char id[])//删除学生 { Student *p=*F; Student *q=NULL; if(strcmp(p->date.seId,id)==0) { *F=p->next; free(p); } else { while(p!=NULL) { q=p; p=p->next; if (p == NULL)//遍历完也没找到 { printf("没有找到要删除的学生\n"); } else if(strcmp(p->date.seId,id)==0) { q->next = p->next; delete(p); break; } else { printf("没有找到要删除的学生\n"); } } } } void Delete_Stu(Student **D) { char id[20]; printf("-------------------------------------\n"); printf("请输入要删除学生的学号\n"); LegalInput(id,20); DeleteStudet(D,id); printf("学生%s已删除\n",id); printf("-------------------------------------\n\n"); } int Delete_Dorm(Dorm **L,char dorm[])//删除寝室 { Dorm *p=*L; Dorm *q=NULL; if(strcmp(p->date.dorm,dorm)==0) { *L=p->next; free(p); } else { while(p!=NULL) { q=p; p=p->next; if (p == NULL) { printf("没有找到要删除的寝室\n"); } else if(strcmp(p->date.dorm,dorm)==0) { DestroyDorm(&q->next1); q->next = p->next; delete(p); break; } else { printf("没有找到要删除的寝室\n"); } } } } int Delete_Floor(Floor **L,char floor[]) { Floor *p=*L; Floor *q=NULL; if(strcmp(p->date.floor,floor)==0) { *L=p->next; free(p); } else { while(p!=NULL) { q=p; p=p->next; if (p == NULL)//遍历完也没找到 { printf("没有找到要停用的楼层\n"); } else if(strcmp(p->date.floor,floor)==0) { DestroyFloor(&q->next1); q->next = p->next; delete(p); break; } else { printf("没有找到要停用的楼层\n"); } } } } int DestroyDorm(Student **L)//清空寝室 { Student *q; while(*L) { q=(*L)->next; free(*L); *L=q; } return 1; } int DestroyFloor(Dorm **L)//清空楼层 { Dorm *q; while(*L) { q=(*L)->next; Dorm * D =*L; DestroyDorm(&D->next1); free(*L); *L=q; } return 1; } int DestroyBuild(Floor **L)//清空大楼 { Floor *q; while(*L) { q=(*L)->next; Floor * D =*L; DestroyFloor(&D->next1); free(*L); *L=q; } return 1; } //操作 int OperationDorm(Dorm **F) { Dorm * D = NULL; D=*F; printf("------------------------------------\n"); printf("| |\n"); printf("| 寝室详情 0 清空寝室 1 |\n"); printf("| 添加学生 2 查看学生 3 |\n"); printf("| 修改学生 4 删除学生 5 |\n"); printf("| 退出 |\n"); printf("| |\n"); printf("------------------------------------\n"); int n; scanf("%d",&n); if(n==0)//寝室详情 { print_Dorm(D); OperationDorm(&D); system("cls"); } if(n==1)//清空寝室 { if(D->date.stuNum>0) { DestroyDorm(&D->next1); D->date.stuNum=0; printf("寝室已清空\n"); } else printf("寝室为空\n"); OperationDorm(&D); system("cls"); } if(n==2)//添加学生 { if( D->date.stuNum<MAX) { int x; printf("请输入添加学生数量<=%d\n",MAX-D->date.stuNum); x=SentenceFull(D->date.stuNum); CreatStudent(&D->next1,*&(D->date.dorm),x); D->date.stuNum=D->date.stuNum+x; Sort_stu(D->next1); } else printf("寝室已满"); OperationDorm(&D); system("cls"); } if(n==3)//查看学生 { if(D->date.stuNum>0) { Find_Stu(D->next1); Sort_stu(D->next1); } else printf("寝室为空\n"); OperationDorm(&D); system("cls"); } if(n==4) { if(D->date.stuNum>0) { Student *p1=NULL; char id[20]; printf("请输入要修改学生的学号\n"); LegalInput(id,20); p1=Tofind_stu(D->next1,id); modify_stu(p1); print_Stu(p1->date); Sort_stu(D->next1); } OperationDorm(&D); system("cls"); } if(n==5)//删除学生 { if(D->date.stuNum>0) { Delete_Stu(&D->next1); print_Dorm(D); } OperationDorm(&D); system("cls"); } if(n==6) { return 0; } } int OperationFloor(Floor **F) { Floor* D = NULL; D=*F; printf("------------------------------------\n"); printf("| |\n"); printf("| 楼层详情 0 清空楼层 1 |\n"); printf("| 添加寝室 2 查看寝室 3 |\n"); printf("| 寝室操作 4 删除寝室 5 |\n"); printf("| 退出 |\n"); printf("| |\n"); printf("------------------------------------\n"); int n; scanf("%d",&n); if(n==0)//楼层详情 { system("cls"); print_Floor(D); OperationFloor(&D); } if(n==1)//清空楼层 { system("cls"); if(D->date.DormNum>0) { DestroyFloor(&D->next1); D->date.DormNum=0; } else printf("寝室为空\n"); OperationFloor(&D); } if(n==2)//添加寝室 { system("cls"); if( D->date.DormNum<MAX) { int x; printf("请输入添加寝室数量<=%d\n",MAX-D->date.DormNum); x=SentenceFull(D->date.DormNum); CreatDorm(&D->next1,x); D->date.DormNum=D->date.DormNum+x; Sort_Dorm(D->next1); } else printf("楼层已满"); OperationFloor(&D); } if(n==3)//查看寝室 { system("cls"); if(D->date.DormNum>0) { Find_Dorm(D->next1); } else printf("楼层为空\n"); OperationFloor(&D); } if(n==4) { system("cls"); if(D->date.DormNum>0) { printf("请输入要进行操作的寝室号"); Dorm *p1=NULL; char id[20]; stringInput(id,20); p1=Tofind_dorm(D->next1,id,4); OperationDorm(&p1); } } if(n==5)//删除寝室 { system("cls"); if(D->date.DormNum>0) { printf("请输入要删除的寝室号"); char id[20]; LegalInput(id,20); Delete_Dorm(&D->next1,id); print_Floor(D); } OperationFloor(&D); } } int OperationBuild(Building **F) { Building* D = NULL; D=*F; printf("------------------------------------\n"); printf("| |\n"); printf("| 大楼详情 0 清空大楼 1 |\n"); printf("| 启用楼层 2 查看楼层 3 |\n"); printf("| 楼层操作 4 停用楼层 5 |\n"); printf("| 退出 |\n"); printf("| |\n"); printf("------------------------------------\n"); int n; printf("请输入选择: "); scanf("%d",&n); if(n==0)//大楼详情 { print_Build(D); OperationBuild(&D); } if(n==1) { if(D->date.floorNum>0) { DestroyBuild(&D->next1); D->date.floorNum=0; } else printf("大楼为空\n"); OperationBuild(&D); } if(n==2)//添加寝室 { if(D->date.floorNum<MAX) { int x; printf("请输入启用楼层数量<=%d\n",MAX-D->date.floorNum); x=SentenceFull(D->date.floorNum); CreatFloor(&D->next1,x); D->date.floorNum=D->date.floorNum+x; Sort_Floor(D->next1); } else printf("无空闲宿舍"); OperationBuild(&D); } if(n==3)//查看楼层 { if(D->date.floorNum>0) { Find_Floor(D->next1); } else printf("大楼为空\n"); OperationBuild(&D); } if(n==4) { if(D->date.floorNum>0) { printf("请输入要进行操作的楼层名"); Floor *p1=NULL; char id[100]; stringInput(id,100); p1=Tofind_floor(D->next1,id,4); OperationFloor(&p1); } OperationBuild(&D); } if(n==5)//删除大楼 { if(D->date.floorNum>0) { printf("请输入要停用的楼层名"); char id[20]; stringInput(id,20); Delete_Floor(&D->next1,id); D->date.floorNum--; print_Build(D); } OperationBuild(&D); } return 0; } int FileRead(Building **D)//读文件 { FILE *fp,*floor,*dorm,*stu; fp=fopen("Build.txt","rb"); floor=fopen("Floor.txt","rb"); dorm =fopen("dorm.txt","rb"); stu=fopen("student.txt","rb"); if(fp==NULL||floor==NULL||dorm==NULL ||stu==NULL) { printf("打开文件失败!"); return 0; } Building *H=new Building; fread(&H->date,sizeof(BUILD),1,fp); Floor *p; Floor *q; FlOOR t; Floor* head=new Floor; p=q=head; while( fread(&t,sizeof(FlOOR),1,floor)==1) { q=new Floor; q->date=t; Dorm *a; Dorm *b; DORM x; Dorm *z=new Dorm; a=z; b=z; for(int r=0; r<t.DormNum; r++) { fread(&x,sizeof(DORM),1,dorm); b=new Dorm; b->date=x; Student *m; Student *n=NULL; Stu y; Student* h=new Student; m=n=h; int k; for(k=0; k<x.stuNum; k++) { fread(&y,sizeof(Stu),1,stu); n=new Student; n->date=y; m->next=n; m=n; } m->next=NULL; b->next1=h->next; a->next=b; a=b; } a->next=NULL; q->next1=z->next; p->next=q; p=q; } p->next=NULL; H->next1=head->next; fclose(floor); fclose(dorm); fclose(stu); fclose(fp); *D=H; } int FileStore(Building *B)//存文件 { FILE *fp,*floor,*dorm,*stu; fp=fopen("Build.txt","wb"); floor=fopen("Floor.txt","wb"); dorm =fopen("dorm.txt","wb"); stu=fopen("student.txt","wb"); if(fp==NULL||floor==NULL||dorm==NULL ||stu==NULL) { printf("打开文件失败!"); return 0; } fwrite(&B->date,sizeof(BUILD),1,fp); Floor *F=NULL; F=B->next1; for(int i=0; i<B->date.floorNum; i++) { fwrite(&F->date,sizeof(FlOOR),1,floor); Dorm *D=NULL; D=F->next1; for(int y=0; y<F->date.DormNum; y++) { fwrite(&D->date,sizeof(DORM),1,dorm); Student *S = NULL; S = D->next1; for(int k = 0; k <D-> date.stuNum; k ++) { fwrite(&S->date,sizeof(Stu),1,stu); S = S->next; } D = D-> next; } F = F-> next; } fclose(floor); fclose(dorm); fclose(stu); fclose(fp); } int main(){ Building *F = NULL,*D = NULL; printf("欢迎进入宿舍管理系统\n"); FILE *fp; char ch; if((fp=fopen("Build.txt","r"))== NULL) { printf("文件没打开!\n"); } ch = fgetc(fp); if(ch == EOF) { printf("没有相应信息,请创建\n"); Sleep(1000); CreatBuild(&F); FileStore(F); FileRead(&D); OperationBuild(&D); FileRead(&D); } else { FileRead(&D); OperationBuild(&D); } FileStore(F); }
这篇关于宿舍管理系统(应用C语言、数据结构与算法知识).链表。(文件自己创建,这是代码).的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27文件掩码什么意思?-icode9专业技术文章分享
- 2024-12-27如何使用循环来处理多个订单的退款请求,代码怎么写?-icode9专业技术文章分享
- 2024-12-27VSCode 在编辑时切换到另一个文件后再切回来如何保持在原来的位置?-icode9专业技术文章分享
- 2024-12-27Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品 审核中
- 2024-12-27TypeScript面试真题解析与实战指南
- 2024-12-27TypeScript大厂面试真题详解与解析
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解