当前位置:   article > 正文

「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开_商品信息管理java swing

商品信息管理java swing

A、实现语言

Java(SWING+JDBC),MySql

B、开发环境

MyEclipse 9.0及以上版本,MySql 5.6及以上版本

二、要求


利用SWING编程实现商品的管理,要求如下:

1、商品管理页面布局,添加一个JScrollPanel(内嵌JTable),用来显示所有商品的信息;添加两个JLabel用于显示查询提示信息;添加JTextField用于输入商品商品名称;添加2个JButton,分别用来实现商品查询及添加商品,效果图如图1所示。

图1

2、在“商品名称”对应的JTextField中输入商品名称,单击“查询”:如果存在该商品,则显示如图2所示的窗体;若输入的名称不存在,则弹出“没找到该商品!”的对话框。

图2

3、单击“添加商品”按钮,弹出如图3所示的窗体,此时必须输入所有商品信息,

否则将弹出如图4所示的对话框;当商品信息输入完毕,单击“确定”按钮,实现商品的添加,

在弹出如图5所示的对话框后,释放窗体,并返回“商品管理”主界面,效果如图6所示。

图3

图4

图5

图6

三、重要说明


对于“添加”功能,程序员可以不用按照上述步骤实现,可以自定义添加界面,只要能实现添加功能即可。

四、推荐实现步骤


创建数据库dbGoods,添加表goods,表结构如表1所示,至少添加5条记录。

列名

类型

约束

备注

goodID

int或varchar(10)

主键

商品编号

goodName

varchar(20)

非空

商品名称

num

int

非空

商品数量

price

Decimal(3,1)

非空

商品单价

1、创建项目GoodsManagement,在其下新建文件夹“lib”,复制jar包文件(mysql-connector-java-5.1.34-bin.jar)存入其中,导入jar包到项目;

2、添加一个类GoodsManager:继承为JFrame,重载构造方法实现图1的布局效果;运行时,窗体居中参考代码如下:

this.setLocationRelativeTo(null);

自由布局参考如下:

this.setLayout(null);

创建一个JPanel,其布局也为自由布局;添加所有控件对象到其中;

控件位置与大小可使用以下方法实现:

对象名.setSize(int Width,int Height)

对象名.setLocation(int x,int y)

对象名.setBounds(int x,int y,int Width,int Height)

注意:在使用自由布局方式布局JPanel中的控件时,必须设置其大小,当然JPanel对象亦然,否则很有可能不能正常显示。

3、添加一个类DBManager:在其中创建获取连接对象的方法getConnection;创建查询通用方法runSelectSql;创建实现增、删、改的方法runUpdateSql方法。

4、单击“显示所有商品”、“按编号查询”及“按名称查询”按钮时调用DBManager.runSelectSql方法实现;单击“修改商品”、“删除商品”或“添加商品”按钮调用DBManager.runUpdateSql方法实现。

5、获取选定行的索引值,参考代码如下:

int index=table.getSelectedRow();//table为表格对象

获取选定行的商品名称,参考代码如下:

table.getValueAt(index,1);//index为选定行的索引值

6、在编写代码时,最好用方法对重复使用的代码进行封装,尽量减少代码的冗余;

7、编译程序,并运行。

五、注意事项


A、仔细审题,把题目要求理解准确;

B、请注意按照的界面的设计要求来进行窗体设计;

C、请注意代码的书写、命名符合规范和适当的注释;

评分标准:超市管理系统商品管理(查询及删除商品)

90

窗体布局与设计

10

数据库(5)、表及记录(5)

30

窗体布局合理,对象创建正确无误

25

查询正确

25

添加商品正确

10

总体编程技术

5

程序逻辑分明,有一定注释

5

命名符合规范,可读性好,编码书写有缩进

总分

100分

实现代码:

=====

一、数据库:


/*

Navicat Premium Data Transfer

Source Server : Demo

Source Server Type : MySQL

Source Server Version : 50717

Source Host : localhost:3306

Source Schema : dbgoods

Target Server Type : MySQL

Target Server Version : 50717

File Encoding : 65001

Date: 16/09/2020 16:36:31

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


– Table structure for goods


DROP TABLE IF EXISTS goods;

CREATE TABLE goods (

goodsID int(11) NOT NULL,

goodsName varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

num int(11) NOT NULL,

price decimal(10, 4) NOT NULL,

PRIMARY KEY (goodsID) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


– Records of goods


INSERT INTO goods VALUES (10002, ‘利鲜’, 10, 20.0000);

INSERT INTO goods VALUES (10003, ‘黄鹤楼’, 100, 21.0000);

INSERT INTO goods VALUES (10020, ‘酸奶’, 50, 1.5000);

INSERT INTO goods VALUES (10030, ‘矿泉水’, 1000, 1000.0000);

INSERT INTO goods VALUES (10040, ‘牛奶’, 1000, 3.5000);

SET FOREIGN_KEY_CHECKS = 1;

二、Java Swing:


com.ynavc.Bean

Goods.Java

package com.ynavc.Bean;

public class Goods {

int goodsID;

String goodsName;

int num;

String price;

public Goods(int goodsID, String goodsName, int num, String price) {

super();

this.goodsID = goodsID;

this.goodsName = goodsName;

this.num = num;

this.price = price;

}

public Goods() {

super();

}

@Override

public String toString() {

return “Goods [goodsID=” + goodsID + “, goodsName=” + goodsName + “, num=” + num + “, price=” + price + “]”;

}

public int getGoodsID() {

return goodsID;

}

public void setGoodsID(int goodsID) {

this.goodsID = goodsID;

}

public String getGoodsName() {

return goodsName;

}

public void setGoodsName(String goodsName) {

this.goodsName = goodsName;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public String getPrice() {

return price;

}

public void setPrice(String price) {

this.price = price;

}

}

com.ynavc.Controller

Select.Java

package com.ynavc.Controller;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import com.ynavc.Bean.Goods;

import com.ynavc.Dao.DbConnection;

public class Select {

public static Object[][] getGoods(String sql) {

ResultSet resultSet = DbConnection.query(sql);

ArrayList list=new ArrayList();

try {

while (resultSet.next()) {

Goods goods=new Goods();

goods.setGoodsID(resultSet.getInt(1));

goods.setGoodsName(resultSet.getString(2));

goods.setNum(resultSet.getInt(3));

goods.setPrice(resultSet.getString(4));

list.add(goods);

}

} catch (SQLException e) {

e.printStackTrace();

}

Object[][] objects=new Object[list.size()][4];

for(int i=0;i<list.size();i++) {

objects[i][0]=list.get(i).getGoodsID();

objects[i][1]=list.get(i).getGoodsName();

objects[i][2]=list.get(i).getNum();

objects[i][3]=list.get(i).getPrice();

}

return objects;

}

}

Updata.Java

package com.ynavc.Controller;

import com.ynavc.Dao.DbConnection;

public class Updata {

//添加数据

public static int addData(String sql) {

return DbConnection.updataInfo(sql);

}

}

com.ynavc.Dao

DbConnection .Java

package com.ynavc.Dao;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.swing.JOptionPane;

import com.mysql.jdbc.Statement;

public class DbConnection {

//驱动类的类名

private static final String DRIVERNAME=“com.mysql.jdbc.Driver”;

//连接数据的URL路径

// private static final String URL=“jdbc:mysql://118.31.124.77:3306/mydb23660”;

private static final String URL=“jdbc:mysql://127.0.0.1:3306/dbgoods”;

//数据库登录账号

// private static final String USER=“mydb23660”;

private static final String USER=“root”;

//数据库登录密码

// private static final String PASSWORD=“Hmsyfjdglxt66”;

private static final String PASSWORD=“root”;

//加载驱动

static{

try {

Class.forName(DRIVERNAME);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

//获取数据库连接

public static Connection getConnection() {

try {

return DriverManager.getConnection(URL,USER,PASSWORD);

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

//查询

public static ResultSet query(String sql) {

System.out.println(sql);

//获取连接

Connection connection=getConnection();

PreparedStatement psd;

try {

psd = connection.prepareStatement(sql);

return psd.executeQuery();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null,“执行语句出错\n”+e.toString());

e.printStackTrace();

}

return null;

}

//增、删、改、查

public static int updataInfo(String sql) {

System.out.println(sql);

//获取连接

Connection connection=getConnection();

try {

PreparedStatement psd=connection.prepareStatement(sql);

return psd.executeUpdate();

} catch (SQLException e) {

JOptionPane.showMessageDialog(null,“执行语句出错\n”+e.toString());

e.printStackTrace();

}

return 0;

}

//关闭连接

public static void colse(ResultSet rs,Statement stmt,Connection conn) throws Exception{

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

片转存中…(img-EszzVK2Y-1712461272479)]

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

[外链图片转存中…(img-3Ur2h4ge-1712461272479)]

[外链图片转存中…(img-pnE2NfwJ-1712461272480)]

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/827385
推荐阅读
相关标签
  

闽ICP备14008679号