JSP课程设计《图书馆管理系统》.doc
地质论文:成都平原放射性环境地质评价面向对象程序设计课程设计说明书题 目:图书管理系统学 院:计算机与信息工程学院专 业:计算机科学与技术班 级:计算机级班姓 名:学 号:起止时间:2009.6.29-2009.7.10 成绩: 页脚内容20课程设计任务书一、设计题目:图书管理系统二、设计内容:设计图书管理借阅系统,将用户登陆、图书查询、图书信息、图书预借、图书借阅结合在一起。用户可以在登陆以后享受以上功能。三、设计要求:1系统登陆界面包括:用户登陆、账号、密码、注册、图书查询。2系统登录后,首页显示我的信息、我的预借、我的借阅。3使用鼠标单击系统管理,页面显示系统管理用于进行用户管理,管理员用户具有最大权限,可以全方位控制信息资源。4用户单击借阅管理,显示请输入借阅号和归还号。四、工作计划:时间完成内容提交文档备注第1天查找资料,确定题目,选择方案课程设计任务书设计准备阶段第2天需求分析建模需求分析阶段第3天设计建模设计阶段第4天第5天详细设计与实现编码测试阶段第6天第7天第8天整理材料,撰写设计说明书收尾阶段第9天第10天课程设计答辩课程设计说明书、设计源代码课程设计考核,评定成绩指导教师: 教研室主任: 2009 年 6月29 日摘 要随着人类社会的发展,人类对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就成不可少了,本文介绍了在Myeclipse环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发本系统的详细过程,提出实现图书馆信息管理、资源共享的基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图书的入库登记到查询浏览,从借书放到图书的借阅,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。关键词:Java 面向对象 图书管理 借阅目 录课程设计任务书I摘 要II目 录IV一、设计内容1二、设计过程12.1需求分析12.2概要设计12.3详细设计22.4代码实现32.5程序运行与发布10三、总结11四、参考文献11一、设计内容设计图书管理借阅系统,将用户登陆、图书查询、图书信息、图书预借、图书借阅结合在一起。用户可以在登陆以后享受以上功能。二、设计过程2.1需求分析随着读书及图书数量的不断增加,其管理工作难度也愈来愈大,为了提高效率,减轻劳动强度,采用计算机管理日常借阅工作,就显得由为重要。在计算机飞速发展的今天,将计算机这一信息利器应用于日常管理,已是势必所然,他可以带来意想不到的效益,同时为企业的飞速发展提供了无限潜力。采用计算机管理信息系统极大的提高了管理人员的工作效率,大大减少了出错率。鉴于此,我选择了图书管理系统作为本次课程设计的题目。2.2概要设计根据图书管理借阅系统的需求绘制系统结构如图2-1所示: 图书管理系统用户管理图书查询用户信息用户预借用户借阅分类管理添加图书删除图书图2-1 系统结构图2.3详细设计管理员提交登录表单以后,需要调用数据库判断管理员的用户名和密码,和用户登录的检验基本相似,管理员只有登录成功后才可以对商品进行增加,删除,修改工作。数据库详细设计:book表如表2-1所示:表2-1 book表列名类型字数段BookNoINTEGER4NameVARCHAR30AuthorVARCHAR30BookManVARCHAR30BriefVARCHAR1024PublishDateDATEIsbnVARCHAR64ImageFileVARCHAR128PriceINTEGER4AmountINTEGER4RemainINTEGER4bookcategory表如表2-2所示:表2-2 bookcategory表列名类型字数段BcNoINTEGER4BookNoINTEGER4CategoryNoINTEGER4RemarkVARCHAR64borrow表如表2-3所示:表2-3 borrow表列名类型字数段BookNoINTEGER4PreBorrowNoINTEGER4BorrowTimeDATETIMERemarkVARCHAR64StatusINTEGER4category表如表2-4所示:表2-4 category表列名类型字数段CategoryNoINTEGER4NameVARCHAR30ParentNoINTEGER4RemarkVARCHAR642.4代码实现经过前面的工作,最后在集成编辑环境中,编写的程序代码如下:package c18.dao;import java.util.List;import mons.logging.Log;import mons.logging.LogFactory;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import c18.entity.Book;import c18.entity.BookCategory;import c18.helper.PageBean;import c18.helper.PageResult;/* * 图书持久化接口实现类 * author yuxd */public class BookDaoImpl extends PageDao implements BookDao /* * 日志操作对象 */ private static final Log log = LogFactory.getLog(BookDaoImpl.class); /* * 以会话对象作参数的构造器 * param session */public BookDaoImpl(Session session)this.session = session; /* * 根据图书号得到图书 */public Book get(int bookNo) throws HibernateException /得到对象return (Book)session.get(Book.class, new Integer(bookNo);/* * 得到所有图书(支持分页) */public PageResult getBooks(PageBean pageBean) throws HibernateException /组成查询sqlString sql = "from Book book"/输出日志信息log.debug("getBooks:" + sql);PageResult pageresult = new PageResult();/生成查询对象Query query = session.createQuery(sql);/设置分页查询数query.setFirstResult(pageBean.getPage() - 1) * pageBean.getPageSize();query.setMaxResults(pageBean.getPageSize();/得到结果pageresult.setResultList(query.list();/查询总数if(pageBean.getCount() <= 0)pageBean.setCount(getCount(sql, new Object);/设置分页信息pageresult.setPageBean(pageBean);/得到查询列表return pageresult;/* * 删除图书 */public void remove(Book book) throws HibernateException /删除对象session.delete(book);/* * 保存图书 */public void save(Book book) throws HibernateException /保存对象session.save(book);/* * 更新图书 */public void update(Book book) throws HibernateException /更新对象session.update(book);/* * 保存图书分类 */public void save(BookCategory bookcategory) throws HibernateException /保存对象session.save(bookcategory);/* * 根据分类号得到分类下的图书数目 */public int getBookCountByCategory(int categoryNo) throws HibernateException /组成查询sqlString sql = "select count(*) from BookCategory bookcategory where bookcategory.categoryNo=?"/输出日志信息log.debug("getBookCountByCategory:" + sql);log.debug("categoryNo:" + categoryNo);/生成查询对象Query query = session.createQuery(sql);query.setInteger(0, new Integer(categoryNo);/得到结果return (Integer)query.list().get(0).intValue();/* * 根据分类号得到分类下图书信息(支持分页) */public PageResult getBooksByCategory(int categoryNo, PageBean pageBean) throws HibernateException /组成查询sqlString sql = "from Book book where exists (select bookcategory.bookNo from BookCategory bookcategory where bookcategory.bookNo=book.bookNo and bookcategory.categoryNo=?)"/输出日志信息log.debug("getBooksByCategory:" + sql);log.debug("categoryNo:" + categoryNo);PageResult pageresult = new PageResult();/生成查询对象Query query = session.createQuery(sql);query.setInteger(0, new Integer(categoryNo);/设置分页查询数query.setFirstResult(pageBean.getPage() - 1) * pageBean.getPageSize();query.setMaxResults(pageBean.getPageSize();/得到结果pageresult.setResultList(query.list();/查询总数if(pageBean.getCount() <= 0)pageBean.setCount(getCount(sql, new Objectnew Integer(categoryNo);/设置分页信息pageresult.setPageBean(pageBean);/得到查询列表return pageresult;/* * 根据图书号删除图书分类关系 */public void delBookCategoryByBook(int bookNo) throws HibernateException /得到图书对应的图书分类关系列表List list = getBookCategoryByBook(bookNo);if(list != null)for(int i=0; i<list.size(); i+)BookCategory bookcategory = (BookCategory)list.get(i);/删除图书分类关系session.delete(bookcategory);/* * 得到图书相关的分类关系 */public List getBookCategoryByBook(int bookNo) throws HibernateException /组成查询sqlString sql = "from BookCategory bookcategory where bookcategory.bookNo=?"/输出日志信息log.debug("delBookCategoryByBook:" + sql);log.debug("bookNo:" + bookNo);/生成查询对象Query query = session.createQuery(sql);query.setInteger(0, new Integer(bookNo);/得到结果return query.list();/* * 根据关键字查询图书 */public PageResult findBooksByProperty(String propertyName, String propertyValue, PageBean pageBean) throws HibernateException /组成查询sqlString sql = "from Book book where book." + propertyName + " like ?"/输出日志信息log.debug("findBooksByProperty:" + sql);log.debug("propertyName:" + propertyName);log.debug("propertyValue:" + propertyValue);PageResult pageresult = new PageResult();/生成查询对象Query query = session.createQuery(sql);query.setString(0, "%" + propertyValue + "%");/设置分页查询数query.setFirstResult(pageBean.getPage() - 1) * pageBean.getPageSize();query.setMaxResults(pageBean.getPageSize();/得到结果pageresult.setResultList(query.list();/查询总数if(pageBean.getCount() <= 0)pageBean.setCount(getCount(sql, new Object"%" + propertyValue + "%");/设置分页信息pageresult.setPageBean(pageBean);/得到查询列表return pageresult;2.5程序运行与发布将此程序部署到Tomcat服务器目录下,启动Tomcat服务器,在浏览器地址栏输入HTTP:/localhost:8080/c18即可执行留言板程序。程序运行结果如图2-2所示:图2-2 图书管理系统程序界面三、总结本文提出并设计了一个基于J2EE的完整的图书管理系统,该系统整合了数据库技术、JSP技术、网站开发技术等。主要实现了当前的图书管理的基本功能,由于本人的实力还没有达到完全自己开发的能力,于是就采用了“拿来主义”。虽然本系内容很简单不够完善,而且存在一些不足,不过通过对这个系统的学习与开发,让我更好地掌握了基于J2EE的Web开发技术,更深刻地理解了网站的开发流程。在两周的开发中,让我明白一点,就是测试的重要性。所谓建系统,测试先行,软件工程的知识告诉我们一个系统的开发从立项到投入运行,很长的周期都是在测试上的,这次的实际的系统开发让我增长了测试的经验。四、参考文献1 申吉红、廖学峰、余建编著·JSP动态网页设计教程 M·北京:电子工业出版社,2005·105-2672 张海藩编著·软件工程导论M ·北京:人民邮电出版社·2002.3 ISBN 7-115-09378-43 张白一,崔尚森。面向对象程序设计-J2EE.西安,西安电子科技大学出版社2003.1课程设计成绩评定表质量评价指标评 价 项 目具 体 要 求满 分得 分学习态度学习认真,态度端正,遵守纪律,出勤情况良好,能够独立完成设计工作。20工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。20设计说明书质量设计方案正确、表达清楚;设计思路、方法科学合理;达到课程设计任务书规定的要求;图、表、文字表达准确规范,上交及时。30答辩陈述和回答问题陈述简明扼要,思路清晰,清楚流利,回答问题准确,基本概念清楚,有理有据,有一定深度。30评定成绩评定人员签名年 月 日