java实现商品信息管理系统
超市商品管理系统,供大家参考,具体内容如下
题目要求
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。这个题目相对简单,可以用一张表实现信息的保存和处理,因此不再给出数据库设计参考。
功能要求
(1)销售功能。
购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(7)商品信息存盘:将当前程序中的商品信息存入文件中。
(8)读出信息:从文件中将商品信息读入程序。
问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(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,它的输出结果为“*****”这样的形式。
创建两个按钮,一个是登录按钮,另一个是取消登录按钮,用来输入的用户名和密码及选择的身份进行提交,然后根据选择的身份来选择需要进入那个界面,其代码如下:
publicclassinfo_ManageextendsJFrameimplementsActionListener{
privateJLabelusername=newJLabel("用户名");
privateJTextFielduserName=newJTextField();
privateJLabelpsw=newJLabel("密码");
privateJPasswordFieldPsw=newJPasswordField();
JLabeljlp=newJLabel("身份");
Stringstr[]={"顾客","商家"};
JComboBoxjcb=newJComboBox(str);
privateJButtonjb1=newJButton("登录");
privateJButtonjb2=newJButton("取消");
publicinfo_Manage(){
this.setTitle("商品信息管理系统");
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);
}
publicstaticvoidmain(String[]args){
newinfo_Manage();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
Stringname=userName.getText();
Stringpassword=newString(Psw.getPassword());
if(name.length()==0&&password.length()!=0)
JOptionPane.showMessageDialog(null,"请输入用户名");
elseif(name.length()!=0&&password.length()==0)
JOptionPane.showMessageDialog(null,"请输入密码");
elseif(name.length()==0&&name.length()==0)
JOptionPane.showMessageDialog(null,"请输入用户名和密码");
elseif(jcb.getSelectedIndex()==0&&name.length()!=0&&name.length()!=0)
newcustom_Manage();
elseif(jcb.getSelectedIndex()==1&&name.length()!=0&&password.length()!=0)
newseller_Manage();
}
elseif(e.getSource()==jb2)
System.exit(0);
}
}
运行结果
实现顾客操作界面
当选择“顾客”时,单击“登录”按钮就可以进入顾客操作系统了,然后就可以对摸个学生的信息进行输入、修改和删除,也能对同学的信息进行查询和对程序进行查询。当打算离开时,还要有一个选项用来退出学生信息管理系统。根据设计构想,首先要搭建一个界面,然后把顾客的操作分为2大块,分别是商品信息查询和退出登录,其部分代码如下:
classcustom_ManageextendsJFrameimplementsActionListener{
JMenucm=newJMenu("请选择您需要的操作:");
JButtoncm1=newJButton("商品信息查询");
JButtoncm2=newJButton("退出登录");
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==cm1)newSetGoods();
elseif(e.getSource()==cm2)this.setVisible(false);
}
}
运行结果
商家操作界面相比顾客操作界面多了商品信息的增加﹑删除和修改功能,其实现方法与顾客操作界面类似,在此不再赘述。
添加商品信息
每个按钮都对应着一个操作界面,当点击商家操作下的“增加商品信息”按钮时,将弹出如图所示的界面,它调用了AddGoods.java类实现该功能。通过对“增加信息”这一子菜单设置监听,弹出界面。AddGoods.java的部分代码如下:
classAddGoodsextendsJFrameimplementsActionListener{
JLabelJL=newJLabel("添加基本信息:");
JLabelnumber=newJLabel("商品编号");
JTextFieldNumber=newJTextField();
JLabelJClass=newJLabel("类别");
Stringstr[]={"食品","化妆品","日用品","饮料"};
JComboBoxjcb=newJComboBox(str);
JLabelname=newJLabel("商品名称");
JTextFieldName=newJTextField();
JLabelprice=newJLabel("商品价格");
JTextFieldPrice=newJTextField();
JLabelstorage=newJLabel("库存量");
JTextFieldStorage=newJTextField();
JLabelbrand=newJLabel("品牌");
JTextFieldBrand=newJTextField();
JLabelvender=newJLabel("生产厂家");
JTextFieldVender=newJTextField();
JTextFieldjt=newJTextField(10);
JButtonAdd=newJButton("添加");
JButtonReset=newJButton("重置");
JButtonExit=newJButton("退出");
Stringsql="";
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==Add){
Stringsnumber=Number.getText();
Stringsvender=Vender.getText();
Stringsname=Name.getText();
Stringsprice=Price.getText();
Stringsstorage=Storage.getText();
Stringsbrand=Brand.getText();
try{
Connectioncot=ConnectionFactory.getConnection();
Statementstm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ints=jcb.getSelectedIndex();
Stringjc=null;
if(s==0)jc="食品";
elseif(s==1)jc="化妆品";
elseif(s==2)jc="日用品";
elseif(s==3)jc="饮料";
sql="insertintogoodsvalues('"+snumber+"','"+jc+"','"+sname+"',"+sprice+","+sstorage+",'"+sbrand+"','"+svender+"')";
intn=stm.executeUpdate(sql);
if(n!=0)JOptionPane.showMessageDialog(null,"添加成功!");
elseJOptionPane.showMessageDialog(null,"该商品已存在!");
}catch(Exceptionee){
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类实现该功能,其部分代码如下:
classDeleteGoodsextendsJFrameimplementsActionListener{
JMenuJL=newJMenu("删除基本信息");
JLabelnumber=newJLabel("商品编号");
JTextFieldNumber=newJTextField();
JButtonDel=newJButton("删除");
JButtonReset=newJButton("重置");
JButtonExit=newJButton("退出");
Stringsql="";
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==Del){
Statementstm=null;
Connectioncot;
try{
cot=ConnectionFactory.getConnection();
stm=cot.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
sql="deletefromgoodswherenumber='"+Number.getText()+"'";
intn=stm.executeUpdate(sql);
if(n!=0)
JOptionPane.showMessageDialog(null,"删除成功!");
else
JOptionPane.showMessageDialog(null,"删除失败!");
}catch(SQLExceptione1){
JOptionPane.showMessageDialog(null,"此商品不存在!");
e1.printStackTrace();
}
}
if(e.getSource()==Reset){
Number.setText(null);
}
if(e.getSource()==Exit)
this.setVisible(false);
}
}
如图,只需输入商品编号便可删除该商品的全部信息。
修改商品信息
当选择商家操作系统下的“修改信息”按钮时,将弹出界面,只要输入商品的编号,然后选择所要修改的该编号商品的列名,最后输入想要将其修改成为的值,即可修改该商品的某一项信息。用了GetGoods.java类实现该功能。其部分代码如下:
classGetGoodsextendsJFrameimplementsActionListener{
JLabelJL=newJLabel("修改商品信息",JLabel.CENTER);
JLabelnumber=newJLabel("请输入您要修改的商品编号");
JTextFieldNumber=newJTextField();
JLabelmassage=newJLabel("请输入您要修改的商品信息");
JTextFieldMassage=newJTextField();
JLabelafterget=newJLabel("您想要将该列信息修改为:");
JTextFieldAfterget=newJTextField();
JTextFieldjt=newJTextField(10);
JButtonGet=newJButton("修改");
JButtonReset=newJButton("重置");
JButtonExit=newJButton("退出");
Stringsql="";
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==Get){
Statementstm=null;
Connectioncot;
try{
cot=ConnectionFactory.getConnection();stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
sql="updategoodsset"+Massage.getText()+"='"+Afterget.getText()+"'wherenumber='"+Number.getText()+"'";
intn=stm.executeUpdate(sql);
if(n!=0)JOptionPane.showMessageDialog(null,"修改成功!");
elseJOptionPane.showMessageDialog(null,"修改失败!");
}catch(Exceptioner){
er.printStackTrace();
}
}
if(e.getSource()==Reset){
Number.setText(null);
Massage.setText(null);
Afterget.setText(null);
}
if(e.getSource()==Exit){
this.setVisible(false);
}
}
}
运行结果
查询商品信息
当选择顾客或者商家操作系统下的“查询商品信息”按钮时,将弹出如图所示的界面,它调用了SetGoods.java类实现该功能,部分代码如下:
classSetGoodsextendsJFrameimplementsActionListener{
JLabelJL=newJLabel("请用以下任意一种方式查询您想要的东西",JLabel.CENTER);
JLabelnumber=newJLabel("商品编号");
JTextFieldNumber=newJTextField();
JLabelJClass=newJLabel("类别");
Stringstr[]={"无","食品","化妆品","日用品","饮料"};
JComboBoxjcb=newJComboBox(str);
JLabelname=newJLabel("商品名称");
JTextFieldName=newJTextField();
JLabelprice=newJLabel("商品价格");
JTextFieldPrice=newJTextField();
JLabelbrand=newJLabel("品牌");
JTextFieldBrand=newJTextField();
JLabelvender=newJLabel("生产厂家");
JTextFieldVender=newJTextField();
JTextFieldjt=newJTextField(10);
JButtonSet=newJButton("查询");
JButtonpurchase=newJButton("购买");
JButtonReset=newJButton("重置");
JButtonExit=newJButton("退出");
Stringsql="";
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==Set){
Statementstm=null;
Connectioncot;
try{
cot=ConnectionFactory.getConnection();
stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
if(Number.getText()!=null)
sql="select*fromgoodswherenumber='"+Number.getText()+"'";
elseif(Name.getText()!=null)
sql="select*fromgoodswherename='"+Name.getText()+"'";
elseif(Price.getText()!=null)
sql="select*fromgoodswhereprice='"+Price.getText()+"'";
elseif(Brand.getText()!=null)
sql="select*fromgoodswherebrand='"+Brand.getText()+"'";
elseif(Vender.getText()!=null)
sql="select*fromgoodswherevender='"+Vender.getText()+"'";
ResultSetrs=stm.executeQuery(sql);
while(rs.next()){
System.out.println("商品编号:"+Number.getText());
ints=jcb.getSelectedIndex();
if(s==0)
JOptionPane.showMessageDialog(null,"请选择商品类别!");
elseif(s==1)System.out.println("商品类别:食品");
elseif(s==2)System.out.println("商品类别:化妆品");
elseif(s==3)System.out.println("商品类别:日用品");
elseif(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(Exceptionee){
JOptionPane.showMessageDialog(null,"该商品不存在!");
ee.printStackTrace();
}
}
elseif(e.getSource()==purchase){newPurchase();}
elseif(e.getSource()==Reset){
Number.setText(null);
Name.setText(null);
Vender.setText(null);
Price.setText(null);
Brand.setText(null);
}
elseif(e.getSource()==Exit){
this.setVisible(false);
}}}
运行结果
退出系统
当在对商品进行增加﹑删除﹑修改和查询的界面时,点击“退出”按钮,即可弹出如图4-7所示界面,它调用了
UsingExit.java类实现该功能,部分代码如下:
classUsingExitextendsJFrameimplementsActionListener{
JLabelInfo=newJLabel("确认退出?");
JButtonJExit=newJButton("确认");
JButtonCancel=newJButton("取消");
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==JExit)
System.exit(0);
elseif(e.getSource()==Cancel)
setVisible(false);
}
}
运行结果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。