当前位置:文档之家› 宾馆客房管理系统毕业设计

宾馆客房管理系统毕业设计

华东交通大学

毕业设计(论文)题目:

院: 理工学院

专业: 计算机科学与

技术

级:

姓名: 学号:

指导教师: 完成日

期: 2010-5-4

公章。

“等级”用优、良、中、及、不及五级制(可按学院制定的毕业设计(论文)成绩评定办法评定最后成绩)。

华东交通大学毕业设计(论文)答辩记录

目录

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的操作平台上;本系统对运行环境无特殊要求,适用于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("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());

AfxMessageBox(errormessage);///显示错误信息

}

⒉查询数据库

TCHAR c_Remind[256];

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,adCmdTex t); //打开数据库中的表

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();///更新数据库

⒌删除记录

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版). 北京:清华大学出版社,2008

2 韩万江.软件工程案例教程.北京:机械工业出版社,2007

3 宋坤刘锐宁李伟明.Visual C++开发技术大全.北京:人民邮电出版社,2007

4 施伯乐丁宝康汪卫.数据库系统教程(第2版).北京:高等教育出版社,2005

5 沈炜徐慧.Visual C++数据库编程技术与实例.北京:人民邮电出版社,2007

6颜志军.Visual C++数据库开发典型模块与实例精讲.北京:电子工业出版社,2007

7 原奕.Visual C++数据库开发与工程应用篇.北京:中国铁道出版社,2006

8 宋坤李伟明刘锐宁.Visual C++数据库系统开发案例精选.北京:人民邮电出版社,2006

常用网址收藏

相关主题
文本预览
相关文档 最新文档