Java图书管理系统(可视化界面)连接达梦(DM)数据库

前言

Java的图书管理系统的项目非常多,但是大部分连接的数据库都是MySQL、Oracle、SQL Server等,这些数据库以其成熟稳定、社区活跃的特点,在市场中占据了举足轻重的地位。而国产数据库像达梦数据库的却很少见,所以这个项目我打算用达梦数据库来作为数据支撑,体验一下国产数据库数据支撑能力。

作为一个Java的初学者,这个图书管理系统都是一些很基础的布局设置,以及一些基本的操作业务逻辑,连接的达梦数据库的操作和MySQL的没有太大的差异,就是连接时的驱动,数据库名,连接的用户名和密码有不同,sql语句基本能兼容,因此Java代码上没有太大变化。

这是图书管理界面的一些基本界面展示

接下来就是图书管理系统的具体内容

1.连接达梦数据库

点击IDEA菜单上的文件选项,选择项目结构条目,然后在左侧的项目设置里选择库,新建项目库,然后选择达梦数据库安装的文件,找到相应的驱动,具体路径如下

点击应用,接下就是创建一个类,用来连接数据库和处理sql语句,这是我创建的一个叫Database的类。

public class DataBase {
    List<User> list;
    Connection con;
    //驱动程序名
    private	String driver ;
    //URL指向要访问的数据库名
    private	String url;
    //配置时的用户名
    private String user;
    //配置时的密码
    private String password;


    public DataBase(){
        driver = "dm.jdbc.driver.DmDriver";
        url = "jdbc:dm://localhost:5236/SYSDBA";
        user = "SYSDBA";
        password = "SYSDBA";

        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url,user,password);
            if (!con.isClosed()){
                System.out.println("数据库连接成功");
            }else {
                System.out.println("数据库连接失败");
            }
        }catch (Exception e){
            System.out.println("数据库连接失败");
            e.printStackTrace();
        }

    }
}

运行这段代码,在运行后如果打印了数据库连接成功,这说明该项目已经成功连接到了达梦数据库。接下来在达梦数据库中创建相应的表:

普通用户信息表:

CREATE TABLE "SYSDBA"."user"
(
"id" VARCHAR(30) NOT NULL,
"password" VARCHAR(30) NOT NULL,
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;

管理员信息表:

CREATE TABLE "SYSDBA"."manager"
(
"id" VARCHAR(30) NOT NULL,
"password" VARCHAR(30) NOT NULL,
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;

图书信息表:

CREATE TABLE "SYSDBA"."book"
(
"bookId" INT AUTO_INCREMENT NOT NULL,
"bookName" VARCHAR(30),
"author" VARCHAR(30),
"publishTime" VARCHAR(30),
"price" DOUBLE,
"bookNumber" INT,
NOT CLUSTER PRIMARY KEY("bookId")) STORAGE(ON "MAIN", CLUSTERBTR) AUTO_INCREMENT = 40;

接下来就可以回到IDEA中,创建界面并设置相应的业务逻辑。

2.图书管理系统代码

用户类

package system;


public class User {
    private String id;
    private String password;

    public User(){

    }

    public User(String id,String password){
        this.id = id;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

这部分是普通用户和管理员共用的类,包含id和password两个属性,与数据库的表相对应,并提供了setter和getter的方法。

图书类

package system;

public class Book {
    private int bookId;
    private String bookName;
    private String author;
    private String publishTime;
    private double price;
    private int bookNumber;

    public Book (){

    }

    public Book (int bookId,String bookName,String author,String publishTime,double price,int bookNumber){
        this.bookId = bookId;
        this.bookName = bookName;
        this.author = author;
        this.publishTime = publishTime;
        this.price = price;
        this.bookNumber = bookNumber;
    }

    public int getBookID() {
        return bookId;
    }

    public void setBookID(int bookID) {
        this.bookId = bookID;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPublishTime() {
        return publishTime;
    }

    public void setPublishTime(String publishTime) {
        this.publishTime = publishTime;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getBookNumber() {
        return bookNumber;
    }

    public void setBookNumber(int bookNumber) {
        this.bookNumber = bookNumber;
    }
}

这部分是图书的信息类,包含图书的ID、名称、作者、出版时间、价格和数量,与数据库的表相对应,并提供了setter和getter方法。

数据库操作类(DataBase)

package system;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DataBase {
    Connection con;
    //驱动程序名
    private	String driver ;
    //URL指向要访问的数据库名
    private	String url;
    //配置时的用户名
    private String user;
    //配置时的密码
    private String password;


    public DataBase(){
        driver = "dm.jdbc.driver.DmDriver";
        url = "jdbc:dm://localhost:5236/SYSDBA";
        user = "SYSDBA";
        password = "SYSDBA";

        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url,user,password);
            if (!con.isClosed()){
                System.out.println("数据库连接成功");
            }else {
                System.out.println("数据库连接失败");
            }
        }catch (Exception e){
            System.out.println("数据库连接失败");
            e.printStackTrace();
        }

    }



    //添加用户
    public void addUser(User user){
        try {
            String sql = "INSERT INTO \"user\"(\"id\",\"password\") VALUES (?,?)";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,user.getId());
            pstat.setString(2,user.getPassword());
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("注册保存成功");
            }else {
                System.out.println("注册失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }


    //添加管理员
    public void addManager(User user){
        try {
            String sql = "INSERT INTO \"manager\"(\"id\",\"password\") VALUES (?,?)";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,user.getId());
            pstat.setString(2,user.getPassword());;
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("注册保存成功");
            }else {
                System.out.println("注册失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }


    //查看用户id和密码
    public ArrayList<User> getUser(){
        ArrayList<User> userList = new ArrayList<>();
        try{

            String sql = "SELECT * FROM \"user\";";
            PreparedStatement pstat = con.prepareStatement(sql);
            ResultSet rs = pstat.executeQuery();//executeQuery用于执行SQL查询并返回查询结果  ResultSet 包含了查询结果的数据。
            while (rs.next()){
                User user = new User(rs.getString("id"), rs.getNString("password"));
                //使用 ResultSet 对象的 getString 方法从当前行(由 rs.next() 控制)中获取名为 "id" 的列的值,并将其作为字符串返回,password也是如此
                userList.add(user);
            }

        }catch (Exception e){
            e.printStackTrace();
        }
        return userList;
    }


    //查看管理员id和密码
    public ArrayList<User> getManager(){
        ArrayList<User> userList = new ArrayList<>();
        try{

            String sql = "SELECT * FROM \"manager\";";
            PreparedStatement pstat = con.prepareStatement(sql);
            ResultSet rs = pstat.executeQuery();//executeQuery用于执行SQL查询并返回查询结果  ResultSet 包含了查询结果的数据。
            while (rs.next()){
                User user = new User(rs.getString("id"), rs.getNString("password"));
                //使用 ResultSet 对象的 getString 方法从当前行(由 rs.next() 控制)中获取名为 "id" 的列的值,并将其作为字符串返回,password也是如此
                userList.add(user);
            }

        }catch (Exception e){
            e.printStackTrace();
        }
        return userList;
    }

    //获取所有用户的账号信息并转化为二维表格
    public Object[][] getAllUser(){
        ArrayList<User> userList = new ArrayList<>();
        Object[][] data = null;

        try {
            String sql = "SELECT * FROM \"user\";";
            PreparedStatement pstat = con.prepareStatement(sql);
            ResultSet rs = pstat.executeQuery();
            while (rs.next()){userList.add(new User(
                    rs.getString("id"),
                    rs.getString("password")
            ));
                if (!userList.isEmpty()){
                    data = new Object[userList.size()][2];
                    int i = 0;
                    for (User user : userList){
                        data[i][0] = user.getId();
                        data[i][1] = user.getPassword();
                        i++;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return data;
    }


    //查询用户并转化为二维数组
    public Object[][] selectUser(String id){
        ArrayList<User> userList = new ArrayList<>();
        Object[][] data = null;

        try {
            String sql = "SELECT * FROM \"user\" WHERE \"id\" = ?;";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,id);
            ResultSet rs = pstat.executeQuery();
            while (rs.next()){userList.add(new User(
                    rs.getString("id"),
                    rs.getString("password")
            ));
                if (!userList.isEmpty()){
                    data = new Object[userList.size()][2];
                    int i = 0;
                    for (User user : userList){
                        data[i][0] = user.getId();
                        data[i][1] = user.getPassword();
                        i++;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return data;
    }


    //删除用户信息
    public void deleteUser(String id){
        try {
            String sql = "DELETE \"user\" WHERE \"id\" = ?;";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,id);
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    //修改账号信息
    public void changePassword (User user){
        try {
            String sql = "UPDATE \"user\" SET \"password\"=? WHERE \"id\"=?;";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,user.getPassword());
            pstat.setString(2,user.getId());
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("修改成功");
            }else {
                System.out.println("修改失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }


    //插入图书信息
    public void addBook(Book book){
        try {
            String sql = "INSERT INTO \"book\" (\"bookName\",\"author\",\"publishTime\",\"price\",\"bookNumber\") VALUES (?,?,?,?,?);";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1,book.getBookName());
            pstat.setString(2,book.getAuthor());
            pstat.setString(3,book.getPublishTime());
            pstat.setDouble(4,book.getPrice());
            pstat.setInt(5,book.getBookNumber());
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("图书信息保存成功");
            }else {
                System.out.println("图书信息保存失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }


    //获取全部图书信息
    public ArrayList<Book> getAllBook(){
        ArrayList<Book> bookList = new ArrayList<>();
        try{
            String sql = "SELECT * FROM \"book\";";
            PreparedStatement pstat = con.prepareStatement(sql);
            ResultSet rs = pstat.executeQuery();
            while (rs.next()){
                Book book = new Book(rs.getInt("bookId"),rs.getString("bookName"),rs.getString("author"),rs.getString("publishTime"),rs.getDouble("price"),rs.getInt("bookNumber"));
                bookList.add(book);
            }

        }catch (Exception e){
            e.printStackTrace();
        }
        return bookList;
    }



    //获取全部图书信息,并转化为二维数组
    public Object[][] getBook() {
        ArrayList<Book> BookList = new ArrayList<>();
        Object[][] data = null;

        try {
            String sql = "SELECT * FROM \"book\";";
            PreparedStatement pstat = con.prepareStatement(sql);
            ResultSet rs = pstat.executeQuery();

            while (rs.next()) {
                BookList.add(new Book(
                        rs.getInt("bookId"),
                        rs.getString("bookName"),
                        rs.getString("author"),
                        rs.getString("publishTime"),
                        rs.getDouble("price"),
                        rs.getInt("bookNumber")
                ));

            }
            if (!BookList.isEmpty()){
                data = new Object[BookList.size()][6];
                int i = 0;
                for (Book book : BookList){
                    data[i][0] = book.getBookID();
                    data[i][1] = book.getBookName();
                    data[i][2] = book.getAuthor();
                    data[i][3] = book.getPublishTime();
                    data[i][4] = book.getPrice();
                    data[i][5] = book.getBookNumber();
                    i++;
                }
            }else {
                System.out.println("空");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }



    // 查询图书并转换为表格数据
    public Object[][] selectBook(String selectBookName) {
        ArrayList<Book> selectBookList = new ArrayList<>();
        Object[][] data = null;

        try {
            String sql = "SELECT * FROM \"book\" WHERE \"bookName\" = ?;";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setString(1, selectBookName);
            ResultSet rs = pstat.executeQuery();

            while (rs.next()) {
                selectBookList.add(new Book(
                        rs.getInt("bookId"),
                        rs.getString("bookName"),
                        rs.getString("author"),
                        rs.getString("publishTime"),
                        rs.getDouble("price"),
                        rs.getInt("bookNumber")
                ));

            }
            if (!selectBookList.isEmpty()){
                data = new Object[selectBookList.size()][6];
                int i = 0;
                for (Book book : selectBookList){
                    data[i][0] = book.getBookID();
                    data[i][1] = book.getBookName();
                    data[i][2] = book.getAuthor();
                    data[i][3] = book.getPublishTime();
                    data[i][4] = book.getPrice();
                    data[i][5] = book.getBookNumber();
                    i++;
                }
            }else {
                System.out.println("未找到该图书");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }



    //删除图书
    public void deleteBook(int id){
        try {
            String sql = "DELETE \"book\" WHERE \"bookId\"=?;";
            PreparedStatement pstat = con.prepareStatement(sql);
            pstat.setInt(1,id);
            int rs = pstat.executeUpdate();
            if (rs != 0){
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
            }
        }catch (Exception e){
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值