资源描述
图书馆借阅系统详细说明书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
图书借阅管理系统
详细设计说明书
北京交通大学计算机与信息技术学院
思源0802 刘作鸣 08274046
2010 年12月10 日
目录
1 引言 3
1.1 编写目的 3
1.2 背景 3
1.3 定义 3
1.4 参考资料 4
2 系统运行主体说明 4
2.1 主体分类 4
2.2 主体描述 4
3 程序系统的结构 5
Ø 3.1 系统整体结构关系图 5
Ø 3.2 子模块关系图 6
4 系统功能描述 7
Ø 4.2 连接数据库模块详细设计 10
4.4 数据字典 18
5 未解决的问题 19
1 引言
1.1 编写目的
图书借阅管理系统是根据图书馆图书借阅的需求进行编写的。是为了图书管理员能够更方便的进行管理和读者对图书及自己借阅信息查询的快捷。对于用户实现 1)查询图书的各种信息2)查询本人的借阅信息;对于管理员实现1)查询图书的各种信息2)查询读者的各种信息3)图书入库4)办理借书证5)图书借阅和归还6)逾期未还处理7)挂失处理而编写的。此设计说明书对系统的设计框架和实现的所有功能进行了详细的阐述,以指导用户高效的使用本系统,同时也为系统的二次开发作为参考。
1.2 背景
本图书借阅管理系统是采用JSP 技术在给定需求的情况下直接进行软件各项功能的开发。对于系统的基本功能,自行设计其结构并进行实现。总的来看,项目属于数据库系统的高级应用开发。任务由需求方即北京交通大学计算机学院提出,由我方即北京交通大学计算机系学生负责开发实现,通过相应的开发环境从而根据给定的具体的需求而完成项目。通过实现本系统对于计算机系得学生能够了解更多的关于项目开发的具体的流程以及具体的实现方面法,特别学习和掌握具有实际应用价值的项目的开发过程,为今后从事实际的开发工作奠定基础。
本饭店前台采用 B-S 结构设计模型,后台程序采用JSP 编写操纵MY SQL 小型数据库,
客户机可以通过浏览器对系统进行浏览与相应的操作。
1.3 定义
1. B-S:即Brower/Server,浏览器/服务器,客户机上只需装有一个浏览器即可,服务器
装有相应的数据库,通过web Server 进行数据的交换等操作
2. JSP:JavaServer Page 动态网页标准
3.MY Eclipse:一种软件开发工具
4. JDBC:Java DataBase Connectivity
5: My-Sql: MySQL 是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB 公司。
1.4 参考资料
《精通 JSP》
《JSP 网络编程》
《JSP 数据库编程》
《Java 语言导学》
2 系统运行主体说明
2.1 主体分类
本系统中运行主体包括以下内容:图书馆管理员及读者(系统的主要使用者)。
2.2 主体描述
2.2.1 用户
2.2.1.1 用户定义
客户是所有使用本平台应用的使用者,也可称为用户,是本系统的服务对象。在系统或
相关文档中提到的用户,均视同为客户。
2.2.1.2 用户分类
客户按照群体进行分类可分为企业客户(包括企业、事件、政府机关等单位)、集团客
户(包括家庭用户和由个人组成的非企事业和政府机关的群体)、个人客户。其中企业客户和集团客户可以建立多个子客户,个人客户则为唯一客户。
JSP 图书馆借阅系统面向的主要的客户是图书馆管理员及馆内读者也即中小型集团用户。
2.2.1.3 用户的管理
客户的管理即用户的管理,图书馆借阅系统是一个独立的系统,系统设有固有管理员账号,
用户通过该账号可建立读者的账号。
管理员账号可以进行1)图书的添加和删除2)帐号的添加和删除工作3)图书和账号信息的查阅4)图书证的遗失登记5)图书的归还出借登记;读者帐号则主要是按照需求完成账号相关借阅信息和图书信息的查询。
3 程序系统的结构
详细说明:
功能名称
功能描述
增加读者账号
向数据库内插入读者权限账号
登记遗失账号
从数据库中删除遗失了的读者账号
增加图书
向数据库中插入新的图书信息
登记读者借阅信息
向数据库中插入读者账号借阅图书的信息
删除读者借阅信息
从数据库中删除读者账号借阅图书的信息
读者信息查询
查询各个读者账号的信息
图书信息查询
查询各类图书的信息
欢迎界面
系统登录
角色识别
功能调用
连接数据库
数据信息维护模块
前台结果显示
数据信息浏览模块
Ø 3.1 系统整体结构关系图
Ø 3.2 子模块关系图
3.2.1 子模块间关系图一
系统登陆和角色识别关系图
输入密码
登录角色选择
显示登录失败
页面显示登录成功
否
是
密码输入是否正确
重新输入
操作参数是否合法
页面功能选择
执行相应操作
主页面输出结果
3.2.2 子模块间关系图二
否
是
Ø 3.3 系统界面
图书馆借阅系统界面使用 JSP 生成,编写css文档及left,header,footer文档采用同一的背景风格:功能菜单为浅灰色,页面头部为深灰色,页面背景颜色为蓝色,简洁大方。设有欢迎界面,左侧页面中包含角色选择及所有的功能设置。点击相关功能按钮即可进入相应的功能页,功能页根据所需信息设置相关的表单项。集合类型的信息采用下拉列表或者信息按钮的方式进行输入。设计到日期等信息的输入框采用控件的形式输入。结果一般采用表格的形式输出。
4 系统功能描述
Ø 4.1 登陆模块详细设计
4.1.1 功能描述
此模块主要功能是提供用户角色识别和登陆控制,通过登陆不同类型的帐号可以进行不
同权限功能的操作。
4.1.2 功能界面
4.1.2.1欢迎界面
4.1.2.2功能界面
4.1.2.2.1读者登录界面
输入正确的读者姓名和id就会显示出该读者的信息表示登陆成功:
输入错误的则返回,不会出现任何信息。
4.1.2.2.2 管理员登陆界面
当输入正确的用户名及密码,即会在登陆框下方的页面框显示如下登陆信息:
输入错误的则会出现:
4.1.3 详细设计
登陆模块部分,系统的初始状态采用内建帐号的模式,内建管理员账号,建立唯一管理员,管理员可以增加读者帐号。登陆后,根据不同的角色可以获得不同权限的操作。
设计时,初始的管理员帐号为root,密码为1。存储读者账号的表如下所示,在登陆时验证读者号与读者姓名是否一致:
表名
Readers
列名
说明
类型定义
空/非空
约束条件
reader-id
读者id
varchar(5)
非空
主键,唯一
reader-name
读者姓名
varchar(20)
非空
sex
性别
varchar(2)
birthday
出生年月
Date
phone
电话
Int
mobile
移动电话
varchar(11)
card-name
证件类型
varchar(8)
card-id
证件号
varchar(18)
level
读者等级
varchar(6)
day
申请日期
Date
补充说明
用来存放读者的相关信息
4.1.4 性能要求
要求:
l 登陆帐号及密码要通用,易用,便于记忆和输入。
l 登陆的时间上要求要尽可能的快,应该在用户可以接受的时间范围内。
Ø 4.2 连接数据库模块详细设计
4.2.1 功能描述:
数据库连接采用 JDBC 中间件实现,连接数据库的部分放于每个需要进行连接的jsp页面中,下面为测试代码和放于每个页面进行数据库连接的相应的功能代码和说明如下:
package com.data;
import java.sql.*;
public class Connectdb {
private Connection conn ;
private Statement stm;
private ResultSet rs;
public Connectdb() {
super();
//连接数据库
try {
this.conn = DriverManager.getConnection("jdbc:mysql:127.0.0.1:3306/bookmis", "root", "1");
this.stm = conn.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ResultSet executeQuery(String sql){
try {
this.rs = this.stm.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//通用的sql语句执行
return this.rs;
}
/**
* @return the conn
*/
public Connection getConn() {
return conn;
}
/**
* @param conn the conn to set
*/
public void setConn(Connection conn) {
this.conn = conn;
}
/**
* @return the stm
*/
public Statement getStm() {
return stm;
}
/**
* @param stm the stm to set
*/
public void setStm(Statement stm) {
this.stm = stm;
}
/**
* @return the rs
*/
public ResultSet getRs() {
return rs;
}
/**
* @param rs the rs to set
*/
public void setRs(ResultSet rs) {
this.rs = rs;
}
}
在jsp中连接数据库的代码段是:Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookmis", "root", "1");
Statement stm = conn.createStatement();
String sql = "select * from borrow where '"+keyword+"'=borrow.readerid";
ResultSet rs = stm.executeQuery(sql);
4.2.2 性能
要求:
l 要尽可能减少数据操作的次数
l 连接数据库的时间要尽可能的短
l 写入数据库的信息是否安全要加以判断
Ø 4.3 具体功能的模块设计
4.3.1 功能描述
读者用户:
1)查询图书的各种信息
2)查询本人的借阅信息
管理员用户:
1)查询图书的各种信息
2)查询读者的各种信息
3)图书入库
4)办理借书证
5)图书借阅
6)图书归还
7)挂失处理
4.3.2 性能
要求:
l 各项功能实现的操作方便,易用
l 能选择输入的信息尽量选择输入
l 对输入数据的合法性要进行相应的判断
4.3.3 界面描述
读者用户:
1) 查询图书的各种信息页面布局
2) 查询本人的借阅信息页面布局
管理员用户:
1) 查询图书的各种信息页面布局
2) 查询读者的各种信息页面布局
3) 图书入库页面布局
4) 办理借书证页面布局
5) 图书借阅页面布局
6) 图书归还页面布局
7) 挂失处理页面布局
4.3.3 功能模块实现方法描述
l 功能模块需要访问数据库的部分使用
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bookmis", "root", "1");
Statement stm = conn.createStatement();
String sql = "select * from borrow where '"+keyword+"'=borrow.readerid";
ResultSet rs = stm.executeQuery(sql);
l 特定的 SQL 语句均使用String sql 变量进行记录,各部分语句调用举例如下:
图书入库:
String sql = "insert into books (bookid,bookname,author,publishing,categoryid,price,datein,quantityin,quantityout) values('"+bookid+"','"+bookname+"','"+author+"','"+publishing+"','"+categoryid+"','"+price+"','"+datein+"','"+quantityin+"','"+quantityout+"')";
System.out.println(sql);
stm.executeUpdate(sql);
图书查询:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookmis", "root", "1");
Statement stm = conn.createStatement();
String sql = "select * from books where "+field+" = '"+keyword+"'";
ResultSet rs = stm.executeQuery(sql);
删除出借:
String readerid = request.getParameter("readerid");
String bookid = request.getParameter("bookid");
String sql = "delete from borrow where readerid ='"+readerid+"' and bookid='"+bookid+"'";
System.out.println(sql);
stm.executeUpdate(sql);
4.4 数据字典
表名
Readers
列名
说明
类型定义
空/非空
约束条件
reader-id
读者id
varchar(5)
非空
主键,唯一
reader-name
读者姓名
varchar(20)
非空
sex
性别
varchar(2)
birthday
出生年月
Date
phone
电话
Int
mobile
移动电话
varchar(11)
card-name
证件类型
varchar(8)
card-id
证件号
varchar(18)
level
读者等级
varchar(6)
外键
day
申请日期
Date
补充说明
用来存放读者的相关信息
表名
Books
列名
说明
类型定义
空/非空
约束条件
book-id
图书id
varchar(5)
非空
主键,唯一
book-name
图书名称
varchar(20)
非空
author
作者
varchar(20)
publishing
出版社
varchar(20)
category-id
类型
varchar(20)
外键
price
价格
money
quantity-in
入库总量
int
quantity-out
借出
int
quantity-loss
遗失
int
date-in
入库时间
date
补充说明
用来存放图书的相关信息
表名
bookcategory
列名
说明
类型定义
空/非空
约束条件
category-id
图书类型id
varchar(5)
非空
主键,唯一
category-name
图书类型
varchar(10)
非空
补充说明
用来存放图书类型的相关信息
表名
borrow
列名
说明
类型定义
空/非空
约束条件
reader-id
读者id
varchar(5)
非空
主键
book-id
图书id
varchar(5)
非空
主键
date-borrow
借出日期
date
date-return
归还日期
date
loss
遗失
char(2)
补充说明
用来存放出借的相关信息
表名
lossreporting
列名
说明
类型定义
空/非空
约束条件
reader-id
读者id
varchar(5)
非空
主键
loss-date
遗失日期
date
补充说明
用来存放遗失读者证的相关信息
表名
memberlevel
列名
说明
类型定义
空/非空
约束条件
level
读者等级
varchar(6)
非空
主键
days
最长出借期
int
numbers
可借数量
int
fee
费用
int
补充说明
用来存放出借的相关信息
5 未解决的问题
读者的综合查询和图书的复杂查询功能还没有实现,需要后面的进一步改进。
21
展开阅读全文