财务管理系统 JAVA

概述

财务管理系统是企业中常见的一个管理系统,用于管理和监控企业的财务活动。本文将介绍如何使用Java编写一个简单的财务管理系统,包括如何设计数据库表结构,如何实现基本的数据操作,以及如何使用JavaFX构建用户界面。

数据库设计

在财务管理系统中,通常需要管理以下几个重要的数据对象:

  • 用户(User):用于管理系统的用户信息,包括用户名、密码、角色等。
  • 客户(Customer):用于管理客户信息,包括客户名称、联系人、联系电话等。
  • 产品(Product):用于管理产品信息,包括产品名称、价格、库存等。
  • 订单(Order):用于管理订单信息,包括订单编号、客户、产品、数量等。

根据以上需求,我们可以设计如下的数据库表结构:

CREATE TABLE user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL,
  role VARCHAR(20) NOT NULL
);

CREATE TABLE customer (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  contact VARCHAR(50) NOT NULL,
  phone VARCHAR(20) NOT NULL
);

CREATE TABLE product (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  price DECIMAL(10, 2) NOT NULL,
  stock INT NOT NULL
);

CREATE TABLE order (
  id INT PRIMARY KEY AUTO_INCREMENT,
  customer_id INT NOT NULL,
  product_id INT NOT NULL,
  quantity INT NOT NULL,
  FOREIGN KEY (customer_id) REFERENCES customer(id),
  FOREIGN KEY (product_id) REFERENCES product(id)
);

数据操作

连接数据库

在Java中,我们可以使用JDBC连接数据库。首先,我们需要引入JDBC相关的依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

然后,我们可以编写以下代码来连接到数据库:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseUtil {
    public static Connection getConnection() throws SQLException {
        String url = "jdbc:mysql://localhost:3306/finance?useSSL=false&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "password";
        return DriverManager.getConnection(url, username, password);
    }
}

用户管理

添加用户
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UserManager {
    public void addUser(String username, String password, String role) {
        try (Connection conn = DatabaseUtil.getConnection()) {
            String sql = "INSERT INTO user (username, password, role) VALUES (?, ?, ?)";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setString(1, username);
            statement.setString(2, password);
            statement.setString(3, role);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
删除用户
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UserManager {
    public void deleteUser(int id) {
        try (Connection conn = DatabaseUtil.getConnection()) {
            String sql = "DELETE FROM user WHERE id = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setInt(1, id);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
修改用户
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class UserManager {
    public void updateUser(int id, String password) {
        try (Connection conn = DatabaseUtil.getConnection()) {
            String sql = "UPDATE user SET password = ? WHERE id = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setString(1, password);
            statement.setInt(2, id);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

客户管理

添加客户
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CustomerManager {
    public void addCustomer(String name, String contact, String phone) {
        try (Connection conn = DatabaseUtil.getConnection()) {
            String sql = "INSERT INTO customer (name, contact, phone) VALUES (?, ?, ?)";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setString(1, name);
            statement.setString(2, contact);
            statement.setString(3, phone);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
删除客户
import java.sql.Connection