java實現商品資訊管理系統
超市商品管理系統,供大家參考,具體內容如下
題目要求
超市中商品分為四類,分別是食品、化妝品、日用品和飲料。每種商品都包含商品名稱、價格、庫存量和生產廠家、品牌等資訊。主要完成對商品的銷售、統計和簡單管理。這個題目相對簡單,可以用一張表實現資訊的儲存和處理,因此不再給出資料庫設計參考。
功能要求
(1)銷售功能。
購買商品時,先輸入類別,然後輸入商品名稱,並在庫存中查詢該商品的相關資訊。如果有庫存量,輸入購買的數量,進行相應計算。如果庫存量不夠,給出提示資訊,結束購買。
(2)商品簡單管理功能。
新增功能:主要完成商品資訊的新增。
查詢功能:可按商品類別、商品名稱、生產廠家進行查詢。若存在相應資訊,輸出所查詢的資訊,若不存在該記錄,則提示“該記錄不存在!”。
刪除功能:主要完成商品資訊的刪除。先輸入商品類別,再輸入要刪除的商品名稱,根據查詢結果刪除該物品的記錄,如果該商品不在物品庫中,則提示“該商品不存在”。
(3)統計功能。
輸出當前庫存中所有商品的總數及詳細資訊;可按商品的價格、庫存量、生產廠家進行統計,輸出統計資訊時,要按從大到小進行排序。
(7)商品資訊存檔:將當前程式中的商品資訊存入檔案中。
(8)讀出資訊:從檔案中將商品資訊讀入程式。
問題的解決方案
根據系統功能要求,可以將問題解決分為以下步驟:
(1)應用系統分析,建立該系統的功能模組框圖以及介面的組織和設計;
(2)分析系統中的各個實體及它們之間的關係;
(4)完成類層次中各個類的描述;
(5)完成類中各個成員函式的定義;
(6)完成系統的應用模組;
(7)功能除錯;
設計思路
可以對超市商品進行管理的人員主要有超市的商家和顧客,商家可以對超市的商品進行增﹑刪﹑改﹑查操作,而顧客只能查詢和購買商品。增加商品時,要新增商品的全部資訊(編號﹑類別﹑名稱﹑價格﹑庫存量﹑品牌﹑生產廠家),刪除時只需要輸入商品編號便可刪除該商品的全部資訊,修改時要先輸入商品編號,然後再確定要修改該商品的哪一個值,以及要將該值修改為什麼,查詢時只要輸入想要查詢商品的任意一個資訊並選擇商品類別便可查出該商品的全部資訊。
實現:
建立並連線資料庫與基本表
連線資料庫時需要用到JDBC,它由Java程式語言編寫的類和介面組成,是實現Java與各種資料庫連線的關鍵,提供了將Java與資料庫連線起來的程式介面,使使用者可以以SQL的形式編寫訪問請求,然後傳給資料庫,其結果再由這一介面返回,從而實現對資料庫中資料操作的目的。超市商品管理系統採用了MySQL作為資料庫,所建的系統資料庫名為“goods”。通過需求分析、概念設計與邏輯設計,可知該系統資料庫只需建立一個商品表即可
結構設計
該系統用於對商品的基本資訊進行管理,主要包括新增、修改、查詢和刪除商品基本資訊,為了方便,全部操作均在介面中完成。由此,將該系統結構設計為登入模組、顧客模組、商家模組。由於涉及介面設計,因此呼叫了java.awt.、java.awt.event.、javax.swing.、java.util.、javax.swing.event.*、java.sql.*等包。
實現登入模組
要生成一個介面,可應用AWT知識。設定其名字為商品資訊管理系統;設定佈局管理器為(null)佈局管理器,方便往其中放元件;設定視窗大小和位置,還要設定視窗可見性。
生成介面後,接下來就需要實現每個功能,第一個功能就是要對操作物件的身份進行選擇,這裡要用下拉列表的形式進行選擇,也可以用單選按鈕來完成這個功能。在這項功能中,首先要選擇身份,所以要定義一個JLabel來說明,定義完JLabel後,就需要定義一個JComoBox,下拉列表框。
輸入使用者名稱和密碼。需要用兩個JLabel來指明需要輸入使用者名稱和密碼。輸入使用者名稱需要定義一個JTextField,單文字框。同時輸入文字,但輸入密碼和輸入使用者名稱是不一樣的,它需要定義成JPasswordField,它的輸出結果為“*****”這樣的形式。
建立兩個按鈕,一個是登入按鈕,另一個是取消登入按鈕,用來輸入的使用者名稱和密碼及選擇的身份進行提交,然後根據選擇的身份來選擇需要進入那個介面,其程式碼如下:
public class info_Manage extends JFrame implements ActionListener{ private JLabel username = new JLabel("使用者名稱"); private JTextField userName = new JTextField(); private JLabel psw = new JLabel("密碼"); private JPasswordField Psw = new JPasswordField(); JLabel jlp=new JLabel("身份"); String str[]={"顧客","商家"}; JComboBox jcb=new JComboBox(str); private JButton jb1 = new JButton("登入"); private JButton jb2 = new JButton("取消"); public info_Manage(){ this.setTitle("商品資訊管理系統"); this.setLayout(null); username.setBounds(100,50,100,20); this.add(username); userName.setBounds(150,20); this.add(userName); psw.setBounds(100,20); this.add(psw); Psw.setBounds(150,20); this.add(Psw); jlp.setBounds(100,150,20); this.add(jlp); jcb.setBounds(150,20); this.add(jcb); jcb.addActionListener(this); jb1.setBounds(100,210,60,20); this.add(jb1); jb1.addActionListener(this); jb2.setBounds(200,20); this.add(jb2); jb2.addActionListener(this); this.setVisible(true); this.setBounds(10,10,390,330); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new info_Manage(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == jb1) { String name=userName.getText(); String password = new String(Psw.getPassword()); if(name.length()==0&&password.length()!=0) JOptionPane.showMessageDialog( null,"請輸入使用者名稱"); else if(name.length()!=0&&password.length()==0) JOptionPane.showMessageDialog( null,"請輸入密碼"); else if(name.length()==0&&name.length()==0) JOptionPane.showMessageDialog( null,"請輸入使用者名稱和密碼"); else if(jcb.getSelectedIndex()==0&&name.length()!=0&&name.length()!=0) new custom_Manage(); else if(jcb.getSelectedIndex()==1&&name.length()!=0&&password.length()!=0) new seller_Manage(); } else if(e.getSource()==jb2) System.exit(0); } }
執行結果
實現顧客操作介面
當選擇“顧客”時,單擊“登入”按鈕就可以進入顧客作業系統了,然後就可以對摸個學生的資訊進行輸入、修改和刪除,也能對同學的資訊進行查詢和對程式進行查詢。當打算離開時,還要有一個選項用來退出學生資訊管理系統。根據設計構想,首先要搭建一個介面,然後把顧客的操作分為2大塊,分別是商品資訊查詢和退出登入,其部分程式碼如下:
class custom_Manage extends JFrame implements ActionListener{ JMenu cm=new JMenu("請選擇您需要的操作:"); JButton cm1=new JButton("商品資訊查詢"); JButton cm2=new JButton("退出登入"); public void actionPerformed(ActionEvent e){ if(e.getSource()==cm1)new SetGoods(); else if(e.getSource()==cm2) this.setVisible(false); } }
執行結果
商家操作介面相比顧客操作介面多了商品資訊的增加﹑刪除和修改功能,其實現方法與顧客操作介面類似,在此不再贅述。
新增商品資訊
每個按鈕都對應著一個操作介面,當點選商家操作下的“增加商品資訊”按鈕時,將彈出如圖所示的介面,它呼叫了AddGoods.java類實現該功能。通過對“增加資訊”這一子選單設定監聽,彈出介面。AddGoods.java的部分程式碼如下:
class AddGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("新增基本資訊:"); JLabel number = new JLabel("商品編號"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("類別"); String str[]={"食品","化妝品","日用品","飲料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名稱"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品價格"); JTextField Price = new JTextField(); JLabel storage= new JLabel("庫存量"); JTextField Storage = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生產廠家"); JTextField Vender = new JTextField(); JTextField jt=new JTextField(10); JButton Add = new JButton("新增"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if(e.getSource()==Add) { String snumber=Number.getText(); String svender=Vender.getText(); String sname=Name.getText(); String sprice=Price.getText(); String sstorage=Storage.getText(); String sbrand=Brand.getText(); try { Connection cot=ConnectionFactory.getConnection(); Statement stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE ); int s=jcb.getSelectedIndex(); String jc=null; if(s==0)jc="食品"; else if(s==1)jc="化妝品"; else if(s==2)jc="日用品"; else if(s==3)jc="飲料"; sql="insert into goods values('"+snumber+"','"+jc+"','"+sname+"',"+sprice+","+sstorage+",'"+sbrand+"','"+svender+"')"; int n=stm.executeUpdate(sql); if(n!=0)JOptionPane.showMessageDialog(null,"新增成功!"); else JOptionPane.showMessageDialog(null,"該商品已存在!"); }catch(Exception ee) { ee.printStackTrace(); } } if(e.getSource()==Reset) { Number.setText(null); Name.setText(null); Vender.setText(null); Price.setText(null); Storage.setText(null); Brand.setText(null); } if(e.getSource()==Exit) { this.setVisible(false); } } }
執行效果:
刪除商品資訊
當選擇商家作業系統下的刪除商品資訊的按鈕時,將彈出圖4-4所示的介面,它呼叫了DeleteGoodst.java類實現該功能,其部分程式碼如下:
class DeleteGoods extends JFrame implements ActionListener { JMenu JL = new JMenu("刪除基本資訊"); JLabel number = new JLabel("商品編號"); JTextField Number = new JTextField(); JButton Del = new JButton("刪除"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if (e.getSource() == Del) { Statement stm=null; Connection cot; try { cot=ConnectionFactory.getConnection(); stm= cot.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE ); sql ="delete from goods where number='"+Number.getText()+"'"; int n = stm.executeUpdate(sql); if (n!=0) JOptionPane.showMessageDialog(null,"刪除成功!"); else JOptionPane.showMessageDialog(null,"刪除失敗!"); } catch (SQLException e1) { JOptionPane.showMessageDialog(null,"此商品不存在!"); e1.printStackTrace(); } } if (e.getSource() == Reset) { Number.setText(null); } if (e.getSource() == Exit) this.setVisible(false); } }
如圖,只需輸入商品編號便可刪除該商品的全部資訊。
修改商品資訊
當選擇商家作業系統下的“修改資訊”按鈕時,將彈出介面,只要輸入商品的編號,然後選擇所要修改的該編號商品的列名,最後輸入想要將其修改成為的值,即可修改該商品的某一項資訊。用了GetGoods.java類實現該功能。其部分程式碼如下:
class GetGoods extends JFrame implements ActionListener{ JLabel JL = new JLabel("修改商品資訊",JLabel.CENTER); JLabel number = new JLabel("請輸入您要修改的商品編號"); JTextField Number = new JTextField(); JLabel massage = new JLabel("請輸入您要修改的商品資訊"); JTextField Massage = new JTextField(); JLabel afterget=new JLabel("您想要將該列資訊修改為:"); JTextField Afterget = new JTextField(); JTextField jt=new JTextField(10); JButton Get = new JButton("修改"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e){ if(e.getSource()==Get){ Statement stm=null; Connection cot; try{ cot=ConnectionFactory.getConnection(); stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE ); sql="update goods set "+Massage.getText()+"='"+Afterget.getText()+"' where number='"+Number.getText()+"'"; int n=stm.executeUpdate(sql); if(n!=0)JOptionPane.showMessageDialog(null,"修改成功!"); else JOptionPane.showMessageDialog(null,"修改失敗!"); }catch(Exception er){ er.printStackTrace(); } } if(e.getSource()==Reset){ Number.setText(null); Massage.setText(null); Afterget.setText(null); } if(e.getSource()==Exit) { this.setVisible(false); } } }
執行結果
查詢商品資訊
當選擇顧客或者商家作業系統下的“查詢商品資訊”按鈕時,將彈出如圖所示的介面,它呼叫了SetGoods.java類實現該功能,部分程式碼如下:
class SetGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("請用以下任意一種方式查詢您想要的東西",JLabel.CENTER); JLabel number = new JLabel("商品編號"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("類別"); String str[]={"無","食品","飲料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名稱"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品價格"); JTextField Price = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生產廠家"); JTextField Vender = new JTextField(); JTextField jt=new JTextField(10); JButton Set = new JButton("查詢"); JButton purchase = new JButton("購買"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if (e.getSource() == Set) { Statement stm=null; Connection cot; try{ cot=ConnectionFactory.getConnection(); stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE ); if(Number.getText()!=null) sql="select * from goods where number='"+Number.getText()+"'"; else if(Name.getText()!=null) sql="select * from goods where name='"+Name.getText()+"'"; else if(Price.getText()!=null) sql="select * from goods where price='"+Price.getText()+"'"; else if(Brand.getText()!=null) sql="select * from goods where brand='"+Brand.getText()+"'"; else if(Vender.getText()!=null) sql="select * from goods where vender='"+Vender.getText()+"'"; ResultSet rs=stm.executeQuery(sql); while(rs.next()) { System.out.println("商品編號: "+Number.getText()); int s=jcb.getSelectedIndex(); if(s==0) JOptionPane.showMessageDialog( null,"請選擇商品類別!" ); else if(s==1)System.out.println("商品類別: 食品"); else if(s==2)System.out.println("商品類別: 化妝品"); else if(s==3)System.out.println("商品類別: 日用品"); else if(s==4)System.out.println("商品類別: 飲料"); System.out.println("商品名稱: "+rs.getString("name")); System.out.println("價格: "+rs.getString("price")); System.out.println("庫存量: "+rs.getString("storage")); System.out.println("品牌: "+rs.getString("brand")); System.out.println("生產廠家: "+rs.getString("vender")); } }catch(Exception ee){ JOptionPane.showMessageDialog( null,"該商品不存在!" ); ee.printStackTrace(); } } else if(e.getSource()==purchase){new Purchase();} else if(e.getSource()==Reset){ Number.setText(null); Name.setText(null); Vender.setText(null); Price.setText(null); Brand.setText(null); } else if(e.getSource()==Exit) { this.setVisible(false); }}}
執行結果
退出系統
當在對商品進行增加﹑刪除﹑修改和查詢的介面時,點選“退出”按鈕,即可彈出如圖4-7所示介面,它呼叫了
UsingExit.java類實現該功能,部分程式碼如下: class UsingExit extends JFrame implements ActionListener{ JLabel Info=new JLabel("確認退出?"); JButton JExit=new JButton("確認"); JButton Cancel=new JButton("取消"); public void actionPerformed(ActionEvent e){ if(e.getSource()==JExit) System.exit(0); else if(e.getSource()==Cancel) setVisible(false); } }
執行結果如圖:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。