




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库实用技术课程设计 项目名称: 仓库管理系统 课程名称: 数据库实用技术 专业班级: 信息与计算科学110班 姓 名: 曾 黎 任课教师: 陈 云 新 一、系统定义 随着各个公司经营的范围慢慢扩大,业务流量比较大,需要处理的数据比较多,为了能对公司的业务进行有效的管理,减少手工操作的繁琐,同时可以根据公司业务的运营情况,分析出公司发展的潜在信息,顺应时代的发展变化,使管理更加简单化。 二、需求分析1、最终仓库管理系统功能如下:(1) 资料管理功能人员信息:用于登记公司的员工信息资料、客户信息资料、和供应商信息资料,对员工信息资料支持员工信息的录入、修改和删除。最高权限的管理员能录入和删除工作人员,普通权限的工作人员只能修改自己的密码产品信息:支持产品信息的录入、修改和删除,可以对各个产品进行查询。(2) 业务管理功能进出仓库明细:用于查看进货明细、进货退货、销售明细、销售退货、实现录入、修改和删除。退货时,需要指定相应的退货单,可以查询进出仓库明细。盘库:通过人工清点当前库存物品,与理论上仓库内物品数量对比,分析盘盈、盘亏问题(3) 统计分析功能物品分析:用于对物品进行分析,主要是销售分析,包括对利润、进货、退货、库存等进行分析,可以通过报表显示。人员分析:由于需求加大,需要各种职务的工作人员,分析职务需求,可供人才参考利润分析:对产品销售的利润进行分析,可以看出货物的供求关系2、给出系统的逻辑模型:数据流程图、数据字典数据流图例子(可根据需要用多层数据流图表示):采购货物数据流图:数据字典:数据项: 仓库:仓库编号,仓库名,仓库类型,管理员,员工编号; 供应商:供应商编号,姓名,联系方式,地址; 供应商供应的货物存入仓库数据结构: 供应商提供货物,存入相应的仓库数据流: 需求的货物进入相应的仓库数据存储: 产品描述,应付款处理过程: 需求货物-送订单号-订单处理-付款-货物入库管理数据流图:数据字典:数据项: 员工:员工编号,姓名,登录密码,性别,生日,联系方式,职称,家庭住址;货物:货物编号,名称,类型,数量,单位,进价,售价,订单号;管理员管理仓库和资料库数据结构: 管理员进行相关的操作,显示相应的信息,或存储相应的物品、资料数据流: 操作信息,操作数据,相关信息表数据存储: 查询时将数据信息显示出来,入出库数据进行存储处理等等处理过程: 管理员操作-获得操作信息-实行相应的处理三、系统设计1、概念结构设计画出系统E-R图。2、逻辑结构设计将E-R图(或其他概念设计图)转换为具体的DBMS对应的关系模式。员工:员工编号,姓名,登录密码,性别,生日,联系方式,职称,家庭住址;货物:货物编号,名称,类型,单位,进价,售价;仓库:仓库编号,仓库名,仓库类型,员工编号;供应商:供应商编号,姓名,联系方式,地址;客户:客户编号,货物编号,姓名,联系方式,地址,订单号;库存: 仓库编号,货物编号,数量 进仓:入单号,进仓时间,入库数量,所付金额 出仓:出单号,出仓时间,出库数量,所付金额 盘库:盘库号,盘库时间,盘库数量 数据库设计:员工表序号字段名称数据类型大小可否为空主键说明1staff_no可变字符10否是员工编号2staff_password可变字符10否否登录密码3staff_name可变字符10否否员工姓名4staff_sex字符2否否性别5staff_birthday日期可否出生日期6staff_phone字符15否否联系方式7staff_rank字符10否否职称8staff_family_address可变字符50可否家庭住址仓库表序号字段名称数据类型大小可否为空主键说明1cangku_no可变字符10否是仓库编号2cangku_name可变字符10否否仓库名3cangku_type可变字符10否否仓库类型4staff_no可变字符10否否员工编号货物表序号字段名称数据类型大小可否为空主键说明1material_no可变字符10否是货物编号2material_name可变字符10否否货物名3material_type可变字符10否否货物类型4material_in_price可变字符10否否进价5material_out_price可变字符10否否出价6material_unit字符4否否单位供应商表序号字段名称数据类型大小可否为空主键说明1supplier_no可变字符10否是供应商编号2material_no可变字符10否是货物编号3supplier_name可变字符10否否供应商姓名4supplier_phone字符15否否联系方式5supplier_address可变字符50可否住址客户表序号字段名称数据类型大小可否为空主键说明1kehu_no可变字符10否是客户编号2kehu_name可变字符10否否客户姓名3kehu_password可变字符10否否登录密码4kehu_phone字符15否否联系方式5kehu_address可变字符50可否住址 进仓表序号字段名称数据类型大小可否为空主键说明1rudan_no整形否否入单号2supplier_no可变字符10否否供应商编号3material_no可变字符10否否货物编号4in_data日期否否进仓时间5ru_qty长整形否否进仓数量6supp_pay长整形否否所付金额7staff_no员工编号10否否员工编号出仓表序号字段名称数据类型大小可否为空主键说明1chudan_no整形否否出单号2kehu_no 可变字符10否否客户编号3material_no可变字符10否否货物编号4out_data日期否否出仓时间5chu_qty长整形否否出仓数量6kehu_pay长整形否否所付金额7staff_no员工编号10否否员工编号库存表序号字段名称数据类型大小可否为空主键说明1cangku_no可变字符10否是仓库号2material_no可变字符10否是货物编号3qty长整形否否数量盘库表序号字段名称数据类型大小可否为空主键说明1panku_no可变字符10否否盘库号2staff_no可变字符10否否员工编号3panku_date日期否否盘库日期4material_no可变字符10否否货物编号5panku_qty长整形否否盘库数量3、系统功能模块图画出系统功能模块图,并对子模块功能进行详细说明。四、详细设计主要的SQL语句-数据库的建立CREATE DATABASE ckglON PRIMARY ( NAME=ckgl_data, FILENAME=D:心语ckgl_data.mdf, SIZE=3, FILEGROWTH=15% )LOG ON( NAME=ckgl_log, FILENAME=D:心语ckgl_log.ldf, SIZE=1, MAXSIZE=100, FILEGROWTH=1)GO -员工表create table staff(staff_no varchar(10) primary key NOT NULL,staff_password varchar(10)NOT NULL,staff_name varchar(10)NOT NULL,staff_sex char(2)NOT NULL,staff_birthday datetime NOT NULL,staff_phone char(15)NOT NULL,staff_rank char(10)NOT NULL,staff_family_address varchar(50)NOT NULL,)GO-货物表create table material(material_no varchar(10) primary key NOT NULL,material_name varchar(10)NOT NULL,material_type varchar(10)NOT NULL,material_in_price varchar(10)NOT NULL,material_out_price varchar(10)NOT NULL,material_unit char(4)NOT NULL,)GO-仓库表create table cangku(cangku_no varchar(10) primary key NOT NULL,cangku_name varchar(10)NOT NULL,cangku_type varchar(10)NOT NULL,staff_no varchar(10)NOT NULL,foreign key(staff_no) references staff(staff_no),)Go-库存表create table cunhuo(cangku_no varchar(10),material_no varchar(10),qty bigint,primary key(cangku_no,material_no),foreign key(cangku_no) references cangku(cangku_no),foreign key(material_no) references material(material_no),)GO-供应商表create table supplier(supplier_no varchar(10),material_no varchar(10),supplier_name varchar(10)NOT NULL,supplier_phone char(15)NOT NULL,supplier_address varchar(50)NOT NULL,primary key(supplier_no,material_no),foreign key(material_no) references material(material_no),)GO-进仓表create table material_in(rudan_no int NOT NULL,supplier_no varchar(10) NOT NULL,material_no varchar(10) NOT NULL,in_data datetime NOT NULL,ru_qty bigint NOT NULL,supp_pay bigint NOT NULL,staff_no varchar(10) NOT NULL,foreign key(supplier_no,material_no) references supplier(supplier_no,material_no),foreign key(staff_no) references staff(staff_no),)GO-客户表create table kehu(kehu_no varchar(10) primary key NOT NULL,kehu_name varchar(10)NOT NULL,kehu_password varchar(10)NULL,kehu_phone char(15)NULL,kehu_address varchar(50),)GO-出仓表create table material_out(chudan_no int NOT NULL,kehu_no varchar(10) NOT NULL,material_no varchar(10) NOT NULL,out_data datetime NOT NULL,chu_qty bigint NOT NULL,kehu_pay bigint NOT NULL,staff_no varchar(10) NOT NULL,foreign key(kehu_no) references kehu(kehu_no),foreign key(material_no) references material(material_no),foreign key(staff_no) references staff(staff_no),)GO-盘库表create table panku ( panku_no varchar(10) NOT NULL, staff_no varchar(10) NOT NULL,panku_date datetime, material_no varchar(10)NOT NULL, panku_qty bigint, foreign key(material_no) references material(material_no),foreign key(staff_no) references staff(staff_no), )Go建立进出仓的存储过程入仓:create procedure material_in_prorudan_no int,supplier_no varchar(10),material_no varchar(10),in_data datetime,ru_qty bigint,supp_pay bigint,staff_no varchar(10),out varchar(20)=0 outputasDECLAREn1 intselect n1=count(material_no) from materialwhere material_no=material_noif (n1=0)beginselect out=此物料不存在,如果要进仓,请先登记新物料信息!returnendelsebegininsert into material_in values(rudan_no,supplier_no,material_no,in_data,ru_qty,supp_pay,staff_no)update cunhuo set qty=qty+ru_qty where material_no=material_noselect out=操作成功!return endgo出仓:create procedure material_out_pro chudan_no int,kehu_no varchar(10),material_no varchar(10),out_data datetime,chu_qty bigint,kehu_pay bigint,staff_no varchar(10),out varchar(20)=0 outputasDECLAREn1 intselect n1=count(material_no) from materialwhere material_no=material_noif (n1=0)beginselect out=此物料不存在!returnendelsebeginif chu_qty(select qty from cunhuo where material_no=material_no)beginselect out=库存数量不足!returnendelsebegininsert into material_out values(chudan_no,kehu_no,material_no,out_data,chu_qty,kehu_pay,staff_no)update cunhuo set qty=qty-chu_qty where material_no=material_noselect out=操作成功!return endendgo触发器:1 入库触发器创建:要求:在添加入库记录时,必须修改库存表,分两种情况,一是(material_no,cangku_no)在库存表中有记录,修改库存数量即可,二是没有记录时,要添加相关记录。create trigger WHENRKon RUKUfor insertas DECLARE material_no CHAR(5), cangku_no char(5),N_um intSELECT material_no= material_no, cangku_no=cangku_no,N_um=RKnumFROM INSERTEDif (EXists(select material_no from STORE WHERE material_no=material_no AND cangku_no=cangku_no)beginupdate STOREset NUM=NUM+N_umwhere material_no=material_no AND cangku_no=cangku_noendif(not EXists(select material_no from STORE WHERE material_no=material_no AND cangku_no=cangku_no)begininsert into STOREvalues(material_no,cangku_no,N_um)end2 出库触发器创建:要求:在添加出库记录时,必须满足(material_no,Cno)外码约束,也就是无法添加(material_no,cangku_no)不在库存表中的记录。满足外码约束后,如果出库数量不大于库存数量,修改库存数量即可,但当出库数量大于库存数量,将无法添加相关记录。create trigger WHENCKon CUKUfor insertas DECLARE material_no CHAR(5), cangku_no char(5),N_um int,material_out CHAR(5)SELECT material_no= material_no, cangku_no=cangku_no,N_um=CKnum,material_out=material_outFROM INSERTEDif (EXists(select material_no from STORE WHERE material_no=material_no AND cangku_no=cangku_no and NUM=N_um)beginupdate STOREset NUM=NUM-N_umwhere material_no=material_no AND cangku_no=cangku_noendif (EXists(select material_no from STORE WHEREmaterial_no=material_no AND cangku_no=cangku_no and NUMN_um)begindelete from CUKU where material_out=material_outend2完整性设计 实体完整性:在商品表中定义商品号material_no为主码;在仓库表中定义仓库号cangku_no为主码;在库存表中定义商品号和仓库号(material_no,cangku_no)为主码;在管理员表中定义管理员编号staff_no为主码;在客户表中定义客户编号kehu_no为主码;在入库表中定义入库号rudan_no为主码;在出库表中定义出库号material_out为主码;在密码表中定义管理员编号Mno为主码; 实体完整性检查和违约处理:1.检查主码值是否唯一,如果不唯一则拒绝插入或修改2.检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改; 参照完整性:在库存表中定义商品号和仓库号为建立在商品表和仓库表上的外码;在入库表中定义商品号为建立在商品表上的外码,仓库号为建立在仓库表上的外码,客户号为建立在客户表上的外码,管理员编号为建立在管理员表上的外码;在出库表中定义商品号为建立在商品表上的外码,仓库号为建立在仓库表上的外码,客户号为建立在客户表上的外码,管理员编号为建立在管理员表上的外码;在密码表中定义管理员编号为建立在管理员表上的外码。 参照完整性的检查和违约处理: 1拒绝执行:不允许该操作执行。该策略一般设置为默认策略; 2. 级联操作:当删除或修改被参照表的一个元组造成了与参照表的不一致,则删除或修改参照表中的所有造成不一致的元组; 3. 设置为空值:当删除或修改被参照表的一个元组时造成了不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值; 用户自定义完整性:在管理员表中,添加完整性约束条件,年龄在1860之间;性别只能在男女两个选项中取值;姓名不能为空;否则,无法插入;主要模块的程序流程图。1、2、3、4、五、简单查询示例USE ckglGOSELECT staff_no ,staff_password,staff_name,staff_sex,staff_birthday ,staff_phone,staff_rank ,staff_family_address FROM staffGO增加一条员工信息INSERT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东郁南县兴华产业投资有限公司、郁南县兴瑞产业投资有限公司招聘员工6人模拟试卷及答案详解(名师系列)
- 2025安康市交通运输局定向招聘残疾工作人员(2人)模拟试卷及答案详解(历年真题)
- 铝箔腐蚀氧化工决策能力考核试卷及答案
- 铁路机车制修工岗位职业健康技术规程
- 2025广西桂林市象山区教育局招聘编外聘用人员1人考前自测高频考点模拟试题带答案详解
- 版权许可合同 电视剧播映权转让协议8篇
- 2025广西百色市西林县发展和改革局公开招聘3人考前自测高频考点模拟试题完整答案详解
- 自由锻锻工跨境物流规则考核试卷及答案
- 2025河北承德市滦平县招聘社区工作者22人模拟试卷及完整答案详解一套
- Penicillamine-CoA-Penicillamine-coenzyme-A-生命科学试剂-MCE
- 新型农药纳米制剂的合成与表征
- 肝功能不全的护理查房
- 游乐设备施工方案
- 【公开课教案】《蹲踞式起跑》教案
- (完整版)法律文书送达地址确认书
- 商用燃气销户委托书范本
- 艾青自述 我的创作生涯
- 患者发生药物不良反应的应急预案及流程
- GB/T 19279-2003聚乙烯管材耐慢速裂纹增长锥体试验方法
- 五年级上道德与法治《我们神圣的国土》上课用课件
- 华为的时间管理学习培训讲义
评论
0/150
提交评论