Java課程設計超市管理系統(tǒng)設計實現(xiàn)[共12頁]
《Java課程設計超市管理系統(tǒng)設計實現(xiàn)[共12頁]》由會員分享,可在線閱讀,更多相關(guān)《Java課程設計超市管理系統(tǒng)設計實現(xiàn)[共12頁](12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、. 課 程 設 計 課程名稱 Java語言課程設計 題目名稱 超市管理系統(tǒng)的設計與實現(xiàn) 學生學院 應用數(shù)學學院 專業(yè)班級 信息與計算科學1班 學 號 學生姓名 指導教師 2013年 10 月24 日 超市管理系統(tǒng)的設計與實現(xiàn) 1系統(tǒng)設計內(nèi)容 隨著小超市規(guī)模的發(fā)展不斷擴大,商品數(shù)量急劇增加,有關(guān)商品的各種信息量也成倍
2、增長。超市時時刻刻都需要對商品各種信息進行統(tǒng)計分析。而大型的超市管理系統(tǒng)功能過于強大而造成操作繁瑣降低了小超市的工作效率。超市管理系統(tǒng)是市場上最流行的超市上常用的系統(tǒng)之一,它主要包含以下幾個模塊:系統(tǒng)登陸、商品入庫、商品查詢、商品更改和刪除等。從而,實現(xiàn)對進貨、銷售及員工信息等實現(xiàn)全面、動態(tài)、及時的管理。本文系統(tǒng)的分析了軟件開發(fā)的背景以過程;首先介紹了軟件的開發(fā)環(huán)境,其次介紹了本軟件的詳細設計過程:數(shù)據(jù)庫的設計、各個模塊的設計和實現(xiàn),以及具體界面的設計和功能。 超市庫存管理系統(tǒng)是基于Java作為開發(fā)工具, Mysql作為后臺數(shù)據(jù)庫支持。超市庫存管理系統(tǒng)開發(fā)主要是界面程序的開發(fā)、數(shù)據(jù)庫的建立、
3、數(shù)據(jù)庫的維護。應用程序功能完善,界面人機交互要好,而且操作簡單。同時JAVA語言簡單,在較短的時間內(nèi)能夠開發(fā)出使用性強、功能完善,易于操作的程序,也能實現(xiàn)與數(shù)據(jù)庫的連接。通過以上的需求分析,初步確定該系統(tǒng)功能主要包括以下幾個模塊: 1. 系統(tǒng)登錄 2. 商品入庫管理(包括商品信息管理) 3. 商品銷售管理 4. 用戶管理與權(quán)限管理 系統(tǒng)流程圖 輸入錯誤重新登 錄 系統(tǒng)登錄 確定登錄 銷售員登錄頁面 管理員登錄頁面 人員管理刪除 用戶注冊 密碼修改 個人信息修改 個人信息修改 密碼修改
4、 銷售管理 進貨管理 刪除庫存商品 添加庫存商品 查詢庫存商品 結(jié)賬按鈕 刪除銷售商品 添加銷售商品 用戶信息數(shù)據(jù)庫 商品信息數(shù)據(jù)庫 2系統(tǒng)設計方案 2.1 JavaSwing概述 通過圖形用戶界面(GraphicalUserInterface,GUI),用戶和程序之間可以方便的進行交互。Java的java.awt(AbstractWindowToolkit)包中包括了多種類和接口,用于在JavaApplication中進行GUI編程。JavaSwing是JavaFoundationClasses(JFC)的一
5、部分,是一個用于開發(fā)Java應用程序用戶界面的開發(fā)工具包。在Swing中,Sun開發(fā)了一個經(jīng)過仔細設計的、靈活而強大的GUI工具包。它以抽象窗口工具包(AWT)為基礎使跨平臺應用程序可以使用任何可插拔的外觀風格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。Swing增強了AWT中組件的功能,這引起增強的組件命名通常是在AWT組件名前增加了一個“J”字母;同時也提供了更多的組件庫,如:按鈕(JButton)、單選按鈕(JRadioButton)、復選框(JCheckBox)、文本區(qū)(JTextArea)、文本字段(JTextField)、
6、列表(JList)、組合框(JComboBox)、樹(JTree)、表格(JTable)。一個JavaGUI通常由頂層容器、中間容器以及多個原子組件組成。每個原子組件或容器都可能觸發(fā)相應事件的產(chǎn)生。容器是一類能夠在其中容納其他組件的特殊組件。Swing的GUI組件類是按照類屬層次以樹狀結(jié)構(gòu)進行組織的。在這個樹的最頂層,即樹的根部,使一個最基本的容器類,被稱為頂層容器。Swing提供了三個通用的頂層容器類JFrame,JDialog和JApplet。JFrame提供了基于窗體的應用程序,JDialog提供對話框形式的界面,JApplet提供Java小應用程序的界面形式。在頂層容器下是中間容器,用
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í)行相對應的 SQL 語句:通過execuUpdate()方法用來數(shù)據(jù)的更新,包括插入和刪除等操作,通過調(diào)用Statement對象的executeQuery()方法進行數(shù)據(jù)的查詢,而查詢結(jié)果會得到 ResulSet對象,ResulSet表示執(zhí)行查詢數(shù)據(jù)庫后返回的數(shù)據(jù)的集合,ResulSe
11、t對象具有可以指向當前數(shù)據(jù)行的指針。通過該對象的next()方法,使得指針指向下一行,然后將數(shù)據(jù)以列號或者字段名取出。如果當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ù)項的描述: 數(shù)據(jù)項名 數(shù)據(jù)類型 長度 說明 number vachar 50 商品編號 CNa
12、me vachar 50 商品名稱 supplier vachar 50 商品供應商 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功能模塊詳細設計及實現(xiàn) 3.1 系統(tǒng)登錄頁面 統(tǒng)登錄模塊需要管理員和銷售員提供的用戶名、初始密碼和權(quán)限進行登錄驗證,如果成功則進入系統(tǒng),否則提示無法登錄并返回登錄一面。運行如圖 3.2管理員登錄頁面 管理員身份登錄成功進入管理員登陸界面。其中包括模塊進貨管理、查看所有人員、用戶注冊、密碼修改、個人信息修改。管理員登陸頁面運行截圖 進貨管理功能是通過系統(tǒng)中的public void allRecord() {}方法查詢數(shù)據(jù)庫commodity顯示超市倉庫中所有商品。但是在這里涉及一個類型轉(zhuǎn)化問題、因為在數(shù)據(jù)庫的設計中商品的數(shù)量和價格都是flo
14、at類型。在所有商品價格方面直接利用數(shù)據(jù)庫中的第七列和第九列的數(shù)據(jù)相乘。即sum += rSet.getFloat(7) * rSet.getFloat(9);但是在頁面中合計金額需要顯示的是一個string類型的,而這里的sum是一個float類型變量,則就需要用一個類型準換語句,并將該值傳入文本框。語句分別為 String cString = new Float(sum).toString(); minventoryJFrame.getTotalJTextField().setText(cString); 運行截圖 刪除按鈕的設計是通過查找商品編號進行刪除。如果沒有對應的商品則
15、通過JOptionPane.showMessageDialog(null, "庫存中沒有對應的商品", "刪除記錄", 1)語句提示庫存中沒有對應的商品、否則通過查詢數(shù)據(jù)庫并執(zhí)行下列語句刪除對應的庫存品。 String sql = "delete from commodity where number=" + minventoryJFrame.getJTable().getValueAt(row, 0) + ""; stat.executeUpdate(sql); allRecord(); JOptionPane.showMessageDialog(null, "成功刪除記錄", "刪
16、除記錄", 1); 添加頁面設計需要對數(shù)據(jù)類型和對輸入文本框是否有空值進行檢測,如果不合法則通過JOptionPane.showMessageDialog(this, "請確認數(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, "商品添加成功!"); 運行截圖 人員管理模塊可以查看所有人員直接通過下列語句String sql = "select * f
18、rom userinfo";獲取數(shù)據(jù)庫中的所有人員。運行截圖 刪除人員則是通過選中人員所對應的行進行刪除。實現(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ù)庫。通過下列語句可以實現(xiàn) String sql="UPDATE userinfo SET password="+String.valueOf(newPassword.getPassword())+" WHERE user="+cook.user+""; 用戶信息修改也是一個更新數(shù)據(jù)庫的操作,通過下列代碼可以實現(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 管理員登錄頁面 銷售人員身份登錄成功進入銷售人員登陸頁面。其中包括商品的銷售、結(jié)賬頁面、其中個人信息修改和密碼修改和管理員的相似。銷售頁面通過輸入商品的編號和數(shù)量、在通過查詢數(shù)據(jù)庫中對應的商品名稱和數(shù)量,如果沒有對用的商品則通過語句 JOptionPane.showMessageDialog(this, "對不起,暫時沒有這件商品,請聯(lián)系管理員添加!");提示沒有商品,如果商品數(shù)量不夠則通過語句 JOptionPane.showMessageDialog(this, "對不起,此商品庫存僅剩"+rs.getFloat("ful
21、lNumber"));給出銷售人員銷售數(shù)量超出庫存量的提示信息。但是在添加商品時本系統(tǒng)是利用數(shù)據(jù)庫查詢,再通過一個數(shù)組利用編號和數(shù)量進行保存的。因為如果直接利用從庫存數(shù)據(jù)庫中查詢再添加到一個銷售數(shù)據(jù)庫中是直接將庫存數(shù)據(jù)庫中的所有商品都添加到了銷售數(shù)據(jù)庫表中。實現(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);
}
}
通過上述語句可以添加銷售商品,在通過點擊確認銷售按鈕時通過語句
int n=JOptionPane.showConfirmDialog(null, "確認出售列表中貨物(共計:"+acount+"元)?");銷售商品刪除按鈕是通過鼠標選中需要刪除的行進行刪除。執(zhí)行語句為:
if(myTable.getSelectedRow()!= -1){
in 24、t row1= myTable.getSelectedRow();
tableModel.removeRow(row1);
}
else{
JOptionPane.showMessageDialog(this, "請選中要刪除的信息再點擊刪除!");
}
}
運行截圖
4 結(jié)論
通過此次的論文,我學到了很多知識,,在論文的寫作過程中,通過查資料和搜集有關(guān)的文獻,培養(yǎng)了自學能力和編程能力。并且由原先的被動的接受知識轉(zhuǎn)換為主動的尋求知識,這可 25、以說是學習方法上的一個很大的突破。我們可能會記住很多的書本知識,但是通過課程設計,我們學會了如何將學到的知識轉(zhuǎn)化為自己的東西,學會了怎么更好的處理知識和實踐相結(jié)合的問題。
次超市庫存管理系統(tǒng)課程設計,讓我充分運用自己所學的知識,讓我明白只有單純的理論知識是遠遠不夠的,只有通過實際的鍛煉才能更好的運用所掌握的基礎知識,才能在原有的基礎上提升自己的能力,提高自己解決問題的能力。在這短短的一個星期內(nèi),查閱有關(guān)的java學習資料和數(shù)據(jù)庫,設計的規(guī)則,代碼的編寫及到最后的調(diào)試。在設計過程中,通過對控件事件的處理,界面的布局,代碼的調(diào)試,充分鍛煉了自己的思維,獲得了充分的實際經(jīng)驗,提高了處理問題的能力, 26、同時也提高了對問題思考的應急能力和抗壓力的能力。
經(jīng)過一個星期的努力,雖然設計已經(jīng)完成,但仍然有很多模塊和功能要完善,存在很多美中不足之處。但是基本上還能滿足小型超市的管理。在論文的寫作過程中也學到了做任何事情所要有的態(tài)度和心態(tài),對于出現(xiàn)的任何問題和偏差都不要輕視,要通過正確的途徑去解決,在做事情的過程中要有耐心和毅力,只要堅持下去就可以找到思路去解決問題的。
五、問題與討論
問題一
頁面跳轉(zhuǎn)可以通過一個鼠標監(jiān)聽器實現(xiàn),當鼠標點擊按鈕時事件被出發(fā),通過隱藏當前頁面顯示需要的目的頁面。本程序則是通過三個抽象方法實現(xiàn)該功能。
鼠標監(jiān)聽函數(shù):
public abstract void i 27、nitActionListener();
頁面顯示函數(shù)
public abstract void show();
當前頁面隱藏函數(shù)
public abstract void hide();
問題二
在銷售頁面中添加銷售商品,我們剛開始的實現(xiàn)的從酷訊數(shù)據(jù)庫中去查詢對應編號的商品,然后將對用的商品添加到一個臨時銷售商品數(shù)據(jù)庫保存表,但是早實現(xiàn)的過程中,如果查到該商品存在,通過編號主鍵將商品插入語句(insert into )插入到銷售表,但發(fā)現(xiàn)此操作的操作結(jié)果是只要一個條件符合查詢條件就是將庫存表中的所有記錄都插入到銷售表中。對于該問題的解決辦法是我們想到了JSP中的Cookies(Cookies是一種能夠讓網(wǎng)站服務器把少量數(shù)據(jù)儲存到客戶端的硬盤或內(nèi)存,或是從客戶端的硬盤讀取數(shù)據(jù)的一種技術(shù))實現(xiàn)了可以將需要銷售的商品臨時保存,當點擊確認銷售以后要,再通過循環(huán)表中的每一行將對應的數(shù)據(jù)清除。實現(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓資料:典型建筑火災的防治基本原則與救援技術(shù)
- 企業(yè)雙重預防體系應知應會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應急處置預案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃氣安全生產(chǎn)企業(yè)主要負責人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析