1.功能调查与系统功能框架图:本系统应该包含什么功能、谁使用这个系统。

前期调查(主要功能涉及)

  • 目录检索
    搜索页面:

    搜索结果:

    选择一本书:

  • 在找到书后,实际情况应该是通过系统记录该书的编号,书的借阅记录就会发生变化,它会在搜索到的时候显示此书已经被借阅,已经借阅者归还的时间。

  • 另外,在用户的界面:应该有具体的借阅信息

  • 要实现不同用户的信息不同,则需要实现登录及注册功能,并且为每一位用户储存该用户的具体借阅信息。

系统功能框架:

  • 此系统是由用户使用的,用户只能进行查找、借书、还书的操作,图书馆中图书的显示和功能列表之类,用户只有权力看,无权更改,至于图书馆书架上书的更新是系统内部的功能,后续可能会有管理员的身份,由管理员操作,目前仅可在系统内部手动更改。(我自己改)

2.类的设计:UML类图,应展现主要类之间的关系。如果类比较多,应该放多张图,每张图有自己的重点。

3.类说明:说明主要类的属性和主要方法。使用到集合相关(List、Set、Map)类,要重点说明,为什么用这种数据类型存储数据。

:省去了get、set和toStiring等方法)

Book

  • 属性:
        private Integer id;//编号有且只有一个
	private String name;//名字,可重名
	private String author;//作者
	private String press;//出版社
	private String description;//类别
	private String state;//状态
  • 方法:
    主要是重写了compareTo(To)方法,为了实现根据Book类的id的自定义排序
  • 具体代码:

user

  • 属性:无

  • 方法:

    • 根据输入的str在文件中找,输入的是用户名+空格+密码的形式
    • 判断用户的姓名是否是新的,不重复的
    • 写入用户信息str,成功则返回true
    • 注册
  • 具体代码:

MyLibraryDaoImpl

  • 属性:
	private ArrayList<Book> libraryList;// 自己的图书馆
 注:ArrayList是动态数组,它可以动态地增加和减少元素,还自带很多便捷的方法,存储方便
  • 方法:
    • 展示自己的图书馆的借阅情况
    • 借书,即将书放入自己的图书馆,并在书架上显示该书已被借阅
    • 还书,即将书从自己的图书馆中归还,并在书架上显示该书可被借阅
    • 根据id找书,找到在libraryList中的位置,返回下标
  • 具体代码:

ShelfDaoImpl

  • 属性:
	private ArrayList<Book> shelfList;// 书架
  • 方法:
    • 添加书籍到书架上
    • 从书架上删除书籍
    • 展示书架上的图书的信息
    • 根据id找书籍,返回shelfList中的位置,返回下标
    • 根据传入的参数(name/author)找书,返回书
    • 根据传入的参数(id)找书,返回书
  • 具体代码:

4.系统的包(package)的规划设计:请参考要求1。可以画UML包图。不仅要有package、还要有该package包含了什么类。

  • Dao中有两个Dao接口,DaoImpl中包含的是接口对应的实现,Main中包含了Main类,主要是调用方法实现程序,Library中包含了Book类,Login中包含了user类。

5.特色(可选):

是否使用DAO模式?带来了什么好处?

是。好处:使接口和实现分离,提高了代码的灵活性,便于日后的修改,只需添加另外的实现即可。

是否进行数据持久化(数据存储)?准备使用什么方案?

是。用文件存储并进行读取的操作。

是否使用阿里巴巴代码规范扫描插件对项目代码进行扫描?

  • 是。
  • 扫描后,主要问题有:①在重写的方法前增加了@Override②if包含的语句必须用大括号包含起来。
  • 另外还有一些小提示,比如行尾不能注释啊,包名应由小写字母和数字组成....(不更改也不会报错就是了)
  • 最后,它扫描过后,有问题的话,代码会被画上蓝色的波浪线,出现一大片的话,是没有注释作者信息,反正根据旁边蓝色的i去更改就好了。比如这样的:
  • 当然也可以不改,一般性的错误不改也不会报错,程序还是能正常运行的。

是否使用Git管理代码?

使用了
点击此处查看代码:Git

是否真的已经完成系统的初步原型(可以进行简单演示)。

是,演示如下:

登录和注册

图书馆书架

查找

  • 根据id
  • 根据书名
  • 根据作者

借书


借书后,该书在图书馆的书架上的状态被更改了,它会出现在用户自己的图书馆里

还书


此时查看书架会发现该图书又可借阅了

其他的你认为比较有特色的地方。

  • 我在Main里面取了时间,这样,可以显示图书被借阅的时间。