宿舍管理查询软件报告.docx
《宿舍管理查询软件报告.docx》由会员分享,可在线阅读,更多相关《宿舍管理查询软件报告.docx(29页珍藏版)》请在冰豆网上搜索。
宿舍管理查询软件报告
《数据结构》课程设计报告
设计题目宿舍管理查询软件
专业软件工程
班级
姓名
学号
完成日期
1.问题描述………………………………………………2
2.系统设计………………………………………………2
3.数据结构与算法描述…………………………………5
4.测试结果与分析………………………………………页码
5.总结…………………………………………………页码
6.参考文献………………………………………………页码
附录程序源代码…………………………………………页码
(要求:
给出一级目录,宋体加粗,四号字,1.5倍行距。
)
(报告正文部分):
宿舍管理查询软件
(要求:
正文部分一律用小四号字,宋体,1.5倍行距。
一级标题靠左,四号加粗。
二级、三级标题靠左,小四加粗。
)
1.问题描述
由于大学宿舍宿舍楼群过多,且每栋宿舍居住学生较多,因此宿舍管理与查询的任务非常繁重和复杂,然而许多大学宿舍还未普及电子信息管理方式,还在采用传统的笔录备案管理查询方式,因此,为提高宿舍管理人员的工作效率方便其对学生宿舍的管理提出此开发项目。
2.系统设计
2.1设计目标
学生宿舍管理系统采用的是计算机化管理,系统界面做的尽量人性化,系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。
基本功能:
(1)采用交互工作方式
(2)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
(3)实现如下查询功能:
按姓名查询按学号查询按房号查询
(4)可打印任意查询结果(可以连续操作)
2.2设计思想
①要实现交互工作方式,各项操作结束后均应返回主菜单;要确保系统的严密性和安全性,就应当具有某些操作权限,没有系统管理员或者普通用户的用户名和密码任何人都不能登录该系统;在具体实现时还应为系统管理员和普通用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户对于用户管理模块、学生学期注册(涉及到交费问题)及学生毕业离校等(此模块需判断该生有无欠费)牵扯到经济之类的模块是无权使用的。
②系统要实现提供学生住宿情况的基本登记,要建立数据文件,需开发一个信息录入功能,即首先创建一个学员线性表,同时我们可以将数据暂时保存在内存中,所以我们未开发信息存盘功能;
③信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能,信息的显示应该便于查阅,所以需具备按各种关键字显示的功能;④本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式分别实现按关键字(姓名、学号、房号)查询功能;
⑤由于有些同学因为不同原因而离校或新同学入校,所以设计了删除插入功能;
⑥当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互式工作系统。
2.3系统模块划分(要给出流程图)
2.3.1登陆界面
2.3.2菜单界面
3.数据结构与算法描述
4.测试结果与分析(可将测试过程抓图说明)
主菜单:
登录功能子菜单:
管理员登陆子菜单:
查找功能:
普通登陆子菜单:
注册功能子菜单:
5.总结
(1)编写程序时,多次出现头文件的缺失,经过不断查资料和调试实现了对问题的解决。
(2)本程序多次运用了menu()、fflush()等函数,经过多次调试,已经很好的控制了显示的学生信息与主界面的转换。
(3)编写程序时,由于子菜单嵌套太多,代码过于复杂,编译时出现许多问题,最后通过不断调试一一纠正。
6.参考文献(包括书籍、论文、网络资料等)
[1]刘振安等.《C++程序设计课程设计》.北京:
机械工业出版社,2004.12.
[2]武法提.《基于网络的学习环境的设计》.
附录程序源代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineN20
usingnamespacestd;//包括std名字空间
/*********************自定义函数声明部分**************************/
voidshowheader();//声明显示表头部分
intmenu();//声明主菜单函数
intmenu1();//声明插入功能子菜单函数
intmenu2();//声明插入功能子菜单函数
intmenu3();//声明插入功能子菜单函数
intmenu4();//声明插入功能子菜单函数
intmenu5();
intmenu6();
//声明查找功能子菜单函数
//intquanxian();//声明用户权限管理函数
//voidSavePass();//密码显示为"*"的函数
structstudentshuru();//声明学生信息录入函数
voiddisplay(structstudent);//声明显示函数
voidsort(structstudentstu[N],int);//声明排序函数
voidcharu(structstudentstu[N],int);//声明插入函数
voidchazhao1(structstudentstu[N],inti);//声明按照学号查找函数
voidchazhao2(structstudentstu[N],inti);//声明按照姓名查找函数
voidchazhao3(structstudentstu[N],inti);//声明按照房间号查找
/*********定义结构体************/
structstudent
{
/*构造结构成员*/
intID;
charname[15];
charsex;
introomnum;
floatscore[3];
char*getSex()
{
if(sex=='g')
return"女";
else
return"男";
}
};
/****************************主函数开始**************************/
intmain()
{
structstudentstu[N];
intcount=0,m=0,j;
charch,ch1;
intchoice,choice1,choice2,choice3,choice4,choice5,choice6;//菜单选项及子菜单选项
intuser;
do//此循环体控制用户信息输入错误后是否重输
{
do//此循环体控制返回主菜单
{
ch1='n';//如果用户将主菜单选择错误,可用此变量控制是否重输
choice=menu();
switch(choice)//此条件结构控制选择菜单功能后的操作
{
case1:
//
{
while(choice1!
=3)//此循环体控制是否退出子菜单
{
choice1=menu1();//调用子菜单函数
if(choice1==1)//此条件结构控制子菜单选项
{
choice2=menu2();//调用二级子菜单函数
if(choice2==1)//此条件结构控制二级子菜单选项,学生信息显示
{
cout<<"******************************学生信息显示**********************************\n";
cout<<"\n排序后的信息如下:
\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j{
display(stu[j]);//调用显示函数
}
break;
}
if(choice2==2)//查找学生信息
{
while(choice5!
=4)//控制是否继续查找
{
choice5=menu5();//调用查找子菜单函数
if(choice5==1)//控制按照学号查找
{
chazhao1(stu,count);//调用按照学号查找的函数
}
if(choice5==2)//控制按照姓名查找
{
chazhao2(stu,count);//调用按照姓名查找的函数
}
if(choice5==3)//控制按照房间查找
{
chazhao3(stu,count);//调用按照房间查找的函数
}
}
break;
}
}
if(choice1==2)
{
choice3=menu3();//调用二级子菜单函数
if(choice3==1)//此条件结构控制二级子菜单选项,输入学生信息
{
do//此循环体控制是否继续输入
{
cout<<"******************************学生信息录入**********************************\n";
cout<<"请输入第"<stu[count]=shuru();//调用输入函数
//cout<<"是否继续(y/n)";
fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
ch=getchar();
count++;
}while(ch=='y');
break;
}
if(choice3==2)//显示排序好的学生信息
{
cout<<"******************************学生信息显示**********************************\n";
cout<<"\n排序后的信息如下:
\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j{
display(stu[j]);//调用显示函数
}
break;
}
if(choice3==3)//插入功能
{
while(choice4!
=3)//此循环体控制是否退出子菜单
{
choice4=menu4();//调用子菜单函数
if(choice4==1)//此条件结构控制子菜单选项
{
do//此循环体判断是否继续插入
{cout<<"******************************学生信息插入**********************************\n";
charu(stu,count);//调用插入函数
count++;
cout<<"是否继续插入?
(y/n)";
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
if(choice4==2)//此条件结构控制子菜单选项
{
cout<<"\n\n插入学生信息后如下:
\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j{
display(stu[j]);//调用显示函数
}
}
}
break;
}
if(choice3==4)//查找功能
{
while(choice5!
=4)//控制是否继续查找
{
choice5=menu5();//调用查找子菜单函数
if(choice5==1)//控制按照学号查找
{
chazhao1(stu,count);//调用按照学号查找的函数
}
if(choice5==2)//控制按照姓名查找
{
chazhao2(stu,count);//调用按照姓名查找的函数
}
if(choice5==3)//控制按照房间查找
{
chazhao3(stu,count);//调用按照房间查找的函数
}
}
break;
}
}
}
}
case2:
//注册
{
while(choice6!
=3)//此循环体控制是否退出子菜单
{
choice6=menu6();//调用子菜单函数
if(choice6==1)//此条件结构控制子菜单选项
{
chars[20];
cout<<"姓名:
";
cin>>s;
cout<<"性别(g/b):
";
cin>>s;
cout<<"密码:
";
cin>>s;
}
if(choice6==2)//此条件结构控制子菜单选项
{
charg[20];
cout<<"身份证号:
";
cin>>g;
cout<<"姓名:
";
cin>>g;
cout<<"性别(g/b):
";
cin>>g;
cout<<"密码:
";
cin>>g;
}
break;
}
}
case3:
//退出
{
cout<<"确认退出?
(y/n)";//让用户确认是否退出
fflush(stdin);
ch=getchar();
break;
}
default:
{
cout<<"\a\a警告:
您输入错误,是否重输!
(y/n)";
fflush(stdin);
ch1=getchar();
break;
}
}
}while(ch=='n'||ch1=='y');//控制是否要退出系统
{
cout<<"\a\a警告:
您的用户名或密码输入有误!
是否重输?
(y/n)";
}
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
/*************************主函数结束*************************/
/*自定义输入函数*/
structstudentshuru()
{
structstudentstu;
cout<<"学号:
";
cin>>stu.ID;
cout<<"姓名:
";
cin>>stu.name;
cout<<"性别(g/b):
";
fflush(stdin);
cin>>stu.sex;
cout<<"房间号:
";
cin>>stu.roomnum;
cout<<"是否继续?
(Y/N)"<returnstu;
}
/*自定义显示函数*/
voiddisplay(structstudentstu)
{
cout<<"\t"<cout<cout<cout<}
/*自定义排序函数*/
voidsort(structstudentstu[N],inti)
{
intj,k;
structstudenttemp;
for(j=0;j
{
for(k=0;k{
if((stu[k].ID)>(stu[k+1].ID))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
/*自定义插入函数*/
voidcharu(structstudentstu[N],intk)
{
inti,l;
structstudentin;
in=shuru();//调用输入函数
for(i=0;i{
}
for(l=k;l>i;l--)
{
stu[l]=stu[l-1];
}
stu[i]=in;
}
/*自定义主菜单函数*/
intmenu()
{
intchoice;
cout<<"\t\t****************************************************\n\n\t\t\t欢迎进入学生宿舍管理查询系统\n\n\t\t****************************************************\n\n";
cout<<"\t\t\t***************主菜单***************\n\n";
cout<<"\t\t\t\t1>登陆\n\n";
cout<<"\t\t\t\t2>注册\n\n";
cout<<"\t\t\t\t3>退出\n\n";
cout<<"\n\n请选择功能选项:
";
cin>>choice;
returnchoice;
}
/*自定义插入功能子菜单函数*/
intmenu1()
{
cout<<"\t*******************欢迎登陆!
*******************\n\n";
cout<<"\t\t\t\t1、普通登陆\n\n";
cout<<"\t\t\t\t2、管理员登陆\n\n";
cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:
";
intchoice1;
cin>>choice1;
returnchoice1;
}
intmenu2()//普通登陆
{
intchoice2;
cout<<"******************************普通登陆功能**********************************\n";
cout<<"\t\t\t\t1>学生信息显示\n\n";
cout<<"\t\t\t\t2>查找学生信息\n\n";
cout<<"\t\t\t\t3>退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:
";
cin>>choice2;
returnchoice2;
}
intmenu3()//管理员登陆
{
intchoice3;
cout<<"******************************管理员登陆功能**********************************\n";
cout<<"\t\t\t\t1>学生信息录入\n\n";
cout<<"\t\t\t\t2>学生信息显示\n\n";
cout<<"\t\t\t\t3>插入学生信息\n\n";
cout<<"\t\t\t\t4>查找学生信息\n\n";
cout<<"\t\t\t\t5>退出\n";
cout<<"\n\n请选择功能选项:
";
cin>>choice3;
returnchoice3;
}
intmenu4()
{
intchoice4;
cout<<"\t*******************这里显示的是插入功能子菜单*******************\n\n";
cout<<"\t\t\t\t1、插入学生信息\n\n";
cout<<"\t\t\t\t2、显示插入后的学生信息\n\n";
cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:
";
cin>>choice4;
returnchoice4;
}
/*自定义按照学号查找函数*/
voidchazhao1(structstudentstu[N],inti)
{
intselect,j;
charch;
cout<<"\t*******************您选择的是按照学号查找:
*******************\n\n";
do
{
cout<<"\n\n请输入学号:
";
cin>>select;
for(j=0;j
{
if(select==stu[j].ID)
{
break;
}
}
if(j
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
/*自定义按照姓名查找函数*/
voidchazhao2(structstudentstu[N],inti)
{
intj;
charname[15];
charch;
cout<<"\t*******************您选择的是按照姓名查找:
*******************\n\n";
do
{
cout<<"\n\n请输入姓名:
";
cin>>name;
for(j=0;j
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
fflush(stdin);
ch=getchar();
}while(ch=='y');
}
//按照房间号查找
voidchazhao3(structstudentstu[N],inti)
{
intj,room;
charch;
cout<<"\t*******************您选择的是按