此项目,适合在Java入门阶段的小白学习,整个项目运用了java基础阶段所有的知识点。
1、项目功能大纲
项目技术点:面向对象,集合,IO,线程等技术
author:冯宝宝
项目功能:如图所示
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(用户文本)
注意:这里在txt文本里面定义了 管理员登录和普通用户登录 分别为用户名和密码 可自定义!
admin1 123456
admin2 66666
admin3 123123
-----------------------------------
张三 123
李四 456
王五 55555
图书馆(书记)
图书下载文档(用来存放下载的图书)
序号 作者 图书名称 价格 图书路径 图书数量
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);
}
}
未完待续......