南昌大学javaweb大作业报告书(共27页).doc
《南昌大学javaweb大作业报告书(共27页).doc》由会员分享,可在线阅读,更多相关《南昌大学javaweb大作业报告书(共27页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上软件学院大作业实验报告题 目: 基于Struts的图书管理系统 专 业: 软件工程 班 级: 122班(java方向) 学 号: 学生姓名: 王冠 完成人数: 1 人 起讫日期: 2015/05/20 任课教师: 周兴斌 职称: 副教授 部分管主任: 刘晓强 完成时间: 2015/05/30 专心-专注-专业目录1.前言 1.1 实验目的学习Web应用程序的开发,以B/S方式,JSP编程技术开发图书管理系统;通过编程实践掌握JSP的动态网页与sql2012数据库相结合的技术;通过MVC(模型-视图-控制)架构模式,使其在开发过程中得以应用,并了解Web编程模式下的Mo
2、del1和Model2 的区别;了解Struts框架的具体含义及在Struts模式下的开发。 1.2 实验的基本要求数据库表不少于3个,且表之间必须存在关联。页面设计布局合理,颜色使用恰当,风格统一,页面应不少于10个。系统功能不少于6个,且能正确运行。系统采用面向对象的方式设计,尽量使界面、业务、数据之间的耦合关系降低。代码实现尽量使用事件处理、事务处理。系统应对一些常见的异常进行适当的处理。数据的操作以事务的方式实现,要求处理并发问题。2. 系统分析与设计 2.1 系统功能描述(简单需求分析)图书管理系统是典型的信息管理系统(MIS),本系统是根据现代化校园的发展而设计的基于jsp的图书管
3、理系统,本系统就是为了管理好图书信息和借阅等一系列操作而设计的。图书管理系统需要满足来自两方面的需求,这三个方面分别是学生和管理员。学生的需求是查询图书馆的藏书,借阅图书,和退换图书等功能;管理员的功能最为复杂,包括对学生、图书进行管理,及系统状态的查看、维护并。学生要使用图书管理系统,需要进行登陆,登陆之后则可以进行一系列的操作,例如:查询图书,借阅图书,归还图书等功能。而作为管理员,则可以对学生进行添加,只有已添加有卡号的学生才可以进行图书管理系统的登陆,管理员还可以对图书进行增,删,改,查。亦可以对用户进行增,删,改查等功能。 2.2 系统功能流程为了满足以上的需求,系统分成了两大模块,
4、普通用户模块和管理员模块。功能模块图如图所示。相应Struts页面流程如下所示(电子版可自行放大):2.3数据库设计2.3.1数据表的构建本系统采用如下的数据表:用户信息表 users:用于记录用户信息数据表字段名类型长度是否为主键可否为空说明IDnchar10是否用户IDusernamenchar10否否用户姓名passwordnchar10否否用户密码cardnumint10否否卡号信息userlevelint10否否用户级别coaterint10否否借阅限额borrowedint10否否已借阅数can_borrowint10否否可借阅数图书信息表books: (用于存储图书相关信息)字段
5、名类型长度是否为主键可否为空说明b_IDint10是否图书IDb_namenvarchar50否否图书名称b_authornchar10否否图书作者b_publishnvarchar50否否图书出版社b_typenchar10否否图书类型b_countint10否否拥有数量b_hotint10否否欢迎度借阅表 borrowbook: (用于表示借阅信息)字段名类型长度是否为主键可否为空说明bridint10是否借阅表idcardnumint10是否用户表外键b_IDint10是否图书表外键borrowdaynchar10否否借阅日期shouldreturnnchar10否否应还日期罚金表fin
6、e: (用于设置罚金)字段名类型长度是否为主键可否为空说明finefloat10是否罚金3.系统的实现与测试 3.1系统采用的关键技术本系统采用的是Model2模型,Model2表示的是基于MVC模式的框架。MVC是ModelViewController的简写。Model 代表的是应用的业务逻辑(通过JavaBean,), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。从而弥补了Model1的不足。Model2具有组件化的优点
7、从而更易于实现对大规模系统的开发和管理,但是开发MVC系统比简单的JSP开发要复杂许多,它需要更多的时间学习和掌握。同时新东西的引入会带来新的问题(这让我想起来关于自动计算的一篇文章,中间提到为了降低系统的复杂度,却导致更高的复杂度)。必须基于MVC组件的方式重新思考和设计应用结构。原来通过建立一个简单的JSP页面就能实现的应用现在变成了多个步骤的设计和实现过程。 所有的页面和组件必须在MVC框架中实现,所以必须进行附加地开发工作。 MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC
8、框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。 3.2 关键程序流程 本实验的总体流程如下: 本系统应用3层架构模型,现分别对其进行阐述:第一层架构为数据库层,也是程序的最底层(主要由DataBase.java实现),它的功能实现sql2012数据库的连接,函数里封装了几个操作。public boolean query(String s) (用于查询数据表操作);public ResultSet getlist(String s) (用于获取数据的可以滚动结果集) ;public int update(String s)(用于简单的数据更新操作)
9、public boolean executebatch(String a)(批处理,用于处理多条sql);第二层为JavaBean层和DAO层,主要实现对数据表的信息及对其进行操作的信息进行封装(主要由文件Books.java、Fine.java、borrowbook.java、Users.java、BookService.java 、borrowbookSevice.java、FineService.java和 UserService.java来实现的)。在相应的JavaBean层封装了所有数据表的信息,在上述的实体类中(Books.java、Fine.java、borrowbook.jav
10、a、Users.java)仅包含对属性的set和get方法,在相应的DAO层主要包含对数据表的相关操作,如获得该数据表的全部信息或部分信息,增加、删除、修改、查询相应的数据表;第三层为业务逻辑层,主要由Struts和其的action来实现,实现页面的控制和跳转到相应的jsp页面,其中action主要包括BooksAction.java、LoginAction.java、ResetfineAction.java、UserAction.java。相应的程序架构如图所示:3.3 关键代码分析 数据库的连接和相关一些操作函数 (在文件DataBase.java中实现的):package com.wk.
11、util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DataBase private Connection conn = null;private Statement stmt;ResultSet rs = null;/数据库的urlprivate String url = jdbc:sqlserver:/localhost:1433;D
12、atabaseName=Book;/数据库的用户名密码String user = sa;String pass = 123;/用于验证查询操作public boolean query(String s) throws SQLExceptiontry/加载驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)System.out.println(加载驱动器类时异常);try/创建链接conn = DriverManager.getConnection(url, us
13、er, pass);stmt = conn.createStatement();rs = stmt.executeQuery(s);catch(SQLException e)System.out.println(query连接数据库的过程中出现SQL异常);return(rs.next();/用于结果集可滚动的操作public ResultSet getlist(String s) throws SQLExceptiontry/加载驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundE
14、xception e)System.out.println(加载驱动器类时异常);try/建立连接conn = DriverManager.getConnection(url, user, pass);/得到statement对象stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);/得到一个可滚动但不可以更新的结果集rsrs = stmt.executeQuery(s);catch(SQLException e)System.out.println(更新操作连接数据库的过
15、程中出现SQL异常);return rs;/用于对数据库的更新public int update(String s) throws SQLExceptionint msg=0;try/加载驱动Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);catch(ClassNotFoundException e)System.out.println(加载驱动器类时异常);try/创建链接conn = DriverManager.getConnection(url, user, pass);stmt = conn.createState
16、ment(); msg = stmt.executeUpdate(s);catch(SQLException e)System.out.println(连接数据库的过程中出现SQL异常);return(msg);/批处理,用于处理多条sqlpublic boolean executebatch(String a)try /创建链接conn = DriverManager.getConnection(url, user, pass);conn.setAutoCommit(false);/关闭自动提交,进行事物处理stmt = conn.createStatement();for(int i=0;
17、ia.length;i+)stmt.addBatch(ai);int number = stmt.executeBatch();/开始批处理,返回被执行的sql语句的序号mit();System.out.println(共有+number.length+条sql语句被执行);stmt.clearBatch();/清空batchconn.close();return true; catch (SQLException e) / TODO Auto-generated catch blocktry conn.rollback();return false; catch (SQLException
18、e1) / TODO Auto-generated catch blocke1.printStackTrace();e.printStackTrace();return false;/关闭数据流public void close() throws SQLExceptionconn.close();stmt.close();rs.close(); 管理员操作用户(在文件UserService.java中实现的)/管理员对用户的添加操作public boolean adduser(String a) throws SQLException/将密码明文转换为密文存入数据库a2 = ead.encry
19、pt(a2);/利用字符串的拼接组成sql语句sql = insert into users values(+a0+,+a1+,+a2+,+a3+,+a4+,+a5+,+a6+);System.out.println(添加的sql+sql);/调用数据库的更新数据的操作函数int result = db.update(sql);if(result!=0)return true;return false;/管理员对用户的删除操作public boolean deluser(String id) throws SQLExceptionsql = delete from users where ID
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 javaweb 作业 报告书 27
限制150内