Java課程設(shè)計(jì)超市管理系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[共12頁]
《Java課程設(shè)計(jì)超市管理系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[共12頁]》由會員分享,可在線閱讀,更多相關(guān)《Java課程設(shè)計(jì)超市管理系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[共12頁](12頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、. 課 程 設(shè) 計(jì) 課程名稱 Java語言課程設(shè)計(jì) 題目名稱 超市管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)院 應(yīng)用數(shù)學(xué)學(xué)院 專業(yè)班級 信息與計(jì)算科學(xué)1班 學(xué) 號 學(xué)生姓名 指導(dǎo)教師 2013年 10 月24 日 超市管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 1系統(tǒng)設(shè)計(jì)內(nèi)容 隨著小超市規(guī)模的發(fā)展不斷擴(kuò)大,商品數(shù)量急劇增加,有關(guān)商品的各種信息量也成倍
2、增長。超市時時刻刻都需要對商品各種信息進(jìn)行統(tǒng)計(jì)分析。而大型的超市管理系統(tǒng)功能過于強(qiáng)大而造成操作繁瑣降低了小超市的工作效率。超市管理系統(tǒng)是市場上最流行的超市上常用的系統(tǒng)之一,它主要包含以下幾個模塊:系統(tǒng)登陸、商品入庫、商品查詢、商品更改和刪除等。從而,實(shí)現(xiàn)對進(jìn)貨、銷售及員工信息等實(shí)現(xiàn)全面、動態(tài)、及時的管理。本文系統(tǒng)的分析了軟件開發(fā)的背景以過程;首先介紹了軟件的開發(fā)環(huán)境,其次介紹了本軟件的詳細(xì)設(shè)計(jì)過程:數(shù)據(jù)庫的設(shè)計(jì)、各個模塊的設(shè)計(jì)和實(shí)現(xiàn),以及具體界面的設(shè)計(jì)和功能。 超市庫存管理系統(tǒng)是基于Java作為開發(fā)工具, Mysql作為后臺數(shù)據(jù)庫支持。超市庫存管理系統(tǒng)開發(fā)主要是界面程序的開發(fā)、數(shù)據(jù)庫的建立、
3、數(shù)據(jù)庫的維護(hù)。應(yīng)用程序功能完善,界面人機(jī)交互要好,而且操作簡單。同時JAVA語言簡單,在較短的時間內(nèi)能夠開發(fā)出使用性強(qiáng)、功能完善,易于操作的程序,也能實(shí)現(xiàn)與數(shù)據(jù)庫的連接。通過以上的需求分析,初步確定該系統(tǒng)功能主要包括以下幾個模塊: 1. 系統(tǒng)登錄 2. 商品入庫管理(包括商品信息管理) 3. 商品銷售管理 4. 用戶管理與權(quán)限管理 系統(tǒng)流程圖 輸入錯誤重新登 錄 系統(tǒng)登錄 確定登錄 銷售員登錄頁面 管理員登錄頁面 人員管理刪除 用戶注冊 密碼修改 個人信息修改 個人信息修改 密碼修改
4、 銷售管理 進(jìn)貨管理 刪除庫存商品 添加庫存商品 查詢庫存商品 結(jié)賬按鈕 刪除銷售商品 添加銷售商品 用戶信息數(shù)據(jù)庫 商品信息數(shù)據(jù)庫 2系統(tǒng)設(shè)計(jì)方案 2.1 JavaSwing概述 通過圖形用戶界面(GraphicalUserInterface,GUI),用戶和程序之間可以方便的進(jìn)行交互。Java的java.awt(AbstractWindowToolkit)包中包括了多種類和接口,用于在JavaApplication中進(jìn)行GUI編程。JavaSwing是JavaFoundationClasses(JFC)的一
5、部分,是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。在Swing中,Sun開發(fā)了一個經(jīng)過仔細(xì)設(shè)計(jì)的、靈活而強(qiáng)大的GUI工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。Swing增強(qiáng)了AWT中組件的功能,這引起增強(qiáng)的組件命名通常是在AWT組件名前增加了一個“J”字母;同時也提供了更多的組件庫,如:按鈕(JButton)、單選按鈕(JRadioButton)、復(fù)選框(JCheckBox)、文本區(qū)(JTextArea)、文本字段(JTextField)、
6、列表(JList)、組合框(JComboBox)、樹(JTree)、表格(JTable)。一個JavaGUI通常由頂層容器、中間容器以及多個原子組件組成。每個原子組件或容器都可能觸發(fā)相應(yīng)事件的產(chǎn)生。容器是一類能夠在其中容納其他組件的特殊組件。Swing的GUI組件類是按照類屬層次以樹狀結(jié)構(gòu)進(jìn)行組織的。在這個樹的最頂層,即樹的根部,使一個最基本的容器類,被稱為頂層容器。Swing提供了三個通用的頂層容器類JFrame,JDialog和JApplet。JFrame提供了基于窗體的應(yīng)用程序,JDialog提供對話框形式的界面,JApplet提供Java小應(yīng)用程序的界面形式。在頂層容器下是中間容器,用
7、于容納其他的組件。通常窗格本身在顯示界面中是看不到的。面板類Panel是一種中間容器,它的唯一作用是使組件更容易定位。頂層容器通過getContentPane()方法獲取內(nèi)部的一個內(nèi)容窗格。 2.2使用JDBC-ODBC與MySQL數(shù)據(jù)庫建立連接 1、在開發(fā)環(huán)境中加載指定數(shù)據(jù)庫的驅(qū)動程序。 2、在Java程序中加載驅(qū)動程序。在Java程序中,可以通過“Class.forName(“指定數(shù)據(jù)庫的驅(qū)動程序”)” 方式來加載添加到開發(fā)環(huán)境中的驅(qū)動程序,例如加載MySQL的數(shù)據(jù)驅(qū)動程序的代碼 為: Class.forName("org.gjt .mm.mysql.Driver");
8、 3、創(chuàng)建數(shù)據(jù)連接對象:通過DriverManager類創(chuàng)建數(shù)據(jù)庫連接對象Connection。DriverManager類作用于Java程序和JDBC驅(qū)動程序之間,用于檢查所加載的驅(qū)動程序是否可以建立連接,然后通過它的getConnection方法,根據(jù)數(shù)據(jù)庫的URL、用戶名和密碼,創(chuàng)建一個JDBC Connection 對象。如:Connection connection = DriverManager.geiConnection(“連接數(shù)據(jù)庫的URL", "用戶名", "密碼”)。本程序創(chuàng)建MySQL的數(shù)據(jù)庫連接代碼如下: String url = "jdbc:mysql://loca
9、lhost:3306/market"; String username = "root"; String password = "root"; connect = DriverManager.getConnection(url, username, password); 4、創(chuàng)建Statement對象:Statement 類的主要是用于執(zhí)行靜態(tài) SQL 語句并返回它所生成結(jié)果的對象。通過Connection 對象的 createStatement()方法可以創(chuàng)建一個Statement對象。例如:Statement statament = connection.createSta
10、tement();本程序創(chuàng)建Statement對象代碼如下: Statement stat = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 5、調(diào)用Statement對象的相關(guān)方法執(zhí)行相對應(yīng)的 SQL 語句:通過execuUpdate()方法用來數(shù)據(jù)的更新,包括插入和刪除等操作,通過調(diào)用Statement對象的executeQuery()方法進(jìn)行數(shù)據(jù)的查詢,而查詢結(jié)果會得到 ResulSet對象,ResulSet表示執(zhí)行查詢數(shù)據(jù)庫后返回的數(shù)據(jù)的集合,ResulSe
11、t對象具有可以指向當(dāng)前數(shù)據(jù)行的指針。通過該對象的next()方法,使得指針指向下一行,然后將數(shù)據(jù)以列號或者字段名取出。如果當(dāng)next()方法返回null,則表示下一行中沒有數(shù)據(jù)存在。使用示例代碼如下: ResultSet resultSel = statement.executeQuery(""select * from commodity";"); 6、關(guān)閉數(shù)據(jù)庫連接:使用完數(shù)據(jù)庫或者不需要訪問數(shù)據(jù)庫時,通過Connection的close()方法及時關(guān)閉數(shù)據(jù)連接。 商品數(shù)據(jù)項(xiàng)的描述: 數(shù)據(jù)項(xiàng)名 數(shù)據(jù)類型 長度 說明 number vachar 50 商品編號 CNa
12、me vachar 50 商品名稱 supplier vachar 50 商品供應(yīng)商 PArea vachar 50 商品生產(chǎn)地 unit vachar 50 商品單位 shelfFife vachar 50 商品規(guī)格 price float 50 商品價格 pack vachar 50 商品包裝 fullNumber float 50 商品數(shù)量 管理人員和銷售人員數(shù)據(jù)想描述:(其中1、2分別表示管理員、銷售員權(quán)限) user vachar 50 用戶名 password vachar 50 密碼 power
13、vachar 50 權(quán)限 3功能模塊詳細(xì)設(shè)計(jì)及實(shí)現(xiàn) 3.1 系統(tǒng)登錄頁面 統(tǒng)登錄模塊需要管理員和銷售員提供的用戶名、初始密碼和權(quán)限進(jìn)行登錄驗(yàn)證,如果成功則進(jìn)入系統(tǒng),否則提示無法登錄并返回登錄一面。運(yùn)行如圖 3.2管理員登錄頁面 管理員身份登錄成功進(jìn)入管理員登陸界面。其中包括模塊進(jìn)貨管理、查看所有人員、用戶注冊、密碼修改、個人信息修改。管理員登陸頁面運(yùn)行截圖 進(jìn)貨管理功能是通過系統(tǒng)中的public void allRecord() {}方法查詢數(shù)據(jù)庫commodity顯示超市倉庫中所有商品。但是在這里涉及一個類型轉(zhuǎn)化問題、因?yàn)樵跀?shù)據(jù)庫的設(shè)計(jì)中商品的數(shù)量和價格都是flo
14、at類型。在所有商品價格方面直接利用數(shù)據(jù)庫中的第七列和第九列的數(shù)據(jù)相乘。即sum += rSet.getFloat(7) * rSet.getFloat(9);但是在頁面中合計(jì)金額需要顯示的是一個string類型的,而這里的sum是一個float類型變量,則就需要用一個類型準(zhǔn)換語句,并將該值傳入文本框。語句分別為 String cString = new Float(sum).toString(); minventoryJFrame.getTotalJTextField().setText(cString); 運(yùn)行截圖 刪除按鈕的設(shè)計(jì)是通過查找商品編號進(jìn)行刪除。如果沒有對應(yīng)的商品則
15、通過JOptionPane.showMessageDialog(null, "庫存中沒有對應(yīng)的商品", "刪除記錄", 1)語句提示庫存中沒有對應(yīng)的商品、否則通過查詢數(shù)據(jù)庫并執(zhí)行下列語句刪除對應(yīng)的庫存品。 String sql = "delete from commodity where number=" + minventoryJFrame.getJTable().getValueAt(row, 0) + ""; stat.executeUpdate(sql); allRecord(); JOptionPane.showMessageDialog(null, "成功刪除記錄", "刪
16、除記錄", 1); 添加頁面設(shè)計(jì)需要對數(shù)據(jù)類型和對輸入文本框是否有空值進(jìn)行檢測,如果不合法則通過JOptionPane.showMessageDialog(this, "請確認(rèn)數(shù)據(jù)類型和是否有空值!")給出提示。否則通過執(zhí)行下列語句并提示添加商品成功信息。 String sql="INSERT INTO commodity(number,CName,supplier,PArea,unit,shelfFife,price,pack,fullNumber)"+"VALUES("+Number.getText()+","+CName.getText()+","+Supplier.getText(
17、)+","+PArea.getText()+","+unit.getText()+","+ShelfFife.getText()+","+Float.parseFloat(Price.getText())+","+Pack.getText()+","+Float.parseFloat(FullNumber.getText())+")"; stmt.executeUpdate(sql); JOptionPane.showMessageDialog(this, "商品添加成功!"); 運(yùn)行截圖 人員管理模塊可以查看所有人員直接通過下列語句String sql = "select * f
18、rom userinfo";獲取數(shù)據(jù)庫中的所有人員。運(yùn)行截圖 刪除人員則是通過選中人員所對應(yīng)的行進(jìn)行刪除。實(shí)現(xiàn)語句為: String sql="DELETE FROM userinfo WHERE user="+cellValue+""; 用戶注冊需要先查詢數(shù)據(jù)庫中的用戶名和密碼,如果都存在則提示該用戶已經(jīng)存在。不存在則可以通過下列語句注冊新員工 String str="INSERT INTO userinfo VALUES("+User+","+Password+","+power+","+personneID+","+SEX+","+Birthday+","+Job+","+I
19、d+")"; 密碼修改則即更新數(shù)據(jù)庫。通過下列語句可以實(shí)現(xiàn) String sql="UPDATE userinfo SET password="+String.valueOf(newPassword.getPassword())+" WHERE user="+cook.user+""; 用戶信息修改也是一個更新數(shù)據(jù)庫的操作,通過下列代碼可以實(shí)現(xiàn): String str="UPDATE userinfo SET sex="+SEX+",birthday="+Birthday+",job="+Job+",ID="+Id+" WHERE user="+cook.user+""; s
20、tmt.executeUpdate(str); 3.3 管理員登錄頁面 銷售人員身份登錄成功進(jìn)入銷售人員登陸頁面。其中包括商品的銷售、結(jié)賬頁面、其中個人信息修改和密碼修改和管理員的相似。銷售頁面通過輸入商品的編號和數(shù)量、在通過查詢數(shù)據(jù)庫中對應(yīng)的商品名稱和數(shù)量,如果沒有對用的商品則通過語句 JOptionPane.showMessageDialog(this, "對不起,暫時沒有這件商品,請聯(lián)系管理員添加!");提示沒有商品,如果商品數(shù)量不夠則通過語句 JOptionPane.showMessageDialog(this, "對不起,此商品庫存僅剩"+rs.getFloat("ful
21、lNumber"));給出銷售人員銷售數(shù)量超出庫存量的提示信息。但是在添加商品時本系統(tǒng)是利用數(shù)據(jù)庫查詢,再通過一個數(shù)組利用編號和數(shù)量進(jìn)行保存的。因?yàn)槿绻苯永脧膸齑鏀?shù)據(jù)庫中查詢再添加到一個銷售數(shù)據(jù)庫中是直接將庫存數(shù)據(jù)庫中的所有商品都添加到了銷售數(shù)據(jù)庫表中。實(shí)現(xiàn)的語句為
for(int i=0;i 22、alueAt(i, 8)));
}
while(rs.next()){
for(int i=0;i 23、RE number="+name+"";
stmt1.executeUpdate(sql);
}
}
通過上述語句可以添加銷售商品,在通過點(diǎn)擊確認(rèn)銷售按鈕時通過語句
int n=JOptionPane.showConfirmDialog(null, "確認(rèn)出售列表中貨物(共計(jì):"+acount+"元)?");銷售商品刪除按鈕是通過鼠標(biāo)選中需要刪除的行進(jìn)行刪除。執(zhí)行語句為:
if(myTable.getSelectedRow()!= -1){
in 24、t row1= myTable.getSelectedRow();
tableModel.removeRow(row1);
}
else{
JOptionPane.showMessageDialog(this, "請選中要刪除的信息再點(diǎn)擊刪除!");
}
}
運(yùn)行截圖
4 結(jié)論
通過此次的論文,我學(xué)到了很多知識,,在論文的寫作過程中,通過查資料和搜集有關(guān)的文獻(xiàn),培養(yǎng)了自學(xué)能力和編程能力。并且由原先的被動的接受知識轉(zhuǎn)換為主動的尋求知識,這可 25、以說是學(xué)習(xí)方法上的一個很大的突破。我們可能會記住很多的書本知識,但是通過課程設(shè)計(jì),我們學(xué)會了如何將學(xué)到的知識轉(zhuǎn)化為自己的東西,學(xué)會了怎么更好的處理知識和實(shí)踐相結(jié)合的問題。
次超市庫存管理系統(tǒng)課程設(shè)計(jì),讓我充分運(yùn)用自己所學(xué)的知識,讓我明白只有單純的理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有通過實(shí)際的鍛煉才能更好的運(yùn)用所掌握的基礎(chǔ)知識,才能在原有的基礎(chǔ)上提升自己的能力,提高自己解決問題的能力。在這短短的一個星期內(nèi),查閱有關(guān)的java學(xué)習(xí)資料和數(shù)據(jù)庫,設(shè)計(jì)的規(guī)則,代碼的編寫及到最后的調(diào)試。在設(shè)計(jì)過程中,通過對控件事件的處理,界面的布局,代碼的調(diào)試,充分鍛煉了自己的思維,獲得了充分的實(shí)際經(jīng)驗(yàn),提高了處理問題的能力, 26、同時也提高了對問題思考的應(yīng)急能力和抗壓力的能力。
經(jīng)過一個星期的努力,雖然設(shè)計(jì)已經(jīng)完成,但仍然有很多模塊和功能要完善,存在很多美中不足之處。但是基本上還能滿足小型超市的管理。在論文的寫作過程中也學(xué)到了做任何事情所要有的態(tài)度和心態(tài),對于出現(xiàn)的任何問題和偏差都不要輕視,要通過正確的途徑去解決,在做事情的過程中要有耐心和毅力,只要堅(jiān)持下去就可以找到思路去解決問題的。
五、問題與討論
問題一
頁面跳轉(zhuǎn)可以通過一個鼠標(biāo)監(jiān)聽器實(shí)現(xiàn),當(dāng)鼠標(biāo)點(diǎn)擊按鈕時事件被出發(fā),通過隱藏當(dāng)前頁面顯示需要的目的頁面。本程序則是通過三個抽象方法實(shí)現(xiàn)該功能。
鼠標(biāo)監(jiān)聽函數(shù):
public abstract void i 27、nitActionListener();
頁面顯示函數(shù)
public abstract void show();
當(dāng)前頁面隱藏函數(shù)
public abstract void hide();
問題二
在銷售頁面中添加銷售商品,我們剛開始的實(shí)現(xiàn)的從酷訊數(shù)據(jù)庫中去查詢對應(yīng)編號的商品,然后將對用的商品添加到一個臨時銷售商品數(shù)據(jù)庫保存表,但是早實(shí)現(xiàn)的過程中,如果查到該商品存在,通過編號主鍵將商品插入語句(insert into )插入到銷售表,但發(fā)現(xiàn)此操作的操作結(jié)果是只要一個條件符合查詢條件就是將庫存表中的所有記錄都插入到銷售表中。對于該問題的解決辦法是我們想到了JSP中的Cookies(Cookies是一種能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)儲存到客戶端的硬盤或內(nèi)存,或是從客戶端的硬盤讀取數(shù)據(jù)的一種技術(shù))實(shí)現(xiàn)了可以將需要銷售的商品臨時保存,當(dāng)點(diǎn)擊確認(rèn)銷售以后要,再通過循環(huán)表中的每一行將對應(yīng)的數(shù)據(jù)清除。實(shí)現(xiàn)函數(shù)為:
for(int i=0;i
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案