当前位置: 首页 > news >正文

期末作业swing水果店管理系统

对水果进行新增,修改,删除,查询

视屏链接: bilibili.com/video/BV1qsNqzbEPG/

package cn.itcast.fruitstore.app;
import cn.itcast.fruitstore.controller.MainFrameController;
/**
* 项目运行
*/
public class MainApp {
public static void main(String[] args) {
new MainFrameController().setVisible(true);
}
}

package cn.itcast.fruitstore.controller;
import java.awt.Frame;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import cn.itcast.fruitstore.domain.FruitItem;
import cn.itcast.fruitstore.service.AdminService;
import cn.itcast.fruitstore.view.AbstractAdminDialog;
/**
* 管理员界面操作类
*/
@SuppressWarnings("serial")
public class AdminDialogController extends AbstractAdminDialog {
//定义服务类,提供完整功能服务
private AdminService adminService = new AdminService();
//构造方法
public AdminDialogController() {
super();
}
public AdminDialogController(Frame owner, boolean modal) {
super(owner, modal);
//创建对象时展示数据
queryFruitItem();
}
//查询方法
@Override
public void queryFruitItem() {
//定义表格头
String[] thead = {"水果编号","水果名称","水果单价(/元)","计价单位"};

//调用adminService的查询服务
ArrayList<FruitItem> dataList = adminService.queryFruitItem();
//调用list2Array方法,将查询到的集合转为数组,方便为JTable赋值
String[][] tbody = list2Array(dataList);
//将查询到的结果为table赋值
TableModel dataModel = new DefaultTableModel(tbody, thead);
table.setModel(dataModel);
}
//集合数据转为二维数组方法
public String[][] list2Array(ArrayList<FruitItem> list){
//根据FruitItem的model与集合数据定义JTable的数据二维数组
String[][] tbody = new String[list.size()][4];
for (int i = 0; i < list.size(); i++) {
FruitItem fruitItem = list.get(i);
tbody[i][0] = fruitItem.getNumber();
tbody[i][1] = fruitItem.getName();
tbody[i][2] = fruitItem.getPrice()+"";
tbody[i][3] = fruitItem.getUnit();
}
return tbody;
}
//添加方法
@Override
public void addFruitItem() {
//获取数据
String addNumber = addNumberText.getText();
String addName = addNameText.getText();
String addPrice = addPriceText.getText();
String addUnit = addUnitText.getText();
//调用adminService的添加服务
boolean addSuccess = adminService.addFruitItem(addNumber, addName,
addPrice, addUnit);
//如果添加成功
if(addSuccess) {
//添加后刷新表格
queryFruitItem();
}else {
//没有添加成功弹窗错误提示
JOptionPane.showMessageDialog(this, "水果编号不能重复,请检查数据!");
}
}
//修改方法
@Override
public void updateFruitItem() {
//获取数据
String updateNumber = updateNumberText.getText();
String updateName = updateNameText.getText();
String updatePrice = updatePriceText.getText();
String updateUnit = updateUnitText.getText();
//调用adminService的修改服务
boolean updateSuccess = adminService.updateFruitItem(updateNumber,
updateName, updatePrice, updateUnit);
//如果修改成功
if(updateSuccess) {
//修改后刷新表格
queryFruitItem();
}else {
//没有修改成功弹窗错误提示
JOptionPane.showMessageDialog(this, "没有这个编号的水果,请检查数据!");
}
}
//删除方法
@Override
public void delFruitItem() {
//获取数据
String delNumber = delNumberText.getText();
//调用adminService的删除服务
boolean delSuccess = adminService.delFruitItem(delNumber);
//如果删除成功
if(delSuccess) {
//删除后刷新表格
queryFruitItem();
}else {
//没有删除成功弹窗错误提示
JOptionPane.showMessageDialog(this, "没有这个编号的水果,请检查数据!");
}
}
}

package cn.itcast.fruitstore.controller;
import cn.itcast.fruitstore.view.AbstractMainFrame;
/**
* 主界面操作类
*/
@SuppressWarnings("serial")
public class MainFrameController extends AbstractMainFrame {
@Override
public void showAdminDialog() {
//在该方法中创建管理员界面并显示
//this为父窗口(主界面) true:设置为模态窗口展示
new AdminDialogController(this, true).setVisible(true);
}
}

package cn.itcast.fruitstore.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
//import cn.itcast.fruitstore.data.DataBase;
import cn.itcast.fruitstore.domain.FruitItem;
import cn.itcast.fruitstore.tools.JDBCUtils;
/*
* 管理员数据访问类
*/
public class AdminDao {
/*
*
//获取所有数据
public ArrayList<FruitItem> queryAllData() {
return DataBase.data;
}
//添加数据
public void addFruitItem(FruitItem fruitItem) {
DataBase.data.add(fruitItem);
}
//删除数据
public void delFruitItem(String delNumber) {
//查询集合中数据
for (int i = 0; i < DataBase.data.size(); i++) {
FruitItem thisFruitItem = DataBase.data.get(i);
//如果有水果项的编号与传入编号相同,则从集合中删除
if(thisFruitItem.getNumber().equals(delNumber)) {
DataBase.data.remove(i);
}
}
}
*/
//------为了方便读者学习,以上为原来使用集合模拟数据库的方法,以下为连接MySQL数据库后的方法--------------------------------------------
// 获取所有数据
public ArrayList<FruitItem> queryAllData() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList<FruitItem> list = new ArrayList<FruitItem>();
try {
// 获得数据的连接
conn = JDBCUtils.getConnection();
// 获得Statement对象
stmt = conn.createStatement();
// 发送SQL语句
String sql = "SELECT * FROM fruit";
rs = stmt.executeQuery(sql);
// 处理结果集
while (rs.next()) {
FruitItem fruitItem = new FruitItem();
fruitItem.setNumber(rs.getString("number"));
fruitItem.setName(rs.getString("fruitname"));
fruitItem.setPrice(rs.getDouble("price"));
fruitItem.setUnit(rs.getString("unit"));
list.add(fruitItem);
}
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return null;
}
//添加数据
public void addFruitItem(FruitItem fruitItem) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 获得数据的连接
conn = JDBCUtils.getConnection();
// 获得Statement对象
stmt = conn.createStatement();
// 发送SQL语句
String sql = "INSERT INTO fruit(number,fruitname,price,unit)"
+ "VALUES(" + fruitItem.getNumber() + ",'" + fruitItem.getName()
+ "','" + fruitItem.getPrice() + "','" + fruitItem.getUnit()+ "')";
int num = stmt.executeUpdate(sql);
if (num > 0) {
System.out.println("插入数据成功!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
}
//删除数据
public void delFruitItem(String delNumber) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 获得数据的连接
conn = JDBCUtils.getConnection();
// 获得Statement对象
stmt = conn.createStatement();
// 发送SQL语句
String sql = "DELETE FROM fruit WHERE number=" + delNumber;
int num = stmt.executeUpdate(sql);
if (num > 0) {
System.out.println("删除数据成功!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
}
}

package cn.itcast.fruitstore.domain;
/*
* 水果项数据模型
*/
public class FruitItem {
//属性
private String number;//编号
private String name; //名称
private double price; //价格
private String unit; //单位
//构造方法
public FruitItem() {
}
public FruitItem(String number, String name, double price, String unit) {
super();
this.number = number;
this.name = name;
this.price = price;
this.unit = unit;
}
//get/set方法
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
}

相关文章:

  • 2.4 Python基础概念:通过一个文字冒险游戏学习编程
  • Linux网络-基础概念
  • Nginx代理缓存静态资源
  • 爬虫技术:数据获取的利器与伦理边界
  • 【CompletableFuture】常用方法(三)
  • JetsonNano详细使用笔记(二)
  • CentOS 7 虚拟机网络配置异常 典型问题:启动了NetworkManager但是network无法启动
  • 家用旧电脑搭建小型服务器操作步骤教程:一步一步本地部署到公网访问
  • 升级OpenSSL和OpenSSH 修复漏洞
  • InputStream重复读取导致文件损坏问题解决方案
  • 【C分解多位整数输出1位数2各位空格最后无空格3倒序/读取指定字符否则退出】2022-6-29
  • Flask设计网页截屏远程电脑桌面及切换运行程序界面
  • Javaweb学习——day6(JDBC入门 CRUD)
  • 【Unity】MiniGame编辑器小游戏(三)马赛克【Mosaic】
  • EPOLL相关接口和原理
  • CppCon 2016 学习:BUILDING A MODERN C++ FORGE FOR COMPUTE AND GRAPHICS
  • 如何将数据从安卓设备传输到 iPhone | 综合指南
  • 【QT】QT项目修改QT设计师界面类类名和文件名的方法
  • 408第二季 - 组成原理 - 数据类型转换
  • 在linux上用nginx配置ssl应该怎么操作?下面是示例
  • 网站建设与app开发/seo外链网
  • 成立一个做网站的公司成本/网络推广应该怎么做啊
  • 土地流转网站建设报告/百度平台电话
  • 做电商网站价钱/网站设计论文
  • 网站做收录是什么意思/跨境电商平台
  • 做网站设计服务商/湖南网站营销seo方案