JSP课程设计

更新时间:2023-08-26 06:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JSP课程设计 ——面向对象图书管理系统

南京信息工程大学

课程名称: JSP课程设计 题 目: 院 系: 班 级: 软件工程 学 号: 姓 名: 指导教师:

日期:2013 年 12月 20 日

JSP课程设计 ——面向对象图书管理系统

摘要:

本系统实现的是面向对象的图书管理系统。实现的功能有:用户登录、修改用户基本信息、图书管理(增删改查)、借书、查询自己的借阅情况。 该平台采用java语言,通过MVC模式进行项目搭建,利用Maven进行项目管理,前台采用Jquery技术,包括Kaptcha验证码框架和EasyUI的DataGrid表格技术,轻松的实现分页技术。后台采用SpringMVC+Hibernate+Spring 框架,通过SpringMVC进行控制选择,利用Hibernate对JDBC封装,毫无悬念的面向对象设计。利用Compass对Lucene的封装,与Spring整合,实现快速搜索,搜索速度大大提升。利用Junit进行单元测试,采用harmcrest对Junit的快速判断,同时利用EasyMock进行模拟测试,实现业务逻辑层和数据访问层开发速度不同步情况,最后采用cobertura对整个系统进行测试覆盖率评审。数据库采用MySql,服务器采用Jetty。

关键词: Jquery + SpringMVC + Hibernate + Spring + Compass + Junit

一、课程设计的目的与要求

通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。

具体如下:

1. 通过面向对象的系统分析与设计,编码和测试方面的知识; 2. 利用工具RSA对系统进行需求分析;

3. 进一步加强和提高软件工程文档的编写能力; 4. 采用流行的框架对系统进行快速部署;

二、设计正文 1. 概述

1.1课题题目:面向对象图书管理系统 1.2 系统的开发环境及运行环境:

操作系统: Window7 建模工具: RSA 数据库系统:MySql 开发工具: STS Web服务器:Jetty

2. 系统需求分析

图书管理系统主要的角色是用户和图书,而每个用户都应有一个固定的角色,去做他自己的事,而不能跨越自己的权限。系统中有两类用户:

JSP课程设计 ——面向对象图书管理系统

(1)普通用户是主要的需求者,主要是查询自己的图书借阅情况以及借阅图书,查看或修改个人的基本信息;

(2)管理员主要需求功能是管理用户的超级管理员,以及图书的管理;

系统模块如下:

2.1 系统用例图

用例图说明:

JSP课程设计 ——面向对象图书管理系统

(1)系统的外部角色有:普通用户和管理员。 (2)系统主要用例的文档描述:

①普通用户管理用例:学生用户可见的功能,图书查询与借阅四个用例功能。 ② 管理员管理用例:对普通用户可见的功能,包含了图书管理的五个用例功能。

2.2 类图

类图说明:

(1)User类是一个系统角色用户类,提供了所有的基本信息属性和set . get方法:

setXXX() 设置用户基本信息属性; getXXX() 获得用户基本信息属性。 (2)Log类是系统日志类。

(3)UserController类是用户请求的控制类,主要方法有:

login() 用于系统用户登录; updateUser() 用于更新用户信息; addUser() 用于添加用户;

(4)UserServiceImpl类实现UserService类,是封装用户的业务逻辑类,主要方法有:

add() 用于添加用户; delete() 用于删除用户; update() 用于更新用户信息; select() 用于获取用户列表。

(5)UserDaoImpl类是实现UserDao一个类,是业务展现类,主要方法有(同上)

JSP课程设计 ——面向对象图书管理系统

2.3 顺序图

(1)用户信息管理顺序图

(2)用户图书借阅顺序图

2.4 活动图

JSP课程设计 ——面向对象图书管理系统

(1)图书借阅活动图

2.5 组件图

JSP课程设计 ——面向对象图书管理系统

三、 系统总体设计

3.1 设计数据管理子系统

(1)数据库表

(2)数据表之间的关系

JSP课程设计 ——面向对象图书管理系统

(3)数据库表结构

t_book

Field Type Extra

P bId int(11) COMMENT '主键,自动生成' Auto Increment bName varchar(50) COMMENT '书的名称' Allow Null author varchar(20) COMMENT '作者' Allow Null cId int(11) COMMENT '外键,书的属性' Allow Null press varchar(20) COMMENT '出版社' Allow Null price varchar(10) COMMENT '价格' Allow Null isbn varchar(20)

wordCount int(11) COMMENT '总字数' Allow Null pageCount int(11) COMMENT '总页数' Allow Null

bookSize varchar(20) COMMENT '页面大小' Allow Null imageUrl varchar(30) COMMENT '图片地址' Allow Null bookCount int(11) COMMENT '总册数' Allow Null

avaiableCount int(11) COMMENT '可借数' Allow Null

Index Fields Extra cid cId

t_book_log

Field Type Extra

P id int(11) COMMENT '主键,自动增长' Auto Increment uId int(11) COMMENT '用户ID' bId int(11) COMMENT '图书ID'

loanTime date COMMENT '借阅时间' Allow Null IfReturn bit(1) COMMENT '是否归还' Allow Null

Index Fields Extra bId bId uId uId

t_category

Field Type Extra

P id int(11) COMMENT '主键,自动生成' Auto Increment name varchar(20) COMMENT '属性名称' subId int(11) COMMENT '类别ID'

subName varchar(20) COMMENT '类别名称'

JSP课程设计 ——面向对象图书管理系统

t_log

Field Type Extra

P LOG_ID int(11) COMMENT '主键,自动生成' Auto Increment USER_ID int(11) COMMENT '用户ID,外键' Allow Null USER_NAME varchar(255) COMMENT '用户名' Allow Null LOG_TIME datetime COMMENT '登录时间' Allow Null

t_role

Field Type Extra

P id int(11) COMMENT '主键,自动生成' Auto Increment name varchar(25) COMMENT '角色名称' Allow Null

role_type varchar(25) COMMENT '角色类型' Allow Null

t_user

Field Type Extra

P id int(11) COMMENT '主键,自动生成' Auto Increment username varchar(20) COMMENT '用户名' password varchar(36) COMMENT '登陆密码'

rId int(11) COMMENT '角色ID,外键' Allow Null sex char(2) COMMENT '性别' Allow Null age int(11) COMMENT '年龄' Allow Null

phone varchar(11) COMMENT '联系方式' Allow Null email varchar(50) COMMENT 'EMAIL' Allow Null deptName varchar(20) COMMENT '院系' Allow Null

Index Fields Extra

username username Unique rId rId

四、 系统实现

本系统采用了MVC模式的三层架构来实现,即分为用户界面层(UI)、业务逻辑层和数据访问层,用户界面层是展示给用户的界面,方便用户与系统进行交互;业务逻辑层是对系统业务实体的封装,完成系统业务功能;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。通过Jquery+SpringMVC+Hibernate+Spring的完美整合实现。

4.1 系统登录页面,代码及运行效果如下:

</style> </head> <body>

<img style="width:600px;position:relative; top:10px; left:320px;"

JSP课程设计 ——面向对象图书管理系统

src="extend/title.png"/>

<div id="alertMessage"></div> <div id="successLogin"></div> <div class="text_success">

<img src="extend/loader_green.gif" alt="Please wait" /> <span>登陆成功!请稍

后....</span>

</div>

<div id="login">

<div class="ribbon" style="background-image:url(extend/typelogin.png);"></div> <div class="inner">

<div class="logo">

<img src="extend/toplogo-jeecg.png" /> </div>

<div class="formLogin">

<form name="formLogin" action="login.action" id="formLogin" method="post">

<div class="tip">

<input class="userName" name="userName" type="text" id="userName"

title="用户名" ="true" value="admin" ="请输入用户名!" />

</div>

<div class="tip">

<input class="password" name="password" type="password"

id="password" title="密码" value="admin" ="请输入密码!" />

</div>

<div id="cap" class="tip">

<input class="captcha" name="captcha" type="text" id="captcha" <img style="width:85px;height:35px;margin-top: -10px;"

="请输入验证码!" />

align= id="Kaptcha" src="Kaptcha.jpg"/>

</div>

<div class="loginButton">

<div style="float: left; margin-left: -9px;">

<input type="checkbox" id="on_off" name="remember"

checked= class="on_off_checkbox" value="0" /> <span class="f_help">是否记住用户名?</span>

</div>

<div style="float: right; padding: 3px 0; margin-right: -12px;">

<div>

<ul class="uibutton-group">

<li><a class="uibutton normal" </li>

<li><a class="uibutton normal" </li>

href="javascript:void(0);" id="but_login">登陆</a>

href="javascript:void(0);" id="forgetpass">重置</a>

</ul>

</div>

JSP课程设计 ——面向对象图书管理系统

<div style="float: left; margin-left: 30px;">

<a href="javascript:void(0);"><span class="f_help">是否初

始化admin的密码</span></a>

</div> </div>

<div class="clear"></div>

</div>

</form>

</div>

</div>

<div class="shadow"></div>

</div>

<!--Login div-->

<div class="clear"></div> <div id="versionBar">

<div class="copyright">&copy; 版权所有 <span class="tip"><a

(推荐使用IE9+,谷歌浏览器可以获得更快,更安全的页面响应速度)技术支持:<a

href="javascript:void(0);" title="sysErp"> LZ </a> href="javascript:void(0);" title="sysErp">LZ</a> </span>

</div> </div>

</body> 效果:

4.2 系统主界面代码及运行效果图如下:

<script type="text/javascript">

JSP课程设计 ——面向对象图书管理系统

$(function(){

var aa = document.cookie; var arrcookie=aa.split(";"); var userName;

//遍历cookie数组,处理每个cookie对 for(var i=0;i<arrcookie.length;i++){ var arr=arrcookie[i].split("="); //找到名称为userId的cookie,并返回它的值 if("userName"==arr[0]){ userName=arr[1]; break; } }

$(".user").html("用户: "" 欢迎使用!") ;

});

</script> </head>

<body class="easyui-layout" style="overflow-y: hidden" ="no"> <noscript>

<div style="position: absolute; z-index: 100000; height: 2046px; top: 0px; left: 0px; width: 100%; background: white; text-align: center;"> <img src="images/noscript.gif" alt='抱歉,请开启脚本支持!' /> </div> </noscript>

<div ="north" ="true" style="overflow: hidden; height: 30px; background: #D2E0F2 repeat-x center 50%;

line-height: 20px; color: #fff;"> <div class="user"> </div> </div>

<div ="south" style="height: 20px; background: #D2E0F2;"> <div style="text-align: center; font-weight: bold"> &copy; 版权所有LZ </div> </div>

<div ="west" ="true" title="导航菜单" style="width: 180px;overflow:hidden;" ="icon-redo">

<div id="menu" class="easyui-accordion" ="true" ="false">

<div title="图书管理" style="overflow:auto; padding: 10px;" ="icon-edit"> <div title="图书设置"> <ul> <li> <div>

<a target="mainFrame" href="book.jsp">图书设置</a></div> </li> </ul> </div> </div>

JSP课程设计 ——面向对象图书管理系统

<div title="用户管理" style="padding: 10px;" ="icon-edit"> <div title="用户设置"> <ul> <li> <div>

<a target="mainFrame" href="user.jsp">用户设置</a></div> </li> </ul> </div> </div>

<div title="关于" ="icon-help"> <h4> 本系统只适用于在校学生</h4> </div> </div> </div>

<div ="center" id="mainPanle" style="background: #eee;overflow:hidden;"> <div id="tabs" class="easyui-tabs" ="true" ="false"> <div title="主页" style="padding: 20px;" id="home">

<div class="copyright">&copy; 版权所有 <span class="tip"><a href="javascript:void(0);" title="sysErp">LZ</a>

(推荐使用IE9+,谷歌浏览器可以获得更快,更安全的页面响应速度)技术支持:<a </div>

href="javascript:void(0);" title="sysErp">LZ</a> </span> </div> </div> </div> </body>

JSP课程设计 ——面向对象图书管理系统

4.3 图书管理界面代码及运行效果图如下:

<body>

<table id="dg" title="图书管理" style="width:850px;height:380px" ="bookList"

="#toolbar" ="true" ="true" ="true"> <thead> <tr>

<th ="bname" width="30">书名</th> <th ="author" width="30">作者</th> <th ="press" width="30">出版社</th> <th ="price" width="30">价格</th> <th ="isbn" width="30">ISBN</th>

<!-- <th field="category" width="30">属性</th> --> <th ="pagecount" width="30">页数</th> <th ="wordcount" width="30">字数</th> <th ="booksize" width="30">页面</th>

<th ="imageurl" width="30" ="formatImagePerson">图片</th> <th ="bookcount" width="30">总册数</th> <th ="avaiablecount" width="30">可借数目</th> </tr> </thead> </table>

<div id="toolbar">

<a href="javascript:void(0)" class="easyui-linkbutton" ="icon-add" ="true" onclick="newItem()">新建</a>

<a href="javascript:void(0)" class="easyui-linkbutton" ="icon-remove" ="true" onclick="destroyItem()">删除</a>

<div><input id="search" type="text" name="search" style="width: 100px;" />

<div id="one">

<a href="javascript:void(0)" class="easyui-linkbutton" ="icon-search"

="true" >书目检索</a> </div> </div> </div>

<script type="text/javascript"> $(function(){

$('#dg').datagrid({ url:'book/show.action', view: detailview,

detailFormatter:function(index,row){ return '<div class="ddv"></div>'; },

onExpandRow: function(index,row){

var ddv = $(this).datagrid('getRowDetail',index).find('div.ddv');

JSP课程设计 ——面向对象图书管理系统

ddv.panel({ border:false, cache:true,

href:'book_form.jsp?index='+index, onLoad:function(){

$('#dg').datagrid('fixDetailRowHeight',index); $('#dg').datagrid('selectRow',index);

$('#dg').datagrid('getRowDetail',index).find('form').form('load',row); } });

$('#dg').datagrid('fixDetailRowHeight',index); } }); });

function formatImagePerson(value,rowData,rowIndex){

return "<a href='"+ value +"' class='jqzoom' title='图书照片'><img src='"+ value +"' style='width:20px;height:20px;border: 0px solid #666;' /></a>"; }

$('#one').click(function () {

var bname= $("input[name='search']").val(); bname = "'" + bname + "'"; $('#dg').datagrid({

url:'book/search.action?bname='+bname,

view: detailview,

detailFormatter:function(index,row){ return '<div class="ddv"></div>'; },

onExpandRow: function(index,row){

var ddv = $(this).datagrid('getRowDetail',index).find('div.ddv'); ddv.panel({ border:false, cache:true,

href:'book_form.jsp?index='+index, onLoad:function(){

$('#dg').datagrid('fixDetailRowHeight',index); $('#dg').datagrid('selectRow',index);

$('#dg').datagrid('getRowDetail',index).find('form').form('load',row); } });

$('#dg').datagrid('fixDetailRowHeight',index); } });

JSP课程设计 ——面向对象图书管理系统

});

function saveItem(index){

var'#dg').datagrid('getRows')[index];

$('#dg').datagrid('getRowDetail',index).find('form').form('submit',{ url: 'book/bookSave.action', onSubmit: function(){

return $(this).form('validate'); },

success: function(data){ data = eval('('+data+')'); data.isNewRecord = false;

$('#dg').datagrid('collapseRow',index); $('#dg').datagrid('updateRow',{ index: index, row: data.data }); } }); }

function cancelItem(index){

var row = $('#dg').datagrid('getRows')[index]; if (row.isNewRecord){

$('#dg').datagrid('deleteRow',index); alert(row + " " + index); } else {

$('#dg').datagrid('collapseRow',index); } }

function destroyItem(){

var row = $('#dg').datagrid('getSelected'); if (row){

$.messager.confirm('系统提示','您确定要删除这条记录吗?',function(r){ if (r){

var index = $('#dg').datagrid('getRowIndex',row); $.post('book/bookDelete.action', }); } }); } }

{id:row.bid}, function(){

$('#dg').datagrid('deleteRow',index);

JSP课程设计 ——面向对象图书管理系统

function newItem(){

$('#dg').datagrid('appendRow',{isNewRecord:true}); var index = $('#dg').datagrid('getRows').length - 1; $('#dg').datagrid('expandRow', index); $('#dg').datagrid('selectRow', index); } </script>

</body>

4.4 用户管理界面代码及运行效果图如下:

4.5 图书搜索界面代码及运行效果图如下:

JSP课程设计 ——面向对象图书管理系统

4.6 图书显示大图面代码及运行效果图如下:

4.7 图书借阅情况运行效果图如下:

JSP课程设计 ——面向对象图书管理系统

五. 系统测试

在系统测试中,我们首先对各个子模块进行单元测试(包括easymock 的模拟测试),即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,找出系统设计或编码上的错误,以及验证系统是否实现了指定的功能。最后通过测试覆盖率检查系统的测试效果(由于单元测试是从service层开始的所以有些类没有测试到,导致测试覆盖率不高)。

六、课程设计总结或结论

1. 通过这次软件工程课程设计的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实

际能力,培养工程设计能力和综合分析、解决问题的能力。 1.1 1.2 1.3 1.4 1.5

学习和实践了分析和设计软件系统的各种知识,包括面向对象的系统分析与设计,编码和测试方面的知识。

掌握了自动化的软件开发工具RSA,并将其运用于软件开发的全过程。 加深掌握了Java平台的三层架构模式设计。 进一步加强和提高软件工程文档的编写能力。 更一步了解SpringMVC的框架令人爱不释手

2. 本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些

模块以及整个系统还有许多不完善的地方。

七、参考文献

[1] 单东林.锋利的jQuery(第2 版).人民邮电出版社,2011

[2] Petar Tahchiev Felipe Leme.Junit In Action. 人民邮电出版社,2011 [3] 陈雄华.Spring 3.X 企业应用开发实战 电子工业出版社,2011

本文来源:https://www.bwwdw.com/article/vf4i.html

Top