台球厅收费管理系统设计毕业设计论文.docx

上传人:b****1 文档编号:15158522 上传时间:2023-07-01 格式:DOCX 页数:64 大小:1.27MB
下载 相关 举报
台球厅收费管理系统设计毕业设计论文.docx_第1页
第1页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第2页
第2页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第3页
第3页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第4页
第4页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第5页
第5页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第6页
第6页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第7页
第7页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第8页
第8页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第9页
第9页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第10页
第10页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第11页
第11页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第12页
第12页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第13页
第13页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第14页
第14页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第15页
第15页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第16页
第16页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第17页
第17页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第18页
第18页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第19页
第19页 / 共64页
台球厅收费管理系统设计毕业设计论文.docx_第20页
第20页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

台球厅收费管理系统设计毕业设计论文.docx

《台球厅收费管理系统设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《台球厅收费管理系统设计毕业设计论文.docx(64页珍藏版)》请在冰点文库上搜索。

台球厅收费管理系统设计毕业设计论文.docx

台球厅收费管理系统设计毕业设计论文

课程设计报告

 

课程名称:

计算机实践

(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_msgvoidO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2