大学生课程设计 ------ Java Web课程设计(图书馆管理系统01)

大学生课程设计 ------ Java Web课程设计(图书馆管理系统01)

Java Web课程设计(代码+课程报告)

整体ER图以及报告的部分内容如下(所有相关文件在文末链接给出):

在这里插入图片描述

目录

一、 需求分析(简介项目的背景、作用)… 3

二、 主要功能… 3

三、 数据库设计(所涉及的表、ER图)… 4

四、以“读者借书图书为例”模块为例,开发过程介绍… 4

五、 系统使用说明… 9

项目分工情况(每个人完成哪些功能或任务)
分工情况:
同学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
提取码:(请订阅后私信,每天会看)

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
图书馆管理系统 1.课程设计的目的 目前,随着网络技术的飞速发展,各行各业都在追求信息化,以防在信息时代落伍,而普 通高校也如此,图书馆是高校师生获得知识的一个重要渠道。因此一个健全的图书管理系 统就必不可少,图书管理系统的使用大大的提高了图书馆的工作效率,很好的节省了大量 的人力、物力和财力资源。管理信息系统的开发是一个开发周期长、技术要求高、影响 因素多的复杂系统工程,因此制定一个完善、可行、合理的开发计划,不仅是系统开发成 功的保证,而且可以提高效率、节省时间、降低成本。 由于在过去人们对信息管理的主要方式是基于文本、表格等纸质的手工处理之上的, 而用手工进行图书借阅管理存在多种弊端,其中包括图书过于繁多,包含很多的信息数据 的管理对于图书借阅情况如:借阅天数、超过限定借阅时间等等的统计和核实,往往采用 对借阅卡的人工查询进行,对借阅天数等用人工计算、手抄进行。信息处理工作量大,容 易出错;由于数据繁多,容易丢失,且不易查找。总的来说缺乏系统、规范的管理手段人 们操控起来是很困难的;因此,使用电子化的管理手段将是大势所趋,建立一个图书管理 系统也是图书管理部门提高工作效益的有效手段。系统能够合理高效地利用图书资源,使 得图书借阅更加的科学合理。 2.设计方案论证 2.1需求分析 对于一个图书管理系统来说,图书的查询及数据的维护管理是其中的核心环节。在现 现行的图书管理中存在几个共同的问题: 〔1图书种类过多,数据庞大;这是几乎所有图书馆都会遇到的共同问题,各种不同种 类的图书馆为这些图书入库,进行添加于维护增加了很多的难题,对这些数据的反复输入 ,往往造成庞大的工作量和较低的效率。 〔2查询图书困难,每天的借阅情况,读者借阅的到期、还书情况,各项数据的汇总和统 计情况必须由管理员统计上报,图书库总管理员才能考虑对图书馆的硬件如某类书的需求 数量进行改变已向上级申报。 〔3图书毁坏及图书破损;在借阅过程中难免此类现象的发生,如何及时发现及事后对 毁坏图书进行淘汰和更新也是个需要解决的问题。 〔4不能及时归还图书;经常有读者超过借阅期的情况发生,对此类读者的超期信息提 示也是图书借阅管理工作中必须解决的问题之一。 本软件主要有以下几方面的功能 〔1系统部分:主要完成本系统工程的维护工作〔包括:添加用户、添加员工、修改 密码 〔2图书管理部分:要完成图书基本信息的管理〔包括:添加、修改、查询、删除图 书基本信息 〔3借阅管理部分:主要完成图书借阅的管理〔包括:图书借阅、归还、查询等2.2系 统包含的类及类之间的关系 本系统共包括15个Java源文件和1个辅助文件。类之间的关系如图1所示。 图1 类关系图 <1>AppBook.java 该文件包含主函数入口,旨在创建登录界面对象并在屏幕中居中显示。 <2>FrLogin.java 该文件是登录界面的封装类,定义并设置了登录界面相关组件及显示效果,还定义了登 录、退出按钮的事件监听。功能:点击登录按钮,对填写的信息进行验证并与数据库数据 进行比对,匹配就登录成功进入主界面;取消按钮即可退出系统。 <3>FrMain.java 该文件是主界面的封装类,定义并设置了主界面相关组件及显示效果,还定义了菜单栏 上面各菜单项的监听事件,有系统管理:修改管理员密码、退出,基本操作:添加新读者 、新书入库、借书、还书、续借、读者管理、图书管理,帮助:关于等10个事件的监听。 功能:点击对应的菜单栏就会弹出对应的对话框,并传递需要的参数。 <4>FrChange.java 该文件是修改用户密码界面的封装类,定义并设置了更改密码界面相关组件及显示效 果,还定义了确定、取消按钮的事件监听。功能:点击确定按钮,对输入的信息进行验证 并与数据库数据进行比对,匹配就更新数据库,下次登录使用新密码;取消按钮即关闭修 改密码界面。 <5>FrAddreader.java 该文件是添加新读者界面的封装类,定义并设置了添加新读者界面相关组件及显示效 果,还定义了提交、返回按钮的事件监听。功能:点击提交按钮,对输入的信息进行验证 ,通过就写入数据库然后返回读者的编号,不符合要求就提示重新输入;返回按钮即关闭 添加新读者界面。 <6>FrAddBook.java 该文件是新书入库界面的封装类,定义并设置了新书入库界面相关组件及显示效果,还 定义了提交、退出按钮的事件监听。功能:点击提交按钮,对输入的信息进行验证,通过 就写入数据库然后返回图书添加成功消息,不符合要求就提示重新输入;退出按钮即关闭 新书入库界面。 <7>FrBorrow.java 该文件是借书登记界面的封装类,定义并设置了借书登记界面相关组件及显示效果,还 定义了确定、取消按钮的事件监听。功能:点击确定按钮,对输入的信息进行验证,若输 入的信息满足要求
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是盘盘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值