臺球廳收費管理系統(tǒng)計算機課程設計_第1頁
臺球廳收費管理系統(tǒng)計算機課程設計_第2頁
臺球廳收費管理系統(tǒng)計算機課程設計_第3頁
臺球廳收費管理系統(tǒng)計算機課程設計_第4頁
臺球廳收費管理系統(tǒng)計算機課程設計_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.課程設計報告課程名稱: 計算機實踐(1) 項目名稱: 臺球廳收費管理系統(tǒng) 學 院: 專 業(yè): 姓名/學號: 班 級: 實驗時間: 成 績: 指導教師: (一)課題介紹1.1題目: 臺球廳管理系統(tǒng) 1.2設計目標: 實現(xiàn)臺球廳的數(shù)字化管理,規(guī)范化管理借入借出,準確定位,實現(xiàn)增刪改查。1.3實驗環(huán)境: 前臺使用C+編寫,實現(xiàn)工具visual studio 2013 update4。 1.4需求分析:臺球廳管理系統(tǒng):主要涉及臺球廳的卡號管理,又可以分為兩種情況,會員卡號和普通卡號。用戶管理方面分成操作員和管理員兩種。系統(tǒng)功能模塊包括:(1)系統(tǒng)登錄模塊:根據(jù)不同權限將用戶角色分為操作人員和管理員,

2、操作人員可以進行系統(tǒng)操作;管理員可以對用戶進行管理。(2)會員卡號模塊:記錄卡號和用戶姓名、身份證號、賬戶余額、是否續(xù)費等信息。(3)系統(tǒng)管理模塊:管理員可以進行系統(tǒng)的管理,包括用戶信息的增、刪、改、查。(4)普通卡號模塊:記錄普通卡號、身份證號、進入和離開時間以及費用等信息。項目的研究思路是:首先劃分為會員卡和普通卡兩種。會員卡的特點是輸入用戶名、密碼便可登陸,可充值會員使用。普通卡的特點是記錄上網時間,按時間先收費。1.5概念結構設計:一張用戶管理表,表名用戶表一張會員打臺球,簡稱會員卡一張普通,簡稱普通卡所有用戶共同使用一個主界面,在用戶登錄的時候確定用戶及其權限,當?shù)卿浀挠脩魶]有該項權

3、限時,在界面中這項權限所對應的功能模塊不能被點擊,這樣的設計方便了系統(tǒng)管理和維護。用戶在使用本系統(tǒng)時的工作過程為:進入系統(tǒng)后,會看到登錄窗體,對用戶的身份進行驗證,身份正確則進入本系統(tǒng),登錄到主界面,選擇需要的功能進行操作,結束后退出本系統(tǒng)。如圖1.1所示。圖1.1 系統(tǒng)流程分析圖 臺球廳收費管理系統(tǒng)收費管理系統(tǒng)管理系統(tǒng)登陸會員卡普通卡管理員 操作員 管理員 操作員 圖1.2 系統(tǒng)功能模塊1.6邏輯結構設計:用戶表將涉及以下屬性: 姓名、密碼、新密碼、確認密碼。會員卡將涉及以下屬性: 卡號、用戶姓名、身份證號、賬戶余額、是否續(xù)費。普通卡將涉及以下屬性: 普通卡號、身份證號、普通卡狀態(tài)、進入和離

4、開時間以及費用。 (二)數(shù)據(jù)庫的建立、設計及實施2.1數(shù)據(jù)庫的建立點擊“開始”按鈕,在所有程序中找到 Microsoft SQL Server,再從彈出的菜單中找到“企業(yè)管理器”單擊進入。點擊“企業(yè)管理器”欄如圖 1.2 所示的 SQL Server 數(shù)據(jù)庫界面,接下來單擊“數(shù)據(jù)庫”欄,在數(shù)據(jù)庫中建個庫,起名為“taiqiuting”。2.2數(shù)據(jù)實體及其關系本數(shù)據(jù)庫中有3個實體,分別如下介紹:實體1: 用戶:(姓名,密碼,用戶類別編號,類別名稱)本系統(tǒng)的數(shù)據(jù)庫并沒有將每類用戶分別作為一個實體進行設計,而是將用戶作為整個數(shù)據(jù)庫的一個實體,通過用戶的屬性中的類別編號來判斷用戶的類別。用戶實體使用用

5、戶表表示,其中包含四個屬性:UID表示姓名、PWD表示密碼、Type表示用戶類別編號、Exp表示用戶類別名稱。 圖2.3是實體1用戶的E-R圖。用戶用戶類別名稱姓名用戶類別編號密碼圖2.3用戶E-R圖實體2: 會員客戶:(會員卡號,姓名,身份證號,賬戶余額,繳費狀態(tài)) 本系統(tǒng)主要存儲的是持有會員卡客戶的信息,因此本系統(tǒng)單設了一個基本信息實體?;拘畔嶓w使用 ChangQiTable 表示,它包含 5 個屬性:ChangQiCardID 表示會員卡號、ChangQiName 表示持有會員卡客戶的姓名、ChangQiAddr 表示持有會員卡客戶的賬戶余額、ChangQiCarNum 表示持有會員

6、卡客戶的身份證號、ChangQiFee 表示持有會員卡客戶的繳費狀態(tài)。 圖2.4是實體2會員客戶的E-R圖。賬戶余額身份證號實體3: 普通客戶:(普通卡號,身份證號,進入時間,離開時間,計時費用,普通卡狀態(tài))本系統(tǒng)主要存儲的是持有會員卡客戶的信息,基本信息還是本系統(tǒng)的實體?;拘畔嶓w使用 LinShiTable 表示,它包含 6 個屬性:LinShiCardID 表示普通卡號、LinShiCarNum 表示持有普通卡客戶的身份證號、InTime 表示持有普通卡車輛的進入時間、OutTime 表示持有普通卡車輛的離開時間、Fee 表示持有普通卡客戶的計時交費。Status 表示普通卡的發(fā)放狀態(tài)

7、。 圖2.5是實體3普通借閱的E-R圖。身份證號2.3數(shù)據(jù)庫表的設計本數(shù)據(jù)庫共設計了3張表,表2.1是本數(shù)據(jù)庫的用戶表。這張表介紹了本數(shù)據(jù)庫的用戶,包括管理員和操作員。用戶是通過類別編號來區(qū)分用戶類別的,用戶表共有4個字段,分別表示用戶姓名、密碼、用戶類別編號及用戶類別名稱。 表2.2數(shù)據(jù)庫用戶表字段名字段描述是否為主鍵數(shù)據(jù)類型長度UID用戶姓名是char10PWD密碼否char20Type類別編號是char4Exp類別名稱否char20表2.2是會員客戶基本信息表。包括會員卡號、持有會員卡客戶的姓名、家庭住址、身份證號、繳費狀態(tài)。表2.3數(shù)據(jù)庫的會員客戶表字段名字段描述是否為主鍵數(shù)據(jù)類型長度

8、ChangQiCardID會員卡號是char10ChangQiName會員客戶姓名否char10ChangQiAddr賬戶余額否char10ChangQiCarNum身份證號否char10ChangQiFee繳費狀態(tài)否char10表2.3是是普通客戶基本信息表。包括普通卡號、普通卡姓名、進入時間、離開時間、計時交費、普通卡發(fā)放狀態(tài)。表2.3數(shù)據(jù)庫的普通客戶表字段名字段描述是否為主鍵數(shù)據(jù)類型長度LinShiCardID普通卡號是char10LinShiCarNum普通客戶姓名否char10InTime進入時間否char20OutTime離開時間否char20Fee計時繳費否char10Statu

9、s普通卡狀態(tài)否char1Status3狀態(tài)否char10建立完成如下圖所示:數(shù)據(jù)庫的鏈接: 打開管理工具打開ODBC數(shù)據(jù)源(32位)添加Stopping數(shù)據(jù)庫 (三)系統(tǒng)詳細設計3.1 用戶登錄模塊設計用戶登錄模塊是本系統(tǒng)的基本功能模塊,要與后臺數(shù)據(jù)庫緊密相連。設計步驟為:添加新對話框設置ID號為IDD_DIALOG_Login,并以CDialog為基類創(chuàng)建CLogin類,添加控件、成員變量,完成之后得到如圖3.1所示的登錄窗口對話框圖。圖3.1登錄窗口對話框圖如果系統(tǒng)登錄不成功,就會彈出一個小的對話框,里面會告訴你“密碼錯誤,請重新輸入”的字樣,如圖6.13所示登錄失敗窗口圖如果系統(tǒng)登錄成功

10、,就會彈出一個小的對話框,里面會告訴用戶,該用戶是什么登錄身份,如圖6.14所示登錄成功窗口圖,本圖以管理員登錄成功為例。從圖3.1中可以看到,本模塊中添加了四個Edit Box類型的控件,兩個用來存放變量,另外兩個用來存放變量內容。本模塊添加了兩個Button類型的控件,用來設置確定和取消按鈕。表3.1是本模塊添加的控件列表。表3.1用戶登錄模塊控件列表ID控件類型控件名稱變量類型變量名稱函數(shù)名稱IDC_STATICEdit Box用戶名:IDC_STATICEdit Box密碼:IDC_EDIT_UNameEdit BoxCEditm_usenameIDC_EDIT_PwdEdit Box

11、CEditm_pwdID_OKButton登錄OnOK()ID_CANCELButton取消OnCancel()從表3.1中可以看到本模塊有兩個變量和兩個成員函數(shù),兩個變量分別是m_usename 和m_pwd;兩個成員函數(shù)OnOK()和OnCancel()。先介紹一下創(chuàng)建變量,下面以m_usename為例,找到登錄模塊,點擊鼠標右鍵出現(xiàn)一個對話框,如圖3.2所示圖3.1建立變量(1)在彈出的菜單欄中,點擊“類向導”,點擊“成員變量”欄,然后點擊“添加變量”按鈕,接下來彈出的窗口為給變量起名字,點擊“OK”按鈕完成變量的生成,出現(xiàn)如下圖3.3所示的窗口圖3.3建立變量(2)菜單項的設計:接下來

12、講解這兩個成員函數(shù),它們是用來設計確定和取消按鈕。OnOK()函數(shù)設計的是確定按鈕,OnCancel()函數(shù)設計的是取消按鈕,如圖5.5是用戶登錄類CLogin的成員函數(shù)和成員變量視圖。圖3.4本模塊類CLogin成員函數(shù)和成員變量視圖從圖3.4中可以看到本模塊在設計控件Button時的兩個成員函數(shù)OnOK()和OnCancel()。該模塊的設計過程中有兩個值得注意的點:其一是該模塊中主要有兩個變量用戶名和密碼。要確保登錄成功,用戶名和密碼一定要正確并且對應,因此判斷用戶名密碼正確與否是該模塊設計的關鍵。首先在頭文件.h中添加需要用到的數(shù)據(jù)源變量然后利用GetWindowText() 函數(shù)獲取

13、對話框中輸入的用戶名和密碼信息,傳遞給username和password兩個變量。利用SQL查詢語句strSQL.Format(select * from 用戶表where UID=%s and PWD=%s,username,password);中數(shù)據(jù)庫的Admin表中進行查詢,如果找到相應的記錄,則登錄成功,取出這個用戶相對應的權限Type賦值給m_userLevel變量。之后就利用該變量的值為0還是1,來區(qū)分是操作員還是管理員。如果SQL查詢的結果為0,即m_recordSet.GetRecordCount()=0,則說明該用戶名或密碼在用戶表中找不到,則登錄失敗。登錄代碼的設計如下:v

14、oid 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(_T(taiqiuting)m_recordSet.m_pDatabase=&m_database;CString strSQL;strSQL.Format(select * from A

15、dmin 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.SetFocus();elsem_recordSet.GetFieldValue(Type,m_userLevel);CDialog:OnOK();m_recordSet.Close()

16、;m_database.Close();elseMessageBox(不能打開數(shù)據(jù)庫);void CLogin:OnCancel() / TODO: Add your control notification handler code hereif(MessageBox(真的要退出系統(tǒng)嗎?,退出詢問,MB_OKCANCEL|MB_ICONQUESTION)=IDOK)CDialog:OnCancel();其次,利用登錄模塊中獲取的m_userLevel的值,判斷該登錄用戶的類別和權限。判斷用戶權限的代碼在StoppingManageSys.cpp中,在初始化函數(shù)中修改代碼如下:CLogin l

17、ogin; if(login.DoModal()=IDOK)CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CStoppingManageSysDoc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CStoppingManageSysView);AddDocTemplate(pDocTemplate);/ Parse command line for standa

18、rd shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;CMenu* pMenu=m_pMainWnd-GetActiveWindow()-GetMenu();if(login.m_userLevel=0)/操作員AfxMessageBox(操作員登錄);pMenu-EnableMenuItem

19、(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-GetSubMenu(0)-EnableMenuItem (0,MF_ENABLED|MF_BYPOSITION);m_pMainWnd-UpdateWindow();/ The

20、 one and only window has been initialized, so show and update it.m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-SetWindowText(臺球廳管理系統(tǒng));m_pMainWnd-UpdateWindow();return TRUE;else return FALSE;3.2系統(tǒng)主界面模塊設計本系統(tǒng)的主界面設計 步驟為:編輯“Menu”下的“IDR_MAINFRAME”,調整菜單資源,得到如圖3.5所示的主界面窗口對話框圖。圖3.5主界面窗口對話框圖。接下來,該圖為系統(tǒng)用戶的數(shù)據(jù)庫信息圖,如圖

21、6.18所示。從圖3.20中可以看到,所有的功能都是在主界面中實現(xiàn)的,因此主界面設計了多個控件及成員函數(shù)。表3.2是本模塊添加的控件列表表3.2 Menu資源列表ID標題函數(shù)名稱ID_ChangePwd修改密碼OnPassword()ID_ManageUserInfo用戶信息管理OnCreate ()ID_Exit退出系統(tǒng)I ID_ChangQi會員用戶管理OnChangQi()ID_LinShi普通卡管理OnLinShi()ID_HELP幫助3.3 用戶管理模塊設計用戶管理模塊的設計步驟是:添加新對話框設置ID號為IDD_DIALOG_UserInfoManage,并以CDialog為基類創(chuàng)

22、建UserInfoManage類,以CRecordset為基類創(chuàng)建DataRowset類。添加控件、成員變量及函數(shù)。完成之后得到如圖3.6所示的用戶管理窗口對話框圖。圖3.6用戶管理窗口對話框圖從圖3.6中可以看到,本模塊中添加了三個Static text類型的控件,用來存放成員變量的內容。表3.3是Static text類型的控件列表。表3.3Static text控件表ID控件類型控件名稱IDC_STATICStatic text用戶名IDC_STATICStatic text密碼IDC_STATICStatic text用戶身份本模塊中還添加了5個Button控件和幾個其它類型的控件,表

23、3.4是這些控件的控件列表。表3.4其它類型控件表ID控件類型變量類型變量名稱函數(shù)名稱IDC_EDIT_userIDEdit BoxCEditm_userIDOnChangeEDITuserID()IDC_EDIT_userPwdEdit BoxCEditm_userPwdIDC_COMBO_userTypeComboBoxCComboBoxm_userTypeIDC_LIST_UserInfoListCtrlCListCtrlm_listOnClickLISTListener()IDC_BTN_UserAddButtonCButtonm_bAddOnBTNUserAdd()I IDC_BTN

24、_UserDeleteButtonCButtonm_bDelOnBTNUserDelete()IDC_BTN_UserUpdateButtonCButtonm_bUpdataOnBTNUserUpdata()ID_USER_OKButtonCButtonm_bOKOnBtnOk()IDCANCLEButtonCButtonm_bCancalOnBtnCancel()其中,List控件的“樣式”屬性中,將“查看”修改為“報告”模式,如下圖:本模塊中也添加了一些成員函數(shù)和成員變量,如圖3.7是用戶管理模塊的CUserInfoManageDlg類的類視圖,圖這個類主要是實現(xiàn)用戶管理模塊中的各個功能。

25、如圖3.7表示的是CUserInfoManageSet類的類視圖。這個類的主要功能是設置用戶信息。圖3.7 UserInfoManageDlg類視圖圖3.8 DataRowset類視圖接下來,介紹下以CRecordset為基類創(chuàng)建CUserInfoManageSet類的過程,首先找到用戶管理模塊,點擊鼠標右鍵出現(xiàn)一個對話框,點擊“建立類向導”如圖3.9所示圖3.9建立 DataRowset類過程(1)圖在彈出的窗口中找到“Add Class”按鈕,再從彈出的菜單欄中選擇“New”,如圖3.91所示圖3.91建立 CUserInfoManageSet類過程(2)圖完成上述操作后,注意在UserI

26、nfoManageDlg.h中添加相應的函數(shù),以及變量,如下所示#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.h : hea

27、der 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_DATA(CUserI

28、nfoManageDlg)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(CUserInfoManageDlg)prot

29、ected: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 OnBTNUs

30、erUpdate();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_FF8338248450

31、_INCLUDED_)在用戶管理對話框運行時,先對數(shù)據(jù)庫進行查詢,顯示Admin表中所有的用戶信息,包括用戶名、密碼、權限類別和權限描述。利用初始化函數(shù)BOOL CUserInfoManageDlg:OnInitDialog() 對ListControl控件進行初始的描繪;并通過查詢數(shù)據(jù)庫獲得用戶信息,顯示在ListControl控件中。具體實現(xiàn)代碼如下:BOOL CUserInfoManageDlg:OnInitDialog()CDialog:OnInitDialog();m_list.InsertColumn(0,用戶名);m_list.InsertColumn(1,密碼);m_list.

32、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_userType.AddStr

33、ing(管理員);m_userType.AddString(操作員); /動態(tài)給Combobox控件添加信息ResetButton();return TRUE;void CUserInfoManageDlg:RefreshList()UpdateData();m_list.DeleteAllItems(); /ListControl控件中刪除舊的數(shù)據(jù)m_recordSet.Open();m_recordSet.m_strFilter=Type=0 or Type=1;m_recordSet.Requery(); /重新查詢for(int i=0;iGetDlgItem(IDC_EDIT_UNa

34、me);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(password);pNew-

35、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();pNew-SetFocus();elseif(!m_database.IsOpen()if(m_database.Open(_T(taiqiuting)m_recordSet.m_pDatabase=&m_database;CString strSQ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論