宿舍管理查询软件.docx
《宿舍管理查询软件.docx》由会员分享,可在线阅读,更多相关《宿舍管理查询软件.docx(28页珍藏版)》请在冰豆网上搜索。
![宿舍管理查询软件.docx](https://file1.bdocx.com/fileroot1/2023-1/4/75ce828e-4c62-42dd-ab24-2ed18899b0ec/75ce828e-4c62-42dd-ab24-2ed18899b0ec1.gif)
宿舍管理查询软件
数据结构课程设计报告
题目:
宿舍管理查询软件
院(系):
____________
专业:
___________
班级:
______________
学生:
___________________
学号:
______________
指导老师:
______________
2014年6月
目录
中文摘要………………………………………………………………3
英文摘要………………………………………………………………4
1方案设计……………………………………………………………6
1.1任务………………………………………………………………………6
1.1.1程序设计要求……………………………………………………6
1.1.2查询菜单:
(用二分查找实现以下操作)……………………6
1.1.3打印任一查询结果(可以连续操作)…………………………6
1.2功能………………………………………………………………………6
2线性表的顺序存储…………………………………………………6
2.1存储结构……………………………………………………………………6
2.2程序结构图…………………………………………………………………7
3程序代码……………………………………………………………7
4调试分析…………………………………………………………18
4.1使用方法…………………………………………………………………18
4.2测试数据…………………………………………………………………18
4.2.1测试数据选择……………………………………………………18
4.3测试输出结果……………………………………………………………18
4.3.1欢迎界面…………………………………………………………18
4.3.2按任意键进入创维界面…………………………………………19
4.3.3输入数据,开始创建……………………………………………19
4.3.4请按键选择操作…………………………………………………20
4.3.5按姓名排序………………………………………………………20
4.3.6按学号排序………………………………………………………21
4.3.7按房号排序………………………………………………………21
4.3.8按姓名查找………………………………………………………22
4.3.9按学号查找………………………………………………………23
4.3.10按房号查找……………………………………………………24
4.3.11退出……………………………………………………………25
4.4分析结果…………………………………………………………………25
总结……………………………………………………………………26
致谢……………………………………………………………………27
参考文献………………………………………………………………28
宿舍管理查询软件
摘要
在校学生的信息管理是校园管理中的一个重要内容,随着国家扩招政策的继续实施,学生数量也不断增加、信息的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。
如何记录和管理好学生的信息,对学生实施高效的宏观管理,对学生出入宿舍以及学生注入和迁出的信息的灵活的记录及更新,是一项繁重而艰巨的任务。
关键词:
C++,宿舍信息查询,宿舍信息管理
Dormitorymanagementquerysoftware
Abstract
Theinformationmanagement ofcollegestudents isanimportantpartof campusmanagement, alongwiththenational enrollmentpolicy toimplement, contactthestudent quantityisincreasing, information ofthecontinuousrefinement, industriescontinueto close, therequirementsforpersonnelmanagement isalsorising. Howtorecordand managethestudents' information,theimplementationofmacroeconomicmanagement andefficient forstudents, recordand update onstudent dormitory andflexible access into andout ofthe student information, isaheavyand arduoustask.
Keywords:
C++, dormitoryinformation query, dormitorymanagementinformation
1方案设计
1.1任务
为宿舍管理人员编写一个宿舍管理查询软件
1.1.1程序设计要求
①采用交互工作方式
②建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
1.1.2查询菜单:
(用二分查找实现以下操作)
①按姓名查询
②按学号查询
③按房号查询
1.1.3打印任一查询结果(可以连续操作)
1.2功能
根据上述要求,我们开始考虑系统应具备的功能:
①要实现交互工作方式,各项操作结束后均应返回主菜单;
②系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;
③信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;
④本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;
⑤由于有些同学因为不同原因而离校,所以设计了删除功能;
⑥由于有新同学入校,所以设计了插入功能;
⑦当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。
算法设计
2线性表的顺序存储
2.1存储结构
本系统定义的存储结构采用结构体数组,结构体为:
typedefstruct//定义结构体成员
{
charname[20];
intnum;//学号和房号都为整型
introom;
}stu;
stustud;
typedefstruct
{
intlength;//当前长度
stu*elem;//存储空间基址
intlistsize;//当前分配的存储容量
}linklist;
2.2程序结构图为
3程序代码
#include
#include
#include
#defineN40
#defineincrease10
intf,t=0;
typedefstruct
{
charname[20];
intnum;
introom;
}stu;
stustud;
typedefstruct
{
intlength;
stu*elem;
intlistsize;
}linklist;
voidinit(linklist&l)
{
l.length=0;
l.elem=(stu*)malloc(N*sizeof(stu));
l.listsize=N;
}
voidmenu()
{
printf("\n");
printf("***************请按键选择操作****************\n");
printf("\n");printf("\n");
printf("1按姓名排序2按学号排序\n");
printf("\n");
printf("3按房号排序4按姓名查找\n");
printf("\n");
printf("5按学号查找6按房号查找\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("提示:
当输入的数字键为0时,退出操作\n");
if(t==1)
{
printf("请输入数字键(1~6为操作键):
");
scanf("%d",&f);
if(f<0||f>7)
{
system("cls");
printf("\n");
printf("输入数字不对,请在原处重输!
\n");printf("\n");
menu();
}
}
}
voiddisp()
{
charc;
fflush(stdin);
printf("\n");
printf("请按任意键进入主界面:
");
scanf("%c",&c);
system("cls");
}
voidpanduan3()
{
printf("\n");
printf("已无学生记录\n");
printf("\n");
disp();
menu();
}
voidshuru(linklistl)
{
printf("请输入姓名:
");
fflush(stdin);
gets(stud.name);
printf("请输入学号:
");
scanf("%d",&stud.num);
printf("请输入房号:
");
scanf("%d",&stud.room);
}
voidcreate(linklist&l)
{
if(l.length>=l.listsize)
{
stu*newbase;
newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu));
l.elem=newbase;
l.listsize+=increase;
}
inti=2;
charch;
printf("\n");
printf("******************开始创建线性表**********************\n");
printf("\n");
printf("请输入第1个学生的信息\n");
shuru(l);
ch=getchar();
strcpy(l.elem[l.length].name,stud.name);
l.elem[l.length].num=stud.num;
l.elem[l.length].room=stud.room;
l.length++;
printf("\n");
printf("是否继续输入?
:
");
scanf("%c",&ch);
printf("\n");printf("\n");
while(ch=='y')
{
printf("请输入第%d个学生的信息\n",i);
shuru(l);
strcpy(l.elem[l.length].name,stud.name);
l.elem[l.length].num=stud.num;
l.elem[l.length].room=stud.room;
l.length++;
i++;
ch=getchar();printf("\n");
printf("是否继续输入?
:
");
scanf("%c",&ch);
printf("\n");printf("\n");
}
if(ch=='n')system("cls");
}
voidsort3(linklist&l)
{
inti,j;
stutemp;
for(i=0;ifor(j=i+1;jif(l.elem[i].room>l.elem[j].room)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}
}
voidsort2(linklist&l)
{
inti,j;
stutemp;
for(i=0;ifor(j=i+1;jif(l.elem[i].num>l.elem[j].num)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}
}
voidsort1(linklist&l)
{
inti,j;
stutemp;
for(i=0;ifor(j=i+1;jif(strcmp(l.elem[i].name,l.elem[j].name)>0)
{
temp=l.elem[i];
l.elem[i]=l.elem[j];
l.elem[j]=temp;
}
}
voidprint1(linklist&l)
{
inti;
printf("\n");
printf("姓名学号房号\n");printf("\n");
for(i=0;iprintf("%-15s%-3d%5d\n",l.elem[i].name,l.elem[i].num,l.elem[i].room);
}
voidprint2(linklist&l,intmid)
{
printf("查找成功----->该学生信息为:
\n");
printf("姓名学号房号\n");printf("\n");
printf("%-15s%-5d%-5d\n",l.elem[mid].name,l.elem[mid].num,l.elem[mid].room);
}
intpanduan1(charch)
{
scanf("%c",&ch);
printf("是否继续查找?
:
");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y')
{
system("cls");
return
(1);
}
else
return0;
}
intpanduan2(charch)
{
scanf("%c",&ch);
printf("该学生不存在,是否继续查找?
:
");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y')
{
system("cls");
return
(1);
}
else
return0;
}
voidchazhao3(linklist&l)
{
if(l.length==0)panduan3();
else
{
intlow=0,high=l.length,mid,flag=0;
intm;
charch;
printf("\n");printf("\n");
printf("按房号查找----->请输入要查找的房号:
");
scanf("%d",&m);
printf("\n");
while(low<=high)
{
mid=(low+high)/2;
if(m==l.elem[mid].room)
{
flag=1;
break;
}
elseif(m>l.elem[mid].room)
low=mid+1;
else
high=mid-1;
}
if(flag==1)
{
print2(l,mid);
if(panduan1(ch))
chazhao3(l);
else
{
system("cls");
menu();
}
}
else
{
if(panduan2(ch))
chazhao3(l);
else
{
system("cls");
menu();
}
}
}
}
voidchazhao2(linklist&l)
{
if(l.length==0)panduan3();
else
{
intlow=0,high=l.length,mid,flag=0;
intn;
charch;
printf("\n");printf("\n");
printf("按学号查找----->请输入要查找的学号:
");
scanf("%d",&n);
printf("\n");
while(low<=high)
{
mid=(low+high)/2;
if(n==l.elem[mid].num)
{
flag=1;
break;
}
elseif(n>l.elem[mid].num)
low=mid+1;
else
high=mid-1;
}
if(flag==1)
{
print2(l,mid);
if(panduan1(ch))
chazhao2(l);
else
{
system("cls");
menu();
}
}
else
{
if(panduan2(ch))chazhao2(l);
else
{
system("cls");
menu();
}
}
}
}
voidchazhao1(linklist&l)
{
if(l.length==0)panduan3();
else
{
intlow=0,high=l.length,mid,flag=0;
printf("\n");printf("\n");
printf("按姓名查找----->请输入要查找的姓名:
");
chara[15],ch;
scanf("%s",a);
printf("\n");
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(a,l.elem[mid].name)==0)
{
flag=1;
break;
}
elseif(strcmp(a,l.elem[mid].name)>0)
low=mid+1;
else
high=mid-1;
}
if(flag==1)
{
print2(l,mid);
if(panduan1(ch))chazhao1(l);
else
{
system("cls");
menu();
}
}
else
{
if(panduan2(ch))chazhao1(l);
else
{
system("cls");
menu();
}
}
}
}
voidmain()
{
linklistl;
init(l);
charch;
system("colora");
printf("\n");
printf("****************欢迎进入宿舍管理查询系统**********************\n");
printf("\n");
printf("请按任意键开始操作:
");
scanf("%c",&ch);
system("cls");
create(l);
system("cls");
t=1;
menu();
while(f!
=0)
{
system("cls");
switch(f)
{
case1:
sort1(l);
printf("\n");
if(l.length==0)
{
printf("已无学生记录\n");
printf("\n");
disp();
menu();
}
else
{
printf("按姓名排序:
\n");
print1(l);
disp();
menu();
}
break;
case2:
sort2(l);
printf("\n");
if(l.length==0)
{
printf("已无学生记录\n");
printf("\n");
disp();
menu();
}
else
{
printf("按学号排序:
\n");
print1(l);
disp();
menu();
}break;
case3:
sort3(l);
printf("\n");
if(l.length==0)
{
printf("已无学生记录\n");
printf("\n");
disp();
menu();
}
else
{
printf("按房号排序:
\n");
print1(l);
disp();
menu();
}break;
case4:
sort1(l);
chazhao1(l);
break;
case5:
sort2(l);
chazhao