大学生课程设计 ------ Java Web课程设计(图书馆管理系统01)
Java Web课程设计(代码+课程报告)
整体ER图以及报告的部分内容如下(所有相关文件在文末链接给出):
目录
项目分工情况(每个人完成哪些功能或任务)
分工情况:
同学A:数据库和后端代码
同学B:前端形式和优化
一、需求分析(简介项目的背景、作用)
图书馆管理系统:图书馆管理图书基数过大,难以管理,该项目的图书馆可用于协助管理图书馆,减少繁琐操作。
二、主要功能
账号:注册,登陆,改密码,改信息。
图书馆管理员:图书入库、作者添加、出版社添加、进行编著信息输入、 帮读者借书、查询图书等操作。
系统管理员:更改借阅要求、更改图书管理员、读者密码等操作
读者:查询图书、借书,还书、缴纳罚款等操作。
三、数据库设计(所涉及的表、ER图)
ER图有以下表:
Allfile、Author、Book,Bookdescription、Booktype、Borrow、Borrowingrequirements、Branchlibrary、Chinesebooktype1、Chubanshe、Inbook、Librarian、Reader、Readertype
Systemadministrator、Theuser、Unit、Uptype、Write
四、以“读者借书图书为例”模块为例,开发过程介绍
思路:要借图书,必须先查询到图书,为了读者方便查询,该项目设置了三种查询图书的方法,第一种是靠书名的模糊查询,第二种是靠作者姓名的模糊查询,第三种是靠确定的书名和作者姓名精确查询。查询到符合条件的图书后,选择你想要的选项,就会罗列出该书在馆中的在库图书,接下来作者就可以选择借哪一本图书。选择后,在后台判断读者是否有借书的条件(借阅要求的限制等),如果符合借阅要求,则进行借书操作,反正,提示读者他的借书失败。
//书名查询以查图书
@RequestMapping(value="/findBookBybookname.do")
public String findBookBybookname(String bookname,Model model) {
List<BookDescription> bookdeclist= this.bookDescriptionService.findBookDescriptionBynameLike(bookname);
model.addAttribute("bookdeclist", bookdeclist);
return "readerShowBookFind" ;
}
//作者查询以查图书
@RequestMapping(value="/findBookByauthername.do")
public String findBookByauthername(String authername,Model model) {
List<Author> authorlist = this.authorService.findAuthorByNameLike(authername);
List<BookDescription> bookdeclist = new ArrayList<BookDescription>();
BookDescription bookdecid;
for(int i=0;i<authorlist.size();i++) {
Write write = this.writeService.findWriteByAuthermno(authorlist.get(i).getAuthermno());
bookdecid = this.bookDescriptionService.findBookDescriptionById(write.getCollectionnumber());
int check=0;//判断书是否重复
for(int j=0;j<bookdeclist.size();j++) {
if(bookdecid.getCollectionnumber()==bookdeclist.get(j).getCollectionnumber()) {
check=1;
break;
}
}
if(check==0)
{
bookdeclist.add(bookdecid);
}
}
Set<BookDescription> set = new HashSet<BookDescription>(bookdeclist);
System.out.println(bookdeclist);
bookdeclist.clear();//将原来的list的数据全部清空
System.out.println(bookdeclist);
bookdeclist.addAll(set);//将set集合的值放入到list里,因为set里是没有重复的了,这个时候list也就没有重复的了
System.out.println(bookdeclist);
model.addAttribute("bookdeclist", bookdeclist);
return "readerShowBookFind" ;
}
//精确查询以查图书
@RequestMapping(value="/findBookBymore.do")
public String findBookBymore(String authername,String bookname ,Model model) {
List<BookDescription> bookdeclist = new ArrayList<BookDescription>();
Author author = this.authorService.findAuthorByName(authername);//作者编号
BookDescription bookDescription = this.bookDescriptionService.findBookDescriptionByname(bookname);//图书描述编号
if(bookDescription!=null && author!=null) {
Write write = this.writeService.findWriteById(author.getAuthermno(), bookDescription.getCollectionnumber());//二者结合确认图书
BookDescription newbookDescription = this.bookDescriptionService.findBookDescriptionById(write.getCollectionnumber());//取出图书描述
bookdeclist.add(newbookDescription);
model.addAttribute("bookdeclist", bookdeclist);
return "readerShowBookFind" ;
}
else {
return "readerFindBookdetailFaulse" ;
}
}
//借书操作
@RequestMapping(value="/borrowBookBybookid.do")
public String borrowBookBybookid(String bookid,String username,Model model) {
int thebookid = Integer.parseInt(bookid);
//确认是否还有借这类书的可借数量、
//先找书,书-》馆藏编号-》图书类型
Book book = this.bookService.findBookById(thebookid);
BookDescription bookDescription= this.bookDescriptionService.findBookDescriptionById(book.getCollectionnumber());
//先找读者-》读者类型
Reader reader = this.readerService.findReaderById(username);
//存在该读者
if(reader!=null) {
//找借阅要求
BorrowingRequirements borrowingRequirements = this.borrowingRequirementsService.findBorrowingRequirementsById(reader.getReadertypeid(), bookDescription.getBooktypeid());
//该类型读者可借该类型图书的数量
int surecan = 0;
//此书为新书
if(bookDescription.getBooktypeid().equals("01"))
{
if(reader.getBorrownumber()>=borrowingRequirements.getCanborrownum()) {
return "readerBorrowFaulse" ;
}
else
{
reader.setBorrownumber(reader.getBorrownumber()+1);
int readerchange = this.readerService.updateReader(reader);
Borrow borrow = new Borrow();
borrow.setBookid(thebookid);
borrow.setReadmno(reader.getReadmno());
//借书时间
SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy年MM月dd日");
Calendar calendar=Calendar.getInstance();
System.out.println("当前系统时间: "+sdFormat.format(calendar.getTime()));
String borrowtime = sdFormat.format(calendar.getTime());
borrow.setBorrowtime(borrowtime);
//还书时间
calendar.add(Calendar.DATE,30);
String shouldreturntime = sdFormat.format(calendar.getTime());
System.out.println("还书时间: "+sdFormat.format(calendar.getTime()));
borrow.setShouldreturntime(shouldreturntime);
//实际还书时间
borrow.setReturntime("未还书");
//续借·情况
borrow.setRenewal(false);
borrow.setBorrowstate("正常");
int index = this.borrowService.addBorrow(borrow);
book.setBookstate("借出");
int bookchange = this.bookService.updateBook(book);
Borrow newborrow = this.borrowService.findBorrowById(reader.getReadmno(), book.getBookid());
model.addAttribute("borrow", newborrow);
return "readerBorrowSuccess";
}
}
//借的为旧书
else
{
if(reader.getBorrownumber2()>=borrowingRequirements.getCanborrownum()) {
return "readerBorrowFaulse" ;
}
else
{
reader.setBorrownumber2(reader.getBorrownumber2()+1);
int readerchange = this.readerService.updateReader(reader);
Borrow borrow = new Borrow();
borrow.setBookid(thebookid);
borrow.setReadmno(reader.getReadmno());
//借书时间
SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy年MM月dd日");
Calendar calendar=Calendar.getInstance();
System.out.println("当前系统时间: "+sdFormat.format(calendar.getTime()));
String borrowtime = sdFormat.format(calendar.getTime());
borrow.setBorrowtime(borrowtime);
//还书时间
calendar.add(Calendar.DATE,30);
String shouldreturntime = sdFormat.format(calendar.getTime());
System.out.println("还书时间: "+sdFormat.format(calendar.getTime()));
borrow.setShouldreturntime(shouldreturntime);
//实际还书时间
borrow.setReturntime("未还书");
//续借·情况
borrow.setRenewal(false);
borrow.setBorrowstate("正常");
int index = this.borrowService.addBorrow(borrow);
book.setBookstate("借出");
int bookchange = this.bookService.updateBook(book);
Borrow newborrow = this.borrowService.findBorrowById(reader.getReadmno(), book.getBookid());
model.addAttribute("borrow", newborrow);
return "readerBorrowSuccess";
}
}
}
//不存在该读者
else
{
return "readerBorrowFaulse" ;
}
}
五、系统使用说明
6.1系统基本安装环境:jdk1.8+Tomcat8.0 +SQL SERVER2008 +Windows 10。
6.2账号信息
系统管理员:用户名:S201621122080 密码:123
图书馆管理员:用户名:S201621122083 密码:123456
读者(教师、学生,研究生):用户名:S201621122084
密码:123456
---------------------------------------------------我是分割线------------------------------------------------------------------------
请到百度网盘下载全部文件(代码+论文)
链接:https://pan.baidu.com/s/1GBkXQXNYaIPybQLrR9x3LA
提取码:(请订阅后私信,每天会看)