项目简介

在网页端实现有关图书管理的一系列功能。
功能描述:在登录页面输入正确的管理员账号名和密码并输入正确的验证码后跳转到主页,若账号、密码或验证码有误则网页提示“用户名或密码不正确”、“验证码错误”。在主页左侧有四个功能选项,分别是“会员管理”、“图书管理”、“常用操作”、“个人中心”。
“会员管理”中有“会员开卡”、“会员管理”两个子功能。“会员开卡”需要输入用户名、密码、确认密码、充值金额、电话号码与身份证号码,正确输入后会在mybook数据库user表中存入一个新的会员信息并且在表中自动生成一个id编号(数据库采用无线层级分类能够自动给加入的数据生成id编号,编号自1开始,每记录一条信息,分配给该条信息的id编号是历史总信息条数+1)。“会员管理”页面能够显示所有注册会员的信息,每一行显示一条用户信息,每一行右侧有“修改”“删除”功能键。点击右侧的‘修改’进入会员信息修改页面,点击‘删除’若此时用户账户下的余额为0才能成功删除,否则提示删除失败。
“图书管理”:点击“添加图书”后输入图书信息后能将图书信息存入book表中。点击“修改图书”能够以行列的形式展示所有的图书信息,与“会员管理”功能一样每一行有“修改”“删除”功能键。
“常用操作”:进入“图书借阅”模块,首先要输入正确的用户id编号在网页上显示该用户的‘会员名称’‘可借数量’‘账户余额’,后才能够使用下面的图书查询功能,“图书查询”模块中要输入书籍的全名才能在网页上显示书籍信息,选中书籍条目,点击完成借阅就可以完成书籍的借阅。“图书归还”同样要输入正确的id编号后才能显示该用户借阅的书籍信息。
“个人中心”则面向管理员,修改管理账号的密码。

团队博客链接:

https://blog.csdn.net/huayvmoshui/article/details/122420825

二、功能架构图

流程图

个人任务简述

完成功能与任务 描述
基本类和表结构的设计 明确各种对象的具体属性
方法类的编写 实现对数据库信息的修改
DataHelper 实现有关日期的计算

本人负责功能详解

DataHelper类的编写:由于图书管理系统中书籍的借阅和归还是十分重要的功能,而上述功能关系的日期的计算,若在所有有关书籍的借阅和归还的方法中编写有关日期计算的代码,代码会显的臃肿。因此编写一个帮助类方便后面代码的编写

package com.enjoy.book.util;import java.text.SimpleDateFormat;
import java.util.Date;public class DateHelper {/*** 对date日期进行加减操作* @param date 一个日期* @param amount (加、减)多少天* @return 计算后的日期对象* @author 赵洋*/public static java.sql.Date getNewDate(java.sql.Date date , long amount){long mills = date.getTime();mills += amount*24*60*60*1000;java.sql.Date backDate = new java.sql.Date(mills);return backDate;}/*** 计算两个时间差* @param date01* @param date02* @return*/public static int getSpan(Date  date01,Date date02){long span = date01.getTime()-date02.getTime();int day = (int)(span/1000/60/60/24);return Math.abs(day);}}

基本类和表结构的设计
由于该项目的数据修改储存用到mysql数据库,因此根据数据库中的表结构设计基本类。
book表储存书籍:信息name书名,price书籍单价,desc书籍简介,author作者,address书籍馆藏区域,publish出版社,stock库存数量。

member表储存用户信息:name用户名,pwd用户密码,balance用户账户金额,tel用户联系电话,idNumber用户身份证号码

user表储存管理员信息:name管理员名称,pwd管理员密码,state管理员状态,若state为0则不可登陆

record表储存借阅信息:memberid是用户表中id列中的信息,bookid是book表中的id列中的信息,rentDate借阅日期,backDate归还日期,deposit押金,userId记录是哪一个管理员负责该次借阅。

1.方法编写
该类编写有关数据库信息的修改的方法的实现,下列举其中一个方法的具体代码

QueryRunner runner= new QueryRunner();private int pageIndex;/*** 添加书籍* @return*/@Overridepublic int add(String name,double price,String desc,String publish,String author,long stock,String address) throws SQLException {Connection conn  = DBHelper.getConnection();String sql="insert into book(`name`,price,`desc`,publish,author,stock,address) " +"values(?,?,?,?,?,?,?)";int count = runner.update(conn,sql,name,price,desc,publish,author,stock,address);DBHelper.close(conn);return count;}

Bookdata类中add方法实现对书籍信息的添加,DBHelper类中通过c3p0连接池,实现连接数据库的方法,调用DBHelper中的连接方法连接到数据库,runner是类中声明的QueryRunner对象用来完成数据库操作。 最后关闭数据库连接。而传入该方法的参数从BookServlet中通过jsp页面传入的表单数据,调用switch方法判断用户在页面要实现的方法

若传入的String短语是“add”,则调用bookData类中的add方法对数据库进行修改。

课程设计感想

编程过程中对servelet的理解不够透彻,了解不够深入,常常会因为一些语法的错误导致工作进度很长一段时间没有进展,同时我也对编程过程中的一些学习进行了总结。
serializable接口:Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任意状态被序列化或逆序列化。为什么要序列化?存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本。便于数据传输,尤其是在远程调用的时候!
4个JSP内置对象的作用域分别为:application、session、request、page 。
application 作用域是整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。 application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。
session作用域同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。
request作用域一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。
page对象的作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。page里的变量只要页面跳转了,它们就不见了。如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。
Form表单元素的信息需要被后台获取就必须设置name属性。

展望

本次完成的系统仅仅面向管理员,若普通用户想要实现有关于图书借阅,归还以及信息的修改就必须通过管理员才能完成相关操作。若想进一步完善该系统可以在登陆时选择身份类型从而跳转到相关页面实现功能的操作。同时在图书借阅功能中是通过用户在数据库中自动生成的id查询信息,因而用户对id的印象不够深刻,用户忘记id时必须先通过会员管理页面找到用户的id后才能完成相关操作。应将id改为身份证号。

图书管理系统(个人)相关推荐

  1. Java项目:图书管理系统(java+SSM+jsp+mysql+maven)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学生管理,借还管 ...

  2. 图书管理系统5W1H

    Who 图书管理员 When 图书管理员在图书馆借阅期间管理用户的借书还书,非借阅时间管理后台图书.管理用户信息 Where 借书台.办公室 What 一个图书管理系统,能实现图书的借书还书操作.管理 ...

  3. 【Java】阶段性总结练习------图书管理系统实现

    在学习了面向对象编程语法知识以及简单数据结构–顺序表等等知识点以后,现在我们就可以运用这些知识来综合实现一个 图书管理系统 ,来检验前面知识的掌握程度以及练习代码的实际编写能力,让自己对Java开发更 ...

  4. 图书管理系统前景与范围文档

    一.业务需求 1.应用背景 目前,学院的图书管理仍是传统的人工管理方式,该方式效率低.保密性差, 一方面教师.学生对学院图书室藏书情况不了解,图书室究竟有哪些图书也不知道,图书室的读者信息和借阅信息也 ...

  5. ASP.NET MVC CODE FIRST 图书管理系统 数据库

    ASP .NET MVC CODE FIRST 图书管理系统 本项目最后更新于2018-7-4,可能会因为没有更新而失效.如已失效或需要修正,请提issue! 我使用VS2017进行开发,框架是.NE ...

  6. 面对对象编程——用Python写一个图书管理系统

    问题描述 图书管理系统1.查询图书2.增加图书3.借阅图书4.归还图书5.退出系统 代码如下 # 书:书名,作者,状态,位置 # 管理系统: class Book(object):def __init ...

  7. s1考试 图书管理系统 结构体版

    #include <iostream> #include <string> #include <cstdio> #include <cstdlib> # ...

  8. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  9. 图书管理系统python怎么保存用户注册信息_Python实现图书管理系统

    Python实现图书管理系统 功能描述 1.界面分为两个部分,分别是(1)登录注册界面(2)图书管理系统界面 2.用户名和密码提前存储在列表中,输入用户名或密码错误提示重新输入,未注册的需要先注册帐号 ...

  10. 图书管理系统python源代码-Python实现图书管理系统

    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 import mysql.connector import sys, os import time import ...

最新文章

  1. HDU1548:A strange lift(Dijkstra或BFS)
  2. ES6中export及export default的区别
  3. bitnami-redmine邮件告警配置
  4. android lk DEFINES定义的环境变量的值
  5. 组合部分标签向量并累加成完整向量
  6. JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
  7. ngnix 映射路径配置_MyBatis Config(三)映射文件mappers标签
  8. PAT乙级(1022 D进制的A+B )
  9. 删除按钮_系统小技巧:一站式完成系统“删除”性维护
  10. u-boot移植随笔:使用svn进行版本控制
  11. mysql中group小计与合计_用SQL实现统计报表中的“小计”和“合计”
  12. SqlServer2008镜像证书过期处理
  13. .NET Core SDK在Windows系统安装后出现Failed to load the hostfxr.dll等问题的解决方法
  14. Mac m1搭建python深度学习环境+pycharm
  15. 入手Kindle DX
  16. 复现ICCV 2017经典论文—PyraNet
  17. 记使用Python+Pandas和Scipy库计算TRIMMEAN(截尾均值)的demo
  18. oracle 查询带引号,oracle查询带有单引号的 -电脑资料
  19. 天干地支计算公式_天干地支怎么算?年柱的计算方法!
  20. VSCode常用插件和快捷键总结

热门文章

  1. GAN里面的Kullback-Leibler Divergence和Jensen–Shannon Divergence
  2. Qt之标准对话框(文件对话框)
  3. 那些想替代 C 的语言怎么样?Go、Rust、C++ 和 Zig 生产力对比
  4. 中文金融情感词典发布啦 | 附代码
  5. EXCEL VBA连接SQL数据库
  6. 数据库实时同步技术解决方案
  7. Sql server备份数据库不执行
  8. 程序员如何成为一名自由职业者?
  9. 安全方面的文章+VC知识库
  10. 用java写一个用户登陆界面的代码分享