宿舍管理系统c语言
学生宿舍管理系统c程序
学生宿舍管理系统c程序
学生宿舍管理系统C程序的设计与实现
随着学校规模的不断扩大,学生宿舍管理面临着越来越多的挑战。
传统的手工管理方式已经无法满足现代化教学的需求。
因此,设计一款高效、便捷的学生宿舍管理系统变得至关重要。
本文将介绍一个基于C语言的学生宿舍管理系统,并详细阐述其设计与实现过程。
学生宿舍管理系统的功能主要包括:学生信息管理、宿舍信息管理、宿舍入住管理、宿舍退房管理以及宿舍报修管理等。
为了实现这些功能,我们设计了以下几个模块:
1、学生信息管理模块:该模块主要用于维护学生信息,包括姓名、学号、性别、年龄、联系方式等。
通过输入学生信息,可以快速查询和更新学生的基本信息。
2、宿舍信息管理模块:该模块主要用于维护宿舍信息,包括宿舍号、房间号、住宿人数等。
通过输入宿舍信息,可以快速查询和更新宿舍的基本情况。
3、宿舍入住管理模块:该模块主要用于管理学生的入住情况,包括入住时间、入住原因等。
通过输入入住信息,可以实时掌握宿舍的入住情况。
4、宿舍退房管理模块:该模块主要用于管理学生的退房情况,包括
退房时间、退房原因等。
通过输入退房信息,可以实时掌握宿舍的退房情况。
5、宿舍报修管理模块:该模块主要用于管理宿舍的报修情况,包括报修时间、报修内容、维修进度等。
通过输入报修信息,可以及时了解宿舍的维修情况。
以下是基于以上设计的学生宿舍管理系统的C程序代码实现:。
学生宿舍管理系统设计c语言
学生宿舍管理系统设计c语言学生宿舍管理系统是一个有着多种功能的系统,它主要负责管理宿舍数据、学生数据、宿舍水电费用、宿舍安全、学生违纪以及宿舍管理员的工作等。
一个合理运行的宿舍管理系统可以使学生的宿舍生活更加安全、舒适、方便。
下面我将详细阐述如何设计一个基于C语言的学生宿舍管理系统。
1.需求分析首先需要进行需求分析,明确系统应该能够执行哪些功能。
包括宿舍的数据管理,包括了宿舍编号、宿舍地址、宿舍费用等;学生的数据管理,包括了学生姓名、学号、性别、联系方式等;宿舍安全,包括了监控系统、入宿控制、防火安全等;学生管理,包括了违纪记录的管理以及学生信息的管理等。
2.设计模块针对这些功能,我们需要设计相应的模块。
首先是数据管理模块,这个模块需要包括宿舍数据和学生数据两个类。
宿舍数据类可以包含如下内容:- 宿舍编号- 宿舍地址- 宿舍费用学生数据类可以包含如下内容:- 学号- 姓名- 性别- 联系方式接下来是安全模块,这个模块需要实现入宿控制、防火安全等功能,还应该有监控系统。
违纪管理模块应该能够记录学生的各种违纪行为,例如抽烟、喝酒、打架等,这个模块需要有一个记录表格。
最后是管理员模块,这个模块可以进行学生宿舍的分配、学生信息维护、违纪行为记录等管理工作。
3.实现代码在C语言中,我们可以使用结构体来实现上述模块。
例如宿舍数据类的代码可以写成:struct dormitory{char dorm_id[10];char dorm_address[30];float dorm_fee;};学生数据类的代码可以写成:struct student{char name[20];char id[10];char sex[10];char phone[20];};其他模块的代码同样可以类似地实现。
4.测试与完善在代码实现结束后,我们需要进行测试和完善。
测试可以先按照设计的需求,输入相应的数据来验证系统是否符合要求。
在测试中,我们需要注意各种输入可能引发的异常情况,例如空数据、重复数据等。
宿舍管理系统 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*readnote(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 print2(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//*学生宿舍信息的结构体创建{char name[30];//*数据域char Class[30];char sex;int age;long int stunum;int dornum;int roomnum;struct node*next;//*指针域};struct user//*登陆信息结构体创建{char username[15],password[15];}user,t;struct note//日志结构体{int ordernum;char notes[80];int year;int month;int day;struct note*next;};int printnote(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=(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("%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)fprintf(fp,"%d\t%s\t\t\t%d%d%d\n",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=NULL;p1=head1;while(!feof(fp)){p2=(struct note*)malloc(sizeof(struct note));fscanf(fp,"%d\t%s\t\t\t%d%d%d\n",&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("f:/2.txt","rt"))==NULL){printf("读取信息错误!,按任意键退出!");getch();exit(1);}head1=(struct note*)malloc(sizeof(struct note));head1-next=NULL;p1=head1;printf("序列号\t事件\t\t\t\t\t日期\n");while(!feof(fp)){p2=(struct note*)malloc(sizeof(struct note));fscanf(fp,"%d\t%s\t\t\t\t\t%d%d%d\n",&p2-ordernum,p2-notes,&p2-year,&p2-month,&p2-day);printf("\n");printf("%d\t%s\t\t%d%d%d\n",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){if(p1-ordernum==orn){printf("★查询成功!找到该信息:\n");printf("序列号\t实际事件\t\t\t日期\n");printf("%d\t%s\t\t\t%d%d%d\n",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,*head1;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;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!=NULL){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");printf("\t\t|◆1注册:\n");printf("\t\t|◆2登陆:\n");printf("\t\t|◆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("\n");fp=fopen("f:/password.txt","wt");if(fp==NULL){printf("★对不起,此文件打不开:\n");getch();exit(1);}printf("★请输入你的用户名:\n");fflush(stdin);gets(ername);fflush(stdin);printf("★请你输入密码:\n");ch=getch();i=0;while(ch!='\r'){user.password[i]=ch;printf("*");if(ch==8){printf("\b\b\b\b");i--;}else i++;ch=getch();fflush(stdin);}user.password[i]='[message]';fprintf(fp,"%s\n%s\n",ername,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,"%s\n%s\n",ername,user.password);fclose(fp);printf("★请输入你的用户名:\n");fflush(stdin);gets(ername);fflush(stdin);printf("★请你输入密码:\n");ch=getch();i=0;while(ch!='\r'){t.password[i]=ch;printf("*");if(ch==8){printf("\b\b\b\b");i--;}else i++;ch=getch();fflush(stdin);}t.password[i]=0;str1=strcmp(ername,ername);str2=strcmp(t.password,user.password);if(str1==0&&str2==0){system("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("对不起,此文件打不开:\n");getch();exit(1);}fscanf(fp,"%s\n%s\n",ername,user.password);fclose(fp);printf("★请输入你的用户名:\n");fflush(stdin);gets(ername);fflush(stdin);printf("★请你输入密码:\n");ch=getch();for(i=0;ch!='\r';i++){t.password[i]=ch;printf("*");if(ch==8)printf("\b\b\b\b");ch=getch();fflush(stdin);}t.password[i]=0;str1=strcmp(ername,ername);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;for(i=0;c=='y';)//*创建信息小提示{system("cls");p2=(struct node*)malloc(sizeof(struct node));printf("★输入第%d个人的信息:\n",++i);//输入学生信息printf("姓名\t班级\t\t性别\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");fflush(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 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){printf("写文件出错,按任意键退出!");getch();exit(1);}for(p2=head-next;p2!=NULL;p2=p2-next)fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%d\t%d\n",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");printf("|*|\n");printf("||\n");printf("|▲1.信息显示");printf("\t▲2.信息查询");printf("\t▲3.信息删除|\n");printf("||\n");printf("|▲4.信息创建");printf("\t▲5.信息修改");printf("\t▲6.信息统计|\n");printf("||\n");printf("|▲7.信息添加");printf("\t▲8.管理员日志");printf("▲9.退出系统|\n");printf("||\n");printf("|*|\n");printf("请输入你的选择的信息处理方式的序号!\n");}void show1(void){printf("*\n");printf("!创建信息小提示:\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");printf("\n");printf("▲一楼101-150\t二楼201-250\t三楼301-350\n");printf("\n");printf("▲四楼401-450\t五楼501-550\n");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));head-next=NULL;p1=head;while(!feof(fp)){p2=(struct node*)malloc(sizeof(struct node));fscanf(fp,"%s\t%s\t%c\t%d\t%d\t%d\t%d\n",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,*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班级\t\t性别\t年龄\t学号\t楼栋号\t宿舍号\n");printf("\n");while(!feof(fp)){p2=(struct node*)malloc(sizeof(struct node));fscanf(fp,"%s\t%s\t%c\t%d\t%d\t%d\t%d\n",p2-name,p2-Class,&p2-sex,&p2-age,&p2-stunum,&p2-dornum,&p2-roomnum);printf("%s\t%s\t%c\t%d\t%d\t%d\t%d\n",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 choose(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:system("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);}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'){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");readoutnote();break;case 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");fflush(stdin);scanf("%c",&c2);system("cls");}break;case 9:exit(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班级\t\t性别\t年龄\t学号\t楼栋号\t宿舍号\n");printf("%s\t%s\t%c\t%d\t%d\t%d\t%d\n",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=search(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 node*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-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 str[30];char Class1[30];struct node*p1,*head,*p2;head=read1();a=search(head);p1=head;p2=p1;if(a){while(p1!=NULL){if(p1-stunum==num){printf("★修改姓名?(y or n)?\n");fflush(stdin);scanf("%c",&x);{if(x=='y'){printf("★输入新的姓名!\n");fflush(stdin);gets(str);strcpy(p1-name,str);fflush(stdin);}}x=0;printf("★修改班级?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入新的班级!\n");fflush(stdin);gets(Class1);strcpy(p1-Class,Class1);}x=0;printf("★修改性别?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入你修改后的性别!\n");fflush(stdin);scanf("%c",&p1-sex);}x=0;printf("★修改年龄?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入新的年龄!\n");fflush(stdin);scanf("%d",&p1-age);}x=0;printf("★修改学号?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入新的学号!\n");fflush(stdin);scanf("%d",&p1-stunum);}x=0;printf("★修改楼栋号?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入新的楼栋号!\n");fflush(stdin);scanf("%d",&p1-dornum);}x=0;fflush(stdin);printf("★修改宿舍号?(y or n)?\n");fflush(stdin);scanf("%c",&x);if(x=='y'){printf("★输入新的宿舍号!\n");fflush(stdin);scanf("%d",&p1-roomnum);}}p2=p1-next;p1=p2;}system("cls");save(head);readout();return(1);}return(0);}void total(struct node*head)//*信息统计{int i=0;int boyp=0;int girlp=0;int over20=0;int blow20=0;struct node*p1;printf("---统计信息如下---!\n");for(p1=head-next;p1!=NULL;p1=p1-next) i++;printf("◆共有学生%d个人!\n",i);for(p1=head-next;p1!=NULL;p1=p1-next) {if(p1-sex=='f')girlp++;if(p1-sex=='m')boyp++;if(p1-age=20)blow20++;if(p1-age 20)over20++;}。
寝室管理系统c语言
课程设计题目一、程序设计目标建立数据文件,数据文件按关键字包含(姓名、学号、房号),本程序采用冒泡排序发排序,实现按照姓名首字母排序,学号排序,以及寝室号排序,因为查找时涉及相同姓名以及相同寝室号的情况,故查找采用的是顺序查找法,考虑到方便管理,故以一栋楼为对象,人数上限设为400,可设立外部程序调用每栋楼的数据,即可实现对全院是寝室管理。
姓名字符长度不能超过20,学号要12位数字,寝室号格式为X+5位数字,未按照规定输入时会自提示出错,然后退出程序,菜单选项分别有:0,插入学员插入学员能在指定的寝室中插入,输入寝室号,规定每个寝室住4人,如果该寝室人数已满,则会显示:该寝室人数已满!插入成功会提醒:恭喜你已是该寝室成员。
该项功能将有助于小规模调寝室。
1,重新输入学员重新输入学员。
功能是格式化原来记录,重新输入新成员,用于大规模的寝室调动。
2,删除记录删除记录是输入学号进行删除,因为考虑到按照姓名删除会出现相同姓名的情况,故只设这种删除方式。
3,按照姓名查找输入姓名后能查找该姓名的人的姓名,学号以及房号,相同姓名的人也会一起找到,并显示出来。
4,按照学号查找输入学号,能准确快速的找到你要查找的记录。
一旦找到记录,就会即刻跳出循环,减少时间。
5,按照寝室号查找输入寝室号,会显示该寝室里住的每个成员。
6,按照姓名排序按照姓名的首字母排序。
从a到z。
7,按照学号排序按照学号的大小排序。
从小到大。
8,按照寝室号排序按照寝室号码的顺序排序,从小到大。
9,显示记录打印出所有记录。
10,保存记录保存记录到程序目录下的record.txt文件中。
11,加载记录自动读取程序目录下的record.txt文件。
12,退出退出整个程序。
1、问题描述建立结构体,结构体元素有:姓名,学号,寝室号。
用switch语句和循环语句实现程序的反复使用,用了结构体,排序,折半查找,问题关键在用折半查找法找出名字相同的人,寝室号相同的多个人,文件的保存和读取。
宿舍管理系统c语言源代码
宿舍管理系统c语言源代码很荣幸能为大家提供一份宿舍管理系统的c语言源代码。
这个宿舍管理系统基于c语言编写,适用于大学宿舍管理,并比较易于使用。
下面会详细解释其代码实现以及相关功能。
首先,我们来看看该程序的主要功能。
它可以实现以下功能:添加学生信息、删除学生信息、查找学生信息、修改学生信息、查看所有学生信息、保存学生信息。
同时,它还具有输入密码、退出等功能。
来看下面的代码实现说明:首先,我们需要定义一个结构体来存储学生信息。
结构体包括以下属性:学号、姓名、性别、年龄、所在学院、所在宿舍楼、所在房间号。
typedef struct student{char num[10]; // 学号char name[10]; // 姓名char sex[10]; // 性别int age; // 年龄char department[20];// 所在学院char dormitory[20]; // 所在宿舍楼char roomnum[10]; // 所在房间号}StuInfo;接下来,我们需要定义一些函数来实现各种功能。
首先,我们需要一个函数来输入学生信息。
void InputInfo(StuInfo *p)该函数的作用是输入学生信息,参数为指向结构体StuInfo的指针。
在函数中,我们可以使用scanf函数来从控制台输入学生的各项信息。
接下来,我们需要一个函数来添加学生信息。
void AddInfo(StuInfo *p, int *n)该函数的作用是添加学生信息,参数包括指向结构体StuInfo的指针以及学生数量的指针。
在函数中,我们可以通过遍历数组来找到空位置,然后调用输入信息的函数来输入学生信息。
接下来,我们需要一个函数来删除学生信息。
void DelInfo(StuInfo *p, int *n)该函数的作用是删除学生信息,参数包括指向结构体StuInfo的指针以及学生数量的指针。
在函数中,我们可以先输入学生的学号,然后通过遍历数组来找到该学生,最后将该位置清空。
c语言-学生宿舍管理系统(难度系数:3级)
C语言:学生宿舍管理系统(难度系数:3级)(附加清屏操作)设计一个学生宿舍管理程序。
该程序应该具有以下功能:(1)录入学生宿舍信息;(2)修改、删除学生宿舍信息;(3)统计当前未住学生宿舍的个数并显示宿舍编号;(4)统计当前空闲的男生、女生床位数;(5)按宿舍编号由小到大显示已住学生的宿舍信息;(6)分别显示男生、女生有空床位的宿舍信息;(7)按宿舍编号、可住人数、空床数、宿舍性质(男生还是女生)等信息进行查询,若查询信息不存在,输出没找到的信息。
题目要求:(1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性;(2)宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等;(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰;(4)将所有宿舍信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理;(5)应保证测试用例测试程序的各种边缘情况。
输入要求:应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需要,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
输出要求:(1)应用程序运行后,在屏幕上显示一个菜单。
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
代码:#include"stdio.h"#include"stdlib.h"#include"conio.h"#include"process.h"#define max 2 //最大容量//#define k 6 //每个宿舍最多可住人数typedef struct node{int num;int ke;int empty;int yi;int sex; //1-女0-男//struct node *next;}doc; //宿舍信息应该包括宿舍编号、可住人数、空床数、宿舍性质等; //int q=0; //已入住的房间数-1doc dcm[max];void a() //1.录入学生宿舍信息{int q;printf("\n\n\t现在执行录入学生宿舍信息\n");for(q=0;q<max;q++)// printf("请输入要录入的宿舍个数:\n");// scanf("%d",&j);// while(j<=0)// {// printf("输入错误!请重新输入:");// scanf("%d",&j);// }// else// while(j>0){printf("请输入该宿舍的宿舍号:\n");scanf("%d",&dcm[q].num);printf("请输入该宿舍的最大住人数:\n");scanf("%d",&dcm[q].ke);printf("请输入该宿舍的已住人数:\n");scanf("%d",&dcm[q].yi);while(dcm[q].yi>dcm[q].ke){printf("输入错误!已住人数大于最大入住人数!\n请重新输入: "); scanf("%d",&dcm[q].yi);}dcm[q].empty=dcm[q].ke-dcm[q].yi;printf("请输入宿舍性质(0代表男宿舍,1代表女宿舍):\n"); scanf("%d",&dcm[q].sex);while(dcm[q].sex!=1&&dcm[q].sex!=0){printf("非法输入宿舍性质!请重新输入!\n");scanf("%d",&dcm[q].sex);}// q++;// j--;}}void xianshi()//显示所有宿舍信息{for(int j=0;j<max;j++){printf("宿舍号为:%d 可住人数为:%d 空床数为%d ",dcm[j].num,dcm[j].ke,dcm[j].empty);if(dcm[j].sex==0)printf("宿舍性质:男宿舍\n");elseprintf("宿舍性质:女宿舍\n");}}void xs(int j){printf("宿舍号为:%d 可住人数:%d 空床数%d\n",dcm[j].num,dcm[j].ke,dcm[j].empty);if(dcm[j].sex==0)printf("宿舍性质:男宿舍\n");elseprintf("宿舍性质:女宿舍\n");}void b() //2.修改、删除学生宿舍信息{int j,m,h;doc k;while(1){printf("****************************************\n"); printf("*************1、修改宿舍信息************\n"); printf("*************2、删除宿舍信息************\n"); printf("*************3、退出返回顶层菜单********\n"); printf("****************************************\n"); printf("请输入对应命令:");scanf("%d",&j);printf("****************************************\n"); printf("以下为目前的宿舍信息:\n");xianshi();if(j==1){// case 1:printf("请输入要修改的宿舍的宿舍号:"); scanf("%d",&m);for(int i=0,k=0;i<max;i++){if(m==dcm[i].num)k=i+1;}if(k==0){printf("在记录中没有找到这个宿舍!\n"); continue;}printf("请输入该宿舍的最大住人数:\n"); scanf("%d",&dcm[k-1].ke);printf("请输入该宿舍的已住人数:\n"); scanf("%d",&dcm[k-1].yi);dcm[m].empty=dcm[k-1].ke-dcm[k-1].yi;printf("请输入宿舍性质(0代表男宿舍,1代表女宿舍): \n"); scanf("%d",&dcm[k-1].sex);while(dcm[k-1].sex!=1&&dcm[k-1].sex!=0){printf("非法输入宿舍性质!请重新输入!\n");scanf("%d",&dcm[k-1].sex);}printf("\t操作成功!已经修改完毕\n");break;}// break;// case 2:else if(j==2){printf("请输入要删除的宿舍号:");scanf("%d",&h);for(int i=0,k=0;i<max;i++){if(h==dcm[i].num)k=i+1;}if(k==0){printf("在记录中没有找到这个宿舍!\n"); continue;}for(i=k-1;i<max-1;i++){dcm[i]=dcm[i+1];}dcm[max-1].empty=NULL;dcm[max-1].ke=NULL;dcm[max-1].num=NULL;dcm[max-1].sex=NULL;dcm[max-1].yi=NULL;printf("\t操作成功!已经删除完毕\n");}// break;// default:else if(j==3)break;else{printf("输入错误!请重新输入。
C语言课程设计学生宿舍管理系统
模块化设计: 将系统划分为 多个模块,便 于维护和扩展
接口设计:提 供统一的接口, 便于与其他系
统集成
数据库设计: 采用关系型数 据库,便于数 据存储和ห้องสมุดไป่ตู้询
安全性考虑: 采用加密技术, 保证数据安全
用户体验:提 供友好的用户 界面,便于用
户使用
性能优化:采 用高效的算法 和数据结构, 提高系统运行
响应时间:系统处理用户请求所需的时间 吞吐量:系统在单位时间内处理的请求数量 资源利用率:系统对硬件资源的使用情况 可靠性:系统在运行过程中出现故障的概率 可扩展性:系统适应未来业务增长的能力 用户体验:用户对系统的满意度和易用性评价
提高系统响应速度:优化数据库查询和更新操作,减少数据传输时间
智能化:引入人工智能技术,实现 自动识别、自动处理等功能
安全性:加强数据加密和访问控制, 确保学生信息的安全
添加标题
添加标题
添加标题
添加标题
移动化:开发移动应用,方便学生 随时随地查询和管理宿舍信息
扩展性:支持与其他系统对接,实 现数据共享和协同工作
汇报人:
添加标题
报表管理:包括学生住宿情况报表、宿舍费用报表、 宿舍卫生检查报表等报表的生成和管理
添加标题
宿舍管理:包括宿舍分配、宿舍调整、宿舍卫生检 查等
添加标题
通知管理:包括宿舍通知、学校通知、班级通知等 通知的发布和管理
学生信息 管理:包 括学生基 本信息、 宿舍分配、 宿舍调整 等
宿舍管理: 包括宿舍 分配、宿 舍调整、 宿舍卫生 检查等
增强系统安全性:加强用户身份验证和权限管理,防止数据泄露和恶意攻击
提高用户体验:优化界面设计,简化操作流程,提高用户满意度 优化系统稳定性:加强系统监控和日志记录,及时发现和解决系统故障
c语言课程设计学生宿舍管理系统
宿舍管理系统是一种针对学生宿舍管理的信息化管理系统,它可以帮助学校、学生宿舍管理员精确、高效地管理学生宿舍的基本信息、住宿情况、违纪记录等各项管理工作。
它是学校管理的有力工具,对提高学生宿舍管理的效率和质量具有重要意义。
一、需要解决的问题(一)学生信息管理1. 宿舍管理员需要能够快速便捷地录入学生的基本信息,如尊称、性莂、芳龄、专业等,并能够进行查询、修改、删除等操作。
2. 宿舍管理员需要清晰地了解每个宿舍的学生情况,包括入住情况、空床位情况、学生离校情况等。
(二)入住管理1. 针对新生入住、学生调宿等情况,宿舍管理员需要系统化、高效地进行入住管理,包括分配床位、办理相关手续等。
2. 学生离校后,宿舍管理员需要及时更新系统信息,确保宿舍的床位情况及时准确。
(三)违纪记录管理1. 为了规范宿舍管理,宿舍管理员需要记录学生的违纪情况,如夜不归宿、打架斗殴等,并进行相应的处理。
2. 宿舍管理员需要能够查询、统计学生的违纪情况,以便于进行教育、惩戒等工作。
二、系统功能设计(一)学生信息管理1. 设计学生信息录入界面,包括尊称、性莂、芳龄、专业等信息的录入功能。
2. 设计学生信息查询界面,支持按照学号、尊称等条件进行快速查询。
3. 设计学生信息修改、删除功能,为宿舍管理员提供便捷、高效的学生信息管理工具。
(二)入住管理1. 设计入住办理界面,支持新生入住手续、学生调宿等操作。
2. 设计入住查询界面,快速了解每个宿舍的学生入住情况。
3. 设计离校处理界面,为宿舍管理员提供方便的学生离校信息处理工具。
(三)违纪记录管理1. 设计违纪记录录入界面,为宿舍管理员提供录入学生违纪情况的工具。
2. 设计违纪记录查询界面,支持按照学号、尊称等条件进行快速查询。
3. 设计违纪记录统计功能,为宿舍管理员提供违纪情况的统计分析工具。
三、系统技术实现(一)采用C语言进行系统开发,使用C语言能够充分利用系统资源,提高系统的运行效率。
C语言宿舍管理系统课设(附源码)
C语言宿舍管理系统课设项目说明本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行。
(书生)项目运行截图代码运行界面截图完整源码#include<stdio.h>#include<stdlib.h>#include<string.h>#define HEAD printf("\t|%-10s%-8s%-9s%-5s%-10s%-5s%-5s%-5s%-5s%-12s%-5s|\n","学号","姓名","专业","班级","公寓名","宿舍","床位","性别","年纪","手机号","级别")/*密码登录管理登录信息*/typedef struct EN{//存用户和密码char userName1[10];char passWorld1[10];}EN;void enter();void encryption(char passWorld[])//加密{int i;for(i=0;i<strlen(passWorld);i++){passWorld[i]+=20;}}void sign_in(char userName[],char passWorld[])//注册{FILE *fp;int flag=0;char userName1[10];char passWorld1[10];printf("\t注册(用户名密码最多9位)\n");printf("\t用户名:");fflush(stdin);gets(userName);printf("\t密码:");gets(passWorld);if((fp=fopen("enter.txt","rt"))==NULL){exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",userName1,passWorld1);if(!strcmp(userName,userName1)){printf("用户名重复\n");flag=1;break;}}fclose(fp);if(flag==1)enter();else{if((fp=fopen("enter.txt","at"))==NULL)exit(0);encryption(passWorld);//加密fprintf(fp,"%s %s\n",userName,passWorld);}fclose(fp);enter();}void alter()//删除不合法用户{FILE *fp;int n=0;EN en[1000];fp=fopen("enter.txt","rt");if(fp==NULL){printf("\t打开文件失败\n");exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",en[n].userName1,en[n].passWorld1);n++;}//printf("大小%d\n",--n);printf("\t%-8s\t%-8s\n","用户名","密码");int i;for(i=0;i<n;i++){printf("\t%-8s\t%-8s\n",en[i].userName1,en[i].passWorld1);}fclose(fp);printf("\t输入你要删除的用户名\n");printf("\t用户名:");char ch[10];printf("\t");scanf("%s",ch);for(i=0;strcmp(ch,en[i].userName1);i++){}int k=i;for(i=k;i<n-1;i++){en[i]=en[i+1];}n--;// for(i=0;i<n;i++)// {// printf("%-8s\t%-8s\n",en[i].userName1,en[i].passWorld1); // }fp=fopen("enter.txt","wt");if(fp==NULL){printf("\t打开文件失败\n");exit(0);}for(i=0;i<n;i++){fprintf(fp,"%s %s\n",en[i].userName1,en[i].passWorld1);}fclose(fp);}void enter() //登录入口{printf("\t=================================\n");printf("\t|\t登录:\t\t\t|\n");printf("\t=================================\n");FILE *fp;int i;printf("\t1.管理员\t2.登录\n");char userName[10];char passWorld[10];char userName1[10];char passWorld1[10];int choice;printf("\t");scanf("%d",&choice);int flag=0;switch(choice){case 1:{ //管理员,注册用户和删除char adm[10];printf("\t输入权限码\n");printf("\t");scanf("%s",adm);if(strcmp(adm,"12")){printf("\t权限码错误\n");enter();}printf("\t");printf("1.注册\t2.修改\n");int j;printf("\t");scanf("%d",&j);switch(j){case 1:{sign_in(userName,passWorld);break;}case 2:{int flag1=0;do{alter();flag1=0;printf("\t是否继续删除:1.是 2.否\n");printf("\t");scanf("%d",&flag1);}while(flag1==1);enter();break;}default:{break;}}break;}case 2:{ //用户登录printf("\t登录\n");printf("\t用户名:");fflush(stdin);printf("\t");gets(userName);printf("\t密码:");printf("\t");gets(passWorld);if((fp=fopen("enter.txt","rt"))==NULL){exit(0);}while(!feof(fp)){fscanf(fp,"%s %s",userName1,passWorld1);encryption(passWorld);//加密if(!strcmp(userName,userName1)&&!strcmp(passWorld,passWorld1)) {flag=1;break;}}if(flag==0){printf("\t输入用户名密码不匹配或者错误\n");enter();}printf("\t成功\n");break;}default:{printf("输入选择不符合格式\n");break;}}}/*存储数据操作数据*/typedef struct stu{ //宿舍信息char dorm[50];int dorm_num;int dorm_num_id;char id[10];char name[10];int banji;char major[20];int age;int enUniversity;char number[12];char sex[3];struct stu *next;}stu;void print(stu *head);void interface()//主界面{printf("\n\n");printf("\t---------------------------------------------------------\n");printf("\t|\t\t欢迎使用宿舍信息管理系统\t\t|\n");printf("\t---------------------------------------------------------\n");/*数据录入*/printf("\t|\t\t\t1-录入数据\t\t\t|\n");/*数据增删改查*/printf("\t|\t\t\t2-数据增加\t\t\t|\n");printf("\t|\t\t\t3-数据删除\t\t\t|\n");printf("\t|\t\t\t4-数据修改\t\t\t|\n");printf("\t|\t\t\t5-数据查询\t\t\t|\n");/*数据统计*/printf("\t|\t\t\t6-数据统计\t\t\t|\n");/*报表*/printf("\t|\t\t\t7-数据报表\t\t\t|\n");printf("\t---------------------------------------------------------\n");}int find_id(char id[],stu *head)//学号查重,重复返回0,否则1{stu *i;for(i=head->next;i!=NULL;i=i->next){if(strcmp(id,i->id)==0){printf("\t学号重复\n");return 0;}}return 1;}int find_check(stu *head,stu *p) //检查宿舍是否满员,符合返回1,不符合返回0 {//print(head); //测试//printf("进入\n");stu *i;for(i=head->next;i!=NULL;i=i->next){if(!strcmp(p->dorm,i->dorm)&&(p->dorm_num_id==i->dorm_num_id)&&(p->do rm_num==i->dorm_num)){printf("\t宿舍信息重复\n");return 0;}}return 1;}stu *creat()//创建链表{stu *head,*end,*p;char id[10];head=NULL;head=(stu*)malloc(sizeof(stu));head->next=NULL;end=head;printf("\t输入学号:");fflush(stdin);gets(id);while(strlen(id)>0){if(find_id(id,head))//学号查重,重复返回0,否则1{p=(stu*)malloc(sizeof(stu));strcpy(p->id,id);printf("\t输入姓名:");gets(p->name);printf("\t输入公寓名称:");scanf("%s",p->dorm);printf("\t输入宿舍名称:");scanf("%d",&p->dorm_num);printf("\t输入床位号:");scanf("%d",&p->dorm_num_id);if(find_check(head,p)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(p->number);printf("\t年龄:");scanf("%d",&p->age);printf("\t性别:");scanf("%s",p->sex);printf("\t专业班级:");scanf("%s %d",p->major,&p->banji);printf("\t输入入学年份:");scanf("%d",&p->enUniversity);end->next=p;end=p;p->next=NULL;}}printf("\t输入学号:");fflush(stdin);gets(id);}return head;}void print(stu *head)//链表打印输出{stu *i;for(i=head->next;i!=NULL;i=i->next){printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);}}stu *write_linked() //文件生成链表{FILE *fp;fp=fopen("student.txt","rt");stu *i;stu *head;head=NULL;head=(stu*)malloc(sizeof(stu));stu *end,*p;end=head;while(!feof(fp)){p=(stu*)malloc(sizeof(stu));fread(p,sizeof(stu),1,fp);fgetc(fp);end->next=p;end=p;p->next=NULL;}fclose(fp);return head;}void write_file(stu *head) //用链表,生成文件{FILE *fp;fp=fopen("student.txt","wt");stu *i;for(i=head->next;i!=NULL;i=i->next){fwrite(i,sizeof(stu),1,fp);if(i->next!=NULL)fputc('\n',fp);}fclose(fp);}void header()//数据表头{printf("\t---------------------------------------------------------------------------------\n");HEAD;printf("\t---------------------------------------------------------------------------------\n"); }void exchange_num(int *x,int *y)//交换int{int t=*x;*x=*y;*y=t;}void exchange_string(char a[],char b[])//交换字符串{char t[20];strcpy(t,a);strcpy(a,b);strcpy(b,t);}void exchange(stu *ec1,stu *ec2) //交换stu结构体类型{exchange_num(&ec1->age,&ec2->age);exchange_num(&ec1->banji,&ec2->banji);exchange_string(ec1->dorm,ec2->dorm);exchange_num(&ec1->dorm_num,&ec2->dorm_num);exchange_num(&ec1->dorm_num_id,&ec2->dorm_num_id);exchange_string(ec1->id,ec2->id);exchange_num(&ec1->enUniversity,&ec2->enUniversity);exchange_string(ec1->major,ec2->major);exchange_string(ec1->name,ec2->name);exchange_string(ec1->number,ec2->number);exchange_string(ec1->sex,ec2->sex);}void sort(stu *head) //根据公寓宿舍床位排序{stu *i,*j;for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(strcmp(i->dorm,j->dorm)>0){exchange(i,j);}}}for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(!strcmp(i->dorm,j->dorm)&&i->dorm_num>j->dorm_num){exchange(i,j);}}}for(i=head->next;i!=NULL;i=i->next){for(j=i->next;j!=NULL;j=j->next){if(strcmp(i->dorm,j->dorm)==0&&i->dorm_num==j->dorm_num&&i->dorm_nu m_id>j->dorm_num_id){exchange(i,j);}}}}void add(stu *head)//添加数据{stu *end;for(end=head->next;end->next!=NULL;end=end->next){}stu *p;char id[20];printf("\t输入学号:");fflush(stdin);gets(id);while(strlen(id)>0){if(find_id(id,head))//学号查重,重复返回0,否则1{p=(stu*)malloc(sizeof(stu));p->next=NULL;strcpy(p->id,id);printf("\t输入姓名:");gets(p->name);printf("\t输入公寓名称:");scanf("%s",p->dorm);printf("\t输入宿舍名称:");scanf("%d",&p->dorm_num);printf("\t输入床位号:");scanf("%d",&p->dorm_num_id);if(find_check(head,p)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(p->number);printf("\t年龄:");scanf("%d",&p->age);printf("\t性别:");scanf("%s",p->sex);printf("\t专业班级:");scanf("%s %d",p->major,&p->banji);printf("\t输入入学年份:");scanf("%d",&p->enUniversity);end->next=p;end=p;}}printf("\t输入学号:");fflush(stdin);gets(id);}printf("\t结束\n");}void dele(stu *head)//按学号删除数据{printf("\t输入你要删除的学号:");char id[20];fflush(stdin);gets(id);stu *end1;//倒数第二个stu *i;while(strlen(id)>0){for(end1=head->next;end1->next->next!=NULL;end1=end1->next){}i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){exchange(i,end1->next);free(end1->next);end1->next=NULL;sort(head);printf("\t成功\n");break;}else if(i->next==NULL){printf("\t->未找到相匹配的学号<-\n");}}printf("\t输入你要删除的学号:");gets(id);}}void modify(stu *head)//按学号修改数据{char flag[5];printf("\t输入你要修改的学号:");char id[20];char new_id[20];fflush(stdin);gets(id);stu *i;stu *k;k=(stu*)malloc(sizeof(stu));k->next=NULL;while(strlen(id)>0){i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){printf("\t是否修改学号(yes/no):") ;gets(flag);if(strcmp(flag,"yes")==0){printf("\t输入修改的学号:");gets(new_id);if(find_id(new_id,head)||strcmp(id,new_id)==0){strcpy(k->id,new_id);}else{printf("\t新学号重复");break;}}else{strcpy(k->id,i->id);}printf("\t输入姓名:");gets(k->name);printf("\t输入公寓名称:");scanf("%s",k->dorm);printf("\t输入宿舍名称:");scanf("%d",&k->dorm_num);printf("\t输入床位号:");scanf("%d",&k->dorm_num_id);if(find_check(head,k)||(!strcmp(k->dorm,i->dorm)&&i->dorm_num==k->dorm_n um&&i->dorm_num_id==k->dorm_num_id)) //检查宿舍是否满员,符合返回1,不符合返回0{printf("\t手机号:");fflush(stdin);gets(k->number);printf("\t年龄:");scanf("%d",&k->age);printf("\t性别:");scanf("%s",k->sex);printf("\t专业班级:");scanf("%s %d",k->major,&k->banji);printf("\t输入入学年份:");scanf("%d",&k->enUniversity);exchange(i,k);}}else if(i->next==NULL){printf("\t->未找到相匹配的学号<-\n");}}printf("\t输入你要修改的学号:");fflush(stdin);gets(id);}free(k);}void interface1()//数据查询子界面{printf("\t\t------------------\n");printf("\t\t|1.按学号查询|\n");printf("\t\t|2.按姓名查询|\n");printf("\t\t|3.按公寓宿舍查询|\n");printf("\t\t------------------\n");}void lookup_id(stu *head)//按学号查找{char id[20];printf("\t输入学号:");fflush(stdin);gets(id);stu *i;while(strlen(id)>0){i=head;while((i=i->next)!=NULL){if(strcmp(id,i->id)==0){header();printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);printf("\t---------------------------------------------------------------------------------\n");break;}else if(i->next==NULL){printf("\t未找到相应学号\n");}}printf("\t输入学号:");fflush(stdin);gets(id);}}void lookup_name(stu *head)//按姓名查找{char name[20];printf("\t输入姓名:");fflush(stdin);gets(name);stu *i;int flag;//判断是否找到数据,1找到,0枚找到int flag1;//判断是否输出表头,1输出,0不输出flag1=1;while(strlen(name)>0){ flag=0;i=head;while((i=i->next)!=NULL){if(strcmp(name,i->name)==0){if(flag1==1){header();flag1=0;}printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i-> name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);flag=1;}else if(i->next==NULL&&flag==0){printf("\t未找到相应姓名\n");}}printf("\t---------------------------------------------------------------------------------\n");printf("\n");printf("\t输入姓名:");fflush(stdin);gets(name);}}void lookup_dorm_num(stu *head)//按公寓宿舍查找{int num=0;char dorm[20];printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);stu *i;int flag;//判断是否找到数据,1找到,0枚找到int flag1;//判断是否输出表头,1输出,0不输出flag1=1;while(strlen(dorm)>0&&num!=0){ flag=0;i=head;while((i=i->next)!=NULL){if(num==i->dorm_num&&strcmp(dorm,i->dorm)==0){if(flag1==1){header();flag1=0;}printf("\t|%-10s%-8s%-9s%-5d%-10s%-5d%-5d%-5s%-5d%-12s%-5d|\n",i->id,i->name,i->major,i->banji,i->dorm,i->dorm_num,i->dorm_num_id,i->sex,i->age,i->numb er,i->enUniversity);flag=1;}else if(i->next==NULL&&flag==0){printf("\t未找到相应宿舍号\n");}}printf("\t---------------------------------------------------------------------------------\n");printf("\n");num=0;printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);}}void son_operation(stu *head)//查询操作选项表{printf("\t输入选项(0退出):");int choice;scanf("%d",&choice);if(choice==0){return;}switch(choice){case 1:{lookup_id(head);//按id查询break;}case 2:{lookup_name(head);//按姓名查询break;}case 3:{lookup_dorm_num(head);//按公寓宿舍查询break;}default :{printf("\t->输入格式有误<-\n");break;}}}void son_statistical()//统计操作表子目录{printf("\t\t----------------\n");printf("\t\t|1.统计总人数|\n");printf("\t\t|2.统计单个公寓|\n");printf("\t\t|3.统计公寓宿舍|\n");printf("\t\t----------------\n");}void statistical_total(stu *head)//统计总人数{stu *i;int n=0;for(i=head->next;i!=NULL;i=i->next){n++;}printf("\t->共%d人<-\n",n);}void statistical_dorm(stu *head)//统计单个公寓{int n=0;char dorm[20];printf("\t输入公寓:");fflush(stdin);gets(dorm);stu *i;while(strlen(dorm)>0){i=head;n=0;while((i=i->next)!=NULL){if(strcmp(dorm,i->dorm)==0){n++;}}printf("\t->该公寓共%d人<-\n",n);printf("\t输入公寓:");fflush(stdin);gets(dorm);}}void statistical_dorm_num(stu *head)//统计公寓宿舍{int num=0;int n;char dorm[20];printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);stu *i;while(strlen(dorm)>0&&num!=0){ n=0;i=head;while((i=i->next)!=NULL){if(num==i->dorm_num&&strcmp(dorm,i->dorm)==0){n++;}}printf("\t->该宿舍工%d人<-\n",n);num=0;printf("\t输入公寓和宿舍号:");scanf("%s %d",dorm,&num);}}void statistical_operation(stu *head) //统计操作选项表{printf("\t输入选项(0退出):");int choice;scanf("%d",&choice);if(choice==0){return;}switch(choice){case 1:{statistical_total(head);//统计总人数break;}case 2:{statistical_dorm(head);//统计单个公寓break;}case 3:{statistical_dorm_num(head);//统计公寓宿舍break;}default :{printf("\t->输入格式有误<-\n");break;}}}int main(){enter();//登录system("cls");printf("\t登陆成功\n");int choice;while(1){interface();stu *head;printf("\t输入1~7:");scanf("%d",&choice);switch(choice){case 1:{//录入信息head=creat();//创建链表//print(head);write_file(head);//写入文件break;}case 2:{//增加head=write_linked();add(head);sort(head);write_file(head);break;}case 3:{ //按学号删除head=write_linked();dele(head);write_file(head);break;}case 4:{//改按学号head=write_linked();modify(head);write_file(head);break;}case 5:{//查,按姓名,宿舍,学号interface1();//子目录head=write_linked();son_operation(head);break;}case 6:{ //统计,总人数,每个宿舍人数,一个楼人数head=write_linked();son_statistical();statistical_operation(head);//statistical_date();break;}case 7:{//报表head=write_linked();header();sort(head);print(head);printf("\t---------------------------------------------------------------------------------\n");break;}default :{//system("cls");printf("\t->输入有误,重新输入<-\n");break;}}printf("\t按任意键继续");fflush(stdin);getchar();system("cls");}}。
学生宿舍管理系统c语言报告
学生宿舍管理系统c语言报告一、引言学生宿舍管理系统是一个用于管理学生宿舍的软件系统。
它能够帮助学校方便地进行学生宿舍的分配、入住、退房、维修等管理工作。
本报告将介绍该系统的设计与实现过程,包括需求分析、系统架构、关键功能与算法等。
二、需求分析2.1 功能需求学生宿舍管理系统需要具备以下主要功能:1. 学生信息管理:包括学生基本信息、联系方式等;2. 宿舍信息管理:包括宿舍楼层、房间号、容纳人数等;3. 入住管理:学生入住、退房、换宿舍等;4. 维修管理:记录宿舍维修情况及维修进度;5. 报表生成:生成各类统计报表,如入住率、维修次数等;6. 用户权限管理:不同用户拥有不同的操作权限。
2.2 性能需求学生宿舍管理系统需要满足以下性能需求:1. 数据处理快速:能够快速响应用户操作,保持系统的高可用性;2. 数据存储安全:对于敏感信息需要进行加密保存,确保数据安全性;3. 界面友好易用:操作界面简洁明了,用户易于操作;4. 扩展性强:系统可以方便地扩展功能,满足学校不同的管理需求。
三、系统架构学生宿舍管理系统采用三层架构进行开发,包括表示层、业务逻辑层和数据访问层。
3.1 表示层表示层是用户与系统交互的界面,这里采用命令行界面来展示系统功能。
用户可以通过输入指令来执行相应的操作,系统会返回相应的结果。
3.2 业务逻辑层业务逻辑层负责处理系统的业务逻辑,将用户的操作请求转发给数据访问层,并对返回结果进行处理后返回给表示层。
同时也包括系统的核心算法的实现。
3.3 数据访问层数据访问层负责与数据库进行交互,处理数据库的读写操作。
它封装了对数据库的操作方法,并提供给业务逻辑层使用。
四、关键功能与算法4.1 学生分配算法学生分配算法是学生宿舍管理系统的核心功能之一。
该算法需考虑学生的性别、年级、特殊需求等因素,确保学生宿舍分配的公平性和合理性。
算法步骤如下:1. 根据学生的性别和年级筛选出符合条件的宿舍楼;2. 根据学生的特殊需求,进一步筛选符合条件的房间;3. 若找到符合条件的房间,则将学生分配到该房间,更新宿舍数量信息;4. 若未找到符合条件的房间,提示学生重新选择或申请特殊宿舍。
学生宿舍管理软件C语言源代码(完整版)
getchar();
printf(请输入学生班级(30个字符以内):”);
scanf("%s",S[flag].S_class);
getchar();
printf("请输入学生的学号(15个字符以内):");
scanf( "%s" ,S[flag].S_number);
printf(请输入学生电话号码:”;
scanf("%s",&S[flag]. S_phone);
getchar();
dirty=1;
printf("修改成功!\n");
}
putchar( '\n');
}
//删除学生信息
void Delete(Student S)
{
int i,j;
int flag=0; //用来判断表中是否存在所要删除的学生的信息
scanf( "%d",&S[S->Total].D_number);
getchar();
printf("请输入学生地址:");
scanf("%s",S[S->Total].S_address);
getchar();
printf(请输入学生电话号码:”;
scanf("%s",&S[S->Total]. S_phone);
char S_class[31];//学生班级
char S_number[16];//学生学号
int D_number;//学生所在寝室的宿舍号char S_address[500];//学生地址
宿舍管理系统(c语言版)
{ printf("\t\t输入的操作代码无效,请重新输入:");
fflush(stdin);
choice=getchar();
}*/
}
void display() /*显示所有学生的信息*/
{ printf("文件读取失败!\n");
return;
}
printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");
bound();
while(fread(sturecord,sizeof(STU),1,fp)!=0)
{
printf("\t%-10s",sturecord->stuname);
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
void menu(); /*主菜单*/
void searchmenu(); /*查询菜单*/
void search(); /*查询系统*/
{
STU *sturecord;
sturecord=(STU*)malloc(sizeof(STU));
if(check()==0)
return;
system("cls");
sort_stunum();
C高级语言程序设计宿舍管理系统
《高级语言程序设计》课程设计说明书设计题目:宿舍管理系统目录1.问题描述 (2)2.功能分析 (2)3.设计及实现要点 (3)3.1.设计 (3)3.2.模块结构图 ............................................. 错误!未定义书签。
3.3.界面设计 (4)3.4.数据结构设计 (4)3.5.函数设计 (5)3.6.程序运行示意图 (5)4.源程序 (6)5.运行程序及测试程序 ................................ 错误!未定义书签。
5.1.运行测试 (15)宿舍管理系统1.问题描述为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求采用交互工作方式,建立数据文件。
数据文件按关键字(面积、楼号、房号)进行排序(冒泡、选择、插入排序等任选一种);查询菜单: 按房间号查询;修改信息,打印任一查询结果(可以连续操作)。
2.功能分析①创建宿舍信息文件:用户根据提示输入学生信息:房间号、学号、床位号。
这些信息会存入系统磁盘中保存②访问旧文件:可以根据用户以前输入的文件名来打开以前录入的信息③查询学生信息:房间号查询查询方式④增加学生信息:可在原有的学生信息文件的基础上增加新的学生信息记录并继续保存至磁盘,并且将增加后的文件存储状况显示给用户。
⑤删除学生信息:提示用户输入要进行删除操作的房间号,如果在文件中有该信息存在,则将该房间号所对应的记录删除。
⑥输出全部学生信息:将学生的信息按已住人数的大小次序全部输出⑦退出系统3.设计及实现要点3.1.设计程序总体结构:输入输出模块:人机交互,包括程序初始时的界面显示,用户的选择输入,及相关输出等。
管理模块:从输入输出模块中读取用户命令并进行相关的操作,包括对书籍信息的创建,添加,删除,查询等。
文件操作模块:进行储存的信息文件的读写等。
3.3.界面设计3.4.数据结构设计typedef struct /*定义结构体数组*/ {char num[5];/*楼号*/char roomnum[4]; /*房间号*/char area[20]; /*面积*/char num_contain[4];/*所容纳人数*/char num_live[4];/*已入住人数*/ }Apartment;3.5.函数设计3.6.程序运行示意图4.源程序#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{char num[5];/*楼号*/char roomnum[4]; /*房间号*/char area[20]; /*面积*/char num_contain[4];/*所容纳人数*/char num_live[4];/*已入住人数*/}Apartment;Apartment apa[1000]; /*结构体数组变量*/int menu_select() /*菜单函数*/{char c;do{system("cls"); /*运行前清屏*/printf("\t\t★★★★★★学生宿舍管理系统★★★★★★\n"); /*功能选择*/ printf("\t\t§1. 信息的录入§\n");printf("\t\t§2. 在已有信息的基础上添加一个新的记录§\n");printf("\t\t§3. 删除指定房间号的记录§\n");printf("\t\t§4. 修改指定房间号的记录§\n");printf("\t\t§5. 信息的浏览§\n");printf("\t\t§6. 按房间号查询§\n");printf("\t\t§7. 按已入住人数排序§\n");printf("\t\t§0. 结束程序§\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t请选择您要运行的选项按(0-7):");c=getchar(); /*读入选择*/}while(c<'0'||c>'7');return(c-'0'); /*返回选择*/}int Input(Apartment apar[],int n) /*输入若干条记录*/{int i=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{printf("\t\t\t楼号:");scanf("\t\t\t%s",&apar[n+i].num);printf("\t\t\t房间号:");scanf("\t\t\t%s",&apar[n+i].roomnum);printf("\t\t\t面积:");scanf("\t\t\t%s",apar[n+i].area);printf("\t\t\t所容纳人数:");scanf("\t\t\t%s",apar[n+i].num_contain);printf("\t\t\t已入住人数:");scanf("\t\t\t%s",apar[n+i].num_live);gets(x); /*清除多余的输入*/printf("\t\t\t是否还要继续输入?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}int Delete_a_record(Apartment apar[],int n) /*删除指定房间号的记录*/{char s[4];int i=0,j;printf("\t\t\t输入要删除的房间号:"); /*交互式问寻*/scanf("%s",&s);while(strcmp(apar[i].roomnum,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\t没有发现!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{strcpy(apar[j].roomnum,apar[j+1].roomnum);strcpy(apar[j].num,apar[j+1].num);strcpy(apar[j].area,apar[j+1].area);strcpy(apar[j].num_contain,apar[j+1].num_contain);strcpy(apar[j].num_live,apar[j+1].num_live);}printf("\t\t\t删除成功!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Apartment apar[],int n) /*查找并显示一个记录*/{char s[4];int i=0;printf("\t\t\t请输入房间号:"); /*交互式输入*/scanf("\t\t\t%s",&s);while(strcmp(apar[i].roomnum,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\t没有发现!\n"); /*输入失败信息*/return;}printf("\t\t楼号:%s\n",apar[i].num);printf("\t\t面积:%s\n",apar[i].area);printf("\t\t可住宿人数:%s\n",apar[i].num_contain);printf("\t\t实际住宿人数:%s\n",apar[i].num_live); /*输出该学生信息*/ }void Display(Apartment apar[],int n) /*显示所有记录*/{int i;printf("\t\t\t--------------------------------------------------\n"); /*格式头*/printf("\t\t\t 宿舍信息\n");printf("\t\t\t--------------------------------------------------\n");printf("\t\t\t楼号\t房间号\t面积\t所容纳人数\t已入住人数\n");printf("\t\t\t--------------------------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t\t%-10s%-8s%-12s%-15s%-20s%\n",apar[i-1].num,apar[i-1].roomnum,apar[i- 1].area,apar[i-1].num_contain,apar[i-1].num_live);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n"); /*格式*/printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}int Insert_a_record(Apartment apar[],int n) /*插入一条记录*/{int i=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{printf("\t\t\t楼号:");scanf("\t\t\t%s",apar[n+i].num);printf("\t\t\t房间号:"); /*交互输入*/scanf("\t\t\t%s",&apar[n+i].roomnum);printf("\t\t\t面积:");scanf("\t\t\t%s",apar[n+i].area);printf("\t\t\t所容纳人数:");scanf("\t\t\t%s",apar[n+i].num_contain);printf("\t\t\t已入住人数:");scanf("\t\t\t%s",apar[n+i].num_live);gets(x); /*清除多余的输入*/printf("\t\t\t是否还要继续输入?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}void Xiugai_record(Apartment apar[],int n) /*修改信息*/{char s[4];char t[500];int i=0,a=0,x=0;char b[5];printf("\t\t\t请输入房间号:"); /*交互式输入*/scanf("\t\t\t%s",&s);while(strcmp(apar[i].roomnum,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\t没有发现!\n"); /*输入失败信息*/return;}printf("\t\t楼号:%s\n",apar[i].num);printf("\t\t房间号:%s\n",apar[i].roomnum);printf("\t\t面积:%s\n",apar[i].area);printf("\t\t可住宿人数:%s\n",apar[i].num_contain);printf("\t\t实际住宿人数:%s\n",apar[i].num_live); /*输出该学生信息*/ printf("\t\t | 请选择你要修改的数据|\n");printf("\t\t | 1. 楼号|\n");printf("\t\t | 2. 房间号|\n");printf("\t\t | 3. 面积|\n");printf("\t\t | 4. 所容纳人数|\n");printf("\t\t | 5. 已入住人数|\n");printf("\t\t*****************************************\n");printf("\t\t\t输入你的选择(1-5):");scanf("%d",&a);if(a==1){printf("\t\t\t请输入要修改的值\n");scanf("%s",t);strcpy(apar[i].num,t);}else if(a==2){printf("\t\t\t请输入要修改的值");gets(b);strcpy(apar[i].roomnum,t);}else if(a==3){printf("\t\t\t请输入要修改的值\n");scanf("%s",t);strcpy(apar[i].area,t);}else if(a==4){printf("\t\t\t请输入要修改的值\n");scanf("%s",t);strcpy(apar[i].num_contain,t);}else if(a==5){printf("\t\t\t请输入要修改的值\n");scanf("%s",t);strcpy(apar[i].num_live,t);}}void Sort_by_num_live(Apartment apar[],int n){char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(apar[j]. num_live,apar[j+1]. num_live)>0){strcpy(t,apar[j+1].roomnum);strcpy(apar[j+1].roomnum,apar[j].roomnum);strcpy(apar[j].roomnum,t);strcpy(t,apar[j+1].num);strcpy(apar[j+1].num,apar[j].num);strcpy(apar[j].num,t);strcpy(t,apar[j+1].area);strcpy(apar[j+1].area,apar[j].area);strcpy(apar[j].area,t);strcpy(t,apar[j+1].num_contain);strcpy(apar[j+1].num_contain,apar[j].num_contain);strcpy(apar[j].num_contain,t);}}int AddfromText(Apartment apar[],int n) /*从文件中读入数据*/ {int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t输入文件名:");scanf("\t\t%s",&filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{printf("\t\t无法打开该文件\n"); /*打开失败信息*/printf("\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/fscanf(fp,"%s%s%s%s",apar[n+i].roomnum,apar[n+i].num,apar[n+i].area,apar[n+i].num_contain, apar[n+i].num_live);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t读入成功!\n");printf("\t\t");system("pause");return(n);}void WritetoText(Apartment apar[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[100]; /*定义文件名*/printf("\t\t循环写入数据\n"); /*输入文件名*/printf("\t\t输入文件名:");scanf("\t\t%s",&filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("\t\t无法打开该文件\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-10s%-10s%-10s%-10s\n",apar[i].roomnum,apar[i].num,apar[i].area,apar[i].num_con tain,apar[i].num_live);i++;}fclose(fp); /*关闭文件*/printf("写入成功!\n"); /*返回成功信息*/}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t\t信息的录入\n"); /*输入若干条记录*/n=Input(apa,n);break;case 2:printf("\t\t\t在已有信息的基础上添加一个新的记录Sort\n");n=Insert_a_record(apa,n);printf("\t\t\t插入成功!\n");printf("\t\t\t");system("pause");break;case 3:printf("\t\t\t删除指定房间号的记录\n");n=Delete_a_record(apa,n);printf("\t\t\t");system("pause");break;case 4:printf("\t\t\t修改指定房间号的记录\n");Xiugai_record(apa,n);printf("\t\t\t");system("pause");break;case 5:printf("\t\t\t信息的浏览\n");Display(apa,n);break;case 6:printf("\t\t\t按房间号查询\n");Query_a_record(apa,n);printf("\t\t\t");system("pause");break;case 7:printf("\t\t按已入住人数排序\n");Sort_by_num_live(apa,n);printf("\t\t\t排序成功!\n");Display(apa,n);printf("\t\t");break;case 0:printf("\t\t\t再见!\n");printf("\t\t\t");system("pause");exit(0);}}}5.运行程序及测试程序宿舍管理系统结构清晰,运行时测试也相对简单。
C语言——学生宿舍管理系统
int i=0;
char ch;
system("cls");
do{ if(i<num)
{
printf("输入第%(个学生的宿舍号:",i+1);
scanf("%d",&stu[i].dorNo) ;
printf("\n姓名:");
scanf("%s",&stu[i].stuName);
printf("\n学号:");scanf("%d",&stu[i].stuNo);
//增加学生信息
void add(struct Student *,int);
//全局变量来记录存储学生的人数int num=0;
//主函数
int main()
{ห้องสมุดไป่ตู้
char ch[10];
printf(" \t欢迎进入宿舍管理系统\n");
printf("请输入你想存储的学生人数:") ;
scanf("%d",&num); system("cls");
//按姓名查找
void naSeek(struct Student *,int);
//按系别查找
void deSeek(struct Student *,int);
//删除学生信息void del(struct Student *,int);
//修改学生信息
void modify(struct Student *,int);
printf(" \t1. printf("\t2.
C语言学生宿舍管理系统代码(可运行)
C语⾔学⽣宿舍管理系统代码(可运⾏)#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<windows.h>#include <malloc.h>#include<dos.h>#define len sizeof(struct dorminfo)#define Max 100int a[Max]={0};int length;void showmenu();void processmenu();void create();void display();void disbed();void modify();void del();void save();void read();typedef struct{int dormno;int bedno;int isstay;}bedinfo;struct dorminfo{bedinfo bed;int stuno;char name[20];char stucla[20];int year;int month;struct dorminfo *next;};struct dorminfo *head=NULL,*p1,*p2,*p3;void showmenu(){printf("\n\n\n\t\t 欢迎进⼊学⽣宿舍管理系统\n");printf("\t\t*********************************\n");printf("\t\t1.输⼊床位信息\n");printf("\t\t2.根据学号,显⽰学⽣住宿信息\n");printf("\t\t3.根据宿舍号,显⽰住宿信息\n");printf("\t\t4.根据宿舍号、床位号,修改住宿信息\n");printf("\t\t5.根据宿舍号、床位号,删除住宿信息\n");printf("\t\t6.保存学⽣宿舍信息\n");printf("\t\t7.从⽂件读⼊学⽣信息\n");printf("\t\t8.退出 \n");printf("\t\t********************************\n") ;}void processmenu(){int caidan;printf("请输⼊您的选项<1~8>:");scanf("%d",&caidan);if(caidan>8||caidan<0){printf("对不起,您输⼊的选项有误,请重新输⼊!");scanf("%d",&caidan);}switch(caidan){case 2:display();break;case 3:disbed();break;case 4:modify();break;case 5:del();break;case 6:save();break;case 7:read();break;case 8:exit(0);}}void create(){int j;char ch;length=0;p1=(struct dorminfo *)malloc(len);if(head==NULL)head=p1;printf("开始输⼊床位信息....\n");Sleep(500);do{p2=(struct dorminfo *)malloc(len);printf("请输⼊宿舍号:");scanf("%d",&p2->bed.dormno);printf("请输⼊床号:");scanf("%d",&p2->bed.bedno);printf("是否有⼈居住(1/0):");scanf("%d",&p2->bed.isstay);printf("请输⼊学⽣学号:");scanf("%d",&p2->stuno);a[length]=p2->stuno;if(length>1){for(j=1;j<length;j++){if(a[length]==a[j]){printf("该床位号已存在,请重新输⼊:");scanf("%d",&p2->bed.bedno);}}}printf("请输⼊学⽣姓名:");scanf("%s",p2->name);printf("请输⼊学⽣班级:");scanf("%s",p2->stucla);printf("请输⼊学⽣⼊住时间(年⽉)<如2015 5>:");scanf("%d%d",&p2->year,&p2->month);if(p2->year<1000||p2->year>9999||p2->month>12||p2->month<1) {printf("对不起,输⼊错误,请重新输⼊!\n");scanf("%d%d\n",&p2->year,&p2->month);}length++;p1->next=p2;p2->next=NULL;p1=p1->next;printf("第%d个住宿信息创建成功!\n",length);Sleep(300);fflush(stdin);printf("是否继续添加住宿信息?<y/Y>");ch=getchar();} while(ch=='y'||ch=='Y');}void display(){int flag=0,No;p3=head->next;scanf("%d",&No);while(p3!=NULL){if(p3->stuno==No){printf("\n住宿信息如下:");printf("\n宿舍号:%d",p3->bed.dormno);printf("\n床位号:%d",p3->bed.bedno);printf("\n是否有⼈⼊住:%d",p3->bed.isstay);printf("\n学⽣学号:%d",p3->stuno);printf("\n学⽣姓名:%s",p3->name);printf("\n学⽣班级:%s",p3->stucla);printf("\n⼊住时间为:%d年%d⽉\n",p3->year,p3->month); flag=1;}p3=p3->next;}if(!flag)printf("没有找到该学⽣住宿信息!\n");}void disbed(){int flag=0,DormNo;p3=head->next;printf("请输⼊宿舍号:");scanf("%d",&DormNo);while(p3!=NULL){if(p3->bed.dormno==DormNo){printf("\n住宿信息如下:");printf("\n宿舍号:%d",p3->bed.dormno);printf("\n床位号:%d",p3->bed.bedno);printf("\n是否有⼈⼊住:%d",p3->bed.isstay);printf("\n学⽣学号:%d",p3->stuno);printf("\n学⽣姓名:%s",p3->name);printf("\n学⽣班级:%s",p3->stucla);printf("\n⼊住时间为:%d年%d⽉\n",p3->year,p3->month); flag=1;}p3=p3->next;}if(!flag)printf("没有找到该学⽣住宿信息!\n");}void modify(){struct dorminfo *p;int DormNo,BedNo,flag;int Dormno,Bedno,Isstay,Stuno,Year,Month;char Name[20],Stucla[20];if(head==NULL){printf("住宿信息为空,不能修改,按任意键返回...\n");getch();system("cls");return ;}p1=p3=head;printf("请输⼊宿舍号、床位号:");scanf("%d %d",&DormNo,&BedNo);while(p3!=NULL){if(p3->bed.dormno==DormNo&&p3->bed.bedno==BedNo) {printf("已找到要修改的宿舍号、床位号!\n");flag=1;p=p3;}p3=p3->next;}if(flag){printf("请输⼊修改后的宿舍号:");scanf("%d",&Dormno);printf("请输⼊修改后的床号:");scanf("%d",&Bedno);printf("是否有⼈居住(1/0):");scanf("%d",&Isstay);printf("请输⼊修改后的学⽣学号:");scanf("%d",&Stuno);while(p1!=NULL){if(p1->stuno==Stuno){printf("该床位号已存在,请重新输⼊:");scanf("%d",&Stuno);}p1=p1->next;}printf("请输⼊修改后的学⽣姓名:");scanf("%s",Name);printf("请输⼊修改后的学⽣班级:");scanf("%s",Stucla);printf("请输⼊修改后的学⽣⼊住时间(年⽉)<如2015 5>:");scanf("%d%d",&Year,&Month);if(Year<1000||Year>9999||Month>12||Month<1){printf("对不起,输⼊错误,请重新输⼊!\n");scanf("%d%d",&Year,&Month);}p->bed.dormno=Dormno;p->bed.bedno=Bedno;p->bed.isstay=Isstay;p->stuno=Stuno;strcpy(p->name,Name);strcpy(p->stucla,Stucla);p->year=Year;p->month=Month;printf("修改成功,信息如下:\n");printf("-宿舍号--床号--有⽆⼈⼊住--学号--姓名--班级--⼊住时间(年⽉)");printf("\n");printf("%6d%5d%8d%9d%7s%8s%9d%2d\n",p->bed.dormno,p->bed.bedno,p->bed.isstay,p->stuno,p->name,p->stucla,p->year,p->month); }else{printf("没有找到该宿舍号与床号信息,按任意键返回...\n");getch();system("cls");return ;}}void del(){int DormNo,BedNo;p1=head,p2=head->next;printf("请输⼊宿舍号、床位号:");scanf("%d %d",&DormNo,&BedNo);while(p2!=NULL){if(p2->bed.dormno==DormNo&&p2->bed.bedno==BedNo){p1->next=p2->next;free(p2);length--;printf("删除成功!\n");return ;}p2=p2->next;p1=p1->next;}if(p1==NULL)printf("找不到要删除的宿舍号、床位号!\n");}void save(){FILE *fp1;if(head==NULL){printf("\n,没有找到该宿舍号与床号信息,按任意键返回....");getch();system("cls");return ;}if((fp1=fopen("学⽣宿舍管理系统.txt","w"))==NULL){printf("\n信息⽆法保存,按任意键返回....");getch();system("cls");return ;}p1=head->next;printf("正在保存⽂件...\n");Sleep(800);fputs(" 宿舍号床号有⽆⼈⼊住学号姓名班级⼊住时间(年⽉) :\n",fp1);while(p1!=NULL){fprintf(fp1,"%6d%5d%8d%7d%6s%4s%7d%2d\n",p1->bed.dormno,p1->bed.bedno,p1->bed.isstay,p1->stuno,p1->name,p1->stucla,p1->year,p1->month);p1=p1->next;}fclose(fp1);printf("⽂件保存成功!\n");printf("按任意键返回...\n");getch();system("cls");return ;}void read(){FILE *fp2;char ch;if((fp2=fopen("学⽣宿舍管理系统.txt","r"))==NULL){printf("⽂件⽆法打开!\n");exit(0);}printf("正在读⼊⽂件...\n");Sleep(1000);ch=fgetc(fp2);while(!feof(fp2)){putchar(ch);ch=fgetc(fp2);}printf("\n");fclose(fp2);printf("⽂件读⼊成功!\n");}void main(){while(1){processmenu(); system("pause"); system("cls");}}。
c语言宿舍管理
c语言宿舍管理以下是一个简单的 C 语言宿舍管理程序示例,用于管理宿舍的入住和退房记录:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_HOSTS 100// 宿舍结构体struct Dorm {char name[50];int capacity;int occupied;int* roomNumbers;};// 初始化宿舍结构体void initDorm(struct Dorm* dorm) {strcpy(dorm->name, "");dorm->capacity = 0;dorm->occupied = 0;dorm->roomNumbers = NULL;}// 释放宿舍内存void freeDorm(struct Dorm* dorm) {if (dorm->roomNumbers != NULL) {free(dorm->roomNumbers);}}// 添加宿舍void addDorm(struct Dorm** head, struct Dorm* dorm) {if (*head == NULL) {*head = dorm;} else {struct Dorm* current = *head;while (current->next != NULL) {current = current->next;}current->next = dorm;}}// 打印宿舍信息void printDormInfo(struct Dorm* dorm) {printf("宿舍名称: %s\n", dorm->name);printf("容量: %d\n", dorm->capacity);printf("已入住: %d\n", dorm->occupied);}// 分配宿舍房间号void assignRoomNumbers(struct Dorm* dorm) {if (dorm->roomNumbers == NULL) {dorm->roomNumbers = (int*)malloc(dorm->capacity * sizeof(int)); }for (int i = 0; i < dorm->capacity; i++) {dorm->roomNumbers[i] = i + 1;}}int main() {struct Dorm* head = NULL;// 添加宿舍struct Dorm dorm1;initDorm(&dorm1);strcpy(, "宿舍 1"); dorm1.capacity = 10;addDorm(&head, &dorm1);struct Dorm dorm2;initDorm(&dorm2);strcpy(, "宿舍 2"); dorm2.capacity = 15;addDorm(&head, &dorm2);// 分配宿舍房间号struct Dorm* current = head;while (current != NULL) {assignRoomNumbers(current); current = current->next;}// 打印宿舍信息current = head;while (current != NULL) {printDormInfo(current);current = current->next;}// 释放内存current = head;while (current != NULL) {freeDorm(current);current = current->next;}return 0;}```这个程序创建了一个宿舍管理系统,包括添加宿舍、为宿舍分配房间号以及打印宿舍信息的功能。
C语言课程设计报告学生宿舍管理系统
《高级语言程序设计》课程设计说明书设计题目:学生宿舍管理系统目录一、总体设计 (3)1.程序的总体设计 (3)2. 函数原型声明 (3)二、用户说明 (4)1、菜单界面 (5)2、入住登记界面 (5)3、删除界面 (5)4、浏览界面 (6)5、查询修改 (6)6、排序界面 (6)7、退出 (6)三、小结 (7)四、参考文献 (7)五、源程序代码 (7)一、总体设计1.程序的总体设计◎确定界面,使用户可选择操作项目(录入,删除,浏览,修改,查询,排序)。
◎录入:使用结构体,要求用户输入楼栋、房号、面积、可住人数、已住人数◎删除:按房号删除以上信息◎查询:按房号查询以上信息◎修改:按房号修改以上信息◎排序:按已住人数排序信息2. 函数原型声明struct room *add(struct room *head);//添加函数struct room *del(struct room *h);//删除函数void show(struct room *h);//信息浏览函数void serh(struct room *h);//查询与修改函数struct room *sort(struct room *head);//排序函数void can();//结束函数二、用户使用说明运行程序后即可按提示模仿以上操作进行。
2、入住登记界面3、删除界面5、查询修改6、排序界面7、退出三、小结通过编写该程序,熟悉了C语言的基本语法,选择,循环等结构,深入练习了函数的调用方法,和文件的读写方法,熟悉了结构体的使用,更加深化了面向过程语言思想,和一些基本算法。
通过对程序的后期调试,熟悉了C常见错误,锻炼了思维的严密性,和完备性。
通过对程序的注释和画流程图,形成了一套自己编程的风格,和清晰地思路,使思维更加条理化,清晰化。
四、参考文献[1]谭浩强.C程序设计(第二版).北京:清华大学出版社,1999[2]邓文新.张宏烈.哈尔滨工业大学出版社[3]百度.五、附件源程序代码#include<stdio.h>#include<malloc.h>#include<string.h>#include <stdlib.h>struct room{int Lnum;int Fnum;int squa;int maxnum;int innum;struct room *next;};struct room *add(struct room *head);//添加函数struct room *del(struct room *h);//删除函数void show(struct room *h);//信息浏览函数void serh(struct room *h);//查询与修改函数struct room *sort(struct room *head);//排序函数//修改点void can();//结束函数void main(){struct room *head;int x,y;head=(struct room *)malloc(sizeof(struct room));head->next=NULL;printf("欢迎使用学生宿舍管理系统!\n");printf("按回车键进入菜单界面\n");getchar();while(1){A: printf("[]--------------------------------------------[]\n");printf("||--------------------------------------------||\n");printf("|| 1.入住登记 ||\n");printf("|| 2.删除信息 ||\n");printf("|| 3.信息浏览 ||\n");printf("|| 4.查询修改 ||\n");printf("|| 5.按入住人数排序 ||\n");printf("|| 6.退出系统 ||\n");printf("||--------------------------------------------||\n");printf("[]--------------------------------------------[]\n");printf("请选择服务项目!\n");flushall();scanf("%d",&x);//菜单选择if(head->next==NULL&&x!=1&&x!=6){printf("系统中无入住信息,请先进行入房登记!\n");goto A;}switch(x){case 1:head=add(head);system("cls");printf("登记完毕!\n");continue;case 2:head=del(head);T: scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto T;}if(y==1){system("cls");continue;}elsecan();goto N;case 3:show(head);printf("是否返回菜单界面进行其他操作?(1/0)\n"); J: scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto J;}if(y==1){system("cls");continue;}else{can();goto N;}case 4:serh(head);system("cls");continue;case 5:head=sort(head);//修改点printf("是否返回菜单界面进行其他操作?(1/0)\n"); scanf("%d",&y);while(y!=1&&y!=0){printf("输入错误!请重新输入!\n");goto J;}if(y==1){system("cls");continue;}else{can();goto N;}continue;case 6:can();goto Q;default:printf("输入错误!请重新输入!\n");}N: if(y==0)break;Q: if(x==6)break;}}struct room *add(struct room *head)//入住登记{struct room *h,*p;int i=0,n;h=head;printf("请输入要登记的入房数:\n");scanf("%d",&n);printf("请输入入住信息:\n楼号房号面积最大入住人数已入住人数\n");printf("数据须按规定顺序输入,不同数据用空格分开。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include"stdio.h"int main_menu_select() /*主菜单选择*/ {char s;printf("\n1 Administrator in charge of the students and books' information\n");printf("\n2 Administrator in charge of lend books\n");printf("\n3 Administrator in charge of receive books\n");printf("\n4 Student\n");printf("\n5 Guest\n");printf("\n6 exit\n\n");printf("\n input 1-6 to choice the function\n");do{s=getche();printf("\n");}while(s<49||s>54);return s;}int administrator_menu_select() /*管理员菜单选择*/ {int s;printf("input 1-6 to choice the function\n");printf("1 input the information of books\n");printf("2 recompose the information of the books\n");printf("3 cancel the information of books \n");printf("4 input the information of students\n");printf("5 recompose information of the students\n");printf("6 cancel the information of students\n");printf("7 return main menu\n");printf("8 exit\n\n" );do{s=getche();printf("\n");}while(s<49||s>56);return s;}hello_main() /*返回主菜单*/ {for(; ;){switch(main_menu_select()){case 49:adm_information();break;case 51:printf("hellooo");break;case 52:printf("helloooo");break;case 53:printf("hellooooo");break;case 54:printf("Goodbye!");exit(0);}}}hello_adm_menu() /*返回管理员功能选择菜单*/ {for(; ;){switch(administrator_menu_select()){case 49:books_information_input();break;case 50:printf("Student\n");break;case 51:printf("Guest\n");break;case 52:students_information_input();break;case 53:printf("Guest of gentleman\n");break;case 54:printf("hahha");break;case 55:hello_main();break;case 56:printf("Goodbye!");exit(0);}}}struct /*图书结构体*/ {int number;char name[20];char press[20];char writer[20];int price;}books[200];struct /*学生结构体*/ {int number;char name[20];char sex[6];int grade;}students[200];adm_information() /*管理员菜单*/ {for(; ;){switch(administrator_menu_select()){case 49:books_information_input();break;case 51:printf("Guest\n");break;case 52:students_information_input();break;case 53:printf("Guest of gentleman\n");break;case 54:printf("hahha");break;case 55:hello_main();break;case 56:printf("Goodbye!");exit(0);}}}int books_information_input() /*图书信息输入函数*/ {int m,i,s;char h;printf("input the number of the books you want to operate:");scanf("%d",&m);for(i=1;i<m+1;i++){printf("please input the %dth book's number:",i);scanf("%d",&books[i].number);printf("\n please input the %dth book's name:",i);scanf("%s",books[i].name);printf("\n please input the %dth book's press:",i);scanf("%s",books[i].press);printf("\n please input the %dth book's writer:",i);scanf("%s",books[i].writer);printf("\n please input the %dth book's price:",i);scanf("%d",&books[i].price);printf("\n\n");}printf("\ninformation of the students has been inputed\n");printf("1 to return higher menu\n"); /*返回上一级菜单,即管理员选择功能菜单*/h=getche();if(h==1)hello_adm_menu();}students_information_input() /*学生信息输入函数*/ {int m,i,s;printf("input the number of the students you want to operate:");scanf("%d",&m);for(i=1;i<m+1;i++){printf("\nplease input the %dth student's number:",i);scanf("%d",&students[i].number);printf("\n please input the %dth student's name:",i);scanf("%s",students[i].name);printf("\n please input the %dth student's sex:",i);scanf("%s",students[i].sex);printf("\n please input the %dth student's grade:",i);scanf("%d",&students[i].grade);}printf("\ninformation of the books has been inputed\n\n"); }main(){for(; ;){switch(main_menu_select()){case 49:adm_information();break;case 50:printf("helloo");break;case 51:printf("hellooo");break;case 52:printf("helloooo");break;case 53:printf("hellooooo");break;case 54:printf("Goodbye!");exit(0);}}}。