基于控制台的图书管理系统(重构版)

一、项目概述

本系统首先需要进行登录或者注册,根据不同身份操作不同的功能。管理员主要负责对操作员的基本信息管理和相关逾期金额的设定和查看。操作员主要负责对读者的信息进行管理和相关图书进行管理。本项目还会利于数据库进行数据的读取和存储。

二、遇到的问题

2.1 图书出版日期

MySQL数据库日期类型格式是“yyyy-MM-dd”格式,但出版日期一般没有准确的日期,所以我将数据库的日期设置为varchar类型,用正则表达式来判断输入的格式是否正确

    public static String readDate(boolean bool) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
        String date = readKeyBoard(bool);
        if (date.equals("")) return date;
        Date d;
        try {
            d = sdf.parse(date);
        } catch (Exception e) {
            return e.getMessage();
        }
        return sdf.format(d);
    }

2.2 java反射异常

使用通用数据库增删改方法的时候,会出现java.lang.NoSuchFieldException异常,即反射异常,原因是结果集的子段名与反射的类的子段不匹配

    public List<Book> selectBook() throws Exception {
        String sql = "SELECT `ISBN`,`typeName`,`bookName`,`author`,`publish`,`publishDate`,`publishTime`,`unitPrice` " +
                "FROM `tb_book` b " +
                "INNER JOIN `tb_booktype` bt " +
                "ON b.`typeId` = bt.`id`";
        List<Book> list = Dao.executeQuery(Book.class, sql);
        return list;
    }


    public class Book {
        private long ISBN;
        private String typeName;
        private String bookName;
        private String author;
        private String publish;
        private String publishDate;
        private int publishTime;
        private double unitPrice;
        private boolean status;
        ......
    }

 2.3 图书(读者)删除、修改

        要删除或修改图书,首先要判断该图书是否处于已借出状态,若被借出则不能删除或修改,同理,读者有未归还图书也不能删除或修改。

三、总结

        本次项目难度并不大,主要就是对于sql语句和JDBC的理解,大部分的问题都出现在数据库连接和sql语句的编写上,对于这些异常,能看懂异常,会解决异常是一件很重要的事。其中也用到了单例设计模式,此设计模式让其他的类不能直接对一个类创建对象,需通过它的getInstance()方法来创建,比较节省内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值