宿舍管理系统.docx
《宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
宿舍管理系统
《C语言程序设计》
题目宿舍管理系统
一、内容
主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学生的管理。
包括学生的姓名、学号、性别、专业、班级等等。
在编写过程中主要运用C语言的基本知识有:
数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的调用与使用)等
二、上机环境
操作系统:
WINXP
开发工具:
VC6.0
三、函数调用关系图
四、各函数功能说明
第一密码模块:
调用cipher(),进行管理者的注册与登录操作。
第二录入模块:
调用input_message(),对住宿学生信息进行录入。
第三添加模块:
调用append_message(),对新来学生信息进行添加录入。
第四修改模块:
调用revise_message(),对需修改学生的信息进行修改。
第五删除模块:
调用delete_message(),对某一学生信息进行删除操作。
第六查询模块:
调用find_message(),分别以姓名、学号、宿舍号对学生信息进行查询。
第七统计模块:
调用census_message(),分别以学号、宿舍号、性别、班级、专业方式五、算法描述或流程图
}
六、程序运行效果图
登陆界面
主函数流程图
主页界面
录入模块
录入界面
修改模块
修改界面
统计模块
统计界面
七、总结
通过本次上级实验我深深地体会到了自身知识的严重不足,依靠自己是完全不能做出这种程序的没有同学的帮助是不会做出这个程序的,在日后的学习中要加强自身修养,提高能力水平争取日后能独立做出此类程序。
八、参考文献
[1]湛为芳.C语言程序设计技术.清华大学出版社,2010
[2]谭浩强.C程序设计(第三版).清华大学出版社,2005
九、程序清单
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"io.h"
#defineN900
structcipher
{characcount[6];
charcode[6];
}m[10];
cipher()/*密码模块*/
{inti,k=0,flag,flag1,flag2,fno,fsize,fnum,choice;
characcount[6];
charcode[6],code1[6];
FILE*fp1;
printf("\n\n\n\n\n\n\n***********学生宿舍管理系统**********\n");
printf("*1.登陆*\n");
printf("*2.注册*\n");
printf("*************************************\n");
scanf("%d",&choice);
system("cls");
switch(choice)
{case1:
fp1=fopen("code.txt","rt");
if(fp1==NULL)
{printf("\n\n*****你还没有注册,按任意键退出!
");
getchar();
exit
(1);
}
fno=fileno(fp1);
fsize=filelength(fno);
fnum=fsize/sizeof(structcipher);
while(k<3)
{getchar();
system("cls");
printf("请输入账号:
");
gets(account);
printf("请输入密码:
");
gets(code);
for(i=0;i{fread(&m,sizeof(structcipher),1,fp1);
if(!
strcmp(m[i].account,account))flag1=0;
elseflag1=1;
if(!
strcmp(m[i].code,code))flag2=0;
elseflag2=1;
if(flag1==0&&flag2==0)
{fclose(fp1);
printf("登陆成功!
\n");
system("pause");
return1;
}
}
if(i==fnum)
{printf("输入的账号或密码有误,请重新输入!
");
k++;
}
}
printf("连续3次输入错误,退出!
\n");
system("pause");
exit
(1);
case2:
fp1=fopen("code.txt","at+");
if(fp1==NULL)
{printf("\n\n*****文件打开错误。
按任意键退出!
");
getchar();
exit
(1);
}
do
{system("cls");
getchar();
printf("请输入注册账号:
");
gets(m[0].account);
printf("请输入注册密码:
");
gets(m[0].code);
printf("请再次输入注册密码:
");
gets(code1);
if(!
strcmp(m[0].code,code1))
{fwrite(&m[0],sizeof(structcipher),1,fp1);
fclose(fp1);
flag=0;
}
else
{
printf("两次密码输入不同,请重新注册!
");
getchar();
flag=1;
}
}while(flag==1);
printf("注册成功!
\n");
getchar();
system("cls");
break;
}
return1;
}
structst_message/*学生信息*/
{
charname[20];/*学生姓名*/
chardorm[7];/*宿舍号*/
charnum[10];/*学号*/
charsex[5];/*性别*/
charage[4];/*年龄*/
charmajor[20];/*专业*/
charclasss[8];/*班级*/
}st[N],t;
voidsort_message()/*排序模块*/
{inti,j,fno,fsize,fnum;
FILE*fp;
fp=fopen("student.txt","rt+");
if(fp==NULL)
{printf("\n\n*****文件打开错误。
按任意键退出!
");
getchar();
exit
(1);
}
fno=fileno(fp);
fsize=filelength(fno);
fnum=fsize/sizeof(structst_message);
for(i=0;ifread(&st[i],sizeof(structst_message),1,fp);
for(i=0;ifor(j=i+1;jif(strcmp(st[i].num,st[j].num)>0)
{t=st[i];
st[i]=st[j];
st[j]=t;
}
rewind(fp);
for(i=0;ifwrite(&st[i],sizeof(structst_message),1,fp);
fclose(fp);
}
voidinput_message()/*录用信息模块*/
{inti;
charchoice;
FILE*fp;
fp=fopen("student.txt","at+");
if(fp==NULL)
{printf("\n\n*****库存文件不存在!
请建立。
按任意键退出!
");
getchar();
exit
(1);
}
for(i=0;;i++)
{system("cls");
getchar();
printf("请输入学生姓名:
");
gets(st[i].name);
printf("\n请输入学生班级:
");
gets(st[i].classs);
printf("\n请输入学生宿舍号:
");
gets(st[i].dorm);
printf("\n请输入学生学号:
");
gets(st[i].num);
printf("\n请输入学生性别:
");
gets(st[i].sex);
printf("\n请输入学生年龄:
");
gets(st[i].age);
printf("\n请输入学生专业:
");
gets(st[i].major);
fwrite(&st[i],sizeof(structst_message),1,fp);
printf("输入成功!
\n是否继续录入(Y/N)?
");
choice=getchar();
if(choice=='y'||choice=='Y')
continue;
else
{fclose(fp);
break;
}
}
}
voidappend_message()/*添加模块*/
{inti;
charchoice;
FILE*fp;
fp=fopen("student.txt","at+");
if(fp==NULL)
{printf("\n\n*****库存文件不存在!
请建立。
按任意键退出!
");
getchar();
exit
(1);
}
for(i=0;;i++)
{structst_messagest[N];
system("cls");
getchar();
printf("请输入所添加学生姓名:
");
gets(st[i].name);
printf("\n请输入所添加学生班级:
");
gets(st[i].classs);
printf("\n请输入所添加学生宿舍号:
");
gets(st[i].dorm);
printf("\n请输入所添加学生学号:
");
gets(st[i].num);
printf("\n请输入所添加学生性别:
");
gets(st[i].sex);
printf("\n请输入所添加学生年龄:
");
gets(st[i].age);
printf("\n请输入所添加学生专业:
");
gets(st[i].major);
fwrite(&st[i],sizeof(structst_message),1,fp);
printf("输入成功!
\n是否继续添加(Y/N)?
");
choice=getchar();
if(choice=='y'||choice=='Y')
continue;
else
{fclose(fp);
break;
}
}
}
revise_message()/*修改模块*/
{inti,choice,flag,fno,fsize,fnum;
charre_name[20],s[20];
FILE*fp;
do
{fp=fopen("student.txt","rt+");
fno=fileno(fp);
fsize=filelength(fno);
fnum=fsize/sizeof(structst_message);
system("cls");
gets(s);
printf("请输入需要修改的学生姓名:
");
gets(re_name);
for(i=0;i{
fread(&st[i],sizeof(structst_message),1,fp);
if(!
strcmp(re_name,st[i].name))
{printf("\n-----该学生信息-----\n\n");
printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");
printf("-----------------------------------------------------\n");
printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,
st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);
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");
scanf("%d",&choice);
switch(choice)
{case1:
printf("\n请输入修改后的学号:
");
scanf("%s",st[i].num);break;
case2:
printf("\n请输入修改后的姓名:
");
scanf("%s",st[i].name);break;
case3:
printf("\n请输入修改后的班级:
");
scanf("%s",st[i].classs);break;
case4:
printf("\n请输入修改后的宿舍号:
");
scanf("%s",st[i].dorm);break;
case5:
printf("\n请输入修改后的性别:
");
scanf("%s",st[i].sex);break;
case6:
printf("\n请输入修改后的年龄:
");
scanf("%s",st[i].age);break;
case7:
printf("\n请输入修改后的专业:
");
scanf("%s",st[i].major);break;
case8:
return1;
}
getchar();
system("cls");
printf("\n-----修改后的学生信息-----\n\n");
printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");
printf("-----------------------------------------------------\n");
printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,
st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);
rewind(fp);
fseek(fp,sizeof(structst_message)*i,0);
fwrite(&st[i],sizeof(structst_message),1,fp);
fclose(fp);
break;
}
}
if(i==fnum)
printf("\n该学生信息不存在!
");
printf("\n\n继续修改吗?
(Y/N)");
choice=getchar();
if(choice=='Y'||choice=='y')
{flag=1;
system("pause");
}
elseflag=0;
}while(flag==1);
return1;
}
delete_message()/*删除模块*/
{inti,j,choice,fno,fsize,fnum;
chard_num[10];
FILE*fp;
system("cls");
getchar();
fp=fopen("student.txt","rt");
if(fp==NULL)
{printf("\n\n*****库存文件不存在!
请先建立。
按任意键退出!
");
getchar();
exit
(1);
}
fno=fileno(fp);
fsize=filelength(fno);
fnum=fsize/sizeof(structst_message);
for(i=0;ifread(&st[i],sizeof(structst_message),1,fp);
printf("请输入需要删除学生的学号:
\n");
gets(d_num);
system("cls");
for(i=0;i{if(!
strcmp(d_num,st[i].num))
{printf("\n-----该学生信息-----\n\n");
printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");
printf("-----------------------------------------------------\n");
printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,
st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);
printf("\n是否删除该学生信息:
\n");
printf("1.是\n");
printf("2.否\n");
scanf("%d",&choice);
switch(choice)
{case1:
for(j=i;jst[j]=st[j+1];
rewind(fp);
fp=fopen("student.txt","wt");
for(i=0;ifwrite(&st[i],sizeof(structst_message),1,fp);
fclose(fp);
getchar();
break;
case2:
printf("按任意键返回主菜单!
");
getchar();
return0;
}
break;
}
}
if(i==fnum)
{printf("所查学生信息不存在,按任意键返回主菜单!
");
getchar();
return0;
}
printf("删除信息成功,按任意键返回主菜单!
");
return1;
}
find_message()/*查找信息模块*/
{inti,choice,flag,fno,fsize,fnum;
charf_name[20];
charf_num[10];
charf_dorm[7];
FILE*fp;
system("cls");
do
{sort_message();
fp=fopen("student.txt","rt");
if(fp==NULL)
{printf("\n\n*****库存文件不存在!
请先建立。
按任意键退出!
");
getchar();
exit
(1);
}
fno=fileno(fp);
fsize=filelength(fno);
fnum=fsize/sizeof(structst_message);
system("cls");
printf("请选择查询方式:
\n");
printf("1.按姓名查询\n");
printf("2.按学号查询\n");
printf("3.按宿舍号查询\n");
printf("4.返回主页\n");
scanf("%d",&choice);
system("cls");
getchar();
switch(choice)
{case1:
printf("请输入需要查询的姓名:
\n");
gets(f_name);
printf("\n-----该学生信息-----\n\n");
printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");
printf("-----------------------------------------------------\n");
for(i=0;iif(!
strcmp(f_name,st[i].name))
printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,
st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);
printf("-----------------------------------------------------\n");
break;
case2:
printf("请输入要查询的学号:
");
gets(f_num);
printf("\n-----该学生信息-----\n\n");
printf("学号------姓名----班级--宿舍号--性别--年龄--专业---\n");
printf("-----------------------------------------------------\n");
for(i=0;i{fread(&st[i],sizeof(structst_message),1,fp);
if(!
strcmp(f_num,st[i].num))
printf("%-8s%-6s%-4s%-6s%-4s%-4s%-20s\n",st[i].num,st[i].name,
st[i].classs,st[i].dorm,st[i].sex,st[i].age,st[i].major);
}
printf("-----------------------