




已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言課程設(shè)計(jì)報(bào)告題目: KTV點(diǎn)歌系統(tǒng) 班級(jí): 軟件工程 0801班 學(xué)號(hào): 0808010106 姓名: 王夕楠 2011年 1月目 錄1設(shè)計(jì)題目及具體要求31.1題目需求31.2實(shí)現(xiàn)環(huán)境及工具簡(jiǎn)介32總體設(shè)計(jì)42.1 系統(tǒng)基本功能描述42.2數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū)62.3界面設(shè)計(jì)63 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)113.1 事件跟蹤圖113.2系統(tǒng)類圖123.3輸入/輸出數(shù)據(jù)123.4 代碼實(shí)現(xiàn)134 系統(tǒng)測(cè)試 22 4.1管理員224.2 消費(fèi)者234.3 容錯(cuò)性測(cè)試265 設(shè)計(jì)小結(jié)266 參考文獻(xiàn)271設(shè)計(jì)題目及具體要求1.1 題目需求1.1.1選題目的及意義近些年人們生活水平提高很快,人們除了注重衣食住行以外,越來(lái)越需要一種好的娛樂(lè)休閑方式,而卡拉 OK 起源于日本然后引入我國(guó)。這種娛樂(lè)方式很快被大家所接受。而且非常受人們的歡迎,不管男女老少都能唱上幾句?,F(xiàn)在大街上KTV包房很多,但它們的點(diǎn)歌系統(tǒng)并不先進(jìn),自動(dòng)化程度不高,使用起來(lái)很不方便。所以現(xiàn)在正需要一種功能強(qiáng)大,自動(dòng)化程度高,成本低廉KTV包房點(diǎn)歌系統(tǒng)。本學(xué)期,我選擇這個(gè)題目作為課程設(shè)計(jì)的題目有以下兩個(gè)原因:一是本學(xué)期學(xué)習(xí)了Java程序設(shè)計(jì)和Oracle數(shù)據(jù)庫(kù)兩門(mén)課程,老師說(shuō)過(guò)Java和Oracle數(shù)據(jù)庫(kù)是最佳搭檔,因此我想通過(guò)這次課程設(shè)計(jì)將所學(xué)運(yùn)用于實(shí)際,也通過(guò)這次實(shí)際應(yīng)用加強(qiáng)自身能力,為以后的就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。因?yàn)橐院蟮墓ぷ鞫际敲鎸?duì)實(shí)際的問(wèn)題,解決實(shí)際問(wèn)題的能力才是我們真正需要的。二是因?yàn)槲冶容^喜歡去KTV唱歌,因此對(duì)于這個(gè)題目非常感興趣,一直想找機(jī)會(huì)做一個(gè)相關(guān)的項(xiàng)目;對(duì)于KTV的點(diǎn)歌系統(tǒng)我也比較熟悉。憑借平時(shí)去KTV的經(jīng)歷和個(gè)人想法,我想做出一套屬于自己的KTV點(diǎn)歌系統(tǒng),于是選擇了這個(gè)題目。1.1.2本KTV點(diǎn)歌系統(tǒng)在功能上要求完成以下基本功能:a).消費(fèi)者、管理員登陸;b).管理員添加歌手信息入庫(kù);c).管理員添加歌曲入庫(kù);d).消費(fèi)者查看包廂資費(fèi)信息;e).消費(fèi)者選擇包廂;f).根據(jù)歌曲首字母選歌;g).根據(jù)歌手名首字母選歌;h).根據(jù)語(yǔ)種選歌;i ).查看已點(diǎn)歌曲;j ).刪除、優(yōu)先已點(diǎn)歌曲; k).操作已點(diǎn)歌曲(播放、暫停、停止、切歌);l ).酒水服務(wù);m).歌曲排行1.1.3系統(tǒng)實(shí)現(xiàn)重難點(diǎn)分析本系統(tǒng)通過(guò)JDBC實(shí)現(xiàn)前后臺(tái)數(shù)據(jù)的聯(lián)系,前臺(tái)操作界面使用Java編寫(xiě),后臺(tái)連接Oracle數(shù)據(jù)庫(kù)存放相關(guān)數(shù)據(jù)?;旧蠈?shí)現(xiàn)了一個(gè)KTV點(diǎn)歌系統(tǒng)所具備的基本功能。本系統(tǒng)把使用者分為兩類:管理員和消費(fèi)者,對(duì)兩種用戶分別設(shè)計(jì)了各自的主界面,以便更好的實(shí)現(xiàn)操作的方便性。管理員可以通過(guò)用戶名和密碼驗(yàn)證后登錄,進(jìn)行對(duì)數(shù)據(jù)庫(kù)的操作,實(shí)現(xiàn)添加歌手信息和添加歌曲的功能;消費(fèi)者可以在登錄時(shí)了解包間資費(fèi)來(lái)選擇需要的包間,隨后可進(jìn)行選歌和演唱等具體操作。本系統(tǒng)的實(shí)現(xiàn)主要有以下重點(diǎn):1 前臺(tái)用戶界面編寫(xiě):系統(tǒng)界面較多,要求美觀且界面友好,方便用戶操作;2 前臺(tái)用戶操作事件的響應(yīng):要求操作簡(jiǎn)單易懂;3 后臺(tái)數(shù)據(jù)庫(kù)的使用:需要使用數(shù)據(jù)表和序列;4 前臺(tái)界面查詢控制與后臺(tái)數(shù)據(jù)庫(kù)的鏈接:需要響應(yīng)及時(shí)且準(zhǔn)確。1.2 實(shí)現(xiàn)環(huán)境及工具簡(jiǎn)介1.2.1 系統(tǒng)概述本圖書(shū)管理系統(tǒng)采用面向?qū)ο蟮姆治龇椒ㄟM(jìn)行分析,然后用面向?qū)ο蟮脑O(shè)計(jì)方法進(jìn)行設(shè)計(jì),最后用面向?qū)ο笳Z(yǔ)言Java進(jìn)行實(shí)現(xiàn),后臺(tái)數(shù)據(jù)庫(kù)使用Oracle,連接方式為JDBC。Java中GUI程序設(shè)計(jì)是界面程序設(shè)計(jì),用它設(shè)計(jì)出來(lái)的界面不但美觀,而且使用方便,使用者只需點(diǎn)幾次鼠標(biāo),就能根據(jù)提示進(jìn)行正確的操作,實(shí)現(xiàn)了KTV點(diǎn)歌和管理的便捷程度;由于Java代碼重用性非常好,且數(shù)據(jù)包十分強(qiáng)大。只需簡(jiǎn)單的調(diào)用即可實(shí)現(xiàn)想要的功能,大大提高了開(kāi)發(fā)新產(chǎn)品的效率,利用大部分時(shí)間在系統(tǒng)的設(shè)計(jì)上而不是編碼實(shí)現(xiàn)的過(guò)程,因此可以實(shí)現(xiàn)降低代碼量的目的;Oracle數(shù)據(jù)庫(kù)以功能強(qiáng)大和簡(jiǎn)單易用著稱,它從發(fā)布以來(lái),正逐步成為數(shù)據(jù)庫(kù)的領(lǐng)導(dǎo)者,并且擁有廣泛的用戶?!癒TV點(diǎn)歌系統(tǒng)”是充分結(jié)合實(shí)際工作需求編制的應(yīng)用軟件。它具有功能強(qiáng),便于操作等特點(diǎn)。這套系統(tǒng)的應(yīng)用將減輕工作人員的工作強(qiáng)度,使顧客更為方便的在KTV包房自由的歌唱無(wú)外界打擾,并且節(jié)約了很大的成本而且非常方便。1.2.2開(kāi)發(fā)環(huán)境及工具中央處理器:Intel Core i3;內(nèi)存:2GB;主頻:2.13GHz;開(kāi)發(fā)平臺(tái):Eclipse;數(shù)據(jù)庫(kù):Oracle 9i運(yùn)行平臺(tái):Windows 71.2.3關(guān)鍵技術(shù)本KTV點(diǎn)歌系統(tǒng)所使用的關(guān)鍵技術(shù)有:JDBC,Java GUI程序設(shè)計(jì)技術(shù)(MVC概念設(shè)計(jì)),數(shù)據(jù)庫(kù)增加、查找技術(shù),面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)(類的繼承和派生技術(shù))。2總體設(shè)計(jì)2.1 系統(tǒng)基本功能描述2.1.1基本系統(tǒng)模型圖2-1KTV點(diǎn)歌系統(tǒng)基本系統(tǒng)模型通過(guò)圖2-1.,我們可以發(fā)現(xiàn)該系統(tǒng)的數(shù)據(jù)源是歌曲庫(kù)管理員和消費(fèi)者;管理員處理的事務(wù)有添加歌手和添加歌曲;消費(fèi)者處理的事物有選歌、演唱操作等;數(shù)據(jù)終點(diǎn)是消費(fèi)者,消費(fèi)者可以查看數(shù)據(jù)庫(kù)內(nèi)存放的歌曲信息,并進(jìn)行選擇、播放等操作。 2.1.2 KTV點(diǎn)歌系統(tǒng)數(shù)據(jù)流圖圖2-2 KTV點(diǎn)歌系統(tǒng)數(shù)據(jù)流圖2.1.3 KTV點(diǎn)歌系統(tǒng)的系統(tǒng)層次結(jié)構(gòu)圖 圖2-3 KTV點(diǎn)歌系統(tǒng)層次結(jié)構(gòu)圖2.1.4 KTV點(diǎn)歌系統(tǒng)的用例圖 圖2-4 KTV點(diǎn)歌系統(tǒng)用例圖2.2數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū)2.2.1概念結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)連接使用的數(shù)據(jù)庫(kù)是Oracle9i,用的方式是JDBC,因此數(shù)據(jù)庫(kù)設(shè)計(jì)尤為重要;本系統(tǒng)E-R圖如下:圖2-5 歌手表和歌曲表的E-R圖圖2-6 管理員表的E-R圖2.2.2邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)上述E-R模型,我們可以得到該系統(tǒng)的數(shù)據(jù)庫(kù)應(yīng)該包括三個(gè)表,分別是:歌手信息表、歌曲信息表、管理員信息表;下面是這三個(gè)表的詳細(xì)屬性信息(下劃線的是該表的主鍵):歌手信息表:歌手編號(hào)、歌手姓名、歌手地區(qū)、歌手名縮寫(xiě)、歌手圖片存放路徑歌曲信息表:歌曲編號(hào)、歌曲名、演唱歌手、歌曲語(yǔ)言、歌曲名縮寫(xiě)、歌曲風(fēng)格、歌曲存放路徑管理員表:賬戶名、密碼2.2.3 物理結(jié)構(gòu)設(shè)計(jì)一般數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)包括兩個(gè)方面:為關(guān)系模式選擇存取方法和設(shè)計(jì)關(guān)系、索引等數(shù)據(jù)庫(kù)文件的物理存儲(chǔ)結(jié)構(gòu)。本系統(tǒng)沒(méi)有建立任何索引。2.2.4其他數(shù)據(jù)庫(kù)對(duì)象設(shè)計(jì)本系統(tǒng)除使用了數(shù)據(jù)庫(kù)表外,還使用了序列。序列是數(shù)據(jù)庫(kù)對(duì)象之一,用來(lái)產(chǎn)生一系列的唯一整數(shù)。當(dāng)應(yīng)用向一個(gè)表插入一條新紀(jì)錄時(shí),應(yīng)用只要簡(jiǎn)單的使用序列的下一個(gè)可用值作為新行的主鍵即可。序列號(hào)可以用于生產(chǎn)唯一的主碼,本系統(tǒng)創(chuàng)建了兩個(gè)序列分別生成歌手編號(hào)和歌曲編號(hào)作為主鍵。2.3界面設(shè)計(jì)通過(guò)以上的分析,我將這個(gè)系統(tǒng)分為以下10個(gè)模塊,它們分別是登錄模塊、歌曲庫(kù)管理模塊、主操作模塊、分類點(diǎn)歌模塊(拼音點(diǎn)歌模塊、歌手點(diǎn)歌模塊、語(yǔ)別點(diǎn)歌模塊)、已點(diǎn)歌曲模塊、歌曲排行模塊、酒水服務(wù)模塊。2.3.1 登錄模塊從需求規(guī)格說(shuō)明書(shū)中,我們已經(jīng)知道本系統(tǒng)將使用者分為兩類:管理員和消費(fèi)者。而且他們的權(quán)限和使用目的各不相同,故需要為他們?cè)O(shè)計(jì)各自的登錄界面。圖2-7為管理員登錄界面設(shè)計(jì): 圖2-7 管理員登錄界面圖2-8為消費(fèi)者登錄界面設(shè)計(jì): 圖2-8為消費(fèi)者登錄界面2.3.2 歌曲庫(kù)管理模塊管理員需輸入用戶名和密碼,才可登錄歌曲庫(kù)管理界面。登錄后可進(jìn)行【添加歌手】、【添加歌曲】的操作。圖2-9,2-10為歌曲庫(kù)管理界面設(shè)計(jì): 圖2-9 添加歌曲界面 圖2-10 添加歌手界面2.3.3 主操作模塊消費(fèi)者登錄時(shí),可查看【包廂資費(fèi)】并根據(jù)需要選擇包廂類型,之后便可進(jìn)入主操作界面【開(kāi)始唱歌】。圖2-11為主操作界面設(shè)計(jì): 圖2-11 主操作界面2.3.4 分類點(diǎn)歌模塊主操作界面提供四項(xiàng)服務(wù):分類點(diǎn)歌、已點(diǎn)歌曲、歌曲排行、酒水服務(wù)。消費(fèi)者可根據(jù)需要進(jìn)行選擇。圖2-12為分類點(diǎn)歌界面設(shè)計(jì): 圖2-12 主操作界面2.3.5 拼音點(diǎn)歌模塊、歌手點(diǎn)歌模塊、語(yǔ)別點(diǎn)歌模塊【分類點(diǎn)歌】界面包含三種點(diǎn)歌方式:拼音點(diǎn)歌、歌手點(diǎn)歌、語(yǔ)別點(diǎn)歌。消費(fèi)者可根據(jù)不同的點(diǎn)唱方式進(jìn)行歌曲選擇?!酒匆酎c(diǎn)歌】:點(diǎn)擊字母按鈕,輸入想要演唱歌曲的拼音首字母,輸入過(guò)程中系統(tǒng)連接數(shù)據(jù)庫(kù)進(jìn)行實(shí)時(shí)查找,即可列出所有符合要求的歌曲,雙擊歌曲名即可將該歌曲加入已點(diǎn)歌曲清單?!靖枋贮c(diǎn)歌】:點(diǎn)擊字母按鈕,輸入歌手名首字母,系統(tǒng)將列出所有符合要求的歌手名。單擊要選擇的歌手名可查看歌手圖片;雙擊歌手名將列出該歌手所有的演唱歌曲,雙擊歌曲名即可將該歌曲加入已點(diǎn)歌曲清單?!菊Z(yǔ)別點(diǎn)歌】:可通過(guò)選擇語(yǔ)言,系統(tǒng)將列出該語(yǔ)言的所有歌曲,消費(fèi)者便可在其中進(jìn)行歌曲查找。雙擊歌曲名即可將該歌曲加入已點(diǎn)歌曲清單。圖2-13,2-14,2-15為拼音點(diǎn)歌、歌手點(diǎn)歌、語(yǔ)別點(diǎn)歌的界面設(shè)計(jì) 圖2-13 拼音點(diǎn)歌界面 圖2-14 歌手點(diǎn)歌界面 圖2-15 語(yǔ)別點(diǎn)歌界面2.3.6 已點(diǎn)歌曲模塊【已點(diǎn)歌曲】中包含消費(fèi)者所選擇的歌曲,可通過(guò)按鈕控制歌曲的開(kāi)始、停止、播放、暫停、切歌、調(diào)整音量等操作,也可通過(guò)單擊右鍵進(jìn)行歌曲的優(yōu)先、刪除操作;該界面還包含已唱歌曲的清單,可選擇【已唱歌曲】標(biāo)簽查看所有演唱過(guò)的歌曲。圖2-16為已點(diǎn)歌曲界面設(shè)計(jì):圖2-16 已點(diǎn)歌曲界面2.3.7 歌曲排行模塊【歌曲排行】模塊根據(jù)系統(tǒng)中每首歌曲的點(diǎn)唱次數(shù)進(jìn)行排行,消費(fèi)者可查看熱門(mén)點(diǎn)唱歌曲并可選擇其中歌曲直接加入【已點(diǎn)歌曲】。圖2-17為歌曲排行界面設(shè)計(jì):圖2-17 歌曲排行界面2.3.8 酒水服務(wù)模塊【酒水服務(wù)】模塊包含KTV提供的食品和酒水飲料,可選擇購(gòu)買。且可通過(guò)【請(qǐng)求服務(wù)】呼叫服務(wù)員,【收費(fèi)標(biāo)準(zhǔn)】查看包廂收費(fèi),【查看消費(fèi)時(shí)間】查看娛樂(lè)時(shí)間。圖2-18為酒水服務(wù)界面設(shè)計(jì):圖2-18 酒水服務(wù)界面3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3.1 事件跟蹤圖 3.1.1管理員添加歌手、歌曲信息的事件跟蹤圖圖3-1 管理員添加歌手、歌曲信息的事件跟蹤圖3.1.2消費(fèi)者點(diǎn)歌的事件跟蹤圖圖3-2消費(fèi)者點(diǎn)歌的事件跟蹤圖3.2系統(tǒng)類圖圖3-3 KTV點(diǎn)歌系統(tǒng)類圖3.3輸入/輸出數(shù)據(jù)下面用IPO表分別寫(xiě)出對(duì)上述模塊的功能要求進(jìn)行定性和定量的敘述:(輸入數(shù)據(jù)包括選擇的數(shù)據(jù))3.3.1 登錄模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)登錄模塊(管理員)管理員賬號(hào),密碼調(diào)用數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行驗(yàn)證無(wú)登錄模塊(消費(fèi)者)選擇包廂類型系統(tǒng)接收信息并開(kāi)始記錄消費(fèi)時(shí)間無(wú) 表3-1 登陸模塊IPO表3.3.2 歌曲庫(kù)管理模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)歌曲庫(kù)管理(添加歌手)歌手名、歌手地區(qū)、歌手名縮寫(xiě)、圖片存放路徑輸入格式標(biāo)準(zhǔn)驗(yàn)證,添加入數(shù)據(jù)庫(kù)添加成功或失敗提示歌曲庫(kù)管理(添加歌曲)歌曲名、演唱者、歌曲語(yǔ)種、歌曲風(fēng)格、歌曲名縮寫(xiě)、存放路徑輸入格式標(biāo)準(zhǔn)驗(yàn)證,添加入數(shù)據(jù)庫(kù)添加成功或失敗提示 表3-2 歌曲庫(kù)管理模塊IPO表3.3.3 主操作模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)選擇應(yīng)用選擇的應(yīng)用模塊系統(tǒng)響應(yīng)無(wú) 表3-3 主操作模塊IPO表3.3.4 分類點(diǎn)歌模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)拼音點(diǎn)歌模塊歌曲名拼音首字母進(jìn)入數(shù)據(jù)庫(kù)查找所有符合條件的歌曲符合輸入拼音的所有歌曲歌手點(diǎn)歌模塊歌手名拼音首字母進(jìn)入數(shù)據(jù)庫(kù)查找所有符合條件的歌曲符合輸入拼音的所有歌手名語(yǔ)別點(diǎn)歌模塊歌曲語(yǔ)種進(jìn)入數(shù)據(jù)庫(kù)查找所有符合條件的歌曲符合該語(yǔ)種的所有歌曲 表3-4 分類點(diǎn)歌模塊IPO表3.3.5 已點(diǎn)歌曲模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)查看已點(diǎn)歌曲對(duì)已點(diǎn)歌曲的操作系統(tǒng)響應(yīng)無(wú)查看已唱歌曲無(wú)無(wú)無(wú) 表3-5 已點(diǎn)歌曲模塊IPO表3.3.6 歌曲排行模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)查看點(diǎn)唱歌曲排行無(wú)根據(jù)歌曲點(diǎn)唱次數(shù),排列熱門(mén)歌曲歌曲排行榜 表3-6 歌曲排行模塊IPO表3.3.8 酒水服務(wù)模塊模塊操作名稱輸入數(shù)據(jù)處理過(guò)程輸出數(shù)據(jù)查看食品列表無(wú)無(wú)所有食品名稱、價(jià)格查看酒水列表無(wú)無(wú)所有酒水品名、價(jià)格查看消費(fèi)時(shí)間無(wú)計(jì)算使用時(shí)間使用系統(tǒng)時(shí)間 表3-7 酒水服務(wù)模塊IPO表由于本系統(tǒng)為管理系統(tǒng),系統(tǒng)包含類較多,且方便用戶使用為系統(tǒng)設(shè)計(jì)重點(diǎn),因此操作界面設(shè)計(jì)十分重要,3.4 代碼實(shí)現(xiàn)本系統(tǒng)編碼設(shè)計(jì)采用的是Java MVC 設(shè)計(jì)模式。MVC是一種流行的軟件設(shè)計(jì)模式,它把系統(tǒng)分為以下3個(gè)模塊:1、 Model(模型),可以分為業(yè)務(wù)模型和數(shù)據(jù)模型,它們代表應(yīng)用程序的業(yè)務(wù)邏輯和狀態(tài)2、 View(視圖),提供可交互的客戶界面,向客戶顯示模型數(shù)據(jù)3、 Controller(控制器),響應(yīng)客戶的請(qǐng)求,根據(jù)客戶的請(qǐng)求來(lái)操作模型,并把模型的響應(yīng)結(jié)果經(jīng)由視圖展現(xiàn)給客戶以下為KTV點(diǎn)歌系統(tǒng)的代碼實(shí)現(xiàn),由于篇幅有限,只列出編碼大致框架。3.4.1訪問(wèn)數(shù)據(jù)庫(kù)工具類 JDBCTool該系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù)使用的方式是JDBC,為了方便使用,編寫(xiě)一個(gè)類專門(mén)用于訪問(wèn)Oracle數(shù)據(jù)庫(kù),該類的代碼如下:public class JDBCTool staticString driverName = oracle.jdbc.driver.OracleDriver;try Class.forName(driverName); catch (ClassNotFoundException e) e.printStackTrace();public static Connection getConnection() String jdbcString = jdbc:oracle:thin:localhost:1521:ORACLE; String namesString = scott; String passsString = tiger; try return DriverManager.getConnection(jdbcString,namesString,passsString); catch (SQLException e) e.printStackTrace();return null; public static void close(ResultSet resultSet,Statement statement,Connection connection)try resultSet.close();statement.close();connection.close(); catch (SQLException e) e.printStackTrace();3.4.2 Model(模型)包3.4.2.1 歌手類 Playerpublic class Player private String nameString; private String areasString; private String addressString;public Player(String nameString, String areasString, String addressString) /構(gòu)造函數(shù) 初始化歌手對(duì)象/設(shè)置歌手名、歌手地區(qū)、存儲(chǔ)路徑public String getNameString() ./獲得歌手名、歌手地區(qū)、存儲(chǔ)路徑public void setNameString(String nameString) ./返回歌手信息public String toString() return nameString+ +areasString;3.4.2.2 歌曲類 Songpublic class Songprivate String songNameString;private String playerNameString;private String languageString;private String styleString;private String addressString;public Song(String songNameString, String playerNameString, String languageString, String styleString, String addressString)/構(gòu)造函數(shù) 初始化歌曲對(duì)象/獲得歌曲名、演唱者、歌曲語(yǔ)言、歌曲風(fēng)格、存儲(chǔ)路徑的方法public String getSongNameString()./設(shè)置歌曲名、演唱者、歌曲語(yǔ)言、歌曲風(fēng)格、存儲(chǔ)路徑的方法public void setSongNameString(String songNameString)./返回歌曲信息的方法public String toString() return songNameString+ +playerNameString+ +styleString+ +languageString;3.4.3 View(視圖)包3.4.3.1 登錄類 Playerimport tool.JDBCTool;public class Login extends JDialog implements ActionListenerprivate String strings3 = 用戶名, 密碼 ,包廂選擇;private String strings2 = 登錄,開(kāi)始唱歌,收費(fèi)標(biāo)準(zhǔn),退出;private String strings=玲瓏包,小包,中包,大包,商務(wù)包,總統(tǒng)包;private String sqlString = select adm_name,adm_password from ktv_adm;public Login()/登錄界面布局public static void main(String args) /主函數(shù) 創(chuàng)建登錄窗口對(duì)象login = new Login();/添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /響應(yīng)管理員【登錄】按鈕/連接數(shù)據(jù)庫(kù) 驗(yàn)證用戶名、密碼是否正確if (e.getSource() = jButtons1) /響應(yīng)消費(fèi)者【開(kāi)始唱歌】按鈕/進(jìn)入主操作界面if(e.getSource() = jButtons2) /響應(yīng)【包廂收費(fèi)】按鈕 顯示收費(fèi)信息JOptionPane.showMessageDialog(this, 玲瓏包:30/小時(shí)n 小包:50/小時(shí)n 中包:60/小時(shí)n 大包:70/小時(shí)n商務(wù)包:100/小時(shí)n總統(tǒng)包:150/小時(shí));if(e.getSource() = jButtons3) /響應(yīng)【取消】/關(guān)閉登錄窗口3.4.3.2 添加歌手、歌曲類 Addpackage view;public class Add extends JDialog implements ActionListener public Add() /初始化添加界面 界面布局/添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /【添加歌手】 /判斷添加條件是否滿足JOptionPane.showMessageDialog(this, 歌手名不能為空!);.if (條件滿足) /添加入歌曲庫(kù).JOptionPane.showMessageDialog(this, 添加成功!已加入歌手庫(kù));if (e.getSource() = jButtons1) /【添加歌曲】/判斷添加條件是否滿足.if (條件滿足) /添加入歌曲庫(kù).JOptionPane.showMessageDialog(this, 添加成功!已加入歌曲庫(kù));if (e.getSource() = jButtons2) /響應(yīng)添加歌手【瀏覽】 /獲得歌手圖片存放路徑if (e.getSource() = jButtons3) /響應(yīng)添加歌曲【瀏覽】/獲得歌曲存放路徑if (e.getSource() = jButtons4|e.getSource() = jButtons5) /【注銷】/隱藏添加窗口 調(diào)出登錄窗口 public void connJDBC(String sqlString) /傳入查詢語(yǔ)句,連接數(shù)據(jù)庫(kù)查詢 3.4.3.3 主操作界面類 Playpackage view;public class Play extends JFrame implements ActionListenerstatic Date date = new Date(); /開(kāi)始計(jì)時(shí)static ArrayList mainArrayList = new ArrayList();public Play()/初始化主操作界面,界面布局 /響應(yīng)按鈕點(diǎn)擊public void actionPerformed(ActionEvent e) Object eObject = e.getSource();if(eObject = jButtons0) /【分類點(diǎn)歌】/調(diào)出分類點(diǎn)歌子窗口 ;if (eObject = jButtons1) /【已點(diǎn)歌曲】 /調(diào)出已點(diǎn)歌曲子窗口if(eObject = jButtons2) /【歌曲排行】/調(diào)出歌曲排行窗口if(eObject = jButtons3) /【酒水服務(wù)】/調(diào)出酒水服務(wù)子窗口3.4.3.4 分類點(diǎn)歌類 ClassifySearch package view;public class ClassifySearch extends JDialog implements ActionListenerpublic ClassifySearch()/初始化【分類點(diǎn)歌】子窗口;界面布局 /添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e)Object eObject = e.getSource();if(eObject = jButtons0) /【拼音點(diǎn)歌】if (eObject = jButtons1) /【歌星點(diǎn)歌】if(eObject = jButtons2) /【語(yǔ)別點(diǎn)歌】3.4.3.5 拼音點(diǎn)歌類 SongSearch package view;import tool.JDBCTool;public class SongSearch extends JDialog implements ActionListenerprivate String sqlString = select son_name,pla_name,son_lag,son_type ,son_adr from ktv_song where son_short like ;private String sizesql = select count(*) sum from ktv_song where son_short like ;private ArrayList arrayList;public SongSearch() jList.addMouseListener(new MouseAdapter()/添加鼠標(biāo)響應(yīng)事件 雙擊添加歌曲進(jìn)【已選歌曲】);/初始化拼音點(diǎn)歌界面,界面布局 . /添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e)Object eObject = e.getSource();if (eObject = backjButton) /【退格】,回退一格if (eObject = cleanjButton) /【清除】,清除輸入框所有內(nèi)容if (eObject = okjButton) /【返回】,返回主操作界面else /響應(yīng)26個(gè)字母,點(diǎn)擊一次,入庫(kù)查找一次,且顯示在輸入框public void ConnJDBCSong(String string,String string2) throws SQLException/傳入sql語(yǔ)句,入庫(kù)查找3.4.3.6 歌星點(diǎn)歌類 PlayerSearch 、語(yǔ)別點(diǎn)歌類 LanguageSearch 由于歌星點(diǎn)歌和語(yǔ)別點(diǎn)歌的代碼與拼音點(diǎn)歌大致相同,這里就不再贅述。詳情請(qǐng)參照拼音點(diǎn)歌。3.4.3.7 歌曲排行類 Sort package view;public class Sort extends JDialog implements ActionListener/界面布局,初始化foodJList.addMouseListener(new MouseAdapter() /響應(yīng)鼠標(biāo)單擊 彈出菜單 添加歌曲入已選歌曲);/添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0&foodJList.getSelectedIndex() != -1) /判斷是否選中歌曲,然后加入已點(diǎn)歌曲清單if (e.getSource() = jButtons1) /【返回】if (e.getSource() = jMenuItem&foodJList.getSelectedIndex() != -1) /【添加】3.4.3.8 酒水服務(wù)類 Serve package view;public class Serve extends JDialog implements ActionListenerpublic Serve()/初始化界面,界面布局foodJList.addMouseListener(new MouseAdapter() /響應(yīng)鼠標(biāo)單擊 彈出菜單 添加進(jìn)入購(gòu)物清單 /添加按鈕響應(yīng)事件public void actionPerformed(ActionEvent e) if (e.getSource() = jButtons0) /【請(qǐng)求服務(wù)】if (e.getSource() = jButtons1) /【返回】if (e.getSource() = jButtons2) /【查看消費(fèi)時(shí)間】 .JOptionPane.showMessageDialog(this, 開(kāi)始時(shí)間:+s1+n+當(dāng)前時(shí)間:+s2+n+消費(fèi)時(shí)間:+s3);if (e.getSource() = jButtons3) /【查看包廂資費(fèi)】if (e.getSource() = jMenuItem) / 添加入購(gòu)買清單3.4.4 Controller(控制器)包 已點(diǎn)歌曲類 PlayMusicpublic class PlayMusic extends JDialog implements ActionListener,ControllerListenerpublic PlayMusic(ArrayList arrayList ) /界面布局 初始化已點(diǎn)歌曲界面selectJList.addMouseListener(new MouseAdapter() /響應(yīng)鼠標(biāo)單擊 彈出菜單 進(jìn)行歌曲【優(yōu)先】【刪除】);/實(shí)現(xiàn)按鈕監(jiān)聽(tīng)事件public void actionPerformed(ActionEvent e) Song song = new Song();if (e.getSource() = jMenuItems0) /【優(yōu)先】if (e.getSource() = jMenuItems1) /【刪除】if(e.getSource() = jButtons0) /【開(kāi)始唱歌】if (myArrayList.size() = 0) /播放列表空,不能播放if (player != null) /正在播放中,不能響應(yīng)else /取第一首歌播放/加入已播歌曲中/從列表中移除播放歌曲/實(shí)現(xiàn)播放選中歌曲 if (e.getSource() = jButtons1) /【停止】if (e.getSource() = jButtons2) /【播放】if (e.getSource() = jButtons3) /【暫停】if (e.getSource() = jButtons4) /【切歌】if (列表不為空) /播放列表中下首歌if (e.getSource() = jButtons5) /【返回】public void controllerUpdate(ControllerEvent arg0) /調(diào)用使用播放控制條public void play(Song song)/實(shí)現(xiàn)播放的具體功能4 系統(tǒng)測(cè)試本系統(tǒng)將用戶分成管理員和消費(fèi)者,由于兩類用戶的使用目的不同,系統(tǒng)測(cè)試分別對(duì)兩類用戶進(jìn)行測(cè)試,基本功能各測(cè)試一次,最后再進(jìn)行容錯(cuò)性測(cè)試。4.1管理員測(cè)試用例1:登錄模塊測(cè)試測(cè)試數(shù)據(jù):用戶名:maneger;用戶密碼:1;測(cè)試結(jié)果如下: 圖4-1登錄測(cè)試結(jié)果1 圖4-2登錄測(cè)試結(jié)果2測(cè)試用例2:添加歌手模塊測(cè)試測(cè)試數(shù)據(jù):歌手名:justin bieber 歌手地區(qū):英國(guó) 歌手名縮寫(xiě):JB 路徑:F:java測(cè)試songjustin bieber.jpg測(cè)試結(jié)果: 圖4-3 添加歌手測(cè)試結(jié)果1 圖4-4 添加歌手測(cè)試結(jié)果2 圖4-5 添加歌手測(cè)試結(jié)果3 圖4-6 查看添加歌手測(cè)試結(jié)果測(cè)試用例3:添加歌曲模塊測(cè)試測(cè)試數(shù)據(jù):歌曲名:baby 演唱者:justin bieber 歌曲語(yǔ)種:英語(yǔ) 歌曲風(fēng)格:R&B 歌曲名縮寫(xiě):B 路徑:F:java測(cè)試songbaby - justin bieber.mp3測(cè)試結(jié)果: 圖4-7 添加歌曲模塊測(cè)試結(jié)果1 圖4-8 添加歌曲模塊測(cè)試結(jié)果2 圖4-9 查看添加歌曲測(cè)試結(jié)果4.2 消費(fèi)者測(cè)試用例1:消費(fèi)者包廂選擇測(cè)試結(jié)果: 圖4-10 包廂選擇測(cè)試結(jié)果測(cè)試用例2: 拼音點(diǎn)歌查找歌曲測(cè)試數(shù)據(jù):BCBYHQ(不潮不用花錢(qián))測(cè)試結(jié)果: 圖4-11 拼音點(diǎn)歌模塊測(cè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCS 039-2023煤炭聯(lián)運(yùn)集裝箱智能定量裝載系統(tǒng)技術(shù)條件
- T/GXAS 831-2024慢性穩(wěn)定性心力衰竭增強(qiáng)型體外反搏治療操作技術(shù)規(guī)范
- T/CMES 37007-2024陸上載人演藝巡游設(shè)備安全規(guī)范
- T/CPFIA 0005-2022含聚合態(tài)磷復(fù)合肥料
- T/SHDPA 001-2022產(chǎn)業(yè)園區(qū)專業(yè)服務(wù)體系建設(shè)規(guī)范
- 個(gè)人設(shè)備維修標(biāo)準(zhǔn)合同7篇
- 上海安全員證報(bào)名題庫(kù)及答案
- 代理人房屋出租合同3篇
- 耳朵常見(jiàn)疾病診療與防護(hù)
- 渠道設(shè)計(jì)流程七步法
- 2025年監(jiān)理工程師考試《建設(shè)工程監(jiān)理基本理論與相關(guān)法規(guī)》真題及答案
- 小學(xué)道德與法制教學(xué)中“責(zé)任擔(dān)當(dāng)”核心素養(yǎng)的培養(yǎng)
- (二模)石家莊市2025屆高三教學(xué)質(zhì)量檢測(cè)(二)英語(yǔ)試卷(含標(biāo)準(zhǔn)答案)
- 2025屆江蘇省南師附中高考數(shù)學(xué)考前最后一卷預(yù)測(cè)卷含解析
- AI在知識(shí)庫(kù)領(lǐng)域的應(yīng)用
- 車輛技術(shù)檔案
- DZ/T 0430-2023 固體礦產(chǎn)資源儲(chǔ)量核實(shí)報(bào)告編寫(xiě)規(guī)范(正式版)
- T∕CAME 27-2021 醫(yī)院物流傳輸系統(tǒng)設(shè)計(jì)與施工規(guī)范
- 師德師風(fēng)年度考核表
- 健康險(xiǎn)產(chǎn)說(shuō)會(huì)課件
- 2022年大學(xué)英語(yǔ)四級(jí)真題模擬試卷及答案
評(píng)論
0/150
提交評(píng)論