数据库课程设计图书管理系统.docx
- 文档编号:4185486
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:26
- 大小:359.12KB
数据库课程设计图书管理系统.docx
《数据库课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
数据库课程设计图书管理系统
1概述
1.1设计背景及目的
随着信息技术的迅猛发展,计算机技术的日渐成熟,科学技术的力量已经得到了最广大人民在思想上的认可。
尤其是计算机的有效利用,在当今社会各行各业的各个方面起到了越来越重要的作用。
书店管理也是一样,特别是大中型书店,信息管理也越是显得尤为重要。
如果没有一个好的书店管理系统,对于书店的经营是非常不利的。
在信息时代,传统的书店管理方式必然被计算机为基础的信息管理系统所取代。
因为作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着人工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高书店管理的效率。
为了跟上信息时代的步伐,数字化书店管理系统的出现将是必然。
它将为人民的生活提供更好的帮助。
根据所学知识,创建一个小型书店管理系统,为书店管理人员提供更为便捷的管理方式,提高书店运行的效率,同时也为读者提供方便。
本系统主要是改善对书店管理者、供应商以及客户之间的繁琐的管理方式,不过,界面美化还需改善。
1.2设计范围及相关领域
本管理系统的设计主要针对书店管理人员在购书和租、售书方面的管理。
而设计主要涉及数据库方面的知识,对于界面的创建、美化等可以运用Dreamweaver、VB或者C#等方面的知识进行扩充。
设计分析与研究
小型书店管理系统主要用于书店的管理,主要包括以下几种基本表:
图书信息表:
图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称;供应商名称等;供应商信息表:
供应商名称、地址、电话,联系人等;客户信息表:
客户编号、名称、年龄、性别、累计购书金额等;销售信息表:
时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。
本书店管理系统则主要依赖以上几个表,而这几个表也反映出了本系统所要实现的基本功能。
但要实现本系统的各项功能,则还要考虑其他很多方面,如开发环境、应用环境等等。
我主要运用SQLserver2008来创建本数据库。
SQLServer2008DeveloperEdition(32位和64位)
DeveloperEdition使开发人员可以在SQLServer上生成任何类型的应用程序。
它包括SQLServer2008EnterpriseEdition的所有功能,但有许可限制,只能用于开发和测试系统,而不能用作生产服务器。
DeveloperEdition是独立软件供应商(ISV)、咨询人员、系统集成商、解决方案供应商以及创建和测试应用程序的企业开发人员的理想选择。
MicrosoftSQLServer2008是一个完整的商务智能(BI)平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能。
1.3预期结果及意义
基本实现基本表中所有的功能,保证基本安全性能的有效性。
符合本次课程设计的基本要求。
我认为有两方面的意义:
一是通过书店管理系统的设计,进一步加深自己对数据库的认识,熟悉数据库的基本操作,理论联系实际。
二是运用书店管理系统,排出了一系列不必要的繁琐步骤,节省时间,将极大地提高书店管理人员的工作效率,方便了人们。
2需求分析
2.1功能需求
对于书店管理系统,书店管理人员可以对图书的进与出进行管理,与此同时,读者也可以对要阅读的书进行查询。
本系统的查询操作主要包括:
(1)查询当月书店销售金额、营业金额;
(2)查询某种图书库存数量;
(3)查询当月销量最好的图书信息;
(4)按供应商名称查询订购信息;
(5)查询购买次数超过3次的客户信息。
本管理系统可以及时更新信息,保证数据的准确性。
2.2数据流图及数据字典
.
(1)数据流图
2-2-1数据流图
(2)数据字典
表2-3-1数据字典表
数据流名
含义说明
组成
图书
图书信息
分类编号、名称、作者、出版社等
供应商
供应商信息
名称、联系人、电话、地址等
客户
客户信息
编号、姓名、性别、年龄等
供应
供应信息
图书分类编号、供应商名称、订购时间、数量、单价、金额等
销售
销售信息
图书分类编号、客户编号、销售数量、单价、时间等
3概念结构设计
概念结构设计就是将需求分析得到的用户需求抽象为信息结构。
3.1局部设计
(1)图书E-R图:
图3-1-1
(2)供应商E-R图:
图3-1-2
(3)客户E-R图:
图3-1-3
(4)供应E-R图:
图3-1-4
(5)销售E-R图:
图3-1-5-1
图3-1-5-2
3.2整体设计
图3-2-1
4逻辑结构设计
4.1逻辑结构设计的含义
数据库逻辑设计就是将概念模型转换成特定的DBMS所支持的数据库模型的过程。
逻辑结构设计一般分为三步进行:
(1)从E-R图向关系模式转化
数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中实体、实体的属性和实体之间的联系转化为关系模式
(2)数据模型的优化
数据库逻辑设计的结果并不是唯一的,为了提高数据库应用系统的性能,还应该适当的修改数据模型的结构,提高查询速度。
(3)关系视图的设计
关系视图的设计又叫外模式设计,也叫用户模式设计,是用户可以直接访问的书记模式。
4.2关系模式的转换及规范化
图书信息(图书名称、供应商名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称)
供应商信息(供应商名称、地址、电话,联系人)
客户信息(客户编号、图书名称、名称、年龄、性别)
销售信息(销售图书名称、客户编号、客户名称、销售单价、数量、时间、金额)
带有下划线的表示主键。
通过分析以上模式的转换,可以将部分信息属性细化,重新划分属性分布,组建新的信息表,可以减少冗余,使结构更加简洁。
以下是经过规范化后的关系模式:
图书信息(图书分类编号、图书名称、出版社名称、作者名称)
供应商信息(供应商名称、地址、电话,联系人)
供应信息(图书分类编号、供应商名称、订购时间、订购数量、金额、订购单价)
客户信息(客户编号、名称、年龄、性别)
销售信息(图书分类编号、客户编号、销售单价、数量、时间、金额等)
其他销售信息(图书分类编号、销售月份、销售总量)
5物理结构设计
5.1物理结构设计的含义
对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构的过程,称为数据库物理结构设计。
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。
实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。
5.2数据表
(1)图书表(BD)
表5-2-1BD表
字段名
字段类型
约束控制
字段含义说明
B_identifier
char(8)
主键非空约束
图书分类编号
B_name
varchar(50)
非空约束
书名
B_auther
varchar(20)
非空约束
作者
B_publish
Varchar(50)
非空约束
出版社
(2)供应商表(GD)
表5-2-2GD表
字段名
字段类型
约束控制
字段含义说明
provider
varchar(50)
主键非空约束
供应商名称
address
varchar(50)
非空约束
地址
linkman
varchar(20)
非空约束
联系人
telephone
bigint
电话
(3)供应表(BGD)
表5-2-3BGD表
字段名
字段类型
约束控制
字段含义说明
B_identifier
char(8)
主键非空约束
图书分类编号
provider
varchar(50)
主键非空约束
供应商名称
order_count
int
非空约束
订购数量
order_time
smalldatatime
非空约束
订购时间
order_price
smallmoney
非空约束
订购单价
order_money
smallmoney
非空约束
订购金额
(4)客户表(CD)
表5-2-4CD表
字段名
字段类型
约束控制
字段含义说明
C_identifier
char(8)
主键非空约束
客户编号
C_name
varchar(20)
非空约束
客户姓名
C_sex
char
(2)
默认“男”
性别
C_age
int
年龄
(5)销售表(BCD)
表5-2-5BCD表
字段名
字段类型
约束控制
字段含义说明
B_identifier
char(8)
主键非空约束
图书分类编号
C_identifier
char(8)
主键非空约束
客户编号
sell_count
int
非空约束
销售数量
sell_time_year
int
非空约束
销售时间年
sell_time_mon
int
非空约束
销售时间月
sell_time_day
int
非空约束
销售时间日
sell_price
smallmoney
非空约束
销售单价
sell_money
smallmoney
非空约束
销售金额
(6)销售单表(BSD)
表5-2-6BSD表
字段名
字段类型
约束控制
字段含义说明
B_identifier
char(8)
非空约束
图书分类编号
sell_time_mon
int
非空约束
销售时间月
sell_counts
int
非空约束
销售总数
6数据库实施
6.1建立实例数据库
6.1.1创建一个书店数据库BS
CREATEDATABASE[BS]ON
(
NAME=BS_data,
FILENAME='D:
\BSdata.mdf',
SIZE=10,
MAXSIZE=100,
FILEGROWTH=10
)
LOGON
(
NAME=BS_log,
FILENAME='D:
\BSdata.ldf',
SIZE=5,
MAXSIZE=25,
FILEGROWTH=5
)
6.1.2创建各种数据表
(1)创建图书信息表(BD表)
createtableBD
(
B_identifierchar(8)notnullconstraintB_primprimarykey,
B_namevarchar(50)notnull,
B_authervarchar(20)notnull,
B_publishvarchar(50)notnull
)
(2)创建供应商信息表(GD表)
createtableGD
(providervarchar(50)notnullconstraintG_primprimarykey,
addressvarchar(50),
linkmanvarchar(20),
telephonebigintnotnull)
(3)创建供应信息表(BGD表)
createtableBGD
(
B_identifierchar(8)notnullconstraintfk_bd_bgdforeignkeyreferencesbd(b_identifier),
providervarchar(50)notnull,
constraintBGD_Primprimarykey(B_identifier,provider),
order_countintnotnullconstraintCK_BGDcheck(order_count>=0),
order_timesmalldatatimenotnull,
order_pricesmallmoneynotnull,
order_moneysmallmoneynotnull
)
(4)创建客户信息表(CD表)
createtableCD
(
C_identifierchar(8)notnullconstraintC_primprimarykey,
C_namevarchar(20),
C_sexchar
(2)notnulldefault'男',
C_ageintconstraintC_age_Chkcheck(C_agebetween1and100)
)
(5)创建销售信息表(BCD表)
createtableBCD
(
B_identifierchar(8)notnullconstraintfk_bd_bcdforeignkeyreferencesbd(b_identifier),
C_identifierchar(8)notnull,
constraintBCD_Primprimarykey(B_identifier,C_identifier),
sell_countintnotnull,
sell_time_yearintnotnull,
sell_time_monintnotnull,
sell_time_dayintnotnull,
sell_pricesmallmoneynotnull,
sell_moneysmallmoneynotnull
)
(6)创建销售单表(BSD表)
createtableBSD
(
B_identifierchar(8)notnullconstraintfk_bd_bsdforeignkeyreferencesbd(b_identifier),
sell_time_monintnotnull,
sell_countsintnotnullconstraintCK_BSDcheck(sell_counts>=0)
)
(7)各表之间的联系
6.2加载数据及运行测试
6.2.1加载数据
(1)图书信息表(BD表)
insertintoBD(B_identifier,B_name,B_auther,B_publish)
values('00001','计算机操作系统(第三版)','张默','电子工业出版社')
insertintoBD(B_identifier,B_name,B_auther,B_publish)
values('00002','数据库原理(第二版)','汤默','清华大学出版社')
insertintoBD(B_identifier,B_name,B_auther,B_publish)
values('00003','Java面向对象编程','杨默','人民邮电出版社')
insertintoBD(B_identifier,B_name,B_auther,B_publish)
values('00004','计算机网络','单默','西安电子科技大学出版社')
insertintoBD(B_identifier,B_name,B_auther,B_publish)
values('00005','七龙珠','斯默','电子工业出版社')
(2)供应商信息表(GD表)
insertintoGD(provider,address,linkman,telephone)
values('电子工业出版社','北京市七八街','赵六',)
insertintoGD(provider,address,linkman,telephone)
values('清华大学','北京市五六街','王五',)
insertintoGD(provider,address,linkman,telephone)
values('人民邮电出版社','北京市三四街','李四',)
insertintoGD(provider,address,linkman,telephone)
values('西安电子科技大学','北京市一二街','张三',)
(3)供应信息表(BGD表)
insertintoBGD(B_identifier,provider,order_count,order_time,order_price,order_money)
values('00001','电子工业出版社',20,'2009-11-12',20,400)
insertintoBGD(B_identifier,provider,order_count,order_time,order_price,order_money)
values('00002','清华大学',20,'2009-11-15',30,600)
insertintoBGD(B_identifier,provider,order_count,order_time,order_price,order_money)
values('00003','人民邮电出版社',20,'2009-11-20',50,1000)
insertintoBGD(B_identifier,provider,order_count,order_time,order_price,order_money)
values('00004','西安电子科技大学',20,'2009-11-22',40,800)
insertintoBGD(B_identifier,provider,order_count,order_time,order_price,order_money)
values('00005','电子工业出版社',20,'2009-11-23',30,600)
通过上述方式继续输入其他三个表信息,截图如下:
(4)客户信息表(CD表)
(5)销售信息表(BCD表)
(6)销售单表(BSD表)
6.2.2运行测试
(1)查询某月书店销售金额及营业总额
查询7月份书店销售金额:
selectsum(sell_money)as'当月收入'
fromBCD
wheresell_time_mon=7
selectsum(sell_money)as'总收入'
fromBCD
(2)查询某种图书库存数量
查询编号是00002的图书库存数量:
selectorder_count
fromBGD
whereB_identifier='00002'
(3)查询某月销售最好的图书信息
查询7月份销售最好的图书信息:
selectBD.B_identifier,B_name,B_auther,B_publish,sell_counts
fromBD,BSD
whereBD.B_identifier=BSD.B_identifier
groupbyBD.B_identifier,B_name,B_auther,B_publish,sell_counts
havingmax(sell_counts)=
(selectmax(sell_counts)
fromBSD
groupbysell_time_mon
havingsell_time_mon=7)
(4)按供应商名称查询订购信息
查询供应商名为电子工业出版社的订购信息:
select*
fromBGD
whereprovider='电子工业出版社'
(5)查询订购次数超过3(包括3)次的客户信息
selectCD.C_identifier,C_name,C_sex,C_age
fromCD,BCD
whereCD.C_identifier=BCD.C_identifier
groupbyCD.C_identifier,C_name,C_sex,C_age
havingcount(CD.C_identifier)>=3
7数据库的运行和维护
7.1安全性与完整性
7.1.1安全性
数据库的安全性是指保护数据库以防止非法使用造成的数据泄漏、更改或破坏。
我们可以通过创建服务器登入账号来实现其安全性。
如:
创建了一个名为“mch”的登陆账号,其密码为000000,与BS数据库相连
EXECsp_addLogin'mch','000000','BS',NULL
EXECsp_adduser'mch'
为登陆账号“mch”设置一个名为“mch”的数据库用户账号,设置为db_owner角色。
EXECsp_adduser'mch','mch','db_owner'
7.1.2完整性
数据库的完整性是之保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效的操作。
而实施数据库完整性的方法有五种:
约束、默认值、规则、存储过程和触发器。
(1)约束
约束是SQLServer自动强制数据库完整性的方式,约束定义了列中允许的取值。
(2)默认值
默认是向用户输入记录时没有指定具体数据的列中自动插入的数据。
(3)规则
规则是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。
(4)存储过程
存储过程是存储在SQLServer数据库中的一种编译对象,它是一组为了完成特定功能的SQL语句集,这些SQL语句集经编译后存储在数据库中,可以被客户机管理工具、应用程序、其他存储过程调用,同时可以传递参数。
如:
创将一个存储过程,该存储过程可以从数据表CD中查询所有男性客户的信息。
createproceduremessage
as
select*
fromCD
whereC_sex='男'
(5)触发器
触发器是一种特殊类型的存储过程,它主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字被直接调用。
如:
在表BCD上创建一个插入触发器,当插入数据时,同时修改表BGD中数据。
createtriggerbcd_bgd
onbcd
forinsert
as
updatebgd
setorder_count=order_count-(selectsell_countfrominserted)
where(B_identifier=(selectB_identifierfrominserted))
在表BCD上创建一个插入触发器,当插入数据时,同时修改表BSD中数据。
createtriggerbcd_bsd
onbcd
forinsert
as
updatebsd
setsell_counts=sell_counts+(selectsell_countfrominserted)
where(B_identifier=(selectB_identifierfrominserted)
andsell_time_mon=(selectsell_time_mon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 图书 管理 系统