VFP开发的客房管理系统毕业论文_第1页
VFP开发的客房管理系统毕业论文_第2页
VFP开发的客房管理系统毕业论文_第3页
VFP开发的客房管理系统毕业论文_第4页
VFP开发的客房管理系统毕业论文_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . . . 客房管理系统目录客房管理系统目录摘要0 引言1 需求分析2 总体设计1 项目规划2 系统功能结构3 设计目标3 系统设计1 开发与运行环境2 数据库设计4 功能模块设计4.1 创建工程框架4.2 主窗口设计4.3 登录模块设计4.4 住宿管理模块设计附录 A 参考文献附录 B 数据表 . . . 摘要摘要随着我国经济的迅速发展和假日经济的出现,宾馆酒店业的竞争愈来愈激烈。要想在竞争中取得优势,必须在经营管理、产品服务等方面提高服务管理意识。而对酒店的经营状况起决定作用的是酒店的管理。如何利用先进的管理手段,提高酒店的管理水平,是每一家酒店的管理者所面临的重要课题。简单的服务标准已

2、经不是制胜的锦囊,只有做到最细微之处才有机会让顾客体会到酒店服务的优点,而准确、快捷、周全往往就是最基本的成功要素。虽然计算机管理并不是酒店走向成功的关键元素,但它可以最大限度的为准确、快捷、周全等要素发挥效用提供有力的支持。因此,采用全新的计算机网络和管理系统,将成为提高酒店的管理效率,改善服务水准的重要手段之一。面对信息时代的机遇和挑战,利用科技手段提高企业管理无疑是一条行之有效的途径。信息与科技在酒店管理与现代化建设中显现出越来越重要的地位。在某种意义上,酒店客房状态管理方面的信息化与科学化,已成为现代化酒店的重要标志。关键词客房管理系统 . . . 0 引言通过计算机对物流企业运作的全

3、过程进行全面、效的管理,解决了经营过程中,客户需求和企业资源不能有效协调与统一按排的问题,减少了管理者的工作量,大大提高了企业的工作效率和经济效益,满足了信息时代物流企业管理、发展的需求,成为物流企业适应时代发展中企业管理者必不可少的管理工具。1 需求分析1.1 系统需求分析根据宾馆的具体情况,系统主要功能包括:住宿管理。客房管理。挂账管理。查询统计。日结。系统设置。1.2 可行性分析随着信息技术的发展和人们对宾馆酒店的要求越来越高,许多宾馆已明显觉得手工管理已不能适应当前宾馆高速发展的需要,宾馆已意识到使用计算机网络和计算机管理的重要性,决定首先在客房部采用宾馆客房管理系统。该系统应充分利用

4、信息技术提高宾馆客房的管理水平、服务水平。宾馆客房管理系统要实现客房预定、住宿登记、追加押金、调房登记、退房结帐、挂账、查询统计、预收销售报表等功能。其中动态实时的住宿登记、客房调整、销售报表、追加押金等有机的联系在一起,对宾馆客房进行全方位的管理。2 总体设计1 项目规划面对服务行业的高速发展和宾馆企业信息化发展的过程中出现的各种情况,本系统主要实现如下功能:住宿管理模块住宿管理模块包括客房预定、入住登记、客人续住 、调房登记 、退房结帐5部分。 客房管理模块客房管理模块包括客房设置 、客房查询、宿费提醒3部分。查询统计模块查询统计模块包括预定房查询、住宿查询、退宿查询、客房宿费统计4部分。

5、报表管理模块 . . . 报表管理模块包括预售报表、客房销售报表2部分。挂帐管理模块挂帐管理模块包括客户管理、挂账查询、客户结帐3部分。系统设置模块系统设置模块包括系统初使化、权限管理、密码设置 3 部分。2 系统功能结构图 1 客房管理系统功能结构图3 设计目标本软件系统使根据实际需求而开发的,完全能够实现宾馆客房信息的管理,运用本系统可以实现以下目标:界面友好,界面设计美观。轻松实现客房信息管理的可视,高效,快捷和方便的管理。数据存储安全可靠。同 Windows 操作系统的无缝结合,使用户无需为软件的移植性烦恼。根据巧妙的权限设置使保证信息安全。3 系统设计1 开发与运行环境系统开发平台:

6、Visual C+ 6.0数据库管理系统软件:SQL Server 2000运行平台:Windows xp/Windows 2000 . . . 3 / 31显示像素:最低 800*600,最佳效果 1024*768。2 数据库设计1数据库概要说明在 SQL Server 2000 数据库中建立名为 myhotel 的数据库,设计如下数据表:checkinregtable,checkoutregtable,guazhanginfo,kfyd,regmoneytable,roomsetting,setability,usertalbe。图 2 所示的即为本系统中数据库中的数据表结构图,该数据表结

7、构图包含系统所有数据表。可以清晰地反应数据库信息。图 2 数据库概要说明2主要数据表结构数据库中的数据表请参见附录 B。4 功能模块设计4.1 创建工程框架(1)利用 Vc+ 建立一个基于对话框的应用程序,如图 3 所示,在对话框中输入工程名字和保存目录,点击“确定”按钮。 . . . 图 3 “新建”窗口(2)在弹出的步骤 1 对话框中选择基于对话框选项,如图 4 所示,点击“下一步”按钮。 图 4 “步骤 1”窗口(3)以下步骤保持默认选择,直到完成。 . . . 5 / 314.2 主窗口设计主程序界面是应用程序提供给用户访问其他功能模块的平台,根据实际需要,物流综合管理系统的主界面采用

8、了传统的“菜单/工具栏/状态栏”风格。物流综合管理系统主程序界面如图 5 所示。图 5 主程序运行界面1客户区设计在生成的对话框添加图片、静态文本、标签、编辑框、按钮等资源。设置主要资源属性如下表所示:控件的属性和 ID 见如表 1 所示。表 1 控件的属性和 ID控件 ID标题ID_BTN_borrowroom开房ID_BTN_returnroom结帐ID_BTN_mainfind查询ID_BTN_daysummery日结ID_BTN_alert提醒ID_CLOSE退出2菜单设计(1)点击 insertResourse 打开添加资源界面如下图 6 所示。 . . . 图 6 “Insert

9、Resourse”窗口(2)选择 Menu,点击 New,插入空白菜单,设置 ID 属性为 IDR_mainMENU 然后按照图 7 编辑菜单项图 7 菜单资源主菜单的各个子菜单的 ID 和标题属性如表 2 所示。表 2 各个子菜单的 ID 和标题属性控件 ID标题ID_MENU_checkinreg住宿登记ID_MENU_roomsetting客房设置ID_MENU_checkout退宿结帐ID_MENU_addmoney追加押金ID_MENU_changeroomreg调房登记ID_MENU_findroom客房查询ID_MENU_findguazhang挂帐查询ID_MENU_guazh

10、angmoney客户结款ID_MENU_findcheckinreg住宿查询ID_MENU_findcheckoutreg退宿查询ID_MENU_findroomfee宿费提醒 . . . 7 / 31ID_MENU_regmoneytable登记预收报表ID_MENU_saleroomtable客房销售报表ID_MENU_saleroomsummary客房销售统计ID_MENU_adm_setting操作员设置ID_MENU_pwd_setting密码设置ID_MENU_setting_begin初始化ID_MENU_setting_ability权限设置ID_MENU_findroomst

11、ate房态查看ID_MENU_roomprebook客房预定ID_MENU_findprebookroom预定房查询3代码分析(1)系统主界面操作可以根据用户的权限设定,所以要加入连接数据库功能,故在 stdafx.h文件中加入以下代码,提供加入 ADO 的支持/ add the support of ADO#import c:program filescommon filessystemadomsado15.dll no_namespace rename (EOF, adoEOF) 并在Myhotel.h中加入: CDatabase m_DB;_ConnectionPtrm_pConnect

12、ion;此外在myhotel.cpp的初始化函数中加入连接数据库的代码:ry/连接数据库 CString strConnect; strConnect.Format(DSN=myhotel;); if(!m_DB.OpenEx(strConnect,CDatabase:useCursorLib) AfxMessageBox(Unable to Connect to the Specified Data Source); return FALSE ; catch(CDBException *pE)/抛出异常 pE-ReportError(); pE-Delete(); return FALSE;

13、 . . . / 初始化COM,创建ADO连接等操作AfxOleInit();m_pConnection.CreateInstance(_uuidof(Connection);/ 在ADO操作中建议语句中要常用try.catch()来捕获错误信息,/ try / 打开本地数据库m_pConnection-Open(Provider=MSDASQL.1;Persist Security Info=False;Data Source=myhotel,adModeUnknown);catch(_error e)/抛出可能发生的异常AfxMessageBox(数据库连接失败,确认数据库配置正确!);r

14、eturn FALSE;(2)此主窗口初始化时候要根据登录的操作员的权限来设置登录操作员所有权进行的操作,此功能由函数 setuserability 来完成,代码为:void CMyhotelDlg:setuserability() m_pRecordset.CreateInstance(_uuidof(Recordset);_variant_t var,varIndex; /loguserid=操作员01;CString strsqlshow; strsqlshow.Format(SELECT * FROM setability where 操作员=%s,loguserid); try/打开

15、数据库连接m_pRecordset-Open(_variant_t)(strsqlshow), / 查询表中所有字段theApp.m_pConnection.GetInterfacePtr(),/ 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);catch(_error *e)/捕获异常的发生AfxMessageBox(e-ErrorMessage();/ . . . 9 / 31mynenu=AfxGetMainWnd()-GetMenu();/获得主菜单指针/CString ling=0;tryif(!m_pRecord

16、set-BOF)/判断指针是否在数据集最后m_pRecordset-MoveFirst();elseAfxMessageBox(表数据为空);return;/MessageBox(eeeeeeeeee);/读取数据表客房预定字段容var = m_pRecordset-GetCollect(客房预定);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作客房预定模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_roomprebook,MF_DISABLED|MF_GRAY

17、ED); /读取数据表住宿登记字段容var = m_pRecordset-GetCollect(住宿登记);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作住宿登记模块 /如果没有权利就使该菜单灰显 EnableMenuItem(mynenu-m_hMenu,ID_MENU_checkinreg,MF_DISABLED|MF_GRAYED); /读取数据表追加押金字段容 var = m_pRecordset-GetCollect(追加押金);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var

18、)=ling)/判断是否有权限操作追加押金模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_addmoney,MF_DISABLED|MF_GRAYED); . . . /读取数据表调房登记字段容 var = m_pRecordset-GetCollect(调房登记);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作调房登记模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_changeroomreg,MF_

19、DISABLED|MF_GRAYED); /读取数据表退宿登记字段容var = m_pRecordset-GetCollect(退宿登记);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作退宿登记模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_checkout,MF_DISABLED|MF_GRAYED); /读取数据表客房管理字段容var = m_pRecordset-GetCollect(客房管理);if(var.vt != VT_NULL)if(LPCSTR

20、)_bstr_t(var)=ling)/判断是否有权限操作客房管理模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_roomsetting,MF_DISABLED|MF_GRAYED); /读取数据表客房查询字段容var = m_pRecordset-GetCollect(客房查询);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作客房查询模块 /如果没有权利就使该菜单灰显 . . . 11 / 31EnableMenuItem(mynenu-m_hMenu,ID_

21、MENU_findroom,MF_DISABLED|MF_GRAYED); /读取数据表房态查看字段容var = m_pRecordset-GetCollect(房态查看);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作房态查看模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_findroomstate,MF_DISABLED|MF_GRAYED); /读取数据表挂帐查询字段容var = m_pRecordset-GetCollect(挂帐查询);if(var.v

22、t != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作挂帐查询模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_findguazhang,MF_DISABLED|MF_GRAYED); /读取数据表客户结款字段容var = m_pRecordset-GetCollect(客户结款);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作客户结款模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_

23、hMenu,ID_MENU_guazhangmoney,MF_DISABLED|MF_GRAYED); /读取数据表预定房查询字段容var = m_pRecordset-GetCollect(预定房查询);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作预定房查询模块 /如果没有权利就使该菜单灰显 . . . EnableMenuItem(mynenu-m_hMenu,ID_MENU_findprebookroom,MF_DISABLED|MF_GRAYED);/读取数据表住宿查询字段容var = m_pRecordset-

24、GetCollect(住宿查询);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作住宿查询模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_findcheckinreg,MF_DISABLED|MF_GRAYED); /读取数据表退宿查询字段容var = m_pRecordset-GetCollect(退宿查询);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作退宿查询模块 /如果没有权利就使该菜

25、单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_findcheckoutreg,MF_DISABLED|MF_GRAYED); /读取数据表宿费提醒字段容 var = m_pRecordset-GetCollect(宿费提醒);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作宿费提醒模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_findroomfee,MF_DISABLED|MF_GRAYED); /读取数据表登记预收报表字段容

26、var =m_pRecordset-GetCollect(登记预收报表);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作登记预收报表模块 /如果没有权利就使该菜单灰显 . . . 13 / 31EnableMenuItem(mynenu-m_hMenu,ID_MENU_regmoneytable,MF_DISABLED|MF_GRAYED); /读取数据表客房销售报表字段容 var = m_pRecordset-GetCollect(客房销售报表);if(var.vt != VT_NULL)if(LPCSTR)_bstr_

27、t(var)=ling)/判断是否有权限操作客房销售报表模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_saleroomtable,MF_DISABLED|MF_GRAYED); /读取数据表客房销售统计报表字段容var = m_pRecordset-GetCollect(客房销售统计报表);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作客房销售统计模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_sa

28、leroomsummary,MF_DISABLED|MF_GRAYED); /读取数据表操作员设置字段容var = m_pRecordset-GetCollect(操作员设置);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作操作员设置模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_adm_setting,MF_DISABLED|MF_GRAYED); /读取数据表密码设置字段容var = m_pRecordset-GetCollect(密码设置);if(var.

29、vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作密码设置模块 /如果没有权利就使该菜单灰显 . . . EnableMenuItem(mynenu-m_hMenu,ID_MENU_pwd_setting,MF_DISABLED|MF_GRAYED);/读取数据表初始化字段容var = m_pRecordset-GetCollect(初始化);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作初始化模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu

30、-m_hMenu,ID_MENU_setting_begin,MF_DISABLED|MF_GRAYED); /读取数据表权限设置字段容var = m_pRecordset-GetCollect(权限设置);if(var.vt != VT_NULL)if(LPCSTR)_bstr_t(var)=ling)/判断是否有权限操作权限设置模块 /如果没有权利就使该菜单灰显EnableMenuItem(mynenu-m_hMenu,ID_MENU_setting_ability,MF_DISABLED|MF_GRAYED); mynenu-Detach(); DrawMenuBar();/重绘主菜单c

31、atch(_error *e)/捕获异常AfxMessageBox(e-ErrorMessage();m_pRecordset-Close();/关闭记录集m_pRecordset = NULL;其他的详细代码代码见源码。 . . . 15 / 314.3 登录模块设计1 实现目标为了防止非法用户进入系统,本软件设计了系统登录窗口。在程序启动时,首先弹出登录窗口,要求用户输入登录信息,如果用户输入不合法,将禁止进入系统。系统登录窗口运行结果下图 8 所示。图 8 登录窗口2 设计步骤(1)点击 insertResourse 打开添加资源界面如图 9 所示。图 9 “Insert Resours

32、e”窗口选择 Dialog,点击 New,插入新的对话框。(2)利用类向导为此对话框资源设置属性。在“Name”编辑框中输入窗口类名,例如“CLoginDlg” ,在“Base class”组合框中选择一个基类,这里为“CDialog” ,单击“OK”按钮创建窗口。(3)在工作区的资源视图中选择新创建的窗口,向窗口中添加静态文本、列表框、编辑框、按钮等资源。设置主要资源属性如表 3 所示。 . . . 控件 ID对应变量/标题属性IDC_COMBO_usernamem_usernameIDC_passwordm_passwordIDOK确定IDCANCEL取消(4)然后建立和数据库的映射:利用

33、类向导建立记录集的映射类。如图 10 所示。图 10 “新建类”窗口选择基类为 CRecordset,点击“OK”按钮进入下一步,如下图 11 所示。 . . . 17 / 31图 11 “Database Option”窗口选择数据源类型为 ODBC,并选择所使用的数据源,在此选择我们使用的 myhotel 数据源。点击“OK” ,进入下一步,如图 12 所示。 图 12 “Select Database Tables”选择所要关联的数据表,因为是操作员登录信息,所以用户表 dbo.usertable 数据表,点击 OK 完毕。3代码分析(1)可以看到我们已经创建了一个新类 CUserset

34、,其头文件的关键代码如下:class CUserset : public CRecordsetpublic:CUserset(CDatabase* pDatabase = NULL);DECLARE_DYNAMIC(CUserset)/ Field/Param Data/AFX_FIELD(CUserset, CRecordset)CString m_user_name;CString m_user_pwd;/AFX_FIELD/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CUserset)p

35、ublic:virtual CString GetDefaultConnect(); / Default connection stringvirtual CString GetDefaultSQL(); / Default SQL for Recordsetvirtual void DoFieldExchange(CFieldExchange* pFX); / RFX support/AFX_VIRTUAL . . . / Implementation#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpCo

36、ntext& dc) const;#endif;(2)点击“确定”按钮可以登录到系统主界面,此按钮的相应函数为:void CLoginDlg:OnOK() / TODO: Add extra validation here CString sqlStr;UpdateData(true);if(m_username.IsEmpty()/判断用户名是否为空AfxMessageBox(请输入用户名!);return;/construct the sql string /创建查询语句sqlStr=SELECT * FROM usertalbe WHERE user_name=;sqlStr+=

37、m_username;sqlStr+=;sqlStr+=AND user_pwd=;sqlStr+=m_password;sqlStr+=;/MessageBox(sqlStr);/打开数据库if(!myuserset.Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)AfxMessageBox(user表打开失败!);return;loguserid=m_username;/保存操作员ID,其他窗口要用if(!myuserset.IsEOF()/关闭数据库连接myuserset.Close(); CDialog:OnOK(); . . . 19 / 31else /给出

38、错误提示AfxMessageBox(登陆失败!);m_username=_T();m_password=_T();UpdateData(false);/更新显示myuserset.Close();/关闭数据库连接return;(3)为了按下 Enter 键控制输入焦点,故加入PreTranslateMessage 方法,代码如下:BOOL CLoginDlg:PreTranslateMessage(MSG* pMsg) / TODO: Add your specialized code here and/or call the base classif(pMsg-message=WM_KEYD

39、OWN&pMsg-wParam=VK_RETURN)DWORD def_id=GetDefID(); if(def_id!=0) /MSG消息的结构中的hwnd存储的是接收该消息的窗口句柄 CWnd *wnd=FromHandle(pMsg-hwnd); char class_name16; if(GetClassName(wnd-GetSafeHwnd(),class_name,sizeof(class_name)!=0) DWORD style=:GetWindowLong(pMsg-hwnd,GWL_STYLE); if(style&ES_MULTILINE)=0) if

40、(strnicmp(class_name,edit,5)=0) /将焦点设置到默认按钮上面 GetDlgItem(LOWORD(def_id)-SetFocus(); pMsg-wParam=VK_TAB;/重载回车键盘消息为table键盘消息,ok! . . . return CDialog:PreTranslateMessage(pMsg);4.4 住宿管理模块设计住宿管理模块包括“客房预定” “住宿登记” “追加押金” “调房登记” “退宿结帐”等功能子模块。下面详细介绍客房预定子模块设计1实现目标此模块实现客房预定的功能,主要登记用户的,证件,证件,预住日期等信息,是为预定客户提供的方

41、便模块。运行界面如图 13 所示。图 13 “客房预定”窗口2设计步骤(1)点击 insertResourse 打开添加资源界面,选择 Dialog,点击 New,插入新的对话框。(2)利用类向导为此对话框资源设置属性。在“Name”编辑框中输入窗口类名,例如“CRoomprebookdlg” ,在“Base class”组合框中选择一个基类,这里为“CDialog” ,单击“OK”按钮创建窗口。(3)在工作区的资源视图中选择新创建的窗口,向窗口中添加静态文本、列表框、编辑框、按钮和日期选择控件等资源。设置主要资源属性如表所示。各个主要控件的 ID 和属性设置如表 4 所示。表 4 控件的 I

42、D 和属性控件 ID变量IDC_COMBOprebookidkindm_prebookidkind . . . 21 / 31IDC_COMBOroomkindm_prebookroomkindIDC_DATETIMEPICKERprecheckindatem_prebookcheckindateIDC_prebookaddrm_prebookaddrIDC_prebookdaysm_prebookdaysIDC_prebookhandinmoneym_prebookhandinmoneyIDC_prebookidnumberm_prebookidnumberIDC_prebooknamem_

43、prebooknameIDC_prebooktelnumberm_prebooktelnumberIDC_prebookworkcompanym_prebookworkcompanyIDC_roommoneym_prebookroommoneyIDC_STATICshowuserm_showuser3 代码分析(1)在其对应的头文件 Roomprebookdlg.h 里面添加以下声明代码:CString gustname;CString gustaddr;CString zhengjian;CString zhengjian_number;CString checkinreg_reason;_

44、ConnectionPtrm_pConnection;_CommandPtrm_pCommand;_RecordsetPtrm_pRecordset;(2)确定预定客房点击“确定”按钮,完成向数据库中插入预定记录,其响应函数为:void CRoomprebookdlg:OnOK() / TODO: Add extra validation hereUpdateData(true);/ /* *检查的是否为15位或者为18位 */CString strCertifyCode;/证件/获得证件int nCertifyCodeLength=m_prebookidnumber.GetLength();

45、/获得证件的长度 . . . if(nCertifyCodeLength!=15&nCertifyCodeLength!=18)if(m_prebookidkind=)/若选择的是MessageBox(你的的的位数不正确!n应该为15位或者18位!,错误,MB_OK); return ;/m_pRecordset.CreateInstance(_uuidof(Recordset);/ 在ADO操作中建议语句中要常用try.catch()来捕获错误信息,/ try/打开数据表m_pRecordset-Open(SELECT * FROM kfyd, / 查询表中所有字段theApp.m_

46、pConnection.GetInterfacePtr(),/ 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);catch(_error *e)/捕获异常情况AfxMessageBox(e-ErrorMessage();/ try / 写入各字段值m_pRecordset-AddNew();/ 向数据表字段写入数据m_pRecordset-PutCollect(,_variant_t(m_prebookname);/ 向数据表号字段写入数据 m_pRecordset-PutCollect(号, _variant_t(m_pr

47、ebookidnumber); / 向数据表联系字段写入数据m_pRecordset-PutCollect(联系, _variant_t(m_prebooktelnumber); / 向数据表详细地址字段写入数据m_pRecordset-PutCollect(详细地址, _variant_t(m_prebookaddr); . . . 23 / 31 / 向数据表工作单位字段写入数据m_pRecordset-PutCollect(工作单位, _variant_t(m_prebookworkcompany);/ 向数据表客房类型字段写入数据 m_pRecordset-PutCollect(客房类

48、型, _variant_t(m_prebookroomkind);/ 向数据表房间价格字段写入数据 m_pRecordset-PutCollect(房间价格, _variant_t(m_prebookroommoney);CString checkindate; int nYear,nDay,nMonth;int nhour,nmin,nsecond; CString sYear,sDay,sMonth; nYear=m_prebookcheckindate.GetYear();/提取年份 nDay=m_prebookcheckindate.GetDay();/提取日 nMonth=m_pre

49、bookcheckindate.GetMonth();/提取月份 sYear.Format(%d,nYear);/转换为字符串 sDay.Format(%d,nDay);/转换为字符串 sMonth.Format(%d,nMonth);/转换为字符串/格式化时间 checkindate.Format(%s-%s-%s,sYear,sMonth,sDay);/ 向数据表预住日期字段写入数据m_pRecordset-PutCollect(预住日期,_variant_t(checkindate);/ 向数据表预住天数字段写入数据 m_pRecordset-PutCollect(预住天数, _vari

50、ant_t(m_prebookdays); / 向数据表预付金额字段写入数据 m_pRecordset-PutCollect(预付金额, _variant_t(m_prebookhandinmoney); CString nowdate,nowtime;CTime tTime; tTime=tTime.GetCurrentTime(); nYear=tTime.GetYear();/提取年份 nDay=tTime.GetDay();/提取日 nMonth=tTime.GetMonth();/提取月份 sYear.Format(%d,nYear);/转换为字符串 sDay.Format(%d,n

51、Day);/转换为字符串 sMonth.Format(%d,nMonth);/转换为字符串 /格式化时间 nowdate.Format(%s-%s-%s,sYear,sMonth,sDay); CString shour,smin,ssecond; nhour=tTime.GetHour();/提取小时 nmin=tTime.GetMinute();/提取分钟 nsecond=tTime.GetSecond();/提取秒 shour.Format(%d,nhour);/转换为字符串 . . . smin.Format(%d,nmin);/转换为字符串 ssecond.Format(%d,nse

52、cond);/转换为字符串/格式化时间 nowtime.Format(%s:%s:%s,shour,smin,ssecond); m_pRecordset-PutCollect(日期, _variant_t(nowdate); m_pRecordset-PutCollect(时间, _variant_t(nowtime); / 向数据表证件名称字段写入数据m_pRecordset-PutCollect(证件名称, _variant_t(m_prebookidkind); /更新数据表m_pRecordset-Update();AfxMessageBox(预定成功!); catch(_error

53、 *e)/抛出异常情况,并显示AfxMessageBox(e-ErrorMessage(); /关闭记录集m_pRecordset-Close();m_pRecordset = NULL;/CDialog:OnOK();其他部分的关键代码见源程序。附录 A 参考文献1Visual Basic 精彩编程 200 例机械工业赛奎春、高春艳等2003 年 1 月2Visual Basic 数据库开发实例解析机械工业志铭、高春艳等2003 年 8 月3Visual FoxPro 数据库开发实例解析机械工业王晶莹、王国辉等2003 年 9 月4Power Builder 数据库开发实例解析机械工业华传铭、振坤等2003 年 9 月5Delphi 数据库开发实例解析机械工业赛奎春、骁鹏等2004 年 2 月6PowerBuilder 精彩编程 200 例机械工业振坤、文立等 . . . 25 / 312004 年 9 月7Visual FoxPro 精彩编程 200 例机械工业王国辉、董韶华等2004 年 9 月8ASP 数据库开发实例解析机械工业严、于亚芳、王国辉2004 年 12 月9Delphi 工程应用与项目实践机械工业宋坤、智勇等2005 年 1 月10Visual Basic 工程应用与项目实践机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论