您的位置:首页 > 其它

C 语言----宿舍管理系统 课程设计

2015-07-02 15:32 417 查看

以下是系统的代码:

#include <stdio.h>

#include <ctype.h>

#include <string.h>

#include <stdlib.h>

#include <windows.h>

#include <time.h>

#define N 58

int reads1(struct dormitory dor
);//学生信息

void save1(struct dormitory dor
,int n);//学生信息

int reads2(struct dormitory dor
);//晚归信息

void save2(struct dormitory dor
,int n);//晚归信息

int reads3(struct visitors vi
);//访客信息

void save3(struct visitors vi
,int n);//访客信息

void welcome();//欢迎页

void mainmenu1();//管理员菜单

void mainmenu2();//学生菜单

void open();//入住注册

void change1();//宿舍调整

void change2();//宿舍卫生修改

void delet();//老生迁出

void visitor();//访客登记

void visitor_delet();//访客删除

void postgraduate();//考研登记

void late();//晚归登记

void see_health();//宿舍卫生查询

void see_message();//个人信息查询

void see_late();//晚归查询

struct dormitory

{

char no[20];//学号

char name[58];//学生姓名

int age;//年龄

char sex[10];//性别

int sec;//密码

char faculty[20];//院系

int lou;//宿舍楼号

int su;//宿舍号

char health[100];//卫生情况

char later[100];//晚归

};

struct visitors

{

char visitor[20];//访客

char sex[10];//性别

int lou;//宿舍楼号

int su;//宿舍号

};

void welcome()

{

printf("\n");

printf("\n 欢迎进入黄淮学院宿舍管理系统 \n ");

printf("\n *******************************************************************\n");

printf(" \n 1.管理员系统 \n");

printf("\n *******************************************************************\n");

printf("\n 2.学生系统 \n");

printf("\n *******************************************************************\n");

printf("\n 0.退出系统 \n");

printf("\n *******************************************************************\n");

}

int main()

{

int choice;

int i;

int id;

int password;

printf("%s\n",__TIME__);

while(1)

{

welcome();

printf(" 请输入您的选择:");

scanf("%d",&choice);

switch(choice)

{

case 1:

for(i=0; i<3; i++){

printf("********************************************\n");

printf(" 请输入管理员账号:\n");

scanf("%d",&id);

printf("********************************************\n");

printf(" 请输入管理员密码:\n");

scanf("%d",&password);

if((id==4)&&(password==959395))

mainmenu1();

else

{

if (i < 2)

printf("用户名或密码错误,请重新输入!\n");

else

{printf("用户名或密码错误,达到输入上限,退出系统!\n");exit(0);}

}

}

case 2:

mainmenu2();

case 0:

printf("谢谢您使用本系统,欢迎您再次使用,再见。。。\n");exit(0);

default:

printf("输入有误!请重新输入:\n");

main();

}

}

return 0;

}

void mainmenu1()

{

int choice;

while(1)

{

printf("\n");

printf("\n");

printf("+-----------------------+\n");

printf("| 1.入住注册 |\n");

printf("| 2.宿舍调整 |\n");

printf("| 3.老生迁出 |\n");

printf("| 4.访客登记 |\n");

printf("| 5.访客删除 |\n");

printf("| 6.考研登记 |\n");

printf("| 7.晚归管理 |\n");

printf("| 8.宿舍卫生修改 |\n");

printf("| 0.返回主菜单 |\n");

printf("+-----------------------+\n");

printf("请输入您的选择:");

scanf("%d", &choice);

printf("\n");

printf("\n");

switch(choice)

{

case 0:

main();

case 1:

open();

mainmenu1();

case 2:

change1();

mainmenu1();

case 3:

delet();

mainmenu1();

case 4:

visitor();

mainmenu1();

case 5:

visitor_delet();

mainmenu1();

case 6:

postgraduate();

mainmenu1();

case 7:

late();

mainmenu1();

case 8:

change2();

mainmenu1();

default:

printf("输入错误,请重新输入。");

mainmenu1();

}

}

}

void mainmenu2()

{

int choice;

while(2)

{

printf("\n");

printf("\n");

printf("+-----------------------------------+\n");

printf("| 1.身份信息查询 |\n");

printf("| 2.宿舍卫生情况查询 |\n");

printf("| 3.晚归情况查询 |\n");

printf("| 0.返回主菜单 |\n");

printf("+-----------------------------------+\n");

printf("请输入您的选择:");

scanf("%d", &choice);

printf("\n");

printf("\n");

switch(choice)

{

case 0:

main();

case 1:

see_message();

mainmenu2();

case 2:

see_health();

mainmenu2();

case 3:

see_late();

mainmenu2();

default:

printf("输入错误,请重新输入。");

mainmenu2();

}

}

}

int reads1(struct dormitory dor
) // 读取学生信息内容

{

FILE *fp1;

int i=0;

if((fp1=fopen("d:\\file1.txt","r"))==NULL)

{

printf("文件打开失败!\n");

return 0;

}

else

{

for(i=0;!feof(fp1);i++)

{

fscanf(fp1, "\n%s",dor[i].no);

fscanf(fp1, "\n%s",dor[i].name);

fscanf(fp1, "\n%d",&dor[i].age);

fscanf(fp1, "\n%s",dor[i].sex);

fscanf(fp1, "\n%s",dor[i].faculty);

fscanf(fp1, "\n%d",&dor[i].sec);

fscanf(fp1, "\n%d",&dor[i].lou);

fscanf(fp1, "\n%d",&dor[i].su);

fscanf(fp1, "\n%s",dor[i].health);

}

}

fclose(fp1);

return i;

}

void save1(struct dormitory dor
,int n) // 学生修改后信息

{

FILE *fp1;

int i=0;

if((fp1=fopen("d:\\file1.txt","w"))==NULL)

{

printf("文件打开失败!\n");

return;

}

else

{

for(i=0;i<n-1;i++)

{

fprintf(fp1, "\n%s\n",dor[i].no);

fprintf(fp1, "\n%s\n",dor[i].name);

fprintf(fp1, "\n%d\n",dor[i].age);

fprintf(fp1, "\n%s\n",dor[i].sex);

fprintf(fp1, "\n%s\n",dor[i].faculty);

fprintf(fp1, "\n%d\n",dor[i].sec);

fprintf(fp1, "\n%d\n",dor[i].lou);

fprintf(fp1, "\n%d\n",dor[i].su);

fprintf(fp1, "\n%s\n",dor[i].health);

}

}

fclose(fp1);

}

int reads2(struct dormitory dor
) // 读取晚归情况

{

FILE *fp2;

int i=0;

if((fp2=fopen("d:\\file2.txt","r"))==NULL)

{

printf("文件打开失败!\n");

return 0;

}

else

{

for(i=0;!feof(fp2);i++)

{

fscanf(fp2, "\n%s",dor[i].no);

fscanf(fp2, "\n%s",dor[i].name);

fscanf(fp2, "\n%s",dor[i].faculty);

fscanf(fp2, "\n%d",&dor[i].lou);

fscanf(fp2, "\n%d",&dor[i].su);

fscanf(fp2, "\n%s",dor[i].later);

}

}

fclose(fp2);

return i;

}

void save2(struct dormitory dor
,int n) // 晚归情况

{

FILE *fp2;

int i=0;

if((fp2=fopen("d:\\file2.txt","w"))==NULL)

{

printf("文件打开失败!\n");

return;

}

else

{

for(i=0;i<n-1;i++)

{

fprintf(fp2, "\n%s\n",dor[i].no);

fprintf(fp2, "\n%s\n",dor[i].name);

fprintf(fp2, "\n%s\n",dor[i].faculty);

fprintf(fp2, "\n%d\n",dor[i].lou);

fprintf(fp2, "\n%d\n",dor[i].su);

fprintf(fp2, "\n%s\n",dor[i].later);

}

}

fclose(fp2);

}

int reads3(struct visitors vi
) // 读取访客内容

{

FILE *fp3;

int i=0;

if((fp3=fopen("d:\\file3.txt","r"))==NULL)

{

printf("文件打开失败!\n");

return 0;

}

else

{

for(i=0;!feof(fp3);i++)

{

fscanf(fp3,"\n%s",vi[i].visitor);

fscanf(fp3,"\n%s",vi[i].sex);

fscanf(fp3,"\n%d",&vi[i].lou);

fscanf(fp3,"\n%d",&vi[i].su);

}

}

fclose(fp3);

return i;

}

void save3(struct visitors vi
,int n) // 访客修改后信息

{

FILE *fp3;

int i=0;

if((fp3=fopen("d:\\file3.txt","w"))==NULL)

{

printf("文件打开失败!\n");

return;

}

else

{

for(i=0;i<n-1;i++)

{

fprintf(fp3,"\n%s\n",vi[i].visitor);

fprintf(fp3,"\n%s\n",vi[i].sex);

fprintf(fp3,"\n%d\n",vi[i].lou);

fprintf(fp3,"\n%d\n",vi[i].su);

}

}

fclose(fp3);

}

//考研登记

void postgraduate()

{

struct dormitory dor
;

int n,i,t;

char number[20];

printf("请输入学生的学号和密码,并按回车确认:");

scanf("%s%d",&number,&t);

n=reads1(dor);

for(i=0;i<n;i++)

if(strcmp(number,dor[i].no)==0 && t==dor[i].sec)

break;

if(i>n||t!=dor[i].sec)

{

printf("\n没有该学生信息或密码输入错误\n");

return;

}

else

{

printf("\n请输入考研学生的学号,并以回车确认:");

scanf("%s",dor[i].no);

}

save1(dor,n);

printf("\n登记成功\n");

}

void open()//入住注册

{

FILE *fp1;

struct dormitory * dor;

if((fp1=fopen("d:\\file1.txt","a"))==NULL)//如果文件存在,可以追加学生的信息

{

if((fp1=fopen("d:\\file1.txt","a"))==NULL)//文件不存在时,创建新文件,输入学生的信息

{

printf("用户不存在!\n");

return;

}

}

dor=(dormitory *) malloc(sizeof(struct dormitory));

printf("\n请输入学生学号,并以回车键确认:\n");

scanf("%s",dor->no);

fprintf(fp1,"\n%s\n",dor->no);

printf("\n请输入学生姓名,并以回车键确认:\n");

scanf("%s",dor->name);

fprintf(fp1,"\n%s\n",dor->name);

printf("\n请输入学生年龄,并以回车键确认:\n");

scanf("%d",&dor->age);

fprintf(fp1,"\n%d\n",dor->age);

printf("\n请输入学生性别,按回车键确认:\n");

scanf("%s",dor->sex);

fprintf(fp1,"\n%s\n",dor->sex);

printf("\n请输入学生院系,按回车键确认:\n");

scanf("%s",dor->faculty);

fprintf(fp1,"\n%s\n",dor->faculty);

printf("\n请输入学生密码,按回车键确认:\n");

scanf("%d",&dor->sec);

fprintf(fp1,"\n%d\n",dor->sec);

printf("\n请输入学生宿舍楼号,按回车键确认:\n");

scanf("%d",&dor->lou);

fprintf(fp1,"\n%d\n",dor->lou);

printf("\n请输入学生宿舍号,按回车键确认:\n");

scanf("%d",&dor->su);

fprintf(fp1,"\n%d\n",dor->su);

printf("\n请输入学生宿舍卫生的情况,按回车键确认:\n");

scanf("%s",dor->health);

fprintf(fp1,"\n%s\n",dor->health);

printf("\n************注册成功**********\n");

fclose(fp1);

}

//老生迁出

void delet()

{

struct dormitory dor
;

char student[20];

int n,i,j;

n=reads1(dor);

printf("\n请输入要迁出的学生的学号:");

scanf("%s",student);

for(i=0;i<n;i++)

if(strcmp(student,dor[i].no)==0)

break;

if(i>=n)

{

printf("没有找到该学生的信息\n");

return;

}

else{

for(j=i+1;j<n;j++)

dor[j-1]=dor[j];

}

save1(dor,n-1);

printf("迁出成功\n");

}

//宿舍调整

void change1()

{

struct dormitory dor
;

int n,i;

int t;

char number[20];

printf("\n请输入学生的学号和密码,并以回车键确认:");

scanf("%s%d",&number,&t);

n=reads1(dor);

for(i=0;i<n;i++)

if(strcmp(number,dor[i].no)==0)

break;

if(i>=n)

{

printf("\n无此学生信息\n");

return;

}

else

{

printf("\n请输入修改后宿舍号,并以回车键确认:\n");

scanf("%d",&dor[i].su);

}

save1(dor,n);

printf("\n修改成功\n");

}

//宿舍卫生修改

void change2()

{

struct dormitory dor
;

int n,i;

int t;

int su;

printf("\n请输入卫生需要修改的宿舍号,并以回车键确认:");

scanf("%d",&su);

n=reads1(dor);

for(i=0;i<n;i++)

if(dor[i].su==su)

break;

if(i>=n)

{

printf("\n无此学生信息\n");

return;

}

else

{

printf("\n请输入卫生情况的修改,并以回车键确认:\n");

scanf("%s",dor[i].health);

}

save1(dor,n);

printf("\n修改成功\n");

}

//卫生情况查询

void see_health()

{

struct dormitory dor
;

int n,i;

int se;

printf("\n请输入学生的宿舍号,并以回车键确认:");

scanf("%d",&se);

n=reads1(dor);

for(i=0;i<n;i++)

if(dor[i].su==se)

break;

if(i>=n)

{

printf("\n无此宿舍的信息\n");

return;

}

else

{

printf("\n|-------------|-------------|---------------|");

printf("\n| 宿舍楼号 | 宿舍号 | 卫生情况 |");

printf("\n|-------------|-------------|---------------|");

printf("\n| %d | %d | %s |" ,dor[i].lou,dor[i].su,dor[i].health);

printf("\n|-------------|-------------|---------------|");

}

save1(dor,n);

printf("\n查询成功\n");

}

void visitor()//访客登记

{

FILE *fp3;

struct visitors * vi;

if((fp3=fopen("d:\\file3.txt","a"))==NULL)//如果文件存在,可以追加用户信息

{

if((fp3=fopen("d:\\file3.txt","w"))==NULL)//文件不存在时,创建新文件,输入用户信息

{

printf("访客不存在!\n");

return;

}

}

vi=(visitors *)malloc(sizeof(struct visitors));

printf("请输入你的姓名:\n");

scanf("%s",vi->visitor);

fprintf(fp3,"\n%s\n",vi->visitor);

printf("请输入你的性别:\n");

scanf("%s",vi->sex);

fprintf(fp3,"\n%s\n",vi->sex);

printf("请输入你所在的宿舍楼号:\n");

scanf("%d",&vi->lou);

fprintf(fp3,"\n%d\n",vi->lou);

printf("请输入你所要访问的宿舍号:\n");

scanf("%d",&vi->su);

fprintf(fp3,"\n%d\n",vi->su);

printf("\n************登记成功**********\n");

fclose(fp3);

}

void visitor_delet()//访客删除

{

struct visitors vi
;

char name[20];

int n,i,j;

n=reads3(vi);

printf("\n请输入要要删除的访客的姓名:");

scanf("%s",name);

for(i=0;i<n;i++)

if(strcmp(name,vi[i].visitor)==0 )

{

break;

}

if(i>=n||strcmp(name,vi[i].visitor)!=0)

{

printf("没有找到该访客的信息\n");

return;

}

else{

for(j=i+1;j<n;j++)

vi[j-1]=vi[j];

}

save3(vi,n-1);

printf("删除成功\n");

}

void see_message()//个人信息查询

{

struct dormitory dor
;

int n,i;

int t;

char number[20];

printf("\n请输入学号,密码,并以回车键确认:");

scanf("%s %d",number,&t);

n=reads1(dor);

for(i=0;i<n;i++)

if(strcmp(number,dor[i].no)==0 && t==dor[i].sec)

break;

if(i>=n||strcmp(number,dor[i].no)!=0||t!=dor[i].sec)

{

printf("\n无此储户信息\n");

return;

}

else

{

printf(" 学号 姓名 年龄 性别 院系 楼号 宿舍号 \n");

printf("| %s | %s | %d | %s | %s | %d | %d |\n",dor[i].no,dor[i].name,dor[i].age,dor[i].sex,dor[i].faculty,dor[i].lou,dor[i].su);}

save1(dor,n);

printf("\n查询成功\n");

}

void late()//晚归登记

{

FILE *fp2;

struct dormitory * dor ;

float time;

int len;

char c1[]="晚归",c2[]="考研生",c3[]="无晚归";

if((fp2=fopen("d:\\file2.txt","a"))==NULL)//如果文件存在,可以追加用户信息

{

if((fp2=fopen("d:\\file2.txt","w"))==NULL)//文件不存在时,创建新文件,输入用户信息

{

printf("访客不存在!\n");

return;

}

}

dor=(dormitory *)malloc(sizeof(struct dormitory));

printf("\n请输入学生学号,并以回车键确认:\n");

scanf("%s",dor->no);

fprintf(fp2,"\n%s\n",dor->no);

len=strlen(dor->no);//读取学号的长度

printf("\n请输入学生姓名,并以回车键确认:\n");

scanf("%s",dor->name);

fprintf(fp2,"\n%s\n",dor->name);

printf("\n请输入学生院系,按回车键确认:\n");

scanf("%s",dor->faculty);

fprintf(fp2,"\n%s\n",dor->faculty);

printf("\n请输入学生宿舍楼号,按回车键确认:\n");

scanf("%d",&dor->lou);

fprintf(fp2,"\n%d\n",dor->lou);

printf("\n请输入学生宿舍号,按回车键确认:\n");

scanf("%d",&dor->su);

fprintf(fp2,"\n%d\n",dor->su);

tm t;

_getsystime(&t);

if((t.tm_hour<6 || t.tm_hour>23) && len<11)

{

strcpy(dor->later,c1);

}

else if((0<t.tm_hour<6 || t.tm_hour>23) && len>=11)

{

strcpy(dor->later,c2);

}

else

{

strcpy(dor->later,c3);

}

fprintf(fp2,"\n%s\n",dor->later);

printf("\n************登记成功**********\n");

fclose(fp2);

}

void see_late()//晚归查询

{

struct dormitory dor
;

int i=0,n;

char number[20];

printf("\n请输入你要查询的学生的学号,并以回车键确认:");

scanf("%s",number);

n=reads2(dor);

for(i=0;i<n;i++)

if(strcmp(number,dor[i].no)==0)

break;

if(i>=n||strcmp(number,dor[i].no)!=0)

{

printf("\n无此储户信息\n");

return;

}

else

{

printf(" 学号 姓名 院系 楼号 宿舍号 晚归情况\n");

printf("| %s | %s | %s | %d | %d | %s |\n",dor[i].no,dor[i].name,dor[i].faculty,dor[i].lou,dor[i].su,dor[i].later);

}

save2(dor,n);

printf("\n查询成功\n");

}

这是欢迎页面:



这是管理员系统功能页面:



这是学生功能系统页面:



本系统的功能主要是信息输入保存管理和信息的查询。用到了结构体和文件的内容。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: