本菜鸟的第一个课设题目:宿舍管理系统(持续更新中。。)
目前使用到了结构,system函数,文件的创立与读入
实现了人员的添加、修改、删除、查询以及宿舍情况的查询,由于之前bug奇出,所以有待完善
include <stdio.h>
include <stdlib.h>
include <string.h>
typedef struct
{
int card;
int classroom;
int dormitory;
int buildingnum;
char name[20];
}Student;
Student ID[620];
int dormitory_people[60]={0};
int dormitory_fee[60];
int building[5]={0};
int select_menu()
{
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§ 8. 将已有信息读入 \n");
printf("\t\t§ 9. 退出程序 \n");
printf("\t\t----------------------------------------------\n");
printf("\t\t请选择您要运行的选项按(1-9):");
c=getchar();
}while(c<'0'||c>'9');
return(c-'0');
}
int Input(Student IDNum[],int n)
{
int i=0;
char x=0;
int fee;
while(x!='n'&&x!='N')
{
printf("\t输入学号:");
scanf("%d",&IDNum[n+i+1].card);
printf("\t输入姓名:");
scanf("%s",&IDNum[n+i+1].name);
printf("\t输入班级:");
scanf("%d",&IDNum[n+i+1].classroom);
printf("\t输入宿舍号:");
scanf("%d",&IDNum[n+i+1].dormitory);
printf("\t输入楼栋号: ");
scanf("%d",&IDNum[n+i+1].buildingnum);
printf("\t充值电费为:");
scanf("%d",&fee);
dormitory_fee[IDNum[n+i+1].dormitory]+=fee;
dormitory_people[IDNum[n+i+1].dormitory]++;
building[IDNum[n+i+1].buildingnum]++;
getchar();
printf("\t添加成功!是否继续输入(Y/N)?");
scanf("%c",&x);
i++;
}
return n+i;
}
void Change(Student IDNum[],int n)
{
int i=1;
char s[20];
printf("\t输入要修改的学生姓名:");
scanf("%s",s);
while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;
if(i==n+1)
{
printf("\t对不起没找到该学生!\n");
system("pause");
return;
}
dormitory_people[IDNum[i].dormitory]--;
printf("\t需要修改他/她的宿舍号是:");
scanf("%d",&IDNum[i].dormitory);
dormitory_people[IDNum[i].dormitory]++;
printf("\t需要修改他/她的班级是:");
scanf("%d",&IDNum[i].classroom);
building[IDNum[i].buildingnum]--;
printf("\t修改后他她的宿舍楼号是:");
scanf("%d",&IDNum[i].buildingnum);
building[IDNum[i].buildingnum]++;
printf("\t修改成功!\n");
system("pause");
}
int Delete(Student IDNum[],int n)
{
char s[20];
int i=1,j;
printf("\t输入他(她)的姓名:");
scanf("%s",s);
while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;
if(i==n+1)
{
printf("\t对不起没找到该学生!\n");
return(n);
}
dormitory_people[IDNum[i].dormitory]--;
building[IDNum[i].buildingnum]--;
for(j=i;j<n;j++)
{
IDNum[j].card=IDNum[j+1].card;
IDNum[j].classroom=IDNum[j+1].classroom;
IDNum[j].dormitory=IDNum[j+1].dormitory;
IDNum[j].buildingnum=IDNum[j+1].buildingnum;
strcpy(IDNum[j].name,IDNum[j+1].name);
}
printf("\t删除记录成功!\n");
return(n-1);
}
void Look_up(Student IDNum[],int n)
{
char s[20];
int i=1;
printf("\t输入他(她)的姓名:");
scanf("\t%s",&s);
while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;
if(i==n+1)
{
printf("\t对不起没找到该学生!\n");
system("pause");
return;
}
printf("\t他/她的班级:%.2d\n",IDNum[i].classroom);
printf("\t他/她的宿舍号:%.2d\n",IDNum[i].dormitory);
printf("\t他/她的楼号:%.2d\n",IDNum[i].buildingnum);
getchar();
system("pause");
}
void Present_floor()
{
int num;
printf("\t请输入要统计的楼号:");
scanf("%d",&num);
printf("\t该楼现在的总人数为:%d人\n",building[num]);
system("pause");
}
void Present_dormitory(Student IDNum[],int n)
{
int i=1,q;
printf("\t输入要查找的宿舍号:");
scanf("%d",&q);
for(i;i<=n;i++)
{
if(IDNum[i].dormitory==q)
{
printf("\t姓名:%s",IDNum[i].name);
printf("\t班级:%.2d",IDNum[i].classroom);
printf("\t宿舍号:%.2d",IDNum[i].dormitory);
printf("\t楼号:%.2d",IDNum[i].buildingnum);
printf("\n");
}
}
printf("\t电费余额:%.2d元\n",dormitory_fee[q]);
system("pause");
}
void Present_all(Student IDNum[],int n)
{
for(int i=1;i<=n;i++)
{
printf("\t姓名:%s ",IDNum[i].name);
printf("学号:%.2d ",IDNum[i].card);
printf("班级:%.2d ",IDNum[i].classroom);
printf("宿舍号:%.2d ",IDNum[i].dormitory);
printf("楼号:%.2d\n",IDNum[i].buildingnum);
}
system("pause");
}
int Addfromtxt(Student IDNum[],int n)
{
int num;
FILE *fp;
char filename[20];
printf("\t输入文件名:");
scanf("%s",&filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\t无法打开该文件\n");
printf("\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num);
int i=n+1;
while(i<=num+n)
{
fscanf(fp,"%s%d%d%d%d",IDNum[i].name,&IDNum[i].card,&IDNum[i].classroom,&IDNum[i].dormitory,&IDNum[i].buildingnum);
i++;
}
fclose(fp);
for(int j=n+1;j<=num+n;j++)
{
dormitory_people[IDNum[j].dormitory]++;
building[IDNum[j].buildingnum]++;
}
n+=num;
printf("\t读入成功!\n");
printf("\t\t");
system("pause");
return(n);
}
int main()
{
int n=0;
memset(dormitory_fee,0,sizeof(dormitory_fee));
for(;;)
{
switch(select_menu())
{
case 1:
printf("\t添加宿舍成员信息:\n");
n=Input(ID,n);
break;
case 2:
printf("\t修改宿舍成员信息:\n");
Change(ID,n);
break;
case 3:
printf("\t删除宿舍成员信息:\n");
n=Delete(ID,n);
break;
case 4:
printf("\t查询宿舍成员信息:\n");
Look_up(ID,n);
break;
case 5:
printf("\t显示楼栋人数:\n");
Present_floor();
break;
case 6:
printf("\t显示宿舍信息:\n");
Present_dormitory(ID,n);
break;
case 7:
printf("\t宿舍信息的浏览:\n");
Present_all(ID,n);
break;
case 8:
printf("\t将已有信息读入:\n");
n=Addfromtxt(ID,n);
break;
case 9:
printf("\t谢谢使用\n");
exit(0);
}
}
}
由于本人水平极其有限,请勿随便粘贴。。。

浙公网安备 33010602011771号