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,它的输出结果为“*****”这样的形式。 
创建两个按钮,一个是登录按钮,另一个是取消登录按钮,用来输入的用户名和密码及选择的身份进行提交,然后根据选择的身份来选择需要进入那个界面,其代码如下:

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,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, "请输入用户名");
 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);
 }
}

运行结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 在Java的Hibernate框架中对数据库数据进行查询操作

    Hibernate查询语言(HQL)是一种面向对象的查询语言,类似于SQL,但不是对表和列操作,HQL适用于持久对象和它们的属性. HQL查询由Hibernate转换成传统的SQL查询,这在圈上的数据库执行操作. 虽然可以直接使用SQL语句和Hibernate使用原生SQL,但建议使用HQL尽可能避免数据库可移植性的麻烦,并采取Hibernate的SQL生成和缓存策略的优势. 都像SELECT,FROM和WHERE等关键字不区分大小写,但如表名和列名的属性是区分在HQL敏感. FROM 语句 使

  • java操作mysql入门代码实例(含插入、更新和查询)

    复制代码 代码如下: import java.sql.*; public class mysql {    public static String url = "jdbc:mysql://localhost:3306/test";//characterEncoding=GBK    public static String username = "root";    public static String password = "root";

  • Java用list储存,遍历,查询指定信息过程详解

    需求说明 实现思路 见代码注释 代码内容 使用list储存,遍历,查询,删除 import java.util.ArrayList; import java.util.List; /** * @auther::9527 * @Description: 第七题 * @program: 多线程 * @create: 2019-08-09 23:39 */ public class Seventh { public static void main(String[] args) { //初始化企鹅信息

  • java抓取12306信息实现火车余票查询示例

    最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样就可以得到火车票的信息.这里就随笔记一下获取12306余票的过程. 首先,我用firefox浏览器上12306查询余票.打开firefox的Web控制台,选上网络中的"记录请求和响应主体" 然后输入地址日期信息之后点击网页上的查询按钮,就能在Web控制台下看到网页请求的地址了: 就是图片中

  • Java Web开发之信息查询方式总结

    本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字段组合查询: ⑤ 多值查询. 根据某个特定的字段进行查询 用户在输入界面中输入要查询的字段的值,然后系统根据这个值进行查找. 下面的实例是根据用户名查询用户的详细信息,简单的效果图如下: 关键代码如下: <p>请输入要查询的姓名:</p> <form action="s

  • JAVA基于数组实现的商品信息查询功能示例

    本文实例讲述了JAVA基于数组实现的商品信息查询功能.分享给大家供大家参考,具体如下: 综合一维数组和二维数组的相关知识,以及数组排序的多种算法来实现商品信息查询的功能. 假设在仓库系统中,每件商品都有 3 个库存信息,分别是入库量.出库量和当前库存量.定义一个一维数组来存储 5 件商品的名称,并定义一个二维数组来存储这 5 件商品的 3 个库存信息.用户可以根据商品名称查询该商品的所有库存,也可以查看某个类别库存下数量小于 100 的商品名单,并将该类别的所有库存量按从低到高的顺序排列. 具体

  • java使用淘宝API读写json实现手机归属地查询功能代码

    一般查询手机归属地内容应该很好用json格式保存,在网上找到了淘宝的归属地API,并下了处理json相关的jar包,做了这个手机归属地查询功能 复制代码 代码如下: package com.think.java; import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net

  • java操作mongodb基础(查询 排序 输出list)

    复制代码 代码如下: package com.infomorrow.webroot; import java.util.List; import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.MongoClient; public cl

  • java 中mongodb的各种操作查询的实例详解

    java 中mongodb的各种操作查询的实例详解 一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public Lis

  • 使用Java对数据库进行基本的查询和更新操作

    数据库查询 利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据.经过这样的一系列步骤就能实现对数据库的查询. [例]Java应用程序访问数据库.应用程序打开考生信息表ksInfo,从中取出考生的各项信息.设考生信息数据库的结构如下: import java.awt.*; import java.awt.even

随机推荐