這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)java中怎么實(shí)現(xiàn)一個(gè)商品信息管理系統(tǒng),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、福州網(wǎng)絡(luò)推廣、微信小程序、福州網(wǎng)絡(luò)營(yíng)銷(xiāo)、福州企業(yè)策劃、福州品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供福州建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
題目要求
超市中商品分為四類(lèi),分別是食品、化妝品、日用品和飲料。每種商品都包含商品名稱(chēng)、價(jià)格、庫(kù)存量和生產(chǎn)廠家、品牌等信息。主要完成對(duì)商品的銷(xiāo)售、統(tǒng)計(jì)和簡(jiǎn)單管理。這個(gè)題目相對(duì)簡(jiǎn)單,可以用一張表實(shí)現(xiàn)信息的保存和處理,因此不再給出數(shù)據(jù)庫(kù)設(shè)計(jì)參考。
功能要求
(1)銷(xiāo)售功能。
購(gòu)買(mǎi)商品時(shí),先輸入類(lèi)別,然后輸入商品名稱(chēng),并在庫(kù)存中查找該商品的相關(guān)信息。如果有庫(kù)存量,輸入購(gòu)買(mǎi)的數(shù)量,進(jìn)行相應(yīng)計(jì)算。如果庫(kù)存量不夠,給出提示信息,結(jié)束購(gòu)買(mǎi)。
(2)商品簡(jiǎn)單管理功能。
添加功能:主要完成商品信息的添加。 查詢(xún)功能:可按商品類(lèi)別、商品名稱(chēng)、生產(chǎn)廠家進(jìn)行查詢(xún)。若存在相應(yīng)信息,輸出所查詢(xún)的信息,若不存在該記錄,則提示“該記錄不存在!”?! ⌒薷墓δ埽嚎筛鶕?jù)查詢(xún)結(jié)果對(duì)相應(yīng)的記錄進(jìn)行修改?! h除功能:主要完成商品信息的刪除。先輸入商品類(lèi)別,再輸入要?jiǎng)h除的商品名稱(chēng),根據(jù)查詢(xún)結(jié)果刪除該物品的記錄,如果該商品不在物品庫(kù)中,則提示“該商品不存在”。
(3)統(tǒng)計(jì)功能。
輸出當(dāng)前庫(kù)存中所有商品的總數(shù)及詳細(xì)信息;可按商品的價(jià)格、庫(kù)存量、生產(chǎn)廠家進(jìn)行統(tǒng)計(jì),輸出統(tǒng)計(jì)信息時(shí),要按從大到小進(jìn)行排序。
(7)商品信息存盤(pán):將當(dāng)前程序中的商品信息存入文件中。
(8)讀出信息:從文件中將商品信息讀入程序。
問(wèn)題的解決方案
根據(jù)系統(tǒng)功能要求,可以將問(wèn)題解決分為以下步驟:(1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);(2)分析系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系;(3)根據(jù)問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類(lèi)層次;(4)完成類(lèi)層次中各個(gè)類(lèi)的描述;(5)完成類(lèi)中各個(gè)成員函數(shù)的定義;(6)完成系統(tǒng)的應(yīng)用模塊;(7)功能調(diào)試;
設(shè)計(jì)思路
可以對(duì)超市商品進(jìn)行管理的人員主要有超市的商家和顧客,商家可以對(duì)超市的商品進(jìn)行增﹑刪﹑改﹑查操作,而顧客只能查詢(xún)和購(gòu)買(mǎi)商品。增加商品時(shí),要添加商品的全部信息(編號(hào)﹑類(lèi)別﹑名稱(chēng)﹑價(jià)格﹑庫(kù)存量﹑品牌﹑生產(chǎn)廠家),刪除時(shí)只需要輸入商品編號(hào)便可刪除該商品的全部信息,修改時(shí)要先輸入商品編號(hào),然后再確定要修改該商品的哪一個(gè)值,以及要將該值修改為什么,查詢(xún)時(shí)只要輸入想要查詢(xún)商品的任意一個(gè)信息并選擇商品類(lèi)別便可查出該商品的全部信息。
實(shí)現(xiàn):
建立并連接數(shù)據(jù)庫(kù)與基本表
連接數(shù)據(jù)庫(kù)時(shí)需要用到JDBC,它由Java編程語(yǔ)言編寫(xiě)的類(lèi)和接口組成,是實(shí)現(xiàn)Java與各種數(shù)據(jù)庫(kù)連接的關(guān)鍵,提供了將Java與數(shù)據(jù)庫(kù)連接起來(lái)的程序接口,使用戶(hù)可以以SQL的形式編寫(xiě)訪問(wèn)請(qǐng)求,然后傳給數(shù)據(jù)庫(kù),其結(jié)果再由這一接口返回,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)操作的目的。超市商品管理系統(tǒng)采用了MySQL作為數(shù)據(jù)庫(kù),所建的系統(tǒng)數(shù)據(jù)庫(kù)名為“goods”。通過(guò)需求分析、概念設(shè)計(jì)與邏輯設(shè)計(jì),可知該系統(tǒng)數(shù)據(jù)庫(kù)只需建立一個(gè)商品表即可
結(jié)構(gòu)設(shè)計(jì)
該系統(tǒng)用于對(duì)商品的基本信息進(jìn)行管理,主要包括添加、修改、查詢(xún)和刪除商品基本信息,為了方便,全部操作均在界面中完成。由此,將該系統(tǒng)結(jié)構(gòu)設(shè)計(jì)為登錄模塊、顧客模塊、商家模塊。由于涉及界面設(shè)計(jì),因此調(diào)用了java.awt.、java.awt.event.、javax.swing.、java.util.、javax.swing.event.*、java.sql.*等包。
實(shí)現(xiàn)登錄模塊
要生成一個(gè)界面,可應(yīng)用AWT知識(shí)。設(shè)置其名字為商品信息管理系統(tǒng);設(shè)置布局管理器為(null)布局管理器,方便往其中放組件;設(shè)置窗口大小和位置,還要設(shè)置窗口可見(jiàn)性。生成界面后,接下來(lái)就需要實(shí)現(xiàn)每個(gè)功能,第一個(gè)功能就是要對(duì)操作對(duì)象的身份進(jìn)行選擇,這里要用下拉列表的形式進(jìn)行選擇,也可以用單選按鈕來(lái)完成這個(gè)功能。在這項(xiàng)功能中,首先要選擇身份,所以要定義一個(gè)JLabel來(lái)說(shuō)明,定義完JLabel后,就需要定義一個(gè)JComoBox,下拉列表框。?輸入用戶(hù)名和密碼。需要用兩個(gè)JLabel來(lái)指明需要輸入用戶(hù)名和密碼。輸入用戶(hù)名需要定義一個(gè)JTextField,單文本框。同時(shí)輸入文本,但輸入密碼和輸入用戶(hù)名是不一樣的,它需要定義成JPasswordField,它的輸出結(jié)果為“*****”這樣的形式。?創(chuàng)建兩個(gè)按鈕,一個(gè)是登錄按鈕,另一個(gè)是取消登錄按鈕,用來(lái)輸入的用戶(hù)名和密碼及選擇的身份進(jìn)行提交,然后根據(jù)選擇的身份來(lái)選擇需要進(jìn)入那個(gè)界面,其代碼如下:
public class info_Manage extends JFrame implements ActionListener{ private JLabel username = new JLabel("用戶(hù)名"); 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("商品信息管理系統(tǒng)"); this.setLayout(null); username.setBounds(100,50,100,20); this.add(username); userName.setBounds(150,50,100,20); this.add(userName); psw.setBounds(100,100,100,20); this.add(psw); Psw.setBounds(150,100,100,20); this.add(Psw); jlp.setBounds(100,150,100,20); this.add(jlp); jcb.setBounds(150,150,100,20); this.add(jcb); jcb.addActionListener(this); jb1.setBounds(100,210,60,20); this.add(jb1); jb1.addActionListener(this); jb2.setBounds(200,210,60,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, "請(qǐng)輸入用戶(hù)名"); else if(name.length()!=0&&password.length()==0) JOptionPane.showMessageDialog( null, "請(qǐng)輸入密碼"); else if(name.length()==0&&name.length()==0) JOptionPane.showMessageDialog( null, "請(qǐng)輸入用戶(hù)名和密碼"); 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); }}
運(yùn)行結(jié)果
實(shí)現(xiàn)顧客操作界面
當(dāng)選擇“顧客”時(shí),單擊“登錄”按鈕就可以進(jìn)入顧客操作系統(tǒng)了,然后就可以對(duì)摸個(gè)學(xué)生的信息進(jìn)行輸入、修改和刪除,也能對(duì)同學(xué)的信息進(jìn)行查詢(xún)和對(duì)程序進(jìn)行查詢(xún)。當(dāng)打算離開(kāi)時(shí),還要有一個(gè)選項(xiàng)用來(lái)退出學(xué)生信息管理系統(tǒng)。根據(jù)設(shè)計(jì)構(gòu)想,首先要搭建一個(gè)界面,然后把顧客的操作分為2大塊,分別是商品信息查詢(xún)和退出登錄,其部分代碼如下:
class custom_Manage extends JFrame implements ActionListener{ JMenu cm=new JMenu("請(qǐng)選擇您需要的操作:"); JButton cm1=new JButton("商品信息查詢(xún)"); JButton cm2=new JButton("退出登錄"); public void actionPerformed(ActionEvent e){ if(e.getSource()==cm1)new SetGoods(); else if(e.getSource()==cm2) this.setVisible(false); }}
運(yùn)行結(jié)果
商家操作界面相比顧客操作界面多了商品信息的增加﹑刪除和修改功能,其實(shí)現(xiàn)方法與顧客操作界面類(lèi)似,在此不再贅述。
添加商品信息
每個(gè)按鈕都對(duì)應(yīng)著一個(gè)操作界面,當(dāng)點(diǎn)擊商家操作下的“增加商品信息”按鈕時(shí),將彈出如圖所示的界面,它調(diào)用了AddGoods.java類(lèi)實(shí)現(xiàn)該功能。通過(guò)對(duì)“增加信息”這一子菜單設(shè)置監(jiān)聽(tīng),彈出界面。AddGoods.java的部分代碼如下:
class AddGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("添加基本信息:"); JLabel number = new JLabel("商品編號(hào)"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("類(lèi)別"); String str[]={"食品","化妝品","日用品","飲料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名稱(chēng)"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品價(jià)格"); JTextField Price = new JTextField(); JLabel storage= new JLabel("庫(kù)存量"); JTextField Storage = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生產(chǎn)廠家"); 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); } }}
運(yùn)行效果:
刪除商品信息
當(dāng)選擇商家操作系統(tǒng)下的刪除商品信息的按鈕時(shí),將彈出圖4-4所示的界面,它調(diào)用了DeleteGoodst.java類(lèi)實(shí)現(xiàn)該功能,其部分代碼如下:
class DeleteGoods extends JFrame implements ActionListener { JMenu JL = new JMenu("刪除基本信息"); JLabel number = new JLabel("商品編號(hào)"); 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); }}
如圖,只需輸入商品編號(hào)便可刪除該商品的全部信息。
修改商品信息
當(dāng)選擇商家操作系統(tǒng)下的“修改信息”按鈕時(shí),將彈出界面,只要輸入商品的編號(hào),然后選擇所要修改的該編號(hào)商品的列名,最后輸入想要將其修改成為的值,即可修改該商品的某一項(xiàng)信息。用了GetGoods.java類(lèi)實(shí)現(xiàn)該功能。其部分代碼如下:
class GetGoods extends JFrame implements ActionListener{ JLabel JL = new JLabel("修改商品信息", JLabel.CENTER); JLabel number = new JLabel("請(qǐng)輸入您要修改的商品編號(hào)"); JTextField Number = new JTextField(); JLabel massage = new JLabel("請(qǐng)輸入您要修改的商品信息"); 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); } }}
運(yùn)行結(jié)果
查詢(xún)商品信息
當(dāng)選擇顧客或者商家操作系統(tǒng)下的“查詢(xún)商品信息”按鈕時(shí),將彈出如圖所示的界面,它調(diào)用了SetGoods.java類(lèi)實(shí)現(xiàn)該功能,部分代碼如下:
class SetGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("請(qǐng)用以下任意一種方式查詢(xún)您想要的東西", JLabel.CENTER); JLabel number = new JLabel("商品編號(hào)"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("類(lèi)別"); String str[]={"無(wú)","食品","化妝品","日用品","飲料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名稱(chēng)"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品價(jià)格"); JTextField Price = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生產(chǎn)廠家"); JTextField Vender = new JTextField(); JTextField jt=new JTextField(10); JButton Set = new JButton("查詢(xún)"); JButton purchase = new JButton("購(gòu)買(mǎi)"); 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("商品編號(hào): "+Number.getText()); int s=jcb.getSelectedIndex(); if(s==0) JOptionPane.showMessageDialog( null, "請(qǐng)選擇商品類(lèi)別!" ); else if(s==1)System.out.println("商品類(lèi)別: 食品"); else if(s==2)System.out.println("商品類(lèi)別: 化妝品"); else if(s==3)System.out.println("商品類(lèi)別: 日用品"); else if(s==4)System.out.println("商品類(lèi)別: 飲料"); System.out.println("商品名稱(chēng): "+rs.getString("name")); System.out.println("價(jià)格: "+rs.getString("price")); System.out.println("庫(kù)存量: "+rs.getString("storage")); System.out.println("品牌: "+rs.getString("brand")); System.out.println("生產(chǎn)廠家: "+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);}}}
運(yùn)行結(jié)果
退出系統(tǒng)
當(dāng)在對(duì)商品進(jìn)行增加﹑刪除﹑修改和查詢(xún)的界面時(shí),點(diǎn)擊“退出”按鈕,即可彈出如圖4-7所示界面,它調(diào)用了
UsingExit.java類(lèi)實(shí)現(xiàn)該功能,部分代碼如下:class UsingExit extends JFrame implements ActionListener{ JLabel Info=new JLabel("確認(rèn)退出?"); JButton JExit=new JButton("確認(rèn)"); JButton Cancel=new JButton("取消");public void actionPerformed(ActionEvent e){ if(e.getSource()==JExit) System.exit(0); else if(e.getSource()==Cancel) setVisible(false); }}
上述就是小編為大家分享的java中怎么實(shí)現(xiàn)一個(gè)商品信息管理系統(tǒng)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。