版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄摘要 -3-1序言 -5-1.1目的 -5-1.2定義 -5-2需求分析 -6-2.1需求分析報(bào)告 -6-2.2數(shù)據(jù)流圖 -6-4數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì) -9-5系統(tǒng)設(shè)計(jì) -9-5.2用戶身份驗(yàn)證模塊 -9-5.3酒店管理模塊 -9-5.3.1菜品管理 -9-5.3.2菜系管理 -9-5.3.3臺(tái)號(hào)管理 -9-5.3.4結(jié)賬查詢 -9-5.4用戶管理及密碼模塊 -9-5.訂單管理模塊 -9-6系統(tǒng)的實(shí)現(xiàn)與調(diào)試 -9-6.1系統(tǒng)的實(shí)現(xiàn) -9-6.2系統(tǒng)的調(diào)試 -9-7小結(jié) -9-7.1 系統(tǒng)的功能 -9-7.2 系統(tǒng)的特點(diǎn) -9-7.3 系統(tǒng)開(kāi)發(fā)過(guò)程的特點(diǎn) -9-7.4 存在的問(wèn)題與改善方向 -9-7.5 自我體會(huì) -9-參考文獻(xiàn) -9-附錄 -9-附錄:核心代碼 -9-摘要隨著旅游業(yè)的發(fā)展,酒店、餐飲娛樂(lè)行業(yè)日趨發(fā)達(dá),引入全方位的電腦服務(wù)和電腦管理日漸成為必要。據(jù)調(diào)查,在酒店和餐廳娛樂(lè)業(yè)引入電腦服務(wù)和管理后明顯取得了優(yōu)良的經(jīng)濟(jì)效益和社會(huì)效益。以往傳統(tǒng)的酒店管理往往令管理者花大量的時(shí)間來(lái)解決顧客投訴,例如錯(cuò)誤查詢、瑣的登記和結(jié)帳手續(xù)、旅客費(fèi)用計(jì)算錯(cuò)誤、空余客房資料不能及時(shí)提供等,影響出租率。以上問(wèn)題可以通過(guò)電腦系統(tǒng)輔助一一解決。酒店管理的電腦化,不僅是體現(xiàn)酒店現(xiàn)代化形象的一個(gè)重要標(biāo)志,并且對(duì)提高員工工作效率,讓管理層有時(shí)間集中精力規(guī)劃管理、制定運(yùn)作策略和實(shí)行決策,加速資金周轉(zhuǎn)、減少各項(xiàng)成本以及改善服務(wù)質(zhì)量都有十分積極的作用。因此為了提高住房出租效率,提高服務(wù)管理質(zhì)量,規(guī)范酒店星級(jí)管理工作,建立起用戶和旅游需求的橋梁,為旅游業(yè)的擴(kuò)展提供優(yōu)質(zhì)的物質(zhì)保證,使資源合理配置,也緩解旅游住宿壓力,哺育良好的客戶群體,根據(jù)酒店管理業(yè)務(wù)實(shí)際情況,進(jìn)行此系統(tǒng)的開(kāi)發(fā)。1序言1.1目的針對(duì)目前酒店電子化管理的實(shí)際需求,和消費(fèi)客戶對(duì)跨時(shí)域地區(qū)預(yù)訂住宿的規(guī)定,本需求分析定義的開(kāi)發(fā)酒店管理系統(tǒng)的總體規(guī)定是:作為兩類用戶(一般客戶和酒店管理人員)和軟件開(kāi)發(fā)員互相了解的基礎(chǔ),系統(tǒng)成品提供用戶登錄、查詢、管理員后臺(tái)管理等四大功能服務(wù)。系統(tǒng)開(kāi)發(fā)目的:對(duì)內(nèi)是為了使酒店管理更加便捷、高效,員工操作更加明晰、規(guī)范,大大提高酒店管理質(zhì)量。對(duì)外是能讓用戶自助登錄、查詢酒店住房信息和酒店服務(wù)、實(shí)現(xiàn)零距離實(shí)時(shí)預(yù)定酒店房間,為客戶提供舒心的出行住宿保證,提高社會(huì)效益。本需求分析包含了初步分析設(shè)計(jì)各功能模塊、提供性能規(guī)定、對(duì)用戶影響的信息、以及對(duì)各功能模塊功能的描述;同時(shí)也是規(guī)范開(kāi)發(fā)人員進(jìn)行設(shè)計(jì)和部署實(shí)行的基礎(chǔ)和依據(jù),為整體工作組的工作流程做出明確指導(dǎo),引導(dǎo)工作成員之間、工作成員與用戶之間的溝通。最終作為總體審核、驗(yàn)證、確認(rèn)和結(jié)項(xiàng)驗(yàn)收的依據(jù);為開(kāi)發(fā)方與客戶方提供合法的協(xié)議保障。1.2定義DrinkeryManageT店管理系統(tǒng)
2需求分析2.1需求分析報(bào)告酒店管理系統(tǒng)是面向酒店的的各項(xiàng)事務(wù),涉及酒店管理,訂單管理、菜系管理等業(yè)務(wù)解決工作,是運(yùn)用計(jì)算機(jī)進(jìn)行集中管理而開(kāi)發(fā)的系統(tǒng)。該系統(tǒng)是基于Eclipse連接SQLServer2023數(shù)庫(kù)進(jìn)行開(kāi)發(fā)的酒店管理系統(tǒng),力求與實(shí)際相結(jié)合具有查詢、管理等功能,在達(dá)成使酒店的管理和運(yùn)營(yíng)趨于計(jì)算機(jī)化,使之更加方便、快捷以提高工作效率。重要涉及五大管理模塊:1)登錄管理提供用戶登錄、注銷等功能用戶登錄用戶退出2)菜品管理用戶可以對(duì)菜名、菜品、單位、助記符等進(jìn)行查詢、修改、添加、刪除操作。名稱單位助記符3)菜系管理用戶可以對(duì)酒店內(nèi)的所有菜系進(jìn)行查詢、修改、添加、刪除操作。菜系名稱4)臺(tái)號(hào)管理用戶可以對(duì)酒店內(nèi)的所有的臺(tái)號(hào)進(jìn)行查詢、修改、添加、刪除操作。臺(tái)號(hào)座位數(shù)5)結(jié)賬管理操作員可以對(duì)系統(tǒng)的使用者以及該系統(tǒng)中數(shù)據(jù)庫(kù)里的多張表中數(shù)據(jù)項(xiàng)進(jìn)行查詢操作日結(jié)賬月結(jié)賬年結(jié)賬6)用戶管理操作員可以進(jìn)行查詢、添加、刪除用戶信息等操作,并可以修改自己的用戶密碼修改密碼用戶管理7)菜單管理當(dāng)前操作員可以進(jìn)行開(kāi)單、簽單、取消等操作,并進(jìn)行金額結(jié)賬開(kāi)單簽單金額結(jié)賬2.2數(shù)據(jù)流圖酒店管理系統(tǒng)酒店管理系統(tǒng)管理人員客戶客戶信息管理人員信息管理人員客戶收銀信息系統(tǒng)管理菜單信息圖1.頂級(jí)數(shù)據(jù)流圖前臺(tái)數(shù)據(jù)前臺(tái)數(shù)據(jù)后臺(tái)客戶后臺(tái)客戶訂餐訂餐數(shù)據(jù)圖2.第二層流程圖
TC"圖2.1系統(tǒng)數(shù)據(jù)流圖"\fA3數(shù)據(jù)庫(kù)概念設(shè)計(jì)在酒店管理系統(tǒng)中,存在菜品、菜系、臺(tái)號(hào)、定單、用戶等幾個(gè)對(duì)象實(shí)體,以菜品、菜系、臺(tái)號(hào)、定單以及用戶這幾個(gè)對(duì)象為例,一個(gè)定單相應(yīng)多個(gè)菜品,同時(shí)一個(gè)菜品只能屬于一個(gè)菜系;一個(gè)定單中有多個(gè)菜系,一個(gè)菜系擁有多個(gè)菜品。一個(gè)定單相應(yīng)一個(gè)操作員,一個(gè)操作員只能相應(yīng)一個(gè)定單;一個(gè)定單相應(yīng)一個(gè)臺(tái)號(hào),一個(gè)臺(tái)號(hào)只能相應(yīng)一個(gè)定單。(1)上述分析相應(yīng)的實(shí)體-屬性圖如下所:編號(hào)編號(hào)菜品菜名助記符單位單價(jià)類型圖3.1菜品TC"圖3.2設(shè)備"\fA菜系名菜系名編號(hào)編號(hào)菜系菜系圖3.2菜系TC"圖3.3車位"\fA座位數(shù)座位數(shù)臺(tái)編號(hào)臺(tái)編號(hào)臺(tái)號(hào)臺(tái)號(hào)圖3.3臺(tái)號(hào)操作員編號(hào)訂購(gòu)時(shí)間操作員編號(hào)訂購(gòu)時(shí)間總金額編號(hào)臺(tái)號(hào)總金額編號(hào)臺(tái)號(hào)訂單訂單圖3.4訂單TC"圖3.4社區(qū)"\fA賬單號(hào)賬單號(hào)數(shù)量編號(hào)金額訂單號(hào)數(shù)量編號(hào)金額訂單號(hào)積TC"圖3.5房間"\fA菜品單菜品單圖3.5菜品單用戶用戶用戶名日期筑面積積權(quán)限用戶號(hào)性別卡號(hào)高密碼TC"圖3.5房間"\fA圖3.6用戶(2)實(shí)體-聯(lián)系圖如下:用戶用戶11簽單簽單nn涉及1n涉及1n11相應(yīng)訂單菜品單臺(tái)號(hào)訂單菜品單臺(tái)號(hào)1111涉及涉及涉及涉及nnnn1n菜品擁有1n菜品擁有菜系菜系圖3.8實(shí)體-聯(lián)系圖TC"圖3.8實(shí)體-聯(lián)系圖"\fA
4數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)E-R模型所表達(dá)的全局概念結(jié)構(gòu),是對(duì)用戶數(shù)據(jù)需求的一種抽象表達(dá)形式,它獨(dú)立于任何一種數(shù)據(jù)模型。為了實(shí)現(xiàn)用戶的需求,必須將概念結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化為與我們選用的具體的機(jī)器上DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu),這就是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的任務(wù)。一方面要實(shí)現(xiàn)的是E-R模型向關(guān)系模型的轉(zhuǎn)換,將E-R模型轉(zhuǎn)換為關(guān)系模型事實(shí)上就是要將實(shí)體、實(shí)體的屬性和實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式的過(guò)程。這種轉(zhuǎn)換一般遵循如下規(guī)則:對(duì)于實(shí)體類型的轉(zhuǎn)換:將每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式,實(shí)體的屬性為關(guān)系模式的屬性,實(shí)體的碼即為關(guān)系模式的碼。對(duì)于實(shí)體間聯(lián)系的轉(zhuǎn)換,根據(jù)三種不同情況作出不同的解決:若實(shí)體間的聯(lián)系是1:1,可以在兩個(gè)實(shí)體類型轉(zhuǎn)換成的兩個(gè)關(guān)系模式中的任意一個(gè)關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系的屬性。若實(shí)體間的聯(lián)系是1:N,則在N端實(shí)體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實(shí)體類型轉(zhuǎn)換成的關(guān)系模式的碼和聯(lián)系的屬性。若實(shí)體間的聯(lián)系是N:M,則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實(shí)體類型的碼加上聯(lián)系類型的屬性,而關(guān)系的碼則為兩端實(shí)體的碼的結(jié)合。通過(guò)以上所述原則,由E-R圖轉(zhuǎn)換得到如下的關(guān)系模式表4.1系統(tǒng)中所用到的基本信息表及用途TC"表4.1系統(tǒng)中所用到的基本信息表及用途"\fA表名用途Tb_desk臺(tái)號(hào)Tb_menu菜品Tb_order_form訂單Tb_order_item菜品單Tb_sort菜系Tb_user用戶表4.2臺(tái)號(hào)基本信息表(Tb_desk)TC"表4.3社區(qū)基本信息表(Area)"\fA表4.3菜品信息表(Tb_menu)TC"表4.4社區(qū)周邊設(shè)施信息表(AreaKK)"\fA表4.4訂單信息表(Tb_order_form)TC"表4.5樓宇信息表(Pavilion)"\fA表4.5菜品單信息表(Tb_order_item)TC"表4.6房間信息表(house)"\fA表4.6菜系信息表(Tb_sort)TC"表4.7車位信息表"\fA表4.7用戶信息表(Tb_user)TC"表4.8住戶信息表(zhuhu)"\fA
5系統(tǒng)設(shè)計(jì)在本章中,我將就社區(qū)管理中各個(gè)模塊做一些介紹,從系統(tǒng)的預(yù)覽中可以看到各個(gè)模塊的設(shè)計(jì)風(fēng)格是相同的,都是由一個(gè)框架頁(yè)面來(lái)實(shí)現(xiàn)的。在這我具體來(lái)就幾個(gè)重點(diǎn)模塊進(jìn)行說(shuō)明。用戶管理修改密碼月結(jié)賬日結(jié)賬座位數(shù)臺(tái)號(hào)菜系名稱菜系編號(hào)助記符單位名稱用戶退出用戶登錄結(jié)賬管理臺(tái)號(hào)管理菜系管理用戶管理修改密碼月結(jié)賬日結(jié)賬座位數(shù)臺(tái)號(hào)菜系名稱菜系編號(hào)助記符單位名稱用戶退出用戶登錄結(jié)賬管理臺(tái)號(hào)管理菜系管理菜品管理登錄管理系統(tǒng)登錄金額結(jié)賬開(kāi)單簽單用戶管理菜單管理圖5.1功能結(jié)構(gòu)圖TC"圖5.1功能結(jié)構(gòu)圖"\fA5.2用戶身份驗(yàn)證模塊登錄名和密碼由系統(tǒng)管理員授予給用戶,一般用戶有查詢、插入、更新、刪除的權(quán)力,而管理員不僅擁有這些權(quán)力,尚有添加刪除用戶、密碼維護(hù)等權(quán)力。在如圖所示的界面登錄。選擇下拉框,并輸入密碼。5.3酒店管理模塊在登錄后出現(xiàn)的界面,上方是簽單列表、開(kāi)臺(tái)列表,中間橫條可輸入進(jìn)行開(kāi)單簽單操作,左下方顯示時(shí)間和操作員,接著有消費(fèi)金額、實(shí)收金額、找零金額,右下方有菜品管理、菜系管理、臺(tái)號(hào)管理、日結(jié)賬、月結(jié)賬、年結(jié)賬,修改密碼、用戶管理、退出系統(tǒng)九個(gè)圖標(biāo),點(diǎn)擊則進(jìn)入相應(yīng)模塊。5.3.1菜品管理菜品管理界面為酒店管理模塊的菜名界面,此界面可以查看、添加和刪除菜品資料。5.3.2菜系管理此界面可以查看菜系信息,并對(duì)菜系信息進(jìn)行修改、刪除、添加。在刪除相應(yīng)記錄時(shí),只需選擇相應(yīng)記錄,點(diǎn)擊刪除按鈕即可進(jìn)入刪除界面,點(diǎn)擊確認(rèn),即可提交。5.3.3臺(tái)號(hào)信息此界面可以查看臺(tái)號(hào)信息,并對(duì)臺(tái)號(hào)信息進(jìn)行修改、刪除、添加。在刪除相應(yīng)記錄時(shí),只需選擇相應(yīng)記錄,點(diǎn)擊刪除按鈕即可進(jìn)入刪除界面,點(diǎn)擊確認(rèn),即可提交。圖5.5樓宇概況TC"圖5.5樓宇概況"\fA5.3.4日結(jié)賬、月結(jié)賬、年結(jié)賬查詢此界面可以查詢所有的菜單信息,在下拉框選擇年、月、日,即可查詢相應(yīng)的日、月、年的所有消費(fèi)記錄。5.4用戶管理及密碼模塊點(diǎn)擊用戶管理,即可進(jìn)入用戶管理模塊。本模塊涉及用戶基本信息、密碼信息。用戶基本信息提供操作員信息的查詢功能,添加、刪除用戶信息。在密碼修改區(qū)可更改當(dāng)前用戶的密碼。5.5訂單管理模塊在此模塊,當(dāng)前操作員可以選擇臺(tái)號(hào)、輸入菜單信息,進(jìn)行開(kāi)單、簽單操作。簽單后,消費(fèi)金額顯示當(dāng)前金額,在實(shí)收金額輸入對(duì)的金額(大于等于實(shí)收金額),找零金額顯示應(yīng)找金額。
6系統(tǒng)的實(shí)現(xiàn)與調(diào)試6.1系統(tǒng)的實(shí)現(xiàn)在通過(guò)需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、系統(tǒng)設(shè)計(jì)四個(gè)階段后,接下來(lái)要做的是系統(tǒng)的實(shí)現(xiàn)。1.擬定你的SQLSERVER2023的用戶登錄名和密碼,在代碼JDBC.java中修改好相應(yīng)的信息。2.打開(kāi)SQLSERVER2023,在對(duì)象資源管理器中附加db_DrinkeryManage數(shù)據(jù)庫(kù)。3.打開(kāi)登錄界面6.2系統(tǒng)的調(diào)試開(kāi)發(fā)一個(gè)系統(tǒng),調(diào)試是一個(gè)必不可少的環(huán)節(jié),也是一個(gè)非常重要的環(huán)節(jié)。系統(tǒng)測(cè)試是系統(tǒng)開(kāi)發(fā)中比較重要而耗時(shí)的過(guò)程,是系統(tǒng)能否成功運(yùn)營(yíng)的保證之一。通過(guò)測(cè)試可以發(fā)現(xiàn)系統(tǒng)中存在的錯(cuò)誤和漏洞,所以測(cè)試過(guò)程必須認(rèn)真謹(jǐn)慎嚴(yán)格對(duì)待。測(cè)試的方法分為兩種:人工測(cè)試和機(jī)器測(cè)試。機(jī)器測(cè)試又分為:黑盒測(cè)試和白盒測(cè)試。人工測(cè)試分為:個(gè)人復(fù)查、走查、會(huì)審。人工測(cè)試只用個(gè)人復(fù)查。由于本系統(tǒng)并不是真正要應(yīng)用到實(shí)際當(dāng)中,本人的精力和時(shí)間有限,只能進(jìn)行個(gè)人測(cè)試。在測(cè)試系統(tǒng)過(guò)程中,碰到不對(duì)的或不抱負(fù)的地方時(shí),給予修改。
7小結(jié)系統(tǒng)的功能較為完整的星級(jí)酒店管理軟件應(yīng)當(dāng)覆蓋酒店的整個(gè)管理自動(dòng)化系統(tǒng),包含結(jié)賬管理、賬單管理、住房管理、餐飲管理、KTV等服務(wù)功能。而本酒店管理軟件重要包含與訂單相關(guān)的結(jié)賬管理、賬單管理、菜類管理。下面具體說(shuō)明酒店管理軟件一般涉及的模塊功能:1)用戶登錄模塊用戶身份驗(yàn)證模塊實(shí)現(xiàn)用戶合法性檢查,把用戶名以及密碼保存到數(shù)據(jù)庫(kù)表中,而在后面的頁(yè)面中通過(guò)讀取用戶信息來(lái)登陸。在這個(gè)模塊中還提供用戶提出的功能2)菜品管理模塊在菜品管理模塊里重要涉及了對(duì)菜品信息的查詢,添加、刪除功能。有編號(hào)、菜名稱、助記符、單位、價(jià)格等信息。3)菜系管理模塊菜系管理模塊重要提供的是查看,添加,刪除菜種類的基本信息。4)臺(tái)號(hào)管理模塊臺(tái)號(hào)管理模塊重要提供的是對(duì)酒店內(nèi)的臺(tái)號(hào)的基本信息進(jìn)行查看,添加和刪除操作。有臺(tái)號(hào)、座位數(shù)相關(guān)信息。5)結(jié)賬管理模塊操作員可以對(duì)系統(tǒng)的使用者以及該系統(tǒng)中數(shù)據(jù)庫(kù)里的多張表中數(shù)據(jù)項(xiàng)進(jìn)行查詢操作。有日結(jié)賬、月結(jié)賬、年結(jié)賬。6)用戶管理模塊操作員可以進(jìn)行查詢、添加、刪除用戶信息等操作,在密碼修改區(qū)可更改當(dāng)前用戶的自己的登錄密碼。7)菜單管理模塊結(jié)賬管理模塊涉及開(kāi)單列表、開(kāi)臺(tái)列表、金額收結(jié)。在此模塊,當(dāng)前操作員可以選擇臺(tái)號(hào)、輸入菜單信息,進(jìn)行開(kāi)單、簽單操作。簽單后,消費(fèi)金額顯示當(dāng)前金額,在實(shí)收金額輸入對(duì)的金額(大于等于實(shí)收金額),找零金額顯示應(yīng)找金額。系統(tǒng)的特點(diǎn)1.整個(gè)系統(tǒng)是個(gè)框架結(jié)構(gòu)的單機(jī)界面,各個(gè)模塊中框架結(jié)構(gòu)相似。2.整個(gè)系統(tǒng)的主色為灰色,以綠色和紅色作為輔色。3.本系統(tǒng)提供密碼登錄,未授予登錄名和密碼的用戶無(wú)法登錄。4.代碼維護(hù)簡(jiǎn)樸。本系統(tǒng)提供了代碼維護(hù)功能,可以修改代碼。5.系統(tǒng)數(shù)據(jù)庫(kù)中的表數(shù)據(jù)簡(jiǎn)潔,冗余度低,效率高。6.用戶有查詢、插入、更新、刪除的權(quán)力,尚有添加刪除用戶、密碼維護(hù)等權(quán)力。系統(tǒng)開(kāi)發(fā)過(guò)程的特點(diǎn)本系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程由三人完畢,以課程設(shè)計(jì)的方式提交。本系統(tǒng)的開(kāi)發(fā)工具為Eclipse+SQLServer2023,開(kāi)發(fā)系統(tǒng)速度快,但功能上受到限制。由于自學(xué)開(kāi)發(fā)系統(tǒng),開(kāi)發(fā)本系統(tǒng)是一個(gè)不斷學(xué)習(xí)、不斷進(jìn)步的過(guò)程,直到系統(tǒng)驗(yàn)收那一刻前,我們都一直在作修改。存在的問(wèn)題與改善方向我開(kāi)發(fā)的酒店管理系統(tǒng)是按照用Swing+SQLSERVER開(kāi)發(fā)的酒店管理系統(tǒng)模板做的,而我是用Eclipse+SQLSERVER20235開(kāi)發(fā),在實(shí)現(xiàn)系統(tǒng)功能上受到了一定的限制。另一方面,一個(gè)系統(tǒng)存在問(wèn)題在所難免,何況我們需要在短時(shí)間內(nèi)自學(xué)Eclipse和Java,提交系統(tǒng)。本系統(tǒng)存在的問(wèn)題如下:在界面登錄時(shí),假如用戶或密碼輸入錯(cuò)誤,在點(diǎn)擊登錄按鈕會(huì)出現(xiàn)卡死的問(wèn)題,以任務(wù)管理器結(jié)束進(jìn)程。在提供查詢功能時(shí),做到了精擬定位,沒(méi)有提供模糊查詢。模糊查詢只需將條件改成like,再加上通配符就可以了。選擇精擬定位還是模糊查詢?nèi)Q于實(shí)際需求。對(duì)于本系統(tǒng)而言,由于操作員熟悉酒店業(yè)務(wù)情況,提供精擬定位功能,效率會(huì)更高。有時(shí)不妥操作會(huì)清空三張表:tb_user、tb_order_item、tb_order_form,所有需時(shí)常做好數(shù)據(jù)備份。自我體會(huì)汪偉:本次課程設(shè)計(jì)收獲良多。從初期的無(wú)從下手,到現(xiàn)在較完整完畢數(shù)據(jù)庫(kù)課程設(shè)計(jì)。中間碰到了很多問(wèn)題,也解決了很多問(wèn)題。感覺(jué)在解決問(wèn)題的過(guò)程中,我在一步步成長(zhǎng),在一點(diǎn)點(diǎn)積累知識(shí)。學(xué)習(xí)Java語(yǔ)言,看Eclipse教學(xué)視頻,學(xué)習(xí)SQLServer2023。邊學(xué)邊做,期間擋在面前的很多問(wèn)題,都需要自己去弄懂、學(xué)習(xí),百度、谷歌都是自己理解問(wèn)題、解決問(wèn)題的途徑。到最終的成品出來(lái),這也是對(duì)自己的一次肯定。對(duì)以后的課程設(shè)計(jì)及畢業(yè)設(shè)計(jì),本次實(shí)踐有著不可替代的意義,相信自己在以后的項(xiàng)目開(kāi)發(fā)過(guò)程中都會(huì)有著良好的習(xí)慣,能學(xué)到更多的東西。以下摘取些碰到的問(wèn)題及解決:將eclipse連接到SQLServer:具體環(huán)節(jié)見(jiàn)《Eclipse連接SQL+Server+2023數(shù)據(jù)庫(kù)》文檔Exceptioninthread"main"com.microsoft.sqlserver.jdbc.SQLServerException:無(wú)法打開(kāi)登錄所請(qǐng)求的數(shù)據(jù)庫(kù)"db_DrinkeryManage"。登錄失敗。ClientConnectionId:f194c087-3b95-4d59-a0f2-fccd5d0bec8b解決:URL="jdbc:sqlserver://localhost:1433;DatabaseName=db_DrinkeryManage"USERNAME="sa"PASSWORD="q"LoadCONFIG.INIisfalse!!界面排版:對(duì)于尺寸、分割、邊框,需要安排好整個(gè)界面大小及各個(gè)塊的大小徐懷群:做了本學(xué)期的課程設(shè)計(jì),有很多有關(guān)于數(shù)據(jù)庫(kù)方面的心得體會(huì)。在同學(xué)的互相合作下,終于把整個(gè)系統(tǒng)完畢了,實(shí)現(xiàn)了預(yù)定的功能,SQL語(yǔ)言及java語(yǔ)言沒(méi)學(xué)扎實(shí),一開(kāi)始的程序這塊兒就要令我抓狂了。后來(lái)在幾天幾夜的努力,終于有了頭緒,然后又在同學(xué)的幫助下,找到了一些參考書(shū),又在這寫(xiě)書(shū)的幫助下了解了系統(tǒng)設(shè)計(jì)的各種方法,在編譯過(guò)程中經(jīng)常出現(xiàn)的問(wèn)題,和解決的方法。沒(méi)想到這項(xiàng)看起來(lái)不需要多少技術(shù)的工作卻是非常的勞心勞力。我看到有很多人跟我同樣,都他們是三三兩兩,一同討論學(xué)習(xí)。當(dāng)我想放棄的時(shí)候,我也這么對(duì)自己說(shuō),即使你做出來(lái)的是次品甚至不合格品,但是你一定要拿出來(lái)一件成品。一個(gè)學(xué)期后我們的程序終于完畢了,并且放到一起也能用。在機(jī)房調(diào)試雖然出現(xiàn)了一些問(wèn)題,但都解決了。最后,我發(fā)現(xiàn)自己對(duì)編程居然也有了一點(diǎn)愛(ài)好。王乾坤:一學(xué)期的時(shí)間不久就過(guò)去了,這學(xué)期不敢說(shuō)自己有多大進(jìn)步,獲得了多少知識(shí),但起碼是了解了項(xiàng)目開(kāi)發(fā)的部分過(guò)程。雖然學(xué)習(xí)了數(shù)據(jù)庫(kù)相關(guān)課程,但沒(méi)有親身經(jīng)歷數(shù)據(jù)庫(kù)開(kāi)發(fā)的相關(guān)工作,這次課程設(shè)計(jì)給了一次很好的鍛煉機(jī)會(huì)。從各種文檔的閱讀到開(kāi)始需求分析,概念結(jié)構(gòu)設(shè)計(jì),邏輯結(jié)構(gòu)設(shè)計(jì),物理結(jié)構(gòu)設(shè)計(jì),親身體會(huì)了一次系統(tǒng)開(kāi)發(fā)的過(guò)程,在這個(gè)過(guò)程中我們深刻理解所學(xué)的知識(shí),同時(shí)也可以學(xué)到很多可實(shí)用的東西。我們學(xué)習(xí)并運(yùn)用了sql語(yǔ)言,對(duì)數(shù)據(jù)庫(kù)的創(chuàng)建,修改,刪除方法有了一定的了解,學(xué)會(huì)了對(duì)表的一些操作。很多事情不是想象的那么簡(jiǎn)樸,它涉及各種實(shí)體,屬性,數(shù)據(jù)流程,數(shù)據(jù)解決等等,不管做什么,我們都應(yīng)當(dāng)相信自己,不怕困難,努力嘗試。參考文獻(xiàn)[1].王珊,薩師煊.數(shù)據(jù)庫(kù)系統(tǒng)概論.北京:高等教育出版社,2023,5[2].印晏.Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì).北京:清華大學(xué)出版社,2023,9[3].張峰.Java程序設(shè)計(jì)與項(xiàng)目實(shí)戰(zhàn).北京:清華大學(xué)出版社,2023,8[4].陳剛.Eclipse從入門到精通[M].北京:清華大學(xué)出版社,2023[5].SQLServer2023.北京:清華大學(xué)出版社,2023
附錄附錄:核心代碼1.連接數(shù)據(jù)庫(kù)publicclassJDBC{ privatestaticfinalStringDRIVERCLASS="com.microsoft.jdbc.sqlserver.SQLServerDriver"; privatestaticfinalStringURL="jdbc:sqlserver://localhost:1433;DatabaseName=db_DrinkeryManage"; privatestaticfinalStringUSERNAME="sa"; privatestaticfinalStringPASSWORD="q"; privatestaticfinalThreadLocal<Connection>threadLocal=newThreadLocal<Connection>(); static{//通過(guò)靜態(tài)方法加載數(shù)據(jù)庫(kù)驅(qū)動(dòng) try{ Class.forName(DRIVERCLASS).newInstance();//加載數(shù)據(jù)庫(kù)驅(qū)動(dòng) }catch(Exceptione){ e.printStackTrace(); } } publicstaticConnectiongetConnection(){//創(chuàng)建數(shù)據(jù)庫(kù)連接的方法 Connectionconn=threadLocal.get();//從線程中獲得數(shù)據(jù)庫(kù)連接 if(conn==null){//沒(méi)有可用的數(shù)據(jù)庫(kù)連接 try{ conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);//創(chuàng)建新的數(shù)據(jù)庫(kù)連接 threadLocal.set(conn);//將數(shù)據(jù)庫(kù)連接保存到線程中 }catch(SQLExceptione){ e.printStackTrace(); } } returnconn; } publicstaticbooleancloseConnection(){//關(guān)閉數(shù)據(jù)庫(kù)連接的方法 booleanisClosed=true; Connectionconn=threadLocal.get();//從線程中獲得數(shù)據(jù)庫(kù)連接 threadLocal.set(null);//清空線程中的數(shù)據(jù)庫(kù)連接 if(conn!=null){//數(shù)據(jù)庫(kù)連接可用 try{ conn.close();//關(guān)閉數(shù)據(jù)庫(kù)連接 }catch(SQLExceptione){ isClosed=false; e.printStackTrace(); } } returnisClosed; }2.查詢數(shù)據(jù)庫(kù)publicclassDaoextendsBaseDao{ privatestaticDaodao; static{ dao=newDao(); } publicstaticDaogetInstance(){ returndao; } //tb_user publicVectorsUser(){ returnselectSomeNote("selectname,sex,birthday,id_card,freezefromtb_userwherefreeze='正常'"); } publicVectorsUserNameOfNotFreeze(){ returnselectSomeValue("selectnamefromtb_userwherefreeze='正常'"); } publicVectorsUserByName(Stringname){ returnselectOnlyNote("select*fromtb_userwherename='"+name+"'"); } publicbooleanuPasswordByName(Stringname,Stringpassword){ returnsuper.longHaul("updatetb_usersetpassword='"+password +"'wherename='"+name+"'"); } publicbooleanuFreezeByName(Stringname,Stringfreeze){ returnsuper.longHaul("updatetb_usersetfreeze='"+freeze +"'wherename='"+name+"'"); } publicbooleaniUser(Stringvalues[]){ Stringsql="insertintotb_user(name,sex,birthday,id_card,password,freeze)values('" +values[0] +"','" +values[1] +"','" +values[2] +"','" +values[3]+"','"+values[4]+"','"+values[5]+"')"; System.out.println(sql); returnlongHaul(sql); } //tb_order_form publicVectorsOrderFormOfDay(Stringdate){ returnselectSomeNote("select*fromtb_order_formwheredatetimebetween'" +date+"00:00:00'and'"+date+"23:59:59'"); } publicStringsOrderFormOfMaxId(){ Objectobject=selectOnlyValue("selectmax(num)fromtb_order_form"); if(object==null){ returnnull; }else{ returnobject.toString(); } } publicStringsOrderFormOfMinDatetime(){ Objectobject=selectOnlyValue("selectmin(datetime)fromtb_order_form"); if(object==null){ returnnull; }else{ returnobject.toString(); } } publicString[]monthCheckOut(Stringnum){ Stringvalues[]={"——","——","——","——","——"}; Stringsqls[]={ "selectcount(*)fromtb_order_formwherenumlike'"+num +"%'", "selectsum(money)fromtb_order_formwherenumlike'"+num +"%'", "selectavg(money)fromtb_order_formwherenumlike'"+num +"%'", "selectmax(money)fromtb_order_formwherenumlike'"+num +"%'", "selectmin(money)fromtb_order_formwherenumlike'"+num +"%'"}; for(inti=0;i<sqls.length;i++){ Objectvalue=super.selectOnlyValue(sqls[i]); if(value!=null){ Stringv=value.toString(); if(!v.equals("0")) values[i]=v; } } returnvalues; } publicVectoryearCheckOut(intyear){ Vector<Vector>valueV=newVector<Vector>(); Stringsql=""; StringformatMonth=""; StringformatDay=""; for(intday=1;day<=31;day++){ VectorrowV=newVector();//記錄行 rowV.add(day);//加入日期 formatDay=(day<10?"0"+day:""+day); for(intmonth=1;month<=12;month++){//做記錄 formatMonth=(month<10?"0"+month:""+month); sql="selectsum(money)fromtb_order_formwherenumlike'" +year+formatMonth+formatDay+"%'"; yearCheckOut(rowV,sql); } sql="selectsum(money)fromtb_order_formwherenumlike'" +year+"__"+formatDay+"%'";//做列總計(jì) yearCheckOut(rowV,sql); valueV.add(rowV); } VectorrowV=newVector();//總計(jì)行 rowV.add("總計(jì)"); for(intmonth=1;month<=12;month++){//做月總計(jì) formatMonth=(month<10?"0"+month:""+month); sql="selectsum(money)fromtb_order_formwherenumlike'" +year+formatMonth+"%'"; yearCheckOut(rowV,sql); } sql="selectsum(money)fromtb_order_formwherenumlike'"+year +"%'";//做年總計(jì) yearCheckOut(rowV,sql); valueV.add(rowV); returnvalueV; } publicvoidyearCheckOut(VectorrowV,Stringsql){ Objectvalue=super.selectOnlyValue(sql); if(value==null) rowV.add("——"); else rowV.add(value); } publicbooleaniOrderForm(String[]values){ Stringsql="insertintotb_order_form(num,desk_num,datetime,money,user_id)values('" +values[0] +"','" +values[1] +"','" +values[2] +"'," +values[3]+","+values[4]+")"; returnlongHaul(sql); } //tb_order_item publicbooleaniOrderItem(String[]values){ Stringsql="insertintotb_order_item(order_form_num,menu_num,amount,total)values('" +values[0] +"','" +values[1] +"'," +values[2] +"," +values[3]+")"; returnlongHaul(sql); } //v_order_item_and_menu publicVectorsOrderItemAndMenuByOrderFormNum(Stringnum){ returnselectSomeNote("select*fromv_order_item_and_menuwhereorder_form_num='" +num+"'"); } //Desk publicVectorsDesk(){ returnselectSomeNote("select*fromtb_desk"); } publicVectorsDeskByNum(Stringnum){ returnselectOnlyNote("select*fromtb_deskwherenum='"+num+"'"); } publicbooleaniDesk(Stringnum,Stringseating){ Stringsql="insertintotb_deskvalues('"+num+"',"+seating +")"; returnlongHaul(sql); } publicbooleandDeskByNum(Stringnum){ Stringsql="deletefromtb_deskwherenum='"+num+"'"; returnlongHaul(sql); } //Sort publicVectorsSortName(){ returnselectSomeNote("selectnamefromtb_sort"); } publicVectorsSortById(Stringid){ returnselectOnlyNote("select*fromtb_sortwhereid="+id); } publicVectorsSortByName(Stringname){ returnselectSomeNote("select*fromtb_sortwherename='"+name+"'"); } publicbooleaniSort(Stringname){ Stringsql="insertintotb_sortvalues('"+name+"')"; returnlongHaul(sql); } publicbooleandSortByName(Stringname){ Stringsql="deletefromtb_sortwherename='"+name+"'"; returnlongHaul(sql); } //Menu publicVectorsMenu(){ Stringhql="selectnum,name,code,sort_id,unit,unit_pricefromtb_menu"; Vectorvector=selectSomeNote(hql); for(inti=0;i<vector.size();i++){ VectormenuV=(Vector)vector.get(i); VectorsortV=sSortById(menuV.get(4).toString()); menuV.set(4,sortV.get(1)); } returnvector; } publicVectorsMenuOfSell(){ Stringhql="selectnum,name,code,sort_id,unit,unit_pricefromtb_menuwherestate='銷售'"; Vectorvector=selectSomeNote(hql); for(inti=0;i<vector.size();i++){ VectormenuV=(Vector)vector.get(i); VectorsortV=sSortById(menuV.get(4).toString()); menuV.set(4,sortV.get(1)); } returnvector; } publicVectorsMenuById(Stringnum){ returnselectSomeNote("select*fromtb_menuwherenumlike'"+num +"%'"); } publicVectorsMenuByCode(Stringcode){ returnselectSomeNote("select*fromtb_menuwherecodelike'"+code +"%'"); } //publicVectorsMenuByName(Stringname){ //returnselectOnlyNote("select*fromtb_menuwherename='"+name //+"'andstate='銷售'"); //} publicVectorsMenuByNameAndState(Stringname,Stringstate){ returnselectOnlyNote("select*fromtb_menuwherename='"+name +"'andstate='"+state+"'"); } publicStringsMenuOfMaxId(){ Objectobject=selectOnlyValue("selectmax(num)fromtb_menu"); if(object==null){ returnnull; }else{ returnobject.toString(); } } publicbooleaniMenu(String[]values){ Stringsql="insertintotb_menu(num,name,code,sort_id,unit,unit_price,state)values('" +values[0] +"','" +values[1] +"','" +values[2] +"'," +values[3] +",'" +values[4] +"','" +values[5] +"','" +values[6]+"')"; returnlongHaul(sql); } publicbooleanuMenu(String[]values){ Stringsql="updatetb_menusetcode='"+values[2]+"',sort_id=" +values[3]+",unit='"+values[4]+"',unit_price=" +values[5]+",state='"+values[6]+"'wherename='" +values[1]+"'"; returnlongHaul(sql); } publicbooleanuMenuStateByName(Stringname,Stringstate){ returnlongHaul("updatetb_menusetstate='"+state+"'wherename='" +name+"'"); } publicbooleandMenuByName(Stringname){ returnlongHaul("deletefromtb_menuwherename='"+name+"'"); }}3、臺(tái)號(hào)管理packagecom.mwq.frame.manage;importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.util.Vector;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextField;importjavax.swing.table.DefaultTableModel;importcom.mwq.dao.Dao;importcom.mwq.dao.JDBC;importcom.mwq.mwing.MTable;importcom.mwq.tool.Validate;publicclassDeskNumDialogextendsJDialog{ privateJTabletable; privateJTextFieldseatingTextField; privateJTextFieldnumTextField; privatefinalVectorcolumnNameV=newVector(); privatefinalDefaultTableModeltableModel=newDefaultTableModel(); privatefinalDaodao=Dao.getInstance(); privateJTableopenedDeskTable; /** *Launchtheapplication * *@paramargs */ publicstaticvoidmain(Stringargs[]){ try{ DeskNumDialogdialog=newDeskNumDialog(null); dialog.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); dialog.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } } /** *Createthedialog */ publicDeskNumDialog(JTablerightTable){ super(); setModal(true); getContentPane().setLayout(newBorderLayout()); setResizable(false); setTitle("臺(tái)號(hào)管理"); setBounds(100,100,500,375); this.openedDeskTable=rightTable; finalJPaneloperatePanel=newJPanel(); getContentPane().add(operatePanel,BorderLayout.NORTH); finalJLabelnumLabel=newJLabel(); operatePanel.add(numLabel); numLabel.setText("臺(tái)號(hào):"); numTextField=newJTextField(); numTextField.setColumns(6); operatePanel.add(numTextField); finalJLabelseatingLabel=newJLabel(); operatePanel.add(seatingLabel); seatingLabel.setText("座位數(shù):"); seatingTextField=newJTextField(); seatingTextField.setColumns(5); operatePanel.add(seatingTextField); finalJLabeltopPlaceholderLabel=newJLabel(); topPlaceholderLabel.setPreferredSize(newDimension(20,40)); operatePanel.add(topPlaceholderLabel); finalJButtonaddButton=newJButton();//創(chuàng)建添加臺(tái)號(hào)按鈕對(duì)象 addButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ Stringnum=numTextField.getText().trim();//獲取臺(tái)號(hào),并去掉首尾空格 Stringseating=seatingTextField.getText().trim();//獲取座位數(shù),并去掉首尾空格 if(num.equals("")||seating.equals("")){//查看用戶是否輸入了臺(tái)號(hào)和座位數(shù) JOptionPane.showMessageDialog(null,"請(qǐng)輸入臺(tái)號(hào)和座位數(shù)!","友情提醒", JOptionPane.INFORMATION_MESSAGE); return; } if(num.length()>5){//查看臺(tái)號(hào)的長(zhǎng)度是否超過(guò)了5位 JOptionPane.showMessageDialog(null,"臺(tái)號(hào)最多只能為5個(gè)字符!","友情提醒", JOptionPane.INFORMATION_MESSAGE); numTextField.requestFocus();//為臺(tái)號(hào)文本框請(qǐng)求獲得焦點(diǎn) return; } if(!Validate.execute("[1-9]{1}([0-9]{0,1})",seating)){//驗(yàn)證座位數(shù)是否在1——19之間 String[]infos={"座位數(shù)輸入錯(cuò)誤!","座位數(shù)必須在1——99之間!"}; JOptionPane.showMessageDialog(null,infos,"友情提醒", JOptionPane.INFORMATION_MESSAGE); seatingTextField.requestFocus();//為座位數(shù)文本框請(qǐng)求獲得焦點(diǎn) return; } if(dao.sDeskByNum(num)!=null){//查看該臺(tái)號(hào)是否已經(jīng)存在 JOptionPane.showMessageDialog(null,"該臺(tái)號(hào)已經(jīng)存在!","友情提醒", JOptionPane.INFORMATION_MESSAGE); numTextField.requestFocus();//為臺(tái)號(hào)文本框請(qǐng)求獲得焦點(diǎn) return; } introw=table.getRowCount();//獲得當(dāng)前擁有臺(tái)號(hào)的個(gè)數(shù) VectornewDeskNumV=newVector();//創(chuàng)建一個(gè)代表新臺(tái)號(hào)的向量 newDeskNumV.add(newInteger(row+1));//添加添加序號(hào) newDeskNumV.add(num);//添加臺(tái)號(hào) newDeskNumV.add(seating);//添加座位數(shù) tableModel.addRow(newDeskNumV);//將新臺(tái)號(hào)信息添加到表格中 table.setRowSelectionInterval(row,row);//設(shè)立新添加的臺(tái)號(hào)為選中的 numTextField.setText(null);//將臺(tái)號(hào)文本框設(shè)立為空 seatingTextField.setText(null);//將座位數(shù)文本框設(shè)立為空 // dao.iDesk(num,seating);//將新添加的臺(tái)號(hào)信息保存到數(shù)據(jù)庫(kù)中 JDBC.closeConnection();//關(guān)閉數(shù)據(jù)庫(kù)連接 } }); addButton.setText("添加"); operatePanel.add(addButton); finalJButtondelButton=newJButton();//創(chuàng)建刪除臺(tái)號(hào)按鈕對(duì)象 delButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ intselectedRow=table.getSelectedRow();//獲得選中的餐臺(tái) if(selectedRow==-1){//未選中任何餐臺(tái) JOptionPane.showMessageDialog(null,"請(qǐng)選擇要?jiǎng)h除的餐臺(tái)!","友情提醒", JOptionPane.INFORMATION_MESSAGE); }else{ StringdeskNum=table.getValueAt(selectedRow,1) .toString();//獲得選中餐臺(tái)的編號(hào) for(introw=0;row<openedDeskTable.getRowCount();row++){//查看該餐臺(tái)是否正在被使用 if(deskNum.equals(openedDeskTable.getValueAt(row,1))){ JOptionPane.showMessageDialog(null, "該餐臺(tái)正在使用,不能刪除!","友情提醒", JOptionPane.INFORMATION_MESSAGE); return;//該餐臺(tái)正在被使用,不能刪除,返回 } } Stringinfos[]=newString[]{//組織確認(rèn)信息 "擬定要?jiǎng)h除餐臺(tái):", "臺(tái)號(hào):"+deskNum, "座位數(shù):" +table.getValueAt(selectedRow,2) .toString()}; inti=JOptionPane.showConfirmDialog(null,infos,"友情提醒", JOptionPane.YES_NO_OPTION);//彈出確認(rèn)提醒 if(i==0){//確認(rèn)刪除 dao.dDeskByNum(deskNum);//從數(shù)據(jù)庫(kù)中刪除 tableModel.setDataVector(dao.sDesk(),columnNameV);//刷新表格 introwCount=table.getRowCount();//獲得刪除后擁有的餐臺(tái)數(shù) if(rowCount>0){//還擁有餐臺(tái) if(selectedRow==rowCount)//刪除的為最后一個(gè)餐臺(tái) selectedRow-=1;//將選中的餐臺(tái)前移一行 table.setRowSelectionInterval(selectedRow, selectedRow);//設(shè)立當(dāng)前選中的餐臺(tái) } JDBC.closeConnection();//關(guān)閉數(shù)據(jù)庫(kù)連接 } } } }); delButton.setText("刪除"); operatePanel.add(delButton); finalJScrollPanescrollPane=newJScrollPane(); getContentPane().add(scrollPane); StringcolumnNames[]=newString[]{"序號(hào)","臺(tái)號(hào)","座位數(shù)"}; for(inti=0;i<columnNames.length;i++){ columnNameV.add(columnNames[i]); } tableModel.setDataVector(dao.sDesk(),columnNameV); JDBC.closeConnection(); table=newMTable(tableModel); if(table.getRowCount()>0) table.setRowSelectionInterval(0,0); scrollPane.setViewportView(table); finalJLabelleftPlaceholderLabel=newJLabel(); leftPlaceholderLabel.setPreferredSize(newDimension(20,20)); getContentPane().add(leftPlaceholderLabel,BorderLayout.WEST); finalJPanelexitPanel=newJPanel(); finalFlowLayoutflowLayout=newFlowLayout(); flowLayout.setAlignment(FlowLayout.RIGHT); exitPanel.setLayout(flowLayout); getContentPane().add(exitPanel,BorderLayout.SOUTH); finalJButtonexitButton=newJButton(); exitPanel.add(exitButton); exitButton.setText("退出"); exitButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ dispose(); } }); finalJLabelbottomPlaceholderLabel=newJLabel(); bottomPlaceholderLabel.setPreferredSize(newDimension(10,40)); exitPanel.add(bottomPlaceholderLabel); finalJLabelrightPlaceholderLabel=newJLabel(); rightPlaceholderLabel.setPreferredSize(newDimension(20,20)); getContentPane().add(rightPlaceholderLabel,BorderLayout.EAST); // }}菜品管理packagecom.mwq.frame.manage;importjava.awt.BorderLayout;importjava.awt.Component;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.GridBagConstraints;importjava.awt.GridBagLayout;importjava.awt.Insets;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.lang.reflect.Field;importjava.util.Vector;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JDialog;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextField;importjavax.swing.SwingConstants;importjavax.swing.table.DefaultTableModel;importcom.mwq.dao.Dao;importcom.mwq.dao.JDBC;importcom.mwq.mwing.MTable;importcom.mwq.tool.Today;importcom.mwq.tool.Validate;publicclassMenuDialogextendsJDialog{ privateJTextFieldnumTextField; privateJTextFieldnameTextField; privateJTextFieldunitTextField; privateJTextFieldcodeTextField; privateJComboBoxsortComboBox; privateJTextFieldunitPriceTextField; privateJTabletable; privatefinalVectortableColumnV=newVector(); privatefinalDefaultTableModeltableModel=newDefaultTableModel(); privatefinalDaodao=Dao.getInstance(); /** *Launchtheapplication * *@paramargs */ publicstaticvoidmain(Stringargs[]){ try{ MenuDialogdialog=newMenuDialog(); dialog.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); dialog.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } } /** *Createthedialog */ publicMenuDialog(){ super(); setModal(true); getContentPane().setLayout(newBorderLayout()); setResizable(false); setTitle("菜品管理"); setBounds(100,100,500,375); finalJPaneloperatePanel=newJPanel(); operatePanel.setLayout(newGridBagLayout()); getContentPane().add(operatePanel,BorderLayout.NORTH); finalJLabelnumLabel=newJLabel(); numLabel.setText("編號(hào):"); finalGridBagConstraintsgridBagConstraints_6=newGridBagConstraints(); gridBagConstraints_6.insets=newInsets(15,0,0,0); gridBagConstraints_6.gridx=0; gridBagConstraints_6.gridy=0; operatePanel.add(numLabel,gridBagConstraints_6); numTextField=newJTextField(); numTextField.setText(getNextNum(dao.sMenuOfMaxId())); numTextField.setHorizontalAlignment(SwingConstants.CENTER); numTextField.setEditable(false); numTextField.setColumns(10); finalGridBagConstraintsgridBagConstraints_15=newGridBagConstraints(); gridBagConstraints_15.insets=newInsets(15,0,0,0); gridBagConstraints_15.gridy=0; gridBagConstrai
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市景觀美化宣傳品制作合同3篇
- 應(yīng)急指揮系統(tǒng)的建設(shè)與優(yōu)化
- 電氣行業(yè)安全管理工作總結(jié)
- 二零二五年度花卉進(jìn)出口貿(mào)易合同協(xié)議3篇
- 二零二五年度個(gè)人二手房買賣風(fēng)險(xiǎn)評(píng)估合同2篇
- 二零二五年度個(gè)人醫(yī)療費(fèi)用收據(jù)模板定制合同3篇
- 二零二五版電力行業(yè)員工試用及轉(zhuǎn)正勞動(dòng)合同范本3篇
- 2025版科研設(shè)備續(xù)租合同申請(qǐng)模板3篇
- 倉(cāng)庫(kù)信息化流程
- 建筑行業(yè)工程師的工作總結(jié)
- 2024年山西文旅集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 醫(yī)院定崗定編
- 恢復(fù)中華人民共和國(guó)國(guó)籍申請(qǐng)表
- 管理期貨的趨勢(shì)跟蹤策略 尋找危機(jī)阿爾法
- 瀝青化學(xué)分析試驗(yàn)作業(yè)指導(dǎo)書(shū)
- 2023年大學(xué)物理化學(xué)實(shí)驗(yàn)報(bào)告化學(xué)電池溫度系數(shù)的測(cè)定
- 腦出血的護(hù)理課件腦出血護(hù)理查房PPT
- 南京大學(xué)-大學(xué)計(jì)算機(jī)信息技術(shù)教程-指導(dǎo)書(shū)
- 扣繳個(gè)人所得稅報(bào)告表-(Excel版)
- 02R112 拱頂油罐圖集
- Unit+4+History+and+Traditions單元整體教學(xué)設(shè)計(jì)課件 高中英語(yǔ)人教版(2019)必修第二冊(cè)單元整體教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論