基于JavaWeb+MySQL的图书管理系统

发布于:2022-12-28 ⋅ 阅读:(292) ⋅ 点赞:(0)

目录
一、需求分析 2
1.1 功能描述 2
1.1.1“读者”功能 2
1.1.2“管理员”功能 3
1.2 系统用例图 4
三、数据库概要设计 5
2.1 系统E-R图 5
四、数据库逻辑结构设计 5
3.1 系统关系模型 5
3.2 数据库结构SQL代码 7
3.2.1基本表 7
3.2.1存储过程 8
3.2.3定时事件 11
四、系统设计 12
4.1 系统流程图 12
4.2 模块设计 12
后端设计: 17
1.1 功能描述
1.1.1“读者”功能
1)图书的查询:图书的查询可以通过搜索图书id、书名、作者名、出版社来实现,显示结果中需要包括书籍信息以及是否被借阅的情况;
2)图书的借阅:借阅图书时,需要判断该读者现已借阅的图书数量,若超过3本,则暂时不能借书;若尚有未缴纳罚金,暂时不能借书;否则点击“确认借阅”,即完成借阅。
3)图书的归还:归还图书时,若尚有罚金未缴纳,提示学生去管理中心线下缴纳罚金再进行线下还书;否则界面显示所有待还书籍的信息,点击“确认还书”或输入图书id再点击“确认”即完成还书。
4)查看、修改个人信息:个人信息包括用户id、姓名、密码、姓名以及电话;修改个人信息:包括修改姓名、密码、性别、电话等,其中用户id不可修改。
5)查询借阅历史:通过输入书籍的id、书名、作者或出版社来查询借阅记录;记录内容包括读者id、书籍信息和借阅的开始日期以及结束日期;若书籍尚未归还,“结束日期”后会显示“尚未归还”。
6)查看处罚记录:处罚记录的内容包括违规的借阅记录的信息;如若相关书籍仍未进行线下归还且读者也未缴纳罚金,本文转载自http://www.biyezuopin.vip/onews.asp?id=15302则提示尚未缴纳罚金;否则显示该条借阅记录的超期天数。
7)注册
1.1.2“管理员”功能
1)添加图书:输入图书的Id、书名、作者、出版社、其他信息,系统将信息导入数据库;
2)删除图书:如果书籍未被借出,则可通过鼠标点击“删除图书”来完成删除任务;否则不能进行删除。
3)修改图书信息:通过点击“修改信息”,打开修改图书信息页面,修改相应信息后(书名、作者、出版社、其他信息),点击保存;
4)借阅处罚管理:输入用户id,可以查看用户的借阅违规处罚情况,用户缴纳罚款后,可点击“缴纳罚款”,撤销对该生的处罚,恢复其正常借阅和归还权利;
5)权限管理:输入最长借阅天数可修改读者最长借阅期限;点击“开启”、“关闭”按钮可以开启或者关闭“黑名单”功能。
6)用户管理:可以输入读者id或者姓名来查找读者,点击“删除用户”可以删除该用户;若“黑名单”功能被启用,可以点击“加入黑名单”、“移除黑名单”来控制用户的登陆权限。
7)管理员个人信息修改

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆到图书管理系统</title>
<style>
.window {
	width: 332px;
	position: absolute;
	top: 30%;
	left: 50%;
	display: block;
	z-index: 2000;
	background: #fff;
	padding: 20 0;
}
</style>
<link rel="stylesheet" href="./layui/css/layui.css">
</head>
<!-- background存放登陆页面背景图片 -->
<body>
	<script src="./layui/layui.js"></script>
	<%
		Cookie[] cookies = request.getCookies();//从cookie中获取登陆用户名和密码
	if (cookies != null) {
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals("id")) {
		id = cookie.getValue();
			}
			if (cookie.getName().equals("pwd")) {
		pwd = cookie.getValue();
			}
		}
	}
	%>
	<!-- 登录失败时弹出错误消息 -->
	<%
		Object message = session.getAttribute("message");
	if (message != null && !"".equals(message)) {
		session.setAttribute("message", "");
	%>
	<script>
		layui.use('layer', function() {
			var layer = layui.layer;
			layer.msg("<%=message%>");
		});
	</script>
	<%
		}
	%>
	<div class="layui-carousel" id="test1">
		<div carousel-item>
			<div style="background-image: url(1.JPG); background-size: cover;"></div>
			<div style="background-image: url(2.JPG); background-size: cover;"></div>
			<div style="background-image: url(3.JPG); background-size: cover;"></div>
			<div style="background-image: url(4.JPG); background-size: cover;"></div>
		</div>
	</div>
	<!-- 登陆和注册卡片-->
	<div class="window">
		<div class="layui-row">
			<div class="layui-col-xs12">
				<div class="layui-tab layui-tab-card"
					style="width: 330px; background-color: white">
					<!-- 卡片头选项-->
					<ul class="layui-tab-title">
						<li class="layui-this">登陆</li>
						<li>注册</li>
					</ul>
					<!-- 卡片内容-->
					<div class="layui-tab-content">
						<!-- 登陆表 -->
						<div class="layui-tab-item layui-show">
							<%!String id, pwd;//用户名和密码%>
							<div class="layui-anim layui-anim-up">
								<fieldset class="layui-elem-field layui-field-title"
									style="margin-top: 20px;">
									<legend>登录到图书管理系统</legend>
								</fieldset>
								<!-- 登陆交给login.java处理 -->
								<form action="login" class="layui-form layui-form-pane"
									method=post name=form>

									<div class="layui-form-item">
										<label class="layui-form-label">用户ID</label>
										<div class="layui-input-inline">
											<input type="text" name="id"
												value="<%=(id == null ? "" : id)%>" placeholder="请输入用户ID"
												autocomplete="off" class="layui-input">
										</div>
									</div>

									<div class="layui-form-item">
										<label class="layui-form-label">密码</label>
										<div class="layui-input-inline">
											<input type="password" name="pwd"
												value="<%=(pwd == null ? "" : pwd)%>" placeholder="请输入密码"
												autocomplete="off" class="layui-input">
										</div>
									</div>

									<div class="layui-form-item">
										<input type="radio" name="identity" lay-skin="primary"
											value="reader" title="普通用户" checked> <input
											type="radio" name="identity" lay-skin="primary" value="admin"
											title="管理员"> <input type="submit"
											class="layui-btn  layui-btn-radius" value="登陆">
									</div>
								</form>
							</div>
						</div>

						<!-- 注册表 -->
						<div class="layui-tab-item">
							<div class="layui-anim layui-anim-up">
								<fieldset class="layui-elem-field layui-field-title"
									style="margin-top: 20px;">
									<legend>普通用户注册</legend>
								</fieldset>
								<!-- 登陆交给register.java处理 -->
								<form action="register" class="layui-form layui-form-pane"
									method=post name=form>
									<div class="layui-form-item">
										<label class="layui-form-label">设置密码</label>
										<div class="layui-input-inline">
											<input type="password" name="pwd" placeholder="请输入密码"
												autocomplete="off" class="layui-input">
										</div>
									</div>
									<div class="layui-form-item">
										<label class="layui-form-label">姓名</label>
										<div class="layui-input-inline">
											<input type="text" name="name" placeholder="请输入您的姓名"
												autocomplete="off" class="layui-input">
										</div>
									</div>
									<div class="layui-form-item">
										<label class="layui-form-label">电话</label>
										<div class="layui-input-inline">
											<input type="text" name="tel" placeholder="请输入您的电话"
												autocomplete="off" class="layui-input">
										</div>
									</div>
									<div class="layui-form-item">
										<label class="layui-form-label">性別</label>
										<div class="layui-input-block">
											<input type="radio" name="sex" value="男" title="男" checked>
											<input type="radio" name="sex" value="女" title="女">
										</div>
									</div>




									<div class="layui-form-item">
										<input type="submit"
											class="layui-btn  layui-btn-radius layui-btn-fluid "
											value="注册">
									</div>
								</form>

							</div>
						</div>
					</div>
				</div>

			</div>
		</div>
	</div>
	<script>
		layui.use('form', function() {
			var form = layui.form;
			form.render();
			//监听提交
			form.on('submit(formDemo)', function(data) {
				layer.msg(JSON.stringify(data.field));
				return false;
			});
		});
		layui.use('element', function() {
			var element = layui.element;
		});
		layui.use('carousel', function() {
			var carousel = layui.carousel;
			//建造实例
			carousel.render({
				elem : '#test1',
				width : '100%', //设置容器宽度		
				height : '700px',
				autoplay : 'true',
				interval : 5000,
				arrow : 'hover' //始终显示箭头
			//,anim: 'updown' //切换动画方式
			});
		});
	</script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到