#include
@H_404_4@
#include
@H_404_4@
#include
@H_404_4@
#include
@H_404_4@
#include
@H_404_4@
#define MAX 10
@H_404_4@
using namespace std;
@H_404_4@
struct Stu
@H_404_4@
{
@H_404_4@
char seID[20];
@H_404_4@
char sename[20];
@H_404_4@
char cGender[10];
@H_404_4@
char seCollege[40];
@H_404_4@
char seMajor[40];
@H_404_4@
char seClass[40];
@H_404_4@
char seDrom[20];
@H_404_4@
};
@H_404_4@
typedef struct Student
@H_404_4@
{
@H_404_4@
struct Stu date;
@H_404_4@
struct Student *next;
@H_404_4@
} Student;
@H_404_4@
struct DORM
@H_404_4@
{
@H_404_4@
char dorm[20];
@H_404_4@
int stuNum;
@H_404_4@
};
@H_404_4@
typedef struct Dorm
@H_404_4@
{
@H_404_4@
struct DORM date;
@H_404_4@
struct Dorm *next;
@H_404_4@
Student *next1;
@H_404_4@
} Dorm;
@H_404_4@
struct FlOOR
@H_404_4@
{
@H_404_4@
char floor[20];
@H_404_4@
int DormNum;
@H_404_4@
};
@H_404_4@
typedef struct Floor
@H_404_4@
{
@H_404_4@
struct FlOOR date;
@H_404_4@
struct Floor *next;
@H_404_4@
struct Dorm *next1;
@H_404_4@
} Floor;
struct BUILD
@H_404_4@
{
@H_404_4@
char build[20];
@H_404_4@
int floorNum;
@H_404_4@
};
@H_404_4@
typedef struct Building
@H_404_4@
{
@H_404_4@
struct Floor *next1;
@H_404_4@
struct BUILD date;
@H_404_4@
} Building;
int SentenceFull(int n);//判满
@H_404_4@
voID Legalinput(char *str,int n);//数字字符串合法输入
@H_404_4@
voID stringinput(char *str,int n);//合法输入
@H_404_4@
voID SexSelection(char *str);//性别选择
voID print_Stu(struct Stu F);//输出学生详情
@H_404_4@
voID print_Dorm(Dorm *F);//输出寝室详情
@H_404_4@
voID print_Floor(Floor *F);//输出楼层详情
@H_404_4@
voID print_Build(Building *F);//输出宿舍楼详情
@H_404_4@
Student *Tofind_stu(Student *F,char ID[]);//按学号查找学生
@H_404_4@
Dorm *Tofind_dorm(Dorm *F,char ID[],int n);//按寝室号查找寝室,n>4,嵌套查学生
@H_404_4@
Floor *Tofind_floor(Floor *F,char ID,int n);//按楼层号查找楼层
voID Find_Stu(Student *F);//查找 并输出学生详情
@H_404_4@
voID Find_Dorm(Dorm *F);//查找并输出寝室详情
@H_404_4@
voID Find_Floor(Floor *F);//查找并输出楼层详情
voID Sort_stu(Student *L);//按学号将学生从小到大排序
@H_404_4@
voID Sort_Dorm(Dorm *L);//按寝室号将寝室从小到大排序
@H_404_4@
voID Sort_Floor(Floor *L);//按楼层号将楼层从小到大排序
voID Studentinformation(struct Stu *F,char dorm[]);//录入学生信息
@H_404_4@
voID CreatStudent(Student **F,char dorm[],int n);//创建n个学生
@H_404_4@
voID CreatDorm(Dorm **F,int n);//创建n个寝室
@H_404_4@
voID CreatFloor(Floor **F,int n);//创建n层楼层
@H_404_4@
voID CreatBuild(Building **F,int n);//创建n栋大楼
voID modify_stu(Student *F);//修改学生信息
@H_404_4@
voID DeleteStudet(Student **F,char ID[]);//按学号删除学生
voID Delete_Stu(Student **D);//删除学生,寝室版
@H_404_4@
int Delete_Dorm(Dorm **L,char dorm[]);//删除寝室
@H_404_4@
int Delete_Floor(Floor **L,char floor[]);//删除楼层
int DestroyDorm(Student **L);//清空寝室内所有学生,需手动改变学生数量(D->date.stunum)
@H_404_4@
int DestroyFloor(Dorm **L);//清空楼层所有寝室,需手动改变寝室数量(D->date.dornNum)
@H_404_4@
int DestroyBuild(Floor **L);//清空大楼
int OperationDorm(Dorm **F);//寝室 *** 作
@H_404_4@
int OperationFloor(Floor **F);//楼层 *** 作
@H_404_4@
int OperationBuild(Building **F);//大楼 *** 作
int fileStore(Building *B);//从文件读取
@H_404_4@
int fileRead(Building **D);//存储链表到文件
@H_404_4@
//判断选择
@H_404_4@
int SentenceFull(int n)
@H_404_4@
{
@H_404_4@
int x;
@H_404_4@
scanf("%d",&x);
@H_404_4@
if(n+x<=MAX&&x>=0)
@H_404_4@
{
@H_404_4@
return x;
@H_404_4@
}
@H_404_4@
else
@H_404_4@
{
@H_404_4@
printf("输入错误,请重新输入n");
@H_404_4@
SentenceFull(n);
@H_404_4@
}
@H_404_4@
}
@H_404_4@
voID stringinput(char *str,int n)//合法输入
@H_404_4@
{
@H_404_4@
scanf("%s",str);
@H_404_4@
getchar();
@H_404_4@
while(strlen(str)>n)
@H_404_4@
{
@H_404_4@
printf("长度超过 %d,重新输入n",n);
@H_404_4@
scanf("%s",str);
@H_404_4@
getchar();
@H_404_4@
}
@H_404_4@
}
@H_404_4@
voID Legalinput(char *str,int n)//数字字符串合法输入
@H_404_4@
{
@H_404_4@
scanf("%s",str);
@H_404_4@
getchar();
@H_404_4@
int i=0;
@H_404_4@
if(strlen(str) @H_404_4@ { @H_404_4@ for(int i=0; i @H_404_4@ { @H_404_4@ if(str[i]>'9'||str[i]<'0') @H_404_4@ { @H_404_4@ printf("输入的字符非数字,请重新输入n"); @H_404_4@ Legalinput(str,n); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ if(strlen(str)>n) @H_404_4@ { @H_404_4@ printf("长度超过 %d,n); @H_404_4@ Legalinput(str,n); @H_404_4@ } @H_404_4@ } @H_404_4@ voID SexSelection(char *str)//性别选择 @H_404_4@ { @H_404_4@ printf("男0,女1 "); @H_404_4@ int n=0; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==0) @H_404_4@ strcpy(str,"男"); @H_404_4@ if(n==1) @H_404_4@ strcpy(str,"女"); } @H_404_4@ //输出 @H_404_4@ voID print_Stu(struct Stu F) @H_404_4@ { @H_404_4@ printf("----------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("|学号: %s n",F.seID); @H_404_4@ printf("|名字: %s n",F.sename); @H_404_4@ printf("|性别: %s n",F.cGender); @H_404_4@ printf("|寝室: %s n",F.seDrom); @H_404_4@ printf("|学院: %s n",F.seCollege); @H_404_4@ printf("|专业: %s n",F.seMajor); @H_404_4@ printf("|班级: %s n",F.seClass); @H_404_4@ printf("| |n"); @H_404_4@ printf("----------------------------n"); @H_404_4@ } @H_404_4@ voID print_Dorm(Dorm *F) @H_404_4@ { @H_404_4@ printf(" 寝室号: %sn",F->date.dorm); @H_404_4@ Student *p1; @H_404_4@ p1=F->next1; @H_404_4@ if(F->date.stuNum==0) @H_404_4@ printf("寝室为空n"); @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ printf("------------------------n"); @H_404_4@ printf("学号:%s n",p1->date.seID); @H_404_4@ printf("名字:%s n",p1->date.sename); @H_404_4@ printf("------------------------n"); @H_404_4@ p1=p1->next; @H_404_4@ } @H_404_4@ } @H_404_4@ voID print_Floor(Floor *F) @H_404_4@ { @H_404_4@ printf(" 楼层名:%s n",F->date.floor); @H_404_4@ Dorm *p1; @H_404_4@ p1=F->next1; @H_404_4@ if(F->date.DormNum==0) @H_404_4@ printf("楼层为空n"); @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ printf("---------------------------n"); @H_404_4@ printf("寝室号:%s n",p1->date.dorm); @H_404_4@ printf("学生数量:%dn",p1->date.stuNum); @H_404_4@ printf("---------------------------n"); @H_404_4@ p1=p1->next; @H_404_4@ } @H_404_4@ } @H_404_4@ voID print_Build(Building *F) @H_404_4@ { @H_404_4@ printf(" 大楼: %sn",F->date.build); @H_404_4@ Floor *p1; @H_404_4@ p1=F->next1; @H_404_4@ if(F->date.floorNum==0) @H_404_4@ printf("大楼为空n"); @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ printf("----------------------------n"); @H_404_4@ printf("楼层名:%s n",p1->date.floor); @H_404_4@ printf("寝室数量:%dn",p1->date.DormNum); @H_404_4@ printf("----------------------------n"); @H_404_4@ p1=p1->next; @H_404_4@ } @H_404_4@ } @H_404_4@ //查找 @H_404_4@ Student *Tofind_stu(Student *F,char ID[])//查学生 @H_404_4@ { @H_404_4@ Student *p1,*p2=NulL; @H_404_4@ p1=F; @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ if(strcmp(p1->date.seID,ID)==0) @H_404_4@ { @H_404_4@ p2=p1; break; @H_404_4@ } @H_404_4@ if(strcmp(p1->date.sename,ID)==0) @H_404_4@ { @H_404_4@ p2=p1; @H_404_4@ break; @H_404_4@ } @H_404_4@ else p1=p1->next; @H_404_4@ } @H_404_4@ if(p1==NulL) @H_404_4@ return p1; @H_404_4@ else @H_404_4@ { @H_404_4@ return p2; @H_404_4@ } @H_404_4@ } @H_404_4@ Dorm *Tofind_dorm(Dorm *F,int n) @H_404_4@ { @H_404_4@ Dorm *p1,*p2=NulL; @H_404_4@ p1=F; @H_404_4@ int flag=0; @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ if(n>4) @H_404_4@ { @H_404_4@ Tofind_stu(p1->next1,ID); @H_404_4@ } @H_404_4@ if(strcmp(p1->date.dorm,ID)==0) @H_404_4@ { @H_404_4@ p2=p1; @H_404_4@ break; @H_404_4@ } @H_404_4@ else p1=p1->next; @H_404_4@ } @H_404_4@ if(p1==NulL) @H_404_4@ return p1; @H_404_4@ else @H_404_4@ { @H_404_4@ return p2; @H_404_4@ } @H_404_4@ } @H_404_4@ Floor *Tofind_floor(Floor *F,int n) @H_404_4@ { @H_404_4@ Floor *p1,*p2=NulL; @H_404_4@ p1=F; @H_404_4@ int flag=0; @H_404_4@ while(p1!=NulL) @H_404_4@ { @H_404_4@ if(n>3) @H_404_4@ { @H_404_4@ Tofind_dorm(p1->next1,ID,n); @H_404_4@ } @H_404_4@ if(strcmp(p1->date.floor,ID)==0) @H_404_4@ { @H_404_4@ p2=p1; @H_404_4@ break; @H_404_4@ } @H_404_4@ else p1=p1->next; @H_404_4@ } @H_404_4@ if(p1==NulL) @H_404_4@ return p1; @H_404_4@ else @H_404_4@ { @H_404_4@ return p2; @H_404_4@ } @H_404_4@ } @H_404_4@ //查找加输出 @H_404_4@ voID Find_Stu(Student *F) @H_404_4@ { @H_404_4@ Student *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ printf("查询学生学号: "); @H_404_4@ Legalinput(ID,20); @H_404_4@ p1=Tofind_stu(F,ID); @H_404_4@ if(p1==NulL) @H_404_4@ { @H_404_4@ printf("该学生不存在n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ } @H_404_4@ if(p1) @H_404_4@ { @H_404_4@ printf("----------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ print_Stu(p1->date); @H_404_4@ printf("| 修改信息 1 返回 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==1) @H_404_4@ { @H_404_4@ modify_stu(p1); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ voID Find_Dorm(Dorm *F) @H_404_4@ { @H_404_4@ Dorm *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ printf("查询寝室: "); @H_404_4@ scanf("%s",ID); @H_404_4@ p1=Tofind_dorm(F,4); @H_404_4@ if(p1==NulL) @H_404_4@ { @H_404_4@ printf("该寝室不存在n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ } @H_404_4@ if(p1) @H_404_4@ { @H_404_4@ printf("----------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ print_Dorm(p1); @H_404_4@ printf("| *** 作 1 返回 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==1) @H_404_4@ { @H_404_4@ OperationDorm(&p1); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ voID Find_Floor(Floor *F) @H_404_4@ { @H_404_4@ Floor *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ printf("查询楼层: "); @H_404_4@ scanf("%s",ID); @H_404_4@ p1=Tofind_floor(F,3); if(p1==NulL) @H_404_4@ { @H_404_4@ printf("该楼层不存在n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ } @H_404_4@ if(p1) @H_404_4@ { @H_404_4@ printf("----------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ print_Floor(p1); @H_404_4@ printf("| *** 作 1 返回 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("----------------------------nn"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==1) @H_404_4@ { @H_404_4@ OperationFloor(&p1); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ //排序 @H_404_4@ voID Sort_stu(Student *L) @H_404_4@ { @H_404_4@ Student *p,*q; @H_404_4@ Stu temp; @H_404_4@ for (p=L; p!=NulL; p=p->next) @H_404_4@ { @H_404_4@ for(q=p->next; q!=NulL; q=q->next) @H_404_4@ { @H_404_4@ if(strcmp(p->date.seID,q->date.seID)<0) @H_404_4@ { @H_404_4@ temp=q->date; @H_404_4@ q->date=p->date; @H_404_4@ p->date=temp; @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ voID Sort_Dorm(Dorm *L) @H_404_4@ { @H_404_4@ Dorm *p,*q; @H_404_4@ Dorm temp; @H_404_4@ for (p=L; p!=NulL; p=p->next) @H_404_4@ { @H_404_4@ for(q=p->next; q!=NulL; q=q->next) @H_404_4@ { @H_404_4@ if(strcmp(p->date.dorm,q->date.dorm)<0) @H_404_4@ { @H_404_4@ temp.date=q->date; @H_404_4@ temp.next1=q->next1; @H_404_4@ q->date=p->date; @H_404_4@ q->next1=p->next1; @H_404_4@ p->date=temp.date; @H_404_4@ p->next1=temp.next1; @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ voID Sort_Floor(Floor *L) @H_404_4@ { @H_404_4@ Floor *p,*q; @H_404_4@ Floor temp; @H_404_4@ for (p=L; p!=NulL; p=p->next) @H_404_4@ { @H_404_4@ for(q=p->next; q!=NulL; q=q->next) @H_404_4@ { @H_404_4@ if(strcmp(p->date.floor,q->date.floor)<0) @H_404_4@ { @H_404_4@ temp.date=q->date; @H_404_4@ temp.next1=q->next1; @H_404_4@ q->date=p->date; @H_404_4@ q->next1=p->next1; @H_404_4@ p->date=temp.date; @H_404_4@ p->next1=temp.next1; @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ //创建 @H_404_4@ voID Studentinformation(struct Stu *F,char dorm[])//录入学生信息 @H_404_4@ { @H_404_4@ char ID[20]; @H_404_4@ printf("-------------------------------------n"); @H_404_4@ printf("学号: "); @H_404_4@ Legalinput(ID,20); @H_404_4@ if(ID=="000") @H_404_4@ F=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ strcpy((*F).seID,ID); @H_404_4@ printf("名字: "); @H_404_4@ stringinput( (*F).sename,20); @H_404_4@ printf("性别: "); @H_404_4@ SexSelection((*F).cGender); @H_404_4@ printf("学院: "); @H_404_4@ stringinput((*F).seCollege,40); @H_404_4@ printf("专业: "); @H_404_4@ stringinput((*F).seMajor,40); @H_404_4@ printf("班级: "); @H_404_4@ stringinput( (*F).seClass,40); @H_404_4@ strcpy((*F).seDrom,dorm); @H_404_4@ printf("n学生%s 信息录入成功n",(*F).sename); @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ } @H_404_4@ } @H_404_4@ voID CreatStudent(Student **F,int n)//插入n个学生 @H_404_4@ { @H_404_4@ if(n==0) @H_404_4@ (*F)=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ for(int i=0; i @H_404_4@ { @H_404_4@ Student *p1=new Student; @H_404_4@ Studentinformation(&(p1->date),dorm); @H_404_4@ p1->next = NulL; @H_404_4@ if(*F) @H_404_4@ { @H_404_4@ p1->next=(*F)->next; @H_404_4@ (*F)->next=p1; @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ *F = p1; @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } voID CreatDorm(Dorm **F,int n)//创建寝室 @H_404_4@ { @H_404_4@ if(n==0) @H_404_4@ (*F)=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ for(int i=0; i @H_404_4@ { @H_404_4@ Dorm *p1; @H_404_4@ int num; @H_404_4@ printf("n-------------------------------------n"); @H_404_4@ printf("寝室号: "); @H_404_4@ char ID[20]; @H_404_4@ scanf("%s",ID); @H_404_4@ printf("寝室学生人数(<=10): ");//输入寝室人数 @H_404_4@ scanf("%d",&num); @H_404_4@ if(num<0) @H_404_4@ p1=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ p1=new Dorm; @H_404_4@ p1->date.stuNum=num; @H_404_4@ strcpy(p1->date.dorm,ID); @H_404_4@ Student * D = NulL; @H_404_4@ CreatStudent(&D,num); @H_404_4@ p1->next1=D; @H_404_4@ } @H_404_4@ p1->next=NulL; @H_404_4@ if(*F) @H_404_4@ { @H_404_4@ p1->next=(*F)->next; @H_404_4@ (*F)->next=p1; @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ *F = p1; @H_404_4@ } @H_404_4@ } @H_404_4@ printf("寝室%s创建成功n",(*F)->date.dorm); @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ } @H_404_4@ } @H_404_4@ voID CreatFloor(Floor **F,int n)//创建楼层 @H_404_4@ { @H_404_4@ if(n==0) @H_404_4@ (*F)=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ for(int i=0; i @H_404_4@ { @H_404_4@ Floor *p1; @H_404_4@ int num; @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ printf("楼层名:"); @H_404_4@ char floor[20]; @H_404_4@ scanf("%s",floor); @H_404_4@ printf("楼层寝室数量:(<=10)");//输入寝室数量 @H_404_4@ scanf("%d",&num); @H_404_4@ if(num<0) @H_404_4@ p1=NulL; @H_404_4@ else @H_404_4@ { p1=new Floor; @H_404_4@ p1->date.DormNum=num; @H_404_4@ strcpy(p1->date.floor,floor); printf("请输入寝室信息n"); @H_404_4@ Dorm * D = NulL; @H_404_4@ CreatDorm(&D,p1->date.DormNum); @H_404_4@ p1->next1=D; @H_404_4@ } @H_404_4@ p1->next=NulL; @H_404_4@ if(*F!=NulL) @H_404_4@ { @H_404_4@ p1->next=(*F)->next; @H_404_4@ (*F)->next=p1; } @H_404_4@ else @H_404_4@ { @H_404_4@ *F=p1; @H_404_4@ } @H_404_4@ } @H_404_4@ printf("楼层%s创建成功nn",(*F)->date.floor); @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ } @H_404_4@ } @H_404_4@ voID CreatBuild(Building **F) @H_404_4@ { Building *p1; @H_404_4@ printf(" 创建宿舍楼n"); @H_404_4@ printf("-------------------------------------n"); @H_404_4@ printf("宿舍楼名称: "); @H_404_4@ char build[20]; @H_404_4@ scanf("%s",build); @H_404_4@ int num; @H_404_4@ printf("楼层数量:(<=10) "); @H_404_4@ num=SentenceFull(0); @H_404_4@ if(num<0) @H_404_4@ p1=NulL; @H_404_4@ else @H_404_4@ { @H_404_4@ p1=new Building; @H_404_4@ p1->date.floorNum=num; @H_404_4@ strcpy(p1->date.build,build); @H_404_4@ printf(" 请输入楼层信息n"); @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ Floor * D = NulL; @H_404_4@ CreatFloor(&D,p1->date.floorNum); @H_404_4@ p1->next1=D; @H_404_4@ } @H_404_4@ *F = p1; } @H_404_4@ //修改 @H_404_4@ voID modify_stu(Student *F)//学生信息修改 @H_404_4@ { @H_404_4@ printf("_____________________________n"); @H_404_4@ printf("|修改名字 1 "); @H_404_4@ printf("修改学号 2 n"); @H_404_4@ printf("|修改性别 3 |"); @H_404_4@ printf("修改班级 4 n"); @H_404_4@ printf("|修改学院 5 "); @H_404_4@ printf("修改专业 6 |n"); @H_404_4@ printf("_____________________________n"); @H_404_4@ printf("请输入选择:"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(F!=NulL) @H_404_4@ { @H_404_4@ if(n==1) @H_404_4@ { @H_404_4@ printf("输入修改后学生名字."); @H_404_4@ char name[20]; @H_404_4@ stringinput(name,20); @H_404_4@ memset(F->date.sename,'',20*sizeof(char)); @H_404_4@ strcpy(F->date.sename,name); @H_404_4@ } @H_404_4@ if(n==2) @H_404_4@ { @H_404_4@ printf("输入修改后学生学号 "); @H_404_4@ char ID[20]; @H_404_4@ scanf("%s",ID); @H_404_4@ memset(F->date.seID,20*sizeof(char)); @H_404_4@ strcpy(F->date.seID,ID); @H_404_4@ } @H_404_4@ if(n==3) @H_404_4@ { @H_404_4@ printf("输入学生性别"); @H_404_4@ char Gender[10]; @H_404_4@ SexSelection(Gender); @H_404_4@ memset(F->date.cGender,10*sizeof(char)); @H_404_4@ strcpy(F->date.cGender,Gender); @H_404_4@ } @H_404_4@ if(n==4) @H_404_4@ { @H_404_4@ printf("输入修改后学生所在班级"); @H_404_4@ char College[40]; @H_404_4@ stringinput( College,40); @H_404_4@ memset(F->date.seCollege,40*sizeof(char)); @H_404_4@ strcpy(F->date.seCollege,College); @H_404_4@ } @H_404_4@ if(n==5) @H_404_4@ { @H_404_4@ printf("输入修改后学生所在学院"); @H_404_4@ char Major[40]; @H_404_4@ stringinput(Major,40); @H_404_4@ memset(F->date.seMajor,40*sizeof(char)); @H_404_4@ strcpy(F->date.seMajor,Major); @H_404_4@ } @H_404_4@ if(n==6) @H_404_4@ { @H_404_4@ printf("输入修改后学生所在专业 "); @H_404_4@ char Class[40]; @H_404_4@ stringinput( Class,40); @H_404_4@ memset(F->date.seClass,40*sizeof(char)); @H_404_4@ strcpy(F->date.seClass,Class); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ //删除 @H_404_4@ voID DeleteStudet(Student **F,char ID[])//删除学生 @H_404_4@ { @H_404_4@ Student *p=*F; @H_404_4@ Student *q=NulL; @H_404_4@ if(strcmp(p->date.seID,ID)==0) @H_404_4@ { @H_404_4@ *F=p->next; @H_404_4@ free(p); @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ while(p!=NulL) @H_404_4@ { @H_404_4@ q=p; @H_404_4@ p=p->next; @H_404_4@ if (p == NulL)//遍历完也没找到 @H_404_4@ { @H_404_4@ printf("没有找到要删除的学生n"); @H_404_4@ } @H_404_4@ else if(strcmp(p->date.seID,ID)==0) @H_404_4@ { @H_404_4@ q->next = p->next; @H_404_4@ delete(p); @H_404_4@ break; @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ printf("没有找到要删除的学生n"); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } voID Delete_Stu(Student **D) @H_404_4@ { @H_404_4@ char ID[20]; @H_404_4@ printf("-------------------------------------n"); @H_404_4@ printf("请输入要删除学生的学号n"); @H_404_4@ Legalinput(ID,20); @H_404_4@ DeleteStudet(D,ID); @H_404_4@ printf("学生%s已删除n",ID); @H_404_4@ printf("-------------------------------------nn"); @H_404_4@ } @H_404_4@ int Delete_Dorm(Dorm **L,char dorm[])//删除寝室 @H_404_4@ { @H_404_4@ Dorm *p=*L; @H_404_4@ Dorm *q=NulL; @H_404_4@ if(strcmp(p->date.dorm,dorm)==0) @H_404_4@ { @H_404_4@ *L=p->next; @H_404_4@ free(p); @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ while(p!=NulL) @H_404_4@ { @H_404_4@ q=p; @H_404_4@ p=p->next; @H_404_4@ if (p == NulL)//遍历完也没找到 @H_404_4@ { @H_404_4@ printf("没有找到要删除的寝室n"); @H_404_4@ } @H_404_4@ else if(strcmp(p->date.dorm,dorm)==0) @H_404_4@ { @H_404_4@ DestroyDorm(&q->next1); @H_404_4@ q->next = p->next; @H_404_4@ delete(p); @H_404_4@ break; @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ printf("没有找到要删除的寝室n"); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ int Delete_Floor(Floor **L,char floor[]) @H_404_4@ { @H_404_4@ Floor *p=*L; @H_404_4@ Floor *q=NulL; @H_404_4@ if(strcmp(p->date.floor,floor)==0) @H_404_4@ { @H_404_4@ *L=p->next; @H_404_4@ free(p); @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ while(p!=NulL) @H_404_4@ { @H_404_4@ q=p; @H_404_4@ p=p->next; @H_404_4@ if (p == NulL)//遍历完也没找到 @H_404_4@ { @H_404_4@ printf("没有找到要停用的楼层n"); @H_404_4@ } @H_404_4@ else if(strcmp(p->date.floor,floor)==0) @H_404_4@ { @H_404_4@ DestroyFloor(&q->next1); @H_404_4@ q->next = p->next; @H_404_4@ delete(p); @H_404_4@ break; @H_404_4@ } @H_404_4@ else @H_404_4@ { @H_404_4@ printf("没有找到要停用的楼层n"); @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ } @H_404_4@ int DestroyDorm(Student **L)//清空寝室 @H_404_4@ { @H_404_4@ Student *q; @H_404_4@ while(*L) @H_404_4@ { @H_404_4@ q=(*L)->next; @H_404_4@ free(*L); @H_404_4@ *L=q; @H_404_4@ } @H_404_4@ return 1; @H_404_4@ } @H_404_4@ int DestroyFloor(Dorm **L)//清空楼层 @H_404_4@ { @H_404_4@ Dorm *q; @H_404_4@ while(*L) @H_404_4@ { @H_404_4@ q=(*L)->next; @H_404_4@ Dorm * D =*L; @H_404_4@ DestroyDorm(&D->next1); @H_404_4@ free(*L); @H_404_4@ *L=q; @H_404_4@ } @H_404_4@ return 1; @H_404_4@ } @H_404_4@ int DestroyBuild(Floor **L)//清空大楼 @H_404_4@ { @H_404_4@ Floor *q; @H_404_4@ while(*L) @H_404_4@ { @H_404_4@ q=(*L)->next; @H_404_4@ Floor * D =*L; @H_404_4@ DestroyFloor(&D->next1); @H_404_4@ free(*L); @H_404_4@ *L=q; @H_404_4@ } @H_404_4@ return 1; @H_404_4@ } @H_404_4@ // *** 作 @H_404_4@ int OperationDorm(Dorm **F) @H_404_4@ { @H_404_4@ Dorm * D = NulL; @H_404_4@ D=*F; @H_404_4@ printf("------------------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("| 寝室详情 0 清空寝室 1 |n"); @H_404_4@ printf("| 添加学生 2 查看学生 3 |n"); @H_404_4@ printf("| 修改学生 4 删除学生 5 |n"); @H_404_4@ printf("| 退出 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("------------------------------------n"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==0)//寝室详情 @H_404_4@ { @H_404_4@ print_Dorm(D); @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==1)//清空寝室 @H_404_4@ { @H_404_4@ if(D->date.stuNum>0) @H_404_4@ { @H_404_4@ DestroyDorm(&D->next1); @H_404_4@ D->date.stuNum=0; @H_404_4@ printf("寝室已清空n"); @H_404_4@ } @H_404_4@ else printf("寝室为空n"); @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==2)//添加学生 @H_404_4@ { @H_404_4@ if( D->date.stuNum @H_404_4@ { @H_404_4@ int x; @H_404_4@ printf("请输入添加学生数量<=%dn",MAX-D->date.stuNum); @H_404_4@ x=SentenceFull(D->date.stuNum); @H_404_4@ CreatStudent(&D->next1,*&(D->date.dorm),x); @H_404_4@ D->date.stuNum=D->date.stuNum+x; @H_404_4@ Sort_stu(D->next1); @H_404_4@ } @H_404_4@ else printf("寝室已满"); @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==3)//查看学生 @H_404_4@ { @H_404_4@ if(D->date.stuNum>0) @H_404_4@ { @H_404_4@ Find_Stu(D->next1); @H_404_4@ Sort_stu(D->next1); @H_404_4@ } @H_404_4@ else printf("寝室为空n"); @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==4) @H_404_4@ { @H_404_4@ if(D->date.stuNum>0) @H_404_4@ { @H_404_4@ Student *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ printf("请输入要修改学生的学号n"); @H_404_4@ Legalinput(ID,20); @H_404_4@ p1=Tofind_stu(D->next1,ID); @H_404_4@ modify_stu(p1); @H_404_4@ print_Stu(p1->date); @H_404_4@ Sort_stu(D->next1); @H_404_4@ } @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==5)//删除学生 @H_404_4@ { @H_404_4@ if(D->date.stuNum>0) @H_404_4@ { @H_404_4@ Delete_Stu(&D->next1); @H_404_4@ print_Dorm(D); @H_404_4@ } @H_404_4@ OperationDorm(&D); @H_404_4@ } @H_404_4@ if(n==6) @H_404_4@ { @H_404_4@ return 0; @H_404_4@ } @H_404_4@ } int OperationFloor(Floor **F) @H_404_4@ { @H_404_4@ Floor* D = NulL; @H_404_4@ D=*F; @H_404_4@ printf("------------------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("| 楼层详情 0 清空楼层 1 |n"); @H_404_4@ printf("| 添加寝室 2 查看寝室 3 |n"); @H_404_4@ printf("| 寝室 *** 作 4 删除寝室 5 |n"); @H_404_4@ printf("| 退出 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("------------------------------------n"); @H_404_4@ int n; @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==0)//楼层详情 @H_404_4@ { @H_404_4@ print_Floor(D); @H_404_4@ OperationFloor(&D); @H_404_4@ } @H_404_4@ if(n==1)//清空楼层 @H_404_4@ { @H_404_4@ if(D->date.DormNum>0) @H_404_4@ { @H_404_4@ DestroyFloor(&D->next1); @H_404_4@ D->date.DormNum=0; @H_404_4@ } @H_404_4@ else printf("寝室为空n"); @H_404_4@ OperationFloor(&D); @H_404_4@ } @H_404_4@ if(n==2)//添加寝室 @H_404_4@ { @H_404_4@ if( D->date.DormNum @H_404_4@ { @H_404_4@ int x; @H_404_4@ printf("请输入添加寝室数量<=%dn",MAX-D->date.DormNum); @H_404_4@ x=SentenceFull(D->date.DormNum); @H_404_4@ CreatDorm(&D->next1,x); @H_404_4@ D->date.DormNum=D->date.DormNum+x; @H_404_4@ Sort_Dorm(D->next1); @H_404_4@ } @H_404_4@ else printf("楼层已满"); @H_404_4@ OperationFloor(&D); @H_404_4@ } @H_404_4@ if(n==3)//查看寝室 @H_404_4@ { @H_404_4@ if(D->date.DormNum>0) @H_404_4@ { @H_404_4@ Find_Dorm(D->next1); @H_404_4@ } @H_404_4@ else printf("楼层为空n"); @H_404_4@ OperationFloor(&D); @H_404_4@ } @H_404_4@ if(n==4) @H_404_4@ { @H_404_4@ if(D->date.DormNum>0) @H_404_4@ { @H_404_4@ printf("请输入要进行 *** 作的寝室号"); @H_404_4@ Dorm *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ Legalinput(ID,20); @H_404_4@ p1=Tofind_dorm(D->next1,4); @H_404_4@ OperationDorm(&p1); @H_404_4@ } @H_404_4@ } @H_404_4@ if(n==5)//删除寝室 @H_404_4@ { @H_404_4@ if(D->date.DormNum>0) @H_404_4@ { @H_404_4@ printf("请输入要删除的寝室号"); @H_404_4@ char ID[20]; @H_404_4@ Legalinput(ID,20); @H_404_4@ Delete_Dorm(&D->next1,ID); @H_404_4@ print_Floor(D); @H_404_4@ } @H_404_4@ OperationFloor(&D); @H_404_4@ } @H_404_4@ } @H_404_4@ int OperationBuild(Building **F) @H_404_4@ { @H_404_4@ Building* D = NulL; @H_404_4@ D=*F; @H_404_4@ printf("------------------------------------n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("| 大楼详情 0 清空大楼 1 |n"); @H_404_4@ printf("| 启用楼层 2 查看楼层 3 |n"); @H_404_4@ printf("| 楼层 *** 作 4 停用楼层 5 |n"); @H_404_4@ printf("| 退出 |n"); @H_404_4@ printf("| |n"); @H_404_4@ printf("------------------------------------n"); @H_404_4@ int n; @H_404_4@ printf("请输入选择: "); @H_404_4@ scanf("%d",&n); @H_404_4@ if(n==0)//大楼详情 @H_404_4@ { @H_404_4@ print_Build(D); @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ if(n==1) @H_404_4@ { @H_404_4@ if(D->date.floorNum>0) @H_404_4@ { @H_404_4@ DestroyBuild(&D->next1); D->date.floorNum=0; @H_404_4@ } @H_404_4@ else printf("大楼为空n"); @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ if(n==2)//添加寝室 @H_404_4@ { @H_404_4@ if(D->date.floorNum @H_404_4@ { @H_404_4@ int x; @H_404_4@ printf("请输入启用楼层数量<=%dn",MAX-D->date.floorNum); @H_404_4@ x=SentenceFull(D->date.floorNum); @H_404_4@ CreatFloor(&D->next1,x); @H_404_4@ D->date.floorNum=D->date.floorNum+x; @H_404_4@ Sort_Floor(D->next1); @H_404_4@ } @H_404_4@ else printf("无空闲楼层"); @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ if(n==3)//查看楼层 @H_404_4@ { @H_404_4@ if(D->date.floorNum>0) @H_404_4@ { @H_404_4@ Find_Floor(D->next1); @H_404_4@ } @H_404_4@ else printf("大楼为空n"); @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ if(n==4) @H_404_4@ { @H_404_4@ if(D->date.floorNum>0) @H_404_4@ { @H_404_4@ printf("请输入要进行 *** 作的楼层名"); @H_404_4@ Floor *p1=NulL; @H_404_4@ char ID[20]; @H_404_4@ Legalinput(ID,20); @H_404_4@ p1=Tofind_floor(D->next1,4); @H_404_4@ OperationFloor(&p1); @H_404_4@ } @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ if(n==5)//删除大楼 @H_404_4@ { @H_404_4@ if(D->date.floorNum>0) @H_404_4@ { @H_404_4@ printf("请输入要停用的楼层名"); @H_404_4@ char ID[20]; @H_404_4@ Legalinput(ID,20); @H_404_4@ Delete_Floor(&D->next1,ID); @H_404_4@ D->date.floorNum--; @H_404_4@ print_Build(D); @H_404_4@ } @H_404_4@ OperationBuild(&D); @H_404_4@ } @H_404_4@ return 0; @H_404_4@ } @H_404_4@ int fileRead(Building **D)//读文件 @H_404_4@ { @H_404_4@ file *fp,*floor,*dorm,*stu; @H_404_4@ fp=fopen("Build.txt","rb"); @H_404_4@ floor=fopen("Floor.txt","rb"); @H_404_4@ dorm =fopen("dorm.txt","rb"); @H_404_4@ stu=fopen("student.txt","rb"); @H_404_4@ if(fp==NulL||floor==NulL||dorm==NulL ||stu==NulL) @H_404_4@ { @H_404_4@ printf("打开文件失败!"); @H_404_4@ return NulL; @H_404_4@ } @H_404_4@ Building *H=new Building; @H_404_4@ fread(&H->date,sizeof(BUILD),1,fp); @H_404_4@ Floor *p; @H_404_4@ Floor *q; @H_404_4@ FlOOR t; @H_404_4@ Floor* head=new Floor; @H_404_4@ p=q=head; @H_404_4@ while( fread(&t,sizeof(FlOOR),floor)==1) @H_404_4@ { @H_404_4@ q=new Floor; @H_404_4@ q->date=t; @H_404_4@ Dorm *a; @H_404_4@ Dorm *b; @H_404_4@ DORM x; @H_404_4@ Dorm *z=new Dorm; @H_404_4@ a=z; @H_404_4@ b=z; @H_404_4@ for(int r=0; r @H_404_4@ { @H_404_4@ fread(&x,sizeof(DORM),dorm); @H_404_4@ b=new Dorm; @H_404_4@ b->date=x; @H_404_4@ Student *m; @H_404_4@ Student *n=NulL; @H_404_4@ Stu y; @H_404_4@ Student* h=new Student; @H_404_4@ m=n=h; @H_404_4@ int k; @H_404_4@ for(k=0; k @H_404_4@ { @H_404_4@ fread(&y,sizeof(Stu),stu); @H_404_4@ n=new Student; @H_404_4@ n->date=y; @H_404_4@ m->next=n; @H_404_4@ m=n; @H_404_4@ } @H_404_4@ m->next=NulL; @H_404_4@ b->next1=h->next; @H_404_4@ a->next=b; @H_404_4@ a=b; @H_404_4@ } @H_404_4@ a->next=NulL; @H_404_4@ q->next1=z->next; @H_404_4@ p->next=q; @H_404_4@ p=q; @H_404_4@ } @H_404_4@ p->next=NulL; @H_404_4@ H->next1=head->next; @H_404_4@ fclose(floor); @H_404_4@ fclose(dorm); @H_404_4@ fclose(stu); @H_404_4@ fclose(fp); @H_404_4@ *D=H; @H_404_4@ } @H_404_4@ int fileStore(Building *B)//存文件 @H_404_4@ { @H_404_4@ file *fp,"wb"); @H_404_4@ floor=fopen("Floor.txt","wb"); @H_404_4@ dorm =fopen("dorm.txt","wb"); @H_404_4@ stu=fopen("student.txt","wb"); @H_404_4@ if(fp==NulL||floor==NulL||dorm==NulL ||stu==NulL) @H_404_4@ { @H_404_4@ printf("打开文件失败!"); @H_404_4@ return NulL; @H_404_4@ } @H_404_4@ fwrite(&B->date,fp); @H_404_4@ Floor *F=NulL; @H_404_4@ F=B->next1; @H_404_4@ for(int i=0; i @H_404_4@ { @H_404_4@ fwrite(&F->date,floor); @H_404_4@ Dorm *D=NulL; @H_404_4@ D=F->next1; @H_404_4@ for(int y=0; y @H_404_4@ { @H_404_4@ fwrite(&D->date,dorm); 学生* S = NulL; @H_404_4@ S = D-> NEXT1; @H_404_4@ for(int k = 0; k @H_404_4@ { @H_404_4@ fwrite(&S-> date,sizeof(Stu),1,stu); @H_404_4@ S = S->下; @H_404_4@ } @H_404_4@ D = D-> next; @H_404_4@ } @H_404_4@ F = F-> next; @H_404_4@ } @H_404_4@ fclose(floor); @H_404_4@ FCLOSE(宿舍); @H_404_4@ FCLOSE(STU); @H_404_4@ FCLOSE(FP); @H_404_4@ } @H_404_4@ int main() @H_404_4@ { @H_404_4@ Building * F = NulL,* D = NulL; @H_404_4@ printf(“欢迎进入宿舍管理系统 n”); @H_404_4@ file * fp; @H_404_4@ char ch; @H_404_4@ if((fp = fopen(“Build.txt”,“r”))== NulL) @H_404_4@ { @H_404_4@ printf(“文件没打开! n”); @H_404_4@ } @H_404_4@ ch = fgetc(fp); @H_404_4@ if(ch == EOF) @H_404_4@ { @H_404_4@ printf(“没有相应信息,请创建 n”); @H_404_4@ 睡眠(1000); @H_404_4@ 系统( “CLS”); CreatBuild(F); @H_404_4@ fileStore的(F); @H_404_4@ fileREAD(d); @H_404_4@ OperationBuild(d); @H_404_4@ fileREAD(d); @H_404_4@ } else @H_404_4@ { @H_404_4@ fileRead(&D); @H_404_4@ OperationBuild(d); @H_404_4@ } @H_404_4@ fileStore(F); @H_404_4@ } @H_404_4@ 以上是内存溢出为你收集整理的数据结构与算法程序设计——宿舍管理系统全部内容,希望文章能够帮你解决数据结构与算法程序设计——宿舍管理系统所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)