Java課程設(shè)計(jì)網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)(聊天室系統(tǒng))設(shè)計(jì)_第1頁(yè)
Java課程設(shè)計(jì)網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)(聊天室系統(tǒng))設(shè)計(jì)_第2頁(yè)
Java課程設(shè)計(jì)網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)(聊天室系統(tǒng))設(shè)計(jì)_第3頁(yè)
Java課程設(shè)計(jì)網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)(聊天室系統(tǒng))設(shè)計(jì)_第4頁(yè)
Java課程設(shè)計(jì)網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)(聊天室系統(tǒng))設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、java課程設(shè)計(jì)指導(dǎo)書目錄第一章 網(wǎng)吧計(jì)費(fèi)管理系統(tǒng) 目標(biāo) 1.1 背景介紹 1.1.1 業(yè)務(wù)背景 1.1.2 技術(shù)背景 1.2 需求分析 1.2.1功能需求分析 1.2.2 業(yè)務(wù)對(duì)象分析 1.2.3 驗(yàn)收測(cè)試要求 1.3 系統(tǒng)設(shè)計(jì) 1.3.1 總體設(shè)計(jì) 1.3.2 詳細(xì)設(shè)計(jì) 1.4 系統(tǒng)實(shí)現(xiàn) 1.5 小結(jié) 1.6 展望第二章 聊天室系統(tǒng)目標(biāo) 2.1 背景介紹 2.1.1 業(yè)務(wù)背景 2.1.2 技術(shù)背景 2.2 需求分析 2.2.1功能需求分析 2.2.2 業(yè)務(wù)對(duì)象分析 2.2.3 驗(yàn)收測(cè)試要求 2.3 系統(tǒng)設(shè)計(jì) 2.3.1 總體設(shè)計(jì) 2.3.2 詳細(xì)設(shè)計(jì) 2.4 系統(tǒng)實(shí)現(xiàn) 2.5 小結(jié) 2.6

2、 展望第一章 網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)學(xué)習(xí)目標(biāo):能使用java集成開發(fā)環(huán)境,運(yùn)用swing設(shè)計(jì)圖形界面,運(yùn)用jdbc訪問數(shù)據(jù)庫(kù),掌握事件處理編程,了解簡(jiǎn)單兩層c/s項(xiàng)目的開發(fā)及簡(jiǎn)單面向?qū)ο蟪绦虻脑O(shè)計(jì)過程,發(fā)展基本的團(tuán)隊(duì)協(xié)作開發(fā)能力。學(xué)習(xí)寄語(yǔ):雖然本項(xiàng)目并不是一個(gè)商業(yè)項(xiàng)目,其產(chǎn)品也不能用來(lái)賺錢,但從中你可以學(xué)到實(shí)際開發(fā)中的許多經(jīng)驗(yàn)和技巧,獲得一種“學(xué)有所用”、“學(xué)有所得”的成就感,同時(shí)贏得老師和同學(xué)(同事)對(duì)你的格外尊重。在此項(xiàng)目的學(xué)習(xí)中,你不但是個(gè)學(xué)生,還是一個(gè)職業(yè)人,將與同事一起盡全力完成你所要做的工作,并再次驗(yàn)證“天道酬勤”的真理。我們的信念是:“不拋棄,不放棄”。你的改變和收獲是老師真誠(chéng)的期待。

3、1.1 背景介紹1.1.1 業(yè)務(wù)背景“海之星”網(wǎng)吧,是一個(gè)小型網(wǎng)吧,以前是人工記帳,現(xiàn)需要開發(fā)一個(gè)簡(jiǎn)單的網(wǎng)吧計(jì)費(fèi)管理系統(tǒng)。原人工管理的主要過程如下:客戶在門口服務(wù)臺(tái),出示上機(jī)卡,若是新客戶則先發(fā)新卡;管理員先查詢是否有空機(jī)器,若有則根據(jù)上機(jī)卡號(hào)查到該卡對(duì)應(yīng)的記錄(賬簿),若有余額(5元),則分配一個(gè)空閑的機(jī)器號(hào)給客戶,客戶根據(jù)機(jī)器號(hào)對(duì)號(hào)入座,管理員記下客戶卡號(hào)、上機(jī)機(jī)器號(hào)、上機(jī)時(shí)間。客戶下機(jī)要到門口的服務(wù)臺(tái),請(qǐng)求下機(jī),管理員根據(jù)當(dāng)前時(shí)間、上機(jī)時(shí)間及費(fèi)率計(jì)算出本次上機(jī)費(fèi)用,并記錄,同時(shí)將費(fèi)用從卡余額中扣除,若費(fèi)用不夠則需充值。原手工系統(tǒng)主要有如下缺點(diǎn):1 手工記帳,管理員工作量大,且易出錯(cuò);2

4、超時(shí)超費(fèi)使用不能及時(shí)發(fā)現(xiàn)。因此需要開發(fā)一個(gè)簡(jiǎn)易計(jì)費(fèi)管理軟件,取代人工記帳方式,由軟件統(tǒng)一管理記錄上下機(jī)、計(jì)費(fèi)、上機(jī)卡、機(jī)器情況,提供簡(jiǎn)單統(tǒng)計(jì)功能,超時(shí)超費(fèi)提醒功能等。1.1.2 技術(shù)背景 本系統(tǒng)要求使用java技術(shù)開發(fā),使用數(shù)據(jù)庫(kù)(如access,sqlserver)保存數(shù)據(jù),集成開發(fā)環(huán)境可使用支持可視化gui界面設(shè)計(jì)的主流工具(如eclipseant beanjbuilder)。開發(fā)者應(yīng)有java程序設(shè)計(jì)語(yǔ)言、swing基本gui組件、文件使用、jdbc存取數(shù)據(jù)庫(kù)、使用一種集成開發(fā)工具的基本知識(shí)和技能。系統(tǒng)采用兩層c/s體系結(jié)構(gòu),c端負(fù)責(zé)通過gui與管理員交互、處理業(yè)務(wù)邏輯及存取數(shù)據(jù)庫(kù),s端

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

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

7、機(jī)器號(hào)、上機(jī)時(shí)間)6 系統(tǒng)提示上機(jī)成功若1中無(wú)空閑機(jī)器又請(qǐng)求上機(jī)的,系統(tǒng)提示“沒用空閑機(jī)器”,2中卡驗(yàn)證未通過,提示“無(wú)此卡號(hào)”,余額不足,提示“余額不足”,卡狀態(tài)為“在用”,則提示“不能一卡多用”。二 下機(jī)1 管理員選擇被使用的機(jī)器號(hào),請(qǐng)求下機(jī)2 系統(tǒng)獲取系統(tǒng)當(dāng)前時(shí)間作為下機(jī)時(shí)間;3 系統(tǒng)計(jì)算費(fèi)用;4 系統(tǒng)顯示應(yīng)繳費(fèi)用5 系統(tǒng)記錄下機(jī)時(shí)間和此次費(fèi)用;6 系統(tǒng)從卡中扣費(fèi),修改卡狀態(tài)為“空閑”;7 系統(tǒng)修改該機(jī)器的狀態(tài)為“空閑”;8系統(tǒng)顯示本次上機(jī)記錄信息,提示下機(jī)成功三 登錄1 管理員輸入用戶名和密碼,請(qǐng)求進(jìn)入系統(tǒng)2 系統(tǒng)驗(yàn)證用戶名和密碼3 系統(tǒng)顯示主界面若一次驗(yàn)證不通過,則提示再輸入一次,仍

8、不通過則系統(tǒng)退出。四 卡維護(hù)卡有三種狀態(tài):停用、空閑、在用。 發(fā)新卡:1 管理員輸入卡號(hào)(保證卡號(hào)唯一)2 管理員輸入卡初始金額3 上網(wǎng)人輸入用戶名、口令4 管理員請(qǐng)求添加新卡5 系統(tǒng)保存卡號(hào)、金額、用戶名和密碼,狀態(tài)為“空閑”6 系統(tǒng)提示添卡成功,顯示卡號(hào)及金額,以便核對(duì)。7管理員將系統(tǒng)生成的有卡號(hào)、用戶名的紙卡給上網(wǎng)人。 充值:1 管理員輸入卡號(hào)2 系統(tǒng)顯示該卡信息(卡號(hào)、用戶名、余額、狀態(tài))3 管理員核對(duì)后,輸入充值金額4 系統(tǒng)計(jì)算并保存該卡總金額5 系統(tǒng)顯示充值后的卡信息(卡號(hào)、用戶名、余額、狀態(tài))。 查詢卡信息:1 管理員輸入卡號(hào)或請(qǐng)求察看所有卡信息2 系統(tǒng)查詢卡信息(卡號(hào)、用戶名、

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

10、碼和確認(rèn)密碼,請(qǐng)求添加 2 系統(tǒng)驗(yàn)證用戶是否是新用戶,兩次輸入的密碼是否相同 3 系統(tǒng)添加用戶、密碼信息 4 系統(tǒng)提示添加成功刪除用戶 1 管理員輸入用戶名、密碼 2 系統(tǒng)驗(yàn)證用戶名、密碼是否正確 3 系統(tǒng)刪除用戶名、密碼記錄 4 系統(tǒng)提示刪除成功修改密碼 1管理員輸入用戶名、密碼,請(qǐng)求修改密碼 2 系統(tǒng)驗(yàn)證用戶名、密碼是否正確 3 管理員輸入新密碼、及確認(rèn)密碼 4 系統(tǒng)保存新密碼 5 系統(tǒng)提示修改成功七 統(tǒng)計(jì)管理1 管理員輸入起始時(shí)間(年、月、日),結(jié)束時(shí)間,請(qǐng)求按日、月、年匯總2 系統(tǒng)查詢上網(wǎng)記錄,計(jì)算、統(tǒng)計(jì)出時(shí)間段的總費(fèi)用、人次、總上機(jī)時(shí)間等信息。3 系統(tǒng)顯示上述信息八 參數(shù)管理 時(shí)段費(fèi)

11、率設(shè)置: 0 系統(tǒng)顯示當(dāng)前設(shè)置 1 管理員設(shè)置時(shí)間段(時(shí)、分)及對(duì)應(yīng)的費(fèi)率,請(qǐng)求保存 2 系統(tǒng)保存設(shè)置 3 系統(tǒng)提示保存成功 超時(shí)報(bào)警定時(shí)器間隔設(shè)置九 超時(shí)超費(fèi)報(bào)警 1 設(shè)置定時(shí)器為周期觸發(fā)方式,觸發(fā)間隔由參數(shù)獲得,默認(rèn)為30分鐘 2 定時(shí)器到時(shí),系統(tǒng)查詢當(dāng)前正在上機(jī)的記錄,計(jì)算其上機(jī)時(shí)間及費(fèi)用,計(jì)算其卡中余額是否低于最低費(fèi)用。 3 系統(tǒng)提示已超費(fèi)卡號(hào)、機(jī)器號(hào),及超的費(fèi)用本系統(tǒng)除了功能性需求,還有易用性、可靠性、安全性等要求,可以在實(shí)現(xiàn)上述功能性需求的基礎(chǔ)上,進(jìn)一步實(shí)現(xiàn)完善非功能性要求。友情提示:本文使用“用例”法分析功能性需求,屬于面向?qū)ο蠓治觯╫oa)法,其實(shí)質(zhì)就是從用戶角度,通過觀察、與

12、用戶交談等方式,記錄下用戶希望如何使用系統(tǒng),系統(tǒng)相應(yīng)需要實(shí)現(xiàn)哪些功能。分析用戶需求一般由系統(tǒng)分析人員完成,其核心能力是熟練掌握業(yè)務(wù)領(lǐng)域的知識(shí)和溝通的技巧,需求分析的最大難點(diǎn)在于需求的可變性,最令開發(fā)人員氣餒的莫過于辛苦設(shè)計(jì)實(shí)現(xiàn)了一個(gè)功能,用戶突然說不需要這個(gè)功能了,另一個(gè)常見的問題是隱蔽性的需求(行業(yè)慣例、日常規(guī)則)常被用戶和分析人員忽略。不同的需求對(duì)于客戶而言重要性是不同的,一般需要對(duì)需求劃分優(yōu)先級(jí),優(yōu)先級(jí)高的優(yōu)先設(shè)計(jì)實(shí)現(xiàn)。你能否從上述一到九大用例描述中找出哪些用例是高優(yōu)先級(jí)的?1.2.2 業(yè)務(wù)對(duì)象分析根據(jù)上面的主要用例描述,可以分析出系統(tǒng)的主要業(yè)務(wù)對(duì)象,它是設(shè)計(jì)階段核心類圖的基礎(chǔ)(不一定一

13、一對(duì)應(yīng)),這些對(duì)象必須實(shí)際存在,其行為和屬性應(yīng)與問題領(lǐng)域相關(guān):1 上網(wǎng)卡: 主要維護(hù)上網(wǎng)卡的相關(guān)信息??ㄌ?hào)、密碼、余額、卡用戶名、卡狀態(tài)(在用、空閑、停用) 2 機(jī)器:主要維護(hù)上網(wǎng)吧計(jì)算機(jī)的相關(guān)信息。機(jī)器號(hào)、使用標(biāo)志(在用、停用、空閑)、備注3 費(fèi)用記錄:記錄每次上機(jī)的信息。記錄編號(hào)、卡號(hào)、機(jī)器號(hào)、開始上機(jī)時(shí)間,下機(jī)時(shí)間、費(fèi)用 4 費(fèi)率記錄:起始時(shí)間、終止時(shí)間,費(fèi)率5 管理員: 利用14完成各種業(yè)務(wù)操作。1.2.3 驗(yàn)收測(cè)試要求 用戶要求開發(fā)產(chǎn)品,產(chǎn)品開發(fā)完成后,需要交付用戶驗(yàn)收,驗(yàn)收要求常常是合同中的重要組成部分,這是一個(gè)必經(jīng)的環(huán)節(jié),主要思路是按照用戶使用的過程測(cè)試系統(tǒng),越頻繁使用的功能越要

14、多測(cè)試。本系統(tǒng)功能性需求驗(yàn)收測(cè)試的基本要求如下:前置條件:1 除口令表有初始用戶名和密碼外,各庫(kù)表為空。2 程序安裝配置正確,能正常啟動(dòng)運(yùn)行。一 初始化數(shù)據(jù)1 啟動(dòng)程序,進(jìn)入“卡維護(hù)”,選“發(fā)新卡”,輸入一條數(shù)據(jù)記錄,退出,進(jìn)入“信息瀏覽”,查看記錄是否已被正確加入;退出“信息瀏覽”,再進(jìn)入“發(fā)新卡”,連續(xù)發(fā)3張卡,其中有張卡余額為0;再進(jìn)入“信息瀏覽”,查看記錄是否已被正確加入。2 同理按1 ,添加機(jī)器。3 進(jìn)入“費(fèi)率維護(hù)”,設(shè)置費(fèi)率。二 功能測(cè)試1 上下機(jī)測(cè)試。進(jìn)入“上機(jī)”,觀察上機(jī)界面,有無(wú)可用機(jī)器,按說明操作上機(jī),連續(xù)上機(jī)3次,第一次正確輸入,第二次輸入不存在的卡號(hào),第三次輸入錯(cuò)誤口令

15、;進(jìn)入“下機(jī)”界面,看有無(wú)正確的上機(jī),連續(xù)下機(jī)兩次。觀察輸出信息界面,看內(nèi)容是否正確(金額、卡號(hào),時(shí)間,費(fèi)用)。已下機(jī)器是否已被同步從上機(jī)下拉表中清除。再進(jìn)入“上機(jī)”,比對(duì)可選空閑機(jī)器是否正確,輸入已上機(jī)用戶的卡號(hào),觀察結(jié)果;輸入卡金額不足的卡號(hào),觀察結(jié)果;不輸入任何值,直接按確認(rèn)的結(jié)果。2 統(tǒng)計(jì)測(cè)試,進(jìn)入“統(tǒng)計(jì)”功能,按日,月,年查詢統(tǒng)計(jì),與庫(kù)中實(shí)際數(shù)據(jù)比對(duì),不同日、月、年分別查2次3進(jìn)入“卡維護(hù)”,進(jìn)入“卡充值“,輸入余額不足卡號(hào),給卡充值,進(jìn)入“信息瀏覽”,查看卡充值是否正確,并以此卡號(hào)上機(jī);再進(jìn)入“卡維護(hù)”的“信息瀏覽”,查看記錄;然后選“刪除卡”,連續(xù)刪2張卡,應(yīng)不能刪除在線卡,并能

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

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

18、統(tǒng)運(yùn)行環(huán)境(如操作系統(tǒng)、數(shù)據(jù)庫(kù)),開發(fā)平臺(tái)及語(yǔ)言。本系統(tǒng)主要運(yùn)行在windows系列平臺(tái)上,數(shù)據(jù)庫(kù)使用access,使用eclipse開發(fā)系統(tǒng)。采用兩層c/s體系結(jié)構(gòu)。系統(tǒng)體系結(jié)構(gòu)圖如下圖所示:圖形界面swing業(yè)務(wù)邏輯數(shù)據(jù)訪問(jdbc)數(shù)據(jù)庫(kù)accesssql客戶端服務(wù)端 圖1 系統(tǒng)體系結(jié)構(gòu)客戶端分3層,圖形界面層(采用java的swing設(shè)計(jì))負(fù)責(zé)與用戶交互,業(yè)務(wù)邏輯層則根據(jù)用戶的請(qǐng)求執(zhí)行各種功能(如上、下機(jī)等),數(shù)據(jù)訪問層主要根據(jù)業(yè)務(wù)邏輯層的請(qǐng)求通過jdbc/sql存取數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)使用access,可根據(jù)情況使用其他數(shù)據(jù)庫(kù)(如sql server),客戶端基本不做修改,僅有的少量修改

19、也只在數(shù)據(jù)訪問層??蛻舳伺c服務(wù)端在物理上可以運(yùn)行在一臺(tái)機(jī)器上,也可以分別運(yùn)行在不同機(jī)器上。二 系統(tǒng)功能模塊及主要類系統(tǒng)的主要功能模塊如圖2所示:主模塊登錄上機(jī)下機(jī)幫助卡維護(hù)發(fā)卡充值查詢刪除卡機(jī)器維護(hù)添加機(jī)器刪除機(jī)器查詢口令維護(hù)添加用戶更改口令統(tǒng)計(jì)參數(shù)維護(hù)刪除用戶圖2 系統(tǒng)模塊圖可據(jù)此設(shè)計(jì)菜單,劃分模塊。系統(tǒng)主要類圖如下:圖 3總類圖的畫法基本遵循視圖層、業(yè)務(wù)邏輯層、數(shù)據(jù)模型及數(shù)據(jù)庫(kù)訪問層的自上而下的順序,其中視圖層中的視圖因?yàn)檩^多未畫出,主要的業(yè)務(wù)邏輯控制類是businessmanager,用戶的上下機(jī)請(qǐng)求,通過界面的事件機(jī)制,在事件處理程序中會(huì)調(diào)用businessmanager中的方法,然后

20、再調(diào)用xdao類方法,在xdao類中一般先通過dbconnection獲取連接,再通過jdbc/sql訪問數(shù)據(jù)庫(kù)。cardcomputerrecordmanager類是“值對(duì)象”,主要是存放相應(yīng)的屬性,方法也是setxgetx類方法,“值對(duì)象”常作為參數(shù)在各種方法中傳遞。三 經(jīng)驗(yàn)共享1 客戶端基本采用三層結(jié)構(gòu)(視圖view、控制controller、模型mode),層與層間耦合性較小,提高了整體的可擴(kuò)展性、可重用及抗變動(dòng)能力。缺點(diǎn)是要求預(yù)先設(shè)計(jì)好,對(duì)設(shè)計(jì)水平要求高,不過一旦形成模式,養(yǎng)成習(xí)慣,能“照葫蘆畫瓢”,也是提高設(shè)計(jì)水平的捷徑。2 使用xdao類將業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)訪問隔離,只要xdao對(duì)

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

22、ion類統(tǒng)一完成連接的獲取和釋放,好處是連接部分代碼可重復(fù)使用,如果連接參數(shù)(如連到不同的數(shù)據(jù)庫(kù))改動(dòng),只需更改dbconnection類中的相關(guān)參數(shù)屬性(當(dāng)然更好的做法是將這些連接參數(shù)放在配置文件中,這樣可以只修改配置文件,無(wú)需修改程序),另外還可以為了提高性能擴(kuò)展成“連接池”,同時(shí)對(duì)使用它的xdao類沒有影響。友情提示:如果你不能理解上述描述,也不必?fù)?dān)心,按照你的直覺去開發(fā)系統(tǒng),如果你一帆風(fēng)順,那么你肯定是這方面的天才,如果遇到各種問題,上述的文字可供參考,同學(xué)之間可以互相交流,老師也樂意為你效勞,勤思、善問、實(shí)干是快速提高水平的不二法門。1.3.2 詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)主要是關(guān)注模塊一級(jí)的

23、設(shè)計(jì),一般有界面,核心算法及處理流程,數(shù)據(jù)庫(kù)表(表、屬性及表間關(guān)系)的設(shè)計(jì)。由于模塊較多,下面選擇幾個(gè)典型模塊分析設(shè)計(jì),其中“經(jīng)驗(yàn)共享”,揭示難點(diǎn)的同時(shí),也介紹了相應(yīng)的解決方法及設(shè)計(jì)經(jīng)驗(yàn)。 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)主要是根據(jù)分析和概要設(shè)計(jì)中發(fā)現(xiàn)的對(duì)象和類,確定哪些對(duì)象需要持久保存,然后將對(duì)象屬性及對(duì)象間關(guān)系轉(zhuǎn)化成關(guān)系表。經(jīng)過分析card、computer、record、manger需要保存在數(shù)據(jù)庫(kù)中,將config參數(shù)配置信息保存在文件中。其中card、computer、record的關(guān)系如下圖所示:圖 持久對(duì)象屬性及關(guān)系圖一條record記錄必有對(duì)應(yīng)的一個(gè)card及一臺(tái)comput

24、er,對(duì)于未用機(jī)器及卡,則沒有對(duì)應(yīng)的記錄。將其轉(zhuǎn)換為關(guān)系表時(shí),關(guān)鍵是在record中設(shè)置cardid,computerid作為外鍵指向card和computer。共設(shè)計(jì)出四張表:1.card 表 名稱編碼數(shù)據(jù)類型卡號(hào)id(主鍵)varchar(20)用戶名username(非空)varchar(20)密碼password(非空)varchar(15)卡狀態(tài)status(非空)integer余額balance(非空)double 2.computer 表名稱編碼數(shù)據(jù)類型機(jī)器號(hào)id(主鍵)varchar(10)狀態(tài)status(非空)integer備注notesvarchar(200)3.reco

25、rd 表名稱編碼數(shù)據(jù)類型記錄號(hào)id(主鍵)varchar(20)卡號(hào)cardid(非空)varchar(20)機(jī)器號(hào)computerid(非空)varchar(10)上機(jī)時(shí)間begintime(非空)date下機(jī)時(shí)間endtimedate上機(jī)費(fèi)用feedouble 4. manager 表名稱編碼數(shù)據(jù)類型用戶名username(非空)varchar(20)口令password(非空)varchar(20)經(jīng)驗(yàn)共享:數(shù)據(jù)庫(kù)設(shè)計(jì)一般相對(duì)獨(dú)立,采用的主要方法是將對(duì)象模型轉(zhuǎn)化為數(shù)據(jù)庫(kù)關(guān)系模型,也可以采用傳統(tǒng)的設(shè)計(jì)出e-r圖,再定關(guān)系表的方法。即使是簡(jiǎn)單數(shù)據(jù)庫(kù)的設(shè)計(jì)若從實(shí)用角度出發(fā)也需要考慮多方面的問題

26、。首先基本的是確定有哪幾張表,表間關(guān)系,然后是表中的字段,比較麻煩的是確定字段的約束(主鍵、非空等),字段數(shù)據(jù)類型,范式的調(diào)整等,因?yàn)榇藭r(shí)會(huì)考慮到存儲(chǔ)空間、性能、易編程、數(shù)據(jù)質(zhì)量等方面的因素。如定義“用戶名”字段要有多大,就需要在存儲(chǔ)空間節(jié)省和適應(yīng)性間權(quán)衡,定義的較小,遇到長(zhǎng)名字的情況,程序不能適應(yīng);定義的過大,對(duì)于大多數(shù)情況可能又會(huì)浪費(fèi)存儲(chǔ)空間,一般寧愿定義的大些,以空間換取適應(yīng)性。再比如確定哪些字段為“非空”,從編程角度看必須保證“非空”字段有值,這會(huì)增加驗(yàn)證“非空”字段程序的代碼量,對(duì)用戶的約束也加強(qiáng),有些值要求用戶必須輸入,如口令就不能為空。但若允許字段可以為“空”,如機(jī)器狀態(tài)字段,則

27、機(jī)器的當(dāng)前狀態(tài)就可能難以確定,影響數(shù)據(jù)質(zhì)量。一個(gè)基本的方向是“約束”多,則編程的代碼量會(huì)變大,性能會(huì)下降,但數(shù)據(jù)的質(zhì)量會(huì)得到提高。在record表中“下機(jī)時(shí)間”和“上機(jī)費(fèi)用”沒有定義為“非空”,是因?yàn)樯蠙C(jī)時(shí)這兩項(xiàng)不能確定,只能填寫部分上機(jī)記錄信息。一般數(shù)據(jù)庫(kù)表結(jié)構(gòu)的變動(dòng)對(duì)于程序的影響較大,在程序設(shè)計(jì)上可通過xdao類盡量消減變動(dòng)的影響,在實(shí)現(xiàn)階段應(yīng)避免對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)大的改動(dòng)。 上機(jī)模塊設(shè)計(jì)一 界面設(shè)計(jì) 界面設(shè)計(jì)主要是根據(jù)功能要求構(gòu)建界面,界面中的每個(gè)元素均應(yīng)有其作用,以支持功能的實(shí)現(xiàn),界面設(shè)計(jì)還要考慮到界面風(fēng)格的一致、符合一般window應(yīng)用gui的規(guī)范。設(shè)計(jì)應(yīng)簡(jiǎn)潔實(shí)用,避免在細(xì)節(jié)

28、上(如字體、顏色)耗費(fèi)時(shí)間。上機(jī)模塊參考界面如圖4所示:圖4 參考界面二 上機(jī)流程 1 初始化 (1) 顯示界面 (2)獲取空閑機(jī)器 (3) 將空閑機(jī)器號(hào)加入下拉列表 2 上機(jī)處理過程: (1)驗(yàn)證機(jī)器號(hào)、卡號(hào)、密碼是否為空 (2)根據(jù)卡號(hào)、密碼獲取卡對(duì)象(3) 若卡對(duì)象為空則說明卡號(hào)或密碼錯(cuò),給出提示“卡號(hào)或密碼錯(cuò)”,要求重輸(4)判斷卡狀態(tài),若卡正在使用則給出提示“不能一卡多用”(5)計(jì)算卡中余額,若低于設(shè)定值,則提示“余額不足”(6)修改卡狀態(tài)為在用,修改機(jī)器狀態(tài)為在用,獲取上機(jī)時(shí)間,將上機(jī)時(shí)間、機(jī)器號(hào)、卡號(hào)保存到記錄對(duì)象,再通過recorddao在庫(kù)中添加一條新上網(wǎng)記錄。(7)提示上網(wǎng)

29、成功三 經(jīng)驗(yàn)共享1 上機(jī)處理中的第6步要在一個(gè)完整的“事務(wù)”中完成,對(duì)卡、記錄、機(jī)器數(shù)據(jù)的更改添加要保證要么全部更改成功,要么都不更改,以保證數(shù)據(jù)的一致性。2 費(fèi)用計(jì)算是按時(shí)段計(jì)算的,需要考慮跨時(shí)段費(fèi)用如何計(jì)算,另外為了降低復(fù)雜性,可規(guī)定時(shí)段只能為三段,時(shí)間精確到分,費(fèi)用精確到角。3 記錄id如何保證唯一且自動(dòng)增長(zhǎng)。基本有兩種:一是編程控制,插入新記錄前獲取當(dāng)前最大記錄號(hào),通過select max(id) from record,加1后,將id及其它信息寫入,若有多用戶訪問該表,則上述過程要放在一個(gè)“事務(wù)”中。二是利用關(guān)系數(shù)據(jù)庫(kù)提供的“自增字段”特性,將id設(shè)置成“自增字段”,由數(shù)據(jù)庫(kù)負(fù)責(zé)每添

30、加一條記錄就將id加1。 下機(jī)模塊設(shè)計(jì)一 界面設(shè)計(jì) 下機(jī)模塊主要根據(jù)用戶請(qǐng)求(報(bào)出卡號(hào)/機(jī)器號(hào)),管理員根據(jù)卡號(hào)/機(jī)器號(hào)執(zhí)行下機(jī)操作,參考界面如圖5所示,大的文本空白文本框用于顯示下機(jī)記錄信息。當(dāng)然還有其它的設(shè)計(jì)方式,如顯示當(dāng)前上機(jī)的所有記錄信息,選中其中一條執(zhí)行下機(jī)操作。 圖 5 下機(jī)模塊界面二 下機(jī)流程 1 管理員輸入機(jī)器號(hào)或卡號(hào),請(qǐng)求下機(jī) 2 系統(tǒng)獲取機(jī)器號(hào),據(jù)機(jī)器號(hào)獲取相應(yīng)記錄對(duì)象,要處理機(jī)器號(hào)錯(cuò)誤的情況 3 系統(tǒng)根據(jù)記錄對(duì)象獲取該記錄對(duì)應(yīng)的卡對(duì)象 4 系統(tǒng)計(jì)算費(fèi)用,并比較卡對(duì)象余額,若不夠則提示“余額不足”,并顯示余額5 系統(tǒng)從卡中扣費(fèi),修改卡狀態(tài)為“空閑”; 系統(tǒng)修改

31、該機(jī)器的狀態(tài)為“空閑”;系統(tǒng)更新記錄信息(下機(jī)時(shí)間、費(fèi)用)。6 系統(tǒng)顯示本次上網(wǎng)完整的記錄(record)信息及卡余額,并提示下機(jī)成功 注: 下機(jī)處理4中修改三表的操作應(yīng)作為一個(gè)“事務(wù)”完成。 發(fā)新卡模塊設(shè)計(jì)一 界面設(shè)計(jì)發(fā)卡需要輸入卡號(hào)、用戶名、密碼、金額,參考界面如下圖所示。界面設(shè)計(jì)布局應(yīng)簡(jiǎn)潔一致,從用戶友好性出發(fā),提供了輸入提示,增加了“確認(rèn)密碼”,以提醒用戶記住密碼,輸入的密碼用*號(hào)顯示以提高安全性。雖然有了提示但在代碼中仍需對(duì)輸入進(jìn)行驗(yàn)證,如金額不能為負(fù)值,以避免誤輸及惡意輸入。當(dāng)然從口令強(qiáng)度考慮,要求密碼只輸入數(shù)字和字母又是不妥的,相反可提示用戶輸入特殊字符及輸入的最小

32、字符數(shù)。所以此界面雖簡(jiǎn)單,但已涉及到界面的視覺風(fēng)格、用戶友好性、安全性考慮。圖 發(fā)卡界面二 發(fā)卡流程 1 系統(tǒng)從界面獲取所有信息,依次判斷是否為空 2 判斷金額是否大于0 3 判斷密碼和確認(rèn)密碼是否一致, 4 判斷密碼和用戶名是否在最小及最大長(zhǎng)度之間 5 判斷卡號(hào)是否有效(唯一) 6 生成card對(duì)象,請(qǐng)求carddao向card表中添加一條新記錄。 7 提示卡添加成功,并顯示卡號(hào)和金額三 經(jīng)驗(yàn)共享1 輸入數(shù)據(jù)的驗(yàn)證是難點(diǎn),驗(yàn)證輸入數(shù)據(jù)是保證程序可靠性的重要措施,例如:若不限制用戶或口令長(zhǎng)度在相應(yīng)數(shù)據(jù)庫(kù)表字段設(shè)定的范圍內(nèi),一旦將超長(zhǎng)的用戶名寫入數(shù)據(jù)庫(kù)則會(huì)產(chǎn)生數(shù)據(jù)被截?cái)嗷驍?shù)據(jù)庫(kù)異常,而這完全可以

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

34、性增加)。驗(yàn)證通過后的數(shù)據(jù)在程序內(nèi)部傳遞時(shí),一般無(wú)需重復(fù)驗(yàn)證。2 卡號(hào)的獲取。最基本的方式由管理員手工編號(hào)并保證卡號(hào)的唯一性,但卡一旦多了,這會(huì)成為管理員的負(fù)擔(dān),因此,可以由系統(tǒng)自動(dòng)編號(hào),如規(guī)定卡號(hào)從1依次遞增編號(hào),這樣卡號(hào)就無(wú)需輸入??稍诿看卧黾有驴〞r(shí),從卡表中獲取最大id,加1后作為新增卡的卡號(hào)。也可以獲取當(dāng)前時(shí)間轉(zhuǎn)化成字符串作為id,一般時(shí)間不會(huì)重復(fù),可保證id唯一,優(yōu)點(diǎn)是生成id無(wú)需訪問數(shù)據(jù)庫(kù),還可以代表發(fā)卡時(shí)間。 刪除卡模塊設(shè)計(jì)一 界面設(shè)計(jì) 刪除卡參考界面如下圖所示:圖 刪除卡界面二 刪除卡流程1管理員輸入卡號(hào)2 系統(tǒng)根據(jù)卡號(hào),請(qǐng)求carddao查詢有無(wú)該卡3 若返回的

35、卡對(duì)象存在,則執(zhí)行下一步,否則提示“卡號(hào)錯(cuò)誤”,要求重輸。4 系統(tǒng)從card查詢卡狀態(tài)5 若為“在用”,則提示“不能刪除在用卡”6 查詢余額,若有則對(duì)話框提示“請(qǐng)結(jié)清余額”7 若余額已結(jié)清且狀態(tài)為“空閑”,則將該卡信息刪除8系統(tǒng)提示刪除成功三 經(jīng)驗(yàn)共享 1 如何刪除卡:一種是真刪,卡記錄信息從數(shù)據(jù)庫(kù)中永久刪除,采用delete from where 語(yǔ)句,此時(shí)還要注意,由于record中有指向card表的外鍵,刪除涉及到“級(jí)連刪除”這一概念,即在record中包含該卡號(hào)的記錄是否要一起刪除。一般不允許“級(jí)連刪除”,因?yàn)閞ecord中記錄是統(tǒng)計(jì)費(fèi)用的基本依據(jù),刪除后會(huì)使統(tǒng)計(jì)數(shù)據(jù)失真。還有一種是假

36、刪,即標(biāo)注卡狀態(tài)信息為“停用”,只需用update語(yǔ)句更改其狀態(tài)即可,這樣做好處是:一是可以完整保留已發(fā)卡信息,二是易于重新恢復(fù)已刪卡。壞處是:若有大量卡(數(shù)以十萬(wàn)計(jì))長(zhǎng)期不用,會(huì)占用數(shù)據(jù)庫(kù)空間,影響訪問卡表的性能。 2 一般數(shù)據(jù)庫(kù)中數(shù)據(jù)刪除后難以恢復(fù),同時(shí)難以避免因?yàn)橐馔鈱?dǎo)致的數(shù)據(jù)損壞,因此重要數(shù)據(jù)的保存?zhèn)浞荼夭豢缮?,本系統(tǒng)沒有要求做數(shù)據(jù)備份功能,因?yàn)閿?shù)據(jù)庫(kù)管理工具一般會(huì)提供相應(yīng)功能,只是要求用戶會(huì)使用數(shù)據(jù)庫(kù)管理工具,所以從方便用戶使用考慮,程序本身提供備份(手動(dòng)或定期自動(dòng)備份)功能也是必要的。1.4 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn)主要運(yùn)用集成開發(fā)環(huán)境、java、數(shù)據(jù)庫(kù)工具根據(jù)設(shè)計(jì)制做出實(shí)際的界面,編寫代

37、碼,生成數(shù)據(jù)庫(kù)表,進(jìn)行測(cè)試,這也是初級(jí)程序員所要完成的主要任務(wù),在此列出部分典型代碼,僅供參考。1.4.1 數(shù)據(jù)庫(kù)訪問對(duì)數(shù)據(jù)庫(kù)的基本操作是:增、刪、改、查,數(shù)據(jù)庫(kù)連接的建立、關(guān)閉,其中的難點(diǎn)是訪問數(shù)據(jù)庫(kù)的異常處理和參數(shù)化sql,現(xiàn)舉例如下:1 獲取連接的代碼:private static final string driver_class = sun.jdbc.odbc.jdbcodbcdriver; /定義驅(qū)動(dòng)類 private static final string datasource = jdbc:odbc:netbardatasource; /定義odbc數(shù)據(jù)源 public sta

38、tic connection getconnction() connection dbconnection = null; try class.forname(driver_class); dbconnection = drivermanager.getconnection(datasource); catch (exception e) e.printstacktrace(); return dbconnection; 該代碼針對(duì)jdbcodbcdriver驅(qū)動(dòng),odbc源名為netbardatasource,未支持口令驗(yàn)證。 2 查詢代碼: 下面是根據(jù)用戶名和口令驗(yàn)證卡是否有效的代碼,需要

39、注意的是查詢參數(shù)值需要加單引號(hào):/* * judge card is valid or not. * param card card * return boolean */ public boolean isvalid( card card) boolean isvalid = false; connection dbconnection = null; preparedstatement pstatement = null; resultset res = null; try dbconnection = connectionmanager.getconnction(); / 構(gòu)建查詢sql

40、語(yǔ)句 string strsql = select * from card where id= + card.getid() + and password = + card.getpassword() + ; if (dbconnection != null) system.out.println(dbconnection != null); /查詢操作 pstatement = dbconnection.preparestatement(strsql); res = pstatement.executequery();/執(zhí)行sql語(yǔ)句,并返回結(jié)果 if (res.next() /若res有記

41、錄說明卡存在 isvalid = true; catch (sqlexception sqle) sqle.printstacktrace(); finally connectionmanager.closeresultset(res);/關(guān)閉結(jié)果集 connectionmanager.closestatement(pstatement); connectionmanager.closeconnection(dbconnection); /關(guān)閉連接 return isvalid; 3 更新代碼下面是更新機(jī)器狀態(tài)的代碼,其中sql語(yǔ)句中,“id =(?)”是動(dòng)態(tài)參數(shù),具體值設(shè)置在pstateme

42、nt.setstring(1, computer.getid()/* * record the computer have used. * param computer computer */ public void updateonuse( computer computer) connection dbconnection = null; preparedstatement pstatement = null; try string strsql = update computer set status =1 where id =(?) ; ; pstatement = dbconnect

43、ion.preparestatement(strsql); pstatement.setstring(1, computer.getid(); /設(shè)置機(jī)器號(hào)id參數(shù) pstatement.executeupdate(); catch (sqlexception sqle) sqle.printstacktrace(); finally connectionmanager.closestatement(pstatement); connectionmanager.closeconnection(dbconnection); 1.4.2 下機(jī)模塊 在businessmanager類中有一doche

44、ckout()方法是實(shí)現(xiàn)下機(jī)過程的關(guān)鍵。/* * do check out business. * param rec record,已有機(jī)器號(hào)值 * return comsumedisplayinfo含有上機(jī)記錄、對(duì)應(yīng)卡記錄 */ public static comsumedisplayinfo docheckout( record rec) recorddao dao = new recorddao();/獲取包含了下機(jī)記錄及對(duì)應(yīng)卡信息的comsumedisplayinfo comsumedisplayinfo result = dao.getstopcompouterrelationin

45、fo(rec); record record = result.getrecord(); card card = result.getcard(); /計(jì)算本次上機(jī)的費(fèi)用 int fee = calfee(record.getbegintime(), record.getendtime(); record.setfee(fee); /計(jì)算余額 int balance = card.getbalance() - fee; card.setid(record.getcardid(); card.setbalance(balance);/將數(shù)據(jù)寫入數(shù)據(jù)庫(kù) recorddao dao2 = new r

46、ecorddao(); dao2.docheckoutdb(record, card);/返回含有上機(jī)記錄、card記錄的comsumedisplayinfo,供界面顯示下機(jī)結(jié)果 result.setrecord(record); result.setcard(card); return result; 1.4.3 上機(jī)模塊 處理請(qǐng)求上機(jī)的部分代碼如下,主要有界面數(shù)據(jù)(機(jī)器號(hào)、密碼、卡用戶號(hào))驗(yàn)證代碼;卡有效性、余額可用性驗(yàn)證。/* * deal business about click confirm button. * param e actionevent */ void confirm

47、button_actionperformed(actionevent e) string cardid=; string passwordtemp = ;string computerid =;/獲取機(jī)器號(hào),并去掉空格cardid = cardidtextfield.gettext().trim();/獲取密碼 for(int i=0;ipasswordfiled.getpassword().length;i+) passwordtemp += passwordfiled.getpassword()i;/獲取機(jī)器號(hào) computerid = computeridcombox.getselect

48、editem().tostring();/判斷機(jī)器號(hào)是否為空,未填或只有空格 if(computerid=null | computerid.trim().length()=0) joptionpane.showmessagedialog(this,請(qǐng)選擇機(jī)器號(hào)!,警告, joptionpane.warning_message ,null ); return ;/判斷卡號(hào)是否為空,未填或只有空格 if(cardid=null | cardid.length()=0) joptionpane.showmessagedialog(this,請(qǐng)輸入卡號(hào)!,警告, joptionpane.warnin

49、g_message ,null ); return ; if(passwordtemp=null | passwordtemp.length()=0) joptionpane.showmessagedialog(this,請(qǐng)輸入密碼!,警告, joptionpane.warning_message ,null ); return ;/生成卡對(duì)象,并設(shè)置卡用戶名、口令、上機(jī)時(shí)間card card = new card(); card.setid(cardid); card.setpassword(passwordtemp); record record = new record(); recor

50、d.setcardid(cardid); record.setcomputerid(computerid); record.setbegintime(dispalynowtime);/生成機(jī)器對(duì)象,更新機(jī)器狀態(tài)時(shí)用 computer computer = new computer(); computer.setid(computerid);/驗(yàn)證卡是否有效、余額是否夠,符合要求后調(diào)docheckin實(shí)際處理上機(jī)業(yè)務(wù) if(businessmanager.cardisvalid(card) if(businessmanager.cardhavebalance(card) businessmana

51、ger.docheckin(record,computer); else joptionpane.showmessagedialog(this,卡余額不足,請(qǐng)充值!,警告, joptionpane.warning_message ,null ); return ; else joptionpane.showmessagedialog(this,卡號(hào)或者密碼不對(duì)!,警告, joptionpane.warning_message ,null ); system.out.println(卡號(hào)或者密碼不對(duì)); return; 1.4.4 幫助模塊在實(shí)現(xiàn)幫助功能時(shí),編碼上沒有難點(diǎn),基本上是一個(gè)簡(jiǎn)單的帶滾

52、動(dòng)條的只讀文本瀏覽器,難在幫助文件的內(nèi)容如何寫?幫助文件是指導(dǎo)用戶如何操作系統(tǒng)的,內(nèi)容應(yīng)正確,語(yǔ)言應(yīng)對(duì)客戶簡(jiǎn)明易懂,最好輔以圖形說明。做到這兩點(diǎn)并不容易,內(nèi)容正確要求寫幫助的人對(duì)系統(tǒng)的功能非常熟悉,簡(jiǎn)明易懂則充分體現(xiàn)出作者的文字功底。建議參考類似“記事本”(winodws主菜單-所有程序-附件-記事本)這樣的程序,看它們的幫助是如何寫的。友情提示:客戶會(huì)根據(jù)幫助說明來(lái)使用系統(tǒng),系統(tǒng)功能正確,但因?yàn)閹椭f明錯(cuò)誤導(dǎo)致的問題甚至官司比比皆是,所以在通過基本的驗(yàn)收測(cè)試后,老師會(huì)按照你寫的幫助來(lái)使用系統(tǒng),進(jìn)而測(cè)試幫助文檔的正確性。1.5 小結(jié) 經(jīng)過日夜奮戰(zhàn),終于做出了系統(tǒng),通過了驗(yàn)收和答辯,雖然有點(diǎn)難熬,但終于熬過來(lái)了,是不是可以松一口氣或是慶祝一下?請(qǐng)不要忘記老師對(duì)你的期待,期待你的改變和收獲,做一件事情和沒做這件事情結(jié)果都一樣將是我們共同的失敗,請(qǐng)寫下你所做的工作,發(fā)現(xiàn)了哪些問題?如何解決的?有哪些經(jīng)驗(yàn)和教訓(xùn)?不應(yīng)局限于技術(shù),只要是與項(xiàng)目相關(guān)的屬于自己的思考和想法都可以寫下來(lái),請(qǐng)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論