基于java的餐廳點菜系統(tǒng)_第1頁
基于java的餐廳點菜系統(tǒng)_第2頁
基于java的餐廳點菜系統(tǒng)_第3頁
基于java的餐廳點菜系統(tǒng)_第4頁
基于java的餐廳點菜系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西南科技大學(xué)專業(yè)方向設(shè)計報告 課程名稱: 通信專業(yè)方向設(shè)計 設(shè)計名稱: 基于java的餐廳點菜系統(tǒng) 姓 名: * * 學(xué) 號: * 班 級: 通信0901 指導(dǎo)教師: 江 虹 起止日期: 2012.11.202012.12.15 西南科技大學(xué)信息工程學(xué)院制22方 向 設(shè) 計 任 務(wù) 書學(xué)生班級: 通信0901 學(xué)生姓名: * * 學(xué)號 * 設(shè)計名稱: 基于java的餐廳點菜系統(tǒng) 起止日期: 2012.11.202012.12.15 指導(dǎo)教師: 江虹、羅智 設(shè)計要求: 1、利用java設(shè)計一個餐廳點菜系統(tǒng) 2、有桌位號供顧客選擇 3、在菜單顯示中,可以瀏覽菜品及對應(yīng)的價格 4、顧客可以隨意選擇自

2、己喜歡的菜 5、可以增刪選菜記錄 6、生成賬單 7、在賬單界面顯示消費總額、所選菜品及菜品總數(shù) 8、結(jié)賬后清空數(shù)據(jù)庫中的信息 9、獨立完成整個設(shè)計方 向 設(shè) 計 學(xué) 生 日 志時間設(shè)計內(nèi)容2012.11.212012.11.25熟悉餐廳點菜系統(tǒng)的原理2012.11.022012.11.30分析系統(tǒng)需要實現(xiàn)的功能,并針對每個功能做相應(yīng)的準(zhǔn)備2012.11.272012.12.01設(shè)計一個簡單的界面,在此基礎(chǔ)上增添基本功能2012.12.022012.12.10在實現(xiàn)功能的基礎(chǔ)上進(jìn)行調(diào)試、修改2012.12.102012.12.15增添功能,完善系統(tǒng)設(shè)計2012.12.152012.12.18在實

3、現(xiàn)功能的基礎(chǔ)上對系統(tǒng)的界面進(jìn)行美化2012.12.162012.12.20整理文檔,撰寫報告2012.12.23答辯方 向 設(shè) 計 評 語 表指導(dǎo)教師評語: 成績: 指導(dǎo)教師: 年 月 日基于java的餐廳點菜系統(tǒng) 摘要 餐廳點菜系統(tǒng)是為了實現(xiàn)餐廳點菜自動化而設(shè)計的,不用人工服務(wù)員客人就可以自行完成點菜這一過程,從而避免了由于服務(wù)員的疏忽或者態(tài)度等問題為客人造成不必要的麻煩。利用點菜系統(tǒng)可以及時、準(zhǔn)確、高效的為客人提供服務(wù),減少了很多繁瑣的過程。在開發(fā)餐廳點菜系統(tǒng)中,采用java語言程序設(shè)計的基本知識,java語言程序設(shè)計的基本方法和基本思想,運用數(shù)據(jù)庫對表的基本操作,常用查詢語句的使用以及a

4、ccess對表的數(shù)據(jù)的設(shè)計,利用圖形化編程和jdbc技術(shù)來實現(xiàn)餐廳點菜系統(tǒng)的設(shè)計。通過系統(tǒng)的開發(fā)掌握軟件的基本的開發(fā)流程,了解系統(tǒng)的功能,從而掌握軟件開發(fā)整體過程,把知識運用到實際生產(chǎn)中。 關(guān)鍵詞 點菜系統(tǒng)、高效、access2003數(shù)據(jù)庫、javaabstract restaurant order system is in order to realize the automation and the design of the restaurant order, without artificial waiter guests can automatically complete this

5、 order process, thereby avoiding the waiters carelessness or attitudes to such issues as guests to cause unnecessary trouble.use order system can offer timely, accurately and effectively service for the guest and reduce a lot of cumbersome process. in the development of the restaurant order system,

6、using the basic knowledge of java programming language , the basic method and basic idea, the use of the basic operation on the database table ,the use of common queries and access to the design of the data in the table ,the use of graphical programming and jdbc technology, to achieve the restaurant

7、 order system design.through the development of the system to master the basic software development process , understanding the function of the system, so as to grasp the whole process of software development, using the knowledge to practical production 1、 設(shè)計目的和意義餐廳點菜系統(tǒng)所要完成的基本功能就是實現(xiàn)無服務(wù)生點菜,客人可以通過點菜系統(tǒng)

8、自行點菜。在餐廳里有很多種菜譜,每一種菜有一個名稱,對應(yīng)一個唯一的編號和一個固定的單位價格。當(dāng)有顧客來酒店時,顧客首先選擇一個桌位號(也是唯一的),當(dāng)顧客進(jìn)入餐廳點菜系統(tǒng)后,就可以按照菜譜上有的菜來點菜。顧客在結(jié)賬時應(yīng)付的錢為:每種菜的單位價格相加為總的付款。編程語言為java,利用access2003作為后臺數(shù)據(jù)庫,該系統(tǒng)主要面向中小型餐飲企業(yè)提供餐飲點菜功能,系統(tǒng)后臺數(shù)據(jù)庫只有一張表,用于保存菜品名稱、價格和桌位號。通過本次課程設(shè)計可以加深對java語言程序設(shè)計基本知識的理解,掌握java語言程序編寫和調(diào)試的基本技能,了解有關(guān)程序設(shè)計、程序開發(fā)的思路方法,提高利用軟件程序解決實際問題的能力

9、。在設(shè)計過程中,可以培養(yǎng)我們分析問題、解決問題的能力,把理論與實際結(jié)合在一起,可以更好的掌握好一門語言,同時因為需要用到數(shù)據(jù)庫,所以可以通過此次課程設(shè)計自學(xué)一下數(shù)據(jù)庫,以及利用jdbc訪問數(shù)據(jù)庫。 二、設(shè)計原理本設(shè)計主要用到j(luò)ava語言程序設(shè)計、sql語言以及access數(shù)據(jù)庫。這是一個java application,沒有瀏覽器提供的現(xiàn)成的圖形界面可以直接使用,所以需要首先創(chuàng)建自己的圖形界面。首先創(chuàng)建一個對話框,在其內(nèi)容面板內(nèi)添加兩個組件按鈕,當(dāng)進(jìn)入系統(tǒng)后,即可進(jìn)入主菜單界面,此部分主要是要實現(xiàn)對按鈕的監(jiān)聽事件,即使用addactionlistener(this)事件監(jiān)聽器,事件處理接口的方

10、法為actionperformed(actionevent e)。在主界面,首先是完成窗體整體布局,在java的gui界面設(shè)計中,布局控制是通過為容器設(shè)置布局管理器來實現(xiàn)的。布局管理器負(fù)責(zé)確定組件在容器中的位置和大小。當(dāng)容器需要定位組件和確定組件大小時,就會給布局管理器對象法消息,讓它完成該項工作。java.awt包中定義了5種布局管理器類,每個布局管理器類對應(yīng)一種布局策略。在此系統(tǒng)中,用到最多的布局管理器類有borderlayout(組件按北、南、東、西、中幾個位置排列)和gridlayout(以行和列的網(wǎng)絡(luò)形式安排組件)。然后因為要顯示桌位號和菜品,利用單選按鈕組來實現(xiàn)顧客的選菜功能,創(chuàng)建

11、一個單選按鈕組,提供選中/不選中兩種狀態(tài),buttongroup是由一組互斥的按鈕組成,同一時刻只能有一個按鈕被選中,將桌位號的按鈕組加入到此按鈕組中。菜品的顯示也以單選按鈕的方式顯示在窗體界面中,這樣顧客就可以選擇自己喜歡的菜品,然后點擊確定后就可將數(shù)據(jù)存入數(shù)據(jù)庫中。在java的編程中,需要用到access數(shù)據(jù)庫,啟動進(jìn)入access后,創(chuàng)建一個數(shù)據(jù)庫,然后定義表的列名與列的數(shù)據(jù)類型 ,分別用于存放桌位號、菜品名稱及菜品價格。為了實現(xiàn)在java程序中訪問access數(shù)據(jù)庫,需要利用windows提供的工具創(chuàng)建指向數(shù)據(jù)庫的數(shù)據(jù)源,這樣在程序中通過數(shù)據(jù)源名即可訪問access中的數(shù)據(jù)庫。在對數(shù)據(jù)

12、進(jìn)行操作之前,首先要建立程序與一個具體數(shù)據(jù)庫的連接,而在連接數(shù)據(jù)庫以前,必須注冊該數(shù)據(jù)庫的驅(qū)動程序。完成此項工作的是drivermanager類,它被稱為驅(qū)動程序管理器,其基本功能是管理jdbc驅(qū)動程序。driver是java定義的一個接口,每一個驅(qū)動程序類都必須實現(xiàn)這個接口。裝載數(shù)據(jù)庫驅(qū)動程序可以采用class類的forname()方法,當(dāng)對數(shù)據(jù)庫的操作告一段落時,可通過調(diào)用connection的close()方法結(jié)束會話,釋放連接的數(shù)據(jù)庫及jdbc資源。jdbc是一種用于訪問數(shù)據(jù)庫和執(zhí)行sql語句的java編程接口,由一組用java語言編寫的類和接口組成。jdbc是用于java應(yīng)用程序連接

13、數(shù)據(jù)庫的標(biāo)準(zhǔn)方法。jdbc對java程序員而言是api,對實現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。jdbc使用已有的sql標(biāo)準(zhǔn)并支持其他數(shù)據(jù)庫連接標(biāo)準(zhǔn),jdbc實現(xiàn)了所有這些面向標(biāo)準(zhǔn)的、簡單且高性能的接口。利用jdbc訪問數(shù)據(jù)庫大致包含以下三個步驟:建立與數(shù)據(jù)庫的連接通過發(fā)送sql語句對數(shù)據(jù)庫進(jìn)行讀寫處理語句的執(zhí)行結(jié)果,特別是查詢語句的返回數(shù)據(jù)三、詳細(xì)設(shè)計步驟本系統(tǒng)采用基本的java語言編寫,由于java語言不同與c+語言,它具有其語言的特殊性,包含很多類,基本是每一種功能為一個類。開始有主框架類,通過按鈕監(jiān)聽事件調(diào)用別的類,完成功能的實現(xiàn)。其基本的流程為:顧客來酒店選擇桌號按照菜譜上的菜

14、的種類選擇所需要的菜然后按下確認(rèn)鍵確定要選擇的菜品統(tǒng)計所選擇菜的價格結(jié)帳付款為所有菜的編號所相對應(yīng)的價格相加并驗證自己付款是否有誤。系統(tǒng)主要流程圖如圖1所示: 圖1 總體結(jié)構(gòu)框圖 根據(jù)功能需求,本系統(tǒng)包含有5個類,利用access建立一個表就可以了。通過java與該數(shù)據(jù)表的連接關(guān)系對該表的數(shù)據(jù)進(jìn)行輸入,然后通過顧客對數(shù)據(jù)的隨機(jī)選擇來調(diào)用數(shù)據(jù)表的數(shù)據(jù),實現(xiàn)不同的功能。 系統(tǒng)的主要功能模塊首先進(jìn)入系統(tǒng)初始界面,此界面由一個對話框構(gòu)成,由public class order implements actionlistener 完成這個功能。通過container contentpane = dial

15、og.getcontentpane()獲得其內(nèi)容面板,然后新建一個中間容器,在容器內(nèi)添加兩個按鈕,分別表示進(jìn)入系統(tǒng)和退出系統(tǒng),點擊按鈕時,就可觸發(fā)相應(yīng)的actionevent事件,通過getactioncommand()獲得按鈕標(biāo)簽,當(dāng)點擊進(jìn)入系統(tǒng)時關(guān)閉對話框,進(jìn)入點菜系統(tǒng)主界面,否則即可退出系統(tǒng)。當(dāng)點擊進(jìn)入系統(tǒng)時,系統(tǒng)就進(jìn)入點菜界面,用戶可以在此窗口中選擇自己喜歡的桌號和喜歡的菜品,要實現(xiàn)這個功能,需要用到的框架類為:public class menu implements actionlistener, itemlistener 這部分的功能實現(xiàn),首先是定義兩個數(shù)組,分別用于存放餐桌號和菜

16、品名單,創(chuàng)建兩個單選按鈕組,并指明其文本說明標(biāo)簽,即用于顯示桌號和菜品名單及價格,然后將單選按鈕組分別極加入到兩個中間容器中,這樣就可以看到桌位號和菜品名稱及價格。然后設(shè)置三個按鈕,分別是確定、結(jié)賬和取消按鈕。當(dāng)顧客點擊確定后,就將顧客所選擇的桌號和菜品名單及價格存入數(shù)據(jù)庫中,當(dāng)顧客點擊結(jié)賬后,就可進(jìn)入結(jié)賬界面,當(dāng)顧客點擊取消按鈕,就可將當(dāng)前所選擇的菜品刪除掉,然后可以再重新選擇顧客喜歡的菜品。其主要流程圖如圖2所示: 圖2 點菜功能流程圖這部分主要是要實現(xiàn)將顧客所選擇的桌號和菜品等數(shù)據(jù)存進(jìn)數(shù)據(jù)庫,調(diào)用drivermanaget類的靜態(tài)方法getconnection建立一個數(shù)據(jù)庫連接,并定義一

17、個remark標(biāo)志,當(dāng)顧客選擇了哪號桌或者哪個菜時,就可以向數(shù)據(jù)庫中寫入語句,這樣,當(dāng)用戶點擊確定后就保存數(shù)據(jù)。這里主要是通過執(zhí)行sql語句訪問數(shù)據(jù)庫,然后執(zhí)行查詢返回的結(jié)果。當(dāng)點擊一個單選按鈕后,返回一個remarki,當(dāng)建立與數(shù)據(jù)庫的連接后,執(zhí)行sql語句的寫語句,向數(shù)據(jù)庫中寫入語句,當(dāng)點擊確定后,就保存數(shù)據(jù)。當(dāng)點擊取消按鈕時,執(zhí)行sql語句的刪除語句,這樣就可以將所點的菜清空,然后重新選擇自己喜歡的菜品。當(dāng)在菜單窗口中按下結(jié)賬按鈕后,就會進(jìn)入結(jié)賬的界面,此時需要跳轉(zhuǎn)到另一個類中運行,這個類為:public class jiezhang implements actionlistener

18、這部分主要是要從數(shù)據(jù)庫中讀取數(shù)據(jù),然后顧客才能在結(jié)賬界面看到自己點了幾道菜以及都是些什么菜,總共花費是多少錢等。向數(shù)據(jù)庫發(fā)送sol查詢語句,利用executequery()方法就可返回一個resultset對象,最后通過while語句,就可實現(xiàn)其功能,通過sum(valuess)可以將顧客所點菜品總的價格統(tǒng)計相加起來,這樣顧客就可以看到自己總共的消費了。因為菜名在數(shù)據(jù)庫中是以cname表示的,所以要在結(jié)賬界面顯示點了些什么菜,就需要向數(shù)據(jù)庫執(zhí)行查詢語句,然后通過getstring()獲得其內(nèi)容,然后顯示在結(jié)賬界面的文本域中??偣颤c了多少道菜是通過while循環(huán),得出數(shù)據(jù)庫中總共寫了幾個數(shù)據(jù),然

19、后統(tǒng)計出總共點了多少菜。結(jié)賬后,將數(shù)據(jù)庫中的數(shù)據(jù)刪除,關(guān)閉數(shù)據(jù)庫連接。其主要流程圖如圖3所示: 圖3 結(jié)賬功能流程圖當(dāng)然,當(dāng)顧客不止需要一個桌位時,可以先選擇一個桌號,選好菜后點擊確定按鈕,保存數(shù)據(jù),然后再選擇一個桌號,選擇菜品,點擊確定,最后點擊結(jié)賬時,只需輸入其中的一個桌號,就可看到自己總共的花費,這樣既讓顧客覺得方便,也省去了許多麻煩。主程序在名為startsystemhere 的類中運行,為 public static void main(string args) throws exception new order(); 5、 設(shè)計結(jié)果及分析 各個模塊功能的實現(xiàn) 打開餐廳點菜系統(tǒng)程序

20、,會出現(xiàn)一個對話框,通過點擊相應(yīng)的按鈕,就可進(jìn)入或者退出系統(tǒng)。界面如圖4所示: 圖4 初始界面圖當(dāng)用戶點擊進(jìn)入系統(tǒng)按鈕后,對話框關(guān)閉,進(jìn)入主窗口界面,如圖5所示: 圖5 主界面圖在主界面可以看到,有三個部分,第一部分顯示的是桌位號,顧客可以選擇一個自己喜歡的桌位號,然后第二部分顯示的是菜品,那是一組單選按鈕,不僅顯示了菜的名稱,而且還顯示了菜的價格,這樣顧客就可以很直觀的選擇菜品,最后第三部分是提示語,當(dāng)客人點完菜后,再點擊確定按鈕,就可以將數(shù)據(jù)存入數(shù)據(jù)庫中,比如說客人選擇了桌位號2,所點的菜為澳洲小龍蝦、重慶辣子雞和尖椒臘肉,主界面的顯示如圖6: 圖6 顧客所點的菜示意圖那么在數(shù)據(jù)庫中就可以

21、看到如圖7中的內(nèi)容: 圖7 對應(yīng)數(shù)據(jù)庫中的數(shù)據(jù)從圖中可以看出,顧客在點菜界面所選擇的菜品已經(jīng)成功的存入了數(shù)據(jù)庫,那么在結(jié)賬時,就可將數(shù)據(jù)庫中數(shù)據(jù)顯示出來了。在結(jié)賬界面,會顯示一個文本框,顧客需要輸入自己之前所選擇的桌號,然后點擊確認(rèn)按鈕,會彈出一個對話框,顧客可以看到“謝謝惠顧!”幾個字,如圖8所示: 圖8 對話框提示再次點擊確定后,就可以看到自己總共點了幾道菜,一共花費了多少錢以及都點了哪些菜,便于顧客核對是否正確。點擊取消按鈕,即可退出對話框,返回到點菜界面。比如說上面顧客選擇了2號桌,并且點了三個菜,在結(jié)賬界面,輸入桌位號2后,點擊確定按鈕后,就可以清楚的看到自己總的消費、都點了那些菜以

22、及總共點了幾道菜,如圖9所示: 圖59結(jié)賬時所看到的結(jié)果圖 從圖中可以看出,客人所點的才與剛剛在點菜界面所點的菜品相同,總共的消費也是三個菜價格的總數(shù),正好也是三道菜,所以,這個功能是實現(xiàn)了的。 從上面的截圖中可以看出,此系統(tǒng)已經(jīng)基本實現(xiàn)了餐廳點菜系統(tǒng)的功能。 在設(shè)計這個系統(tǒng)時,首先是看文件是否調(diào)入數(shù)據(jù)庫包,是否和數(shù)據(jù)庫建立連接,這一步很關(guān)鍵,因為之前就是因為這個問題浪費了很多時間,這一步關(guān)系到后面數(shù)據(jù)是否插入成功,和查詢正確等。然后檢查查詢語句是否書寫正確,和數(shù)據(jù)庫查詢語言有著密切關(guān)系。因為在寫這個程序時在這方面遇到了很多問題,總是無法訪問數(shù)據(jù)庫中的數(shù)據(jù),后來檢查到數(shù)據(jù)庫根本沒有配置好,因為

23、是初次接觸,所以只是在access創(chuàng)建了一個名為jiudian的數(shù)據(jù)庫,卻沒有創(chuàng)建一個指向access數(shù)據(jù)庫的數(shù)據(jù)源,所以之前做的許多都無法實現(xiàn)其功能,后來通過查詢有關(guān)資料,讓問題得到了解決。調(diào)試時主要是看是否為每個按鈕添加監(jiān)聽事件,以讓其產(chǎn)生響應(yīng)。在查詢顯示設(shè)計中,利用表格時方法,模板是否正確等。在調(diào)試過程中,遇到了很多問題,比如說在向數(shù)據(jù)庫中插入語句時,由于沒有建立好數(shù)據(jù)源而導(dǎo)致無法再數(shù)據(jù)庫中看到插入的數(shù)據(jù),最后通過查閱資料使問題得到了解決。當(dāng)實現(xiàn)了與數(shù)據(jù)庫的連接后,卻發(fā)現(xiàn)無法將數(shù)據(jù)庫中的內(nèi)容讀取出來,或者說能夠通過查詢語句將數(shù)據(jù)庫中內(nèi)容讀出,然后通過一定的方法顯示了出來,但是,卻不能將顧

24、客所點的菜品總數(shù)與消費多少相對應(yīng)。最后通過不斷的修改代碼,查閱資料,問老師同學(xué)等,很順利的將問題解決了。六、總結(jié) 這是一個基于java的餐廳點菜系統(tǒng),通過對此系統(tǒng)的實現(xiàn),對java的應(yīng)用更加深化,不過要真正掌握好java+jdbc+mysql卻并不是一件容易的事情,需要在不斷的學(xué)習(xí)與應(yīng)用中了解其中的精髓。 利用餐廳點菜系統(tǒng)對于餐廳以及人們的生活帶來了很大的方便。所以在這過程中,我只能利用自己有限的技術(shù)制作出一個比較實用的系統(tǒng),由于時間倉促以及技術(shù)的不足,本系統(tǒng)實現(xiàn)的有一些功能還不是很完善,有的功能也并未真正實現(xiàn)。 由于是第一次利用java寫這種系統(tǒng),之前也沒有學(xué)過java,所以可能還有很多不足

25、之處。由于經(jīng)驗有限以及知識的不足,雖然書本上介紹了許多關(guān)于系統(tǒng)設(shè)計方面的知識和操作方法,但是畢竟還是限于理論方面的,所以理解起來比較困難,一切都是按自己的摸索來構(gòu)建。點菜系統(tǒng)要實現(xiàn)的功能模塊比較少,所以在總體布局與頁面設(shè)計方面理解與實現(xiàn)起來也比較容易,不是那么繁瑣,都是java中最基本的東西。然而,在對系統(tǒng)的各個功能模塊的分析和設(shè)計中,因為沒有接觸過類似的情況,而至于系統(tǒng)的一些功能模塊分析無從下手。 在實際設(shè)計當(dāng)中也發(fā)現(xiàn)了很多問題。由于對整個系統(tǒng)的設(shè)計理解不夠深刻,加上分析做的不夠深入、不夠透徹就急于進(jìn)入系統(tǒng)設(shè)計階段,才導(dǎo)致了后來設(shè)計過程中出現(xiàn)的大量漏洞,不得不回頭來重新分析和彌補(bǔ)漏洞。比如起

26、先認(rèn)為很好的整個頁面布局,然而由于沒有考慮到設(shè)計軟件等各方面的原因,使得原來設(shè)計好的布局不得不重新調(diào)整,有時又會由于忘了某個功能忘了放進(jìn)去而又要重新調(diào)整,這樣弄來弄去以致浪費了大量的時間。另外,在涉及到各功能模塊的鏈接時,往往由于事先沒有一個總體的安排和考慮,以至于部分功能鏈接過程中出現(xiàn)了混亂的狀態(tài)。還有,由于自己平時在做數(shù)據(jù)庫設(shè)計時不是非常細(xì)心,也沒有做大量的數(shù)據(jù)分析,以至導(dǎo)致了后來在系統(tǒng)調(diào)試時出現(xiàn)了數(shù)據(jù)的亂碼和錯誤。所以,經(jīng)過這次的設(shè)計,我更加深刻地認(rèn)識到分析的重要性,它對于下階段工作開展的順利與否具有決定性的意義。 在整個系統(tǒng)的設(shè)計過程中,由于時間和各方面的原因,在設(shè)計過程中所使用的技術(shù)

27、要求難度不高,代碼只采用純java來實現(xiàn);另外由于有些想好的功能限于本人技術(shù)有限,所以有些地方做得不是很好,還存在一些漏洞。七、體會 本實驗的設(shè)計是培養(yǎng)我們綜合運用所學(xué)知識,提出,分析和解決實際問題,鍛煉實踐能力,提高我們用計算機(jī)java語言編程來解決實際問題。的確,從理解題目到完成整個編程,從理論到實踐,通過本程序的設(shè)計,不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。首先接觸到這個問題時,就開始看java方面的書,首先得掌握好理論知識,然后才好將其在一定的實際問題中將理論轉(zhuǎn)化為解決實際問題的方法。java語言作為一門高級實用的語言,在編程上具有很多獨特的特點,通過

28、本程序的設(shè)計,使我對java語言有了更進(jìn)一步的理解和掌握,但是這只是學(xué)習(xí)java語言的起步,要真正學(xué)好一門語言還有更深更廣的知識要我去掌握,特別是java語言中一些標(biāo)準(zhǔn)api接口函數(shù)。對我來說,程序是有很大難度的,但通過反復(fù)嘗試,編程還是有了結(jié)果。8、 參考文獻(xiàn)1 王行言、印旻著java語言與面向?qū)ο蟪绦蛟O(shè)計(第二版):清華大學(xué)出版社,2012年2 王珊、薩師煊著數(shù)據(jù)庫系統(tǒng)概論(第四版):高等教育出版社,2011年附源程序代碼:主程序:public class startsystemhere public static void main(string args) throws excepti

29、on new order();/進(jìn)入初始對話框初始界面:public class order implements actionlistener private jdialog dialog;public order() dialog = new jdialog(); /新建一個對話框dialog.settitle(餐廳點菜系統(tǒng)); /為該對話框設(shè)置標(biāo)題container contentpane = dialog.getcontentpane();/獲得其內(nèi)容面板jpanel buttonpanel = new jpanel();/創(chuàng)建一個中間容器jpaneljbutton b = new j

30、button(進(jìn)入系統(tǒng)); /創(chuàng)建一個組件按鈕b.addactionlistener(this);/為按鈕添加事件監(jiān)聽器對象buttonpanel.add(b); /將此按鈕添加到中間容器 b = new jbutton(退出系統(tǒng));/再創(chuàng)建一個按鈕b.addactionlistener(this);/為按鈕增加事件監(jiān)聽器buttonpanel.add(b); /將按鈕添加到中間容器buttonpanel.setborder(borderfactory.createtitledborder(borderfactory.createlineborder(color.pink, 2), 歡迎光臨,

31、titledborder.center, titledborder.top); /將中間容器添加到內(nèi)容面板contentpane.add(buttonpanel, borderlayout.center);buttonpanel.setbackground(color.pink);dialog.setbounds(230, 230, 200, 200);dialog.setvisible(true);public void actionperformed(actionevent e) string cmd = e.getactioncommand();if (cmd.equals(進(jìn)入系統(tǒng))

32、dialog.dispose(); /關(guān)閉對話框new menu().setvisible(true); /創(chuàng)建frame窗口if (cmd.equals(退出系統(tǒng))system.exit(0);主程序界面:public class menu implements actionlistener, itemlistener / 餐桌數(shù)public static final int count = 5;private jradiobutton r = new jradiobuttoncount;/ 菜品總數(shù)public static final int number = 10;private jr

33、adiobutton c = new jradiobuttonnumber;private jframe f = null;public void setvisible(boolean visible) if (f != null) f.setvisible(visible); /設(shè)置frame可見public menu() /創(chuàng)建jframe并指定其窗口標(biāo)題f = new jframe(請選擇您想要的桌號和您喜歡的菜); container dialogpane = f.getcontentpane();/獲得其內(nèi)容面板dialogpane.setlayout(new borderlayou

34、t();/為容器布局buttongroup bg = new buttongroup(); /按鈕組,可組合若干單選按鈕,同一時刻只能有一個按鈕被選中jpanel p1 = new jpanel();/創(chuàng)建一個無邊框中間容器p1.setbackground(color.orange);/為容器設(shè)置背景顏色p1.setlayout(new gridlayout(1, 5);/設(shè)置無邊框容器的布局管理p1.setborder(borderfactory.createtitledborder(borderfactory.createlineborder(color.green, 4), 請選擇桌號,

35、titledborder.center, titledborder.top);/ 數(shù)組大小必須與count一致string str = 1, 2, 3, 4, 5 ; /桌號for (int i = 0; i r.length; i+) ri = new jradiobutton(stri); /新建一個單選框,并指明其文本說明標(biāo)簽ri.additemlistener(this);p1.add(ri);/將單選框加入中間容器bg.add(ri);/將單選框加入按鈕組jpanel p2 = new jpanel();/創(chuàng)建一個中間容器p2.setlayout(new gridlayout(5,

36、2);/設(shè)置容器布局p2.setbackground(color.pink);/設(shè)置容器布局p2.setborder(borderfactory.createtitledborder(borderfactory.createlineborder(color.green, 4), 請選擇您喜歡的菜,titledborder.center, titledborder.top);/ 數(shù)組大小必須與number一致string strname = 球溪鰱魚 45元/份 , 黑椒牛排 58元/份 , 澳洲小龍蝦 36元/份 , 秘制小肉丸 36元/份 , 重慶辣子雞 30元/份 , 尖椒臘肉 48元/份

37、, 魚香土豆 15元/份 , 燒豬蹄 55元/份 , 生燜藕片 18元/份 , 番茄菜花 25元/份 ;for (int i = 0; i c.length; i+) ci = new jradiobutton(strnamei);/新建一個單選框ci.additemlistener(this);/監(jiān)聽單選框選中狀態(tài)p2.add(ci);/將單選框加入容器內(nèi)jpanel p3 = new jpanel();/新建一個容器p3.setlayout(new gridlayout(1, 2);/設(shè)置布局jbutton button1 = new jbutton(確 定);button1.setbac

38、kground(color.green);jbutton button2 = new jbutton(結(jié) 帳);button2.setbackground(color.cyan);jbutton button3 = new jbutton(取消);button3.setbackground(color.magenta);/為按鈕增加事件監(jiān)聽器button1.addactionlistener(this);button2.addactionlistener(this);button3.addactionlistener(this);/將按扭加入容器p3.add(button1);p3.add(b

39、utton2);p3.add(button3);/將三個容器加入內(nèi)容面板,并布局dialogpane.add(p1, borderlayout.north);dialogpane.add(p2, borderlayout.center);dialogpane.add(p3, borderlayout.south);f.getrootpane().setdefaultbutton(button1); /設(shè)置窗體回車對應(yīng)按鈕f.pack(); / 排版f.setbounds(350, 350, 450, 450);/設(shè)置窗體大小/用標(biāo)題欄上的關(guān)閉按鈕關(guān)閉窗口f.addwindowlistener(

40、new windowadapter() public void windowclosing(windowevent evt) /關(guān)閉窗口事件處理system.exit(0); );private int op = 0; / 代表幾號桌private menuinfo menu = new menuinfo();public void clean()menu = new menuinfo();for(int i=0;i c.length; i+)ci.setselected(false);/第幾號桌被選public void itemstatechanged(itemevent e) objec

41、t oj = e.getsource();for (int i = 0; i r.length; i+) if (ri = oj) op = i;clean();break;for (int i = 0; i c.length; i+) if (ci = oj) menu.setordermenu(i);/標(biāo)志哪道菜被點了break;public void actionperformed(actionevent e) string cmd = e.getactioncommand();if (cmd.equals(確 定) if (menu != null) / 保存數(shù)據(jù)menu.save(o

42、p); else if (cmd.equals(結(jié) 帳) new jiezhang();else if(cmd.equals(取消)try class.forname(sun.jdbc.odbc.jdbcodbcdriver);/裝載數(shù)據(jù)庫驅(qū)動程序/建立一個數(shù)據(jù)庫連接connection con = drivermanager.getconnection(jdbc:odbc:jiudian, test, 1234);statement stmt = con.createstatement();/創(chuàng)建一個statement對象stmt.executeupdate(delete from jiud

43、ian );/向數(shù)據(jù)庫發(fā)送sql語句刪除記錄catch (exception em) clean();public class menuinfo / 標(biāo)志哪道菜被點了?private boolean remark = new booleanmenu.number;/ 每道菜對應(yīng)的價格private int price = 45, 58, 36, 36,30,48,15,55,18,25;/ 每道菜對應(yīng)的菜名private string name = 球溪鰱魚 , 黑椒牛排 , 澳洲小龍蝦 , 秘制小肉丸,重慶辣子雞,尖椒臘肉,魚香土豆,燒豬蹄,生燜藕片,番茄菜花;/* * 如果菜名、價錢從數(shù)據(jù)

44、庫中讀取請在此構(gòu)造函數(shù)中初始化 * */public menuinfo() / 創(chuàng)建時默認(rèn)為 falsefor (int i = 0; i remark.length; i+)remarki = false;/* * 標(biāo)志第幾道菜被點了 * */public void setordermenu(int item) / 點了的就取消 ,沒點的就點上remarkitem = !remarkitem;/* * 標(biāo)志第幾道菜被點了 * * param item * 菜單索引值 * param mark * false 沒點 true 已點 */public void setordermenu(int

45、item, boolean mark) remarkitem = mark;/* * 按確定時保存數(shù)據(jù) * * param item * 餐桌號 */public void save(int item) / 數(shù)據(jù)庫操作try /裝載數(shù)據(jù)庫驅(qū)動程序 class.forname(sun.jdbc.odbc.jdbcodbcdriver);/建立一個數(shù)據(jù)庫連接connection con = drivermanager.getconnection(jdbc:odbc:jiudian, test, 1234);statement stmt = con.createstatement(); /創(chuàng)建一個s

46、tatement對象string sqlorder;/字符串變量,存放sql語句/ 保存點中的菜for (int i = 0; i remark.length; i+) if (remarki) /執(zhí)行insert語句 sqlorder = insert into jiudian values ( + item + ,+ namei + , + pricei + );stmt.executeupdate(sqlorder);/向數(shù)據(jù)庫中寫入語句/ 關(guān)閉數(shù)據(jù)庫連接stmt.close();con.close(); catch (exception em) 結(jié)賬功能:public class jiezhang implements actionlistener private jdialog dialog;private jlabel l1, l2, l3, l4, l5;private jtextfield f1 = new jtextfield();public jiezhang() dialog = new jdialog();dialog.settitle(結(jié)賬);container dialogpane = dialog.getcontentpane();dialogpane.setbackground(color.lig

溫馨提示

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

評論

0/150

提交評論