当前位置:文档之家› C语言宿舍管理系统源程序

C语言宿舍管理系统源程序





/*源程序 学生宿舍管理系统(domitry.txt)*/
/*程序中用到的头文件*/
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
#define MAX 100 /*数组元素的个数*/
#define PRINT1 printf(" \n");
#define PRINT2 printf("学号----学生姓名-性别-年龄--年级--班级--专业--楼号--楼层号---房间号--床号\n\n");
int sum;
/*定义结构体数组*/
struct stu
{ char name[20]; /*姓名*/
int num; /*学号*/
char sex; /*性别*/
int age; /*年龄*/
int grade; /*年级*/
int banji;/*班级*/
char zhuanye[30];/*专业*/
};
struct dom
{ int bui_num; /*楼号*/
int floor_num; /*楼层号*/
int room_num; /*房间号*/
int bed_num; /*床号*/
struct stu st;
}s[MAX],p;
/*密码模块*/
int login_message()
{ char mima[]="123456";
char str[10]={0},ch;
int i=0,n=strlen(mima),num=0,flag=0;
do
{
printf("请输入密码(你只有三次机会):\n");
for(i=0;i{
ch=getch();
if(ch!='\n')
{
putchar('*');
str[i]=ch;
}
}

getchar();
if(strcmp(str,mima)==0)
{ printf("密码正确\n");
flag=1;
}
else
{ printf("密码错误,请重新输入:\n");
num++;
}
}while(flag==0&&num<3);
return flag;

}

/*函数声明*/
void save_message();
int input_message();
int read_message();
void output_message();
int insert_message();
int del_message();
int revise_message();
int renew_message();
int inquire_message();
int count_message();
int sort_num();
int sort_conidition();
int sort_message();
/*保存信息*/
void save_message(int sum)
{
FILE *fp;
int i;
if((fp=fopen("dom.txt","wt"))==NULL)
{
printf("文件打开失败!\n");
exit(1);
}
for(i=0;i{ printf("学号----学生姓名-性别-年龄--年级--班级--专业--楼号--楼层号---房间号--床号");
fprintf(fp,"\n%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
printf("\n");
}
fclose(fp);
}


/*输入模块*/
int input_message()
{ int i=0;
system("cls");
printf("\n\n 录入学生信息(最多%d个)\n",MAX);
printf(" ______________________\n");
do
{
printf("\n 第%d个学生\n\n",i+1);
printf("\n 学号:");
scanf("%d",&s[i].st.num);
if(s[i].st.num==0) break;
printf("\n 学生姓名:");
scanf("%s",s[i]https://www.doczj.com/doc/f81999781.html,);
printf("\n 学生性别(男生用M表示,女生用F表示):");
getchar();
scanf("%c",&s[i].st.sex);
printf("\n 学生年龄:");
scanf("%d",&s[i].st.age);
printf("\n 学生年级:");
scanf("%d",&s[i].st.grade);
printf("\n 学生班级

:");
scanf("%d",&s[i].st.banji);
printf("\n 学生专业:");
scanf("%s",&s[i].st.zhuanye);
printf("\n 宿舍楼号:");
scanf("%d",&s[i].bui_num);
printf("\n 宿舍楼层号:");
scanf("%d",&s[i].floor_num);
printf("\n 宿舍房间号:");
scanf("%d",&s[i].room_num);
printf("\n 宿舍床号:");
scanf("%d",&s[i].bed_num);
i++;
}while(iprintf("\n ---%d个学生的信息输入完毕---\n",i);
sum=i;
printf("\n 按任意键返回主菜单!");
getchar();
getch();
return sum;
}

/*读取信息
int read_message()
{ FILE *fp;
int i=0,sum;
if((fp=fopen("dom.txt","rt"))==NULL)
{
printf("文件打开失败!\n");
exit(1);
}
while(!feof(fp))
for(i=0;i{
fscanf(fp,"%d%s%c%d%d%d%s%d%d%d%d",&s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,&s[i].st.sex,&s[i].st.age,&s[i].st.grade,&s[i].st.banji,s[i].st.zhuanye,&s[i].bui_num,&s[i].floor_num,&s[i].room_num,&s[i].bed_num);

}
fclose(fp);
return i=0;

for(i=0;i{
printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);

}

}*/
/*输出模块*/
void output_message()
{ int i=0;
system("cls");
printf("\n\n ---学生信息列表--- \n\n");
PRINT1;
PRINT2;
for(i=0;iif(s[i].st.num!=0)
{ printf("\n%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
getch();
}
}
/*添加学生信息*/
int insert_message()
{ int i=sum,flag=0;
char choice;
system("cls");
printf("\n\n 添加一个新同学\n");
printf(" ______________\n");
do
{ printf("\n 新学号:");
scanf("%d",&s[i].st.num);
printf("\n 学生姓名:");
scanf("%s",s[i]https://www.doczj.com/doc/f81999781.html,);
printf("\n 学生性别(男生用M表示,女生用F表示):");
getchar();
scanf("%c",&s[i].st.sex);
printf("\n 学生年龄:");
scanf("%d",&s[i].st.age);
printf("\n 学生年级:");
scanf("%d",&s[i].st.grade);
printf("\n 学生班级:");
scanf("%d",&s[i].st.banji);
printf("\n 学生专业:");
scanf("%s",&s[i].st.zhuanye);
printf("\n 宿舍楼号:");
scanf("%d",&s[i].bui_num);
printf("\n 宿舍楼层号:");
scanf("%d",&s[i].floor_num);
printf("\n 宿舍房间号:");
scanf("%d",&s[i].room_num);
printf("\n 宿舍床号:");
scanf("%d",&s[i].bed_num);
sum++;
printf("\n 要继续吗(Y/N)");
getchar();
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{ flag=1;
i++;
printf("\n 继续!\n");
}
else flag=0;
}while(flag==1);
printf("\n 按任意键回主菜单!");
return 0;
}
/*删除模块*/
int del_message()
{
int flg,del_num,i,k,flag=0;
char choice;
do
{
system("cls");
printf("\n

输入要删除的学生学号:");
scanf("%d",&del_num);
for(i=0;flag==0&&iif(del_num==s[i].st.num)
{
for(k=i;ks[k]=s[k+1];
flag=1;
sum--;
break;
}
if(flag==1)
printf("删除成功!\n");
printf("按任意键继续...\n");
getch();
printf("\n\n 继续吗?(Y/N)");
getchar();
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{ flg=1;
printf("\n 继续!\n");
}
else flg=0;
}while(flg==1);
printf("\n 按任意键返回主菜单!");
getchar();
return 0;
}

/*修改模块*/
int revise_message()
{ int i=0,choices,revise_num,flag=0;
char name[20];
int num;
char sex;
int age;
int grade;
int banji;
char zhuanye[30];
int bui_num;
int floor_num;
int room_num;
int bed_num;
//int sum=read_message();
int sum=MAX;
do
{ system("cls");
printf("\n 输入要修改的学生号:");
scanf("%d",&revise_num);
for(i=0;iif(i==revise_num)
{ printf("\n ----学生信息----\n");
PRINT1;
PRINT2;
printf("%2d%s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
printf("\n 您需要修改哪一项?\n");
printf("\n 1.学号\n");
printf("\n 2.姓名\n");
printf("\n 3.性别\n");
printf("\n 4.年龄\n");
printf("\n 5.年级\n");
printf("\n 6.班级\n");
printf("\n 7.专业\n");
printf("\n 8.楼号\n");
printf("\n 9.楼层号\n");
printf("\n 10.房间号\n");
printf("\n 11.床号\n");
printf("\n 请选择(1-11):");
scanf("%d",&choices);
switch(choices)
{ case 1: printf("\n 请输入修改后的学号");
flushall();
scanf("%d",&num);
s[i].st.num=num;
break;
case 2: printf("\n 请输入修改后的姓名");
flushall();
scanf("%s",name);
strcpy(s[i]https://www.doczj.com/doc/f81999781.html,,name);
break;
case 3: printf("\n 请输入修改后的性别");
flushall();
scanf("%c",&sex);
s[i].st.sex=sex;
break;
case 4: printf("\n 请输入修改后的年龄");
flushall();
scanf("%d",&age);
s[i].st.age=age;
break;
case 5: printf("\n 请输入修改后的年级");
flushall();
scanf("%d",&grade);
s[i].st.grade=grade;
break;
case 6: printf("\n 请输入修改后的班级");
flushall();
scanf("%d",&banji);
s[i].st.banji=banji;
break;
case 7: printf("\n 请输入修改后的专业");
flushall();
scanf("%s",zhuanye);
strcpy(s[i].st.zhuanye,zhuanye);
break;
case 8: printf("\n

请输入修改后的楼号");
flushall();
scanf("%d",&bui_num);
s[i].bui_num=bui_num;
break;
case 9: printf("\n 请输入修改后的楼层号");
flushall();
scanf("%d",&floor_num);
s[i].floor_num=floor_num;
break;
case 10: printf("\n 请输入修改后的房间号");
flushall();
scanf("%d",&room_num);
s[i].room_num=room_num;
break;
case 11: printf("\n 请输入修改后的床号");
flushall();
scanf("%d",&bed_num);
s[i].bed_num=bed_num;
break;
}
PRINT1;
PRINT2;
printf("%2d%s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
break;
}
if(i==sum)
printf("\n 该学生不存在!");
getch();
return 0;
/* printf("\n\n 继续修改吗?(Y/N)");
getchar();
scanf("%c",&choice);
if(choice=='y'||choice=='Y')
{ flag=1;
printf("\n 继续!\n");
}
else flag=0; */
}while(flag==1);
getchar();
printf("\n 按任意键返回主菜单!");
return 0;
}
/*更新模块*/
int renew_message()
{ int choice;
do
{ printf("\n\n\n *****更新学生信息*****\n\n");
printf(" 1.添加学生信息\n\n");
printf(" 2.删除学生信息\n\n");
printf(" 3.修改学生信息\n\n");
printf(" 0.返回主菜单\n\n");
printf(" 请选择(0-3):\n\n");
scanf("%d",&choice);
switch(choice)
{ case 1: insert_message();break;
case 2: del_message();break;
case 3: revise_message();break;
case 0: break;
}
} while(choice!=0);
return 0;
}
inquire_name() /*按姓名查询*/
{ int i,j=0;
char inquire_name[10];
printf("\n 输入要查询的学生姓名:");
scanf("%s",inquire_name);
for(i=0;iif(strcmp(s[i]https://www.doczj.com/doc/f81999781.html,,inquire_name)==0&&s[i].st.num!=0)
{ printf("\n ---学生信息--- \n");
PRINT1;
PRINT2;
printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
printf("\n");
}else j++;
if(j==sum)
printf("\n 该学生不存在!");
return 0;
}
int inquire_num() /*按学号查询*/
{ int i,j=0,inquire_num;
printf("\n 输入要查询的学生学号:");
scanf("%d",&inquire_num);
for(i=0;iif(inquire_num==s[i].st.num)
{ printf("\n ---学生信息--- \n");
PRINT1;
PRINT2;
printf("%2d%10s%6c%7d%6d%5d%8s%5d%6d%8d%9d\n\n",s[i].st.num,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.sex,s[i].st.age,s[i].st.grade,s[i].st.banji,s[i].st.zhuanye,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
printf("\n");
}else j++;
if(j==sum)
printf("\n 该学生不存在!");
return 0;
}
/*查询模块*/
inquire_message()
{ int choice;

do
{ printf("\n\n\n *****查询学生信息*****\n\n");
printf("

1.按学生姓名查询\n\n");
printf(" 2.按学生学号查询\n\n");
printf(" 0.返回主菜单\n\n");
printf(" 请选择(0-2):\n\n");
scanf("%d",&choice);
switch(choice)
{ case 1: inquire_name();break;
case 2: inquire_num();break;
case 0: break;
}
} while(choice!=0);
return 0;
}
count_person() /*按宿舍住宿情况统计*/
{ int i,j=0,count_grade,count_banji;
int sum=MAX,counttj=0;
char count_zhuanye[20];
printf("\n 输入要统计的学生的专业,年级,班级:");
scanf("%10s %8d %8d",&count_zhuanye,&count_grade,&count_banji);
printf("\n 住宿情况");
printf("\n ----------------\n");
printf("\n 姓名 学号 楼号 楼层号 房间号 床号\n");
for(i=0;iif(s[i].st.grade==count_grade&&s[i].st.banji==count_banji&&strcmp(s[i].st.zhuanye,count_zhuanye)==0)
{printf("\n%10s%8d%8d%8d%8d%8d\n",s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.num,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
counttj+=1;
}
else j++;
if(j==sum)
printf("\n 该学生不存在!");
else
printf("所统计的人数总和为%d\n",counttj);
return 0;
}
/*统计模块*/
count_message()
{ int choice;
do
{ printf("\n\n *****统计学生信息*****\n");
printf(" 1.学生住宿情况统计\n");
printf(" 0.返回主菜单\n");
printf(" 请选择(0-1):\n");
scanf("%d",&choice);
switch(choice)
{ case 1: count_person();break;
case 0: break;
}
} while(choice!=0);
return 0;
}
sort_num() /*按学号排序*/
{ int i,j,k,t;
system("cls");
printf("\n 宿舍排序\n");
printf(" \n");
printf("\n 排序 姓名 学号 性别 楼号 楼层号 房间号 床号\n");
for(i=0;i{ k=i;
for(j=i+1;j{ if(s[i].st.num>s[j].st.num)
k=j;
}
t=s[i].st.num;
s[i].st.num=s[k].st.num;
s[k].st.num=t;
}
printf("\n\n\n");
for(i=0;i{ printf("\n%12d%8s%8d%8c%8d%8d%8d%6d\n\n",i+1,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.num,s[i].st.sex,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
}
getchar();

}
sort_conidition() /*学生宿舍情况排序*/
{ int i,j;
printf("\n 宿舍排序\n");
printf(" \n");
printf("\n 排序 姓名 学号 性别 楼号 楼层号 房间号 床号\n");
for(i=0;i{ for(j=i+1;jif(s[i].bui_num>s[j].bui_num)
{ p=s[i];
s[i]=s[j];
s[j]=p;
}
else if(s[i].bui_num==s[j].bui_num)
if(s[i].floor_num>s[j].floor_num)
{ p=s[i];
s[i]=s[j];
s[j]=p;
}
else if(s[i].floor_num==s[j].floor_num)
if(s[i].room_num>s[j].room_num)
{ p=s[i];
s[i]=s[j];
s[j]=p;
}
else if(s[i].room_num==s[j].room_num)
if(s[i].bed_num>s[j].bed_num)
{ p=s[i];
s[i]=s[j];

s[j]=p;
}

}
for(i=0;iif(s[i].st.num!=0)
printf("\n%12d%8s%8d%8c%8d%8d%8d%6d\n\n",i+1,s[i]https://www.doczj.com/doc/f81999781.html,,s[i].st.num,s[i].st.sex,s[i].bui_num,s[i].floor_num,s[i].room_num,s[i].bed_num);
return 0;
}
/*排序模块*/
sort_message()
{ int choice;
do
{ printf("\n\n *****宿舍排序*****\n");
printf(" 1.按学生学号排序\n");
printf(" 2.按学生住宿情况排序\n");
printf(" 0.返回主菜单!\n");
printf(" 请选择(0-1):\n");
scanf("%d",&choice);
switch(choice)
{ case 1: sort_num();break;
case 2: sort_conidition();break;
case 0: break;
}
} while(choice!=0);
return 0;
}

main()
{
int choice;
int sum;
//sum=read_message();
//getch();
sum=MAX;
if(login_message()==1)
do
{
system("cls");
printf("\n\n\n *****宿舍管理系统*****\n\n");
printf(" 1.录入学生信息\n\n");
printf(" 2.打印学生信息\n\n");
printf(" 3.更新学生信息\n\n");
printf(" 4.查询学生信息\n\n");
printf(" 5.统计学生信息\n\n");
printf(" 6.学生宿舍排序\n\n");
printf(" 7.储存学生信息\n\n");
//printf(" 8.读取学生信息\n\n");
printf(" 0.退出系统\n\n");
printf(" 请选择(0-8):");
scanf("%d",&choice);
switch(choice)
{ case 1: input_message(); break; /*录入模块*/
case 2: output_message();break; /*输出模块*/
case 3: renew_message();break; /*更新模块*/
case 4: inquire_message();break; /*查询模块*/
case 5: count_message();break; /*统计模块*/
case 6: sort_message();break; /*排序模块*/
case 7: save_message(sum);break;
// case 8:read_message(sum);break;
case 0: break; /*退出系统*/
}
}while(choice!=0);
save_message(sum);
printf("\n以上学生信息已保存!-(文件:domitry.txt)\n");
}

相关主题
文本预览
相关文档 最新文档