ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:2.77MB ,
资源ID:11837873      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11837873.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图书销售系统整理.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图书销售系统整理.docx

1、图书销售系统整理数据库原理 课程设计评语: 学 院 计算机工程 班 级 计算1013 姓 名 陈高伟 学 号 * 成 绩 指导老师 林颖贤 2021年 1 月9日第一章引言1.1课题研究背景与意义现如今图书销售行业开展迅速,大大小小的书店到处可见,特别是一些开展较大的书城采用大规模的连锁经营方式。随着规模的扩大传统的图书管理已经不能适应开展的需要。图书管理工作繁琐,销售频繁,包含大量的信息数据,因此就需要一个完善的图书销售管理系统来实现对这些数据的有效管理。本系统主要任务就是对书店、图书、顾客、销售信息、查询进行统一管理,满足各类用户的需求。本系统在功能上要实现书店进货功能,图书统计功能,书店

2、销售功能等。我通过对世面上的书城如新华书店和学校里的小书店进行了初步的了解,发现其业务主要是集中在对图书的管理和图书的销售上。对图书的管理工作量较大,采用手工的方式还容易出错,并且不能满足顾客对图书的详细的查询功能。本系统在设计中考虑和克服了上诉的诸多问题,增强了实用性。1.2本课题研究内容与目标 1.2.1 研究内容本课题是通过SQL Server和相应的面相对象语言来制作一个面相书店用户的图书销售管理系统。1.2.2 研究目标 本图书销售管理系统就是要求图书管理人员通过该系统对图书、顾客、管理员、购置信息等进行统一管理,从而实现功能上的销售图书、管理图书库存量、图书信息、顾客信息和用户信息

3、以及相应信息查询。这就要求管理人员能够对数据库熟悉操作,简单的表查询、触发器的建立、存储过程的建立以及用户自定义函数的建立等等这些管理数据库的方法都能对图书馆里系统的管理起到事半功倍的效果。最后通过应用这些命令来建立一个完整的图书销售管理系统。本图书销售管理系统的开发语言是JAVA,开发环境是,数据库采用SQL Server 2021。 1.4 体系结构设计 本次课程设计的图书销售管理系统采用了C/S体系结构设计,即采用了客户端和效劳器,这里的客户端主要是应用程序界面,效劳器是数据库后台。通过对前台界面的操作,来实现相应的对数据库信息的增、删、改功能,如果操作正确那么将运行显示相应结果,对应修

4、改后台数据库内容,信息一旦提交,将不能修改;前台页面也调用后台数据库编写好的存储过程和触发器,来实现操作,客户端也有很好的权限控制,这样是为了防止用户的恶意操作,比方说:在登录界面,只有密码和登录名都正确才能进入系统,并且不同的方式将进入不同的操作页面。 第二章、需求分析2.1 信息要求 图2-12.2 处理要求 2.3 数据字典 2-1图书表列名 中文名 数据类型是否允许空 备注Book_id图书编号 varchar(13) 否主键Typeid图书类型编号 varchar(13) 否外键Bookname图书名称 varchar(40) 否Writer作者 varchar(21) 否Trans

5、lator翻译者varchar(30) 是Publisher出版社 varchar(50) 是 Date出版时间 Datetime 是Price价格Money 是Insum库存量Int 是 2-2 顾客表列名 中文名 数据类型是否允许空 备注Reader_id顾客编号 varchar(13) 否主键kname顾客姓名 varchar(10) 否Sex性别 varchar(2) 是Age年龄Int 是Identitycard身份证号 varchar(30) 否 Tel 号码 varchar(50) 是 2-3购书信息表列名 中文名 数据类型是否允许空 备注Id订单编号 int 否主键Book_i

6、d图书编号 varchar(13) 否外键Reader_id顾客编号 varchar(13) 否外键Buynum购置数量 int 是默认为1Buydate购置日期Datetime否默认为系统时间Buybookname图书姓名 varchar(40) 是 2-4管理员(用户)表列名 中文名 数据类型是否允许空 备注Id用户idInt 否主键Yname管理员姓名varchar(20)否Sex性别varchar(2)是Tel 号码varchar(12)是Ypassword管理员密码varchar(10)是Ytype管理员权限varchar(1)是 2-5进货表列名 中文名 数据类型是否允许空 备注B

7、ook_id图书编号 varchar(13) 否外键,唯一Date进货时间 Datetime 否Number进货量 Int 否Operator操作管理员varchar(6) 否Checkandaccept是否验收Int 否Zk折扣Float 是2-6图书类型表列名 中文名 数据类型是否允许空 备注Id图书类型编号 varchar(13) 否主键Typename图书类型名称 varchar(20) 否2.3.2、数据结构图书表book_id,typeid,bookname,writer,translator,publisher,date,price,insum;顾客表reader_id,knam

8、e,sex,age,identitycard,tel;购书信息表id,book_id,reader_id,buynum,buydate,buybookname;管理员(用户)表id,yname,sex,tel,ypassword,ytype;进货表book_id,date,number,operator,checkandaccept,zk;图书类型表id,typename。2.3.3、数据流编号名称来源去向组成1身份信息系统管理员,一般管理员应用系统登录名+密码2授权信息应用系统系统管理员,一般管理员3错误身份信息应用系统系统管理员,一般管理员4查询请求系统管理员,一般管理员应用系统查询对象识

9、别符如book_id,reader_id等5查询结果应用系统系统管理员,一般管理员被查询对象具体信息6管理请求系统管理员,一般管理员应用系统识别符book_id等+类型7管理结果信息应用系统系统管理员,一般管理员被管理对象处理结果8非法请求应用系统系统管理员,一般管理员非法请求提示信息9修改请求系统管理员,一般管理员应用系统被修改对象具体信息2-6 数据流表 2.3.4、数据存储图书表:用于存放图书信息;顾客表:用于存放顾客信息;购书信息表:用于存放图书销售报表;管理员用户表:用于存放管理员信息;进货表:用于存放图书进货信息;图书类型表:用于存放图书类型信息。2.4 平安性和完整性要求系统具有

10、较高的平安性能,在SQLServer中定义存储过程及相应的触发器来区分系统管理员与一般管理员的权限,实现平安性。 系统管理员登入名和密码输入正确后可才可进入系统,而且只有系统管理员书店店主在数据库中添加了一般管理员后,并且这些一般管理员登录名和密码的输入正确之后才能进入系统对销售系统进行操作,否那么系统将拒绝用户的非法访问,以保证系统的平安,并且系统也控制了普通用户和系统管理员的权限,防止用户恶意操作或者不是成心的操作导致后台数据库的不一致。 系统为了保证数据的完整性,在数据库里面写了许多触发器,比方当用户进行图书信息添加操作的时候,可以自动更改图书表里面的库存量;用户进行销售操作后通过触发器

11、也可以修改图书表的对应图书的库存量等。据此来维护数据库的数据完整性,并且在进行用户界面交互操作的时候,会判断输入的信息,如果信息有误或者无意义,系统将拒绝对后台数据库的更改,因此系统具有很强的数据完整性。 第三章、概念结构设计总ER图 图3-1整体E-R图 第四章、逻辑结构设计.1 关系模型 图4-142数据模型优化1.图书类型表图书类型编号,图书类型名函数依赖:图书类型编号 - 图书类姓名从函数依赖图可以看出,该关系中不存在局部函数依赖、传递函数依赖,且只有图书类型编号能够确定其它各项。所以该关系是BCNF范式。2.图书表图书编号,图书类型编号,图书名称,作者名,译者名,出版社,出版日期,价

12、钱,库存量函数依赖:图书编号-图书名称, 图书编号-作者名,图书编号-译者名, 图书编号 -出版社,图书编号-出版日期,图书编号-价钱,图书编号-库存量从函数依赖图可以看出,该关系中不存在局部函数依赖、传递函数依赖,且只有图书编号能够确定其它各项。所以该关系是BCNF范式。3.顾客表顾客编号,顾客名称,性别,年龄,证件号码, 号码函数依赖:顾客编号-顾客名称,顾客编号-性别,顾客编号-年龄,顾客编号-证件号码,顾客编号- 号码。从函数依赖图可以看出,该关系中不存在局部函数依赖、传递函数依赖,且只有顾客编号能够确定其它各项。所以该关系是BCNF范式。4.订购信息表订单号,图书编号,客户编号,购置

13、数量,销售时间,销售日期,图书名称函数依赖:订单号-客户编号,订单号-购置数量,订单号-销售时间,订单号-销售日期,订单号-图书名称,订单号-图书编号,图书编号-图书名称。 从函数依赖图可以看出,该关系中不存在局部函数依赖,但存在传递函数依赖订单号-图书编号,图书编号-图书名称故需对表进行分表:分表一订单号,图书编号,客户编号,购置数量,销售时间,销售日期分表二图书编号,图书名称经过分表后,实现了关系中不存在局部函数依赖、传递函数依赖,所以改后的关系是第三范式。5.管理员表管理员编号,管理员名称,性别, 号码,密码,管理员级别函数依赖:管理员编号-管理员名称,管理员编号-性别,管理员编号- 号

14、码,管理员编号-密码,管理员编号-管理员级别 从函数依赖图可以看出,该关系中不存在局部函数依赖、传递函数依赖,且只有管理员编号能够确定其它各项。所以该关系是BCNF范式。6.进货表图书编号,进货日期,进货数量,操作员,是否验收,折扣函数依赖:图书编号-进货日期,图书编号-进货数量,图书编号-操作员,图书编号-是否验收,图书编号-折扣。从函数依赖图可以看出,该关系中不存在局部函数依赖、传递函数依赖,且只有图书编号能够确定其它各项。所以该关系是BCNF范式。 第五章、数据的实施与维护51存储过程设计 因为在设计系统的时候,数据库信息的增、删、改以及查询都是用Java直接在java语句里面嵌套SQL

15、语句来实现功能,在数据库中存储过程的设计主要是针对数据库平安性、图书信息模糊查找和数据库备份恢复这块。存储过程名功能入口参数权限proc_role_grant创立一般管理员角色所要创立的角色名系统管理员、一般管理员proc_模糊查找实现图书信息的模糊查找查找的字符模式串系统管理员、一般管理员sq_backup实现备份数据库数据库名系统管理员 创立一般管理员角色 参数所要创立的角色名 存储过程名:proc_role_grantcreate proc proc_role_grant rname varchar(20)asbegindeclare sqlstr varchar(255) -sql语句

16、的字符串set sqlstr=create role +rname+ authorization dboexec (sqlstr)set sqlstr=grant select,insert,update,delete on bookinfo to +rnameexec (sqlstr) set sqlstr=grant select,insert,update,delete on booktype to +rnameexec (sqlstr) set sqlstr=grant select,insert,update,delete on buy to +rnameexec (sqlstr)

17、set sqlstr=grant select,insert,update,delete on ordert to +rnameexec (sqlstr) set sqlstr=grant select,insert,update,delete on reader to +rnameexec (sqlstr)set sqlstr=deny select,insert,update,delete on operator to +rnameexec (sqlstr)endgo实现图书信息的模糊查找 参数查找的字符模式串 存储过程名:proc_模糊查找 代码如下:create procedure p

18、roc_模糊查找模式串 varchar(20)as begin declare posion int declare s varchar(30),string varchar(30) set posion=1-初始化,求字串的起始位置 set s=% while posion=len(模式串)-当位置大于模式串长度相等的时候,退出循环 begin select string=substring(模式串,posion,1)-取字串 set s=s+string+%-连接字符串 set posion=posion+1 end print s select * from bookinfo where

19、 bookname like s end go实现备份数据库 参数数据库名 存储过程名:sq_backup 代码如下:create proc sq_backup db_name varchar(20)asbegindeclare strsql varchar(255)set strsql=sp_addumpdevice disk,+db_name+备份设备,d:+db_name+备份设备.bakexec (strsql)set strsql=backup database +db_name+ to +db_name+备份设备with name=+db_name+_+convert(varcha

20、r,getdate(),120)+exec (strsql)endgo52 触发器设计 触发器名功能类型作用表operator_insert用户插入触发创立对应数据库用户,并授予相关权限insert用户表operatorbookinfo_insert触发器实现插入一条图书信息,库存量自动加1insert图书表bookinfobookinfo_update创立更新触发器,库存量为0时提醒管理员订购新书update图书表bookinfobuy_insert触发器实现销售带动图书表库存量修改insert销售表buyordert_insert触发器实现新书订购来补充对应图书库存量Insert进货表or

21、dert 表5-1代码:-用户插入触发创立对应登录名和数据库用户,并授予相关权限-create trigger operator_inserton operator for insert asbegindeclare sqlstr varchar(255) -sql语句的字符串declare type varchar(1),name varchar(20) select type=ytype,name=yname from inserted set sqlstr=create user +name+ for login cgw with default_schema=dboexec (sqls

22、tr)if type=1begin exec sp_addrolemember db_owner,nameendelse beginif type=2 begin exec sp_addrolemember Role_Emp,name endelse rollbackendendgo -触发器插入一个图书信息,库存量自动加-create trigger bookinfo_inserton bookinfo for insertasbegin declare bookid varchar(13)select bookid=book_id from insertedif exists(select

23、 * from bookinfo where book_id=bookid) update bookinfo set insum=insum+1 where book_id=bookidelse update bookinfo set insum=1 where book_id=bookidendgo-创立更新触发器,库存量为时提醒管理员订购新书-create trigger bookinfo_updateon bookinfo for updateasbegin declare sum intselect sum=insum from insertedif sum=0 begin print

24、 这本书的库存缺乏了,请及时补充! endendgo-触发器实现销售带动图书表库存量修改-create trigger buy_inserton buy for insertasbegindeclare bookid varchar(13)select bookid=book_id from insertedupdate bookinfo set insum=insum-1 where book_id=bookid endgo-触发器实现新书订购来补充对应图书库存量-create trigger ordert_inserton ordert for insertasbegindeclare i

25、n_num int,bkid varchar(13)select in_num=number,bkid=book_id from insertedupdate bookinfo set insum=insum+in_num where book_id=bkid endgo 53 程序的模块设计 图5-1注释:管理员登录,输入的登录名和密码与管理员表里面的信息进行匹配,当两者都匹配成功才进入管理员操作界面。关键代码如下: private class BookLoginAction implements ActionListener public void actionPerformed(fina

26、l ActionEvent e) user = Business.check(username.getText(), new String(password.getPassword();/调用business方法 if (user.getName() != null) /判断用户名是否为null try Main frame = new Main();/登陆成功,创立一个主窗体 frame.setVisible(true);/设置其可见 BookLogin.this.setVisible(false);/设置登录窗体为不显示 catch (Exception ex) ex.printStack

27、Trace(); else JOptionPane.showMessageDialog(null, 请输入正确的用户名和密码!);/弹出提示框 username.setText();/设置用户名输入框为空 password.setText();/设置密码输入框为空 图5-2注释:在java中创立一个Main类来显示系统操作界面。关键代码如下:package main;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ComponentAdapter;import java.awt.event.ComponentEvent;/import .URL;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JDesk

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1