面向对象设计大作业
Gitee代码
前期调查
以上调查截图来自于APP藏书馆
- 调查结果显示
- 功能如下
- 图书馆自带的用户登录系统
- 图书的简介、借书与还书功能
- 拓展
- 借书时间显示
- 还书期限提醒
- 续借以及还书功能
- 如有需要设计购买功能
UML图
- User模块:用户的信息以及注册登录
- Book模块:储存书籍信息
- LibraryDAO模块:实现书籍的查找统计数量等功能
- LibraryDAOArray利用数组方法实现功能
- Library模块:实现储存书籍、增加书籍、清空书籍的功能
GUI界面
效果展示
登录界面
- 用户首先进行注册操作,数据存入文档后登录,同时获取上一次借阅书籍的信息
菜单界面
- 搜索栏:用户可以根据图书的名称或者序号对图书进行搜索,搜索成功选择是否借阅,确定则提示借阅时间以及归还时间
查看图书馆内容
- 双击可以查看书籍信息,表格也展示书籍的借阅信息
查看我借阅的书籍
- 当前页面可以进行还书以及续借操作,如有需要可以进行购买操作
类说明
BookDAO
- public boolean addProduct(Book p):加入用户借阅书籍书单中
- public Book searchByName(String name):按书籍名搜索
- public Book searchByNumber(int num):按书籍序号搜索书籍
- public void showAll():展示所有借阅书籍
- public int getProductQuantity():用于获取图书数量
- public Book getProduct(int n):用于获取书本信息,在图书馆GUI界面中双击书籍时获取书籍信息
Book
属性说明
- private String name:储存书籍名称
- private String author:储存书籍作者
- private Integer num:储存书籍编号
- private Double price:储存书籍价格
- public boolean flag:储存书籍的借阅状态,若为false则暂时无人借阅,反之,则为已被借阅
- public String time:储存书籍被借阅出时的时间,以便于提醒用户以及计算归还时间
方法
构造方法以及各个属性的set与get方法,展示书籍信息的toString方法
Users
- 用户注册界面
- 新建BufferedReader br , BufferedReader由Reader类扩展而来,提供通用的缓冲方式文本读取,并且提供readLine函数,用于对文本文件一行一行的读取
由于存储用户信息时,将用户名和密码存在同一行并用空格隔开,利用split()函数,将字符串分割成字符串数组,对比注册用户信息是否已经存在,若不存在,则写入新的信息 - 用户登录界面
- 类似注册界面,利用readLine读取,对比用户名与密码是否与文件中存在的匹配,若匹配,则登录成功,进入购物车菜单界面
- 数据读取
Library
属性
private List
- 采用动态数组储存,对于图书的信息以及读取需要快速随机访问,同时数组大小也可以根据存放内容不断变化
方法
private int findItem(Integer id):按照书籍编号寻找
public boolean delete(Integer id):删除书籍
public void showLibrary():展示所有书籍
public int getQuantity() :获得书籍数量
- 数据更新
GUI
BookJTable设计
LibraryJTable设计
主菜单搜索按钮设计
效果展示
特色
- 使用Git管理代码:git仓库
- 使用DAO模式:首先DAO接口的方法给人阅读代码者一目了然的观感,同时DAO模式实现了数据访问接口与方法实现的相分离,这样能进行更好的分工。
- 实现数据持久化储存:将用户借阅的数目储存在文件中,下一次登录时访问文件中是否存在借阅书籍
- 完成系统的初步原型(可以进行简单演示)