台球厅收费管理系统计算机课程设计正文大学论文.docx
- 文档编号:12904197
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:64
- 大小:1.27MB
台球厅收费管理系统计算机课程设计正文大学论文.docx
《台球厅收费管理系统计算机课程设计正文大学论文.docx》由会员分享,可在线阅读,更多相关《台球厅收费管理系统计算机课程设计正文大学论文.docx(64页珍藏版)》请在冰豆网上搜索。
台球厅收费管理系统计算机课程设计正文大学论文
课程设计报告
课程名称:
计算机实践
(1)
项目名称:
台球厅收费管理系统
学院:
专业:
姓名/学号:
班级:
实验时间:
成绩:
指导教师:
(一)课题介绍
1.1题目:
台球厅管理系统
1.2设计目标:
实现台球厅的数字化管理,规范化管理借入借出,准确定位,实现增删改查。
1.3实验环境:
前台使用C++编写,实现工具visualstudio2013update4。
1.4需求分析:
台球厅管理系统:
主要涉及台球厅的卡号管理,又可以分为两种情况,会员卡号和普通卡号。
用户管理方面分成操作员和管理员两种。
系统功能模块包括:
(1)系统登录模块:
根据不同权限将用户角色分为操作人员和管理员,操作人员可以进行系统操作;管理员可以对用户进行管理。
(2)会员卡号模块:
记录卡号和用户姓名、身份证号、账户余额、是否续费等信息。
(3)系统管理模块:
管理员可以进行系统的管理,包括用户信息的增、删、改、查。
(4)普通卡号模块:
记录普通卡号、身份证号、进入和离开时间以及费用等信息。
项目的研究思路是:
首先划分为会员卡和普通卡两种。
会员卡的特点是输入用户名、密码便可登陆,可充值会员使用。
普通卡的特点是记录上网时间,按时间先收费。
1.5概念结构设计:
一张用户管理表,表名[用户表]
一张会员打台球,简称[会员卡]
一张普通,简称[普通卡]
所有用户共同使用一个主界面,在用户登录的时候确定用户及其权限,当登录的用户没有该项权限时,在界面中这项权限所对应的功能模块不能被点击,这样的设计方便了系统管理和维护。
用户在使用本系统时的工作过程为:
进入系统后,会看到登录窗体,对用户的身份进行验证,身份正确则进入本系统,登录到主界面,选择需要的功能进行操作,结束后退出本系统。
如图1.1所示。
图1.1系统流程分析图
管理员
操作员管理员操作员
图1.2系统功能模块
1.6逻辑结构设计:
用户表将涉及以下属性:
姓名、密码、新密码、确认密码。
会员卡将涉及以下属性:
卡号、用户姓名、身份证号、账户余额、是否续费。
普通卡将涉及以下属性:
普通卡号、身份证号、普通卡状态、进入和离开时间以及费用。
(二)数据库的建立、设计及实施
2.1数据库的建立
点击“开始”按钮,在所有程序中找到MicrosoftSQLServer,再从弹出的菜单中找到“企
业管理器”单击进入。
点击“企业管理器”栏如图1.2所示的SQLServer数据库界面,接下来单击“数据库”栏,在数据库中建个库,起名为“taiqiuting”。
2.2数据实体及其关系
本数据库中有3个实体,分别如下介绍:
实体1:
用户:
(姓名,密码,用户类别编号,类别名称)
本系统的数据库并没有将每类用户分别作为一个实体进行设计,而是将用户作为整个数据库的一个实体,通过用户的属性中的类别编号来判断用户的类别。
用户实体使用[用户表]表示,其中包含四个属性:
UID表示姓名、PWD表示密码、Type表示用户类别编号、Exp表示用户类别名称。
图2.3是实体1用户的E-R图。
实体2:
会员客户:
(会员卡号,姓名,身份证号,账户余额,缴费状态)
本系统主要存储的是持有会员卡客户的信息,因此本系统单设了一个基本信息实体。
基本信息实体使用ChangQiTable表示,它包含5个属性:
ChangQiCardID表示会员卡号、ChangQiName表示持有会员卡客户的姓名、ChangQiAddr表示持有会员卡客户的账户余额、ChangQiCarNum表示持有会员卡客户的身份证号、ChangQiFee表示持有会员卡客户的缴费状态。
图2.4是实体2会员客户的E-R图。
实体3:
普通客户:
(普通卡号,身份证号,进入时间,离开时间,计时费用,普通卡状态)
本系统主要存储的是持有会员卡客户的信息,基本信息还是本系统的实体。
基本信息实体使用LinShiTable表示,它包含6个属性:
LinShiCardID表示普通卡号、LinShiCarNum表示持有普通卡客户的身份证号、InTime表示持有普通卡车辆的进入时间、OutTime表示持有普通卡车辆的离开时间、Fee表示持有普通卡客户的计时交费。
Status表示普通卡的发放状态。
图2.5是实体3普通借阅的E-R图。
2.3数据库表的设计
本数据库共设计了3张表,表2.1是本数据库的用户表。
这张表介绍了本数据库的用户,包括管理员和操作员。
用户是通过类别编号来区分用户类别的,用户表共有4个字段,分别表示用户姓名、密码、用户类别编号及用户类别名称。
表2.2数据库用户表
字段名
字段描述
是否为主键
数据类型
长度
UID
用户姓名
是
char
10
PWD
密码
否
char
20
Type
类别编号
是
char
4
Exp
类别名称
否
char
20
表2.2是会员客户基本信息表。
包括会员卡号、持有会员卡客户的姓名、家庭住址、身份证号、缴费状态。
表2.3数据库的会员客户表
字段名
字段描述
是否为主键
数据类型
长度
ChangQiCardID
会员卡号
是
char
10
ChangQiName
会员客户姓名
否
char
10
ChangQiAddr
账户余额
否
char
10
ChangQiCarNum
身份证号
否
char
10
ChangQiFee
缴费状态
否
char
10
表2.3是是普通客户基本信息表。
包括普通卡号、普通卡姓名、进入时间、离开时间、计时交费、普通卡发放状态。
表2.3数据库的普通客户表
字段名
字段描述
是否为主键
数据类型
长度
LinShiCardID
普通卡号
是
char
10
LinShiCarNum
普通客户姓名
否
char
10
InTime
进入时间
否
char
20
OutTime
离开时间
否
char
20
Fee
计时缴费
否
char
10
Status
普通卡状态
否
char
1
Status3
状态
否
char
10
建立完成如下图所示:
数据库的链接:
打开管理工具
打开ODBC数据源(32位)
添加Stopping数据库
(三)系统详细设计
3.1用户登录模块设计
用户登录模块是本系统的基本功能模块,要与后台数据库紧密相连。
设计步骤为:
添加新对话框设置ID号为IDD_DIALOG_Login,并以CDialog为基类创建CLogin类,添加控件、成员变量,完成之后得到如图3.1所示的登录窗口对话框图。
图3.1登录窗口对话框图
如果系统登录不成功,就会弹出一个小的对话框,里面会告诉你“密码错误,请重新输入”的字样,如图6.13所示登录失败窗口图
如果系统登录成功,就会弹出一个小的对话框,里面会告诉用户,该用户是什么登录身份,如图6.14所示登录成功窗口图,本图以管理员登录成功为例。
从图3.1中可以看到,本模块中添加了四个EditBox类型的控件,两个用来存放变量,另外两个用来存放变量内容。
本模块添加了两个Button类型的控件,用来设置确定和取消按钮。
表3.1是本模块添加的控件列表。
表3.1用户登录模块控件列表
ID
控件类型
控件名称
变量类型
变量名称
函数名称
IDC_STATIC
EditBox
用户名:
IDC_STATIC
EditBox
密码:
IDC_EDIT_UName
EditBox
CEdit
m_usename
IDC_EDIT_Pwd
EditBox
CEdit
m_pwd
ID_OK
Button
登录
OnOK()
ID_CANCEL
Button
取消
OnCancel()
从表3.1中可以看到本模块有两个变量和两个成员函数,两个变量分别是m_usename和m_pwd;两个成员函数OnOK()和OnCancel()。
先介绍一下创建变量,下面以m_usename为例,找到登录模块,点击鼠标右键出现一个对话框,如图3.2所示
图3.1建立变量
(1)
在弹出的菜单栏中,点击“类向导”,点击“成员变量”栏,然后点击“添加变量”按钮,接下来弹出的窗口为给变量起名字,点击“OK”按钮完成变量的生成,出现如下图3.3所示的窗口
图3.3建立变量
(2)
菜单项的设计:
接下来讲解这两个成员函数,它们是用来设计确定和取消按钮。
OnOK()函数设计的是确定按钮,OnCancel()函数设计的是取消按钮,如图5.5是用户登录类CLogin的成员函数和成员变量视图。
图3.4本模块类CLogin成员函数和成员变量视图
从图3.4中可以看到本模块在设计控件Button时的两个成员函数OnOK()和OnCancel()。
该模块的设计过程中有两个值得注意的点:
其一是该模块中主要有两个变量用户名和密码。
要确保登录成功,用户名和密码一定要正确并且对应,因此判断用户名密码正确与否是该模块设计的关键。
首先在头文件.h中添加需要用到的数据源变量
然后利用GetWindowText()函数获取对话框中输入的用户名和密码信息,传递给username和password两个变量。
利用SQL查询语句
strSQL.Format("select*from用户表whereUID='%s'andPWD='%s'",username,password);
中数据库的Admin表中进行查询,如果找到相应的记录,则登录成功,取出这个用户相对应的权限Type赋值给m_userLevel变量。
之后就利用该变量的值为0还是1,来区分是操作员还是管理员。
如果SQL查询的结果为0,即m_recordSet.GetRecordCount()==0,则说明该用户名或密码在用户表中找不到,则登录失败。
登录代码的设计如下:
voidCLogin:
:
OnOk()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringusername,password;
m_username.GetWindowText(username);
m_pwd.GetWindowText(password);
if(!
m_database.IsOpen())
{
if(m_database.Open(_T("taiqiuting")))
{
m_recordSet.m_pDatabase=&m_database;
CStringstrSQL;
strSQL.Format("select*fromAdminwhereUID='%s'andPWD='%s'",username,password);
m_recordSet.Open(CRecordset:
:
forwardOnly,strSQL);
if(m_recordSet.GetRecordCount()==0)
{
MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);
m_pwd.SetWindowText("");
m_pwd.SetFocus();
}
else
{
m_recordSet.GetFieldValue("Type",m_userLevel);
CDialog:
:
OnOK();
}
m_recordSet.Close();
m_database.Close();
}
else
{
MessageBox("不能打开数据库");
}
}
}
voidCLogin:
:
OnCancel()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(MessageBox("真的要退出系统吗?
","退出询问",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
CDialog:
:
OnCancel();
}
其次,利用登录模块中获取的m_userLevel的值,判断该登录用户的类别和权限。
判断用户权限的代码在StoppingManageSys.cpp中,在初始化函数中
修改代码如下:
CLoginlogin;
if(login.DoModal()==IDOK)
{
CSingleDocTemplate*pDocTemplate;
pDocTemplate=newCSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CStoppingManageSysDoc),
RUNTIME_CLASS(CMainFrame),//mainSDIframewindow
RUNTIME_CLASS(CStoppingManageSysView));
AddDocTemplate(pDocTemplate);
//Parsecommandlineforstandardshellcommands,DDE,fileopen
CCommandLineInfocmdInfo;
ParseCommandLine(cmdInfo);
//Dispatchcommandsspecifiedonthecommandline
if(!
ProcessShellCommand(cmdInfo))
returnFALSE;
CMenu*pMenu=m_pMainWnd->GetActiveWindow()->GetMenu();
if(login.m_userLevel=="0")//操作员
{
AfxMessageBox("操作员登录");
pMenu->EnableMenuItem(0,MF_GRAYED|MF_BYPOSITION);
//使菜单“用户管理”无效。
}elseif(login.m_userLevel=="1")//管理员
{
AfxMessageBox("管理员登录");
pMenu->EnableMenuItem(ID_ChangQi,MF_DISABLED|MF_GRAYED);
pMenu->EnableMenuItem(ID_LinShi,MF_DISABLED|MF_GRAYED);
pMenu->GetSubMenu(0)->EnableMenuItem(0,MF_ENABLED|MF_BYPOSITION);
m_pMainWnd->UpdateWindow();
}
//Theoneandonlywindowhasbeeninitialized,soshowandupdateit.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->SetWindowText("台球厅管理系统");
m_pMainWnd->UpdateWindow();
returnTRUE;
}
else{
returnFALSE;
}
3.2系统主界面模块设计
本系统的主界面设计步骤为:
编辑“Menu”下的“IDR_MAINFRAME”,调整菜单资源,得到如图3.5所示的主界面窗口对话框图。
图3.5主界面窗口对话框图。
接下来,该图为系统用户的数据库信息图,如图6.18所示。
从图3.20中可以看到,所有的功能都是在主界面中实现的,因此主界面设计了多个控件及成员函数。
表3.2是本模块添加的控件列表
表3.2Menu资源列表
ID
标题
函数名称
ID_ChangePwd
修改密码
OnPassword()
ID_ManageUserInfo
用户信息管理
OnCreate()
ID_Exit
退出系统
IID_ChangQi
会员用户管理
OnChangQi()
ID_LinShi
普通卡管理
OnLinShi()
ID_HELP
帮助
3.3用户管理模块设计
用户管理模块的设计步骤是:
添加新对话框设置ID号为IDD_DIALOG_UserInfoManage,并以CDialog为基类创建UserInfoManage类,以CRecordset为基类创建DataRowset类。
添加控件、成员变量及函数。
完成之后得到如图3.6所示的用户管理窗口对话框图。
图3.6用户管理窗口对话框图从图3.6中可以看到,本模块中添加了三个Statictext类型的控件,用来存放成员变量的内容。
表3.3是Statictext类型的控件列表。
表3.3Statictext控件表
ID
控件类型
控件名称
IDC_STATIC
Statictext
用户名
IDC_STATIC
Statictext
密码
IDC_STATIC
Statictext
用户身份
本模块中还添加了5个Button控件和几个其它类型的控件,表3.4是这些控件的控件列表。
表3.4其它类型控件表
ID
控件类型
变量类型
变量名称
函数名称
IDC_EDIT_userID
EditBox
CEdit
m_userID
OnChangeEDITuserID()
IDC_EDIT_userPwd
EditBox
CEdit
m_userPwd
IDC_COMBO_userType
ComboBox
CComboBox
m_userType
IDC_LIST_UserInfo
ListCtrl
CListCtrl
m_list
OnClickLISTListener()
IDC_BTN_UserAdd
Button
CButton
m_bAdd
OnBTNUserAdd()
IIDC_BTN_UserDelete
Button
CButton
m_bDel
OnBTNUserDelete()
IDC_BTN_UserUpdate
Button
CButton
m_bUpdata
OnBTNUserUpdata()
ID_USER_OK
Button
CButton
m_bOK
OnBtnOk()
IDCANCLE
Button
CButton
m_bCancal
OnBtnCancel()
其中,List控件的“样式”属性中,将“查看”修改为“报告”模式,如下图:
本模块中也添加了一些成员函数和成员变量,如图3.7是用户管理模块的CUserInfoManageDlg类的类视图,图这个类主要是实现用户管理模块中的各个功能。
如图3.7表示的是CUserInfoManageSet类的类视图。
这个类的主要功能是设置用户信息。
图3.7UserInfoManageDlg类视图
图3.8DataRowset类视图
接下来,介绍下以CRecordset为基类创建CUserInfoManageSet类的过程,首先找到用户管理模块,点击鼠标右键出现一个对话框,点击“建立类向导”如图3.9所示
图3.9建立DataRowset类过程
(1)图
在弹出的窗口中找到“AddClass”按钮,再从弹出的菜单栏中选择“New”,如图3.91所示
图3.91建立CUserInfoManageSet类过程
(2)图
完成上述操作后,注意在UserInfoManageDlg.h中添加相应的函数,以及变量,如下所示
#if!
defined(AFX_USERINFOMANAGEDLG_H__CA082AD8_E557_41FF_AC2D_FF8338248450__INCLUDED_)
#defineAFX_USERINFOMANAGEDLG_H__CA082AD8_E557_41FF_AC2D_FF8338248450__INCLUDED_
#include"UserInfoManageSet.h"
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
//UserInfoManageDlg.h:
headerfile
//
/////////////////////////////////////////////////////////////////////////////
//CUserInfoManageDlgdialog
classCUserInfoManageDlg:
publicCDialog
{
//Construction
public:
CDatabasem_database;
BOOLOnInitDialog();
voidResetButton();
voidRefreshList();
CUserInfoManageSetm_recordSet;
CUserInfoManageDlg(CWnd*pParent=NULL);//standardconstructor
//DialogData
//{{AFX_DATA(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
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CUserInfoManageDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//Generatedmessagemapfunctions
//{{AFX_MSG(CUserInfoManageDlg)
afx_msgv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 台球 收费 管理 系统 计算机 课程设计 正文 大学 论文