javaSE进阶综合项目:图书管理系统
1、项目大纲
2、功能模块
2.1、登陆(管理员登陆,普通用户登陆)
2.2、管理员登陆
首页展示
显示所有图书
整理图书
查询图书
添加图书
修改图书
下架图书
退出系统
2.3、普通用户登陆
首页展示
显示所有图书
查询图书
借阅图书
下载电子图书
退出系统
3、项目架构(三层架构思想)
3.1、什么是三层架构
三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为
表示层(UI):主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
业务逻辑层(BLL):主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
(DAL):主要用于实现对数据库的访问和操作。
三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。
3.2、三层架构的好处
三层架构区分层次的目的是为了 “高内聚,低耦合”。
开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。
3.3、三层架构图
3.4、三层架构的优点
- 高内聚、低耦合,可以降低层与层之间的依赖。
- 容易移植、维护,如 B / S 转 C / S、SQLServer 转 Oracle、添加、修改、删除等。
- 有利于标准化。
- 有利于各层逻辑的复用。
- 安全性高。用户端只能通过业务逻辑层来调用数据访问层,减少了入口点,把很多危险的系统功能都屏蔽了
3.5、三层架构开发原理
实体类-------数据访问层-------业务逻辑层-------表示层 (工具类)
pojo dao service controller utils
4、项目开发
4.1、准备工作
admin.txt(用户文本)
admin1 123456 1 admin2 66666 1 admin3 123123 1 张三 123 0 李四 456 0 王五 55555 0
图书馆(书记)
图书下载文档(用来存放下载的图书)
book.txt(图书)图书存放路径
4.2、登录
用户实体类(User)
public class User{ private String username; private String password; private int level; //0(管理员) 或 1(普通用户) public User() { } public User(String username, String password, int level) { this.username = username; this.password = password; this.level = level; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } @Override public String toString() { return "User{" + "username=" + username + + ", password=" + password + + ", level=" + level + }; } //equals方法登录时比较输入的用户名和密码 比较输的用户名密码 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return Objects.equals(username, user.username) && Objects.equals(password, user.password); } @Override public int hashCode() { return Objects.hash(username, password, level); } }
完整源码