ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:721.50KB ,
资源ID:8261929      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8261929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南昌大学javaweb大作业报告书.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南昌大学javaweb大作业报告书.docx

1、南昌大学javaweb大作业报告书软件学院大作业实验报告 题 目: 基于Struts的图书管理系统 专 业: 软件工程 班 级: 122班(java方向) 学 号: * * * 完成人数: 1 人 起讫日期: 2015/05/20 任课教师: 周兴斌 职称: 副教授 部分管主任: 刘晓强 完成时间: 2015/05/30 1.前言 1.1 实验目的学习Web应用程序的开发,以B/S方式,JSP编程技术开发图书管理系统;通过编程实践掌握JSP的动态网页与sql2012数据库相结合的技术;通过MVC(模型-视图-控制)架构模式,使其在开发过程中得以应用,并了解Web编程模式下的Model1和Mod

2、el2 的区别;了解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否否应还日期罚金表fine: (用于设

6、置罚金)字段名类型长度是否为主键可否为空说明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框架,由于St

8、ruts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。 3.2 关键程序流程 本实验的总体流程如下: 本系统应用3层架构模型,现分别对其进行阐述:第一层架构为数据库层,也是程序的最底层(主要由DataBase.java实现),它的功能实现sql2012数据库的连接,函数里封装了几个操作。public boolean query(String s) (用于查询数据表操作);public ResultSet getlist(String s) (用于获取数据的可以滚动结果集) ;public int update(String s)(用于简单的数据更新操作)public

9、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.java、Users

10、.java)仅包含对属性的set和get方法,在相应的DAO层主要包含对数据表的相关操作,如获得该数据表的全部信息或部分信息,增加、删除、修改、查询相应的数据表;第三层为业务逻辑层,主要由Struts和其的action来实现,实现页面的控制和跳转到相应的jsp页面,其中action主要包括BooksAction.java、LoginAction.java、ResetfineAction.java、UserAction.java。相应的程序架构如图所示:3.3 关键代码分析数据库的连接和相关一些操作函数 (在文件DataBase.java中实现的):package com.wk.util;imp

11、ort 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; /数据库的url private String url = jdbc:sqlserver:/localhost:1433;Datab

12、aseName=Book; /数据库的用户名密码 String user = sa; String pass = 123; /用于验证查询操作 public boolean query(String s) throws SQLException try /加载驱动 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch(ClassNotFoundException e) System.out.println(加载驱动器类时异常); try /创建链接 conn = DriverManager.getConnectio

13、n(url, user, 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 SQLException try /加载驱动 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);

14、catch(ClassNotFoundException e) System.out.println(加载驱动器类时异常); try /建立连接 conn = DriverManager.getConnection(url, user, pass); /得到statement对象 stmt = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); /得到一个可滚动但不可以更新的结果集rs rs = stmt.executeQuery(s); catch(SQLException e

15、) System.out.println(更新操作连接数据库的过程中出现SQL异常); return rs; /用于对数据库的更新 public int update(String s) throws SQLException int msg=0; try /加载驱动 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch(ClassNotFoundException e) System.out.println(加载驱动器类时异常); try /创建链接 conn = DriverManager.getConnect

16、ion(url, user, pass); stmt = conn.createStatement(); msg = stmt.executeUpdate(s); catch(SQLException e) System.out.println(连接数据库的过程中出现SQL异常); return(msg); /批处理,用于处理多条sql public boolean executebatch(String a) try /创建链接 conn = DriverManager.getConnection(url, user, pass); conn.setAutoCommit(false);/关闭

17、自动提交,进行事物处理 stmt = conn.createStatement(); for(int i=0;ia.length;i+) stmt.addBatch(ai); int number = stmt.executeBatch();/开始批处理,返回被执行的sql语句的序号 mit(); System.out.println(共有+number.length+条sql语句被执行); stmt.clearBatch();/清空batch conn.close(); return true; catch (SQLException e) / TODO Auto-generated cat

18、ch block try conn.rollback(); return false; catch (SQLException e1) / TODO Auto-generated catch block e1.printStackTrace(); e.printStackTrace(); return false; /关闭数据流 public void close() throws SQLException conn.close(); stmt.close(); rs.close(); 管理员操作用户(在文件UserService.java中实现的)/管理员对用户的添加操作 public bo

19、olean adduser(String a) throws SQLException /将密码明文转换为密文存入数据库 a2 = ead.encrypt(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; /管理员对用户的删除操作 pu

20、blic boolean deluser(String id) throws SQLException sql = delete from users where ID=+id+; System.out.println(del sql=+sql); int result = db.update(sql); if(result!=0) return true; return false; /管理员对用户的更新操作 public boolean updateusers(String a) throws SQLException sql = update users set username=+a1

21、+,userlevel=+a2+ where ID=+a0+; System.out.println(更新sql=+sql); int result = db.update(sql); if(result!=0) return true; return false; 这里管理员对图书的操作和对用户的操作很类似,这里就不再赘述了。用户对图书的查询,借阅和续借和归还(主要在BooksService.java和borrowbookService.java实现的)BooksService.java部分代码:/模糊查询,获取用户的关键词,以此为查询条件进行搜索,默认按人气高至低排列 public Arr

22、ayList getbook(String a) throws SQLException ArrayList al = new ArrayList(); for(int i=0;ia.length;i+) System.out.println(ai); if(a0.equals() sql = select * from books where +a2+ LIKE %+a1+% order by b_hot desc; else sql = select * from books where +a2+ LIKE %+a0+% order by b_hot desc; System.out.pr

23、intln(sql:+sql);/调用DataBase.java的函数,获取相应的图书列表 rs = db.getlist(sql); while (rs.next() Books bk = new Books(); bk.setB_ID(rs.getInt(1); bk.setB_name(rs.getString(2); bk.setB_author(rs.getString(3); bk.setB_publish(rs.getString(4); bk.setB_type(rs.getString(5); bk.setB_count(rs.getInt(6); bk.setB_hot(r

24、s.getInt(7); al.add(bk); / 将al放到arrayList中 return al;borrowbookService.java部分代码: /归还图书, public boolean returnbook(String brid,String cardnum,String b_ID) throws SQLException String sql1 = update users set borrowed = borrowed-1 , can_borrow = can_borrow+1 where cardnum = +cardnum; String sql2 = updat

25、e books set b_count = b_count+1 where b_ID=+b_ID; String sql3 = delete from borrowbook where brid=+brid; String a = sql1,sql2,sql3; /处理多条语句时,使用事务处理和使用批处理进行处理。 if(db.executebatch(a) return true; return false; /续借图书 public boolean renewbook(String brid) throws SQLException/将当前时间获得,拼接之sql,进行数据库表的更新操作 s

26、ql = update borrowbook set borrowday =+new Day().getnowdate()+,shouldreturn = +new Day().getdate()+ where brid=+brid; System.out.println(sql=+sql); int r = db.update(sql); if(r!=0) return true; return false; 管理员对罚金的设置(主要由FineService.java和Resetfine.java完成的)FineService.java代码:package com.wk.service;im

27、port java.sql.ResultSet;import java.sql.SQLException;import com.wk.util.DataBase;public class FineService DataBase db = new DataBase(); ResultSet rs = null; String sql = ; /管理员设定罚金金额 public boolean setfine(float f) /字符拼接将设置的金额拼接成sql sql = update fine set fine =+f; System.out.println(sql); try /调用database.java的更新函数进行数据库操作 int r = db.update(sql); if(r!=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1