宿舍管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_NUM 100 //宿舍最大数目
#define STU_NUM 6 //每个宿舍最大学生数
typedef struct student
{
int num;//学号
int class_num;//班级
char name[20];//姓名
char depart[20];//系
}Stu;
typedef struct dormitory
{
int num;//宿舍号
int room;//房间号
int count;//已入住学生数目
Stu stu[STU_NUM];//学生
}Dorm;
Dorm dorm[MAX_NUM];//定义结构体数组
int NUM=0;//记录已有宿舍数量
/*菜单函数 提供用户选择界面 并将选择返回给主函数*/
int menu()
{
int n;
system("cls");//清屏
printf("1:宿舍信息录入\n");
printf("2:宿舍信息查询\n");
printf("3:宿舍信息显示\n");
printf("4:宿舍信息修改\n");
printf("5:宿舍信息删除\n");
printf("6:宿舍信息分析\n");
printf("0:退出\n");
scanf("%d",&n);
/*如果n不在0-6范围内 要求重新输入*/
while(n<0||n>6)
{
printf("输入范围错误,请重新输入!\n");
scanf("%d",&n);
}
return n;
}
/*添加新的宿舍信息*/
void add_new()
{
int i;
system("cls");
printf("请输入新添加的宿舍号\n");
scanf("%d",&dorm[NUM].num);
printf("请输入新添加的房间号\n");
scanf("%d",&dorm[NUM].room);
printf("请输入新宿舍入住人数\n");
scanf("%d",&dorm[NUM].count);
while(dorm[NUM].count<0||dorm[NUM].count>STU_NUM)
{
printf("人数超出范围,请重新输入\n");
scanf("%d",&dorm[NUM].count);
}//宿舍人数不能超过上限
//依次获取学生信息
for(i=0;i<dorm[NUM].count;i++)
{
printf("输入第%d位学生的学号\n",i+1);
scanf("%d",&dorm[NUM].stu[i].num);
printf("输入第%d位学生的姓名\n",i+1);
scanf("%s",&dorm[NUM].stu[i].name);
printf("输入第%d位学生的系别\n",i+1);
scanf("%s",&dorm[NUM].stu[i].depart);
printf("输入第%d位学生的班级\n",i+1);
scanf("%d",&dorm[NUM].stu[i].class_num);
}
printf("新增宿舍信息成功!\n");
NUM++;//已有宿舍数量增加
system("pause");
}
/*根据学号查找学生信息*/
void find_num()
{
int n,i,flag=1,j;
system("cls");
printf("请输入要查找的学号!\n");
scanf("%d",&n);
//遍历所有数据进行查找
for(i=0;i<NUM;i++)
{
for(j=0;j<dorm[i].count;j++)
{
if(n == dorm[i].stu[j].num)
{
flag=0;
break;
}
}
if(!flag)
{
break;
}
}
if(flag)
{//没找到则输出
printf("无该学号信息!\n");
}
else
{
printf("宿舍号:%d 房间号:%d\n",dorm[i].num,dorm[i].room);
printf("%-8s%-10s%-20s%-5s\n","学号","姓名","系别","班级");
printf("%-8d%-10s%-20s%-5d\n",dorm[i].stu[j].num,dorm[i].stu[j].name,dorm[i].stu[j].depart,dorm[i].stu[j].class_num);
}
system("pause");
}
/*按宿舍号查找*/
void find_dorm()
{
int n,i,flag=1,j;
system("cls");
printf("请输入要查找的宿舍号!\n");
scanf("%d",&n);
for(i=0;i<NUM;i++)
{
if(n==dorm[i].num)
{
flag=0;
break;
}
}//遍历所有宿舍比较宿舍号
if(flag)
{
printf("无该宿舍号信息!\n");
}
else
{//找到则输出宿舍信息 以及所有学生信息
printf("宿舍号:%d 房间号:%d 入住人数%d\n",dorm[i].num,dorm[i].room,dorm[i].count);
printf("%-8s%-10s%-20s%-5s\n","学号","姓名","系别","班级");
for(j=0;j<dorm[i].count;j++)
{
printf("%-8d%-10s%-20s%-5d\n",dorm[i].stu[j].num,dorm[i].stu[j].name,dorm[i].stu[j].depart,dorm[i].stu[j].class_num);
}
}
system("pause");
}
/*查找菜单 供用户选择查找方式*/
void serach()
{
int n;
system("cls");
printf("1:按宿舍号查询\n");
printf("2:按学号查询\n");
printf("0:退出\n");
scanf("%d",&n);
while(n<0||n>6)
{
printf("输入范围错误,请重新输入!\n");
scanf("%d",&n);
}
switch(n)
{
case 1:
find_dorm();
break;
case 2:
find_num();
break;
}
}
/*打印信息 遍历所有已存在的宿舍*/
void PRINT()
{
int i,j;
system("cls");
for(i=0;i<NUM;i++)
{
printf("宿舍号:%d 房间号:%d 入住人数%d\n",dorm[i].num,dorm[i].room,dorm[i].count);
printf("%-8s%-10s%-20s%-5s\n","学号","姓名","系别","班级");
for(j=0;j<dorm[i].count;j++)
{
printf("%-8d%-10s%-20s%-5d\n",dorm[i].stu[j].num,dorm[i].stu[j].name,dorm[i].stu[j].depart,dorm[i].stu[j].class_num);
}
printf("\n\n");
}
system("pause");
}
/*修改宿舍信息 修改前先显示*/
void modf()
{
int n,i,flag=1,j;
system("cls");
printf("请输入要修改的宿舍号!\n");
scanf("%d",&n);
for(i=0;i<NUM;i++)
{
if(n==dorm[i].num)
{
flag=0;
break;
}
}
if(flag)
{
printf("无该宿舍号信息!\n");
system("pause");
return ;
}
printf("宿舍号:%d 房间号:%d 入住人数%d\n",dorm[i].num,dorm[i].room,dorm[i].count);
printf("%-8s%-10s%-20s%-5s\n","学号","姓名","系别","班级");
for(j=0;j<dorm[i].count;j++)
{
printf("%-8d%-10s%-20s%-5d\n",dorm[i].stu[j].num,dorm[i].stu[j].name,dorm[i].stu[j].depart,dorm[i].stu[j].class_num);
}
printf("输入新宿舍号\n");
scanf("%d",&dorm[i].num);
printf("输入新房间号\n");
scanf("%d",&dorm[i].room);
printf("修改成功!\n");
system("pause");
}
/*删除宿舍信息 删除多出了确认删除 防止误删*/
void del()
{
int n,i,flag=1,j;
char ch;
system("cls");
printf("请输入要删除的宿舍号!\n");
scanf("%d",&n);
for(i=0;i<NUM;i++)
{
if(n==dorm[i].num)
{
flag=0;
break;
}
}
if(flag)
{
printf("无该宿舍号信息!\n");
system("pause");
return ;
}
printf("宿舍号:%d 房间号:%d 入住人数%d\n",dorm[i].num,dorm[i].room,dorm[i].count);
printf("%-8s%-10s%-20s%-5s\n","学号","姓名","系别","班级");
for(j=0;j<dorm[i].count;j++)
{
printf("%-8d%-10s%-20s%-5d\n",dorm[i].stu[j].num,dorm[i].stu[j].name,dorm[i].stu[j].depart,dorm[i].stu[j].class_num);
}
fflush(stdin);//清空缓冲区
printf("确认删除?Y/N\n");
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
for(j=i;j<NUM;j++)
{
dorm[j]=dorm[j+1];
}
}
else
{
printf("取消删除成功!\n");
system("pause");
return ;
}
printf("删除成功!\n");
NUM--;//删除成功 已有宿舍数减一
system("pause");
}
/*显示宿舍信息 对床位数目进行分析*/
void analysis()
{
int i;
system("cls");
for(i=0;i<NUM;i++)
printf("宿舍号:%d 房间号:%d 入住人数%d 空床位:%d\n",dorm[i].num,dorm[i].room,dorm[i].count,STU_NUM-dorm[i].count);
system("pause");
}
/*保存文件*/
void Save_File()
{
FILE *fp;
int i;
if((fp=fopen("dormitory.txt","wb"))==NULL)
{
printf("文件打开失败!");
system("pause");
return;
}
for(i=0;i<NUM;i++)
{
fwrite(&dorm[i],sizeof(struct dormitory),1,fp);
}
fclose(fp);
}
/*读取文件*/
void Open_File()
{
int i=0;
FILE *fp;
if((fp=fopen("dormitory.txt","rb"))==NULL)
{
;
}
else
{
while(fread(&dorm[i],sizeof(struct dormitory),1,fp))
{
i++;
NUM++;
}
fclose(fp);
printf("文件数据读取成功!\n");
system("pause");
}
}
/*根据菜单函数的返回值 进入相应的功能函数*/
int main()
{
int n;
Open_File();//读取文件
do
{
n=menu();
switch(n)
{
case 1:
add_new();
break;
case 2:
serach();
break;
case 3:
PRINT();
break;
case 4:
modf();
break;
case 5:
del();
break;
case 6:
analysis();
break;
}
}while(n);
Save_File();//保存文件
return 0;
}
相关阅读
文章对电商财务系统进行了系统的介绍,希望通过此文能够加深你对电商系统的认识。目前互联网电商公司的系统非常多、系统间的关系也
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct _USER { char id[20];//账号 char code[20];//密
前言 笔者从学校做兼职到工作这些年已经开发了或者参与开发了十多套后台管理系统(后面简称BMS),而使用过的BMS就不计其数了。多数情
供应链管理系统是最早期面向企业的软件解决方案之一,供应商管理又是供应链链条中的上游部分。正值To B话题的热点,本文跟大家分享一
目前是流量为王的时代,有流量就意味着有营收,看到了行业的未来。人口聚集必有消费,这也是大家所推崇的流量为王。流量始终是各行各业