宿舍管理系统.docx
- 文档编号:9373819
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:18
- 大小:55.97KB
宿舍管理系统.docx
《宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
宿舍管理系统
需求分析
一编写目的
通过对用户需求进行调查分析,写出需求分析文档。
需求分析文档可作为项目设计的基本准则要求,也可作为系统分析员进行系统分析和测试的手册。
二需求概述
设计一个宿舍管理系统,使之提供以下功能:
(1)信息输入功能
(2)排序功能
(3)查询功能
三需求说明
1.学生的信息包括姓名、学号、房号和性别。
2.输入的学生信息要用文档形式保存,并可对其按姓名、学号、房号进行排序、查询。
3.所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,一户用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。
四总体设计
功能划分图
其中:
(1)用户登录功能,进入宿舍管理系统。
(2)菜单选择模块完成用户命令的接受,此模块是宿舍管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。
(3)学生信息输入模块学生信息的输入功能,输入信息包括姓名,学号,房号,性别。
(4)学生信息显示完成输入信息的显示。
(5)学生信息查询模块完成信息的查询,查询时对应有按姓名和按学号两种方式。
(6)学生信息修改模块完成学生信息的修改功能。
流程图
数据结构
本系统中主要的数据结构就是学生的信息,包含姓名,学号,房号,性别。
排序方法
本系统采用的是冒泡排序,基本思想是:
将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序R[1]>R[2],则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟起泡排序,结果关键字最大的记录被安置在最后一个记录上,对前n-1个记录进行第二趟起泡排序,结果使关键字次大的记录被安置在第n-1个记录位置,重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止。
程序
#include
#include
#include
#include
#include
#include
typedefstruct/*基本信息*/
{
charname[10];/*姓名*/
intnumber;/*学号*/
inthouse;/*房号*/
charsex;/*性别*/
}student;
studentinfo[200];
in()/*登录函数*/
{
charname[20];
intnum;
intnum1;
intchecknum;
//charture;
inti;
input:
printf("\t\t★**★**★**********◎欢迎◎************★**★**★\t\t\n");
printf("\t\t****★*********************************★****\t\t\n");
printf("\t\t\t\t☉姓名:
\n");
printf("\t\t\t\t☉密码:
\n");
printf("\t\t\t\t☉确认密码:
\n");
printf("\t\t\t\t☉验证码:
1234\n");
printf("\t\t★**★**★**************************★**★**★\t\t\n");
{
printf("请输入姓名:
\n");
fflush(stdin);
scanf("%s",name);
printf("请输入密码:
\n");
fflush(stdin);
scanf("%d",&num);
printf("请输入确认密码:
\n");
fflush(stdin);
scanf("%d",&num1);
printf("请输入验证码:
\n");
fflush(stdin);
scanf("%d",&checknum);
}
if(num==num1)
printf("\t\t\t登录成功!
\n");
else
{
printf("请再输入!
\n");
gotoinput;
}
for(i=0;i<10;i++)
{
printf(".");
Sleep(200);
}
//returnture;
}
charmenu()/*菜单函数*/
{
intn;
printf("\n\n");
system("cls");
printf("\t\t\t◎宿舍管理查询系统◎\n");
printf("\t**************************************************\t\n\n");
printf("\t\t\t☉1.输入信息\n\n");
printf("\t\t\t☉2.显示信息\n\n");
printf("\t\t\t☉3.排序\n\n");
printf("\t\t\t☉4.查询\n\n");
printf("\t\t\t☉5.修改\n\n");
printf("\t\t\t☉6.退出\n\n");
printf("\t***************************************************\t\n");
printf("\n");
printf("请输入你想进行的操作:
(1-6):
[]\b\b");
while
(1)
{
scanf("%d",&n);
getchar();
if(n<1||n>6)
printf("输入错误请再输一遍(1-6):
[]\b\b");
else
break;
}
returnn;
}
voidappend()/*信息输入函数*/
{
studentinfo;
FILE*fp;
charch;
if((fp=fopen("inform.txt","ab"))==NULL)
{
printf("\tCannotopentheinformfile!
");
getch();
exit
(1);
}
printf("\t\t\t输入信息\n");
do
{
printf("\t************************************************\t\n\n");
printf("\t\t\t◆姓名:
");
getchar();
gets(info.name);
getchar();
printf("\t\t\t◆学号:
");
scanf("%d",&info.number);
printf("\t\t\t◆房号:
");
scanf("%d",&info.house);
getchar();
printf("\t\t\t◆性别(f&m):
");
scanf("%c",&info.sex);
getchar();
printf("\t\t\t输入成功!
\n");
fwrite(&info,sizeof(student),1,fp);
printf("\tAnymore?
(Y/N):
[]\b\b");
ch=getchar();
getchar();
}while(ch=='Y'||ch=='y');
fclose(fp);
}
voidprintf1()
{
printf("%-8s%-8s%-8s%-10s\n","姓名","学号","房号","性别");
}
voidprintf2(studentinfo)
{
printf("%-8s%-8d%-8d%-10c\n",info.name,info.number,info.house,info.sex);
}
display(inttotal)/*信息显示函数*/
{
studentinfo;
FILE*fp;
total=0;
if((fp=fopen("inform.txt","rb"))==NULL)
{
printf("\tCannotopentheinformfile!
");
getch();
exit
(1);
}
while(fread(&info,sizeof(student),1,fp)==1)
{
total++;
if(total==1)
printf1();
printf2(info);
if((total!
=0)&&(total%5==0))
{
printf("\n\n\tpressanykeytocontinue......");
getch();
puts("\n\n");
printf1();
}
}
fclose(fp);
printf("\n\n\t共有%d条记录!
",total);
getch();
returntotal;
}
voidbubble(inttotal)
{
inti,j;
studenttemp;
for(i=0;i { for(j=0;j { if(info[j].number>info[j+1].number) { temp.number=info[j].number; info[j].number=info[j+1].number; info[j+1].number=temp.number; } } } } paixu(studentinfo[])/*排序*/ { studenttemp; intj,k=0; FILE*fp; if((fp=fopen("inform.txt","rb"))==NULL) { printf("\tCannotopentheinformfile! "); getch(); exit (1); } while(fread(&info[k],sizeof(student),1,fp)==1) { k++; } printf("\t\t\t排序\n"); printf("\t***********************************************\t\n"); printf("\t\t\t按学号排序\n"); bubble(k); printf1(); for(j=0;j { printf2(info[j]); } getch(); fclose(fp); } voidsearch(inttotal)/*信息查询函数*/ { charf; inta; studentinfo; FILE*fp; intflag; charch[10]; total=0; if((fp=fopen("inform.txt","rb"))==NULL) { printf("\tCannotopenthefile! "); getch(); exit (1); } do { rewind(fp); printf("\n\n查询按(1: 姓名2: 学号): []\b\b"); while (1) { scanf("%d",&flag); getchar(); if(flag<1||flag>2) printf("输入错误,请在输一遍(1: 姓名2: 学号): []\b\b"); else break; } if(flag==1)/*按姓名进行查询*/ { printf("请输入你想查找的姓名: "); gets(ch); total=0; while(fread(&info,sizeof(student),1,fp)==1) if(strcmp(ch,info.name)==0) { total++; if(total==1)printf1(); printf2(info); } } else/*按学号进行查询*/ { printf("请输入你想查找的学号: "); scanf("%d",&a); total=0; while(fread(&info,sizeof(student),1,fp)==1) if(info.number==a) { total++; if(total==1)printf1(); printf2(info); } } printf("\n\n\t共有%d条记录! \n",total); printf("继续查找吗? (Y/N): []\b\b"); f=getchar(); getchar(); }while(f=='Y'||f=='y'); fclose(fp); } modify()/*信息修改函数*/ { studentinfo; FILE*fp1,*fp2; intflag; intch; charf; do { if((fp1=fopen("inform.txt","rb"))==NULL) { printf("\tCannotopenthefile! "); getch(); exit (1); } if((fp2=fopen("temp.txt","wb"))==NULL) { printf("\tCannotopenthefile! "); getch(); exit (1); } printf("请输入你想修改的学号的学生: "); scanf("%d",&ch); flag=0; while(fread(&info,sizeof(student),1,fp1)==1) { if(info.number==ch) { printf("\n\n请输入新信息: \n"); printf("\t姓名: "); getchar(); gets(info.name); printf("\t学号: "); scanf("%d",&info.number); printf("\t房号: "); scanf("%d",&info.house); getchar(); printf("\t性别(f&m): "); scanf("%c",&info.sex); flag=1; } fwrite(&info,sizeof(student),1,fp2); } fclose(fp1); fclose(fp2); if(flag==1) { printf("修改成功! \n"); remove("inform.txt"); rename("temp.txt","inform.txt"); } else printf("没有找到! "); printf("继续修改吗? (Y/N): []\b\b"); f=getchar(); getchar(); }while(f=='Y'||f=='y'); } voidmain() { inttotal; in(); while (1) { switch(menu()) { case1: append(); break; case2: display(total); break; case3: paixu(info); break; case4: search(total); break; case5: modify(); break; case6: exit(0); break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍 管理 系统