宿舍管理系统 c语言程序设计.docx

上传人:小飞机 文档编号:3444847 上传时间:2023-03-13 格式:DOCX 页数:24 大小:42.60KB
返回 下载 相关 举报
宿舍管理系统 c语言程序设计.docx_第1页
第1页 / 共24页
宿舍管理系统 c语言程序设计.docx_第2页
第2页 / 共24页
宿舍管理系统 c语言程序设计.docx_第3页
第3页 / 共24页
宿舍管理系统 c语言程序设计.docx_第4页
第4页 / 共24页
宿舍管理系统 c语言程序设计.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《宿舍管理系统 c语言程序设计.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统 c语言程序设计.docx(24页珍藏版)》请在三一办公上搜索。

1、宿舍管理系统 c语言程序设计宿舍管理系统 c语言程序设计 #include stdio.h/*库函数 #include stdlib.h #include string.h #include conio.h int m;/*控制登陆界面菜单显示项目的全局变量 int num;/控制学号的全局变量 int orn;/控制日志顺序号的全局变量 int printnote(void);/日志菜单打印函数函数声明 struct note*creatnote(void);/创建日志函数 void savenote(struct note*head1);/保存日志函数 struct note*readno

2、te(void);/从磁盘中读取日志函数 void readoutnote(void);/读取日志并显示在屏幕上的函数 void show1(void); int searchnote(struct note*head1);/查找日志函数 int addnote(void);/添加日志函数 int deleteinfonote(void);/删除日志函数 struct node*read1(void); void readout(void);/*链表从文件中读取并显示在屏幕上函数 struct node*creat(void);/*链表的创建函数 int print1(void); int p

3、rint2(void);/*登陆菜单的打印函数 int login(void);/*登陆程序函数 void show(void);/*信息管理菜单的显示函数 void save(struct node*);/*在磁盘中保存文件的函数 void choose(int);/*信息管理菜单的选择函数 int search(struct node*);/*信息查询函数 int deleteinfo(void);/*信息删除函数 int add(void);/*信息添加函数 int modify;/*信息修改函数 void total(struct node*);/*信息统计函数 struct node

4、/*学生宿舍信息的结构体创建 char name30;/*数据域 char Class30; char sex; int age; long int stunum; int dornum; int roomnum; struct node*next;/*指针域 ; struct user/*登陆信息结构体创建 char username15, password15; user,t; struct note/日志结构体 int ordernum; char notes80; int year; int month; int day; struct note*next; ; int printno

5、te(void)/日志菜单打印函数 int a; printf(*n); printf(n); printf(-欢迎查看管理员日志-n); printf(n); printf(1.创建日志!);printf(2.查看日志!);printf(3.写日志!);printf(4.删除日志n); printf(n); printf(*n); printf(请输入你的选择!n); scanf(%d,&a); return(a); struct note*creatnote(void)/*创建日志链表函数 struct note*head1,*p1,*p2; int i; char c=y; head1=

6、(struct note*)malloc(sizeof(struct note);/*创建头结点 head1-next=NULL; p1=head1; show1; for(i=0;c=y;)/*输入信息 system(cls); p2=(struct note*)malloc(sizeof(struct note); printf(输入第%d条信息:n,+i); scanf(%d,&p2-ordernum);fflush(stdin); gets(p2-notes);fflush(stdin); scanf(%d,&p2-year); scanf(%d,&p2-month); scanf(%

7、d,&p2-day); p1-next=p2; p1=p2; printf(还要输入信息吗,输入(y or n?)n); c=getch; fflush(stdin); system(cls); p1-next=NULL; return(head1); void savenote(struct note*head1)/*保存日志文件 struct note*p2; FILE*fp; if(fp=fopen(f:/2.txt,wt)=NULL) printf(写文件出错,按任意键退出!); getch; exit(1); for(p2=head1-next;p2!=NULL;p2=p2-next

8、) fprintf(fp,%dt%sttt%d%d%dn,p2-ordernum,p2-notes,p2-year,p2-month,p2-day); getch; fclose(fp); struct note*readnote(void)/从日志中文件读取出来 struct note*head1,*p1,*p2; FILE*fp; if(fp=fopen(f:/2.txt,rt)=NULL) printf(读取信息错误!,按任意键退出!); getch; exit(1); head1=(struct note*)malloc(sizeof(struct note); head1-next=

9、NULL; p1=head1; while(!feof(fp) p2=(struct note*)malloc(sizeof(struct note); fscanf(fp,%dt%sttt%d%d%dn,&p2-ordernum,p2-notes,&p2-year,&p2-month,&p2-day); p1-next=p2; p1=p2; p1-next=NULL; fclose(fp); return(head1); void readoutnote(void)/*从磁盘中读取信息显示在屏幕上 struct note*head1,*p1,*p2; FILE*fp; if(fp=fopen

10、(f:/2.txt,rt)=NULL) printf(读取信息错误!,按任意键退出!); getch; exit(1); head1=(struct note*)malloc(sizeof(struct note); head1-next=NULL; p1=head1; printf(序列号t事件ttttt日期n); while(!feof(fp) p2=(struct note*)malloc(sizeof(struct note); fscanf(fp,%dt%sttttt%d%d%dn,&p2-ordernum,p2-notes,&p2-year,&p2-month,&p2-day);

11、printf(n); printf(%dt%stt%d%d%dn,p2-ordernum,p2-notes,p2-year,p2-month,p2-day); printf(n); p1-next=p2; p1=p2; p1-next=NULL; fclose(fp); int searchnote(struct note*head1)/*日志信息查询 int a=0; struct note*p1,*p2; p1=head1; printf(请你输入你想要查询的事件号!n);fflush(stdin); scanf(%d,&orn);fflush(stdin); while(p1!=NULL

12、) if(p1-ordernum=orn) printf(查询成功!找到该信息:n); printf(序列号t实际事件ttt日期n); printf(%dt%sttt%d%d%dn,p1-ordernum,p1-notes,p1-year,p1-month,p1-day); a=1; return a; p2=p1; head1=p1-next; p1=head1; if(p2-ordernum!=orn) printf(对不起!序列号错误!找不到该信息!n); return a; return a; int addnote(void)/*日志信息添加 struct note*p,*p1,*h

13、ead1; head1=readnote; p=(struct note*)malloc(sizeof(struct note); printf(输入信息:n); printf(序列号t实际事件t日期n); scanf(%d,&p-ordernum);fflush(stdin); gets(p-notes);fflush(stdin); scanf(%d,&p-year); scanf(%d,&p-month); scanf(%d,&p-day); p1=head1; while(p1-next!=NULL) p1=p1-next; p1-next=p; p-next=NULL; p1=p;

14、savenote(head1); readoutnote; return(1); int deleteinfonote(void)/*日志信息删除 char c; int a; struct note*head1,*p1,*p2; head1=readnote; a=searchnote(head1); p1=head1-next; p2=head1; if(p1=NULL)return 0; if(a) printf(您要删除此条信息吗?n); printf(确定请按y键,取消请按n键!(y or n?)n); scanf(%c,&c); if(c=y)/*删除结点 while(p1!=NU

15、LL) if(p1-ordernum=orn) p2-next=p1-next; free(p1); savenote(head1); readoutnote; return 1; p2=p1; p1=p1-next; return 0; int print1(void)/*登陆菜单打印 printf(n); printf(n); printf(n); printf(t*欢迎登陆西邮学生宿舍信息管理系统!*n); printf(t*班级:计科0803!*n); printf(t*作者:高朋辉!*n); printf(n); printf(n); printf(n); printf(|*|n);

16、 printf(tt|1注册:n); printf(tt|2登陆:n); printf(tt|3退出:n); printf(|*|n); printf(请按序号输入你的选择:n); scanf(%d,&m); return(m); int login(void)/*登陆程序 int flag=1,str1,str2,time=0; int i,n=0; char ch=0; FILE*fp; while(flag) switch(m) case 1:printf(n); printf(*); printf(n); printf(!注册小提示:用户名和密码不得超过15个字符!n); printf

17、(n); fp=fopen(f:/password.txt,wt); if(fp=NULL) printf(对不起,此文件打不开:n); getch; exit(1); printf(请输入你的用户名:n); fflush(stdin); gets(user.username); fflush(stdin); printf(请你输入密码:n); ch=getch; i=0; while(ch!=r) user.passwordi=ch; printf(*); if(ch=8) printf(bbbb); i-; else i+; ch=getch; fflush(stdin); user.pa

18、sswordi=message; fprintf(fp,%sn%sn,user.username,user.password); fclose(fp); flag=0,n=1;printf(n);printf(注册成功!n); system(cls); break; case 2:fp=fopen(f:/password.txt,rt); if(fp=NULL) printf(对不起,此文件打不开:n); getch; exit(1); fscanf(fp,%sn%sn,user.username,user.password); fclose(fp); printf(请输入你的用户名:n);

19、fflush(stdin); gets(t.username); fflush(stdin); printf(请你输入密码:n); ch=getch; i=0; while(ch!=r) t.passwordi=ch; printf(*); if(ch=8) printf(bbbb); i-; else i+; ch=getch; fflush(stdin); t.passwordi=0; str1=strcmp(t.username,user.username); str2=strcmp(t.password,user.password); if(str1=0&str2=0) system(

20、cls); printf(成功登录!n); return(1); else printf(n登录失败,请重新登录!n); time+; if(time=3)/登陆次数超过三次自动退出 printf(你超过登陆次数,对不起!); exit(1); break; case 3:exit(1);break; print1; flag=1; if(n) switch(m) case 1:printf(你已经注册,请你登陆!n); break; case 2: while(flag) fp=fopen(f:/password.txt,rt); if(fp=NULL) printf(对不起,此文件打不开:

21、n); getch; exit(1); fscanf(fp,%sn%sn,user.username,user.password); fclose(fp); printf(请输入你的用户名:n); fflush(stdin); gets(t.username); fflush(stdin); printf(请你输入密码:n); ch=getch; for(i=0;ch!=r;i+) t.passwordi=ch; printf(*); if(ch=8) printf(bbbb); ch=getch; fflush(stdin); t.passwordi=0; str1=strcmp(t.use

22、rname,user.username); str2=strcmp(t.password,user.password); if(str1=0&str2=0) return(1); else printf(登录失败!n); flag=0; break; case 3:exit(1); return(0); struct node*creat/*创建链表 struct node*head,*p1,*p2; int i; char c=y; head=(struct node*)malloc(sizeof(struct node);/*创建头结点 head-next=NULL; p1=head; f

23、or(i=0;c=y;)/*创建信息小提示 system(cls); p2=(struct node*)malloc(sizeof(struct node); printf(输入第%d个人的信息:n,+i);/输入学生信息 printf(姓名t班级tt性别t年龄t学号t楼栋号t宿舍号n);fflush(stdin); gets(p2-name); fflush(stdin); gets(p2-Class); fflush(stdin); scanf(%c,&p2-sex); for(;p2-sex!=f&p2-sex!=m;) printf(性别输入有误,你必须正确输入f或者m!n); ffl

24、ush(stdin); scanf(%c,&p2-sex); fflush(stdin); scanf(%d,&p2-age); while(p2-age 16|p2-age 30) printf(你输入的年龄段不在16-30之间,请重新输入!n); scanf(%d,&p2-age); scanf(%ld,&p2-stunum); while(p2-stunum 100000|p2-stunum=1000000) printf(你输入的学号不是六位数,请重新输入!n); scanf(%ld,&p2-stunum); scanf(%d,&p2-dornum); while(p2-dornum

25、16|p2-dornum 1) printf(你输入的公寓号不在1-16之间,请重新输入!n); scanf(%d,&p2-dornum); scanf(%d,&p2-roomnum); p1-next=p2; p1=p2; printf(还要输入学生信息吗,输入(y or n?)n); c=getch; fflush(stdin); system(cls); p1-next=NULL; return(head); void save(struct node*head)/*保存文件 struct node*p2; FILE*fp; if(fp=fopen(f:/1.txt,wt)=NULL)

26、printf(写文件出错,按任意键退出!); getch; exit(1); for(p2=head-next;p2!=NULL;p2=p2-next) fprintf(fp,%st%st%ct%dt%dt%dt%dn, p2-name,p2-Class,p2-sex,p2-age,p2-stunum,p2-dornum,p2-roomnum); getch; fclose(fp); void show(void)/*菜单显示 printf(n); printf($欢迎进入学生宿舍信息管理系统!$n); printf(n); printf(#宿舍是我家,爱护靠大家#n); printf(n);

27、 printf(|*|n); printf(|n); printf(|1.信息显示); printf(t2.信息查询); printf(t3.信息删除|n); printf(|n); printf(|4.信息创建); printf(t5.信息修改); printf(t6.信息统计|n); printf(|n); printf(|7.信息添加); printf(t8.管理员日志); printf(9.退出系统|n); printf(|n); printf(|*|n); printf(请输入你的选择的信息处理方式的序号!n); void show1(void) printf(*n); printf

28、(!创建信息小提示:n); printf(n); printf(n); printf(1.输入时性别为f或者m!其他均认为是错误操作!n); printf(n); printf(2.输入年龄时注意年龄在16-30之间,其他均认为是错误操作!n); printf(n); printf(3.学生学号均为六位数字,如果学号少于或大于六位数字,系统认为此操作为非法操作!n); printf(n); printf(4.公寓号须在1-16之间,其他数字均认为是错误操作!n); printf(n); printf(5.因我校公寓楼为五层式建筑结构,故宿舍号在下列范围内,其他区间均认为是非法操作:n); pr

29、intf(n); printf(一楼101-150t二楼201-250t三楼301-350n); printf(n); printf(四楼401-450t五楼501-550n); printf(n); printf(n); printf(*n); struct node*read1(void) struct node*head,*p1,*p2; FILE*fp; if(fp=fopen(f:/1.txt,rt)=NULL) printf(读取信息错误!,按任意键退出!); getch; exit(1); head=(struct node*)malloc(sizeof(struct node)

30、; head-next=NULL; p1=head; while(!feof(fp) p2=(struct node*)malloc(sizeof(struct node); fscanf(fp,%st%st%ct%dt%dt%dt%dn, p2-name,p2-Class,&p2-sex,&p2-age,&p2-stunum,&p2-dornum,&p2-roomnum); p1-next=p2; p1=p2; p1-next=NULL; fclose(fp); return(head); void readout(void)/*从磁盘中读取信息显示在屏幕上 struct node*head

31、,*p1,*p2; FILE*fp; if(fp=fopen(f:/1.txt,rt)=NULL) printf(读取信息错误!,按任意键退出!); getch; exit(1); head=(struct node*)malloc(sizeof(struct node); head-next=NULL; p1=head; printf(n); printf(*$*n); printf(n); printf(姓名t班级tt性别t年龄t学号t楼栋号t宿舍号n); printf(n); while(!feof(fp) p2=(struct node*)malloc(sizeof(struct no

32、de); fscanf(fp,%st%st%ct%dt%dt%dt%dn,p2-name,p2-Class,&p2-sex,&p2-age,&p2-stunum,&p2-dornum,&p2-roomnum); printf(%st%st%ct%dt%dt%dt%dn,p2-name,p2-Class,p2-sex,p2-age,p2-stunum,p2-dornum,p2-roomnum); printf(n); p1-next=p2; p1=p2; p1-next=NULL;printf(n); printf(*$*n); printf(n); fclose(fp); void choos

33、e(int decision)/管理菜单选择 struct node*head; struct note*head1; int a=0; int choice; char c1; char ch; char c2=y; head=NULL; switch(decision) case 1:system(cls); printf(你选择了显示功能!*n); printf(n); readout;break; case 2:system(cls); head=read1; printf(你选择了查询功能!*n); printf(n); a=search(head); break; case 3:s

34、ystem(cls); printf(你选择了删除功能!*n); printf(n); a=deleteinfo; if(a) printf(删除成功!); break; case 4:system(cls); printf(你选择了创建功能!*n); printf(n); printf(该功能慎用!若确定使用该功能,所有信息清零!*n); printf(n); printf(确定y取消n?n); fflush(stdin); scanf(%c,&ch); system(cls); printf(n); if(ch=y) show1; getch; head=creat; save(head)

35、; break; case 5:system(cls); printf(你选择了修改功能!*n); printf(n); a=modify; if(a) printf(修改成功!); break; case 6:system(cls); printf(你选择了统计功能!*n); printf(n); head=read1; total(head);break; case 7:system(cls); printf(你选择了添加功能!*n); printf(n); a=add; if(a) printf(添加成功!); break; case 8:system(cls); while(c2=y)

36、 choice=printnote; switch(choice) case 1:system(cls); printf(该功能慎用!若确定使用该功能,所有日志清零!*n); printf(n); printf(确定y取消n?n); fflush(stdin); scanf(%c,&c1); if(c1=y) printf(你选择了创建日志功能!*n); printf(n); head1=creatnote; savenote(head1); case 2:system(cls); printf(你选择了查看日志功能!*n); printf(n); readoutnote;break; cas

37、e 3:system(cls); printf(你选择了写日志功能!*n); printf(n); a=addnote; if(a) printf(写日志成功!); break; case 4:system(cls); printf(你选择了删除日志功能!*n); printf(n); a=deleteinfonote; if(a) printf(删除成功!); break; printf(n); printf(!还需要其它操作吗?(y or n)n); printf(n); fflush(stdin); scanf(%c,&c2); system(cls); break; case 9:ex

38、it(1); default:system(cls); printf(!输入错误选择!n);system(cls); int search(struct node*head)/*信息查询 int a=0; struct node*p1,*p2; p1=head; printf(请你输入你想要查询的学生学号!n);fflush(stdin); scanf(%d,&num);fflush(stdin); while(p1!=NULL) if(p1-stunum=num) printf(查询成功!找到该学生!信息如下:n); printf(姓名t班级tt性别t年龄t学号t楼栋号t宿舍号n); pri

39、ntf(%st%st%ct%dt%dt%dt%dn,p1-name,p1-Class,p1-sex,p1-age,p1-stunum,p1-dornum,p1-roomnum); a=1; return a; p2=p1; head=p1-next; p1=head; if(p2-stunum!=num) printf(对不起!查询失败!找不到该学生的信息!n); printf(n); return a; return a; int deleteinfo(void)/*信息删除 char c; int a; struct node*head,*p1,*p2; head=read1; a=sea

40、rch(head); p1=head-next; p2=head; if(p1=NULL) return 0; if(a) printf(您要删除此学生的所有信息吗?n); printf(确定请按y键,取消请按n键!(y or n?)n); scanf(%c,&c); if(c=y)/*删除结点 while(p1!=NULL) if(p1-stunum=num) p2-next=p1-next; free(p1); save(head); readout; return 1; p2=p1; p1=p1-next; return 0; int add(void)/*信息添加 struct nod

41、e*p,*p1,*head; head=read1; p=(struct node*)malloc(sizeof(struct node); fflush(stdin); gets(p-name); fflush(stdin); gets(p-Class); fflush(stdin); scanf(%c,&p-sex); for(;p-sex!=f&p-sex!=m;) printf(性别输入有误,你必须正确输入f或者m!n); fflush(stdin); scanf(%c,&p-sex); fflush(stdin); scanf(%d,&p-age); while(p-age 16|p

42、-age 30) printf(你输入的年龄段不在16-30之间,请重新输入!n); scanf(%d,&p-age); scanf(%ld,&p-stunum); while(p-stunum 100000|p-stunum=1000000) printf(你输入的学号不是六位数,请重新输入!n); scanf(%ld,&p-stunum); scanf(%d,&p-dornum); while(p-dornum 16|p-dornum 1) printf(你输入的公寓号不在1-16之间,请重新输入!n); scanf(%d,&p-dornum); scanf(%d,&p-roomnum); p1=head; while(p1-next!=NULL) p1=p1-next; p1-next=p; p-next=NULL; p1=p; save(head);readout; return(1); int modify/*信息修改 int a; char x; char str30; char Class130; struct node*p1,*head,*p2;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号