湖南科技大学计算机科学与工程学院
WEB应用开发
课程设计报告
题目:图书借阅管理信息系统
学 号:1105010113
姓 名:罗 孜
专 业:计算机科学与技术
班 级:计算机一班
指导老师:韩 雪
博研图书管理系统
一、摘要
学校为了锻炼同学们的自己动手实践能力,开展了我们的JAVA课程设计实践。
根据学院的要求就做一个这样的系统,也并用上我们学习的JAVA WEB技术,对于这个系统完全是辅助了图书馆图书管理员,便捷简单的操作就可以梳理学生对图书的借阅归还,以及还可以通过管理员的权限对图书进行的增删改查。
使用计算机对图书进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。因此能够极大地提高管理效率,也是实现图书的科学化、正规化管理的重要条件。
经过分析,本系统运用了MySQL为后台数据库,整个系统基于Struts2框架开发,实现了用户登录、管理员界面显示、添加新书、快速查询库存书籍、查询借书记录、用户对书籍的借阅归还、管理员对书籍信息删除等功能。
关键词: 图书管理; Java Web; Struts2
、
二、背景
传统人工的管理方式效率低、保密性差, 一方面导致教师、学生对学校图书室藏书情况不了解,图书室究竟有哪些图书也不知道。
另一方面图书管理员对图书管理工作力不从心,因为时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难,耗费劳动力大,难于避免错误的产生,更容易造成图书的外流。
然而现在,计算机的价格已经十分低廉,性能却有了长足的进步。在初级中学都装备有一定数量的电脑,中学教师都掌握了一定的计算机知识,它已经被学校应用于学校工作的许多领域。计算机之所以在中小学发挥如此重要的作用的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动。
其次,计算机可以为农村初级中学节省许多资源。
第三,计算机可以大大的提高教职工的工作效率。
第四,计算机可以使敏感文档更加安全,等等。
三、开发工具及相关技术
本系统是基于Struts2Web框架技术开发的,Struts2是在Struts和WebWork的技术基础上进行了合并的全新的Struts2框架。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开。开发过程中包括整个开发环境的搭建,Struts的相关配置,各种Action类的编写,以及拦截器的配置和输入校验。
本系统的用户页面主要用到Html、JSP和JavaScript动态网页的相关技术。Html主要对页面进行布局;JSP用来动态的展示后台的数据和获取前台用户输入的数据;JavaScrip用来对用户在页面上输入的数据进行实时地校验。
本系统的数据存储是用的MySQL数据库,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。本系统的数据库包括用户信息、图书信息和图书借阅信息等。对数据库的设计主要包括数据库表的设计,字段的设计,以及键和约束的设计。
四、系统的需求分析
1.图书查询。
2.读者信息查询,读者信息的查询内容应包括下面的几个方面:
读者信息——对读者的基本信息进行显示。
书刊借阅——对该读者借阅过的所有书籍进行查询。
借阅历史——查询该读者借阅过的所有书籍。
对系统的管理员来说,应该注意的是:
1.图书查询——对馆内的图书进行查询。
2.借阅管理——对读者的每一次借阅,还书进进登记和管理;
3.图书管理——对图书馆的书籍进行管理;
4.借阅证管理——对读者的借阅证进行管理;
五、总体设计
本图书管理系统总体上分为两大模块,一部分是管理员模块;该模块管理员可以登录进入,该模块集成了图书管理中所需的功能和录入新书到库,办公图书,借还手续,查询图书同时也可以对图书管借阅用户进行管理等等;另一部分是师生用户模块;该模块是给师生用户登录进入的,该模块的师生可以对图书进行查询操作,对自己已经借阅的图书浏览,同时借阅图书等等;两大模块共享首页,登录进来即可看见图书借阅榜,对借阅图书次数进行了依次排序,对师生借阅图书行程一个导向作用。
本系统的功能模块的设计如图5.1 所示,整个系统包含基本信息设置,图书信息管理,查询图书管理,添加图书管理,修改图书管理和用户借阅管理。
图5.1 功能结构图
利用软件开发现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用现在资源提高系统开发水平和应用效果的目的。 系统应该符合软件工程开发的理论,开发方法等开发依据。 系统应满足图书馆管理工作需要,到操作过程中的直观,方便,实用,安全等要求。 系统具备数据库维护功能,及时根据用户需求进行数据库的各种操作。 系统采用原型,使用模块化程序设计方法,便于系统功能的各种组合和修改,以及系统的测试与维护。
图5.2 系统流程图
图书管理系统在借阅的基础上必须有管理员的权限,普通的用户只能查询该图书在图书管中的库存图书,没有任何编辑删除增加的权限。而超级管理员在本系统中只有一个,拥有最高的权限,同时管理管理员和全部的师生用户,可以对各种信息进行查询修改。需要借阅书籍的话,可以通过管理员登录账户,然后先找到该书籍,在该书籍的面板中有借、还、编辑、删除四种操作方式。若需要借书,就点击借阅,需要输入注册有该系统的普通账户的学号,借阅的数量,就可以达到借阅的目的录入了。当来归还书籍的时候,也是首先要查到归还书籍的名称,然后再填写归还人的学号就能达到归还的目的。
后面的数据库建表都是按照上图所示建表即可,如果有工具可直接导入生产sql文档,然后放入mysql操作工具直接生成表。
6、系统实现与测试
图6.1 系统登录
图6.2 系统主界面
图6.3 图书编辑
图6.4 图书借阅
图6.5 图书归还
图5.6 借阅信息
图6.7 图书查询
图6.8 借阅记录
图6.9 修改个人信息
图6.10 借阅到期提醒
七、总结
通过这两周的课程设计实验课,我利用我所学的只是和技术,设计了一个图书管理系统。在这其间,我遇到了很多问题,但是通过仔细分析问题,查找资料,和同学之间的讨论,再加上指导老师的说明和提点,使得我最终顺利完成了我的基本任务。
这次做的是一个图书信息管理系统,本来也是无从下手,后来通过查阅书籍资料,将整体划分为几个模块,然后逐个击破,最后再做整合。不过我也深刻了意识到了自己的不足,因为自己的技术掌握不够,在一些细节方面没有考虑到,例如:在借阅图书的时候老师和学生的可以借阅图书的数量应该不一样,老师应该比学生可以借阅图书的上线大一点,通过老师的提醒,我也意识到了。在之后的学习中我也会慢慢完善自己的项目,争取把它做成一个完整的尽可能少漏洞的图书信息管理系统。
这次的课程设计,非常有效的提高了我的动手能力和编码能力,同时也增加了自己的项目开发经验。增强了自己的自学能力,学会了系统科学客观的分析的问题,能主动的查阅资料解决问题。同时也培养了我认真严谨的工作作风。
参考文献
[1]Java语言程序设计(基础篇)[M]机械工业出版社.2010.6
[2]Java语言程序设计(进阶篇)[M]机械工业出版社.2010.6
[3]Java核心技术卷2:高级特性 Cay S.Horstmann Gary Cornell著 机械工业出版社
[4]Java Web应用开发原理与技术 徐建波著 国防科技大学出版社
[5]Tomcat与Java Web开发技术详解 孙卫琴,李洪成著 电子工业出版社
[6]《Servlets and JavaServer pages:The J2EE Technology Web Tier》 Addison Wiley著。
后附处理书本的信息的关键代码:
package com.dao;
import com.core.ConnDB;
import java.sql.*;
import java.util.*;
import com.actionForm.BookForm;
public class BookDAO {
private ConnDB conn = new ConnDB();
// 查询数据
public Collection query(String strif) {
BookForm bookForm = null;
Collection bookColl = new ArrayList();
String sql = "";
if (strif != "all" && strif != null && strif != "") {
sql = "select * from (select b.*,c.name as bookcaseName,p.pubname as publishing,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0) as book where book."
+ strif + "'";
} else {
sql = "select b.*,c.name as bookcaseName,p.pubname as publishing,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0";
}
System.out.println("图书查询时的SQL:" + sql);
ResultSet rs = conn.executeQuery(sql);
try {
while (rs.next()) {
bookForm = new BookForm();
bookForm.setBarcode(rs.getString(1));
bookForm.setBookName(rs.getString(2));
bookForm.setTypeId(rs.getInt(3));
bookForm.setAuthor(rs.getString(4));
bookForm.setTranslator(rs.getString(5));
bookForm.setIsbn(rs.getString(6));
bookForm.setPrice(Float.valueOf(rs.getString(7))); // 此处必须进行类型转换
bookForm.setPage(rs.getInt(8));
bookForm.setBookcaseid(rs.getInt(9));
bookForm.setInTime(rs.getString(10));
bookForm.setOperator(rs.getString(11));
bookForm.setDel(rs.getInt(12));
bookForm.setId(Integer.valueOf(rs.getString(13)));
bookForm.setBookcaseName(rs.getString(14));
bookForm.setPublishing(rs.getString(15));
bookForm.setTypeName(rs.getString(16));
bookColl.add(bookForm);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
conn.close();
return bookColl;
}
// 添加数据
public int insert(BookForm bookForm) {
String sql1 = "SELECT * FROM tb_bookinfo WHERE barcode='"
+ bookForm.getBarcode() + "' or bookname='"
+ bookForm.getBookName() + "'";
ResultSet rs = conn.executeQuery(sql1);
String sql = "";
int falg = 0;
try {
if (rs.next()) {
falg = 2;
} else {
sql = "Insert into tb_bookinfo (barcode,bookname,typeid,author,translator,isbn,price,page,bookcase,inTime,operator) values('"
+ bookForm.getBarcode()
+ "','"
+ bookForm.getBookName()
+ "',"
+ bookForm.getTypeId()
+ ",'"
+ bookForm.getAuthor()
+ "','"
+ bookForm.getTranslator()
+ "','"
+ bookForm.getIsbn()
+ "',"
+ bookForm.getPrice()
+ ","
+ bookForm.getPage()
+ ","
+ bookForm.getBookcaseid()
+ ",'"
+ bookForm.getInTime()
+ "','"
+ bookForm.getOperator()
+ "')";
falg = conn.executeUpdate(sql);
System.out.println("添加图书的SQL:" + sql);
conn.close();
}
} catch (SQLException ex) {
falg = 0;
}
System.out.println("falg:" + falg);
return falg;
}
// 修改数据
public int update(BookForm bookForm) {
String sql = "Update tb_bookinfo set typeid=" + bookForm.getTypeId()
+ ",author='" + bookForm.getAuthor() + "',translator='"
+ bookForm.getTranslator() + "',isbn='" + bookForm.getIsbn()
+ "',price=" + bookForm.getPrice() + ",page="
+ bookForm.getPage() + ",bookcase=" + bookForm.getBookcaseid()
+ " where id=" + bookForm.getId() + "";
int falg = conn.executeUpdate(sql);
System.out.println("修改数据时的SQL:" + sql);
conn.close();
return falg;
}
// 删除数据
publicint delete(BookForm bookForm) {
String sql = "UPDATE tb_bookinfo SET del=1 where id="
+ bookForm.getId() + "";
int falg = conn.executeUpdate(sql);
System.out.println("删除时的SQL:" + sql);
return falg;
}
}
// 用于修改的查询
public BookForm queryM(BookForm bookForm1) {
BookForm bookForm = null;
String sql = "select b.*,c.name as bookcaseName,p.pubname as publishing,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.id="
+ bookForm1.getId() + "";
System.out.println("修改时的SQL:" + sql);
ResultSet rs = conn.executeQuery(sql);
try {
while (rs.next()) {
bookForm = new BookForm();
bookForm.setBarcode(rs.getString(1));
bookForm.setBookName(rs.getString(2));
bookForm.setTypeId(rs.getInt(3));
bookForm.setAuthor(rs.getString(4));
bookForm.setTranslator(rs.getString(5));
bookForm.setIsbn(rs.getString(6));
bookForm.setPrice(Float.valueOf(rs.getString(7))); // 此处必须进行类型转换
bookForm.setPage(rs.getInt(8));
bookForm.setBookcaseid(rs.getInt(9));
bookForm.setInTime(rs.getString(10));
bookForm.setOperator(rs.getString(11));
bookForm.setDel(rs.getInt(12));
bookForm.setId(Integer.valueOf(rs.getString(13)));
bookForm.setBookcaseName(rs.getString(14));
bookForm.setPublishing(rs.getString(15));
bookForm.setTypeName(rs.getString(16));
}
} catch (SQLException ex) {
}
conn.close();
return bookForm;
}
// 用于借阅的查询
public BookForm queryB(String f, String key) {
BookForm bookForm = null;
String sql = "select b.*,c.name as bookcaseName,p.pubname as publishing,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b."
+ f + "='" + key + "'";
System.out.println("查询借阅信息时的SQL:" + sql);
ResultSet rs = conn.executeQuery(sql);
try {
if (rs.next()) {
bookForm = new BookForm();
bookForm.setBarcode(rs.getString(1));
bookForm.setBookName(rs.getString(2));
bookForm.setTypeId(rs.getInt(3));
bookForm.setAuthor(rs.getString(4));
bookForm.setTranslator(rs.getString(5));
bookForm.setIsbn(rs.getString(6));
bookForm.setPrice(Float.valueOf(rs.getString(7))); // 此处必须进行类型转换
bookForm.setPage(rs.getInt(8));
bookForm.setBookcaseid(rs.getInt(9));
bookForm.setInTime(rs.getString(10));
bookForm.setOperator(rs.getString(11));
bookForm.setDel(rs.getInt(12));
bookForm.setId(Integer.valueOf(rs.getString(13)));
bookForm.setBookcaseName(rs.getString(14));
bookForm.setPublishing(rs.getString(15));
bookForm.setTypeName(rs.getString(16));
}
} catch (SQLException ex) {
}
conn.close();
return bookForm;
}
}
20xx20xx学年第1学期滨州学院JavaWeb开发与应用课程设计报告题专班姓目齐鲁软件大赛报名系统的设计业计算机网络技术级20…
湖南科技大学计算机科学与工程学院WEB应用开发课程设计报告学号1105010113姓名罗孜专业班指导老师韩雪博研图书管理系统一摘要…
课程设计Javaweb开发课程设计论坛系统用户注册界面的设计目录设计目的设计内容及目标定义CSS样式也就是网页样式4利用HTML语…
南京晓庄学院电子商务网站开发与设计课程设计报告题目姓名学号班级指导教师完成时间BC电子商城系统的设计与实现沈国涛101302111…
南华大学计算机科学与技术学院项目开发报告20xx20xx学年度第一学期课程名称JavaWeb技术开发项目名称人才管理系统项目开发人…
黄淮学院JAVA课程设计报告题目:《日记本的设计与实现》课程设计学院:信息工程学院姓名:学号:专业:软件工程班级:软工1101B班…
沈阳理工大学课程实践论文目录1前言111作业背景112课题简介113工作介绍1131个人主要工作1132主要收获2133自我评定2…
Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马…
Java课程设计报告课目计算器学院基础学院班级光信息20xx1学生指导教师丁振凡张晓瑞辅导教师江宇完成时间20xx年7月1日课程设…
安阳工学院计算机学院JAVA课程设计报告蜘蛛纸牌游戏专业班级09级网络工程2班学生姓名李瑞琳学生学号20xx03060016小组成…
Flash程序设计课程设计报告课程名称Flash程序设计实验项目名称4屏flash焦点图上下切换效果程序院系物理与电子信息学院学号…