台球厅收费管理系统计算机课程设计精荐_第1页
台球厅收费管理系统计算机课程设计精荐_第2页
台球厅收费管理系统计算机课程设计精荐_第3页
台球厅收费管理系统计算机课程设计精荐_第4页
台球厅收费管理系统计算机课程设计精荐_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程名称: 计算机实践1 工程名称: 台球厅收费管理系统 学 院: 专 业: 姓名/学号: 班 级: 实验时间: 成 绩: 指导教师: 一课题介绍题目: 台球厅管理系统 设计目标: 实现台球厅的数字化管理,标准化管理借入借出,准确定位,实现增删改查。实验环境: 前台使用C+编写,实现工具visual studio 2021 update4。 需求分析:台球厅管理系统:主要涉及台球厅的卡号管理,又可以分为两种情况,会员卡号和普通卡号。用户管理方面分成操作员和管理员两种。系统功能模块包括:1系统登录模块:根据不同权限将用户角色分为操作人员和管理员,操作人员可以进行系统操作;管理员可以对

2、用户进行管理。2会员卡号模块:记录卡号和用户姓名、身份证号、账户余额、是否续费等信息。3系统管理模块:管理员可以进行系统的管理,包括用户信息的增、删、改、查。4普通卡号模块:记录普通卡号、身份证号、进入和离开时间以及费用等信息。工程的研究思路是:首先划分为会员卡和普通卡两种。会员卡的特点是输入用户名、密码便可登陆,可充值会员使用。普通卡的特点是记录上网时间,按时间先收费。概念结构设计:一张用户管理表,表名用户表一张会员打台球,简称会员卡一张普通,简称普通卡所有用户共同使用一个主界面,在用户登录的时候确定用户及其权限,当登录的用户没有该项权限时,在界面中这项权限所对应的功能模块不能被点击,这样的

3、设计方便了系统管理和维护。用户在使用本系统时的工作过程为:进入系统后,会看到登录窗体,对用户的身份进行验证,身份正确那么进入本系统,登录到主界面,选择需要的功能进行操作,结束后退出本系统。如下图。图 系统流程分析图 台球厅收费管理系统收费管理系统管理系统登陆会员卡普通卡管理员 操作员 管理员 操作员 图1.2 系统功能模块逻辑结构设计:用户表将涉及以下属性: 姓名、密码、新密码、确认密码。会员卡将涉及以下属性: 卡号、用户姓名、身份证号、账户余额、是否续费。普通卡将涉及以下属性: 普通卡号、身份证号、普通卡状态、进入和离开时间以及费用。 二数据库的建立、设计及实施点击“开始按钮,在所有程序中找

4、到 Microsoft SQL Server,再从弹出的菜单中找到“企业管理器单击进入。点击“企业管理器栏如图 1.2 所示的 SQL Server 数据库界面,接下来单击“数据库栏,在数据库中建个库,起名为“taiqiuting。数据实体及其关系本数据库中有3个实体,分别如下介绍:实体1: 用户:姓名,密码,用户类别编号,类别名称本系统的数据库并没有将每类用户分别作为一个实体进行设计,而是将用户作为整个数据库的一个实体,通过用户的属性中的类别编号来判断用户的类别。用户实体使用用户表表示,其中包含四个属性:UID表示姓名、PWD表示密码、Type表示用户类别编号、Exp表示用户类别名称。 图是

5、实体1用户的E-R图。用户用户类别名称姓名用户类别编号密码图用户E-R图实体2: 会员客户:会员卡号,姓名,身份证号,账户余额,缴费状态 本系统主要存储的是持有会员卡客户的信息,因此本系统单设了一个根本信息实体。根本信息实体使用 ChangQiTable 表示,它包含 5 个属性:ChangQiCardID 表示会员卡号、ChangQiName 表示持有会员卡客户的姓名、ChangQiAddr 表示持有会员卡客户的账户余额、ChangQiCarNum 表示持有会员卡客户的身份证号、ChangQiFee 表示持有会员卡客户的缴费状态。 图是实体2会员客户的E-R图。账户余额身份证号实体3: 普通

6、客户:普通卡号,身份证号,进入时间,离开时间,计时费用,普通卡状态本系统主要存储的是持有会员卡客户的信息,根本信息还是本系统的实体。根本信息实体使用 LinShiTable 表示,它包含 6 个属性:LinShiCardID 表示普通卡号、LinShiCarNum 表示持有普通卡客户的身份证号、InTime 表示持有普通卡车辆的进入时间、OutTime 表示持有普通卡车辆的离开时间、Fee 表示持有普通卡客户的计时交费。Status 表示普通卡的发放状态。 图是实体3普通借阅的E-R图。身份证号2.3数据库表的设计本数据库共设计了3张表,表是本数据库的用户表。这张表介绍了本数据库的用户,包括管

7、理员和操作员。用户是通过类别编号来区分用户类别的,用户表共有4个字段,分别表示用户姓名、密码、用户类别编号及用户类别名称。 表数据库用户表字段名字段描述是否为主键数据类型长度UID用户姓名是char10PWD密码否char20Type类别编号是char4Exp类别名称否char20表是会员客户根本信息表。包括会员卡号、持有会员卡客户的姓名、家庭住址、身份证号、缴费状态。表数据库的会员客户表字段名字段描述是否为主键数据类型长度ChangQiCardID会员卡号是char10ChangQiName会员客户姓名否char10ChangQiAddr账户余额否char10ChangQiCarNum身份证

8、号否char10ChangQiFee缴费状态否char10表是是普通客户根本信息表。包括普通卡号、普通卡姓名、进入时间、离开时间、计时交费、普通卡发放状态。表数据库的普通客户表字段名字段描述是否为主键数据类型长度LinShiCardID普通卡号是char10LinShiCarNum普通客户姓名否char10InTime进入时间否char20OutTime离开时间否char20Fee计时缴费否char10Status普通卡状态否char1Status3状态否char10建立完成如下列图所示:数据库的链接: 翻开管理工具翻开ODBC数据源32位添加Stopping数据库 三系统详细设计 用户登录模

9、块设计用户登录模块是本系统的根本功能模块,要与后台数据库紧密相连。设计步骤为:添加新对话框设置ID号为IDD_DIALOG_Login,并以CDialog为基类创立CLogin类,添加控件、成员变量,完成之后得到如图3.1所示的登录窗口对话框图。图3.1登录窗口对话框图如果系统登录成功,就会弹出一个小的对话框,里面会告诉用户,该用户是什么登录身份,如图6.14所示登录成功窗口图,本图以管理员登录成功为例。从图中可以看到,本模块中添加了四个Edit Box类型的控件,两个用来存放变量,另外两个用来存放变量内容。本模块添加了两个Button类型的控件,用来设置确定和取消按钮。表是本模块添加的控件列

10、表。表用户登录模块控件列表ID控件类型控件名称变量类型变量名称函数名称IDC_STATICEdit Box用户名:IDC_STATICEdit Box密码:IDC_EDIT_UNameEdit BoxCEditm_usenameIDC_EDIT_PwdEdit BoxCEditm_pwdID_OKButton登录OnOK()ID_CANCELButton取消OnCancel()从表中可以看到本模块有两个变量和两个成员函数,两个变量分别是m_usename 和m_pwd;两个成员函数OnOK()和OnCancel()。先介绍一下创立变量,下面以m_usename为例,找到登录模块,点击鼠标右键出

11、现一个对话框,如图3.2所示图建立变量1在弹出的菜单栏中,点击“类向导,点击“成员变量栏,然后点击“添加变量按钮,接下来弹出的窗口为给变量起名字,点击“OK按钮完成变量的生成,出现如下列图所示的窗口图建立变量2菜单项的设计:接下来讲解这两个成员函数,它们是用来设计确定和取消按钮。OnOK()函数设计的是确定按钮,OnCancel()函数设计的是取消按钮,如图5.5是用户登录类CLogin的成员函数和成员变量视图。图本模块类CLogin成员函数和成员变量视图从图中可以看到本模块在设计控件Button时的两个成员函数OnOK()和OnCancel()。该模块的设计过程中有两个值得注意的点:其一是该

12、模块中主要有两个变量用户名和密码。要确保登录成功,用户名和密码一定要正确并且对应,因此判断用户名密码正确与否是该模块设计的关键。首先然后利用GetWindowText() 函数获取对话框中输入的用户名和密码信息,传递给username和password两个变量。利用SQL查询语句strSQL.Format(select * from 用户表where UID=%s and PWD=%s,username,password);中数据库的Admin表中进行查询,如果找到相应的记录,那么登录成功,取出这个用户相对应的权限Type赋值给m_userLevel变量。之后就利用该变量的值为0还是1,来区分

13、是操作员还是管理员。如果SQL查询的结果为0,即m_recordSet.GetRecordCount()=0,那么说明该用户名或密码在用户表中找不到,那么登录失败。登录代码的设计如下:void CLogin:OnOk() / TODO: Add your control notification handler code hereCString username,password;m_username.GetWindowText(username);m_pwd.GetWindowText(password);if(!m_database.IsOpen()if(m_database.Open(_

14、T(taiqiuting)m_recordSet.m_pDatabase=&m_database;CString strSQL;strSQL.Format(select * from Admin where UID=%s and PWD=%s,username,password);m_recordSet.Open(CRecordset:forwardOnly,strSQL);if(m_recordSet.GetRecordCount()=0)MessageBox(密码错误,请重新输入,密码错误,MB_OK|MB_ICONWARNING);m_pwd.SetWindowText();m_pwd.

15、SetFocus();elsem_recordSet.GetFieldValue(Type,m_userLevel);CDialog:OnOK();m_recordSet.Close();m_database.Close();elseMessageBox(不能翻开数据库);void CLogin:OnCancel() / TODO: Add your control notification handler code hereif(MessageBox(真的要退出系统吗?,退出询问,MB_OKCANCEL|MB_ICONQUESTION)=IDOK)CDialog:OnCancel();其次,

16、利用登录模块中获取的m_userLevel的值,判断该登录用户的类别和权限。判断用户权限的代码在StoppingManageS中,在初始化函数中修改代码如下:CLogin login; if(login.DoModal()=IDOK)CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CStoppingManageSysDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLA

17、SS(CStoppingManageSysView);AddDocTemplate(pDocTemplate);/ Parse command line for standard shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;CMenu* pMenu=m_pMainWnd-GetActiveW

18、indow()-GetMenu();if(login.m_userLevel=0)/操作员AfxMessageBox(操作员登录);pMenu-EnableMenuItem (0,MF_GRAYED|MF_BYPOSITION);/使菜单“用户管理无效。else if(login.m_userLevel=1)/管理员AfxMessageBox(管理员登录);pMenu-EnableMenuItem (ID_ChangQi,MF_DISABLED|MF_GRAYED);pMenu-EnableMenuItem (ID_LinShi,MF_DISABLED|MF_GRAYED);pMenu-Get

19、SubMenu(0)-EnableMenuItem (0,MF_ENABLED|MF_BYPOSITION);m_pMainWnd-UpdateWindow();/ The one and only window has been initialized, so show and update it.m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-SetWindowText(台球厅管理系统);m_pMainWnd-UpdateWindow();return TRUE;else return FALSE;系统主界面模块设计本系统的主界面设计 步骤为:编辑“Me

20、nu下的“IDR_MAINFRAME,调整菜单资源,得到如下图的主界面窗口对话框图。图主界面窗口对话框图。接下来,该图为系统用户的数据库信息图,如图6.18所示。从图中可以看到,所有的功能都是在主界面中实现的,因此主界面设计了多个控件及成员函数。表是本模块添加的控件列表表 Menu资源列表ID标题函数名称ID_ChangePwd修改密码OnPassword()ID_ManageUserInfo用户信息管理OnCreate ()ID_Exit退出系统I ID_ChangQi会员用户管理OnChangQi()ID_LinShi普通卡管理OnLinShi()ID_HELP帮助3.3 用户管理模块设计

21、用户管理模块的设计步骤是:添加新对话框设置ID号为IDD_DIALOG_UserInfoManage,并以CDialog为基类创立UserInfoManage类,以CRecordset为基类创立DataRowset类。添加控件、成员变量及函数。完成之后得到如下图的用户管理窗口对话框图。图用户管理窗口对话框图从图中可以看到,本模块中添加了三个Static text类型的控件,用来存放成员变量的内容。表是Static text类型的控件列表。表Static text控件表ID控件类型控件名称IDC_STATICStatic text用户名IDC_STATICStatic text密码IDC_STA

22、TICStatic text用户身份本模块中还添加了5个Button控件和几个其它类型的控件,表是这些控件的控件列表。表其它类型控件表ID控件类型变量类型变量名称函数名称IDC_EDIT_userIDEdit BoxCEditm_userIDOnChangeEDITuserID()IDC_EDIT_userPwdEdit BoxCEditm_userPwdIDC_COMBO_userTypeComboBoxCComboBoxm_userTypeIDC_LIST_UserInfoListCtrlCListCtrlm_listOnClickLISTListener()IDC_BTN_UserAdd

23、ButtonCButtonm_bAddOnBTNUserAdd()I IDC_BTN_UserDeleteButtonCButtonm_bDelOnBTNUserDelete()IDC_BTN_UserUpdateButtonCButtonm_bUpdataOnBTNUserUpdata()ID_USER_OKButtonCButtonm_bOKOnBtnOk()IDCANCLEButtonCButtonm_bCancalOnBtnCancel()其中,List控件的“样式属性中,将“查看修改为“报告模式,如下列图:本模块中也添加了一些成员函数和成员变量,如图是用户管理模块的CUserInfo

24、ManageDlg类的类视图,图这个类主要是实现用户管理模块中的各个功能。如图表示的是CUserInfoManageSet类的类视图。这个类的主要功能是设置用户信息。图3.7 UserInfoManageDlg类视图图 DataRowset类视图接下来,介绍下以CRecordset为基类创立CUserInfoManageSet类的过程,首先找到用户管理模块,点击鼠标右键出现一个对话框,点击“建立类向导如下图图建立 DataRowset类过程1图在弹出的窗口中找到“Add Class按钮,再从弹出的菜单栏中选择“New,如下图图建立 CUserInfoManageSet类过程2图完成上述操作后,

25、注意在UserInfoManageDlg.h中添加相应的函数,以及变量,如下所示#if !defined(AFX_USERINFOMANAGEDLG_H_CA082AD8_E557_41FF_AC2D_FF8338248450_INCLUDED_)#define AFX_USERINFOMANAGEDLG_H_CA082AD8_E557_41FF_AC2D_FF8338248450_INCLUDED_#include UserInfoManageSet.h#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ UserInfoManageDlg

26、.h : header file/ CUserInfoManageDlg dialogclass CUserInfoManageDlg : public CDialog/ Constructionpublic:CDatabase m_database;BOOL OnInitDialog();void ResetButton();void RefreshList();CUserInfoManageSet m_recordSet;CUserInfoManageDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DAT

27、A(CUserInfoManageDlg)enum IDD = IDD_DIALOG_UserInfoManage ;CButtonm_bCancel;CButtonm_bOK;CButtonm_bUpdate;CButtonm_bDelete;CButtonm_bAdd;CListCtrlm_list;CComboBoxm_userType;CEditm_userPwd;CEditm_userID;/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CUserInfoManage

28、Dlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/ Generated message map functions/AFX_MSG(CUserInfoManageDlg)afx_msg void OnBtnCancel();afx_msg void OnBtnOk();afx_msg void OnBTNUserAdd();afx_msg void OnBTNUserDelete();afx_msg void

29、 OnBTNUserUpdate();afx_msg void OnClickLISTListener(NMHDR* pNMHDR, LRESULT* pResult);/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_USERINFOMANAGEDLG_H_CA082AD8_E557_41FF_AC2D_FF83

30、38248450_INCLUDED_)在用户管理对话框运行时,先对数据库进行查询,显示Admin表中所有的用户信息,包括用户名、密码、权限类别和权限描述。利用初始化函数BOOL CUserInfoManageDlg:OnInitDialog() 对ListControl控件进行初始的描绘;并通过查询数据库获得用户信息,显示在ListControl控件中。具体实现代码如下:BOOL CUserInfoManageDlg:OnInitDialog()CDialog:OnInitDialog();m_list.InsertColumn(0,用户名);m_list.InsertColumn(1,密码)

31、;m_list.InsertColumn(2,用户权限);m_list.InsertColumn(3,用户身份); / 向ListControl控件中添加表头RECT rectList;m_list.GetWindowRect(&rectList);int wid=rectList.right-rectList.left;for(int i=0;i4;i+)m_list.SetColumnWidth(i,wid/4); /计算每一列的宽度,这里采用的均分列宽m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshList();m_userTyp

32、e.AddString(管理员);m_userType.AddString(操作员); /动态给Combobox控件添加信息ResetButton();return TRUE;void CUserInfoManageDlg:RefreshList()UpdateData();m_list.DeleteAllItems(); /ListControl控件中删除旧的数据m_recordSet.Open();m_recordSet.m_strFilter=Type=0 or Type=1;m_recordSet.Requery(); /重新查询for(int i=0;iGetDlgItem(IDC_

33、EDIT_UName);CEdit*pPassword=(CEdit*)this-GetDlgItem(IDC_EDIT_OldPWD);CEdit*pNew=(CEdit*)this-GetDlgItem(IDC_EDIT_NewPWD);CEdit*pConfirm=(CEdit*)this-GetDlgItem(IDC_EDIT_ConformPWD);CString username,password,newPassword,conformPassword;pUsername-GetWindowText(username);pPassword-GetWindowText(passwor

34、d);pNew-GetWindowText(newPassword);pConfirm-GetWindowText(conformPassword);CDatabase m_database;CRecordset m_recordSet;if(newPassword.IsEmpty()|conformPassword.IsEmpty() MessageBox(新密码不能为空);elseif(newPassword!=conformPassword)MessageBox(两次输入密码不一致,请重新输入新密码);pNew-SetWindowText();pConfirm-SetWindowText

35、();pNew-SetFocus();elseif(!m_database.IsOpen()if(m_database.Open(_T(taiqiuting)m_recordSet.m_pDatabase=&m_database;CString strSQL;strSQL.Format(select * from Admin where UID=%s and PWD=%s,username,password);m_recordSet.Open(CRecordset:forwardOnly,strSQL);if(m_recordSet.GetRecordCount()=0)MessageBox(

36、密码错误,请重新输入,密码错误,MB_OK|MB_ICONWARNING);pPassword-SetWindowText();pNew-SetWindowText();pConfirm-SetWindowText();pPassword-SetFocus();elsem_recordSet.Close();strSQL.Format(update Admin set PWD=%s where UID=%s,newPassword,username);m_database.ExecuteSQL(strSQL);MessageBox(修改密码成功!);CDialog:OnOK();m_recor

37、dSet.Close();m_database.Close();else MessageBox(不能翻开数据库);CDialog:OnOK();void CChangePWDDlg:OnChangePWDCANCEL() / TODO: Add your control notification handler code hereCDialog:OnCancel();3.5 会员用户模块设计会员用户模块设计步骤是:添加新对话框设置ID号为IDD_DIALOG_ChangQi,并以CDialog为基类创立CChangQiDlg类,以CRecordset为基类创立CChangQiSet类。添加控件

38、、成员变量,完成之后得到如图5.16所示的根本信息窗口对话框图。 会员用户窗口对话框图从图中可以看到,本模块中添加了11个Static text类型的控件,用来存放成员变量的内容。表是Static text类型的控件列表。添加Edit Box控件如表所示,这些控件可以存放变量名称和变量内容,添加button控件和ListCtrl控件如表所示,这些控件通过设置函数来完本钱模块功能的操作。表 Static text控件表ID控件类型控件名称IDC_STATICStatic text会员卡号IDC_STATICStatic text会员用户姓名IDC_STATICStatic text身份证号IDC

39、_STATICStatic text账户余额IDC_STATICStatic text是否缴费表3.7 Edit控件表ID控件类型变量类型变量名称IDC_EDIT_ChangQiCardIDEdit BoxCEditm_changqicardIDIDC_EDIT_ChangQiUserNameEdit BoxCEditm_changqiusernameIDC_EDIT_CarNumEdit BoxCEditm_carnumIDC_EDIT_AddrEdit BoxCEditm_addrIDC_EDIT_FeeEdit BoxCEditm_fee表 CListCtrl控件和Button控件表ID

40、控件类型变量类型变量名称函数名称IDC_LIST_ChangQiManageListCtrlCListCtrlm_listOn ChangQiManageIDC_BTN_ChangQiAddButtonCButtonm_bAddOnBTNChangQiAddIDC_BTN_ChangQiUpdateButtonCButtonm_bUpdateOOnBTNChangQiUpdateIDC_BTN_ChangQiDeleteButtonCButtonm_bDeleteOnBTNChangQiDeleteID_ChangQiCANCELButtonCButtonm_bCancelOnChangQiC

41、ANCELID_ChangQiOKButtonCButtonm_bOKOnChangQiOK如图是会员卡模块CchangQiDlg类的类视图。这个类主要是设计借书模块的各个功能。图会员卡模块CChangQiDlg类的类视图如图是用户根本信息模块CChangQiSet类的类视图,这个类主要是用来设置会员卡用户根本信息的内容。图会员卡用户模块CChangQiSet类的类视图操作员管理对话框运行时,先对数据库进行查询,显示ChangQiTable表中所有的会员用户信息,包括用户名、会员卡号、车牌号、地址、和缴费状态描述。利用初始化函数BOOL CChangQiDlg:OnInitDialog()对L

42、istControl控件进行初始的描绘;并通过查询数据库获得用户信息,显示在ListControl控件中。会员用户信息的主要函数OnChangQi代码如下:BOOL CChangQiDlg:OnInitDialog()CDialog:OnInitDialog();m_list.InsertColumn(0,会员卡号);m_list.InsertColumn(1,姓名);m_list.InsertColumn(2,账户余额);m_list.InsertColumn(3,身份证号);m_list.InsertColumn(4,是否缴费);/给List最上方设置显示名称RECT rectList;m

43、_list.GetWindowRect(&rectList);int wid=rectList.right-rectList.left;for(int i=0;i5;i+)m_list.SetColumnWidth(i,wid/5); /平分list窗口宽度m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshList();ResetButton();return TRUE;void CChangQiDlg:RefreshList()m_list.DeleteAllItems();m_recordSet.Open();m_recordSet.

44、Requery();for(int i=0;im_recordSet.GetRecordCount();i+)CString temp;m_recordSet.GetFieldValue(ChangQiCardID,temp);m_list.InsertItem(i,temp);m_list.SetItemText(i,0, m_recordSet.m_ChangQiCardID);m_list.SetItemText(i,1, m_recordSet.m_ChangQiName);m_list.SetItemText(i,2, m_recordSet.m_ChangQiAddr);m_lis

45、t.SetItemText(i,3, m_recordSet.m_ChangQiCarNum);m_list.SetItemText(i,4, m_recordSet.m_ChangQiFee);/对应0-4标题编号显示数据数值m_recordSet.MoveNext(); /数据集指针移到下一行,循环获取下一条记录的值m_recordSet.Close();void CChangQiDlg:ResetButton()m_changqicardID.EnableWindow(false);m_changqiusername.EnableWindow(false);m_addr.EnableWi

46、ndow(false);m_carnum.EnableWindow(false);m_fee.EnableWindow(false);/设置Edit框不可用,变灰m_bOK.EnableWindow(false);m_bAdd.EnableWindow(true);m_bDelete.EnableWindow(true);m_bUpdate.EnableWindow(true);/设置按钮是否可用会员用户信息不仅仅可以查询,还应该可以添加、修改或者删除信息。因此CUserInfoManageDlg类中设计的函数包含添加信息函数OnBTNChangQiAdd、修改信息函数OnBTNChangQi

47、Updata、删除信息函数OnBTNChangQiDelete等。另外的一个函数是设计确定OnChangQiOk。以下是实现这几个函数的代码:添加函数OnBTNChangQiAdd代码:void CChangQiDlg:OnBTNChangQiAdd() / TODO: Add your control notification handler code herem_changqicardID.EnableWindow(true);m_changqicardID.SetWindowText();m_changqiusername.EnableWindow(true);m_changqiuser

48、name.SetWindowText();m_addr.EnableWindow(true);m_addr.SetWindowText();m_carnum.EnableWindow(true);m_carnum.SetWindowText();m_fee.EnableWindow(true);m_fee.SetWindowText();/设施Edit框可用,初始化Edit框内数据为空m_recordSet.Open();m_recordSet.AddNew();m_bOK.EnableWindow(true);m_bAdd.EnableWindow(false);m_bDelete.Enab

49、leWindow(false);m_bUpdate.EnableWindow(false);/设置按钮是否可用void CChangQiDlg:OnBTNChangQiDelete() / TODO: Add your control notification handler code hereint row=m_list.GetSelectionMark();CString s,strSQL;s=m_list.GetItemText(row,0); /List第0列,即会员卡号,取出赋值给sif(s=)MessageBox(请选择一行!);elseif(MessageBox(确定要删除记录吗

50、?,删除询问, MB_OKCANCEL|MB_ICONQUESTION)=IDOK)if(!m_database.IsOpen()if(m_database.Open(_T(taiqiuting)CString strSQL;strSQL.Format(delete from ChangQiTable where ChangQiCardID=%s,s);/SQL语句,按照选中的会员卡号,删除这一行m_database.ExecuteSQL(strSQL);m_database.Close();RefreshList();修改信息时,需要先在ListControl控件中,选定需要修改的一个用户名

51、,然后只有会员卡号是无法修改的,剩下的会员用户信息都可以进行修改操作,修改函数OnBTNChangQiUpdate代码如下:void CChangQiDlg:OnBTNChangQiUpdate() / TODO: Add your control notification handler code hereint row=m_list.GetSelectionMark();CString s,strSQL;s=m_list.GetItemText(row,0);/List第0列,即会员卡号,取出赋值给sif(s=)MessageBox(请选择一行!);elsestrSQL.Format(Ch

52、angQiCardID=%s,s);m_recordSet.Open();m_recordSet.m_strFilter=strSQL;m_recordSet.Requery();m_recordSet.Edit();m_bOK.EnableWindow(true);m_bAdd.EnableWindow(false);m_bUpdate.EnableWindow(false);m_bDelete.EnableWindow(false);/设置按钮是否可用m_changqicardID.EnableWindow(true);m_changqiusername.EnableWindow(true

53、);m_addr.EnableWindow(true);m_carnum.EnableWindow(true);m_fee.EnableWindow(true);/除了会员卡号外,其他都Edit框变为可以编辑。可以输入新的需要修改的值,然后点击“确定更新内容删除会员用户信息时,需要先中ListControl控件中选取要删除的一个会员用户信息,然后点击“确定按钮后,方可删除。删除函数OnBTNChangQiDelete代码如下:void CChangQiDlg:OnBTNChangQiDelete() / TODO: Add your control notification handler c

54、ode hereint row=m_list.GetSelectionMark();CString s,strSQL;s=m_list.GetItemText(row,0); /List第0列,即会员卡号,取出赋值给sif(s=)MessageBox(请选择一行!);elseif(MessageBox(确定要删除记录吗?,删除询问,MB_OKCANCEL|MB_ICONQUESTION)=IDOK)if(!m_database.IsOpen()if(m_database.Open(_T(Stopping)CString strSQL;strSQL.Format(delete from Chan

55、gQiTable where ChangQiCardID=%s,s);/SQL语句,按照选中的会员卡号,删除这一行m_database.ExecuteSQL(strSQL);m_database.Close();RefreshList();以上添加、修改、删除操作完毕后,点击“OK按钮,以上操作成功完成,“OK按钮函数OnChangQiOK如下:void CChangQiDlg:OnChangQiOK() / TODO: Add your control notification handler code hereCString ChangQiCarID,ChangQiUserName,Cha

56、ngQiAddr,ChangQiCarNum,ChangQiFee;m_changqicardID.GetWindowText(ChangQiCarID);m_changqiusername.GetWindowText(ChangQiUserName);m_addr.GetWindowText(ChangQiAddr);m_carnum.GetWindowText(ChangQiCarNum);m_fee.GetWindowText(ChangQiFee);/从Eidt框中获取数据给CString变量赋值if(ChangQiCarID=)MessageBox(请输入会员卡号);else if(

57、ChangQiFee=)MessageBox(请输入缴费状态);elsem_recordSet.m_ChangQiCardID=ChangQiCarID;m_recordSet.m_ChangQiName=ChangQiUserName;m_recordSet.m_ChangQiAddr=ChangQiAddr;m_recordSet.m_ChangQiCarNum=ChangQiCarNum;m_recordSet.m_ChangQiFee=ChangQiFee;/将上面CString变量的值传到数据库里面m_recordSet.Update(); /数据库更新,值保存m_recordSet

58、.Close();RefreshList(); /窗口list控件刷新,显示新的数据库中的值ResetButton();void CChangQiDlg:OnChangQiCANCEL() / TODO: Add your control notification handler code hereCDialog:OnCancel();对会员用户进行操作时,需要定义ListControl控件的监听函数OnClickLISTChangQiManage(),中选中ListControl控件中的某一行时,利用该函数把此行对应的会员用户各项信息中界面Edit框中显示出来。代码如下:void CChan

59、gQiDlg:OnClickLISTChangQiManage(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereint row=m_list.GetSelectionMark(); /选中某一行CString s;s=m_list.GetItemText(row,0);m_changqicardID.SetWindowText(s);s=m_list.GetItemText(row,1);m_changqiusername.SetWindowText(s);s=m_l

60、ist.GetItemText(row,2);m_addr.SetWindowText(s);s=m_list.GetItemText(row,3);m_carnum.SetWindowText(s);s=m_list.GetItemText(row,4);m_fee.SetWindowText(s);*pResult = 0;3.6 普通用户模块设计普通用户模块设计步骤是:添加新对话框设置ID号为IDD_DIALOG_LinshiManage,并以CDialog为基类创立CLinshiManageDlg类,以CRecordset为基类创立CLinshiManageSet类。添加控件、成员变量

温馨提示

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

评论

0/150

提交评论