• 面向对象设计大作业-图书馆查书、借书、还书


    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里面取了时间,这样,可以显示图书被借阅的时间。
  • 相关阅读:
    Linux学习第一天:SecureCRT连接Linux常见错误
    函数
    文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数
    文件处理
    自定义函数
    三级菜单
    写一个循环,不断的问客户想买什么 ,当用户选择一个商品编号,就把对应的商品加入购物车 ,最终用户输入q退出时,答应购物车的商品
    9*9乘法表
    打印列表的每个元素和索引值
    names里面有3个2,返回第2个2的索引值
  • 原文地址:https://www.cnblogs.com/yubing----/p/14105886.html
Copyright © 2020-2023  润新知