JavaWeb图书管理系统
目录
1、设计任务与目的
2、设计思路
3、概要设计
3.1系统结构图设计
3.2开发工具与运行环境
4、详细设计
4.1系统用户用例图
4.2用户登录用例图
4.3业务流程图
4.4数据流程图
4.5数据字典
4.6数据库介绍
4.7 E-R实体图设计
5、软件需求
5.1系统登录模块
5.2添加图书信息模块
5.3 查看图书借阅记录模块
6、参考文献
- 设计目的
通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能;熟练掌握JAVA的基本语法与JDBC数据库技术的应用;进一步熟悉MySQL Server数据库的数据库管理(数据库的创建、备份与恢复、函数与存储过程的应用、数据导入导出、作业的调度等)、表的设计(表的创建、修改、删除,字段的默认值、约束及关系等)、数据的查询处理(insert、update、delete、select语句的应用)等技术;并能结合数据库应用技术和软件工程技术进行桌面应用程序的开发。
- 设计形式
以图书管理员项目为载体,充分了解项目开发流程,采用前后端分离技术,将项目进行拆分,利用MySQL数据库保存相关数据,利用servlet技术实现前后端数据传输。从而实现通信,从而达成完整的项目。
1、设计任务与目的
设计出Java图书管理系统
基础框架搭建
功能要求
- 对系统登陆后进行增删改查功能
- 用主页面提供用户登录,包括用户名、密码,管理员可进行“登陆”和“修改”户名,密码登陆
- 管理员系统管理、基础管理、读者管理、图书查询管理、借阅以及归还管理
- 普通用户:图书查询管理、个人信息修改、密码、借阅以及归还管理
2、设计思路
由于我们本次管理系统主要采用面向对象的设计模式,将项目进行模块化拆分,做到将复杂问题简单化,其中本项目主要涉及到了几个模块,主要是管理员操作模块,普通用户操作模块,以及登录注册模块。其中管理员和普通用户是很多地方都可以复用的。登录模块是管理员和普通用户共有的,其中的登录,修改个人信息,修改密码这些操作都可以单独封装以供调用。然后因为数据量比较大,所以我们还需要数据库的支持,我们需要建造一个数据库去保存及被调用相关数据信息。同时为保证美观及后期迭代优化的简易性,我们将项目进行前后端分类,前端主要利用jsp,后端利用java配合上mysql数据库,利用利用servlet技术实现前后端通信,达到最终的实现效果。
设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示。本系统开发采用目前一种目前广泛流行的软件设计模式MVC。MVC(Model-View - Controller)应用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。如下图所示:
3、概要设计
Java图书管理系统:
本图书管理系统总体上分为前台页面显示和后台管理
3.1系统结构图设计
3.2开发工具与运行环境
PC机 IDEA2020.1 JDK1.8 tomcat8.5.57 MySQL5.7.16 windows10
4、详细设计
4.1系统用户用例图
4.2用户登录用例图
4.3业务流程图
4.4数据流程图
4.5数据字典
4.5.1Admin 用户表
字段名 |
类型 |
说明 |
备注 |
aid |
int(11) |
用户id |
PRIMARY KEY NOTNULLAUTO_INCREMENT |
username |
varchar(20) |
账号 |
CHARACTERSETgbkCOLLATE gbk_bin NOT NULL |
name |
varchar(20) |
读者的姓名 |
DEFAULT NULL |
password |
varchar(64) |
密码 |
DEFAULT NULL |
|
varchar(255) |
邮箱 |
DEFAULT NULL |
phone |
varchar(20) |
手机号 |
DEFAULT NULL |
status |
int(2) |
用来判断是管理员还是读者,读者的值为1,管理员为2 |
DEFAULT '1' |
lend_num |
int(11) |
可借阅天数 |
DEFAULT NULL |
max_num |
int(11) |
最大可借数 |
DEFAULT NULL |
4.5.2 book书籍表
字段名 |
类型 |
说明 |
备注 |
bid |
int(11) |
Bookid |
PRIMARY KEY NOTNULLAUTO_INCREMENT |
name |
varchar(205) |
图书名称 |
NOT NULL |
card |
varchar(205) |
图书号 |
CHARACTER SET utf8 NOT NULL UNIQUE KEY `ISBN` |
autho |
varchar(205) |
作者 |
DEFAULT NULL |
num |
int(11) |
图书数量 |
NOT NULL |
press |
varchar(205) |
出版社 |
DEFAULT NULL |
type |
varchar(255) |
图书的分类 |
DEFAULT NULL |
4.5.3 booktype书籍分类表
字段名 |
类型 |
说明 |
备注 |
tid |
int(11) |
分类的id |
PRIMARY KEY NOTNULLAUTO_INCREMENT |
name |
varchar(20) |
分类的名称 |
NOT NULL |
4.5.4 history借阅历史表
字段名 |
类型 |
说明 |
备注 |
hid |
int(11) |
借阅记录的id |
PRIMARY KEY NOTNULLAUTO_INCREMENT |
aid |
int(11) |
读者的id |
DEFAULT NULL |
bid |
int(11) |
图书的id |
DEFAULT NULL |
card |
char(255) |
图书号 |
DEFAULT NULL |
bookname |
char(255) |
图书名称 |
DEFAULT NULL |
adminname |
char(255) |
读者的账号 |
DEFAULT NULL |
username |
char(255) |
读者的姓名 |
DEFAULT NULL |
begintime |
char(255) |
借阅时间 |
DEFAULT NULL |
endtime |
char(255) |
要还书的时间 |
DEFAULT NULL |
status |
int(11) |
表示借阅状态,1为正在借阅,2是已经还书 |
DEFAULT NULL |
4.6数据库介绍
本数据库构建了四个表,分别是admin表,book表,booktype表,和history表。有数据自己表及其各表之间的关系可以得出:
- book和booktype是一对多的关系。
- Admin和history表是一对多的关系
- Book和history表是一对多的关系
- 由2,3可推出 admin表和book表是多对多的关系。
4.6.2数据库实现
SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `admin`-- ----------------------------DROP TABLE IF EXISTS `admin`;CREATE TABLE `admin` (`aid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) CHARACTER SET gbk COLLATE gbk_bin NOT NULL,`name` varchar(20) DEFAULT NULL,`password` varchar(64) DEFAULT NULL,`email` varchar(255) DEFAULT NULL,`phone` varchar(20) DEFAULT NULL,`status` int(2) DEFAULT '1',`lend_num` int(11) DEFAULT NULL,`max_num` int(11) DEFAULT NULL,PRIMARY KEY (`aid`)) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;-- ------------------------------ Records of admin-- ----------------------------INSERT INTO `admin` VALUES ('1', '123', '12355678', '123', '12348', '1234558', '1', '0', '5');INSERT INTO `admin` VALUES ('2', '13', '13', '13', '13', '13', '2', '13', '13');INSERT INTO `admin` VALUES ('4', '456', '456', '456', '456', '456', '1', '30', '5');INSERT INTO `admin` VALUES ('5', '543', '5', '5', '5', '5', '1', '5', '5');-- ------------------------------ Table structure for `book`-- ----------------------------DROP TABLE IF EXISTS `book`;CREATE TABLE `book` (`bid` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(205) NOT NULL,`card` varchar(205) CHARACTER SET utf8 NOT NULL,`autho` varchar(205) DEFAULT NULL,`num` int(11) NOT NULL,`press` varchar(205) DEFAULT NULL,`type` varchar(255) DEFAULT NULL,PRIMARY KEY (`bid`),UNIQUE KEY `ISBN` (`card`)) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;-- ------------------------------ Records of book-- ----------------------------INSERT INTO `book` VALUES ('4', '12', '12', '1', '1', '1', '3234');INSERT INTO `book` VALUES ('2', '5', '5', '5', '5', '5', '323');INSERT INTO `book` VALUES ('3', '6', '6', '4', '4', '4', '53');INSERT INTO `book` VALUES ('5', '9', '9', '9', '9', '9', '3234');-- ------------------------------ Table structure for `booktype`-- ----------------------------DROP TABLE IF EXISTS `booktype`;CREATE TABLE `booktype` (`tid` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL,PRIMARY KEY (`tid`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;-- ------------------------------ Records of booktype-- ----------------------------INSERT INTO `booktype` VALUES ('1', '3234');INSERT INTO `booktype` VALUES ('2', '53');INSERT INTO `booktype` VALUES ('4', '6');-- ------------------------------ Table structure for `history`-- ----------------------------DROP TABLE IF EXISTS `history`;CREATE TABLE `history` (`hid` int(11) NOT NULL AUTO_INCREMENT,`aid` int(11) DEFAULT NULL,`bid` int(11) DEFAULT NULL,`card` char(255) DEFAULT NULL,`bookname` char(255) DEFAULT NULL,`adminname` char(255) DEFAULT NULL,`username` char(255) DEFAULT NULL,`begintime` char(255) DEFAULT NULL,`endtime` char(255) DEFAULT NULL,`status` int(11) DEFAULT NULL,PRIMARY KEY (`hid`)) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ------------------------------ Records of history-- ----------------------------INSERT INTO `history` VALUES ('1', '1', '2', '5', '5', '123', '123', '2018-2-10', '2018-3-10', '0');INSERT INTO `history` VALUES ('2', '1', '3', '6', '6', '123', '123', '2018-2-10', '2018-2-10', '0');INSERT INTO `history` VALUES ('3', '1', '2', '5', '5', '123', '1235567', '2018-2-11', '2018-2-11', '0');INSERT INTO `history` VALUES ('4', '4', '3', '6', '6', '456', '456', '2018-2-11', '2018-2-12', '0');INSERT INTO `history` VALUES ('5', '1', '4', '1', '1', '123', '1235567', '2018-2-12', '2018-2-12', '0');
4.7 E-R实体图设计
5、软件需求
5.1系统登录模块
图 5-1登陆流程图
具体运行效果如图5-2所示。
图5-2登陆页面
5.2添加图书信息模块
其代码关键程序代码如下所录:
(1)添加图书类型:
@WebServlet("/AddBookTypeServlet")public class AddBookTypeServlet extends HttpServlet{public AddBookTypeServlet() {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");String name = request.getParameter("name");TypeDao typeDao= new TypeDao();typeDao.addBookType(name);response.sendRedirect("/admin_booktype.jsp");}}
addBookType方法实现:public void addBookType(String name) {Connection conn=DBUtil.getConnection();String sql="insert into booktype(name) values(?)";int rs=0;PreparedStatement stm = null;try {stm = conn.prepareStatement(sql);stm.setString(1,name);rs = stm.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}
(2)添加图书:
@WebServlet("/AddBookServlet")public class AddBookServlet extends HttpServlet {public AddBookServlet() {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");String card = request.getParameter("card");String name = request.getParameter("name");String type = request.getParameter("type");String autho = request.getParameter("autho");String press = request.getParameter("press");int num = Integer.parseInt(request.getParameter("num"));BookDao typeDao= new BookDao();typeDao.addBook(card,name,type,autho,press,num);response.sendRedirect("/admin_book.jsp");}}addBook方法实现:public void addBook(String card, String name, String type, String autho, String press, int num) {Connection conn = DBUtil.getConnection();String sql = "insert into book(card,name,type,autho,press,num) values(?,?,?,?,?,?)";int rs = 0;PreparedStatement stm = null;try {stm = conn.prepareStatement(sql);stm.setString(1, card);stm.setString(2, name);stm.setString(3, type);stm.setString(4, autho);stm.setString(5, press);stm.setInt(6, num);rs = stm.executeUpdate();} catch (SQLException e) {e.printStackTrace();}}
5.3 查看图书借阅记录模块
其代码关键程序代码如下所录:
public ArrayList<BookBean> getLikeList(String name) {ArrayList<BookBean> tag_ArrayList = new ArrayList<BookBean>();Connection conn = DBUtil.getConnection();String sql = "select * from book where name like '%" + name + "%'";PreparedStatement stm = null;ResultSet rs = null;try {stm = conn.prepareStatement(sql);rs = stm.executeQuery();while (rs.next()) {BookBean tag = new BookBean();tag.setBid(rs.getInt("bid"));tag.setName(rs.getString("name"));tag.setCard(rs.getString("card"));tag.setAutho(rs.getString("autho"));tag.setType(rs.getString("type"));tag.setPress(rs.getString("press"));tag.setNum(rs.getInt("num"));tag_ArrayList.add(tag);}} catch (SQLException e) {e.printStackTrace();}return tag_ArrayList;}
6、参考文献
[1]李钟尉,《JAVA开发实战1200例》(第一卷),清华出版社,2011
[2]曲培新,《JAVA项目开发案例精粹》,电子工业出版社2010
[3]宛延周,《JAVA编程技巧》,机械工业出版社,2005
JavaWeb图书管理系统相关推荐
- JavaWeb图书管理系统day03
视频+资料+笔记[链接:https://pan.baidu.com/s/127I2oA8zvhTECCmC6wMSmQ 提取码:zjxs] JavaWeb图书管理系统[bookEstore文档] ...
- JavaWeb图书管理系统day02
视频+资料+笔记[链接:https://pan.baidu.com/s/127I2oA8zvhTECCmC6wMSmQ 提取码:zjxs] JavaWeb图书管理系统[bookEstore文档] ...
- JavaWeb图书管理系统day01
视频+资料+笔记[链接:https://pan.baidu.com/s/127I2oA8zvhTECCmC6wMSmQ 提取码:zjxs] JavaWeb图书管理系统[bookEstore文档] ...
- Javaweb图书管理系统t
JavaWeb图书管理系统 一.创建数据库bookdb,导入数据库文件在这里插入代码片 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;-- ------- ...
- JavaWeb图书管理系统 图书借阅系统项目源码附带视频部署演示教程
一.项目介绍 更新记录 2022.05.29 修复Java代码,添加过滤器未实现的方法 解决css,js样式失效,引入改为本地引入 重构项目,一个项目分两版本,一个idea版本一个eclipse版本 ...
- javaweb 图书管理系统完整代码_群晖 + Docker + Calibre-Web 搭建电子书管理系统
自从有了群晖生活方便了很多,想看的书也越来越多, 给管理带来了挑战,想着有没有什么高大上一点的系统能帮我管理这些电子书籍,就像Ds Video一样,界面养眼的同时还能激发我看书的欲望. 我在百度用各种 ...
- JavaWeb 图书管理系统(数据库综合实验)
<数据库系统综合实验>设计报告 分工我负责了图书管理系统中整个数据库的设计与实现,编写与整理了数据库相关方面的文档.梳理了概念设计,对于实体,实体对应的属性,各实体间的关联,E-R(实体联 ...
- java工作日报管理系统_GitHub - LovebuildJ/book-manager: JavaWeb图书管理系统,简单易用功能强大,可拓展性高,集成主流框架...
book-manager 介绍 图书管理系统 请勿忽略更新日志, 会有详细的版本更新说明! 软件截图 在线API接口文档 登录 首页轮播 图书列表 图书上架 图书编辑 图书删除 图书借阅 图书检索 图 ...
- 基于eclipse开发软件的Javaweb图书管理系统【源代码】及部分软件
第一步 下载JDK 1.下载网址:所需JDK网址 根据自己的操作系统选择,x86代表32位,x64代表64位.点击相应的jdk下载.(本机系统是Windows 64位的,选择.exe) 2.百度网盘下 ...
最新文章
- 3月到9月之9月到12月
- IDentif.AI | 开发AI平台以快速确定包括COVID-19在内感染的治疗方案
- linux c 通过 /proc 获取 pid 进程 列表
- setBackgroundDrawable和setBackgroundColor的用法(转)
- 2020ICPC(上海) - Sum of Log(数位dp)
- 外挂学习之路(11)--- 背包数据的遍历
- 史上最详细 DevC++无法运行正则表达式
- 模块单元学习笔记(日志记录模块os模块sys)
- 感知器模型为什么不能解决异或问题
- namenode 优化 mv慢的问题
- map转json,json转对象
- 操作系统原理实验报告——读者写者
- 科技公司,请逃离一线城市
- bat文件实现ftp上传和下载
- 里程碑!家里的开发板能使用Dnspod的动态域名服务,稳定
- ppt制作心得【转发】
- 多个域名指向一个ip
- for循环输出菱形星星
- 利用kali hydra 暴力破解Windows7(hydra的基本用法)会继续更新
- zeromq初体验C语言版本测试程序及C++测试程序
热门文章
- django:信号机制
- pcs增加mysql资源_pcs命令配置示例
- 120M硬盘的jslinux
- 【unity】性能优化之——视锥体剔除(Frustum Culling)(一)
- 数字调制BPSK/QPSK/QAM/ASK/FSK/PSK
- Markdown/KaTeX/LaTeX语法、工具及模板大全(持续更新ing...)
- 防止表单重复提交的解决方案
- mysql日期对应java类型_Mysql与Java日期类型
- 转 Fedora各个历史版本官方下载地址
- 模糊控制在matlab中常见的疑难问题及模糊逻辑工具箱的使用