#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Student{
char name[20];
char sex[5];
int age;
char institute[20];
char specialty[30];
}Student;
typedef struct Room{
int roomnum;
int roomarea;
int totalnum;
int stunum;
Student stu[10];
Room *next;
}Room;
typedef struct Story{
char storynum;
Room *room;
}Story;
/*-------------------------------------------------------------------------------------------------*/
Student *StudentCreat(int age,char name[],char institute[],char specialty[],char sex[])
{
Student *Stu;
Stu=(Student *)malloc(sizeof(Student));
Stu->age=age;
strcpy(Stu->institute,institute);
strcpy(Stu->name,name);
strcpy(Stu->specialty,specialty);
strcpy(Stu->sex,sex);
return Stu;
}
Room *RoomCreat(int room_num,int room_area,int total_num,int stu_num)
{
Room *R;
int i;
R=(Room *)malloc(sizeof(Room));
if(!R)return NULL;
R->roomnum=room_num;
R->roomarea=room_area;
R->totalnum=total_num;
R->stunum=stu_num;
R->next=NULL;
return R;
}
Story *StoryCreat()
{
Story *S;
S=(Story *)malloc(sizeof(Story));
S->room=RoomCreat(0,0,0,0);
return S;
}
Story *DormCreat()
{
Story *S,*control;
char i;
control=(Story *)malloc(26*sizeof(Story));
if(!control)return NULL;
for(i='A';i<='Z';i++)
{
S=StoryCreat();
S->storynum=i;
control[i-'A']=*S;
}
return control;
}
/*-------------------------------------------------------------------------------------------------*/
Story *StorySearch(Story *control,char storynum)
{
return control+(storynum-'A');
}
Room *RoomSearch(Room *R,int room_num)
{
while(R->next!=NULL)
{
if(R->next->roomnum==room_num)break;
else R=R->next;
}
return R;
}
Student *StudentSearch(Room *R,char name[])
{
Student *p;
int i;
R=R->next;
p=R->stu;
for(i=0;i<R->stunum;i++)
{
if(strcmp(p->name,name)==0)return p;
else p++;
}
return NULL;
}
/*-------------------------------------------------------------------------------------------------*/
void RoomInsert(Story *S,Room *R)
{
R->next=S->room->next;
S->room->next=R;
}
void StudentInsert(Room *R,Student *Stu)
{
R=R->next;
R->stu[R->stunum]=*Stu;
R->stunum++;
}
void RoomDelete(Room *R)
{
Room *p;
R=R->next;
p=R;
R=R->next;
free(p);
}
void StudentDelete(Room *R,Student *Stu)
{
R=R->next;
Student *p;
for(p=R->stu;Stu<p+R->stunum-1;Stu++)*Stu=*(Stu+1);
R->stunum--;
}
void RoomRevamp(Room *R)
{
int i,k;
R=R->next;
printf("1、房号 2、面积 3、可容纳人数:\n");
printf("要修改那一项:\n");
scanf("%d",&i);
switch(i)
{
case 1:{
printf("房号:");
scanf("%d",&k);
R->roomnum=k;
break;
}
case 2:{
printf("面积:");
scanf("%d",&k);
R->roomarea=k;
break;
}
case 3:{
printf("可容纳人数:");
scanf("%d",&k);
R->totalnum =k;
break;
}
}
}
void StudentRevamp(Student *Stu)
{
int i,k;
char str[30];
printf("1、姓名 2、性别 3、学院 4、专业 5、年龄:\n");
printf("要修改那一项:\n");
scanf("%d",&i);
switch(i)
{
case 1:{
printf("姓名:");
scanf("%s",str);
strcpy(Stu->name,str);
break;
}
case 2:{
printf("性别:");
scanf("%s",str);
strcpy(Stu->sex,str);
break;
}
case 3:{
printf("学院:");
scanf("%s",str);
strcpy(Stu->institute,str);
break;
}
case 4:{
printf("专业:");
scanf("%s",str);
strcpy(Stu->specialty,str);
break;
}
case 5:{
printf("年龄:");
scanf("%d",&k);
Stu->age =k;
break;
}
}
}
/*-------------------------------------------------------------------------------------------------*/
void RoomScan(Room *R)
{
int i;
Student *p;
R=R->next;
printf("房号:%d\n",R->roomnum);
printf("面积:%d\n",R->roomarea);
printf("可容纳人数:%d\n",R->totalnum);
printf("已住入人数:%d\n",R->stunum);
printf("成员:");
for(i=0;i<R->stunum;i++)
{
p=&(R->stu[i]);
printf("%s ",p->name);
}
putchar('\n');
}
void StudentScan(Student *Stu)
{
printf("姓名:%s\n",Stu->name);
printf("年龄:%d\n",Stu->age);
printf("性别:%s\n",Stu->sex);
printf("学院:%s\n",Stu->institute);
printf("专业:%s\n",Stu->specialty);
}
int main()
{
int roomnum,roomarea,totalnum,stunum,age;
int event;
char name[20],institute[20],specialty[30],sex[5];
char storynum,judge;
Story *control;
Story *S;
Room *R;
Student *Stu;
control=DormCreat();
do
{
printf("****************************注意**********************************\n");
printf("* 先录入宿舍信息才能录入学生信息 *\n");
printf("* 先录入信息才能删除浏览或修改信息 *\n");
printf("******************************************************************\n");
printf("\n\n\n 宿舍管理系统 \n\n\n");
printf("功能选择菜单:\n");
printf("1、宿舍信息录入 2、学生信息录入 3、删除某个宿舍 4、删除某个学生\n");
printf("5、宿舍信息浏览 6、学生信息浏览 7、宿舍信息修改 8、学生信息修改\n");
scanf("%d",&event);
switch(event)
{
case 1:
{
do
{
printf("请输入宿舍房间号,房间面积,可容纳人数,已住入人数:(以空格隔开)\n");
fflush(stdin);
scanf("%c%d %d %d %d",&storynum,&roomnum,&roomarea,&totalnum,&stunum);
S=StorySearch(control,storynum);
R=RoomCreat(roomnum,roomarea,totalnum,stunum);
RoomInsert(S,R);
printf("宿舍信息录入成功!\n");
fflush(stdin);
printf("是否继续录入宿舍信息(Y/N)\n");
scanf("%c",&judge);
}while(judge=='Y');
break;
}
case 2:
{
do
{
printf("请输入该生要入住的宿舍:\n");
fflush(stdin);
scanf("%c%d",&storynum,&roomnum);
fflush(stdin);
S=StorySearch(control,storynum);
R=S->room;
R=RoomSearch(R,roomnum);
printf("请输入该生姓�
♂愤怒的it男♂
- 粉丝: 333
- 资源: 16
最新资源
- 基于Android课程表-仿超级课程表(高分课程作业)
- 整车质量估计算法,采用simulink模型搭建,基于模糊逻辑思想,通过设计合理的模糊控制规则确定质量估计的置信度,当置信度高于某一水平时进行整车质量估计,提高工况判断的鲁棒性 采用递推最小二乘作为基
- 11电平三相MMC(模块化多电平流器)逆变器并网 双闭环 载波移相调制 电容电压均衡控制 二倍频环流抑制控制 simulink仿真 1.采用双闭环控制,外环PQ控制,内环控制并网电流 并网电流波形质
- 网络安全 渗透测试 内网渗透 Windows反弹Shell最全总结
- 1_无机及分析化学测试题及参考答案.zip
- test p123 intial
- AFileOrganizer - 保持文件井然有序
- Ring Amplifier 环形放大器 MDAC Gpdk45nm,电路 testbench 文档 最大的特点是功耗比较低,应用于低功耗adc场景 也是近几年的热点研究之一,可应用于流水线ADC的
- 多传感器融合 多源信息融合识别 两个传感器 两种目标(人,车)分别使用DS融合框架和贝叶斯融合框架…
- 逆变器罩盖检漏设备sw14可编辑全套技术资料100%好用.zip
- 三菱FX3U的结构化编程编成,采用结构 化编程,包括ST和F BD,FB块等,程序有变频器通信,伺服的动作控制等,程序虽然复杂度高,但是plc注解详细, 思路清晰,通俗易懂,对学习结构化编程很有帮助
- 基于springboot+mysql+html宠物商城管理系统(高分毕业设计)
- 异步电机 感应电机恒压频比控制VF 恒压频比控制的核心就是Us f=常数 调制方式有SPWM和SVPWM两种 提供对应的参考文献;
- 基于Springboot+Vue网上超市的设计与实现毕业源码案例设计源码+文档+全部资料+高分项目
- 木工刮板料仓除尘器sw15可编辑全套技术资料100%好用.zip
- 伺服系统机械特性分析频率特性辨识Matlab仿真 1.模型简介 模型为伺服系统机械特性分析频率特性分析仿真,机械特性分析是基于速度环,主要的目的是为了辨识系统的谐振点 仿真采用离散的传递函数进
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论13