宿舍管理查询系统软件.docx
- 文档编号:7620122
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:88
- 大小:284.95KB
宿舍管理查询系统软件.docx
《宿舍管理查询系统软件.docx》由会员分享,可在线阅读,更多相关《宿舍管理查询系统软件.docx(88页珍藏版)》请在冰豆网上搜索。
宿舍管理查询系统软件
河南城建学院
课程设计报告书
专业:
计算机科学与技术
课程设计名称:
《数据结构课程设计》
题目:
宿舍管理查询软件
班级:
0814102班
学 号:
081410222
姓 名:
孟学丰
同组人员:
李照耀
指导老师:
张延红张芳芳杨斌
完成时间:
2012年2月17日
摘要
在校学生的信息管理是校园管理中的一个重要内容,随着国家扩招政策的继续实施,学生数量也不断增加、信息的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。
如何记录和管理好学生的信息,对学生实施高效的宏观管理,对学生出入宿舍以及学生注入和迁出的信息的灵活的记录及更新,是一项繁重而艰巨的任务。
关键词:
C++;数据库表;宿舍信息查询;宿舍信息管理
第一章开发环境和开发工具
1.1C/C++语言简介
C++标准可分为两部分,C++语言本身和C++标准库。
C++标准库对于VisualC++是相当新的,实际上微软只是在发布VisualC++5.0时去除了一些“bug”。
标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。
应该说,C/C++包含了相对少的关键字,而且很多最有用的函数都来源于库,C++标准库实现容器和算法的部分就是STL。
STL是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、拷贝和排序等。
1994年7月,ANSI/ISOC++标准委员会投票决定接受STL为C++标准库的一部分,这个建议是根据AlexStepanov、MengLee和DavidMusser这三人的编程和软件库研究提出的。
STL的产生是为了满足通用性的设计目标,而不是为了提高性能。
1.2开发背景
随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。
采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。
人事管理的好坏对于企业的决策者和管理者来说都至关重要,在很大程度上影响着企业的经济效益和社会效益。
因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。
1.3开发环境
本文所采用的开发环境主要是在一般的PC硬件环境和WindouwsVista/2003/XP系统由Visual++6.0编写而成,在用到MicrosoftVisualC++6.0中c语言的情况下
,对于查询采用了逐个查询法,程序通过调试运行实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。
第二章算法思想
2.1系统需求分析
从总体分析可知,该宿舍管理系统必须满足用户以下基本需求:
<1>可对入住学生可进行信息录入;
<2>可对新入学生的信息进行插入
<3>可按学号,姓名,房间号等任意一种方式查询学生的信息
<4>可按学号,房间号来进行排序
2.2系统总体设计
2.2.1系统设计目标
1本文研究:
为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:
1.1.1采用交互工作方式
1.1.2建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(分别用冒泡、选择、插入排序实现)
2查询菜单:
(用二分查找实现以下操作)
2.1.1按姓名查询
2.1.2按学号查询
2.1.3按房号查询
3打印任一查询结果并可以连续操作。
2.2.2开发设计思想
基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想:
●采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
●尽量达到操作过程中的直观、方便、实用、安全等要求。
●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
●系统应具备数据库维护功能,及时根据用户需求进行数据的添加、查找、显示、排序等操作。
2.2.3系统功能模块设计
本系统分为四个模块:
查找子菜单、信息录入、信息显示、查找功能子菜单。
得到如图3-1所示的系统功能模块图
录入后显示
图3-1系统功能模块
2.3算法思想描述
该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。
在每个区域中会调用不同的函数来实现主要的功能。
比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。
而最主要的函数有
<1>插入函数,它用尾插法来实现;
<2>排序函数,用快速排序函数来实现;
<3>查找函数,用逐个查找法;
第三章算法实现
3.1数据结构
宿舍管理查询系统是一个数据库应用系统,学生的学号姓名房间号和性别等信息都保存在数据库中。
然后可以通过程序来查找学生的各种信息。
该程序所用的数学模型为线型结构。
3.2程序模块
根据用户需求不同,将系统划分了不同的功能模块,而依据不同的功能模块编写不同的程序模块,具体如下:
<1>信息录入模块(即为程序中的shuru()函数)
<2>信息插入模块(即为charu()函数)
<3>信息查询模块(即为程序中的chazhao()函数,包括chazaho1(),chazaho2(),chazaho3()三个子函数)
<4>信息显示模块(即为程序中的sort()函数)
而各个函数之间由一个switch结构联系起来,而学生信息的连续输入或者连续查找则由相应的do-while结构来实现,从而实现各个模块之间的紧密衔接。
3.3各模块之间的调用关系
YN
3.4源程序代码
#include
#include
#include
#include
#include
#defineN20
/*********************自定义函数声明部分**************************/
voidshowheader();//声明显示表头部分
intmenu();//声明主菜单函数
intmenu3();//声明插入功能子菜单函数
intmenu5();//声明查找功能子菜单函数
//intquanxian();//声明用户权限管理函数
//voidSavePass();//密码显示为"*"的函数
structstudentshuru();//声明学生信息录入函数
voiddisplay(structstudent);//声明显示函数
voidsort(structstudentstu[N],int,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"男";
}
};
/****************************主函数开始**************************/
voidmain()
{
structstudentstu[N];
intcount=0,m=0,j;
charch,ch1;
intchoice,choice3,choice4;//菜单选项及子菜单选项
do//此循环体控制返回主菜单
{ch1='n';//如果用户将主菜单选择错误,可用此变量控制是否重输
choice=menu();
switch(choice)//此条件结构控制选择菜单功能后的操作
{
case1:
//输入学生信息
{
do//此循环体控制是否继续输入
{
cout<<"******************************学员信息录入**********************************\n";
cout<<"请输入第"< stu[count]=shuru();//调用输入函数 //cout<<"是否继续(y/n)"; fflush(stdin);//刷新标准输入缓冲区,把输入缓冲区里的东西丢弃 ch=getchar(); count++; }while(ch=='y'); break; } case2: //显示排序好的学生信息 { cout<<"******************************学员信息显示**********************************\n"; cout<<"\n排序后的信息如下: \n"; sort(stu,0,count-1);//调用排序函数 showheader(); for(j=0;j { display(stu[j]);//调用显示函数 } break; } case3: //插入功能 { if(choice3! =3)//此循环体控制是否退出子菜单 { choice3=menu3();//调用子菜单函数 if(choice3==1)//此条件结构控制子菜单选项 { do//此循环体判断是否继续插入 {cout<<"******************************学员信息插入**********************************\n"; charu(stu,count);//调用插入函数 count++; cout<<"是否继续插入? (y/n)"; fflush(stdin); ch=getchar(); }while(ch=='y'); } if(choice3==2)//此条件结构控制子菜单选项 { cout<<"\n\n插入学生信息后如下: \n"; sort(stu,0,count-1);//调用排序函数 showheader(); for(j=0;j { display(stu[j]);//调用显示函数 } } else menu(); } break; } case4: //查找功能 { if(choice4! =4)//控制是否继续查找 { choice4=menu5();//调用查找子菜单函数 if(choice4==1)//控制按照学号查找 { chazhao1(stu,count);//调用按照学号查找的函数 } if(choice4==2)//控制按照姓名查找 { chazhao2(stu,count);//调用按照姓名查找的函数 } if(choice4==3)//控制按照房间查找 { chazhao3(stu,count);//调用按照房间查找的函数 } } else menu(); break; } case5: //退出 { cout<<"确认退出? (y/n)";//让用户确认是否退出 fflush(stdin); ch=getchar(); break; } default: { cout<<"\a\a警告: 您输入错误,是否重输! (y/n)"; fflush(stdin); ch1=getchar(); break; } } }while(ch=='n'||ch1=='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,intl) { intkey; structstudenttemp; key=stu[i].ID; while(i { while(i --l; temp=stu[l]; stu[l]=stu[i]; stu[i]=temp; while(i ++i; temp=stu[l]; stu[l]=stu[i]; stu[i]=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<<"\t\t\t\t4>查找学生信息\n\n"; cout<<"\t\t\t\t5>退出\n"; cout<<"\n\n请选择功能选项: "; cin>>choice; returnchoice; } /*自定义插入功能子菜单函数*/ intmenu3() {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请选择功能选项: "; intchoice3; cin>>choice3; returnchoice3; } /*自定义按照学号查找函数*/ 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*******************您选择的是按照房间号查找: *******************\n\n"; do { cout<<"\n\n请输入房间号: "; cin>>room; for(j=0;j { if(room==stu[j].roomnum) { break; } } if(j { showheader(); display(stu[j]); } else { cout<<"你查找的信息不存在\n"; } cout<<"是否继续查找? (y/n)"; fflush(stdin); ch=getchar(); }while(ch=='y'); } /*自定义查找功能子菜单函数*/ intmenu5() { 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<<"\t\t\t\t4、退出子菜单,返回上一级菜单\n\n"; cout<<"\n\n请选择功能选项: "; intchoice4; cin>>choice4; returnchoice4; } voidshowheader() {cout<<"\n\n\t*********************************************************\n"; cout<<"\t学号\t姓名\t性别\t房间号\t\n"; cout<<"\t*********************************************************\n"; } 第四章测试与分析 4.1测试数据选择 学号 姓名 性别 房间号 18 李东洋 男 228 22 李照耀 男 227 28 邵光光 男 232 45 曾广海 男 228 4.2测试结果分析 主菜单显示: 信息录入界面: 信息显示界面: 插入学生信息界面: 查找学生信息界面: 由源程序及测试结果分析可知: 该程序主要功能有以下几个函数来实现: <1>插入函数,其时间复杂度为o(n); <2>查找函数,其时间复杂度为o(n); <3>排序函数,其时间复杂度为knln(n); 总结 经过一个假期的放松,以前对许多知识都有点陌生,通过这次的课程设计使我明白了许多东西,翻阅了大量的书籍以及上网查了很多的相关资料,也从中学会了不少东西,它使我知识更加的系统化、全面化。 在实验的过程中也让我体会到了做任何事情都是要付出一定的努力的。 一份努力一分收获,每当自己单独的成功解决某些问题时,都会感觉很兴奋,也很有成就感。 虽然设计完成了,但是我觉得其中还是由一些不足之处: 1.警告句。 程序中缺少一些警告句,例如: “是否真的退出(y/n)? ”。 2.重名的情况。 由于考虑的不周全,没有设计遇到重名的情况该怎么处理。 3.选择单一。 我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。 整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。 一个实验需要很多次的调试,我刚开始写好的程序出现了很多错误,例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍 管理 查询 系统软件
![提示](https://static.bdocx.com/images/bang_tan.gif)