数据库设计-----中草药销售管理系统介绍(共21页).doc
《数据库设计-----中草药销售管理系统介绍(共21页).doc》由会员分享,可在线阅读,更多相关《数据库设计-----中草药销售管理系统介绍(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上上海电力学院数据库设计课程设计题目: 中草药销售管理系统 学生姓名: 李辰源 学 号: 班 级: 院系: 计算机科学与技术学院 专业年级: 计算机科学与技术(卓越) 级 2015年6 月10 日目录专心-专注-专业一、需求分析(1) 问题描述: 中草药销售管理系统主要面向于小型商户,实现管理层,门面销售层人员的权限分离,通过管理仓库,销售记录等数据统计并显示各类信息。(2) 系统性要求:i. 信息录入:进货、销售等环节,都需要往数据库中添加信息。ii. 信息修改:当数据库中信息发生了改变,需要及时修改信息iii. 信息查询:可以按条件查询药品基本信息、进货信息、销售信
2、息、当前仓库中的库存情况等,并尽可能实现多条件组合查询。iv. 统计、汇总各药品在规定时间段内的进货总量、销售总量等。v. 将近过期的商品、库存量较少的商品请给出提醒。vi. 用户权限的限定(超级用户,可以使用本系统提供的任何功能;管理人员,对药品的进货,定价等进行管理;销售员工用户,可以记录和查询货物的销售情况,但不可以登记商品的入库操作)(3) 完整性规则:a) 设定缺省约束。如进货日期为系统当前日期。b) 设置非空约束。如药品名称。c) 实施CHECK约束,如进货单价、进货数量应大于0等。d) 实施CHECK约束,约束药品类别为:中药、草药、中成药。e) 设计触发器,实现库存信息的自动更
3、新。(4) 安全性规则:a) 不同用户的权限界面,通过不同的登陆账户区分账户并开启不同的界面。b) 分离最低权限用户同时拥有仓管权限和销售权限的可能性。c) 程序代码中界面代码和数据库访问代码分开,加强安全性。 二、概念结构设计数据库E-R图:实体转化为关系模式:销售记录:(销售编号,仓位号,销售单价,销售量,柜台号,销售人工号,销售日期)库存信息:(仓位号,进货编号,库存数量)进货信息:(进货编号,商品编号,生产日期,进货日期,有效期,进货单价,进货数量)商品信息:(商品编号,商品类别,商品名称,产地)采购:(采购编号,商品编号,生产商,采购价格)权限层次:权限等级:超级权限为超级用户所有,
4、面向对象为企业的最高领导人,可使用所有项目,查看各项资料。一级权限为经理用户所用,面向对象为企业管理层,除查看企业季度营销外,可使用其他生育功能。二级权限为销售员所用,面向对象为企业营销最前方的工作人员,权限较低。功能模块图:功能模块:仓库管理:查询在库药物,仓储记录等一系列仓库记录,控制进/出货,查询记录。销售记录:查询搜友销售记录,可以添加新的销售记录,并自动与仓库记录同步。信息查询:通过指定药物类别,名称等一系列信息,查看相应的记录。季度查询:从整体角度观察某段时间的进出货情况,帮助企业制定战略。逼仓巡视:查询所有记录,确认其中逼仓,逼期药物。三、逻辑结构设计(1)模式设计:销售记录:(
5、销售编号,仓位号,销售单价,销售量,柜台号,销售人工号,销售日期)库存信息:(仓位号,进货编号,库存数量)进货信息:(进货编号,商品编号,生产日期,进货日期,有效期,进货单价,进货数量)商品信息:(商品编号,商品类别,商品名称,产地)采购:(采购编号,商品编号,生产商,采购价格) Item :药品信息字段名类型大小是否可为空备注药品编号Int否primary key药品类别Varchar20否Check_约束药品名称varchar20否产地varchar20否 PutIn :进货信息字段名类型大小是否可为空备注进货编号Int否primary key药品编号Int否Foreignkey生产日期d
6、ate否进货日期date否缺省默认值(当天日期)有效期date否进货单价Int否进货数量Int否 Sale:销售信息字段名类型大小是否可为空备注销售编号Int否primary key仓位号Int否Foreignkey销售单价Int否销售数量Int否柜台号Int否销售人工号Int否销售日期Date否缺省默认值(当天日期) Warehouse:仓储信息字段名类型大小是否可为空备注仓位号Int否primary key进货编号Int否Foreignkey库存数量Int否 Item :采购字段名类型大小是否可为空备注采购编号Int否primary key药品名称Varchar20否Foreignkey采
7、购价格Int否生产商varchar20否采购数量Int否(2)子模式设计:I、视图:逼仓情况(进货编号,药品名称,进货单价,进货数量,有效期,库存数量)仓储情况(仓位号,药品编号,进货编号,药品类别,药品名称,进货日期,有效期,库存数量,产地)进货情况(进货编号,药品编号,药品类别,药品名称,仓位号,进货日期,有效期,进货数量,产地,进货单价)销售情况(销售编号,.药品编号,柜台号,销售人工号,药品名称,销售单价, 进货数量,销售数量,库存数量,药品类别,仓位号,销售日期)选项卡专用(药品类别,药品名称,产地,库存数量,生产日期,进货日期,有效期)II、查询信息:A、 查询进货信息:进货编号、
8、药品编号、药品类型、药品数量、进货日期、有效期、生产日期B、 查询药品信息:药品编号、药品数量、药品名字、生产日期、有效期、产地C、 查询销售信息:进货编号、药品编号、进货单价、销售数量、进货日期D、 库存信息查询:药品编号、库存数量、有效期、生产日期四、数据库的物理设计为了提高在表中搜索元组的速度,在实际实现的时候应该基于某些属性建立索引。给出所建立的索引。(包括按哪些表中哪些属性按升序还是降序来创建索引及相应的T-SQL的创建语句)。Create index index_Meon Medicine(药品编号)Create index index_kucunon Warehouse(仓位号)
9、五、数据库设计实现及运行(1)数据库的创建T-SQL语句:create database Medicine ( name=Medicine_data, filename=D: Medicine _data.mdf, size=5mb maxsize=100mb filegrowth=15% )(2)数据表的创建(举例)T-SQL语句:说明:若有完整性约束的一方面可以创建时同时实现。按需求及自行设计模块中所实现的情况,在该部分对完整性约束加以实现。drop table Salecreate table Sale( 销售编号 int identity(1,1) primary key, 仓位号 i
10、nt not null, 销售单价 int not null, 销售量 int not null,柜台号 int not null 销售人工号 int not null销售日期 date not null)(3)视图的创建(仅需给出自己设计模块中所用的视图)T-SQL语句:Create view 仓储情况AsSELECT TOP (100) PERCENT dbo.PutIn.进货编号, dbo.Item.药品名称, dbo.PutIn.进货单价, dbo.PutIn.进货数量, dbo.PutIn.有效期, dbo.Warehouse.库存数量FROM dbo.Item INNER JOIN
11、 dbo.PutIn ON dbo.Item.药品编号 = dbo.PutIn.药品编号 INNER JOIN dbo.Warehouse ON dbo.PutIn.进货编号 = dbo.Warehouse.进货编号WHERE (DATEADD(yy, - 1, dbo.PutIn.有效期) GETDATE() OR (dbo.Warehouse.库存数量 数量 )BEGIN update Warehouse set 库存数量 =(select 库存数量 from Warehouse where 仓位号=仓位号)-数量 where 仓位号=仓位号ENDelseBEGINreturn 2ENDE
12、NDelseBEGINreturn 3END 在宿主语言中调用存储过程代码段(粘贴):public void OutW(int t1,int t2)/出货tryClass.forName(driverName);Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);CallableStatement cmd=dbConn.prepareCall(call Out(?,?);cmd.setInt(1, t1);cmd.setInt(2, t2);cmd.execute();cmd.close();catch(E
13、xception e)e.printStackTrace();javax.swing.JOptionPane.showMessageDialog(null, 无法链接数据库);测试结果粘贴:此处举例的存储过程为仓库出货过程:(5)触发器的定义实现(仅需给出自己设计模块中所用的)T-SQL语句:USE MedicineGO/* Object: Trigger dbo.UpIn Script Date: 2015/6/11 12:32:32 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER TRIGGER dbo.UpIn ON dbo.Pu
14、tIn FOR InsertAS declare 仓位号 INTdeclare 进货编号 INTdeclare 库存数量 INTselect 进货编号=进货编号from INSERTEDselect 库存数量=进货数量from INSERTEDselect 仓位号=(1000*RAND()begininsertinto Warehousevalues (仓位号,进货编号,库存数量)END测试结果:该触发器作用于进货记录表,作用是当出现新插入行为时,将相应信息插入库存表。1)插入数据操作insert into PutIn values(+t1+,+t2+,+t3+,+t4+,+t5+,+t6+,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 中草药 销售 管理 系统 介绍 21
限制150内