配色: 字号:
基于MVC设计模式的图书管理系统的设计与开发毕业论文
2023-12-07 | 阅:  转:  |  分享 
  
(此文档为word格式,下载后您可任意编辑修改!)







基于MVC设计模式的图书管理系统的设计与开发



























姓   名

系 别、 专 业

导 师 姓 名、职 称

完 成 时 间

















目 录

摘 要 Ⅰ

ABSTRACT Ⅱ

1 引言 1

2 需求分析 1

2.1 任务概述 2

2.2 实现目标 2

2.3 用户需求分析 2

3 系统开发环境 3

3.2 JSP技术 4

3.3 Servlet 技术 5

3.4 JavaBean 技术 5

3.5 MVC设计思想 6

4 系统结构设计 6

4.1 总体结构设计 6

4.2 图书管理员操作示意图 7

4.3 数据库设计 7

5 功能模块详细设计及实现 13

5.1 图书管理模块 13

5.2 借阅管理模块 16

5.3 系统设置模块 20

5.4 读者管理模块 22

6 系统测试 22

6.1 引言 22

6.2 测试计划 22

6.3 测试用例 23

结 论 31

参考文献 32

致 谢 32



摘 要

本课题根据当前我国图书管理多数采用人工管理的现状以及即使采用了计算机图书管理系统却不能完全满足本单位图书管理的需要的实际情况出发,对图书管理业务经过详细的系统调查,开发出的操作简单而且方便实用的一个图书管理系统。本系统使用MyEclipse为开发工具,开发工具包采用JDK Version 1.6版本,系统用Access数据库。本系统采用简单的实现工具和环境,主要是为了体现JSP、Servlet、和JavaBean三种技术的运用。本软件的使用全部采用MVC设计模式,JavaBean负责执行特定功能,Servlet实现页面控制转向功能,JSP实现页面显示功能。本系统通过测试,运行稳定,可投入使用。

关键词:图书管理系统;JSP; Servlet;;JavaBean

ABSTRACT

The subject of my book based on the current management of the status of the majority of artificial management and use of the computer even if the library management system can not fully meet the needs of the library management unit of the actual situation We of management business of books. Management operations of the library system through a detailed survey, developed a simple and convenient and practical operation of a library management system The system was developed using the MyEclipse tools, Development Kit version with JDK Version 1.6, System with Access database. The system uses simple tools and environment to achieve, primarily to reflect the JSP, Servlet, JavaBean, and the use of three techniques. The use of the software used in all MVC design pattern, JavaBean is responsible for implementing specific functions, Servlet steering control functions to achieve the page, JSP page display to achieve. The system tested, it’s stable and can be ready for use.

Keywords: Library management system; JSP; Servlet; JavaBean





引言

现在已进入21世纪,在这个崇尚知识的经济时代,更离不开图书,而各种各样的图书名目繁多,不便于管理。需要个管理系统来实现图书馆信息管理功能。

与此相伴随,必有信息技术应用的高速发展。各行各业将面临信息应用研究与发展的大课题以及信息化技术改造的大任务、大工程。而与此不相适应的是我国图书馆信息管理相对滞后,一直以来人们使用传统人工的方式管理信息,这种管理方式存在着许多缺点。

??????? 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。使用传统人工的方式管理存在着许多如下的缺点:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。这样的机制改革势在必行,因为它浪费了许多人力和物力,若实现全面的计算机管理,将会大大减轻工作人员的工作量,提高效率,为读者提供更加全面的服务。科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息 。建立的图书管理系统,要把图书馆的图书管理、读者管理、图书借阅管理等日常管理工作实行计算机统一管理,以提高工作效率和管理水平在启动系统后,首先是登陆界面,根据用户输入判断用户身份是否合法。合法用户分为普通用户和系统管理员,其中,系统管理员拥有所有权限,而普通用户没有用户管理权限。进入读者信息维护界面,可以对读者信息进行添加、删除、修改和查询操作,并且可以遍历记录。进入图书信息维护界面,可以对图书信息进行添加、删除、修改和查询操作,并且可以遍历记录。进入读者借还书界面,可以实现读者借书、还书和查阅读者借阅记录的功能,并在读者借还书时,对相应数据库数据进行修改。系统客户端运行在Windows平台下,服务器可以运行在Windows或Unix平台下。系统还应该有一个较好的图形用户界面。

ervlet(java服务器小程序)是用Java编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的Java类它与协议和平台无关[3]。Servlet是Java技术对CGI的回应。

Servlet带给开发人员最大的好处是它可以处理客户端传来的HTTP请求,并返回一个响应。Servlet是一个Java的类,Java语言能够实现的功能,Servlet基本上都能实现。

Servlet程序在服务器端运行,动态地生成Web页面,与传统的CGI和许多其他类似CGI相比,Java Servlet具有更高的效率,更加容易使用,功能更加强大,具有更好的移植性,更节省投资。

(1)高效:在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销反而超过时间执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。

(2)Model处于中间层,通常用服务端的JavaBean或者EJB实现,JavaBean用来封装业务逻辑,可实现代码的重用,对数据进行处理,如连接数据库代码、显示数据库代码。用户可以将自己的数据保存。[5]



4 系统结构设计

4.1 总体结构设计

根据图书管理需求分析,该系统需要实现图书管理、读者管理、图书管理三大功能。主要包括系统设置、图书管理、读者管理、借阅管理四个模块。其总体结构设计图如图4-1所示:



图4-1 总体结构设计图

4.2 图书管理员操作示意图

本系统的操作都是由管理员来实现的,根据图书管理需求分析,图书管理系统首先需要用户进行登录,设置权限进行登录。其示意图如图4-2所示:

4.2 图书管理员操作示意图

4.3 数据库设计

为了实现图书管理系统永久性地存储数据,这里采用了Access数据库。[6]在Accesss软件中,创建数据库及studentbook作为保存数据的位置,共包含5张表。下面分别给出这些数据表的概要说明级主要数据表的结构。

4.3.1 逻辑结构设计

图书信息(book)表:图书编号,图书名称,图书作者,图书出版社,ISBN号,图书数量;

借阅信息(bookjie))))…

class BookCon{

Connection con = null;

Statement stmt = null;

ResultSet rs = null;

public void jspInit()

{

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 载入驱动程式类别

con = DriverManager.getConnection("jdbc:odbc:stub"); 建立数据库连接

建立Statement变量

stmt = con.createStatement();

}

}

public void Excu(String sql){SQL语句更新

jspInit();

try{

stmt.executeUpdate(sql);

}catch(Exception e){

System.out.print(e.toString());

}

}

获取数据库记录集对象

public ResultSet getRs(String sql) throws SQLException{

jspInit();

try{

rs=stmt.executeQuery(sql);

return rs; }

catch(Exception e){

System.out.print(e);

return null;

}

}

获取可移动数据库记录集

public ResultSet executeQuery(String sql) throws Exception

{

jspInit();

try

{

sql=new String(sql.getBytes("GBK"),"ISO8859_1"); stmt=con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,

java.sql.ResultSet.CONCUR_READ_ONLY);

rs=stmt.executeQuery(sql);

}

catch(SQLException ex)

{

System.out.println("sql.executeQuery:"+ex.getMessage());

}

return rs; }

}

该文件主要封装了连接数据库的功能,SQL语句更新功能,获取数据库记录。

Dbconn.java



class Dbconn

{

String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver"; 载入驱动程式类别

String sConnStr="jdbc:odbc:stub"; 建立数据库连接

Connection conn=null;

ResultSet rs=null;

public Dbconn()

{

try {

Class.forName(sDBDriver);

}

catch(java.lang.ClassNotFoundException e) {

System.out.println("Jdbc_conn():"+e.getMessage());

}

}

public ResultSet executeQuery(String sql) throws Exception

{

try

{

sql=new String(sql.getBytes("GBK"),"ISO8859_1");

conn=DriverManager.getConnection(sConnStr,"dba","sql");

Statement stmt=conn.createStatement(java.sql.ResultSet.

TYPE_SCROLL_INSENSITIVEjava.

sql.ResultSet.CONCUR_READ_ONLY);

rs=stmt.executeQuery(sql);

}

catch(SQLException ex)

{

System.out.println("sql.executeQuery:"+ex.getMessage());

}

return rs; }

}

5 功能模块详细设计及实现

5.1 图书管理模块

图书管理模块包括图书信息的更新和图书信息的查询两部分。其中图书信息的更新包括图书删除、图书添加和图书修改,图书信息的查询,提供一定的查询条件使管理员能够及时地掌握图书信息。以下是其详细设计。

5.1.1 图书查询

在图书馆借书时,需要知道要借阅图书的名称和编号。有时读者对图书信息的了解并不完全,这时需要查询图书的其他相关信息。这里可以根据不同的查询标准进行查询,如图书名称查询、图书编号查询、图书作者查询和图书出版社查询。图书的查询这里只介绍按图书名称查询,其他的查询实现过程基本相同。其实现需要运用MVC设计思想。

图书名称查询页面的代码如下所示:

输入查询数据:mc.jsp

function check()

{ if((document.test.name1.value==null)||(document.test.name1.value.length==0))

{

alert("图书名称为空,请重新输入");

document.test.name1.focus();

return false;

}

return true;

}

将上述页面提交给页面mc1.jsp

查询数据的显示:mc1.jsp

其关键代码如下:



if(name==null)

name="";

byte b[]=name.getBytes("iso");

name=new String(b);

String s="select from book where bookname=''"+name+"''";

ResultSet rs=Li.getRs(s);

if(rs.next()){

rs=Li.getRs(s);

while(rs.next())

{

out.print("
"+rs.getInt(1)+"");

}

}

else{

out.print( "