数据库超市商品库存管理系统课程设计报告.docx
《数据库超市商品库存管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库超市商品库存管理系统课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
数据库超市商品库存管理系统课程设计报告
课程设计报告
课程设计题目:
超市商品库存管理系统
学号:
姓名:
专业:
软件工程
班级:
指导教师:
2012年12月12日
课程设计分工
1)根据题目写出需求分析(功能描述)
2)画出全局E-R图
3)将E-R图转换为关系模式
4)在SQLServer中创建数据库及数据表,至少4个数据表,定义约束
5)输入数据,至少创建2个视图,数据涉及多个表
6)至少创建3个存储过程,实现3种表的数据操作,如查询、添加、删除或更新
7)创建2个登录、数据库用户,并分配不同的权限
8)为数据库做完全备份
9)要为修改或删除创建一个触发器
每人独立完成一个题目,不能雷同
成果:
报告,程序,数据库文件,备份文件
报告中要有详细的需求分析,课程设计任务、内容,实现代码,结论,心得。
1.课程设计的目的和意义
《数据库原理及应用课程设计》是实践性教学环节之一,是《数据库原理及应用》课程的辅助教学课程。
通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。
2.设计要求:
通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。
熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL语言实现数据库的建立、应用和维护。
集中安排1周进行课程设计,以小组为单位,一般4~5人为一组。
教师讲解数据库的设计方法以及布置题目,要求学生根据题目的需求描述,进行实际调研,提出完整的需求分析报告,建议用PowerDesigner建立概念模型、物理模型,在物理模型中根据需要添加必要的约束、视图、触发器和存储过程等数据库对象,最后生成创建数据库的脚本,提出物理设计的文档。
要求如下:
1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
5、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
6、小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。
3.课程设计选题的原则
课程设计题目以选用学生相对比较熟悉的业务模型为宜,要求通过本实践性教学环节,能较好地巩固数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等主要相关知识点,针对实际问题设计概念模型,并应用现有的工具完成小型数据库的设计与实现。
具体选题见附录。
4.课程设计的一般步骤
课程设计大体分五个阶段:
1、选题与搜集资料:
根据分组,选择课题,在小组内进行分工,进行系统调查,搜集资料。
2、分析与设计:
根据搜集的资料,进行功能与数据分析,并进行数据库、系统功能等设计。
3、程序设计:
运用掌握的语言,编写程序,实现所设计的模块功能。
4、调试与测试:
自行调试程序,成员交叉测试程序,并记录测试情况。
5、验收与评分:
指导教师对每个小组的开发的系统,及每个成员开发的模块进行综合验收,结合设计报告,根据课程设计成绩的评定方法,评出成绩。
5数据库需求分析
5.1数据流程图
商品
5.2数据字典
、
数据项
数据项
数据项含义
数据结构
Pno
供应商编号
唯一标识供应商
Char(8)
Pname
名称
供应商的名称
Char(30)
Phone
电话
供应商的电话
Char(12)
Addr
地址
供应商所在地
Char(30)
Gno
商品编号
唯一标识商品
Char(8)
Gname
商品名称
商品的名称
Char(50)
Gpice
规格
商品的属性
Char(20)
QTY
数量
供应商提供商品的数量
Int
Sname
仓库名称
唯一标识仓库
Char(20)
Spac
仓库地址
仓库所在的地点
Char(20)
AD
账号
管理仓库员的账号
Char(10)
Numder
存储货物数量
商品存储的数量
int
6概念设计
6.1E-R图设计
地址
6.2E-R图向关系模型转换
供应商(供应商号,电话,地址,供应商品,)
供应关系(商品名,供应商名,供应数量)
商品(商品号,商品名,商品规格,默认价格)
储存关系(商品号,商品名,供应商号,数量)
仓库(仓库名,仓库地点,管理员)
6.3基本信息表
1供应商基本信息表
列名
数据类型
是否为空
说明
Pno
Char(8)
不允许
供应商编号
Pname
Char(30)
允许
供应商名称
Phone
Char(12)
允许
供应商电话
Addr
Char(30)
允许
供应商地址
2商品基本信息表
列名
数据类型
是否为空
说明
Gno
Char(8)
不允许
商品编号
Gname
Char(50)
允许
商品名称
Defau
Char(20)
允许
商品规格
Gpice
int
允许
默认价格
3仓库基本信息表
列名
数据类型
是否为空
说明
Sname
Char(20)
不允许
仓库名称
Space
Char(20)
允许
仓库地址
AD
Char(10)
允许
仓库管理员
4供应关系基本信息表
列名
数据类型
是否为空
说明
Pno
Char(8)
不允许
供应商编号
Gno
Char(8)
不允许
商品编号
QTY
Int
允许
供应数量
5存储关系基本信息表
列名
数据类型
是否为空
说明
Pno
Char(8)
不允许
供应商编号
Gno
Char(20)
不允许
商品编号
Sname
Char(80
不允许
仓库名称
Numbers
Int
允许
存储数量
7功能描述
1,记录入库商品的名称厂家等信息。
2,查询商品的种类,名称等信息
3,记录商品的储存地点以及库存储存的商品
4,查询商品的库存地址厂家等信息
5,查询商品信息。
6,查询供应商信息。
7,添加新商品
8,添加新供应商。
9,添加新库存地址
10,删除商品同时删除它的厂家及库存地址等,。
11,删除供应商同时删除它提供的商品及相关信息。
12,建立账号和访问权限。
8模式定义语句
--------创建和插入表-------
createtableProvider
(Pnochar(8)primarykey,
Pnamechar(30),
Phonechar(12),
Addrchar(30),
)
insertintoProvider(Pno,Pname,Phone,Addr)
values('A1','中华开心食品集团','','南昌')
insertintoProvider(Pno,Pname,Phone,Addr)
values('A2','盼盼食品有限公司','','福建')
insertintoProvider(Pno,Pname,Phone,Addr)
values('A3','恒德利服装有限公司','3','深圳')
insertintoProvider(Pno,Pname,Phone,Addr)
values('A4','天津喜临门家具公司','','天津')
select*fromProvider
createtableGoods
(Gnochar(8)primarykey,
Gnamechar(50),
Defauchar(20),
Gpiceint,
)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('101','爽一爽冰红茶','瓶',5)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('102','双贝壳面包','袋',10)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('103','雅莱姿正装','套',300)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('104','好梦来丝被','箱',100)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('105','三鲜拉面','袋',2)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('106','正德皮靴','双',300)
insertintoGoods(Gno,Gname,Defau,Gpice)
values('107','红门床柜','个',400)
select*fromGoods
createtableSupply
(Pnochar(8),
Gnochar(8),
QTYint
primarykey(Pno,Gno),
foreignkey(Gno)referencesGoods(Gno),
foreignkey(Pno)referencesProvider(Pno)
)
insertintoSupply(Pno,Gno,QTY)
values('A1','101',370)
insertintoSupply(Pno,Gno,QTY)
values('A2','102',150)
insertintoSupply(Pno,Gno,QTY)
values('A3','103',40)
insertintoSupply(Pno,Gno,QTY)
values('A1','105',120)
insertintoSupply(Pno,Gno,QTY)
values('A3','106',20)
insertintoSupply(Pno,Gno,QTY)
values('A4','107',10)
insertintoSupply(Pno,Gno,QTY)
values('A4','104',10)
select*fromSupply
createtableStorage
(
Snamechar(20)primarykey,
Spacchar(20),
ADchar(10),
)
insertintoStorage(Sname,Spac,AD)
values('东仓库','东郊巷22号','aa')
insertintoStorage(Sname,Spac,AD)
values('西仓库','市民路','bb')
select*fromStorage
createtableInventory
(Gnochar(8),
Snamechar(20),
Pnochar(8),
Numbersint,
primarykey(Gno,Sname,Pno),
foreignkey(Gno)referencesGoods(Gno),
foreignkey(Sname)referencesStorage(Sname),
foreignkey(Pno)referencesProvider(Pno)
)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('101','A1','东仓库',110)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('102','A2','东仓库',120)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('103','A3','西仓库',130)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('104','A4','西仓库',140)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('105','A1','西仓库',50)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('106','A3','西仓库',150)
insertintoInventory(Gno,Pno,Sname,Numbers)
values('107','A4','西仓库',50)
select*fromInventory
-----------创建视图-------
createviewA_info
as
selectGoods.Gno,Goods.Gname,Provider.Pname,Defau,Gpice,Supply.QTY
fromProvider,Goods,Supply
whereSupply.Pno=Provider.PnoandSupply.Gno=Goods.Gno
select*fromA_info
createviewB_info
as
selectGoods.Gname,Inventory.Numbers,Supply.QTY,Storage.Sname
fromGoods,Supply,Inventory,Storage
whereGoods.Gno=Supply.GnoandSupply.Gno=Inventory.GnoandStorage.Sname=Inventory.Sname
select*fromB_info
--------------存储过程-------
createprocedureGc--查询
@Gnochar(8)
as
select*
fromGoods
whereGno=@Gno
createprocedurePc
@Pnochar(8)
as
select*
fromProvider
wherePno=@Pno
createprocedureSec
@ADchar(10)
as
select*
fromStorage
whereAD=@AD
execGc@Gno='104'
execPc@Pno='A2'
execSec@AD='aa'
createprocedurePin---添加数据
(
@Pnochar(8),
@Pnamechar(30),
@Phonechar(12),
@Addrchar(30))
as
insertintoProvidervalues(@Pno,@Pname,@Phone,@Addr)
createprocedureGin
(@Gnochar(8),
@Gnamechar(50),
@Defauchar(20),
@Gpiceint)
as
insertintoGoodsvalues(@Gno,@Gname,@Defau,@Gpice)
createprocedureSi
(@Snamechar(20),
@Specchar(20),
@ADchar(10))
as
insertintoStoragevalues(@Sname,@Spec,@AD)
execpin@Pno='A5',@Pname='东方红烟业',@Phone='',@Addr='广东'
execSi@Sname='南仓库',@Spec='福明路',@AD='cc'
execGin@Gno='108',@Gname='阿斯玛',@defau='包',@Gpice=10
select*fromProvider
select*fromGoods
select*fromStorage
createprocedurePd---删除
@Pnochar(8)
as
delete
fromProvider
wherePno=@Pno
alterprocedureGd
@Gnochar(8)
as
delete
fromGoods
whereGno=@Gno
createprocedureSd
@Snamechar(20)
as
delete
fromStorage
whereSname=@Sname
execPd@Pno='A5'
execGd@Gno='105'
execSd@Sname='南仓库'
select*fromProvider
select*fromsupply
select*fromStorage
-------触发器
createtriggerP_delete-----删除供应商同时删除它提供的商品及相关信息。
onProvider
fordelete
as
delete
fromSupply
wherePno=(selectPnofromdeleted)
delete
fromInventory
wherePno=(selectPnofromdeleted)
execsp_depends'p_delete'
createtriggerG_delete-------删除商品同时删除它的厂家及库存地址等,。
onGoods
fordelete
as
delete
fromsupply
whereGno=(selectGnofromdeleted)
delete
fromInventory
whereGno=(selectGnofromdeleted)
execsp_depends'G_delete'
droptriggerS_delete
select*fromProvider
select*fromGoods
select*fromSupply
select*fromInventory
execPd@Pno='A2'
execGd@Gno='101'
---------------登陆账号
execsp_addlogin'aa','111','发帖人体',NULL
execsp_adduser'aa','a1'
grantselect,update,insertonProvidertoa1
grantselect,update,insertonGoodstoa1
execsp_addlogin'bb','222','发帖人体',NULL
execsp_adduser'bb','b1'
grantselect,update,insert,deleteonProvidertob1
grantselect,update,insert,deleteonGoodstob1
---------------
9.数据操作验证
9.1基本信息表查询
9.11供应商表基本信息查询
9.12商品表基本信息查询
9.13仓库表基本信息查询
9.14供应关系表基本信息查询
9.15存储关系表基本信息表查询
9.2视图
9.21视图A_info
9.22视图B_info
9.3存储过程
9.31查询
9.32添加
9.33删除
9.4触发器
10.收获与体会
在进行课程设计的一周里。
我从做课程设计的过程中感触颇多。
在这过程中使我对超市商品库存管理系统有了深入的了解。
在做课程设计的时候不断学习数据库,通过实践使我巩固了在这之前所学到理论知识。
也为我以后步入工作的岗位做了很好的铺垫。
本次课程设计是我们自己出题,充分锻炼了我们发现问题、分析问题、解决问题的能力。
其间老师还给我们补充了一些Word的排版知识,尽管开学的时候我们进行过这方面的培训,但是我们对这方面的知识还是太匮乏了。
我以后会抽出课余时间多加强这方面的训练。
以前只是记书本上关于数据库系统的相关功能,以及不同数据库系统功能之间的的对比,但这些大部分只是处在死记的基础上,没有切身实地的感触,这次实习有让我再次对SQLSERVER2000相关功能有了更深一层的理解,比如:
触发器和存储过程。
通过本次实习,我觉得最重要的是要和老师、同学之间多交流,这样会使自己的数据库系统更加的完善。
最后,要特别感谢这次实习的辅导老师,他们总是耐心的为同学们答疑解惑。