![書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view12/M03/10/28/wKhkGWXnMEWAc4BNAAEFNdAWKNY662.jpg)
![書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view12/M03/10/28/wKhkGWXnMEWAc4BNAAEFNdAWKNY6622.jpg)
![書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view12/M03/10/28/wKhkGWXnMEWAc4BNAAEFNdAWKNY6623.jpg)
![書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view12/M03/10/28/wKhkGWXnMEWAc4BNAAEFNdAWKNY6624.jpg)
![書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view12/M03/10/28/wKhkGWXnMEWAc4BNAAEFNdAWKNY6625.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
書(shū)店管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——書(shū)籍銷(xiāo)售管理模塊學(xué)生姓名:指導(dǎo)老師:摘要本課程設(shè)計(jì)主要解決書(shū)店的管理問(wèn)題,設(shè)計(jì)開(kāi)發(fā)一個(gè)簡(jiǎn)單的書(shū)店管理系統(tǒng),實(shí)現(xiàn)分類(lèi)登陸,書(shū)籍管理,倉(cāng)庫(kù)庫(kù)存管理,會(huì)員管理以及各種查詢(xún)等功能。在課程設(shè)計(jì)中,系統(tǒng)開(kāi)發(fā)平臺(tái)為Windows7,程序設(shè)計(jì)語(yǔ)言采用Java,數(shù)據(jù)庫(kù)采用OracleDatabase11gExpressEdition,程序運(yùn)行平臺(tái)為Windows7。程序通過(guò)調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),并且經(jīng)過(guò)適當(dāng)完善后,將可以應(yīng)用在普通書(shū)店的管理中,解決實(shí)際問(wèn)題。關(guān)鍵詞書(shū)店管理系統(tǒng);數(shù)據(jù)庫(kù);Java目錄TOC\o"1-2"\u1引言 1課題背景 1課程設(shè)計(jì)目的 1課程設(shè)計(jì)任務(wù) 22系統(tǒng)結(jié)構(gòu)分析 3需求分析 3功能模塊圖 43系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì) 6概念結(jié)構(gòu)設(shè)計(jì) 6邏輯結(jié)構(gòu)設(shè)計(jì) 7數(shù)據(jù)庫(kù)表的建立 84系統(tǒng)實(shí)現(xiàn) 9數(shù)據(jù)庫(kù)的連接 9系統(tǒng)功能模塊設(shè)置 105系統(tǒng)測(cè)試方案和測(cè)試報(bào)告 12測(cè)試方案 12測(cè)試過(guò)程 126結(jié)束語(yǔ) 17參考文獻(xiàn) 18附錄:部分程序代碼 191引言課題背景隨著科學(xué)技術(shù)的不斷發(fā)展,電子技術(shù)悄無(wú)聲息地走進(jìn)了我們生活的各個(gè)角落,無(wú)時(shí)無(wú)刻的不在影響和改善著我們生活的各個(gè)方面。同時(shí),越來(lái)越多的人開(kāi)始意識(shí)到計(jì)算機(jī)技術(shù)在日常生活中所起到的重大作用。如今,隨著書(shū)店規(guī)模的不斷擴(kuò)大,書(shū)籍種類(lèi)和數(shù)量的不斷增加,使得人工管理模式的局限性越發(fā)突出。因此,利用計(jì)算機(jī)技術(shù)來(lái)優(yōu)化書(shū)店管理具有重大的實(shí)際意義。計(jì)算機(jī)信息管理技術(shù)的應(yīng)用,除了能在相當(dāng)大的程度上代替人工作業(yè),從而減少人員工作量,減輕工作負(fù)擔(dān),減少工作中因人為原因而產(chǎn)生的錯(cuò)誤從而避免不必要的損失外,更重要的是能建立準(zhǔn)確暢通、簡(jiǎn)便的信息流通渠道,為工作提供所需要的準(zhǔn)確、及時(shí)的信息以幫助做出正確而及時(shí)的選擇與決定,從而給采用這門(mén)技術(shù)的單位帶來(lái)了巨大的可見(jiàn)或不可見(jiàn)的利益與效益。課程設(shè)計(jì)目的一個(gè)業(yè)績(jī)好的書(shū)店每天都會(huì)銷(xiāo)售出大量書(shū)籍,使用書(shū)店信息管理系統(tǒng)可以大大提高工作效率,減少工作中不必要的失誤。與此同時(shí),通過(guò)書(shū)店管理系統(tǒng),我們可以知曉書(shū)籍的銷(xiāo)售情況,從而進(jìn)一步總結(jié)出哪些書(shū)籍最為暢銷(xiāo),而哪些書(shū)籍鮮有人問(wèn)津,通過(guò)對(duì)銷(xiāo)售狀況的總結(jié),我們就能夠知道需要大量購(gòu)進(jìn)哪些書(shū)籍,以便獲得更大的經(jīng)濟(jì)效益。而且,通過(guò)書(shū)店管理系統(tǒng),我們可以對(duì)一些常來(lái)書(shū)店購(gòu)書(shū)的客戶(hù)實(shí)行適當(dāng)?shù)臅?huì)員優(yōu)惠,以留住一部分客戶(hù)群體進(jìn)行長(zhǎng)期的合作,這樣書(shū)店就能獲取相當(dāng)可觀的經(jīng)濟(jì)效益。本論文旨在論述書(shū)店管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。通過(guò)書(shū)店管理系統(tǒng)的設(shè)計(jì),熟練掌握J(rèn)ava、OracleDatabase10gExpressEdition等工具軟件,系統(tǒng)地掌握需求分析、數(shù)據(jù)庫(kù)設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)試等軟件開(kāi)發(fā)的流程,提高自身分析問(wèn)題、解決問(wèn)題的能力。課程設(shè)計(jì)任務(wù)本課程設(shè)計(jì)任務(wù)是通過(guò)開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)書(shū)店管理系統(tǒng),學(xué)習(xí)數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā),采用JAVA和OracleDatabase11gExpressEdition等軟件為開(kāi)發(fā)工具。通過(guò)對(duì)計(jì)算機(jī)硬件和軟件解決方案的論證,對(duì)應(yīng)用領(lǐng)域進(jìn)行調(diào)查分析,參考各種資料和進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)踐。在指導(dǎo)老師的幫助下,已經(jīng)基本上成功地實(shí)現(xiàn)了設(shè)計(jì)任務(wù)書(shū)的要求,使得設(shè)計(jì)的數(shù)據(jù)庫(kù)系統(tǒng)能夠?qū)崿F(xiàn)一般數(shù)據(jù)庫(kù)的管理。2系統(tǒng)結(jié)構(gòu)分析需求分析書(shū)店管理系統(tǒng)是適應(yīng)時(shí)代發(fā)展的需要,提高管理的效率而開(kāi)發(fā)設(shè)計(jì)的。通過(guò)對(duì)信息的收集、存儲(chǔ)、傳遞、統(tǒng)計(jì)、分析、綜合查詢(xún)、報(bào)表輸出和信息共享,及時(shí)為書(shū)店管理人員提供全面、準(zhǔn)確的各種數(shù)據(jù)。實(shí)現(xiàn)了書(shū)店管理的簡(jiǎn)單化和規(guī)劃化,提高了書(shū)店的工作效率,從而使書(shū)店能夠以少的投入獲得更好的社會(huì)效益與經(jīng)濟(jì)效益。經(jīng)過(guò)綜合分析,確定了書(shū)店管理系統(tǒng)的主要包括以下功能:(1).書(shū)籍信息管理功能系統(tǒng)設(shè)置包括書(shū)籍編號(hào)設(shè)置、書(shū)籍名稱(chēng)設(shè)置、書(shū)籍作者設(shè)置、出版社設(shè)置、書(shū)籍進(jìn)價(jià)、書(shū)籍售價(jià)和書(shū)籍?dāng)?shù)量?;拘畔⒐芾砟K可以實(shí)現(xiàn)添加和重置書(shū)籍信息功能:。(2).會(huì)員信息管理功能系統(tǒng)設(shè)置包括會(huì)員編號(hào)設(shè)置、會(huì)員姓名設(shè)置、會(huì)員等級(jí)設(shè)置、會(huì)員折扣設(shè)置和會(huì)員累計(jì)消費(fèi)?;拘畔⒐芾砟K可以實(shí)現(xiàn)查詢(xún)和刪除會(huì)員信息功能。(3).賬單信息管理功能系統(tǒng)設(shè)置包括會(huì)員姓名設(shè)置和當(dāng)前消費(fèi)金額設(shè)置。通過(guò)此模塊能基本實(shí)現(xiàn)修改會(huì)員信息功能。功能模塊圖根據(jù)上述的功能,可以設(shè)計(jì)出系統(tǒng)的總體功能模塊,如圖所示。會(huì)員信息管理會(huì)員信息管理書(shū)店管理系統(tǒng)賬單信息管理書(shū)籍信息管理圖書(shū)店管理系統(tǒng)功能模塊示意圖2.“書(shū)籍信息管理”功能模塊用于書(shū)籍編號(hào)設(shè)置、書(shū)籍名稱(chēng)設(shè)置、書(shū)籍作者設(shè)置、出版社設(shè)置、書(shū)籍進(jìn)價(jià)、書(shū)籍售價(jià)和書(shū)籍?dāng)?shù)量,其功能模塊如圖所示。書(shū)籍書(shū)籍信息管理書(shū)籍編號(hào)管理書(shū)籍?dāng)?shù)量管理出版社管理書(shū)籍進(jìn)價(jià)管理書(shū)籍名稱(chēng)管理書(shū)籍作者管理書(shū)籍售價(jià)管理圖書(shū)籍管理信息設(shè)置“會(huì)員信息管理”功能模塊用于會(huì)員編號(hào)設(shè)置、會(huì)員姓名設(shè)置、會(huì)員等級(jí)設(shè)置、會(huì)員折扣設(shè)置和累計(jì)消費(fèi)設(shè)置,其功能模塊如圖所示。會(huì)員會(huì)員信息設(shè)置會(huì)員編號(hào)管理會(huì)員等級(jí)管理會(huì)員折扣管理會(huì)員姓名管理累計(jì)消費(fèi)管理圖會(huì)員信息管理“賬單信息管理”功能模塊用于會(huì)員姓名設(shè)置和當(dāng)前消費(fèi)金額設(shè)置,其功能模塊如圖所示。會(huì)員姓名管理會(huì)員姓名管理當(dāng)前消費(fèi)金額管理賬單信息管理圖賬單信息管理3系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)根據(jù)需求分析抽象出信息結(jié)構(gòu),可得該系統(tǒng)的E-R圖。(1)書(shū)籍管理E-R圖,如圖所示。售價(jià)售價(jià)進(jìn)價(jià)出版社作者名稱(chēng)編號(hào)書(shū)籍?dāng)?shù)量圖書(shū)籍管理E-R圖(2)會(huì)員管理E-R圖,如圖所示。會(huì)員會(huì)員姓名等級(jí)折扣編號(hào)消費(fèi)圖會(huì)員管理E-R圖(3)賬單管理E-R圖,如圖所示。當(dāng)前消費(fèi)當(dāng)前消費(fèi)賬單會(huì)員姓名圖賬單管理E-R圖邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)上述的概念結(jié)構(gòu)設(shè)計(jì)出邏輯結(jié)構(gòu),將E-R圖轉(zhuǎn)換為關(guān)系模型。數(shù)據(jù)庫(kù)Book包含以下5個(gè)表:書(shū)籍信息表book、會(huì)員信息表member、賬單信息表bill。(1)書(shū)籍信息表book訂單信息表book用來(lái)保存書(shū)籍編號(hào)、書(shū)籍名稱(chēng)、書(shū)籍作者、書(shū)籍出版社、書(shū)籍進(jìn)價(jià)、書(shū)籍售價(jià)和數(shù)量等信息。表book的結(jié)構(gòu)如表3-1所示。表3-1表book的結(jié)構(gòu)編號(hào)字段名稱(chēng)數(shù)據(jù)結(jié)構(gòu)說(shuō)明1Book_idVarchar2(10)記錄書(shū)籍編號(hào)2Book_nameVarchar2(20)記錄書(shū)籍名稱(chēng)3Book_authorVarchar2(20)記錄書(shū)籍作者4Book_pressVarchar2(20)記錄出版社5Book_sale_priceNumber(10)記錄書(shū)籍售價(jià)6Book_purchase_priceNumber(10)記錄書(shū)籍進(jìn)價(jià)7Book_amountNumber(10)記錄書(shū)籍庫(kù)存數(shù)量通過(guò)對(duì)上面表的分析,查找等操作,所有模式都符合3NF。前面是通過(guò)前臺(tái)來(lái)實(shí)現(xiàn)系統(tǒng)安全性的,我們也可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行身份驗(yàn)證,可以從服務(wù)器角度建一個(gè)登錄名,使得不同的服務(wù)器角色擁有不同的權(quán)限,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的不同權(quán)限的管理,以此來(lái)增強(qiáng)書(shū)店管理系統(tǒng)的安全性。數(shù)據(jù)庫(kù)表的建立在設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)之前,首先要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫(kù)。本系統(tǒng)使用的數(shù)據(jù)庫(kù)為Book。可以在企業(yè)管理器中創(chuàng)建數(shù)據(jù)庫(kù),也可以在查詢(xún)分析器中執(zhí)行以下Transact—SQl語(yǔ)句:創(chuàng)建表BookCREATETABLEBOOK( BOOK_IDNUMBER(10), BOOK_NAMEVARCHAR2(20), BOOK_AUTHORVARCHAR2(20), BOOK_PRESSVARCHAR2(20), BOOK_SALE_PRICENUMBER(10), BOOK_AMOUNTNUMBER(10), BOOK_PURCHASE_PRICENUMBER(10))創(chuàng)建表BookidCREATETABLEBOOKID( BOOK_IDNUMBER(10))創(chuàng)建表memberCREATETABLEMEMBER( MEMBER_IDNUMBER(10)NOTNULLENABLE, MEMBER_NAMEVARCHAR2(20)NOTNULLENABLE, MEMBER_LEVELNUMBER(20)NOTNULLENABLE, MEMBER_REBATEFLOAT(2)DEFAULTNOTNULLENABLE, MEMBER_CONSUMPTIONFLOAT(126)NOTNULLENABLE)創(chuàng)建表billCREATETABLEBILL( MEMBER_NAMEVARCHAR2(10), MONEYNUMBER(10))4系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接在該系統(tǒng)中使用的數(shù)據(jù)庫(kù)是OracleDatabase11gExpressEdition??蛻?hù)端采用的是PL/SQLDeveloper。Java運(yùn)行環(huán)境為EclipseIndigo。在安裝好了軟件之后,數(shù)據(jù)庫(kù)的連接設(shè)置在Eclipse里的Properties功能鍵中。如圖所示圖數(shù)據(jù)庫(kù)連接在JavaBuildPath中的Libraries中,運(yùn)行AddExternalJARs…找到并添加,則此時(shí)已將數(shù)據(jù)庫(kù)和Java程序成功連接。系統(tǒng)功能模塊設(shè)置(1)設(shè)計(jì)書(shū)籍銷(xiāo)售管理界面書(shū)籍銷(xiāo)售管理界面可以用來(lái)查詢(xún)書(shū)籍、將選定書(shū)籍加入購(gòu)買(mǎi)目錄和賬單結(jié)算。創(chuàng)建一個(gè)選項(xiàng)卡面板,將其命名為OprationInfoPanel。選項(xiàng)卡面板的布局如圖所示。圖面板OprationInfoPanel的布局面板啟動(dòng),當(dāng)你點(diǎn)擊查找功能鍵時(shí),則會(huì)出現(xiàn)要查詢(xún)的書(shū)籍信息,此時(shí)你可以實(shí)現(xiàn)將選定書(shū)籍加入購(gòu)買(mǎi)目錄。當(dāng)用戶(hù)單擊“查詢(xún)”按鈕時(shí),將執(zhí)行findDao(StringbookName)函數(shù),通過(guò)模糊查詢(xún)檢索出相關(guān)書(shū)籍信息;當(dāng)用戶(hù)單擊“加入購(gòu)買(mǎi)目錄”按鈕時(shí),將執(zhí)行addShoppingCart(intbookId)函數(shù),系統(tǒng)將會(huì)自動(dòng)加選定書(shū)籍添加到購(gòu)買(mǎi)目錄中并在顯示出來(lái);當(dāng)用戶(hù)單擊“賬單結(jié)算”按鈕時(shí),將執(zhí)行newBillDialog(floatmoney),彈出賬單結(jié)算對(duì)話(huà)框。(2)設(shè)計(jì)賬單結(jié)算管理對(duì)話(huà)框賬單結(jié)算管理對(duì)話(huà)框可以用來(lái)結(jié)算賬單信息。添加一個(gè)對(duì)話(huà)框,將其命名為BillDialog。對(duì)話(huà)框的布局如圖所示。圖對(duì)話(huà)框BillDialog的布局對(duì)話(huà)框啟動(dòng),輸入相關(guān)信息,當(dāng)你點(diǎn)擊“確認(rèn)賬單”時(shí),將執(zhí)行confirmBillDao(StringmemberName)函數(shù),則會(huì)顯示根據(jù)數(shù)據(jù)庫(kù)所計(jì)算出客戶(hù)所需支付金額,當(dāng)點(diǎn)擊“提交賬單”時(shí),將執(zhí)行submitOrdersDao(OrderVovo)函數(shù),系統(tǒng)自動(dòng)將本次交易的金額存入會(huì)員信息中,以便會(huì)員升級(jí)和下次調(diào)用會(huì)員信息。5系統(tǒng)測(cè)試方案和測(cè)試報(bào)告測(cè)試方案由于系統(tǒng)規(guī)模較小,所以沒(méi)有安排單獨(dú)的白盒測(cè)試,而是相應(yīng)地將這部分測(cè)試歸并到系統(tǒng)編碼過(guò)程中。整個(gè)測(cè)試過(guò)程基于自頂向下測(cè)試的組裝模塊的方法,先對(duì)主模塊進(jìn)行基本測(cè)試,然后在按深度優(yōu)先策略逐一將子模塊組裝到主模塊上進(jìn)行測(cè)試,最后再對(duì)系統(tǒng)進(jìn)行全面的整體測(cè)試。測(cè)試過(guò)程(1)書(shū)籍銷(xiāo)售管理主界面測(cè)試運(yùn)行程序,登錄成功后進(jìn)入書(shū)籍銷(xiāo)售管理界面,如圖所示:圖書(shū)籍銷(xiāo)售管理界面(2)書(shū)籍查詢(xún)功能測(cè)試輸入書(shū)籍名稱(chēng)可查詢(xún)到自己想要的書(shū)籍信息,本查詢(xún)?yōu)槟:樵?xún),會(huì)顯示包含所輸入字符所有書(shū)籍,如圖所示:圖模糊查詢(xún)顯示出的書(shū)籍分五本為一頁(yè),通過(guò)點(diǎn)擊“上頁(yè)”和“下頁(yè)”按鈕可以查詢(xún)其他頁(yè)碼的書(shū)籍,如圖和所示:圖分頁(yè)顯示查詢(xún)結(jié)果(a)圖分頁(yè)顯示查詢(xún)結(jié)果(b)(3)選擇書(shū)籍并加入購(gòu)買(mǎi)目錄功能測(cè)試選擇查詢(xún)出的一條數(shù)據(jù),并單擊加入購(gòu)物車(chē)按鈕,將自動(dòng)把選中書(shū)籍添加到購(gòu)買(mǎi)目錄中,如圖所示:圖添加書(shū)籍至購(gòu)買(mǎi)目錄(4)訂單管理功能測(cè)試移除書(shū)籍:選定購(gòu)買(mǎi)目錄中的一本書(shū),點(diǎn)擊“移除”按鈕,將自動(dòng)把所選書(shū)籍從購(gòu)買(mǎi)目錄中移除,如圖所示:圖移除書(shū)籍賬單結(jié)算:點(diǎn)擊“賬單結(jié)算”,按鈕,將自動(dòng)彈出一個(gè)賬單結(jié)算窗口,“訂單查詢(xún)”,如圖所示:圖賬單結(jié)算界面輸入會(huì)員名稱(chēng)和實(shí)付金額,點(diǎn)擊確認(rèn)賬單,將自動(dòng)計(jì)算根據(jù)會(huì)員折扣后所需找零金額,如圖所示:圖賬單結(jié)算功能點(diǎn)擊“提交賬單”,將提示賬單提交成功,將會(huì)吧數(shù)據(jù)傳到數(shù)據(jù)庫(kù),并對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行處理,如圖所示:圖提交賬單6結(jié)束語(yǔ)本系統(tǒng)完成了一個(gè)書(shū)店管理系統(tǒng)的基本功能,包括書(shū)籍銷(xiāo)售管理、庫(kù)存管理、會(huì)員管理等。我們小組將該系統(tǒng)分為三大模塊,分別由三位小組成員負(fù)責(zé),最后再一起匯總,經(jīng)過(guò)不斷的調(diào)試,所有功能經(jīng)過(guò)測(cè)試均能夠正確運(yùn)行,操作簡(jiǎn)便,界面友好。通過(guò)小組合作完成本次課程設(shè)計(jì),我對(duì)數(shù)據(jù)庫(kù)這門(mén)課程有了更加深刻的理解,同時(shí)也能熟練的運(yùn)用eclipse來(lái)編寫(xiě)較為簡(jiǎn)單的java程序,并且也使得自己在對(duì)系統(tǒng)數(shù)據(jù)庫(kù)的分析、設(shè)計(jì)有更深刻的了解。我們?cè)诟髯跃帉?xiě)程序中遇到了很多問(wèn)題,通過(guò)查閱相關(guān)資料,問(wèn)題得到了解決,同時(shí)也學(xué)到了一定的java編程知識(shí)。另外,通過(guò)運(yùn)用JDBC數(shù)據(jù)庫(kù)連接技術(shù),我對(duì)java數(shù)據(jù)庫(kù)編程技術(shù)也有了一定的了解和認(rèn)識(shí),希望通過(guò)以后的學(xué)習(xí)繼續(xù)加深這方面知識(shí)的掌握。參考文獻(xiàn)[1]王汝傳.計(jì)算機(jī)圖形學(xué)[M].北京:人民郵電出版社,1999:123-130.[2]劉榴娣,劉明奇,黨長(zhǎng)民.實(shí)用數(shù)字圖像處理[M].北京:北京理工大學(xué)出版,2000:12-25..[3]李彥,韓光林,李玉波.SQLSERVE完全自學(xué)手冊(cè)[M].北京:電子工業(yè)出版社,2007[4]薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論.北京:高等教育出版社.2005附錄:部分程序代碼oString()),(row,1).toString(),(row,2).toString(),(row,3).toString(),(row,4) .toString())); } returnvo; } @SuppressWarnings("rawtypes") publicvoidsetModel(VectorrowData){ (rowData,title); } @SuppressWarnings("rawtypes") publicvoidsetModel1(VectorrowData){ (rowData,title1); } publicintgetBookId(){ intbookId=0; row=(); bookId=(row,0).toString()); returnbookId; } publicintgetCartBookId(){ intbookId=0; cartRow=(); bookId=(cartRow,0).toString()); returnbookId; } publicPageVogetPageVo(){ if(pageVo==null){ pageVo=newPageVo(); } returnpageVo; } publicvoidsetPageText(Stringpage){ (page); } publicvoidremoveRow(){ cartRow=(); (cartRow); }}/*按鈕事件監(jiān)聽(tīng)*/packageclassOprationInfoPanelActionimplementsActionListener{ privateOprationInfoPanelpanel; publicOprationInfoPanelAction(OprationInfoPanelpanel){ =panel; } @SuppressWarnings({"rawtypes"}) @Ocerride publicvoidactionPerformed(ActionEvente){ StringbutName=(); BookDaodao=newBookDao(); PageDaopageDao=newPageDao(); if("查詢(xún)")){ VectorrowData=newVector(); rowData=()); ().changePageVo(1,1,5); (1)); (rowData); }elseif("加入購(gòu)買(mǎi)目錄")){ VectorrowData; rowData=()); (rowData); }elseif("刷新")){ VectorrowData1; rowData1=(); (rowData1); }elseif("移除")){ booleanflag; flag=()); if(flag){ (); (null,"移除成功?。?!","移除成功",; } }elseif("賬單結(jié)算")){ inti=(null,"是否結(jié)算","賬單結(jié)算", ; if(i==0){ newBillDialog()); } }else{ VectorrowData=(butName,(),());(Integer .toString().getStartLine()/5+1)); (rowData); } }}/*數(shù)據(jù)庫(kù)操作代碼*/@SuppressWarnings({"rawtypes","unchecked"}) publicVectorfindDao(StringbookName){ VectorrowData=newVector(); try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Stringsql="select*from(selecte.*,rownumnumfrombookewherelike'%" +bookName+"%')awherebetween1and5"; Statementst=(); ResultSetrs=(sql); while()){ Vectorrow=newVector(); ("book_id")); ("book_name")); ("book_author")); ("book_press")); ("book_sale_price")); (row); } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnrowData; }@SuppressWarnings({"unchecked","rawtypes"}) publicVectorrefreshCart(){ VectorrowData=newVector(); try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql="select*frombook,bookIdwhere="; ResultSetrs=(sql); while()){ Vectorrow=newVector(); ("book_id")); ("book_name")); ("book_author")); ("book_press")); ("book_sale_price")); (1); (row); } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnrowData; }@SuppressWarnings({"rawtypes","unchecked"}) publicVectoraddShoppingCart(intbookId){ VectorrowData=newVector(); try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql1="insertintobookIdvalues("+bookId+")"; (sql1); Stringsql="select*frombook,bookIdwhere="; ResultSetrs=(sql); while()){ Vectorrow=newVector(); ("book_id")); ("book_name")); ("book_author")); ("book_press")); ("book_sale_price")); (1); (row); } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnrowData; }publicbooleandelBookInfo(intbookId){ booleanflag=false; try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql="deletebookIdwherebook_id='"+bookId+"'"; intrs=(sql); if(rs>0){ flag=true; } }catch(ClassNotFoundExceptione1){ (); }catch(SQLExceptione1){ (); } returnflag; }publicfloatcartInfoDao(){ floatmoney=0; try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql="selectcount(*)asbookIdAmountfrombookId"; ResultSetrs=(sql); while()){ Stringsql1="select*frombook,bookIdwhere="; ResultSetrs1=(sql1); while()){ money=money+("book_sale_price"); } } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnmoney; }publicfloatconfirmBillDao(StringmemberName){ floatrebate=0; try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql="select*frommemberwheremember_name='"+memberName+"'"; ResultSetrs=(sql); while()){ rebate=("member_rebate"); } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnrebate; }publicbooleansubmitOrdersDao(OrderVovo){ booleanflag=false; try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql2="select*frommemberwheremember_name='" +()+"'"; ResultSetrs1=(sql2); floatmember_consumption=(); while()){ member_consumption=("member_consumption") +(); } Stringsql1="updatemembersetmember_consumption=" +member_consumption+"wheremember_name='" +()+"'"; (sql1); Stringsql="insertintobillvalues('"+() +"',"+()+")"; intrs=(sql); if(rs>0){ flag=true; } }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } returnflag; } publicvoiddelCartDao(){ try{ (""); Connectioncon=( ":1521:orcl","scott","tiger"); Statementst=(); Stringsql="deletebookId"; (sql); }catch(ClassNotFoundExceptione){ (); }catch(SQLExceptione){ (); } }/*分頁(yè)代碼*/packageclassPageDao{ privateintline=0; privateintpage=0; @SuppressWarnings({"unchecked","rawtypes"}) publicVectorbookPageDao(StringbutName,StringbookName,PageVovo){ VectorrowData=newVector(); intstartLine=(); intendLine=(); try{ (""); Connectioncon=DriverManager .getConnection(":1521:orcl", "scott","tiger"); Statementst=(); Stringsql1="selectcount(*)frombookwherebook_namelike'%" +bookName+"%'"; ResultSetrs1=(sql1); while()){ line=("count(*)"); } if(line%5!=0){ page=line/5+1; }else{ page=line/5; } if("首頁(yè)".equals(butName)){ startLine=1; endLine=5; }elseif("上頁(yè)".equals(butName)){ startLine=startLine-5; endLine=endLine-5; }elseif("下頁(yè)".equals(butName)){ startLine=startLine+5; endLine=endLine+5; }elseif("末頁(yè)".equals(butName)){ startLine=(1)*5+1; endLine=startLine+4; } if(startLine<1){ startLine=1; endLine=5; } if(endLine>=line){ startLine=(1)*5+1; endLine=startLine+4; } (page,startLine,endLine); Stringsql="select*from(selecte.*,rownumnumfrombookewherelike'%"+bookName+"%')awherebetween" +startLine+"and"+endLine; ResultSetrs=(sql); while()){ Vectorrow=newVector(); ("book_id")); ("book_name")); ("book_author")); ("book_press")); ("book_sale_price")); ("book_purchase_price")); ("book_amount")); (row); } }catch(ClassNotFoundExceptione1){ (); }catch(SQLExceptione1){ (); } returnrowData; }/*賬單結(jié)算界面*/packageclassBillDialogextendsJDialog{ privatestaticfinallongserialVersionUID=1L; privatefloatmoney; privateJLabelmemberNameLabel=newJLabel("會(huì)員姓名:"); privateJTextFieldmemberNameText=newJTextField(); privateJLabelbookAmountLabel=newJLabel("書(shū)籍?dāng)?shù)量:"); privateJTextFieldbookAmountText=newJTextField(); privateJLabelamountPayableLabel=newJLabel("應(yīng)付金額:"); privateJTextFieldamountPayText=newJTextField(); privateJLabeldiscountLabel=newJLabel("會(huì)員折扣:"); privateJTextFielddiscountText=newJTextField(); privateJLabeldiscountAmountLabel=newJLabel("折后金額:"); privateJTextFielddiscountAmountText=newJTextField(); privateJLabelactualPaymentsLabel=newJLabel("實(shí)付金額:"); privateJTextFieldactualPaymentsText=newJTextField(); privateJLabelchangeLabel=newJLabel("找零金額:"); privateJTextFieldchangeText=newJTextField(); privateBillAcitonaction=newBillAciton(this); publicBillDialog(floatmoney){ =money; init(); } privatevoidinit(){ (); ("賬單結(jié)算"); (450,450); (null); ; (true); (false); } privatevoidsetPanel(){ (null); (memberNameLabel); (120,25,80,30); (memberNameText); (180,25,80,30); (bookAmountLabel); (120,65,80,30); (bookAmountText); (180,65,80,30); (amountPayableLabel); (120,105,80,30); (amountPayText); (180,105,80,30); (money)); (false); (discountLabel); (120,145,80,30); (discountText); (180,145,80,30); (false); (discountAmountLabel); (120,185,80,30); (discountAmountText); (180,185,80,30); (false); (actualPaymentsLabel); (120,225,80,30); (actualPaymentsText); (180,225,80,30); (changeLabel); (120,265,80,30); (changeText); (180,265,80,30); (false); JButtonbut=createBut("確認(rèn)賬單"); (but); (140,305,100,30); JButtonbut1=createBut("提交賬單"); (but1); (140,345,100,30); } privateJButtoncreateBut(StringbutName){ JButtonbut=newJButton(butName); (action); returnbut; } publicStringgetMemberName(){ return(); } publicvoidsetPayment(floatrebate){ (rebate)); (money*rebate)); ())-money*rebate)); } publicStringgetActualPaymentsText(){ return(); } publicvoidsetActualPaymentsText(inti){ (i)); } publicOrderVosetOrderVo(){ OrderVovo=newOrderVo(), ())); returnvo; }}/*賬單事件監(jiān)聽(tīng)*/packageclassBillAcitonimplementsActionListener{ privateBillDialogpanel; publicBillAciton(BillDialogpanel){ =panel; } @OverridepublicvoidactionPerformed(ActionEvente){ StringbutName=(); BookDaodao=newBookDao(); JTextFieldtext=newJTextField(); floatrebate; if("確認(rèn)賬單")){ if().equals())){ (0); } if().equals())){ rebate=1; }else{ rebate=()); if(rebate==0){ (null,"未找到對(duì)應(yīng)會(huì)員?。?!", "會(huì)員匹配失敗",; } } (rebate); }elseif("提交賬單")){ booleanflag=()); if(flag){ (); (null,"賬單提交成功!??!", "提交成功",; (); } } }}/*書(shū)籍信息VO*/packageclassBookVo{ privateintbook_id; privateStringbook_name; privateStringbook_author; privateStringbook_press; privateintbook_sale_price; privateintbook_amount; privateintbook_purchase_price; publicBookVo(intbook_id,Stringbook_name,Stringbook_author, Stringbook_press,intbook_sale_price,intbook_purchase_price,intbook_amount){ super(); =book_id; =book_name; =book_a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)部年終報(bào)告開(kāi)創(chuàng)新局面引領(lǐng)新風(fēng)尚
- 手工藝行業(yè)衛(wèi)生衛(wèi)生控制
- 2025-2030全球電子后視鏡系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球聯(lián)合收割機(jī)皮帶行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球3D 打印陶瓷絲行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)智能睡眠盒行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球IP65工業(yè)顯示器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球機(jī)器人用立體攝像頭行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球不銹鋼面板安裝顯示器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球全液壓解耦系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司蘭州分公司招聘筆試真題2024
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 提高金剛砂地坪施工一次合格率
- 【歷史】唐朝建立與“貞觀之治”課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 產(chǎn)業(yè)園區(qū)招商合作協(xié)議書(shū)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2025新譯林版英語(yǔ)七年級(jí)下單詞默寫(xiě)表
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊(cè)
- 天然氣脫硫完整版本
- 中歐班列課件
- 光伏十林業(yè)可行性報(bào)告
評(píng)論
0/150
提交評(píng)論