宾馆客房管理系统论文.docx
《宾馆客房管理系统论文.docx》由会员分享,可在线阅读,更多相关《宾馆客房管理系统论文.docx(16页珍藏版)》请在冰点文库上搜索。
宾馆客房管理系统论文
分类号:
2010届本科生毕业设计
题目:
_______________________
作者姓名:
学号:
系(院)、专业:
软件工程系
指导教师姓名:
指导教师职称:
2010年月日
注:
请认真填写的姓名及学号信息,并要求与学院规定的一致
目录
1概述1
1.1软件开发环境、工具和方法1
1.2软件功能简介1
2软件功能设计2
2.1系统的总体功能描述2
3编码设计3
3.1数据库操作3
3.2主要模块实现6
4测试9
4.1黑盒测试9
4.2白盒测试10
5总结12
参考文献13
1概述
1.1软件开发环境、工具和方法
宾馆客房管理系统与一般系统的使用方法相似,它是一个应用程序,它运行于Windows的操作平台上;本系统对运行环境无特殊要求,适用于WindowsXP操作系统。
宾馆客房管理系统是应用VisualStudio2005开发环境,整个设计是通过MFC语言编写的,它的设计思想符合软件开发的要求,它是通过一种可视化语言编写的,它的界面设计是通过VisualStudio2005的控件来实现的,设计过程中的一部分功能程序的编写是通过SQL语句实现的。
本系统以Access2003做后台数据库,以MFC做前台应用程序。
1.2软件功能简介
⑴不同的用户拥有不同的权限,系统根据用户权限,进入不同的功能界面。
权限分为两类:
一个是后台管理者权限,一个是前台接待员权限。
普通员工无权登陆此系统
⑵对宾馆客房的预定、入住、退房等信息进行管理
⑶可以以图形方式显示客房入住率、预订率、空闲率
⑷后台管理者可以对客房、员工的信息进行管理和查看,可以设置员工的权限,可以查看客房使用情况的图形显示,还可以查询统计预定和退房情况
⑸对新增用户,系统默认密码为000000
⑹用户登录系统后,可根据自己的需要修改登录密码
⑺前台接待员可为顾客进行入住、预定、退房、调房、退订登记
⑻前台接待员可以查看客房、宾客信息,可以查看客房使用情况的图形显示,还可以查看统计入住、预定和退房记录
⑼前台接待员可根据入住情况(入住延期或由预定转为入住),对顾客追加押金
⑽此系统为前台接待员提供了今日提醒功能,包括当天入住到期提醒和预定到期提醒
2软件功能设计
2.1系统的总体功能描述
该阶段的主要任务是确定系统必须完成哪些工作,宾馆客房管理系统需要完成的主要功能为:
1对宾馆客房的预定、入住、退房等信息进行管理;
2对员工(如客房、楼层负责人,值班人,卫生员等)信息进行管理和查看;对系统用户进行权限管理;
3以图形方式统计客房入住率;可以查询统计预定和退房情况。
具体功能,如图2-1所示
图2-1系统功能图
3编码设计
3.1数据库操作
⒈数据库连接
HRESULThr;
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:
\StaffInfo.mdb","","",adModeUnknown);
/*打开连接*/
}
}
catch(_com_errore)///捕捉异常
{
CStringerrormessage;
errormessage.Format(TEXT("连接数据库失败!
\r\n错误信息:
%s"),e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
⒉查询数据库
TCHARc_Remind[256];
GetDlgItemText(IDC_CUS_START,c_Remind,sizeof(c_Remind)/sizeof(TCHAR));///得到空间中的内容
CStringtemp=c_Remind;
CStringtep;///连接字符串,使用SQL语句进行查询
tep.Format(TEXT("SELECT*FROMcustomerinfoWHEREcus_endlive='%s'ANDcus_housenumIN(SELECThouse_numFROMhouseinfoWHEREhouse_state='入住')"),temp);
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(tep.GetBuffer(),///打开数据库中表
_variant_t((IDispatch*)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
tep.ReleaseBuffer();
m_success=TRUE;
if(!
m_pRecordset->BOF)///判断查询结果是否为空
{
m_pRecordset->MoveFirst();
}
else
{
AfxMessageBox(TEXT("今日无提醒!
"));
return;
}
///循环将查询得到的记录集显示到控件中
while(!
m_pRecordset->adoEOF)
{
///得到查询结果记录集的每列的值
m_cus_housenum=m_pRecordset->GetCollect("cus_housenum");
m_cus_name=m_pRecordset->GetCollect("cus_name");
m_cus_sex=m_pRecordset->GetCollect("cus_sex");
m_cus_idnum=m_pRecordset->GetCollect("cus_idnum");
m_cus_tel=m_pRecordset->GetCollect("cus_tel");
///将查询结果显示到listcontrol空间中
nItem=m_cuslist.InsertItem(0xffff,(_bstr_t)m_cus_housenum);
m_cuslist.SetItem(nItem,1,1,(_bstr_t)m_cus_name,NULL,0,0,0);
m_cuslist.SetItem(nItem,2,1,(_bstr_t)m_cus_sex,NULL,0,0,0);
m_cuslist.SetItem(nItem,3,1,(_bstr_t)m_cus_idnum,NULL,0,0,0);
m_cuslist.SetItem(nItem,4,1,(_bstr_t)m_cus_tel,NULL,0,0,0);
m_pRecordset->MoveNext();
}
⒊添加记录
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT*FROMStaffInfo",
_variant_t((IDispatch*)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);//打开数据库中的表
m_pRecordset->AddNew();///添加新记录
///修改数据库表中每列的值
m_pRecordset->PutCollect(_variant_t("staff_num"),_variant_t(text_num));
m_pRecordset->PutCollect(_variant_t("staff_name"),_variant_t(text_name));
m_pRecordset->PutCollect(_variant_t("staff_sex"),_variant_t(text_sex));
m_pRecordset->PutCollect(_variant_t("staff_tel"),_variant_t(text_tel));
m_pRecordset->PutCollect(_variant_t("staff_position"),_variant_t(text_position));
m_pRecordset->PutCollect(_variant_t("staff_limit"),_variant_t(text_limit));
m_pRecordset->PutCollect(_variant_t("staff_wages"),_variant_t(text_wages));
m_pRecordset->Update();///更新数据库
⒋修改记录
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT*FROM
lstaffinfo",_variant_t((IDispatch*)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset->PutCollect(_variant_t("lstaff_num"),_variant_t(text_num1));
m_pRecordset->PutCollect(_variant_t("lstaff_cipher"),_variant_t("000000"));
m_pRecordset->PutCollect(_variant_t("lstaff_limits"),_variant_t(text_limit1));
m_pRecordset->Update();///更新数据库
⒌删除记录
CStringtemp=c_num;///把字符数组中得到的控件中的信息赋给字符串
CStringtep;///字符串连接
tep.Format(TEXT("SELECT*FROMStaffInfoWHEREstaff_num='%s'"),temp);
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open(tep.GetBuffer(),
_variant_t((IDispatch*)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
tep.ReleaseBuffer();
m_pRecordset->Delete(adAffectCurrent);///删除当前记录
m_pRecordset->Update();
3.2主要模块实现
⒈登录模块
用户进入系统后,输入用户名、密码,选择自己的权限(即是前台操作员还是后台管理员),用户名、密码错误,权限选择错误都将无法进入系统。
登陆界面如图3-1所示:
图3-1系统登录界面
⒉前台操作模块
当前台操作员用户用户名、密码都输入正确,权限选择也正确后,就会进入前台操作界面,此界面主要包含入住、预定、退房、查询、宾客信息、统计信息、修改密码七个模块。
其中查询模块中又包含查询退房记录模块,宾客信息模块又包含调房、追加押金、退订、今日提醒等模块,具体情况如图3-2,图3-3所示:
图3-2前台接待主界面
图3-3宾客信息主界面
⒊后台管理模块
当后台管理员用户用户名、密码都输入正确,权限选择也正确后,就会进入后台管理界面,此界面主要包含客房管理、员工管理、统计信息(和前台相同)、修改密码四个模块。
具体内容如图3-4,图3-5所示:
图3-4客房管理界面
图3-5员工管理界面
4
测试
4.1黑盒测试
黑盒测试也称为功能测试,目的是监测系统是否满足功能设计的要求。
黑盒测试把软件看成一个黑盒子,只关心功能是否达到要求,接口的数据是否正确,不关心程序的内部结构是什么,测试依据是需求说明书。
黑盒测试主要检查下列几类错误:
不正确或遗漏的功能;界面错误;数据结构或外部数据库访问错误;性能错误;初始化和终止条件错误等等。
⒈等价分类法
等价分类法是把根据程序输入的数据集合,按输入条件将其划分为若干等价类每一等价类设计一个测试用例,这样既可大大减少测试的次数又不错过发现问题的机会。
因此等价分类法的关键是如何利用输入数据的类型和程序的功能说明划分等价类。
⒉边界值法
边界值是软件最容易出错的地方。
因此,边界值法就是有意选择边界值作为测试用例,在程序中运行,就很容易发现大量错误问题。
在输入身份证号的控件中,输入的身份证号位数不是15位或18位,就会弹出警告,如图4-1所示:
图4-1边界值测试结果
4.2白盒测试
白盒测试与黑盒测试相反,重点侧重于测试程序的结构,即用解剖的方法、透视的方法了解程序的结构,从而发现程序存在的问题和错误。
白盒测试是一种针对程序细节进行的测试,测试人员可以通过测试不同的逻辑路径来确定程序与需求设计期望值是否一致。
白盒测试应该根据程序的控制结构设计测试用例,并遵守如下原则:
.使模块中每一独立的路径至少执行一次。
.使所有判断的每一分支至少执行一次。
.使每一循环都在边界条件和一般条件下都至少各执行一次。
.测试所有内部数据结构的有效性。
⒈程序调试
当运行调试程序后,wcslen()返回值为0,所以程序执行if语句,不执行else语句,如图4-2所示
图4-2程序调试
⒉统计信息模块测试
此模块主要测试客房使用情况饼状图,测试结果如图4-3所示:
图4-3统计信息模块测试结果
5总结
宾馆管理系统是一个宾馆行业不可缺少的部分,其内容对于宾馆的决策者和管理者来说都至关重要,宾馆管理系统应该能够为用户提供充足的信息和快捷的查询手段。
现在宾馆管理系统的设计工作已经基本完成,其功能主要如下:
1对客房信息进行管理
系统通过客房信息管理模块比较完善的实现了客房预订、客房入住和退房等功能。
但是记录的信息还不够全面,没有涉及到计费方面的问题,有待改善。
2对客房使用信息进行查询和统计
通过系统可以对客房的使用信息进行查询,方便前台接待员和管理者快速了解客房当前的使用状况和使用历史。
并且还能对客房使用信息进行统计,图形显示统计结果,方便管理者了解最近的生意形势。
3对员工信息进行管理
通过系统可以查询和更新员工的信息,帮助宾馆管理层管理繁杂的员工信息。
由于这是我们第一次设计软件,文档中还有很多需要改进的地方。
通过这次课程设计,我们初步了解了软件设计的各个阶段的工作,以及各阶段文档的写法,为我们以后毕业设计和参加工作奠定了一定得基础。
设计过程中遇到了很多困难和迷惑的地方,我们深刻感受到了实际设计软件的复杂性和软件前期需求分析和总体设计的重要性。
得益于陈子阳老师耐心的指导,我们能够完成这次课程设计,在这里我们感谢陈老师对我们的关心和帮助。
参考文献
1张海藩.软件工程导论(第5版).北京:
清华大学出版社,2008
2韩万江.软件工程案例教程.北京:
机械工业出版社,2007
3宋坤刘锐宁李伟明.VisualC++开发技术大全.北京:
人民邮电出版社,2007
4施伯乐丁宝康汪卫.数据库系统教程(第2版).北京:
高等教育出版社,2005
5沈炜徐慧.VisualC++数据库编程技术与实例.北京:
人民邮电出版社,2007
6颜志军.VisualC++数据库开发典型模块与实例精讲.北京:
电子工业出版社,2007
7原奕.VisualC++数据库开发与工程应用篇.北京:
中国铁道出版社,2006
8宋坤李伟明刘锐宁.VisualC++数据库系统开发案例精选.北京:
人民邮电出版社,2006
常用网址收藏