JAVA課程設(shè)計網(wǎng)吧管理系統(tǒng)_第1頁
JAVA課程設(shè)計網(wǎng)吧管理系統(tǒng)_第2頁
免費預(yù)覽已結(jié)束,剩余18頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、封面作者: PanHongliangJava課程設(shè)計指導(dǎo)書(學(xué)生版初稿)第一章 網(wǎng)吧計費管理系統(tǒng) 目標1.1 背景介紹1.1.1業(yè)務(wù)背景僅供個人學(xué)習(xí)1.1.2技術(shù)背景1.2需求分析1.2.1功能需求分析1.2.2業(yè)務(wù)對象分析1.2.3驗收測試要求1.3系統(tǒng)設(shè)計1.3.1總體設(shè)計1.3.2詳細設(shè)計1.4系統(tǒng)實現(xiàn)1.5小結(jié)1.6展望第一章網(wǎng)吧計費管理系統(tǒng)學(xué)習(xí)目標:能使用 Java 集成開發(fā)環(huán)境,運用 Swing 設(shè)計圖形界面,運用 JDBC 訪 問數(shù)據(jù)庫 , 掌握事件處理編程 , 了解簡單兩層 C/S 工程地開發(fā)及簡單面向?qū)ο蟪?序地設(shè)計過程 , 發(fā)展基本地團隊協(xié)作開發(fā)能力 .學(xué)習(xí)寄語 :雖然本工

2、程并不是一個商業(yè)工程 ,其產(chǎn)品也不能用來賺錢 ,但從中你 可以學(xué)到實際開發(fā)中地許多經(jīng)驗和技巧 , 獲得一種“學(xué)有所用”、“學(xué)有所得” 地成就感,同時贏得老師和同學(xué)(同事)對你地格外尊重.在此工程地學(xué)習(xí)中 ,你不但是個學(xué)生 , 還是一個職業(yè)人 , 將與同事一起盡全力完成你所要做地工作 , 并再 次驗證“天道酬勤”地真理 .我們地信念是: “不拋棄 , 不放棄”. 你地改變和收 獲是老師真誠地期待 .1.1 背景介紹1.1.1業(yè)務(wù)背景“海之星”網(wǎng)吧 , 是一個小型網(wǎng)吧 , 以前是人工記帳 , 現(xiàn)需要開發(fā)一個簡單地網(wǎng) 吧計費管理系統(tǒng) .原人工管理地主要過程如下:客戶在門口服務(wù)臺 ,出示上機卡 , 若

3、是新客戶則先發(fā)新卡;管理員先查詢是否有空機器 , 若有則根據(jù)上機卡號查到 該卡對應(yīng)地記錄(賬簿) , 若有余額( 5 元) , 則分配一個空閑地機器號給客 戶, 客戶根據(jù)機器號對號入座 , 管理員記下客戶卡號、上機機器號、上機時間 . 客 戶下機要到門口地服務(wù)臺 , 請求下機 , 管理員根據(jù)當前時間、上機時間及費率計 算出本次上機費用 , 并記錄, 同時將費用從卡余額中扣除 , 若費用不夠則需充值 . 原手工系統(tǒng)主要有如下缺點:1 手工記帳 , 管理員工作量大 , 且易出錯; 2 超時 超費使用不能及時發(fā)現(xiàn) . 因此需要開發(fā)一個簡易計費管理軟件, 取代人工記帳方式 , 由軟件統(tǒng)一管理記錄上下機

4、、計費、上機卡、機器情況 , 提供簡單統(tǒng)計功能 , 超時超費提醒功能等 .1.1.2技術(shù)背景本系統(tǒng)要求使用 java 技術(shù)開發(fā) , 使用數(shù)據(jù)庫(如 ACCESS,SQLServe)r 保存 數(shù)據(jù), 集成開發(fā)環(huán) 境可使用 支持可視化 GUI 界面設(shè)計 地主流工具( 如 eclipseantbeanjbuilder).開發(fā)者應(yīng)有 java 程序設(shè)計語言、SWING 基本 GUI組件、文件使用、JDBC 存取數(shù)據(jù)庫、使用一種集成開發(fā)工具地基本知識和技能.系統(tǒng)采用兩層 C/S 體系結(jié)構(gòu),C 端負責(zé)通過 GUI 與管理員交互、處理業(yè)務(wù)邏輯及 存取數(shù)據(jù)庫 ,S 端主要是數(shù)據(jù)庫系統(tǒng) . 系統(tǒng)分析設(shè)計主要采用

5、面向?qū)ο蟮胤治鲈O(shè) 計方法.友情提示: 對工程有了一個最基本地認識后 , 是不是立即準備大干一場?是否要 問一問值不值得干?能不能干?商業(yè)工程一般可以從經(jīng)濟性、技術(shù)性、法律社 會等方面進行可行性分析 , 但本工程作為一個學(xué)習(xí)型工程顯然無利可圖、技術(shù)也 欠缺(事實上技術(shù)正是要學(xué)習(xí)地東西)、好在工程是合法地 . 那是否繼續(xù)?當 然!因為本工程地目標不是在合法地前提下獲取最大利潤 , 而是習(xí)得知識和技能 , 只要你愿意 , 就可以繼續(xù)進一步了解“網(wǎng)吧計費管理系統(tǒng)” ,Let s go!1.2 需求分析1.2.1功能需求分析 系統(tǒng)需求分析地主要任務(wù)是從用戶角度考察系統(tǒng)應(yīng)具有哪些功能及非功能性需求 , 對

6、于網(wǎng)吧計費管理系統(tǒng) , 用戶主要是指系統(tǒng)管理員 , 系統(tǒng)地主要功能是:登錄、上機、下機、卡管理(發(fā)卡、刪卡、充值、查詢)、機器管理(添加機 器、刪除機器、查詢狀態(tài)、修改狀態(tài)) , 統(tǒng)計功能(日、月費用統(tǒng)計) , 口令管 理(添加用戶、刪除用戶、修改口令) ,參數(shù)設(shè)置(時段費率) ,使用幫助 . 主要 使用流程是:管理員登錄 ,根據(jù)客戶請求上機 , 根據(jù)客戶請求下機 . 主要功能地用 例(use case )描述如下:一 上機1管理員輸入空閑機器號 , 上網(wǎng)人輸入口令、卡號 , 請求上機 .2系統(tǒng)驗證卡號 , 檢查卡中余額 , 卡狀態(tài)3 系統(tǒng)獲取當前系統(tǒng)時間作為上機開始時間4 系統(tǒng)修改該機器地使

7、用標志為“在用” , 卡標志為“在用” .5 系統(tǒng)記錄上機信息(卡號、機器號、上機時間)6 系統(tǒng)提示上機成功若 1 中無空閑機器又請求上機地 , 系統(tǒng)提示“沒用空閑機器” ,2 中卡驗證未通過 , 提示“無此卡號” , 余額不足 , 提示“余額不足” , 卡狀 態(tài)為“在用” , 則提示“不能一卡多用” .二 下機1 管理員選擇被使用地機器號 , 請求下機2 系統(tǒng)獲取系統(tǒng)當前時間作為下機時間;3 系統(tǒng)計算費用;4 系統(tǒng)顯示應(yīng)繳費用5 系統(tǒng)記錄下機時間和此次費用;6 系統(tǒng)從卡中扣費 , 修改卡狀態(tài)為“空閑”;7 系統(tǒng)修改該機器地狀態(tài)為“空閑”;8 系統(tǒng)顯示本次上機記錄信息 , 提示下機成功三 登錄

8、1 管理員輸入用戶名和密碼 , 請求進入系統(tǒng)2 系統(tǒng)驗證用戶名和密碼3 系統(tǒng)顯示主界面若一次驗證不通過 , 則提示再輸入一次 ,仍不通過則系統(tǒng)退出 .四 卡維護卡有三種狀態(tài):停用、空閑、在用 .發(fā)新卡:1 管理員輸入卡號(保證卡號唯一)2 管理員輸入卡初始金額3 上網(wǎng)人輸入用戶名、口令4 管理員請求添加新卡5 系統(tǒng)保存卡號、金額、用戶名和密碼 , 狀態(tài)為“空閑”6 系統(tǒng)提示添卡成功 , 顯示卡號及金額 , 以便核對 .7 管理員將系統(tǒng)生成地有卡號、用戶名地紙卡給上網(wǎng)人 .充值:1 管理員輸入卡號2 系統(tǒng)顯示該卡信息(卡號、用戶名、余額、狀態(tài))3 管理員核對后 , 輸入充值金額4 系統(tǒng)計算并保存

9、該卡總金額5 系統(tǒng)顯示充值后地卡信息(卡號、用戶名、余額、狀態(tài)) .查詢卡信息:1 管理員輸入卡號或請求察看所有卡信息2 系統(tǒng)查詢卡信息(卡號、用戶名、余額)并顯示 刪除卡:1 管理員輸入卡號2 系統(tǒng)查詢卡余額及狀態(tài)3 若余額已結(jié)清且狀態(tài)為“空閑” , 則將該卡信息刪除4 系統(tǒng)提示刪除成功 若有余額或“在用”則不能刪除五 機器維護 機器有三種狀態(tài):停用、空閑、在用 . 添加機器:1管理員輸入機器號 , 請求添加2系統(tǒng)驗證機器號是否重復(fù)3系統(tǒng)添加機器記錄信息(機器號、狀態(tài)為“空閑”)4系統(tǒng)提示添加成功 刪除機器:1管理員輸入機器號 , 請求刪除2系統(tǒng)刪除相應(yīng)機器信息3 系統(tǒng)提示刪除成功查詢機器狀

10、態(tài):1管理員輸入機器號或請求察看所有機器信息2系統(tǒng)查詢并顯示機器信息(機器號和狀態(tài))并顯示六 管理員口令管理添加用戶1管理員輸入用戶名、密碼和確認密碼 , 請求添加2系統(tǒng)驗證用戶是否是新用戶 , 兩次輸入地密碼是否相同3 系統(tǒng)添加用戶、密碼信息4 系統(tǒng)提示添加成功刪除用戶1 管理員輸入用戶名、密碼2 系統(tǒng)驗證用戶名、密碼是否正確3 系統(tǒng)刪除用戶名、密碼記錄4 系統(tǒng)提示刪除成功修改密碼1 管理員輸入用戶名、密碼 , 請求修改密碼2 系統(tǒng)驗證用戶名、密碼是否正確3 管理員輸入新密碼、及確認密碼4 系統(tǒng)保存新密碼5 系統(tǒng)提示修改成功七統(tǒng)計管理1 管理員輸入起始時間(年、月、日) , 結(jié)束時間 , 請

11、求按日、月、年匯總2系統(tǒng)查詢上網(wǎng)記錄 , 計算、統(tǒng)計出時間段地總費用、人次、總上機時間 等信息.3系統(tǒng)顯示上述信息八 參數(shù)管理時段費率設(shè)置:0 系統(tǒng)顯示當前設(shè)置1管理員設(shè)置時間段(時、分)及對應(yīng)地費率 , 請求保存2系統(tǒng)保存設(shè)置3系統(tǒng)提示保存成功 超時報警定時器間隔設(shè)置九 超時超費報警1設(shè)置定時器為周期觸發(fā)方式 , 觸發(fā)間隔由參數(shù)獲得 , 默認為 30 分鐘2定時器到時 , 系統(tǒng)查詢當前正在上機地記錄 , 計算其上機時間及費用 , 計算其卡中余額是否低于最低費用 .3系統(tǒng)提示已超費卡號、機器號 , 及超地費用 本系統(tǒng)除了功能性需求 , 還有易用性、可靠性、安全性等要求 , 可以在實現(xiàn) 上述功能

12、性需求地基礎(chǔ)上 , 進一步實現(xiàn)完善非功能性要求 .友情提示:本文使用“用例”法分析功能性需求,屬于面向?qū)ο蠓治觯?0A 法, 其實質(zhì)就是從用戶角度 , 通過觀察、與用戶交談等方式 , 記錄下用戶希望如何使 用系統(tǒng), 系統(tǒng)相應(yīng)需要實現(xiàn)哪些功能 .分析用戶需求一般由系統(tǒng)分析人員完成 ,其 核心能力是熟練掌握業(yè)務(wù)領(lǐng)域地知識和溝通地技巧 , 需求分析地最大難點在于需 求地可變性 , 最令開發(fā)人員氣餒地莫過于辛苦設(shè)計實現(xiàn)了一個功能 , 用戶突然說 不需要這個功能了 , 另一個常見地問題是隱蔽性地需求(行業(yè)慣例、日常規(guī)則) 常被用戶和分析人員忽略 . 不同地需求對于客戶而言重要性是不同地 , 一般需要 對

13、需求劃分優(yōu)先級 , 優(yōu)先級高地優(yōu)先設(shè)計實現(xiàn) . 你能否從上述一到九大用例描述 中找出哪些用例是高優(yōu)先級地?1.2.2業(yè)務(wù)對象分析根據(jù)上面地主要用例描述 , 可以分析出系統(tǒng)地主要業(yè)務(wù)對象 , 它是設(shè)計階段 核心類圖地基礎(chǔ)(不一定一一對應(yīng)) , 這些對象必須實際存在 , 其行為和屬性應(yīng) 與問題領(lǐng)域相關(guān):1 上網(wǎng)卡:主要維護上網(wǎng)卡地相關(guān)信息 . 卡號、密碼、余額、卡用戶名、卡 狀態(tài)(在用、空閑、停用)2 機器:主要維護上網(wǎng)吧計算機地相關(guān)信息 . 機器號、使用標志(在用、停 用、空閑)、備注3 費用記錄:記錄每次上機地信息 . 記錄編號、卡號、機器號、開始上機時 間, 下機時間、費用4 費率記錄:起始

14、時間、終止時間 , 費率5 管理員: 利用 14 完成各種業(yè)務(wù)操作 .1.2.3驗收測試要求用戶要求開發(fā)產(chǎn)品 , 產(chǎn)品開發(fā)完成后 , 需要交付用戶驗收 , 驗收要求常常是合同 中地重要組成部分 , 這是一個必經(jīng)地環(huán)節(jié) , 主要思路是按照用戶使用地過程測試 系統(tǒng), 越頻繁使用地功能越要多測試 . 本系統(tǒng)功能性需求驗收測試地基本要求如 下: 前置條件:1除口令表有初始用戶名和密碼外 , 各庫表為空 .2程序安裝配置正確 , 能正常啟動運行 .一 初始化數(shù)據(jù)1 啟動程序 , 進入“卡維護” , 選“發(fā)新卡” , 輸入一條數(shù)據(jù)記錄 , 退出, 進入“信 息瀏覽” , 查看記錄是否已被正確加入;退出“信

15、息瀏覽” , 再進入“發(fā)新卡” , 連續(xù)發(fā)3 張卡, 其中有張卡余額為 0;再進入“信息瀏覽” , 查看記錄是否已被 正確加入 .2 同理按 1 , 添加機器 .3 進入“費率維護” , 設(shè)置費率 .二 功能測試1 上下機測試 . 進入“上機” , 觀察上機界面 , 有無可用機器 , 按說明操作上機 , 連 續(xù)上機 3 次, 第一次正確輸入 ,第二次輸入不存在地卡號 ,第三次輸入錯誤口令; 進入“下機”界面 , 看有無正確地上機 , 連續(xù)下機兩次 . 觀察輸出信息界面 , 看內(nèi) 容是否正確(金額、卡號 ,時間, 費用) .已下機器是否已被同步從上機下拉表中 清除. 再進入“上機” ,比對可選空

16、閑機器是否正確 ,輸入已上機用戶地卡號 ,觀 察結(jié)果;輸入卡金額不足地卡號 , 觀察結(jié)果;不輸入任何值 , 直接按確認地結(jié)果 .2 統(tǒng)計測試 , 進入“統(tǒng)計”功能 ,按日,月,年查詢統(tǒng)計 , 與庫中實際數(shù)據(jù)比對 ,不 同日、月、年分別查 2 次3 進入“卡維護” , 進入“卡充值“ , 輸入余額不足卡號 , 給卡充值 , 進入“信息 瀏覽” , 查看卡充值是否正確 , 并以此卡號上機;再進入“卡維護”地“信息瀏 覽”, 查看記錄;然后選“刪除卡” ,連續(xù)刪 2 張卡,應(yīng)不能刪除在線卡 , 并能標 識出卡余額 , 以便清帳;進入“信息瀏覽” ,查看記錄是否已被正確刪除 . 正在上 機地不能被刪除

17、 .選“修改密碼” ,輸入正確地用戶名、口令 , 修改成新口令;進 入“信息瀏覽” ,查看口令是否已更改;進入“上機” ,以新口令上機 .4 同 3 測試“機器維護”中地刪除機器功能 , 應(yīng)不能刪除在線機器5 測試“費率維護” , 退出程序 , 重啟動 , 進入“費率維護” , 修改費率 , 上下機 , 觀察費用計算結(jié)果 .6 測試超時報警功能:發(fā)一張新卡 , 初始額剛達到最低標準 , 以此卡上機 , 為縮短 超時等待時間 ,可設(shè)置定時器間隔為 1 分鐘,等待 2 分鐘,看系統(tǒng)是否能正確報警7 測試幫助功能 . 按照幫助說明使用系統(tǒng) , 驗證幫助說明地正確性 . 友情提示: 測試是保證程序質(zhì)量

18、地基本手段 , 一般可分為單元測試、集成測試、 系統(tǒng)測試、驗收測試 ,其中驗收測試一般由用戶在真實地運行環(huán)境下測試系統(tǒng) , 是用戶確認系統(tǒng)符合要求地關(guān)鍵環(huán)節(jié) , 你開發(fā)地系統(tǒng)必須通過上述最基本地驗收 測試. 并不是整個系統(tǒng)完成后才可以進行上述測試 ,完成相應(yīng)模塊后就可以有針 對性地測試 , 驗收測試地內(nèi)容經(jīng)過分解后是單元測試、集成測試、系統(tǒng)測試地基 本依據(jù) , 測試工作并不是從編碼時才開始地 ,在需求分析階段就已展開(如根據(jù) 用例提出驗收測試要求) . 有地 IT 公司內(nèi)部地質(zhì)量部門在產(chǎn)品正式交付用戶前 , 也會做類似地測試 , 以保證用戶驗收時一次通過 .1.3 系統(tǒng)設(shè)計1.3.1總體設(shè)計一

19、 系統(tǒng)體系結(jié)構(gòu) 一般要確定系統(tǒng)地體系結(jié)構(gòu) , 主要模塊 , 系統(tǒng)運行環(huán)境(如操作系統(tǒng)、數(shù)據(jù) 庫) ,開發(fā)平臺及語言 .本系統(tǒng)主要運行在 windows 系列平臺上 ,數(shù)據(jù)庫使用ACCESS 使用 eclipse 開發(fā)系統(tǒng).采用兩層 C/S 體系結(jié)構(gòu).系統(tǒng)體系結(jié)構(gòu)圖如下圖 所示:圖 1 系統(tǒng)體系結(jié)構(gòu)客戶端分 3 層,圖形界面層(采用 java 地 SWING 設(shè)計)負責(zé)與用戶交互,業(yè)務(wù)邏 輯層則根據(jù)用戶地請求執(zhí)行各種功能(如上、下機等),數(shù)據(jù)訪問層主要根據(jù)業(yè)務(wù) 邏輯層地請求通過JDBC/SQL存取數(shù)據(jù)庫.數(shù)據(jù)庫使用ACCESS根據(jù)情況使用 其他數(shù)據(jù)庫 (如SQL Server),客戶端基本不做修

20、改,僅有地少量修改也只在數(shù) 據(jù)訪問層.客戶端與服務(wù)端在物理上可以運行在一臺機器上,也可以分別運行在不同機器上.二系統(tǒng)功能模塊及主要類系統(tǒng)地主要功能模塊如圖 2 所示:主模塊圖 2 系統(tǒng)模塊圖 可據(jù)此設(shè)計菜單,劃分模塊系統(tǒng)主要類圖如下:圖 3總類圖地畫法基本遵循視圖層、業(yè)務(wù)邏輯層、數(shù)據(jù)模型及數(shù)據(jù)庫訪問層地自上而下地順序,其中視圖層中地視圖因為較多未畫出,主要地業(yè)務(wù)邏輯控制類是 Bus in essMa nager,用戶地上下機請求,通過界面地事件機制,在事件處理程序 中會調(diào)用 BusinessManager 中地方法,然后再調(diào)用 xDAO 類方法,在 xDAQ 類中一 般先通過 DBConnec

21、tion 獲取連接,再通過 JDBC/SQL 訪問數(shù)據(jù)庫.CardComputerRecordManager 類是“值對象”,主要是存放相應(yīng)地屬性,方法也機器維護口令維護添加機器刪除機器添加用戶更改口令刪除用戶刪除卡是 setXgetX 類方法,“值對象”常作為參數(shù)在各種方法中傳遞.三經(jīng)驗共享1 客戶端基本采用三層結(jié)構(gòu)(視圖 View、控制 Controller 、模型 Mode ,層與 層間耦合性較小,提高了整體地可擴展性、可重用及抗變動能力 缺點是要求預(yù) 先設(shè)計好,對設(shè)計水平要求高,不過一旦形成模式,養(yǎng)成習(xí)慣,能“照葫蘆畫瓢”,也是提咼設(shè)計水平地捷徑.2 使用 xDAO 類將業(yè)務(wù)邏輯和數(shù)據(jù)

22、庫訪問隔離,只要 xDAO 對上提供地接口不變,以后數(shù)據(jù)庫存取代碼發(fā)生改變也不會影響上層代碼(如業(yè)務(wù)邏輯層).接口中地參數(shù)主要是“值對象”,這樣即使 CardComputerRecordManager 類中地屬性 發(fā)生改變,由于“值對象”地封裝,對接口地影響也不大,缺點是如果“值對象” 本身很大,而又只用到其中很少地屬性,則對性能和內(nèi)存浪費較大.與此對應(yīng),比 較一般地設(shè)計是在事件處理代碼中就實現(xiàn)業(yè)務(wù)邏輯(如驗證、計算、上下 機)、獲取數(shù)據(jù)庫連接并通過 JDBC 訪問數(shù)據(jù)庫,這樣做地好處是實現(xiàn)較容易、符合一 般過程性思維(常用于初始地或原型系統(tǒng)地開發(fā)中),缺點是代碼一旦需要修改則改動較多、且容易

23、出錯,代碼重用性差.3使用 DBConnection類統(tǒng)一完成連接地獲取和釋放,好處是連接部分代碼可重 復(fù)使用,如果連接參數(shù)(如連到不同地數(shù)據(jù)庫)改動,只需更改 DBConnection 類 中地相關(guān)參數(shù)屬性(當然更好地做法是將這些連接參數(shù)放在配置文件中,這樣可以只修改配置文件,無需修改程序),另外還可以為了提高性能擴展成“連接 池”,同時對使用它地 xDAO 類沒有影響.友情提示:如果你不能理解上述描述,也不必擔(dān)心,按照你地直覺去開發(fā)系統(tǒng),如 果你一帆風(fēng)順,那么你肯定是這方面地天才,如果遇到各種問題,上述地文字可供 參考,同學(xué)之間可以互相交流,老師也樂意為你效勞,勤思、善問、實干是快速提 高

24、水平地不二法門.1.3.2 詳細設(shè)計詳細設(shè)計主要是關(guān)注模塊一級地設(shè)計,一般有界面,核心算法及處理流程,數(shù)據(jù)庫 表(表、屬性及表間關(guān)系)地設(shè)計.由于模塊較多,下面選擇幾個典型模塊分析 設(shè)計,其中“經(jīng)驗共享”,揭示難點地同時,也介紹了相應(yīng)地解決方法及設(shè)計經(jīng)驗 1.321 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計主要是根據(jù)分析和概要設(shè)計中發(fā)現(xiàn)地對象和類,確定哪些對象需 要持久保存,然后將對象屬性及對象間關(guān)系轉(zhuǎn)化成關(guān)系表.經(jīng)過分析 Card、Computer、Record Manger 需要保存在數(shù)據(jù)庫中,將 Config 參數(shù)配置信息保存 在文件中.其中 Card、Computer、Record 地關(guān)系如下圖所示:圖持

25、久對象屬性及關(guān)系圖一條 Record 記錄必有對應(yīng)地一個 Card 及一臺 Computer,對于未用機器及卡,則 沒有對應(yīng)地記錄.將其轉(zhuǎn)換為關(guān)系表時,關(guān)鍵是在 Record 中設(shè)置 CARDID,COMPUTER 作為外鍵指向 Card 和 Computer.共設(shè)計出四張表:1.CARD 表名稱編碼數(shù)據(jù)類型卡號ID (主鍵)VARCHAR(20)用戶名USERNAME (非 空)VARCHAR(20)密碼PASSWORD (非 空)VARCHAR(15)卡狀態(tài)STATUS (非空)INTEGER余額BALANCE (非空)DOUBLE2.C0MPUTE 表名稱編碼數(shù)據(jù)類型機器號ID (主鍵)

26、VARCHAR (10)狀態(tài)STATUS (非空)INTEGER備注NOTESVARCHAR (200)3.REC0RD 表名稱編碼數(shù)據(jù)類型記錄號ID (主鍵)VARCHAR( 20)卡號CARDID (非空)VARCHAR( 20)機器號COMPUTERID (非 空)VARCHAR( 10)上機時間BEGINTIME (非空)DATE下機時間ENDTIMEDATE上機費用FEEDOUBLE4. Manager 表名稱編碼數(shù)據(jù)類型用戶名USERNAME(非空)VARCHAR (20)口令PASSWORD非空)VARCHAR (20)經(jīng)驗共享:數(shù)據(jù)庫設(shè)計一般相對獨立,采用地主要方法是將對象模型

27、轉(zhuǎn)化為數(shù)據(jù) 庫關(guān)系模型,也可以采用傳統(tǒng)地設(shè)計出 E-R 圖,再定關(guān)系表地方法.即使是簡單數(shù) 據(jù)庫地設(shè)計若從實用角度出發(fā)也需要考慮多方面地問題 首先基本地是確定有哪 幾張表,表間關(guān)系,然后是表中地字段,比較麻煩地是確定字段地約束(主鍵、非 空等),字段數(shù)據(jù)類型,范式地調(diào)整等,因為此時會考慮到存儲空間、性能、易編 程、數(shù)據(jù)質(zhì)量等方面地因素如定義“用戶名”字段要有多大,就需要在存儲空間節(jié)省和適應(yīng)性間權(quán)衡, 定義地較小,遇到長名字地情況,程序不能適應(yīng);定義地過大,對于大多數(shù)情況可 能又會浪費存儲空間,一般寧愿定義地大些,以空間換取適應(yīng)性再比如確定哪些字段為“非空”,從編程角度看必須保證“非空”字段有值

28、 這會增加驗證“非空”字段程序地代碼量,對用戶地約束也加強,有些值要求用 戶必須輸入,如口令就不能為空但若允許字段可以為“空”,如機器狀態(tài)字段,則機器地當前狀態(tài)就可能難以確定 , 影響數(shù)據(jù)質(zhì)量 . 一個基本地方向是“約束” 多,則編程地代碼量會變大,性能會下降,但數(shù)據(jù)地質(zhì)量會得到提高在 Record 表 中“下機時間”和“上機費用”沒有定義為“非空”, 是因為上機時這兩項不能確定 , 只能填寫部分上機記錄信息 .一般數(shù)據(jù)庫表結(jié)構(gòu)地變動對于程序地影響較大 , 在程序設(shè)計上可通過 xDAO 類盡量消減變動地影響 , 在實現(xiàn)階段應(yīng)避免對數(shù)據(jù)庫結(jié)構(gòu)大地改動 .1.3.2.2 上機模塊設(shè)計一 界面設(shè)計界

29、面設(shè)計主要是根據(jù)功能要求構(gòu)建界面 , 界面中地每個元素均應(yīng)有其作用 , 以支 持功能地實現(xiàn) , 界面設(shè)計還要考慮到界面風(fēng)格地一致、符合一般 window 應(yīng)用 GUI 地規(guī)范 .設(shè)計應(yīng)簡潔實用 , 避免在細節(jié)上(如字體、顏色)耗費時間 . 上機模 塊參考界面如圖 4所示:圖 4 參考界面二 上機流程1 初始化(1)顯示界面(2)獲取空閑機器(3) 將空閑機器號加入下拉列表2 上機處理過程:(1) 驗證機器號、卡號、密碼是否為空(2) 根據(jù)卡號、密碼獲取卡對象(3) 若卡對象為空則說明卡號或密碼錯 , 給出提示“卡號或密碼錯” , 要 求重輸(4) 判斷卡狀態(tài) , 若卡正在使用則給出提示“不能一

30、卡多用”(5) 計算卡中余額 , 若低于設(shè)定值 , 則提示“余額不足”( 6)修改卡狀態(tài)為在用 , 修改機器狀態(tài)為在用 , 獲取上機時間 , 將上機時 間、機器號、卡號保存到記錄對象,再通過 RecordDAO 在庫中添加 一條新上網(wǎng)記錄 .( 7)提示上網(wǎng)成功三 經(jīng)驗共享1 上機處理中地第 6 步要在一個完整地“事務(wù)”中完成 , 對卡、記錄、機器數(shù)據(jù) 地更改添加要保證要么全部更改成功 , 要么都不更改 , 以保證數(shù)據(jù)地一致性 .2 費用計算是按時段計算地 , 需要考慮跨時段費用如何計算 , 另外為了降低復(fù)雜 性, 可規(guī)定時段只能為三段 , 時間精確到分 , 費用精確到角 .3 記錄 ID 如

31、何保證唯一且自動增長 . 基本有兩種:一是編程控制 , 插入新記錄前 獲取當前最大記錄號 , 通過 select max(id) from record, 加 1 后 , 將 ID 及其它 信息寫入 , 若有多用戶訪問該表 , 則上述過程要放在一個“事務(wù)”中 . 二是利用關(guān) 系數(shù)據(jù)庫提供地“自增字段”特性 , 將 ID 設(shè)置成“自增字段” , 由數(shù)據(jù)庫負責(zé)每 添加一條記錄就將 ID 加 1.1.3.2.3下機模塊設(shè)計一 界面設(shè)計下機模塊主要根據(jù)用戶請求(報出卡號 /機器號) , 管理員根據(jù)卡號 /機器號 執(zhí)行下機操作 , 參考界面如圖 5 所示 , 大地文本空白文本框用于顯示下機記錄信息. 當

32、然還有其它地設(shè)計方式 , 如顯示當前上機地所有記錄信息 , 選中其中一條執(zhí) 行下機操作 .圖 5 下機模塊界面二 下機流程1管理員輸入機器號或卡號 , 請求下機2系統(tǒng)獲取機器號 , 據(jù)機器號獲取相應(yīng)記錄對象 , 要處理機器號錯誤地情況3系統(tǒng)根據(jù)記錄對象獲取該記錄對應(yīng)地卡對象4系統(tǒng)計算費用 , 并比較卡對象余額 , 若不夠則提示“余額不足” , 并顯示余額5 系統(tǒng)從卡中扣費 , 修改卡狀態(tài)為“空閑”; 系統(tǒng)修改該機器地狀態(tài)為“空 閑”;系統(tǒng)更新記錄信息(下機時間、費用) .6 系統(tǒng)顯示本次上網(wǎng)完整地記錄( Record )信息及卡余額 , 并提示下機成功 注:下機處理 4 中修改三表地操作應(yīng)作為

33、一個“事務(wù)”完成 .1.3.2.4發(fā)新卡模塊設(shè)計一 界面設(shè)計發(fā)卡需要輸入卡號、用戶名、密碼、金額 ,參考界面如下圖所示 .界面設(shè)計布 局應(yīng)簡潔一致 ,從用戶友好性出發(fā) ,提供了輸入提示 ,增加了“確認密碼” ,以提醒 用戶記住密碼 ,輸入地密碼用 * 號顯示以提高安全性 .雖然有了提示但在代碼中仍 需對輸入進行驗證 ,如金額不能為負值 ,以避免誤輸及惡意輸入 .當然從口令強度 考慮 ,要求密碼只輸入數(shù)字和字母又是不妥地 ,相反可提示用戶輸入特殊字符及輸 入地最小字符數(shù) .所以此界面雖簡單 ,但已涉及到界面地視覺風(fēng)格、用戶友好性、 安全性考慮 .圖 發(fā)卡界面二 發(fā)卡流程1系統(tǒng)從界面獲取所有信息

34、, 依次判斷是否為空2判斷金額是否大于 03判斷密碼和確認密碼是否一致 ,4判斷密碼和用戶名是否在最小及最大長度之間5判斷卡號是否有效(唯一)6生成 Card 對象,請求 CardDao 向 Card 表中添加一條新記錄.7 提示卡添加成功 , 并顯示卡號和金額三 經(jīng)驗共享1 輸入數(shù)據(jù)地驗證是難點 , 驗證輸入數(shù)據(jù)是保證程序可靠性地重要措施 , 例如: 若不限制用戶或口令長度在相應(yīng)數(shù)據(jù)庫表字段設(shè)定地范圍內(nèi) , 一旦將超長地用戶 名寫入數(shù)據(jù)庫則會產(chǎn)生數(shù)據(jù)被截斷或數(shù)據(jù)庫異常 , 而這完全可以在用戶輸入時予 以控制 . 驗證輸入數(shù)據(jù)地難點之一在于在驗證地代碼量和限制大多數(shù)常見錯誤間 取得平衡 , 過

35、多地驗證代碼無疑會增加編碼量和難度 , 但沒有驗證或很少驗證又 使程序可靠性太差而難以實用 . 但也有一些常規(guī)經(jīng)驗可循 , 如是否限定字符數(shù)據(jù) 地長度, 驗證是否為空、數(shù)字數(shù)據(jù)是否在范圍內(nèi)等 ,有些輸入控件提供了限定輸 入長度等功能 , 應(yīng)該充分利用以減少編碼量 .一般驗證可遵循如下策略:輸入前提示如何輸入 , 輸入后驗證 , 驗證不通過 則再提示(如通過對話框) . 輸入驗證地時機:可以在輸入一項后立即驗證該項 輸入是否合法 , 也可以全部輸完后再逐項驗證 , 某項若驗證不通過 ,除給出提示 , 從用戶友好性角度 , 還可以將焦點定位到出錯項(缺點是代碼復(fù)雜性增加) . 驗 證通過后地數(shù)據(jù)在

36、程序內(nèi)部傳遞時 , 一般無需重復(fù)驗證 .2 卡號地獲取 . 最基本地方式由管理員手工編號并保證卡號地唯一性 , 但卡一旦 多了,這會成為管理員地負擔(dān) ,因此, 可以由系統(tǒng)自動編號 ,如規(guī)定卡號從 1 依次 遞增編號 ,這樣卡號就無需輸入 . 可在每次增加新卡時 ,從卡表中獲取最大 ID, 加 1 后作為新增卡地卡號 . 也可以獲取當前時間轉(zhuǎn)化成字符串作為 ID, 一般時間不 會重復(fù), 可保證 ID 唯一, 優(yōu)點是生成 ID 無需訪問數(shù)據(jù)庫 ,還可以代表發(fā)卡時間 .1.2.3.5刪除卡模塊設(shè)計一 界面設(shè)計刪除卡參考界面如下圖所示:圖 刪除卡界面二 刪除卡流程1 管理員輸入卡號2 系統(tǒng)根據(jù)卡號,請

37、求 CardDAO 查詢有無該卡3 若返回地卡對象存在 , 則執(zhí)行下一步 , 否則提示“卡號錯誤” , 要求重輸 .4 系統(tǒng)從 Card 查詢卡狀態(tài)5 若為“在用” , 則提示“不能刪除在用卡”6 查詢余額 , 若有則對話框提示“請結(jié)清余額”7 若余額已結(jié)清且狀態(tài)為“空閑” , 則將該卡信息刪除8 系統(tǒng)提示刪除成功三 經(jīng)驗共享1如何刪除卡:一種是真刪 , 卡記錄信息從數(shù)據(jù)庫中永久刪除 , 采用 delete fromwhere 語句 , 此時還要注意 , 由于 Record 中有指向 Card 表地外鍵 , 刪除涉 及到“級連刪除”這一概念 , 即在 Record 中包含該卡號地記錄是否要一起

38、刪除 . 一般不允許“級連刪除” , 因為 Record 中記錄是統(tǒng)計費用地基本依據(jù) , 刪除后會 使統(tǒng)計數(shù)據(jù)失真 . 還有一種是假刪 , 即標注卡狀態(tài)信息為“停用” , 只需用 update 語句更改其狀態(tài)即可 , 這樣做好處是:一是可以完整保留已發(fā)卡信息 , 二 是易于重新恢復(fù)已刪卡 . 壞處是:若有大量卡(數(shù)以十萬計)長期不用 , 會占用 數(shù)據(jù)庫空間 , 影響訪問卡表地性能 .2 一般數(shù)據(jù)庫中數(shù)據(jù)刪除后難以恢復(fù) , 同時難以避免因為意外導(dǎo)致地數(shù)據(jù)損壞 , 因此重要數(shù)據(jù)地保存?zhèn)浞荼夭豢缮?, 本系統(tǒng)沒有要求做數(shù)據(jù)備份功能 , 因為數(shù)據(jù) 庫管理工具一般會提供相應(yīng)功能 , 只是要求用戶會使用數(shù)

39、據(jù)庫管理工具 , 所以從 方便用戶使用考慮 , 程序本身提供備份(手動或定期自動備份)功能也是必要地1.4 系統(tǒng)實現(xiàn)系統(tǒng)實現(xiàn)主要運用集成開發(fā)環(huán)境、Java、數(shù)據(jù)庫工具根據(jù)設(shè)計制做出實際 地界面 ,編寫代碼 , 生成數(shù)據(jù)庫表 , 進行測試 , 這也是初級程序員所要完成地主要 任務(wù), 在此列出部分典型代碼 , 僅供參考 .1.4.1數(shù)據(jù)庫訪問對數(shù)據(jù)庫地基本操作是:增、刪、改、查 , 數(shù)據(jù)庫連接地建立、關(guān)閉 , 其中地難點是訪問數(shù)據(jù)庫地異常處理和參數(shù)化SQL,現(xiàn)舉例如下:1 獲取連接地代碼:private static final String DRIVER_CLASS = sun.jdbc.odb

40、c.JdbcOdbcDriver 。 /定義驅(qū)動類privatestaticfinalStringDATASOURCE =jdbc:odbc:NetBarDataSource 。/ 定義 ODB(數(shù)據(jù)源public static Connection getConnction() Connection dbConnection = null 。 try Class.forName(DRIVER_CLASS) 。dbConnection = DriverManager.getConnection(DATASOURCE) 。 catch (Exception e) e.printStackTrac

41、e() 。return dbConnection 。該代碼針對 JdbcOdbcDriver 驅(qū)動,ODBC 源名為 NetBarDataSource,未支持 口令驗證 .2查詢代碼:下面是根據(jù)用戶名和口令驗證卡是否有效地代碼 , 需要注意地是查詢參數(shù)值 需要加單引號:/* judge card is valid or not.* param card Card* return boolean*/public boolean isValid( Card card) boolean isValid = false。Connection dbConnection = null 。PreparedS

42、tatement pStatement = null 。ResultSet res = null 。try dbConnection = ConnectionManager.getConnction()。/ 構(gòu)建查詢 SQL 語句String strSql = select * from card where id= + card.getId()+ and password = + card.getPassword() + 。if (dbConnection != null) System.out.println(dbConnection != null)。/ 查詢操作pStatement =

43、 dbConnection.prepareStatement(strSql)。res = pStatement.executeQuery()。/ 執(zhí)行 SQL 語句,并返回結(jié)果if (res.next() /若 res 有記錄說明卡存在isValid = true 。 catch (SQLException sqlE) sqlE.printStackTrace() finally ConnectionManager.closeResultSet(res)。/ 關(guān)閉結(jié)果集ConnectionManager.closeStatement(pStatement)ConnectionManager.c

44、loseConnection(dbConnection)return isValid3更新代碼 下面是更新機器狀態(tài)地代碼,其中 SQL 語句中,“id =(?) ” 設(shè)置在 pStatement.setString(1, computer.getId()/* record the computer have used.* param computer Computer*/public void updateOnUse( Computer computer) Connection dbConnection = null 。PreparedStatement pStatement = null t

45、ry String strSql =update computer set Status =1 where id =(?) pStatement= dbConnection.prepareStatement(strSql)pStatement.setString(1, computer.getId()。 /pStatement.executeUpdate() 。 catch (SQLException sqlE) sqlE.printStackTrace()。 finally ConnectionManager.closeStatement(pStatement) 。ConnectionMan

46、ager.closeConnection(dbConnection)1.4.2下機模塊在 BusinessManager 類中有一 doCheckOut ()方法是實現(xiàn)下機過程地關(guān) 鍵./* do check out business.* param rec Record, 已有機器號值* return ComsumeDisplayInfo 含有上機記錄、對應(yīng)卡記錄 */public static ComsumeDisplayInfo doCheckOut( Record rec) RecordDAO dao = newRecordDAO()。/ 獲取包含了下機記錄及對應(yīng)卡信息地 Comsum

47、eDisplayInfoComsumeDisplayInfo result dao.getStopCompouterRelationInfo(rec) 。Record record = result.getRecord() 。Card card = result.getCard() 。/ 計算本次上機地費用int fee = calFee(record.getBeginTime(), record.getEndTime() 。record.setFee(fee) 。/ 計算余額。 / 關(guān)閉連接是動態(tài)參數(shù) , 具體值II。 。o設(shè)置機器號 id 參數(shù)int balance = card.getB

48、alance() - fee 。 card.setId(record.getCardId() 。card.setBalance(balance) 。/ 將數(shù)據(jù)寫入數(shù)據(jù)庫RecordDAO dao2 = new RecordDAO() 。dao2.doCheckOutDB(record, card) 。/返回含有上機記錄、CARD 己錄地 ComsumeDisplaylnfo,供界面顯示下機結(jié)果result.setRecord(record) 。result.setCard(card) 。return result 。1.4.3上機模塊處理請求上機地部分代碼如下 , 主要有界面數(shù)據(jù)(機器號、密碼

49、、卡用戶號) 驗證代碼;卡有效性、余額可用性驗證 ./* deal business about click confirm button.* param e ActionEvent*/void confirmButton_actionPerformed(ActionEvent e) String cardld= 。String passwordtemp = 。String computerld =。/ 獲取機器號 , 并去掉空格cardld = cardldTextField.getText().trim()。/ 獲取密碼for(int i=0。ipasswordFiled.getPassw

50、ord().length。i+)passwordtemp += passwordFiled.getPassword()i。/ 獲取機器號computerld = computerldCombox.getSelectedltem().toString()。/ 判斷機器號是否為空 , 未填或只有空格if(computerld=null | computerld.trim().length()=0)JOptionPane.showMessageDialog(this, 請選擇機器號 !, 警告,JOptionPane.WARNlNG_MESSAGE ,null 。)return 。/ 判斷卡號是否為

51、空 , 未填或只有空格if(cardId=null | cardId.length()=0)JOptionPane.showMessageDialog(this, 請輸入卡號 !, 警告 ,JOptionPane.WARNING_MESSAGE ,null 。)return 。if(passwordtemp=null | passwordtemp.length()=0)JOptionPane.showMessageDialog(this, 請輸入密碼 !, 警告 ,JOptionPane.WARNING_MESSAGE ,null 。)return 。/ 生成卡對象 , 并設(shè)置卡用戶名、口令、

52、上機時間Card card = new Card()。card.setId(cardId)。card.setPassword(passwordtemp) 。Record record = new Record() 。record.setCardId(cardId) 。record.setComputerId(computerId) 。record.setBeginTime(dispalyNowTime) 。/ 生成機器對象 , 更新機器狀態(tài)時用Computer computer = new Computer() 。computer.setId(computerId) 。/ 驗證卡是否有效、余額

53、是否夠 , 符合要求后調(diào) doCheckIn 實際處理上機業(yè)務(wù)if(BusinessManager.cardIsValid(card)if(BusinessManager.cardHaveBalance(card)BusinessManager.doCheckIn(record,computer) 。elseJOptionPane.showMessageDialog(this, 卡余額不足 , 請充值 !, 警告IIJJOptionPane.WARNING_MESSAGE ,null 。)return 。elseJOptionPane.showMessageDialog(this, 卡號或者密

54、碼不對 !, 警告 ,JOptionPane.WARNING_MESSAGE ,null 。)System.out.println( 卡號或者密碼不對 ) 。return 。1.4.4幫助模塊在實現(xiàn)幫助功能時 ,編碼上沒有難點 , 基本上是一個簡單地帶滾動條地只讀 文本瀏覽器,難在幫助文件地內(nèi)容如何寫?幫助文件是指導(dǎo)用戶如何操作系統(tǒng)地 內(nèi)容應(yīng)正確,語言應(yīng)對客戶簡明易懂,最好輔以圖形說明做到這兩點并不容易 內(nèi)容正確要求寫幫助地人對系統(tǒng)地功能非常熟悉,簡明易懂則充分體現(xiàn)出作者地 文字功底建議參考類似“記事本” (winodws 主菜單-所有程序-附件- 記事本)這樣地程序,看它們地幫助是如何寫地友情提示:客戶會根據(jù)幫助說明來使用系統(tǒng),系統(tǒng)功能正確,但因為幫助說明錯 誤導(dǎo)致地問題甚至官司比比皆是,所以在通過基本地驗收測試后,老師會按照你 寫地幫助來使用系統(tǒng),進而測試幫助文檔地正確性1.5 小結(jié)經(jīng)過日夜奮戰(zhàn),終于做出了系統(tǒng),通過了驗收和答辯,雖然有點難熬,但終于熬過 來了,是不是可以松一口氣或是慶祝一下?請不要忘記老師對你地

溫馨提示

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

評論

0/150

提交評論