
二.课程设计任务与要求:
1、任务:
图书管理系统
问题描述:
1)学校图书室有各种图书一万多册。
2)每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社等。
3)借书证记录有借阅者的借书证编号,读者姓名,读者性别,读者种类,登记时期等。
4)凭借书证借书,学生每次最多能借5本书,借书期限最长为30天,老师每次做多能借10本,借书期限最长为60天。
2、设计要求:
1)实现新进图书的数据录入和下架图书的数据删除。
2)实现借阅者图书证信息的录入和删除。
3)实现对所有购进图书的分类查询和分类统计。
4)能够按书名、作者等分类查询现有图书的数量。
5)能够记录借阅者的个人资料和所借图书的书名、书号、借书时间等
6)能够进行借书还书处理。
7)能够进行借书逾期罚款处理。
8)能够进行用户管理。
9)设计一完整的数据库。要求掌握数据库的设计的每个步骤;掌握数据设计各阶段的输入、输出、设计环境、目标和方法;熟练的使用SQL语言实现数据库以及数据库重要对象的建立、应用和维护。
三.课程设计说明书
1 需求分析
(1)数据需求
图书馆管理信息系统需要完成功能主要有:
①读者基本信息的输入,包括借书证编号、读者姓名、读者性别等。
②读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。
③书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。
④书籍类别信息的查询、修改,包括类别编号、类别名称。
⑤书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。
⑥书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。
⑦借书信息的输入,包括读者借书证编号、书籍编号、借书日期。
⑧借书信息的查询、修改,包括借书证编号、借书证编号、读者姓名、书籍编号、书籍名称、借书日期等。
⑨还书信息的输入,包括借书证编号、书籍编号、还书日期。
⑩还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
⑾超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。
⑿超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等
⒀管理员管理:包括创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。
⒁超级管理员管理:包括创建管理员用户信息、删除管理员用户信息、创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。
(2)事务需求
①在读者信息管理部分,要求:
a.可以查询读者信息。
b.可以对读者信息进行添加及删除的操作。
②在书籍信息管理部分,要求:
a.可以浏览书籍信息,要求:
b.可以对书籍信息进行维护,包括添加及删除的操作。
③在借阅信息管理部分,要求:。
a.可以浏览借阅信息。
b.可以对借阅信息进行维护操作。
④在归还信息管理部分,要求:
a.可以浏览归还信息
b.对归还信息可修改维护操作
⑤在管理者信息管理部分,要求:
a.显示当前数据库中管理者情况。
b.对管理者信息维护操作。
⑥在罚款信息管理部分,要求:
a.可以浏览罚款信息
b.对罚款信息可以更新
(3)关系模式
(1)书籍类别(类别编号,类别名)
(2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期,可借书数 , 已借书数,逾期未还书数)
(3) 管理员(管理员编号,管理员姓名,管理员密码,管理员权限)
(4) 超级管理员(管理员编号,管理员姓名,管理员密码,管理员权限)
(5)书籍(书籍编号,书籍名称,书籍类别,作者,出版社名称,出版日期,登记日期)
(6)借阅(借书证编号,书籍编号,读者借书时间)
(7)还书(借书证编号,书籍编号,读者还书时间)
(8)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)
(4)数据流程图(DFD)
通过对系统需求的调查分析,细化软件功能,把系统划分几四个子系统,明确每个子系统所要完的主要逻辑功能,采用以图形的方式描绘数据在系统中流动和处理。
电子图书管理
系统
读者
超级管理员
查询信息
图书信息
图书信息息
图书信息息
图书管理员
读者
图1-1顶层数据流图
F5
P3
D1
D5
F6
借还图书
管 理
P4
D2
D3
D4
登 录
P1
图书查询
P2
F4
F1
F2
F3
F7
P
数据流
数据处理
D
数据存储
F
图1-2一层数据流图
注:
D1 图书数据库
D2 读者数据库
D3 管理员数据库
P2.1
选择查询
F4.1
F4
P2.2
直接查询
D1
P2.3
多条件查询
F7
F4.2
D4 图书分类数据库
D5 借录数据库
F1-F3 登录信息
F4,F5图书信息
F6 各种管理信息
F7 图书信息
图1-3二层数据流图
F5
D5
P3.1
选择
P3.2
借书
D1
P3.3
还书
D4
F5
F5
F
D5
P4.1
选择
P4.3
图书管理
P4.2
书类管理
P4.4
逾期图书
管理
P4.5
读者管理
P4.6
管理员 管理
D1
D4
D2
D3
F6.3
F6,1
F6.4
F6.5
图1-4三层数据流图
F6.2
图1-5四层数据流图
(5)数据字典
为了使各数据流,数据处理过程,存储过程不能反映其中的数据成,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供供有关元素一致性定义和详细的描述:
①数据流字典
数据流名称:读者登录 标志符:F1
别名:无
来源:读者
去向:查询处理过程(P2)
数据组成:编号+姓名
数据流名称:管理员登录 标志符:F2
别名:无
来源:管理员
去向:借还处理过程(P3)
数据组成:编号+姓名+密码+登录权限
数据流名称:超级管理员登录 标志符:F3
别名:无
来源:超级管理员
去向:系统管理处理过程(P4)
数据组成:编号+姓名+密码+登录权限
数据流名称:图书查询 标志符:F4
别名:无
来源:读者
去向: 查询处理过程(P2)
数据组成:图书编号|图书书名|图书作者|图书出版社
数据流名称:直接图书查询 标志符:F4.1
别名:无
来源:读者
去向: 直接查询处理过程(P4.2)
数据组成:图书编号|图书书名|图书作者|图书出版社
数据流名称:多条件图书查询 标志符:F4.2
别名:无
来源:读者
去向: 多条件查询处理过程(P4.3)
数据组成:图书编号+图书书名+作者+出版社+图书所属大类+图书属小类
数据流名称:图书借还 标志符:F5
别名:无
来源:管理员
去向: 借还处理过程(P3)
数据组成:图书编号+借书证编号+借书日期+逾期标识
数据流名称:系统管理 标志符:F6
别名:无
来源:超级管理员
去向: 查询处理过程(P4)
数据组成:各种管理信息,详情见F6.1-F6.5
数据流名称:书类管理 信息 标志符:F6.1
别名:无
来源:超级管理员
去向: 书类管理处理过程(P4.2)
数据组成:图书大类名+0{图书类名}30
数据流名称:图书管理信息 标志符:F6.2
别名:无
来源:超级管理员
去向: 图书管理处理过程(P4.3)
数据组成:书编号+书名+库存数据量+作者+所属书大类+所属图书小类|出版社|价格
数据流名称:逾期图书管理信息 标志符:F6.3
别名:无
来源:超级管理员
去向: 逾期图书管理处理过程(P4.4)
数据组成:借书期限
数据流名称:读者管理信息 标志符:F6.4
别名:无
来源:超级管理员
去向: 书类管理处理过程(P4.5)
数据组成:借书证编号 + 读者姓名 + 可借书数 + 已借书数+ 逾期未还书数+性别+职务+工作单位+联系电话
数据流名称:管理员管理信息 标志符:F6.5
别名:无
来源:超级管理员
去向: 管理员管理处理过程(P4.6)
数据组成:管理员编号+管理员姓名+登录密码+授权等级
②数据存储字典:
数据存储名称:图书数据库 标志符:D1
描述:图书的详细资料
流入数据流:F6.2
涉及处理:P4.2,P2.2,P2.3,P3.2,P3.3,P4.4
数据组成:图书编号+图书书名+作者+出版社+图书所属大类+图书属小类
数据存储名称:读者数据库 标志符:D2
描述:读者的详细资料
流入数据流:F6.4
涉及处理:P4.4,P2.2,P2.3,P3.2,P3.3,P4.4
数据组成:借书证编号 + 读者姓名 + 可借书数 + 已借书数+ 逾期未还书数+性别+读者种类+登记时间
数据存储名称:管理员数据库 标志符:D3
描述:管理员的详细资料
流入数据流:F6.5
涉及处理:P1,P4.6
数据组成:管理员编号+管理员姓名+登录密码+授权等级
数据存储名称:图书分类数据库 标志符:D4
描述:图书分类的详细资料
流入数据流:F6.3
涉及处理:P4.4,P5.2,P5.3
数据组成:图书大类名+0{图书类名}30
数据存储名称:借录数据库 标志符:D5
描述:借书所记录的详细资料
流入数据流:F6.1
涉及处理:P4.2
数据组成:图书编号+借书证编号+借书日期+逾期标识
③数据处理字典:
数据处理名称:用户登录 标志符:P1
处理定义:登录系统
激发条件:所输入的编号和密码正确
输入:F1,F2,F3
输出:F4,F5,F6
数据处理名称:读者查询 标志符:P2
处理定义:查询图书信息
激发条件:所输入图书信息找到
输入:F4
输出:F7
数据处理名称:查询选择 标志符:P2.1
处理定义:选择查询方式
激发条件:已选择查询方式
输入:F4
输出:F4.1,F42
数据处理名称:多条件查询 标志符:P2.2
处理定义:查询图书信息
激发条件:所输入图书信息找到
输入:F4.2
输出:F7
数据处理名称:直接查询 标志符:P2.3
处理定义:直接查询图书信息
激发条件:所输入图书信息找到
输入:F4.1
输出:F7
数据处理名称:借还书 标志符:P3
处理定义:借书和还书
激发条件:所输入图书信息找到
输入:F5
输出:D4
数据处理名称:选择 标志符:P3.1
处理定义:选择借书还是还书
激发条件:选择
输入:F5
输出:D1、D4
数据处理名称:借书 标志符:P3.2
处理定义:借书
激发条件:图书编号
输入:F5
输出:D1、D4
数据处理名称:管理系统 标志符:P4
处理定义:管理系统和各种信息
激发条件:选择管理子功能
输入:F6
输出:F6.1-F6.5
数据处理名称:管理选择 标志符:P4.1
处理定义:选择管理功能
激发条件:选择
输入:F6
输出:D1-D5
数据处理名称:图书分类管理 标志符:P4.2
处理定义:图书分类增加,修改,删除
激发条件:输入图书分类信息
输入:F6.1
输出:D5
数据处理名称:图书管理 标志符:P4.3
处理定义:图书信息增加,修改,删除
激发条件:输入各种图书信息
输入:F6.2
输出:D1
数据处理名称:图书逾期管理 标志符:P4.4
处理定义:查询逾期图书的编号或读者
激发条件:选择查询方式
输入:F6.3
输出:D4,D2
数据处理名称:读者管理 标志符:P4.5
处理定义:读者信息增加,修改,删除
激发条件:输入各种读者信息
输入:F6.4
输出:D2
数据处理名称:管理员登录管理 标志符:P4.6
处理定义:管理员信息增加,修改,删除
激发条件:输入各种管理员信息
输入:F6.5
输出:D3
2 概要设计
(1)实体图及E-R图
根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。用E-R图一一描述这些实体。
书籍类别
类别编号
类别名称
①类别实体图:
图2-1书籍类别实体及其属性图
②读者信息实体图:
可借书数
已借书数
逾期未还书数
读者
读者姓名
读者性别
读者种类e
登记时间
读者借书证编号
图2-2 读者实体及其属性图
③管理员实体图
管理员
管理员姓名
管理员编号
管理员密码
管理员权限
图2-3管理员实体及其属性图
超级管理员
管理员姓名
管理员编号
管理员密码
管理员权限
④超级管理员实体图
图2-4超级管理员实体及其属性图
书籍
书籍编号
书籍名称
书籍类别编号
书籍作者
出版时间
收录时间
是否被借
出版社
⑤书籍实体图:
图2-5书籍实体及其属性图
⑥借阅记录信息实体图:
读者借书证编号
书籍类别编号
借阅时间隔
借阅记录信息
图2-6 借阅记录信息实体及其属性图
⑦归还记录信息实体图:
归还记录信息
读者借书证编号
书籍类别编号
归还时间隔
图2-7记录信息实体及其属性图
书籍类别编号
罚款信息实体实体
罚款金额
读者姓名
读者借书证编号
书籍名称
借阅时间隔
⑧罚款信息实体图:
图2-8罚款信息实体及其属性图
1
1
n
信息登记
读者
书籍
书类别
归还
借阅
罚款
罚款信息
还书信息
借阅信息
实体
m
n
m
n
m
n
n
1
m
创建
1
管理
n
n
n
管理
m
管理员
超级管理员
创建
1
m
n
出具罚款单
⑨总的E-R图:
图2-9总的E-R图
3逻辑设计
表3-1 book_sytle 书籍类别信息表
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| bookstyleno | Varchar(30) | not null(主键) | 种类编号 |
| bookstyle | Varchar(30) | not null | 种类名称 |
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| readerid | Varchar(9) | not null(主键) | 读者借书证号 |
| readername | varchar(9) | not null | 读者姓名 |
| readersex | varchar(2) | not null | 读者性别 |
| readertype | varchar(10) | not null | 读者种类 |
| regdate | datetime | null | 登记日期 |
| booktotal | int | null | 可借书数 |
| borrowednum | int | null | 已借书数 |
| overduenoreturnnum | int | null | 逾期未还书数 |
| 表中列名 | 数据类型 | 可否为空 | 说明 | |||||
| bookid | Varchar(20) | Not null(主键) | 书籍编号 | |||||
| bookname | Varchar(30) | Not null | 书籍名称 | |||||
| bookstyle | Varchar(30) | Not null | 书籍类别 | |||||
| bookauthor | Varchar(30) | Not null | 书籍作者 | |||||
| bookpub | Varchar(30) | Null | 出版社名称 | |||||
| bookpubdate | Datetime | Null | 出版日期 | |||||
| bookindate | Datetime | Null | 登记日期 | |||||
| isborrowed | Bit | Not Null | 是否被借出 | |||||
表3-4 borrow_record 借阅记录信息表
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| readerid | Varchar(20) | Not null(外主键) | 读者借阅证编号 |
| bookid | Varchar(9) | Not null(外主键) | 书籍编号 |
| borrowdate | Datetime | Not null | 读者借书时间 |
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| readername | Varchar(20) | Not null(外主键) | 读者借阅证编号 |
| readerid | Varchar(9) | Not null(外主键) | 书籍编号 |
| returndate | datetime | Not null | 读者还书时间 |
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| readerid | varchar(9) | Not null | 读者借书证编号 |
| readername | varchar(9) | Not null | 读者姓名 |
| bookid | varchar(20) | Not null(外主键) | 书籍编号 |
| bookname | varchar(30) | Not null | 书籍名称 |
| bookfee | Smallmoney | Not Null | 罚款金额 |
| borrowdate | datetime | Not Null | 借阅时间 |
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| administratorid | varchar(9) | not null(主键) | 管理员编号 |
| administratorname | varchar(9) | not null | 管理员姓名 |
| administratorpassword | varchar(12) | not null | 管理员密码 |
| administratorpermission | varchar(10) | not null | 管理员权限 |
| 表中列名 | 数据类型 | 可否为空 | 说明 |
| superadministratorid | varchar(9) | not null(主键) | 管理员编号 |
| superadministratorname | varchar(9) | not null | 管理员姓名 |
| superadministratorpassword | varchar(12) | not null | 管理员密码 |
| superadministratorpermission | varchar(10) | not null | 管理员权限 |
图2-8数据库存表关系图
5 物理设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。
(1)建立索引:
①对book_style表在bookstyleno属性列上建立聚集索引,在bookstyle属性列上建立非聚集索引。
②对System_book表在bookid上建立聚集索引,在bookname、bookstyleno、boookauther、bookpub上建立非聚集索引。
③对return_record表在bookid上建立聚集索引,在readerid上建立非聚集索引
④对reader_fee表在bookid上建立聚集索引,在readerid上建立非聚集索引。
⑤对system_reader表在readerid列上建立聚集索引
⑥对boorow_record表在bookid上建立聚集所以,在readerid上建立非聚集索引
⑦对system_Administrator表在administratorid列上建立聚集索引。
⑧对system_Super_Administrator表在superadministratorid 上建立聚集索引。
(2)存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。所以系统将日志文件和数据文件存放在不同磁盘上。
6数据库建立
(1)创建数据库
USE master
GO
CREATE DATABASE librarysystem
ON
( NAME = librarysystem,
FILENAME = 'd:\\librarysystem.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'library',
FILENAME = 'e:\\librarysystem.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
--(2)书本类别表建立
use librarysystem
go
create table book_style
(
bookstyleno varchar(30) primary key,
bookstyle varchar(30)
)
go
--(3)创建书库表
create table system_books
(
bookid varchar(20) primary key,
bookname varchar(30) Not null,
bookstyleno varchar(30) Not null,
bookauthor varchar(30),
bookpub varchar(30) ,
bookpubdate datetime,
bookindate datetime ,
isborrowed bit,
foreign key (bookstyleno) references book_style (bookstyleno),
)
go
--(4)借书证表建立
create table system_readers
( readerid varchar(9)primary key,
readername varchar(9)not null ,
readersex varchar(2) not null,
readertype varchar(10),
regdate datetime,
booktotal int,
borrowednum int,
overduenoreturnnum int
)
go
--(5)借录表建立
create table borrow_record
( bookid varchar(20) primary key,
readerid varchar(9),
borrowdate datetime,
foreign key (bookid) references system_books(bookid),
foreign key (readerid) references system_readers(readerid),
)
go
--(6)还录表建立
create table return_record
( bookid varchar(20) primary key,
readerid varchar(9),
returndate datetime,
foreign key (bookid) references system_books(bookid),
foreign key (readerid) references system_readers(readerid)
)
go
--(7)罚款单表建立*/
create table reader_fee
( readerid varchar(9)not null,
readername varchar(9)not null ,
bookid varchar(20) primary key,
bookname varchar(30) Not null,
bookfee smallmoney,
borrowdate datetime,
foreign key (bookid) references system_books(bookid),
foreign key (readerid) references system_readers(readerid)
)
go
--(8) 管理员表建立
create table system_Administrator
(administratorid varchar(9)primary key,
administratorname varchar(9)not null ,
administratorpassword varchar(12) not null,
administratorpermission varchar(10)
)
go
--(9)超级管理员表建立
create table system_super_Administrator
(superadministratorid varchar(9) primary key,
superadministratorname varchar(9) not null ,
superadministratorpassword varchar(12) not null,
superadministratorpermission varchar(10)
)
go
(10)索引的创建
use librarysystem
go
create index bookstyle_index_style on book_style(bookstyle)
create index borrow_record_index_readerid on borrow_record(readerid)
create index reader_fee_index_readerid on reader_fee (readerid)
create index return_record_index_readerid on return_record(readerid)
create index system_books_index_bookname on system_books(bookname)
create index system_books_index_styleno on system_books(bookstyleno)
create index system_books_index_bookauthor on system_books(bookauthor)
7 数据初始化
(1)将书籍类别加入表book_style中
insert into book_style(bookstyleno,bookstyle)values('1','人文艺术类')
insert into book_style(bookstyleno,bookstyle)values('2','自然科学类')
insert into book_style(bookstyleno,bookstyle)values('3','社会科学类')
insert into book_style(bookstyleno,bookstyle)values('4','图片艺术类')
insert into book_style(bookstyleno,bookstyle)values('5','政治经济类')
insert into book_style(bookstyleno,bookstyle)values('6','工程技术类')
insert into book_style(bookstyleno,bookstyle)values('7','语言技能类')
(2)将已有的图书加入system_books表中(定义相同的作者出版社的书本编号不一样)
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed )
values('00125415152','计算机组成原理','6','王爱英','清华大学出版社','2001-01-03','2003-11-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed )
values('00125415153','计算机组成原理','6','王爱英','清华大学出版社','2001-01-03','2003-11-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('004556','数据库原理','6','萨师煊','高等教育出版社','2007-07-02','2007-09-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed )
values('12215121','C程序设计','6','谭浩强','清华大学出版社','2002-04-02','2004-03-14','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('9787308020558','计算机体系结构','6','石教英','浙江大学出版社','2004-10-03','2006-11-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('45456141414','数据结构(C语言版)','6','吴伟民,严蔚敏','清华大学出版社','2002-06-28','2004-01-21','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('5455515','中华历史5000年','1','吴强','北京大学出版社','2005-04-03','2006-05-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('015115','古代埃及','3','赵文华','北京大学出版社','2001-02-02','2002-09-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('1514514','日本文化','1','吴小鹏','北京大学出版社','2002-04-02','2004-03-14','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('15154656','微观经济学','5','李小刚','北京大学出版社','2000-10-03','2001-11-15','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('5658','影视文学','4','苏庆东','北京大学出版社','1999-02-28','2000-01-21','1');
insert into system_books(bookid ,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed )
values('565800020','探索宇宙奥秘','2','苏庆东','北京大学出版社','1999-02-28','2000-01-21','1');
8 数据库用户权限管理
该系统设置四种类型的用户
(1)超级管理员(superadministrator) 即系统管理员拥有所有的权限。
(2)管理员(administrator) 可以进行借还书处理;
(3)教师(teacher) :只能浏览图书信息,可借书数为10本,借书时间长为2个月。
(4) 学生(student):只能浏览图书信息,可借书5本,借书时间长为1个月。
9、建立触发器,存储过程
--------------建立借录存贮过程
CREATE PROCEDURE SP_BORROWBOOK @BOOKID CHAR(20),
@READERID CHAR(9)
AS
INSERT INTO BORROW_RECORD (BOOKID,READERID,BORROWDATE)
VALUES(@BOOKID,@READERID,GETDATE())
GO
-------------建立还录存贮过程
CREATE PROCEDURE SP_RETURNBOOK @BOOKID CHAR(20),@READERID CHAR(9)
AS
DELETE FROM RETUN_RECORD
WHERE BOOKID=@BOOKID AND READERID=@READERID
GO
-------------建立罚款单存贮过程
CREATE PROCEDURE SP_ READERFEE @READERID, @borrowdate
AS
UPDATE reader_fee
SET bookfee=0.1*(day(getdate())-day(@borrowdate))
Where @reader=@readerid
And borrowdate=@borrowdate
-------------建立借录表增加触发器
CREATE TRIGGER [TR_ADDLEND] ON [dbo].[ BORROW_RECORD]
FOR INSERT
AS
update system_books
set isborrowed =1
WHERE BOOKID IN (SELECT BOOKID
FROM inserted)
UPDATE READER
SET borrowednum = borrowednum +1
WHERE READERID IN (SELECT READERID
FROM inserted)
-------------建立还录删除触发器
CREATE TRIGGER [TR_DELLEND] ON [dbo].[ return_record]
FOR DELETE
AS
update system_books
set isborrowed =0
WHERE BOOKID IN (SELECT BOOKID
FROM deleted)
UPDATE system_readers
SET borrowednum = borrowednum -1
WHERE READERID IN (SELECT READERID FROM deleted)
-------------建立删除图书触发器
CREATE TRIGGER [TR_DELLENDBOOK] ON [dbo].[system_books]
FOR DELETE
AS
Delete reader_fee
WHERE BOOKID IN (SELECT BOOKID
FROM deleted)
Delete return _record
WHERE bookID IN (SELECT bookID FROM deleted)
10 系统实现
(1)系统功能模块图:
系统功能模块图如图10-1
图书管理系统
借还书子系统
查询子系统
管理子系统
图书类管理
图书管理
读者管理
逾期图书管理
管理员管理
直接查询
多条件查询
借 书
还 书
帮助子系统
登录子系统
图10-1系统功能模块图
五个子系统的功能如下:
①登录子系统:
可以实现图书管理员和超级管理员登录管理
②查询子系统:
主要用于读者查询图书,其中直接查询包括按图书编号直接查询,按书名查询,按作者查询,按出版社查询(可选模糊查询)。多条件查询可以按读者的要求选取所需要的图书。
③借还子系统:
主要由图书管理员进行借书还录的登记和清除。
④管理子系统:
由图书管理员和超级管理员管理系统,分别是由图书管理员管理图书(包括图书信息的修改,新图书的增加,旧图书的删除),超级管理员管理图书分类,管理读者信息,管理管理员登录帐户,管理逾期未还。
⑤帮助子系统:
主要提供用户的使用本系统的操作手册。
(2)前台开发平台的选择:VB.NET
(3)VB.NET与数据库的连接
ADO.NET是VB.NET访问数据库的主要方式。
①ADO.NET的数据访问方式
ADO.NET 的数据存取API 提供3 种数据访问方式:
a) 通过ODBC 相连,访问支持早期ODBC 协议的数据库。
b) 通过OLEDB 相连,访问SQL Server6.5, MicrosoftAccess, Oracle 或者其他有提供OLE DB 连接能力的数据库
c) 使用SqlConnection 直接与SQL Server7.0以及SQL Server2000 相连
②VB.NET访问数据库的具体过程
a) 创建数据库连接
ADO.NET 中使用sqlConnection 类对SQL Server7.0 以及更高版本进行连接, 这个类的构造函数接受一个可选参数, 称为连接字符串, 该字符串用于定义正在连接的数据库的类型、位置以及其他信息, 这些属性用分号分隔, 通常该字符串包含如下信息:①Data Source 特性: 指定SQL Server 数据库所在计算机名称; ② Initial Catalog 特性: 指定连接的SQL Server 数据库的名称;③ User ID 和Pass-Word 特性: 指定用SQL SERVER登录方式的有效帐户名和密码或设置为:Integrated Security=True设置为Windows 登录方式。
b ) 填充数据
创建数据源连接以后, 接下来创建数据适配器,适配器在创建过程中需要向其传递两个要素: 用于包含结构化查询语句的数据描述和用于指明数据库连接信息的连接描述, 创建后可利用Fill 方法, 将所需的数据填充在一个数据集(DataSet)中。
c ) 关闭数据库的连接
由于DataSet采用是断开连接的方式,所以当把数据填充到数据集后即可断开与数据库的连接。
d) 为控件指定数据源
数据填充到数据集后,要在窗体上显示出来,则必须把相应的数据表绑定到数据控件上。
具体实现代码如下:
Imports System.Data
Imports System.Data.SqlClient
Public dataConnection As SqlConnection
Public dataAdapter As SqlDataAdapter
Public dbSet As DataSet
Public connstr As String ="Data Source=mysql;Initial Catalog= librarysystem;Integrated Security=True"
Dim sqlstr="Select * from system_books "
Try
dataConnection = New SqlConnection ' 对象实例化
dataConnection.ConnectionString = connstr ' 设置连接字符串
dataAdapter = New SqlDataAdapter(sqlstr, dataConnection)
' 实例化数据适配器,并设置查询字符串
dataConnection.Open()
dbSet = New dataSet
dbSet.Clear()
dataAdapter.Fill(dbSet, "system_books") ' 填充数据集
dataConnection.Close() ' 关闭连接
Catch ex As Exception
MsgBox(ex.Message)
dataConnection.Close()
End Try
if dbset.Tables.Item(0).Rows.Count=0 then
Msgbox(“没有任何记录”)
Else
DAtaGrid1.DataSource=dbset.Tables(0) ’若找到相应的数据,则把数据表绑定到数据控件上
End if
(4)图书管理模块的实现
①图书管理系统登录界面如图10-2
图10-2图书管理系统登录界面图
②图书管理系统主界面如图10-3
图10-3图书管理系统主界面
下面给出图书的查询、插入、删除、更新模块的代码:
③查找界面如图10-4
图10-4查找界面
查找代码如下:
Dim dataCommand As SqlCommand
Dim MyReader As SqlDataReader
Private Sub BtnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSearch.Click
bookauthor ()
Sub findByName()
dataConnection.Open()
dataAdapter = New SqlDataAdapter(datacommand)
bookauthor()
bookauthor LIKE '" & TxtCondition.Text & "%'", dataconnection)
bookid = '" & TxtCondition.Text & "'", dataConnection)
④添加图书运行界面如图10-5所示:
图10-5添加图书运行界面
添加图书程序代码如下:
Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
请在相应的文本框中添加书籍信息")
书籍信息已被添加到数据库")
End Sub
Function add_BookIntoDatabase()
⑤删除图书运行界面如图10-6所示
图10-6删除图书运行界面
删除图书代码:
Private Sub DGResult_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGResult.CellContentDoubleClick
请确认是否删除" & DGResult.Rows(e.RowIndex).Cells(1).Value & " 这条记录", MsgBoxStyle.YesNo, "信息框")
⑥修改图书运行界面如图10-7所示
图10-7修改图书运行界面
更新图书代码:
Private Sub BtnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEdit.Click
书籍信息已被更新!")
Function updateBook()
11课程设计心得体会
在本次课程设计的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习了很多有关的知识。这样的项目对我学过的数据结构,程序设计,数据库,软件工程等课程是一个综合性很高的实践。一些以前没有学得很杂实的课程的内容,由于需要在实践中运用,刚开始我也感到很头痛。但回过头再去看有关的教科书,经过一段时间的钻研,对与这些知识点的相关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。熟悉了数据库设计的每一个过程。
另外我还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。有时候,我自己觉得我写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙了才向专家请教。尽管向专家请教解决问题比较快,自己钻研花的时间较多,但我强迫自己的思考对我的学习提高帮助非常大。
在开始编写程序的时候,我看到别人的软件功能非常的详细,而且界面非常的漂亮,总希望自己的软件也非常的完善,但是,经过二个月的学习,发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验。我认清自己的能力后,我就特别注意在工作的过程中不贪图大而全,而是根据自己的能力,制定适当的目标。
在反反复复的学习及不耻下问之下,我的辛勤努力有了回报,终于做出了一个简单的软件,虽然这个软件的功能非常的简单,而且我想,在实际的运用中,还有些不足。因为图书管理牵涉的内容非常很多,我涉及到的仅仅是图书管理的一部分简单内容,离实际的客户需求肯定还有一定的差距。例如用户管理和借还书处理等考虑得还不完善。最好是这几部分之间的数据可以相互利用转化,不需要重复的输入有关的数据。针对图书管理,还应该建立一个有普遍意义的模型,这样对用户来说,就比较容易通过修改有关管理制度来适应我们开发的软件。
由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够醒目等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。
在本系统的设计过程和课程设计报告的编写过程中,老师和同学都给予了我许多无私的帮助,尤其是我的指导老师刘新民老师给我的系统设计提出了很多宝贵的修改意见,在这里,我向这些无私帮助我的人表示衷心的感谢。
