Java项目:图书管理系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载!
一、项目简述
功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学生管理,借还管理,读者 管理,密码管理,信息修改等等功能。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
读者信息控制层:
@Controller
public class ReaderController {@Autowiredprivate ReaderInfoService readerInfoService;@Autowiredprivate LoginService loginService;@Autowiredprivate ReaderCardService readerCardService;private ReaderInfo getReaderInfo(long readerId, String name, String sex, String birth, String address, String phone) {ReaderInfo readerInfo = new ReaderInfo();Date date = new Date();try {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");date = df.parse(birth);} catch (ParseException e) {e.printStackTrace();}readerInfo.setAddress(address);readerInfo.setName(name);readerInfo.setReaderId(readerId);readerInfo.setPhone(phone);readerInfo.setSex(sex);readerInfo.setBirth(date);return readerInfo;}@RequestMapping("allreaders.html")public ModelAndView allBooks() {ArrayList<ReaderInfo> readers = readerInfoService.readerInfos();ModelAndView modelAndView = new ModelAndView("admin_readers");modelAndView.addObject("readers", readers);return modelAndView;}@RequestMapping("reader_delete.html")public String readerDelete(HttpServletRequest request, RedirectAttributes redirectAttributes) {long readerId = Long.parseLong(request.getParameter("readerId"));if (readerInfoService.deleteReaderInfo(readerId) && readerCardService.deleteReaderCard(readerId)) {redirectAttributes.addFlashAttribute("succ", "删除成功!");} else {redirectAttributes.addFlashAttribute("error", "删除失败!");}return "redirect:/allreaders.html";}@RequestMapping("/reader_info.html")public ModelAndView toReaderInfo(HttpServletRequest request) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerCard.getReaderId());ModelAndView modelAndView = new ModelAndView("reader_info");modelAndView.addObject("readerinfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit.html")public ModelAndView readerInfoEdit(HttpServletRequest request) {long readerId = Long.parseLong(request.getParameter("readerId"));ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerId);ModelAndView modelAndView = new ModelAndView("admin_reader_edit");modelAndView.addObject("readerInfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit_do.html")public String readerInfoEditDo(HttpServletRequest request, String name, String sex, String birth, String address, String phone, RedirectAttributes redirectAttributes) {long readerId = Long.parseLong(request.getParameter("readerId"));ReaderInfo readerInfo = getReaderInfo(readerId, name, sex, birth, address, phone);if (readerInfoService.editReaderInfo(readerInfo) && readerInfoService.editReaderCard(readerInfo)) {redirectAttributes.addFlashAttribute("succ", "读者信息修改成功!");} else {redirectAttributes.addFlashAttribute("error", "读者信息修改失败!");}return "redirect:/allreaders.html";}@RequestMapping("reader_add.html")public ModelAndView readerInfoAdd() {return new ModelAndView("admin_reader_add");}@RequestMapping("reader_add_do.html")public String readerInfoAddDo(String name, String sex, String birth, String address, String phone, String password, RedirectAttributes redirectAttributes) {ReaderInfo readerInfo = getReaderInfo(0, name, sex, birth, address, phone);long readerId = readerInfoService.addReaderInfo(readerInfo);readerInfo.setReaderId(readerId);if (readerId > 0 && readerCardService.addReaderCard(readerInfo, password)) {redirectAttributes.addFlashAttribute("succ", "添加读者信息成功!");} else {redirectAttributes.addFlashAttribute("succ", "添加读者信息失败!");}return "redirect:/allreaders.html";}@RequestMapping("reader_info_edit.html")public ModelAndView readerInfoEditReader(HttpServletRequest request) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = readerInfoService.getReaderInfo(readerCard.getReaderId());ModelAndView modelAndView = new ModelAndView("reader_info_edit");modelAndView.addObject("readerinfo", readerInfo);return modelAndView;}@RequestMapping("reader_edit_do_r.html")public String readerInfoEditDoReader(HttpServletRequest request, String name, String sex, String birth, String address, String phone, RedirectAttributes redirectAttributes) {ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ReaderInfo readerInfo = getReaderInfo(readerCard.getReaderId(), name, sex, birth, address, phone);if (readerInfoService.editReaderInfo(readerInfo) && readerInfoService.editReaderCard(readerInfo)) {ReaderCard readerCardNew = loginService.findReaderCardByReaderId(readerCard.getReaderId());request.getSession().setAttribute("readercard", readerCardNew);redirectAttributes.addFlashAttribute("succ", "信息修改成功!");} else {redirectAttributes.addFlashAttribute("error", "信息修改失败!");}return "redirect:/reader_info.html";}
}
登录控制层:
@Controller
public class LoginController {private LoginService loginService;@Autowiredpublic void setLoginService(LoginService loginService) {this.loginService = loginService;}@RequestMapping(value = {"/", "/login.html"})public String toLogin(HttpServletRequest request) {request.getSession().invalidate();return "index";}@RequestMapping("/logout.html")public String logout(HttpServletRequest request) {request.getSession().invalidate();return "redirect:/login.html";}//负责处理loginCheck.html请求//请求参数会根据参数名称默认契约自动绑定到相应方法的入参中@RequestMapping(value = "/api/loginCheck", method = RequestMethod.POST)public @ResponseBodyObject loginCheck(HttpServletRequest request) {long id = Long.parseLong(request.getParameter("id"));String passwd = request.getParameter("passwd");boolean isReader = loginService.hasMatchReader(id, passwd);boolean isAdmin = loginService.hasMatchAdmin(id, passwd);HashMap<String, String> res = new HashMap<>();if (isAdmin) {Admin admin = new Admin();admin.setAdminId(id);admin.setPassword(passwd);String username = loginService.getAdminUsername(id);admin.setUsername(username);request.getSession().setAttribute("admin", admin);res.put("stateCode", "1");res.put("msg", "管理员登陆成功!");} else if (isReader) {ReaderCard readerCard = loginService.findReaderCardByReaderId(id);request.getSession().setAttribute("readercard", readerCard);res.put("stateCode", "2");res.put("msg", "读者登陆成功!");} else {res.put("stateCode", "0");res.put("msg", "账号或密码错误!");}return res;}@RequestMapping("/admin_main.html")public ModelAndView toAdminMain(HttpServletResponse response) {return new ModelAndView("admin_main");}@RequestMapping("/reader_main.html")public ModelAndView toReaderMain(HttpServletResponse response) {return new ModelAndView("reader_main");}@RequestMapping("/admin_repasswd.html")public ModelAndView reAdminPasswd() {return new ModelAndView("admin_repasswd");}@RequestMapping("/admin_repasswd_do")public String reAdminPasswdDo(HttpServletRequest request, String oldPasswd, String newPasswd, String reNewPasswd, RedirectAttributes redirectAttributes) {Admin admin = (Admin) request.getSession().getAttribute("admin");long id = admin.getAdminId();String password = loginService.getAdminPassword(id);if (password.equals(oldPasswd)) {if (loginService.adminRePassword(id, newPasswd)) {redirectAttributes.addFlashAttribute("succ", "密码修改成功!");return "redirect:/admin_repasswd.html";} else {redirectAttributes.addFlashAttribute("error", "密码修改失败!");return "redirect:/admin_repasswd.html";}} else {redirectAttributes.addFlashAttribute("error", "旧密码错误!");return "redirect:/admin_repasswd.html";}}@RequestMapping("/reader_repasswd.html")public ModelAndView reReaderPasswd() {return new ModelAndView("reader_repasswd");}@RequestMapping("/reader_repasswd_do")public String reReaderPasswdDo(HttpServletRequest request, String oldPasswd, String newPasswd, String reNewPasswd, RedirectAttributes redirectAttributes) {ReaderCard reader = (ReaderCard) request.getSession().getAttribute("readercard");long id = reader.getReaderId();String password = loginService.getReaderPassword(id);if (password.equals(oldPasswd)) {if (loginService.readerRePassword(id, newPasswd)) {redirectAttributes.addFlashAttribute("succ", "密码修改成功!");return "redirect:/reader_repasswd.html";} else {redirectAttributes.addFlashAttribute("error", "密码修改失败!");return "redirect:/reader_repasswd.html";}} else {redirectAttributes.addFlashAttribute("error", "旧密码错误!");return "redirect:/reader_repasswd.html";}}//配置404页面@RequestMapping("*")public String notFind() {return "404";}}
图书管理系统:
@Controller
public class BookController {@Autowiredprivate BookService bookService;@Autowiredprivate LendService lendService;private Date getDate(String pubstr) {try {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");return df.parse(pubstr);} catch (ParseException e) {e.printStackTrace();return new Date();}}@RequestMapping("/queryBook.html")public ModelAndView queryBookDo(String searchWord) {if (bookService.matchBook(searchWord)) {ArrayList<Book> books = bookService.queryBook(searchWord);ModelAndView modelAndView = new ModelAndView("admin_books");modelAndView.addObject("books", books);return modelAndView;} else {return new ModelAndView("admin_books", "error", "没有匹配的图书");}}@RequestMapping("/reader_querybook_do.html")public ModelAndView readerQueryBookDo(String searchWord) {if (bookService.matchBook(searchWord)) {ArrayList<Book> books = bookService.queryBook(searchWord);ModelAndView modelAndView = new ModelAndView("reader_books");modelAndView.addObject("books", books);return modelAndView;} else {return new ModelAndView("reader_books", "error", "没有匹配的图书");}}@RequestMapping("/admin_books.html")public ModelAndView adminBooks() {ArrayList<Book> books = bookService.getAllBooks();ModelAndView modelAndView = new ModelAndView("admin_books");modelAndView.addObject("books", books);return modelAndView;}@RequestMapping("/book_add.html")public ModelAndView addBook() {return new ModelAndView("admin_book_add");}@RequestMapping("/book_add_do.html")public String addBookDo(@RequestParam(value = "pubstr") String pubstr, Book book, RedirectAttributes redirectAttributes) {book.setPubdate(getDate(pubstr));if (bookService.addBook(book)) {redirectAttributes.addFlashAttribute("succ", "图书添加成功!");} else {redirectAttributes.addFlashAttribute("succ", "图书添加失败!");}return "redirect:/admin_books.html";}@RequestMapping("/updatebook.html")public ModelAndView bookEdit(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("admin_book_edit");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/book_edit_do.html")public String bookEditDo(@RequestParam(value = "pubstr") String pubstr, Book book, RedirectAttributes redirectAttributes) {book.setPubdate(getDate(pubstr));if (bookService.editBook(book)) {redirectAttributes.addFlashAttribute("succ", "图书修改成功!");} else {redirectAttributes.addFlashAttribute("error", "图书修改失败!");}return "redirect:/admin_books.html";}@RequestMapping("/admin_book_detail.html")public ModelAndView adminBookDetail(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("admin_book_detail");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/reader_book_detail.html")public ModelAndView readerBookDetail(HttpServletRequest request) {long bookId = Long.parseLong(request.getParameter("bookId"));Book book = bookService.getBook(bookId);ModelAndView modelAndView = new ModelAndView("reader_book_detail");modelAndView.addObject("detail", book);return modelAndView;}@RequestMapping("/admin_header.html")public ModelAndView admin_header() {return new ModelAndView("admin_header");}@RequestMapping("/reader_header.html")public ModelAndView reader_header() {return new ModelAndView("reader_header");}@RequestMapping("/reader_books.html")public ModelAndView readerBooks(HttpServletRequest request) {ArrayList<Book> books = bookService.getAllBooks();ReaderCard readerCard = (ReaderCard) request.getSession().getAttribute("readercard");ArrayList<Lend> myAllLendList = lendService.myLendList(readerCard.getReaderId());ArrayList<Long> myLendList = new ArrayList<>();for (Lend lend : myAllLendList) {// 是否已归还if (lend.getBackDate() == null) {myLendList.add(lend.getBookId());}}ModelAndView modelAndView = new ModelAndView("reader_books");modelAndView.addObject("books", books);modelAndView.addObject("myLendList", myLendList);return modelAndView;}
}
源码获取:博客首页 "资源" 里下载!
相关文章:

使用 Flash Builder 的 Apple iOS 开发过程
使用 Flash Builder 的 Apple iOS 开发过程 iOS 开发和部署过程概述 构建、调试或部署 iOS 应用程序前的准备工作 在测试、调试或安装 iOS 应用程序时选择的文件 将应用程序部署到 Apple App Store 时选择的文件 在使用 Flash Builder 开发 iOS 应用程序之前,必须…

grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
2019独角兽企业重金招聘Python工程师标准>>> 1. 简单介绍 在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下…

多线程threading
threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组,线程也不能被停止、暂停、恢复、中断。 1. threading模块提供的类: Thread, Lock, Rlock, Condition, [Bounded]Sem…

一个简单的程序来使用WiredTiger 存储引擎
前言 WiredTiger 自 mongodb3.0 集成进来之后为mongodb拉回了大量的口碑,从而在mongodb-3.2 版本直接代替了in-memory存储引擎,作为了mongodb的默认存储引擎。其 通过支持Append-only btree lsm-tree 以及 针对磁盘/内存数据结构上的多核和无锁优化&am…

Java项目:网上商城系统(java+SSM+jsp+mysql+maven)
源码获取:博客首页 "资源" 里下载! 一、项目简述功能 javaweb 网上商城系统,前台+后台管理,用户注册,登录,上哦展示,分组展示,搜索,收货地址管理&…

Linux 启动详解之init
1.init初探 init是Linux系统操作中不可缺少的程序之一。init进程,它是一个由内核启动的用户级进程,然后由它来启动后面的任务,包括多用户环境,网络等。 内核会在过去曾使用过init的几个地方查找它,它的正确位置&#x…

mysql 相关命令
mysqladmin versionmysqladmin statusmysqlshow -u帐号 -p密码 mysqlshow -u帐号 -p密码 库名mysql -u帐号 -p密码 -e SELECT Host,Db,User From db mysqlmysqldump --quick mysql | gzip > /root/mysql.gzmysqladmin create dbtestgunzip < /root/mysql.gz | mysql…

maven 添加数据库驱动
1.电脑上需要安装 apache maven2.下载oracle的jar包 例如我下载的是ojdbc7-12.jar3.cmd执行命令 mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc7 -Dversion12 -Dpackagingjar -Dfiled:\jar\ojdbc7-12.jar-Dfile jar包所存放的位置4.pom文件添加࿱…

Rocksdb 的 BlobDB key-value 分离存储插件
前言 还是回到传统的 LSM-tree 中,我们key-value 写入时以append形态存放到一个data-block中,多个data-blockmetablock 之类的数据组织成一个sst。当我们读数据以及compaction的时候读到key 之后则很方便得读取到对应的value,一次I/O能够将k…

Java项目:(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
源码获取:博客首页 "资源" 里下载! 考试流程: 用户前台注册成为学生 管理员后台添加老师,系统将该用户角色上升为老师 老师登录,添加考试,添加题目,发布考试 考生登录前台参加考试,…

C++实现stack【栈】
要求: //****file: stack.h/*对stack进行初始化检查stack为空,或已满将整数压入到stack中从stack里弹出整数 不移除任何袁术,讲过stack的内容输出到标准输出Stack类的私有成员如下:一个用于打印错误信息的私有哦成员函数三个私有数…

c#操作Excel整理总结
大家好,这是我在工作中总结的关于C#操作Excel的帮助类,欢迎大家批评指正! using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using Aspose.Cells;namespace MusicgrabTool {p…

C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项
前言 std::function 作为标准库提供的函数指针,使用起来还是比较方便的,不过在使用过程中有一些需要注意的细节,这里做一个简单的记录。 基本使用 头文件: #include <functional>语法:std::function<return_type(args…

Java项目:网上电商系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能:本系统分用户前台和管理员后台。 前台展示后台管理,前台界面可实现用户登录,用户注 册,商品展示,商品明细展示,用户…

C# SQLiteHelper
1 public class SQLiteHelpers2 {3 /// <summary> 4 /// ConnectionString样例:DatasourceTest.db3;Poolingtrue;FailIfMissingfalse 5 /// </summary> 6 public static string ConnectionStri…

[Git] 拉开发分支的代码报错
Git拉开发分支的代码报错: fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed 解决办法: git config --global core.compression -1 转载于:https://www.cnblogs.com/MasterMonkInTemple/p/10754596.html

C++ 通过模版工厂实现 简单反射机制
前言 我们知道Java/Python这种语言能够很好得 支持反射。反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 从而做出对应的操作。 而C 并没有友好得支持这样的操作…

计算机世界的“十六进制”为什么如此重要
在计算机世界中,十六进制扮演着不可或缺的角色。它以其紧凑的表示形式、与二进制的天然对应关系以及在各个领域的广泛应用,成为了计算机科学中的一把重要工具。总体而言,计算机需要十六进制并非偶然,它是一种为了更好地满足人类理解和处理数据的需求而产生的工具,为计算机科学的发展和应用提供了便利和支持。

面试官:如何实现10亿数据判重?
以 Java 中的 int 为例,来对比观察 BitMap 的优势,在 Java 中,int 类型通常需要 32 位(4 字节*8),而 BitMap 使用 1 位就可以来标识此元素是否存在,所以可以认为 BitMap 占用的空间大小,只有 int 类型的 1/32,所以有大数据量判重时,使用 BitMap 也可以实现。所以数据库去重显然是不行的。而使用集合也是不合适的,因为数据量太大,使用集合会导致内存不够用或内存溢出和 Full GC 频繁等问题,所以此时我们的解决方案通常是采用布隆过滤器来实现判重。

Java项目:校园二手市场系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述( IW文档) 功能:本系统分用户前台和管理员后台。 本系统用例模型有三种,分别是游客、注册用户和系统管 理员。下面分别对这三个角色的功能进行描…

php中$_REQUEST、$_POST、$_GET的区别和联系小结
php中$_REQUEST、$_POST、$_GET的区别和联系小结 作者: 字体:[增加 减小] 类型:转载php中有$_request与$_post、$_get用于接受表单数据,当时他们有何种区别,什么时候用那种最好。1. $_REQUEST php中$_REQUEST可以获取以…

uva 315 (poj 1144 求割点)
题意:给你一张无向图,求割点的个数。 思路:输入稍微处理一下接着直接套模版。 1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <cstdlib>5 #include <cmath>6 #include <algorit…

SQL学习之计算字段的用法与解析
一、计算字段 1、存储在数据库表中的数据一般不是应用程序所需要的格式。大多数情况下,数据表中的数据都需要进行二次处理。下面举几个例子。 (1)、我们需要一个字段同时显示公司名和公司地址,但这两个信息存储在不同表的列中。 (2)、省份、城市、邮政编码存储在不同…

手把手教你 用C++实现一个 可持久化 的http_server
前言 本文介绍一个有趣的 通过C实现的 持久化的http_server demo,这样我们通过http通信之后的数据可以持久化存储,即使server挂了,数据也不会丢失。我们的http_sever 也就能够真正得作为一个后端server了。 本身持久化这个能力是数据库提供…

【SVN多用户开发】代码冲突解决办法
SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序。 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码。 下面就简单的看一下,常见的代码冲突以及解决方法。 总结起来,无非是&#x…

Java项目:在线宠物商店系统(java+SSM+mysql+maven+tomcat)
源码获取:博客首页 "资源" 里下载! 一、项目简述 功能:本系统分用户前台和管理员后台。 系统包括用户的注册登录,狗狗的展示购物车添加以及下 单支付购买,后台有管理员用户,可以操作狗狗的品种&…

字符串中的数字排序
2019独角兽企业重金招聘Python工程师标准>>> public static String getBusiScope(String busiScope){ String regex "\\d{1,2}"; String busiStr""; Pattern pattern Pattern.compile(regex); Matcher matcher pattern.matcher(busiScope…

oo第二单元总结
第二单元总结 第一次作业 一、设计策略 本次作业采用FAFS算法,可直接用输入线程与电梯线程交互,调度器暂时不需要参与,故一共设计三个类三线程:Main类、elevator类及input类,main线程、elevator线程及input线程。main线…

Rocksdb iterator 的 Forward-scan 和 Reverse-scan 的性能差异
前言 最近在读 MyRocks 存储引擎2020年的论文,因为这个存储引擎是在Rocksdb之上进行封装的,并且作为Facebook 内部MySQL的底层引擎,用来解决Innodb的空间利用率低下 和 压缩效率低下的问题。而且MyRocks 在接入他们UDB 之后成功达成了他们的…

Java知多少(29)覆盖和重载
在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列表。如果在新类中定义一个方法,其名称、返回值类型和参数列表正好与父类中的相同࿰…