软件体系结构构

更新时间:2024-01-02 09:19:02 阅读量: 教育文库 文档下载

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

软件体系结构

姓 名:学 号:班 级:院 系:日 期:任课教师:课程报告

陈鹏 软件1W 计算机工程学院 陈晓平

10144103 10 2012.11.18

目录

1 引言............................................................................................................................ 2 1.1编写目的 ............................................................................................................. 3 1.2背景 ...................................................................................................................... 3 1.3定义 ...................................................................................................................... 3 1.4参考资料 .............................................................................................................. 4 2任务概述 .................................................................................................................... 4 2. 1 目标 ..................................................................................................................... 5 2. 2用户特点 ............................................................................................................. 5 3功能需求..................................................................................................................... 5 3.1对功能的规定 ...................................................................................................... 5 3.2对性能的规定 ...................................................................................................... 6 4外部接口需求 ............................................................................................................ 6 4.1用户接口 .............................................................................................................. 7 4.2 硬件接口 ............................................................................................................. 7 4.3 软件接口 ............................................................................................................. 7 4. 4 通信接口............................................................................................................. 7 5质量需求..................................................................................................................... 7 6 数据库........................................................................................................................ 7 7操作............................................................................................................................. 7

1引言

摘要

随着现代科学技术的进步,人类社会正逐渐走向信息化。图书拥有丰富的文献信息资源,是社会信息系统的重要组成部分,在信息社会中的作用愈来愈重要。我国图书计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得以迅速发展,特别是90年代以后,我国图书信息网络建设取得了较大发展,图书信息化建设迈上了一个新台阶。

本文介绍了开发图书管理信息系统的过程。文章介绍了图书管理信息系统的系统分析部分,包括可行性分析、图书借阅流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计,本系统界面友好,操作简单,比较实用。

1.1编写目的

图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重

要阵地。我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。

1.2背景

开发软件名称:图书馆管理系统 项目任务提出者: 项目开发者:陈鹏

用户:系统管理员、操作员、读者

本系统主要利用MyEclipse 6.5语言做前端的应用开发工具,利用Mysql5.0作为后台的数据库,利用Windows XP作为系统平台。

1.3、定义

(1)系统:图书馆管理软件

(2)图书信息:图书的基本信息,包括书名、图书编号、作者、出版社、索书号、库存数量以及库存位置等,以供于读者查阅。

(3)借书记录:包括借阅者的姓名、班级、借书卡ID号以及所借图书的书名、借书日期等

(4)借阅规则:对不同的借阅者有不同的规定借阅图书数量和借阅时间,对不同的违章情况有不同的罚款措施。

1.4参考资料

教材:软件体系结构原理/实践与方法 张友生 等 清华大学出版社 2008 2. 参考书籍

? 软件体系结构(第2版) 张友生 等 清华大学出版社 2006-11

? 软件构架实践(第2版)(SOFTWARE ARCHITECTURE IN

PRACTICE,SECOND EDITION) (美)LEN BASS,PAUL CLEMENTS,RICK KAZMAN 清华大学出版社 2004-3

? 软件体系结构 :(美)MARY SHAW;DAVID GARLAN 牛振东 江鹏

金福生等编译 清华大学出版社 2007-3-1

? 大型软件体系结构:使用UML实践指南 作者:(美)JEFF GARLAND

RICHARD ANTHONY 译 者:叶俊民 汪望珠 电子工业出版社 2004-3

? 软件架构设计 温昱 电子工业出版社 2007-3

? 面向模式的软件体系结构 卷1:模式系统 Frank Buschmann, Regine

Meunier, Hans Rohnert, Peter Sornmerlad, Michael Stal著, 1996. 译者:贲可荣 郭福亮 等)

3. 参考课程网站

? http://125.71.228.222/wlxt/ncourse/72231330/web/website/sadp/index.html 电子

科技大学 软件体系结构与设计模式

? http://210.42.106.79:8080/course/index.htm 华中科技大学 软件体系结构

4.参考网站

? 豆丁网 http://www.docin.com/

?

维普资讯 http://www.lib.whpu.edu.cn/asp/esource/detail.asp?did=195

?

万方数据资源系统 http://www.lib.whpu.edu.cn/asp/esource/detail.asp?did=262

2任务概述

2. 1 目标

实现题目所要求的系统功能

? ?

图书检索系统:通过图书证读者可以进行查询图书馆书目

图书管理系统:管理员可以通过此系统对书进行借出登记、增加/删除新书、查询书目信息

2. 2用户特点

图书馆信息管理系统的用户有三种:图书管理员,操作员,读者。

1)系统管理员:具有最高的权限,可以执行本系统的所有操作,如:对用户的增删,各种资料的修改,各种条件下的查询和对数据库的各种操作。

2)操作员:只有很小的权限,代理用户办理借书卡、借阅图书,对图书馆进行一些日常的维护。

3)读者:可以使用系统的部份功能,如:对图书馆图书信息进行各种条件下的查询。

3功能需求

3.1对功能的规定

制作的图书管理系统对系统支持和支持的并行操作用户指标作出以下规定:图书馆客户端的台数:200台 系统支持的终端书:3个 支持的并行操作用户指标:>200

3.2对性能的规定 3.2.1精度

鉴于图书馆数量的要求,输入输出的精度应控制在0.01

4外部接口需求

4.1用户接口

1)对系统各个功能模块,以分级菜单的形式给出;

2)所有的提交,确认,删除等操作以按钮的形式给出,且名称一律为取为“提交”、“确认”、“删除”等易于理解的形式;

4.2 硬件接口

由于管理人员需要打印各种图书、读者信息报表,所以系统应该与打印机接口匹配。

4.3 软件接口

4. 4 通信接口

支持局域网协议

5质量需求

根据各类读者统计信息计算,系统在正常情况下应该支持200以上的并行操作能力,高峰期间读者要进行集中查询图书信息,应支持100以上并行处理能力;高峰期间服务器端应支持500次以上的日访问量。

6数据库

鉴于图书馆管理系统涉及的数据对于图书馆的日常管理的重要性,数据库应提供严格的输入检测,出错恢复机制;数据必须一个每天进行一次备份,由于本信息涉及信息量巨大,应以天为周期进行增量备份,以季度为周期进行海量备份。

7 操作

操作应该简单易行,各个功能模块界面风格统一 。

概要设计说明书

2总体设计

2.1需求规定

按照需求分析文档中的规格要求,使用条形码扫描进体统,从而进行借书、还书,

2.3基本设计概念和处理流程

用户注册表用户信息表学生信息表教师信息表图书表借阅表借书表期限表

3.1数据库设计

注册表(卡号(PK),用户名,密码,班级或部门,性别,角色,登记日期,审核情况)

学生(学号(PK),用户名,卡号(FK),班级,所在系,性别,借书次数,

登记日期)

教师表(教师编号(PK),用户名,卡号(FK),职称,所在系,部门,性别,角色,借书次数,登记日期)

图书表(图书编号(PK),书名(FK),类别,作者,出版社,出版日期,图书总数,现存数量,借出数量)

借书表(图书编号(PK), 书名,卡号(FK),用户名,借书本数,借出日期,应还日期,角色,审核情况)

还书表 (卡号(PK), 用户名,图书编号(FK),书名,登记日期,角色,审核情况)

期限表(图书编号(PK),书名,角色,借出日期,应还日期,天数)

3.2、图书管理的数据库表结构

学生注册表(StuRegister)结构 列名 含义 数据类型 Char(10) Varchar(4) Char(6) Char(2) Datetime Char(4) 是否为空 N N N 约束 PK ?男?或?女? 默认值 备注 Check约束 Card_ID UsrName Class Gender RgDate UsrPass 卡号 用户名 班级 性别 登记日期 审核情况 通过或不通过 学生信息表(student)结构: 列名 含义 数据类型 Char(10) Varchar(4) Char(10) Char(6) Char(8) Char(2) Int(50) Datetime 是否为空 N N N N 约束 PK ?男?或?女? 默认值 备注 Check约束 Stu_ID Stu_Name Card_ID Class DeptCode Gender 学号 用户名 卡号 班级 所在系 性别 Brbk_times 借书次数 RgDate 登记日期

参考借阅表 教师注册表(TechRegister)结构 列名 含义 数据类型 Char(10) Varchar(4) Char(10) Char(6) Char(2) Datetime Char(4) 是否为空 N N N N 约束 PK ?男?或?女? 默认值 备注 Check约束 Card_ID UsrName Usrpwd Departmen Gender RgDate UsrPass 卡号 用户名 密码 部门 性别 登记日期 审核情况 通过或不通过

教师信息表(teacher)结构: 列名 含义 数据类型 Char(10) Varchar(4) Char(10) Char(6) Char(8) Char(6) Char(2) Int(50) Datetime 是否为空 N N N N 约束 PK FK ?男?或?女? 默认值 备注 Check约束 Tech_ID Tech_Name Card_ID Tech_Title DeptCode Departmen Gender 教师编号 用户名 卡号 职称 所在系 部门 性别 Brbk_times 借书次数 RgDate 登记日期 图书表(Book)结构表: 列名 含义 参考借阅表 数据类型 Char(10) Int Char(30 Char(8) Int Datetime Int Int Int 是否为空 N N N N N 约束 PK FK ? 默认值 备注 Bk_ID Bk_Name Bk_Style BK_Author Bk_Press Bk_Pressdate BkTotalNum Bk_RemainNum Bk_BrNum 图书编号 书名 类别 作者 出版社 出版日期 图书总数 现存数量 借出数量 001 参考借阅表 借书表(bkborrow)表结构: 列名 含义 数据类型 是否为空 约束 默认值 备注 Bk_ID Bk_Name Card_ID UsrName Brbk_Num Lendbkdate Bkdate 图书编号 书名 卡号 用户名 借书本数 借出日期 应还日期 Char(10) Varchar(4) Char(10) Int Int Datetime Datetime N N N N PK FK Role UsrPass 角色 审核情况 Char(4) Char(4) N 借出时间+期限表.天数 学生或教师 通过或不通过 还书表(hsb)结构表: 列名 含义 数据类型 Char(10) Varchar(4) Char(10) Int Datetime Char(4) Char(4) 是否为空 N N N N 约束 PK FK 默认值 备注 Card_ID UsrName Bk_ID Bk_Name RgDate Role UsrPass 卡号 用户名 图书编号 书名 登记日期 角色 审核情况 学生或教师 通过或不通过 期限表(Time_Limit)表结构: 列名 含义 数据类型 Char(10) Int Char(4) Datetime Datetime 是否为空 N N 约束 PK 默认值 备注 Bk_ID Bk_Name Role Lendbkdate Bkdate 图书编号 书名 角色 借出日期 应还日期 学生或教师 Over_Day 逾期天数 图书编号 书名 逾期天数 Int Char(10) Int Datetime N N N PK 借出时间+期限表.天数 Bk_ID Bk_Name Over_Day

3.3、系统各模块具体功能设计概要说明

根据系统需求分析将用户分为不同权限得到如下的具体功能设计: 功能名称 1.登录认证 2.读者可使用 功能 1 2.1 2.2 2.3 2.4 2.5 3.图书借阅管理员可使用功能 4.图书入库管理员可使用功能 1、 登录认证: ①登录需要用户名和密码,只有用户名和密码同时正确,才可进入系统;如果登录信息有错则提示相应出错信息。 ②管理员和读者公用一个登录页面,根据用户名不同来区分是管理员还是读者

注:如果用户试图不通过登录认证而直接进入系统,则强制其先进入登录认证页面进行

登录

2、读者可使用功能

在登录认证为读者身份后进入读者操作页面

①检索图书:可根据图书ID、名字、作者、出版社、类别ID进行检索,并可两两以“或”

或“和”方式任意组合来检索,并支持模糊查询和精确查询。检索到满足条件的图书列表后,可点击相应图书来查看此图书的详细信息。

②查询本人基本信息:可查看读者的注册时填写的所有基本信息。 ③查询本人借阅历史:可查看本人六个月内和一年内的详细借阅历史。

④查询未还书:可查看本人未还的书籍信息,包括借阅时间、应还日期等。

⑤修改密码:可修改读者本人密码,修改密码时要进行旧密码验证,同时两次输入新密码,全部正确之后才可以进行密码修改。

3、图书借阅管理员可使用功能

在登录认证为图书借阅管理员后进入图书管理员管理页面

①检索图书:可根据图书ID、名字、作者、出版社、类别ID进行检索,并可两两以“或”

3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 功能编号 登录(index.jsp) 检索图书(searchBookR.jsp) 查询借阅历史(borrowHistoryR.jsp) 查询未还书(notReturn.jsp) 查询读者基本信息(ShowReaderInfo.jsp) 修改密码(ModifyReaderPsw.jsp) 检索图书及相应的图书信息(searchBook.jsp) 检索读者信息,包括借阅历史等(searchReader.jsp) 查询未还图书(BookNR.jsp.jsp) 读者借阅图书办理(borrowBook.jsp) 读者还书办理(ReturnBook.jsp) 图书挂失处理(lossBook.jsp) 图书入库操作(BookRegister.jsp) 图书基本信息修改(ModifyBook.jsp) 简要说明 或“和”方式任意组合来检索,并支持模糊查询和精确查询。检索到满足

条件的图书列表后,可点击相应图书来查看此图书的详细信息

②检索读者:可根据读者ID、用户名进行检索,可两两以“或”或“和”的方式任意

组合来进行检索,并支持模糊查询和精确查询。检索到满足条件的读者后,可点击相应连接来查询读者的详细基本信息和六个月之内或一年之内的详细借阅历史以及未还书列表。

③查询未还图书:查询所有未还的图书列表,列表中包括借阅图书的读者ID、图书ID、借阅时间。

④读者借阅图书办理:根据读者ID和图书ID办理借阅,不同会员级别借阅期限不同。

借阅成功则插入相应记录到数据库借阅表,系统自动为此条记录分配ID。

⑤读者还书办理:根据读者ID和图书ID办理还书业务。还书成功则修改借阅表中的相应字段为已换。同时,对逾期还书的读者进行罚款处理。 ⑥图书挂失处理:根据读者ID和图书ID办理图书挂失业务,挂失成功则修改借阅表中相应字段为挂失状态,同时,对挂失读者进行罚款处理。 4、图书入库管理员可使用功能:

①图书入库操作:录入图书详细信息,系统自动为图书分配ID,操作成功后将相应信

息插入数据库中图书表

②图书基本信息修改操作:根据图书ID查询到图书的详细信息后对相应信息进行修改,

并修改数据库图书表中的相应记录。

4 系统结构设计

4.1 总体结构设计

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

图书管理系统 系统设置 图书管理 读者管理 借阅管理 图书信 管理员登录 修 改 用 户 密 添 加 新 用 户 图 书 添 加 图 书 删 除 图 书 修 改 息更新 图书信 息查询 读者信 息更新 读者信 息查询 借 书 管 理 还 书 管 理 借 阅 过 期 图 书 查 询 读 者 添 加 读 者 删 除 读 者 修 改 读 者 查 询 4.2 图书管理员操作示意图

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

按学号查询 读者管理 借阅管理 图书管理 按书目查询 读者姓名 读者学号 读者班级 按借阅证号查询按书名分类 按作者分类 按出版社分类

4.3 数据库设计

为了实现图书管理系统永久性地存储数据,这里采用了Access数据库。[6]

在Accesss软件中,创建数据库及studentbook作为保存数据的位置,共包含5张表。下面分别给出这些数据表的概要说明级主要数据表的结构。 4.3.1 逻辑结构设计

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

借阅信息(bookjie)表:图书编号,图书名称,借阅数量,借书人名称 借书日期,借阅证号码;

借阅证信息(jie)表:借阅证编号,学生学号,学生名称,学生院系; 图书管理员(librian)表:管理员名称,管理员密码; 系统管理员(manager)表:管理员名称,管理员密码。 4.3.2 物理结构设计

(1)book表

book表主要用来保存图书的基本信息。添加和删除图书等操作采用的数据主要依据该表信息。表book的文字说明如表所示: 字段名 数据类型 是否允许空 备注 bookid bookname bookauthor bookpublish bookISBN bookshu 自动编号 文本 文本 文本 文本 文本 否 否 否 否 否 否 编号 名称 作者 出版社 ISBN号 数量 (2)bookc表 bookc表主要用来保存学生的借阅信息。借书和还书等操作采用的数据主要以依据该表信息。表bookc的文字段说明如表所示: 字段名 数据类型 是否允许空 备注 bookid booktitle bookstatus studentname bookdate studentid 文本 文本 文本 文本 日期/时间 文本 否 否 否 否 否 否 编号 名称 借阅数量 借书人名称 借书日期 借阅证号 (3)jie表 jie表主要用来保存学生的借阅证信息。添加借阅者和删除借阅者等操作采用的数据主要依据该表信息。表jie的字段说明如表所示: 字段名 数据类型 是否允许空 备注 studentid stuid stuname studept 自动编号 文本 文本 文本 否 否 否 否 借阅证编号 学生学号 学生名称 学生院系 (4)Liabrian表

Liabrian表主要用来保存图书管理员的用户名和密码。添加管理员、删除管理员和修改密码等操作采用的数据主要依据该表信息。表Liabrian的字段说明如表所示: 字段名 数据类型 是否允许空 备注 name password 文本 文本 否 否 管理员名称 管理员密码 (5)manager表 manager表主要用来保存系统管理员的用户名和密码。添加系统管理员、删除系统管理员和修改密码等操作采用的数据主要依据该表信息。表manager的字段说明如表4-5所示: 字段名 数据类型 是否允许空 备注 name password 文本 文本 否 否 管理员名称 管理员密码 4.3.3 数据库访问 JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用 Java语言编写的类和接口组成。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统。[7]

本系统用JDBC来访问、操作数据库的。JDBC可以实现三个功能:与数据库建立连接、向数据库发送SQL语句,获取并处理结果集。

Connection对象代表与数据源进行的唯一会话。如果是客户端/服务器端数据库系统,则该对象可以等价于到服务器的实际网络连接。在开发图书管理系统的过程中,会进行添加、删除和获取数据库记录集等操作,而这些操作经常需要连接数据库。本软件采用了一个类将连接数据库和常用的数据库操作进行了封装。实现封装数据库的功能关键代码如下: class BookCon{

Connection con = null; Statement stmt = null; ResultSet rs = null; public void jspInit() { try {

Class.forName(\//载入驱动程式类别 con = DriverManager.getConnection(\//建立数据库连接

//建立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(\

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(\ }

return rs; } }

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

class Dbconn {

String sDBDriver=\//载入驱动程式类别 String sConnStr=\//建立数据库连接 Connection conn=null; ResultSet rs=null;

public Dbconn() {

try {

Class.forName(sDBDriver); }

catch(java.lang.ClassNotFoundException e) {

System.out.println(\ } }

public ResultSet executeQuery(String sql) throws Exception {

try {

sql=new String(sql.getBytes(\

conn=DriverManager.getConnection(sConnStr,\ 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(\ }

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(\ name=new String(b);

String s=\ResultSet rs=Li.getRs(s); if(rs.next()){ rs=Li.getRs(s); while(rs.next()) {

out.print(\} } else{

out.print( \Lanuage='JavaScript'>window.alert('要查找的记录不存在')\

out.print( \Lanuage='JavaScript'>window.location ='mc.jsp'\

}%>

在上述mc1.jsp文件中引入了JavaBean.java文件BookCon.java完成数据库连接和获取指定记录集对象。在下面获取mc.jsp页面是提交图书名称,并进行中文字符飞判段。创建变量sql进行语句查询,如果查询到该记录,则显示该信息,否则显示出错。

相应JavaBean 代码如下:

public ResultSet executeQuery(String sql) throws Exception //获取记录对象集 {

jspInit(); try {

sql=new String(sql.getBytes(“GBK”),

\

stmt=con.createStatement(java.sql.ResultSet.TYPE_SCROLL_

INSENSITIVE,java.sql.

ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql); }

5.1.2 添加图书信息

添加图书操作的实现非常简单,在jsp页面中输入图书信息后,转交给Servlet文件,Servlet文件调用相应的JavaBean处理。处理完毕后,显示成功信息。

1、模型( JavaBean ) book.java ?

public void newBook(){//添加图书 String sql=”insert into book(bookname,bookauthor,bookpublish,bookISBN,bookshu) values

('\bookshu+\

System.out.print(sql); BookCon bc=new BookCon(); bc.Excu(sql); }?

2、控制器:(Servlet)

通过Servlet文件控制页面转向。

if(qq.trim().equals(\ out.print(\

String bookname=request.getParameter(\ String bookauthor=request.getParameter(\ ?

Book b=new Book();

bookname=getS(bookname);

bookauthor=getS(bookauthor); ?

b.setBookname(bookname);b.setBookauthor(bookauthor); b.setBookpublish(bookpublish);b.setBookISBN(bookISBN); b.setBookshu(bookshu); b.newBook();

out.print( \Lanuage='JavaScript'>window.alert('图书创建成功')\

out.print(\Lanuage='JavaScript'>window.location ='createBook.jsp'\ } 3、视图( JSP)

添加图书页面显示:Creatjie.jsp function check()

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

alert(\学号为空,请重新输入\ document.test.name1.focus(); return false;

}?

通过上述JavaBean的编辑,实现图书添加的具体操作。

图书的删除与修改功能的实现与添加图书功能的实现方法是一样的。

5.2 借阅管理模块

借阅管理是图书管理系统要实现的主要模块。在该模块中,图书管理员需要进行借书、还书和查阅过期者等操作。图书管理员进入该模块,需要有相应的用户名和密码。要实现这些功能,主要应用MVC设计思想。首先用JavaBean文件来封装特定功能的Java类。用一个JavaBean文件来完成借书、还书等操作。这些操作在JavaBean中需要通过方法来实现。其次,要控制客户端页面提交的请求,并转到相应的JavaBean进行处理,需要Servlet文件。Servlet文件根据客户端页面提交的值,判断不同的JSP页面。 5.2.1 借书管理

在该模块中,借书操作是其主要操作。图书管理员根据学生提供的借阅证信息和图书信息,执行借阅操作。要显示借阅操作界面,应在JSP页面中输入借书信息,然后由程序控制转交给Servlet文件LibrbianServlet.java,Servlet文件根据提交请求调用相应的JavaBean处理。 1、模型( JavaBean)

JavaBean 文件通常好似封装特定功能的Java类。在本模块中提供了一个JavaBean文件,用来完成借书、还书等操作。这些操作在JavaBean中是通过方法来实现的。 关键代码如下: ?

public void insertjie(String str1,String str2,String str3,String str4){

SimpleDateFormat formatter = new SimpleDateFormat (\ String Add_time = formatter.format(new java.util.Date()); String sql=\into bookc values('\)\

BookCon bc=new BookCon(); bc.Excu(sql); }

2、控制器(Servlet )

控制客户端页面:LibrbianServlet.java if(qq.trim().equals(\ try{

String jieid=request.getParameter(\String jiename=request.getParameter(\

jiename=getS(jiename);

booktitle=getS(booktitle); Librbian l=new Librbian();

if(l.findBook(bookid,booktitle)){

l.insertjie(jieid,jiename,bookid,booktitle); out.print(\借书操作成功\

out.print(\查看借书情况\ else{

out.print( \请确认书的编号,名称')\ out.print( \Lanuage='JavaScript'>window.location ='Librbianyan.jsp'\ } ?

3、视图(jsp)

借书页面显示:jieBook.jsp function check()

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

alert(\借阅证号为空,请重新输入\ document.test.name1.focus(); return false; }

return true; }

该文件主要实现借书信息的输入。执行借书操作时,需要对借阅证进行校验,如果校验成功就执行借书操作,否则需要重新输入图书证号。在该页面中,表单信息提交给Librbianyan.jsp。 校验功能实现:Librbianyan.jsp if(rs.next()) {

String ss=\count(*) from bookc where

studentname='\

ResultSet res=Li.getRs(ss); res.next();

String sss=res.getString(1);

int ii=Integer.parseInt(sss); int iii=3-ii;

out.print(\现在你已经借了\本,还可以借\本\ }?

该操作主要完成借阅证的数据库验证,如果该借阅证存在并与学生姓名符合,则检验该学生借阅图书的数量,如果超过三本,则不允许借阅。上述条件都

满足后,才能执行借书操作。在该页面中输入借书信息后,提交给Servlet文件LibrbianServlet.java。

5.3登录模块程序设计

本模块主要是用户通过图书管理系统的首页登录进入该系统。用户输入正确的用户名和密码,系统会根据用户的身份进行相应权限划分;如果登录信息有错误,则系统提示登入错误的信息,并且禁止系统用户进行任何操作。

图4.1 图书管理系统登录首页

用户在登录页面写好用户名和密码,选择登录,登录成功则跳转到系统的首页,否则提示错误信息。进行用户身份验证的程序流程图如图4.2程序流程图所示

图4.2用户登录流程图

实现此登陆模块的类与方法:

此模块命名为Login,继承了JFrame类,并实现ActionListener接口,使用JComponent的子类JPanel作为容器,以便加入GUI组件,实现ActionListener接口中的actionPerformed方法,在构造函数中进行了容器及相应标签和按钮等的布局,并针对相应的组件调用事件相应的方法。

系统管理模块的实现

系统管理模块的功能主要是添加用户和用户密码管理,管理员在添加用户时,要求输入的数据有:用户证件号,用户密码,用户姓名和用户身份。为了保证系统的安全和数据的完整性,维护系统用户的个人利益,在设计和实现系统管理模块时,针对不同的用户设定了不同的使用权限和长度不同的密码。添加用户

流程与读者管理模块中的添加读者信息流程类似,其流程将在读者信息管理模块中介绍。

书籍信息管理模块的实现

书籍信息管理模块的主要功能是添加书籍种类信息,添加借书信息和书籍信

息查询。添加书籍种类信息时,输入书籍类别编号,书籍类别名称,关键词和备注信息。添加书籍信息时,需要输入作者、主题词、索取号、出版号、ISBN号、ISSN号、订购号、分类号、丛书号和是否借出等消息。添加书籍种类信息流程和添加书籍信息的流程与读者信息管理模块中的添加读者信息的流程相似。

书籍信息查询功能是为了使读者更好的了解图书馆或资料室所收藏的图书信息,方便读者对图书资料的使用。在设计和实现书籍信息查询功能时,为了使图书管理员或读者查询书籍信息更加方便,在书籍查询界面上设置了一个列表框和一个对话框,在读者查询书记信息时,可以根据查询书籍的属性在列表框中选择书籍的某一个属性,然后在对话中中输入索要查询的具体的名称。例如:读者想要查询某位读者的书籍,可以在列表框内选择“作者”,然后在对话框中输入“作者的名字”,点击查询按钮后,系哦他能够根据符合条件的书籍信息以表格的形式输出在查询界面上。

书籍信息查询流程如图

书籍信息查询流程图

读者信息模块的实现

读者信息管理模块的主要功能有:添加读者种类信息,添加读者信息和查询读者信息。

在实际的图书信息管理业务中,系统管理员要根据读者的请求和管理信息业务的需要向数据库添加读者种类的消息和读者信息,并根据读者的种类来确定读者的借书量和占有图书的时间。在设计与是实现的过程中添加读者信息功能时,考虑到管理员可能会输入错误和添加记录存在的问题,因此在实现这一过程中,加入了纠察机制。当出现这些问题时,系统会及时的给出提示,以免出现相同的功能。另外,系统还设计与实现了连续添加功能,删除功能和连续查看读者记录功能,使管理员在添加读者信息后可以选择逐条查看记录,核对所添加的记录以及记录进行了管理删除管理。

1, 图书借阅数据处理内部逻辑

If(strEdit.equals(“1”)){

If(学生超额|学生不存在){ ifSuccess=false;

}else{ If(!bb.IsValid(hash)){ //新增操作

Int intdel[]=bb.addBorrow(hash); If(intdel==null){

ifSuccess=false; }else{ For(int i=0;i

}

}

If(!ifSuccess){ %><% }else{ %><% }

}

执行的过程如下:

}

%><% If(intdel[i]!=1) ifSuccess=false;

首先要验证学生信息是否存在和学生的欠款是否超额,也就是说学生是否可以借书,图书是否在馆等,在 确定合法之后调用bb.addBorrow(hash)来完成借阅流程。流程其实就是对几个表进行增改的操作。

关于addBorrow(hash)的算法:

public int[] addBorrow(Hashtable hash)

{

System.out.println(\批量处理新增借阅。。。。。。\String sql=\

int intID = makeID(\

String strID=String.valueOf(intID);

String strZJH = ds.toString((String)hash.get(\证件号 String strTXM = ds.toString((String)hash.get(\条形码 String strJYSJ = ds.toString((String)hash.get(\借阅时间 String strXSID = \学生ID String strBOOKID = \图书ID String strDQSJ = \到期时间 String strXJCS = \续借次数

//根据学生证件号取的学生ID

//根据学生ID取得规则ID,然后取得可以借阅天数,

sql=\ +\

+\Hashtable hashReId=(Hashtable)searchOneData(sql); strXSID=ds.toString((String)hashReId.get(\

String strKJYSJ=ds.toString((String)hashReId.get(\//根据条形码取得图书ID

Hashtable hashBKID=(Hashtable)searchOneData(sql);

strBOOKID = ds.toString((String)hashBKID.get(\ //新增操作 createStatement(); clearBatch();

sql=\

+\

sql=\

+\

+\

addBatch(sql);

sql=\借出' where BOOKID=\

addBatch(sql);

sql=\addBatch(sql);

int result[]=executeBatch(); closeStm(); return result;

}

而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String id)来取消借阅操作;算法如下:

public int[] delBorrow(String id)

{ }

System.out.println(\批量处理取消借阅。。。。。\String sql=\

sql=\Hashtable hash=(Hashtable)searchOneData(sql); String strBOOKID=(String)hash.get(\ createStatement(); clearBatch();

sql=\ addBatch(sql);

sql=\可借' where BOOKID=\addBatch(sql);

int result[]=executeBatch(); closeStm(); return result;

addBatch(sql);

sql=\addBatch(sql);

int result[]=executeBatch(); closeStm(); return result;

}

而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String id)来取消借阅操作;算法如下:

public int[] delBorrow(String id)

{ }

System.out.println(\批量处理取消借阅。。。。。\String sql=\

sql=\Hashtable hash=(Hashtable)searchOneData(sql); String strBOOKID=(String)hash.get(\ createStatement(); clearBatch();

sql=\ addBatch(sql);

sql=\可借' where BOOKID=\addBatch(sql);

int result[]=executeBatch(); closeStm(); return result;

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

Top