图书管理系统(下)

图书管理系统(下)


前言

上一章讲解了项目的开发背景,这个项目我们就来了解一下项目开发的细节及我在开发过程中所碰到的误区和bug


提示:以下是本篇文章正文内容,下面案例可供参考

一、项目框架简介

首先我们先看一下我这次项目所搭建的框架结构
经过高人指点直接使用的三层架构,也就是:

三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。

目前这个项目都是使用I/O流进行的数据留存,暂时还没使用到数据库的内容就先不介绍了

我们的表示层(UI):
在这里插入图片描述
业务逻辑层(BLL):
在这里插入图片描述
数据访问层(DAL):
在这里插入图片描述
三个层次就是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作

还有几个其他的实体类和I/O流写出的文件的包:
在这里插入图片描述

二、使用步骤

代码如下(示例):

 public void BMSview() {
        boolean flag = true;
        while (flag) {
            System.out.println("---------------------------图书管理系统------------------------------------");
            System.out.println("1.读者信息管理");
            System.out.println("2.图书信息管理");
            System.out.println("3.图书借阅管理");
            System.out.println("4.基本信息维护");
            System.out.println("5.用户管理");
            System.out.println("6.退出登录");
            switch (CMUtility.readMenuSelection1())
            {
                case '1'-> new ReaderView().index();
                case '2'-> new BookView().index();
                case '3'-> new BookBorrowView().index();
                case '4'-> new InforView().index();
                case '5'-> new AdminView().index();
                case '6'-> new LoginView().login();
            }


        }
    }

通过主界面的选择进入各个功能模块进行操作

三、代码过程中的bug及问题合集

代码如下(示例):

通过split分割字符串后赋值给创建的string 类型的数组,会覆盖掉之前数组的长度

String[] a = new String[4];
        String[] split1 = new String[3];

/*a = pro.getProperty(o.toString()).split(",");//此处split分割后的长度是3赋值给String[] a后      a[]的长度就会变为3
                a[3] = o.toString();//此时用a[3]就会下标越界异常
                */
 split1 = pro.getProperty(o.toString()).split(",");
                for (int i = 0; i < split1.length; i++) {
                    a[i] = split1[i];
                }
                a[3] = o.toString();
                //  a[3]=(String)o;

项目中有个地方需要获取string类型的的Boolean值转换为Boolean类型
头脑一发热写成了这个方法,结果调试半天结果都不太对
网上查询学习了一下才发现把这个方法搞错了

Boolean.getBoolean()

JDK文档上是这么解释这个方法的:

getBoolean(String name) :当且仅当以参数命名的系统属性存在,且等于 “true” 字符串时,才返回 true。

将string转成boolean的正确做法

Boolean.parseBoolean(),jdk文档说明如下:

将字符串参数解析为 boolean 值

来段代码演示一下:

String s = "true";
System.out.println(Boolean.getBoolean(s)); //false
System.out.println(Boolean.parseBoolean(s)); //true

需要计算读者是否逾期时用到了SimpleDateFormat 来计算借书和还书的时间间隔
设置时间的通用格式时多加了个空格 ,导致了使用parse()方法识别格式时报错异常

//错误示范
 Date date = new Date();//获取当前的日期
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd ");//设置日期格式,这里多了个空格
        String rt = df.format(date);//获取String类型的时间

 long m = df.parse(rt).getTime() - df.parse(bt).getTime();//当使用parse()方法转换格式时就会抛出转换异常

总结

本次项目考察的更多就是I/O流的运用和相对来说较大的代码量时,逻辑关系是否能够理清楚;
贯穿了一些以前学习到的知识点,也会遇到很多问题,这次项目实现过程中有很多问题都是我通过代码的调试的功能快速的排查到问题的。大家可以多尝试使用调试功能提升自己的排错找错能力。
代码我已经打包到云盘,有需求的同学可以自取:
https://pan.baidu.com/s/1gBWBGA27moFnEq1L3RFTnA
提取码:nvyi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值