




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計課程名稱 Java語言課程設(shè)計題目名稱超市管理系統(tǒng)的設(shè)計與實現(xiàn)學(xué)生學(xué)院應(yīng)用數(shù)學(xué)學(xué)院專業(yè)班級信息與計算科學(xué) 1班學(xué) 號學(xué)生姓名 指導(dǎo)教師2013年10月24日 超市管理系統(tǒng)的設(shè)計與實現(xiàn)1系統(tǒng)設(shè)計內(nèi)容隨著小超市規(guī)模的發(fā)展不斷擴(kuò)大,商品數(shù)量急劇增加,有關(guān)商品的各種信息量也成 倍增長。超市時時刻刻都需要對商品各種信息進(jìn)行統(tǒng)計分析。而大型的超市管理系統(tǒng)功 能過于強(qiáng)大而造成操作繁瑣降低了小超市的工作效率。超市管理系統(tǒng)是市場上最流行的 超市上常用的系統(tǒng)之一,它主要包含以下幾個模塊:系統(tǒng)登陸、商品入庫、商品查詢、 商品更改和刪除等。從而,實現(xiàn)對進(jìn)貨、銷售及員工信息等實現(xiàn)全面、動態(tài)、及時的管 理。本文系
2、統(tǒng)的分析了軟件開發(fā)的背景以過程;首先介紹了軟件的開發(fā)環(huán)境,其次介紹 了本軟件的詳細(xì)設(shè)計過程:數(shù)據(jù)庫的設(shè)計、各個模塊的設(shè)計和實現(xiàn),以及具體界面的設(shè) 計和功能。超市庫存管理系統(tǒng)是基于Java作為開發(fā)工具,Mysql作為后臺數(shù)據(jù)庫支持。超市庫 存管理系統(tǒng)開發(fā)主要是界面程序的開發(fā)、數(shù)據(jù)庫的建立、數(shù)據(jù)庫的維護(hù)。應(yīng)用程序功能 完善,界面人機(jī)交互要好,而且操作簡單。同時 JAVA語言簡單,在較短的時間內(nèi)能夠開 發(fā)出使用性強(qiáng)、功能完善,易于操作的程序,也能實現(xiàn)與數(shù)據(jù)庫的連接。通過以上的需 求分析,初步確定該系統(tǒng)功能主要包括以下幾個模塊:1 .系統(tǒng)登錄2 .商品入庫管理(包括商品信息管理)3 .商品銷售管理4
3、.用戶管理與權(quán)限管理系統(tǒng)流程圖2.1里Java?Swi用于命Java?Applica.aaZ / k r ho ,個用戶信息數(shù)據(jù)信除詢ra確定登錄查茶銃設(shè)計方案jatiova.a個用于:個wt?(Abstract?Window?Toolkit)? 中標(biāo)Gu或ava?Swing是Java應(yīng)用程序用戶界面的開發(fā)erface多種英包的和確sses亍便1 5(JFC)Jva?Foundation?Cl 生具包。在 Swing-,Sun開發(fā)了一個經(jīng)過仔細(xì)設(shè)計的、靈活而強(qiáng)大的 ?gui?x具包。?它以抽象窗口工具包(awt為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼
4、 就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。?Swing增強(qiáng)了 AW#組件的功能,這引起增弓S的組件命名通常是在AWTfi件名前增加了一個“ J”字母;同時也提供了更多的組件庫,如:按鈕( JButton?)、單選按鈕(JRadioButton?)、 復(fù)選框(JCheckBox?)、文本區(qū)(JTextArea)、文本字段(JTextField)、列表(JList?)、組 合框(JComboBox?、樹(JTree)、表格(JTable)。一個Java?GUI通常由頂層容器、中間 容器以及多個原子組件組成。每個原子組件或容器都可能觸發(fā)相應(yīng)事件的產(chǎn)生。容器是 一類能夠在
5、其中容納其他組件的特殊組件。Swing的GUI組件類是按照類屬層次以樹狀結(jié) 構(gòu)進(jìn)行組織的。在這個樹的最頂層,即樹的根部,使一個最基本的容器類,被稱為頂層 容器。Swing?提供了三個通用的頂層容器類 JFrame, JDialog和JApplet。JFrame提供 了基于窗體的應(yīng)用程序,JDialog提供對話框形式的界面,JApplet提供Java小應(yīng)用程 序的界面形式。在頂層容器下是中間容器,用于容納其他的組件。通常窗格本身在顯示 界面中是看不到的。面板類Panel是一種中間容器,它的唯一作用是使組件更容易定位。 頂層容器通過getContentPane()方法獲取內(nèi)部的一個內(nèi)容窗格。?2.
6、2使用JDBC-ODBC MySQ!據(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.gjt3、創(chuàng)建數(shù)據(jù)連接對象:通過 DriverManager類創(chuàng)建數(shù)據(jù)庫連接對象 Connection。DriverManager類作用于Java程序和JDBC5區(qū)動程序之間,用于檢查所加載的驅(qū)動程序是 否可以建立連接,然后通過它的getConnection方
7、法,根據(jù)數(shù)據(jù)庫的URL用戶名和密碼, 創(chuàng)建一個 JDBC Connection 對象。如:Connection connection=?DriverManager.geiConnection(“連接數(shù)據(jù)庫的 URL,用戶名,“密碼”)。本程序創(chuàng)建MySQL勺數(shù)據(jù)庫連接代碼如下:String username = root;String password = root;connect = DriverManager.getConnection(url, username, password);4、創(chuàng)建Statement對象:Statement類的主要是用于執(zhí)行靜態(tài)SQL語句并返回它所生 成結(jié)果的
8、對象。通過 Connection 對象的createStatement() 方法可以創(chuàng)建一個 Statement 對象。例如: Statement statament = connection.createStatement();? 本程 序創(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ù)的更新
9、,包括插入和刪除等操作,通過調(diào)用Statement對象的executeQuery()方法進(jìn)行數(shù)據(jù)的查詢,而查詢結(jié)果會得到ResulSet對象,ResulSet表示執(zhí)行查詢數(shù)據(jù)庫后返回的數(shù)據(jù)的集合,ResulSet對象具有可以指向當(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ù)庫或者
10、不需要訪問數(shù)據(jù)庫時,通過Connection的close()? 方法及時關(guān)閉數(shù)據(jù)連接。商品數(shù)據(jù)項的描述:數(shù)據(jù)項名數(shù)據(jù)類型長度說明numbervachar50商口口編pCNamevachar50冏品名稱suppliervachar50冏品供應(yīng)商PAreavachar50商品生產(chǎn)地unitvachar50商品單位shelfFifevachar50商品規(guī)格pricefloat50商品價格packvachar50商品包裝fullNumberfloat50商品數(shù)量管理人員和銷售人員數(shù)據(jù)想描述:(其中1、2分別表示管理員、銷售員權(quán)限)uservachar50用戶名passwordvachar50密碼pow
11、ervachar50權(quán)限3 功能模塊詳細(xì)設(shè)計及實現(xiàn)3.1 系統(tǒng)登錄頁面統(tǒng)登錄模塊需要管理員和銷售員提供的用戶名、初始密碼和權(quán)限進(jìn)行登錄驗證,如果成功則進(jìn)入系統(tǒng),否則提示無法登錄并返回登錄一面。運行如圖3.2 管理員登錄頁面管理員身份登錄成功進(jìn)入管理員登陸界面。其中包括模塊進(jìn)貨管理、查看所有人員、用戶注冊、密碼修改、個人信息修改。管理員登陸頁面運行截圖進(jìn)貨 管理 功能 是通 過 系統(tǒng) 中的 public void allRecord() 方法查 詢數(shù)據(jù)庫 commodity 顯示超市倉庫中所有商品。但是在這里涉及一個類型轉(zhuǎn)化問題、因為在數(shù)據(jù)庫的設(shè)計中商品的數(shù)量和價格都是float 類型。在所有商
12、品價格方面直接利用數(shù)據(jù)庫中的第七列和第九列的數(shù)據(jù)相乘。即sum += rSet.getFloat(7) * rSet.getFloat(9);但是在頁面中合計金額需要顯示的是一個string類型的,而這里的sum是一個float類型變量,則就需要用一個類型準(zhǔn)換語句,并將該值傳入文本框。語句分別為String cString = new Float(sum).toString();minventoryJFrame.getTotalJTextField().setText(cString);運行截圖刪除按鈕的設(shè)計是通過查找商品編號進(jìn)行刪除。如果沒有對應(yīng)的商品則通過JOptionPane.showM
13、essageDialog(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, 成功刪除記錄, 刪除記錄, 1);添加頁面設(shè)計需要對數(shù)據(jù)類型和對輸入文本框是否有空值進(jìn)行檢測
14、,如果不合法則通過 JOptionPane.showMessageDialog(this, 請確認(rèn)數(shù)據(jù)類型和是否有空值!) 給出提示。否則通過執(zhí)行下列語句并提示添加商品成功信息。Stringsql=INSERTINTOcommodity(number,CName,supplier,PArea,unit,shelfFife,price,pack,fullNumber) +VALUES(+Number.getText()+,+CName.getText()+,+Supplier.getText()+ ,+PArea.getText()+,+unit.getText()+,+ShelfFife.ge
15、tText()+,+F loat.parseFloat(Price.getText()+,+Pack.getText()+,+Float.parseFloat (FullNumber.getText()+); stmt.executeUpdate(sql); JOptionPane.showMessageDialog(this, 商品添加成功!);運行截圖人員管理模塊可以查看所有人員直接通過下列語句String sql = select * fromuserinfo; 獲取數(shù)據(jù)庫中的所有人員。運行截圖 刪除人員則是通過選中人員所對應(yīng)的行進(jìn)行刪除。實現(xiàn)語句為:String sql=DELETE
16、FROM userinfo WHERE user=+cellValue+;用戶注冊需要先查詢數(shù)據(jù)庫中的用戶名和密碼,如果都存在則提示該用戶已經(jīng)存在。不存在則可以通過下列語句注冊新員工Stringstr=INSERTINTOuserinfoVALUES(+User+,+Password+,+power+,+personneID+,+SEX+,+B irthday+,+Job+,+Id+);密碼修改則即更新數(shù)據(jù)庫。通過下列語句可以實現(xiàn)Stringsql=UPDATEuserinfoSETpassword=+String.valueOf(newPassword.getPassword()+WHERE
17、user=+cook.user+; 用戶信息修改也是一個更新數(shù)據(jù)庫的操作,通過下列代碼可以實現(xiàn):Stringstr=UPDATEuserinfoSETsex=+SEX+,birthday=+Birthday+,job=+Job+,ID=+Id+WHEREuser=+cook.user+; stmt.executeUpdate(str);3.3 管理員登錄頁面銷售人員身份登錄成功進(jìn)入銷售人員登陸頁面。其中包括商品的銷售、結(jié)賬頁面、其中個人信息修改和密碼修改和管理員的相似。銷售頁面通過輸入商品的編號和數(shù)量、在通過查詢數(shù)據(jù)庫中對應(yīng)的商品名稱和數(shù)量,如果沒有對用的商品則通過語句JOptionPane.
18、showMessageDialog(this,對不起,暫時沒有這件商品,請聯(lián)系管理員添加! ); 提示沒有商品,如果商品數(shù)量不夠則通過語句JOptionPane.showMessageDialog(this, 對 不 起 , 此 商 品 庫 存 僅 剩 +rs.getFloat(fullNumber); 給出銷售人員銷售數(shù)量超出庫存量的提示信息。但是在添加商品時本系統(tǒng)是利用數(shù)據(jù)庫查詢,再通過一個數(shù)組利用編號和數(shù)量進(jìn)行保存的。因 為如果直接利用從庫存數(shù)據(jù)庫中查詢再添加到一個銷售數(shù)據(jù)庫中是直接將庫存數(shù)據(jù)庫中 的所有商品都添加到了銷售數(shù)據(jù)庫表中。實現(xiàn)的語句為 for(int i=0;irows;i+
19、)Namei=String.valueOf(tableModel.getValueAt(i, 0);Qi=Float.parseFloat(String.valueOf(tableModel.getValueAt(i, 8); while(rs.next()for(int i=0;irows;i+)String name=rs.getString(number);if(name.equals(Namei)Qi=rs.getFloat(fullNumber)-Qi;String sql=UPDATE commodity SET fullNumber=+Qi+ WHERE number=+name
20、+;stmt1.executeUpdate(sql); 通過上述語句可以添加銷售商品,在通過點擊確認(rèn)銷售按鈕時通過語句 int n=JOptionPane.showConfirmDialog(null, 確認(rèn)出售列表中貨物(共計: +acount+元)?); 銷售商品刪除按鈕是通過鼠標(biāo)選中需要刪除的行進(jìn)行刪除。執(zhí)行語句為:if(myTable.getSelectedRow()!= -1)int row1= myTable.getSelectedRow();tableModel.removeRow(row1);elseJOptionPane.showMessageDialog(this,”請選中
21、要刪除的信息再點擊刪除!);運行截圖4結(jié)論通過此次的論文,我學(xué)到了很多知識,在論文的寫作過程中,通過查資料和搜集有 關(guān)的文獻(xiàn),培養(yǎng)了自學(xué)能力和編程能力。并且由原先的被動的接受知識轉(zhuǎn)換為主動的尋 求知識,這可以說是學(xué)習(xí)方法上的一個很大的突破。我們可能會記住很多的書本知識, 但是通過課程設(shè)計,我們學(xué)會了如何將學(xué)到的知識轉(zhuǎn)化為自己的東西,學(xué)會了怎么更好 的處理知識和實踐相結(jié)合的問題。次超市庫存管理系統(tǒng)課程設(shè)計,讓我充分運用自己所學(xué)的知識,讓我明白只有單純 的理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有通過實際的鍛煉才能更好的運用所掌握的基礎(chǔ)知識,才 能在原有的基礎(chǔ)上提升自己的能力,提高自己解決問題的能力。在這短短的一個星期內(nèi), 查閱有關(guān)的java學(xué)習(xí)資料和數(shù)據(jù)庫,設(shè)計的規(guī)則,代碼的編寫及到最后的調(diào)試。在設(shè)計 過程中,通過對控件事件的處理,界面的布局,代碼的調(diào)試,充分鍛煉了自己的思維, 獲得了充分的實際經(jīng)驗,提高了處理問題的能力,同時也提高了對問題思考的應(yīng)急能力 和抗壓力的能力。經(jīng)過
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)美醫(yī)生合同范本
- 低層房屋租賃合同范本
- 高中拓展訓(xùn)練合同范本
- 委托合同范本由誰提供范本
- 鋼筋工地勞務(wù)合同范本
- 特殊貨車出售合同范本
- 廠內(nèi)訂單合同范本
- 房屋租賃合同 (三)
- 零售藥店醫(yī)療保障定點管理
- 香港中文大學(xué)(深圳)《口腔頜面外科學(xué)實驗二》2023-2024學(xué)年第二學(xué)期期末試卷
- 數(shù)學(xué)-山東省青島市2025年高三年級第一次適應(yīng)性檢測(青島一模)試題和答案
- 2025年石家莊市高三數(shù)學(xué)教學(xué)質(zhì)量檢測卷(一)附答案解析
- 8.4 同一直線上二力的合成 (課件)2024-2025學(xué)年人教版八年級物理下冊
- 統(tǒng)計法律知識培訓(xùn)課件
- 活動三《垃圾“流浪”記》(教學(xué)設(shè)計)-2023-2024學(xué)年三年級下冊綜合實踐活動滬科黔科版
- 2024-2025學(xué)年上海六年級語文上學(xué)期期末復(fù)習(xí)分類匯編:現(xiàn)代文閱讀之說明文15篇(熱點預(yù)測)
- 杭州市2025年官方拆遷補(bǔ)償協(xié)議
- 2025年南京科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 互聯(lián)網(wǎng)金融 個人網(wǎng)絡(luò)消費信貸 貸后催收風(fēng)控指引
- 回彈法檢測混凝土抗壓強(qiáng)度技術(shù)規(guī)程
- 下穿渝合高速施工方案
評論
0/150
提交評論