当前位置: 首页 > 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;
}
}

http://www.lryc.cn/news/571311.html

相关文章:

  • 二分算法深度解析
  • 简说 python
  • C++ vector(2)
  • 【编译工具】CodeRider 2.0:驭码 CodeRider 2.0 全流程智能研发协作平台深度技术测评报告
  • Java在IDEA中终端窗口输出正常,但打包成JAR后中文乱码问题
  • 『大模型笔记』第3篇:多长的 Prompt 会阻塞其他请求?优化策略解析
  • Java线程池全面解析:原理、实现与最佳实践
  • Socket 编程 UDP
  • 【Linux】UDP与TCP协议
  • Kubernetes RDMA 概述与实战(大模型场景)
  • UE5 游戏模板 —— Puzzle 拼图游戏
  • 【配置教程】新版OpenCV+Android Studio环境配置(4.11测试通过)
  • 在线教学课程视频AI智能大纲代码与演示
  • 【Docker安装PostgreSQL】psql:致命错误: 用户 Password 认证失败
  • 在 MongoDB 中复制一个 collection(集合)
  • 以下是系统化的 Python基础学习框架,分为4个核心阶段,结合理论与实践,适合零基础快速入门并建立扎实的编程基础:
  • 【WPF】WPF ComboBox 数据驱动不刷新?SelectedItem 与 SelectedIndex 解析!
  • 什么是数据仓库的ETL
  • TortoiseSVN迁移到本地git
  • Tomcat 核心配置解析:4 大文件、乱码处理、端口与 Manager 配置
  • 企业ERP致胜秘籍:从流程革新到智能决策
  • 关系数据库-数据库事务处理与ACID原则
  • Android 开发问题:CardView 的阴影效果会受到父容器的裁切
  • STM32 实现解析自定义协议
  • HTTP 请求中的 `Content-Type` 类型详解及前后端示例(Vue + Spring Boot)
  • 为什么您应该停止使用 1080 玻璃
  • eBPF(6)--uprobe
  • MRI学习笔记-BrainNet Viewer
  • python大学生志愿者管理系统-高校志愿者管理信息系统
  • llama_index chromadb实现RAG的简单应用