宾馆客房管理系统论文.docx
分类号: 2010届本科生毕业设计题目:_作 者 姓 名: 学 号: 系(院)、专业: 软件工程系 指导教师姓名: 指导教师职称: 2010 年 月 日注:请认真填写的姓名及学号信息,并要求与学院规定的一致目录1 概述11.1 软件开发环境、工具和方法11.2 软件功能简介12 软件功能设计22.1 系统的总体功能描述23 编码设计33.1 数据库操作33.2 主要模块实现64 测试94.1 黑盒测试94.2 白盒测试105 总结12参考文献13141 概述1.1 软件开发环境、工具和方法宾馆客房管理系统与一般系统的使用方法相似,它是一个应用程序,它运行于Windows的操作平台上;本系统对运行环境无特殊要求,适用于Windows XP操作系统。宾馆客房管理系统是应用Visual Studio 2005开发环境,整个设计是通过MFC语言编写的,它的设计思想符合软件开发的要求,它是通过一种可视化语言编写的,它的界面设计是通过Visual Studio 2005的控件来实现的,设计过程中的一部分功能程序的编写是通过SQL语句实现的。本系统以Access 2003做后台数据库,以MFC做前台应用程序。1.2 软件功能简介 不同的用户拥有不同的权限,系统根据用户权限,进入不同的功能界面。权限分为两类:一个是后台管理者权限,一个是前台接待员权限。普通员工无权登陆此系统 对宾馆客房的预定、入住、退房等信息进行管理 可以以图形方式显示客房入住率、预订率、空闲率 后台管理者可以对客房、员工的信息进行管理和查看,可以设置员工的权限,可以查看客房使用情况的图形显示,还可以查询统计预定和退房情况 对新增用户,系统默认密码为000000 用户登录系统后,可根据自己的需要修改登录密码 前台接待员可为顾客进行入住、预定、退房、调房、退订登记 前台接待员可以查看客房、宾客信息,可以查看客房使用情况的图形显示,还可以查看统计入住、预定和退房记录 前台接待员可根据入住情况(入住延期或由预定转为入住),对顾客追加押金 此系统为前台接待员提供了今日提醒功能,包括当天入住到期提醒和预定到期提醒2 软件功能设计2.1 系统的总体功能描述该阶段的主要任务是确定系统必须完成哪些工作,宾馆客房管理系统需要完成的主要功能为:1 对宾馆客房的预定、入住、退房等信息进行管理;2 对员工(如客房、楼层负责人,值班人,卫生员等)信息进行管理和查看;对系统用户进行权限管理;3 以图形方式统计客房入住率;可以查询统计预定和退房情况。具体功能,如图2-1所示图2-1 系统功能图3 编码设计3.1 数据库操作 数据库连接HRESULT hr; try hr = m_pConnection.CreateInstance("ADODB.Connection");/创建Connection对象 if(SUCCEEDED(hr) hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:StaffInfo.mdb","","",adModeUnknown);/*打开连接*/ catch(_com_error e)/捕捉异常 CString errormessage;errormessage.Format(TEXT("连接数据库失败!rn错误信息:%s"),e.ErrorMessage();AfxMessageBox(errormessage);/显示错误信息 查询数据库TCHAR c_Remind256;GetDlgItemText(IDC_CUS_START,c_Remind,sizeof(c_Remind)/sizeof(TCHAR);/得到空间中的内容CString temp=c_Remind; CString tep; /连接字符串,使用SQL语句进行查询 tep.Format(TEXT("SELECT * FROM customerinfo WHERE cus_endlive='%s' AND cus_housenum IN (SELECT house_num FROM houseinfo WHERE house_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"); /将查询结果显示到list control 空间中 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 * FROM StaffInfo",_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*FROMlstaffinfo",_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();/更新数据库删除记录 CString temp=c_num;/把字符数组中得到的控件中的信息赋给字符串 CString tep; /字符串连接 tep.Format(TEXT("SELECT * FROM StaffInfo WHERE staff_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版). 北京:清华大学出版社,20082 韩万江软件工程案例教程北京:机械工业出版社,20073 宋坤 刘锐宁 李伟明Visual C+开发技术大全北京:人民邮电出版社,20074 施伯乐 丁宝康 汪卫数据库系统教程(第2版)北京:高等教育出版社,20055 沈炜 徐慧Visual C+数据库编程技术与实例北京:人民邮电出版社,20076颜志军Visual C+数据库开发典型模块与实例精讲北京:电子工业出版社,20077 原奕Visual C+数据库开发与工程应用篇 北京:中国铁道出版社,20068 宋坤 李伟明 刘锐宁Visual C+数据库系统开发案例精选北京:人民邮电出版社,2006常用网址收藏