1、每日农产品价格行情管理系统样本数据库课程设计题目: 每日农产品价格行情管理系统 专 业: 信息管理与信息系统 班 级: 一、系统需求分析 随着科学技术发展,社会进步,计算机和互联网技术迅速发展,信息传播速度成倍加快。如何才干迅速精确地掌握市场最新动态、良好货源和收购商成为了产品商家和生产商在商场上立于不败之地重要保证。农产品这一块也不例外,及时地掌握农产品每日价格行情成为了农户和农产品批发商迫切需求。每日农产品价格行情系统就是建立在这样一种基本上,为农户和农产品批发商建立一种理解农产品市场最新动态以及供求信息平台。系统重要功能1. 录入、修改和查询农产品供求信息(重要是以各个产品品种类别,产地
2、来划分产品供求信息)2. 录入、更新和查询农产品价格行情信息(上涨或是下跌)3. 给顾客赋予权限和信息维护。二、系统功能构造图功能构造图: 三、数据库设计1.系统ER图2.关系模式设计关系模式:农户:(农户编号,农户名,地区,电话) 农产品:(产品编号,产品类别,产品名称,产地) 批发商:(批发商编号,批发商店名,地区,电话,联系人) 零售商:(零售商编号,零售商店名,地区,电话,联系人)供应表(供应编号,农户编号,产品编号,供应量,供应时间,供应价格)进货表(进货编号,产品编号,批发商编号,进货量,进货时间,进货价格)批刊登(批发编号,产品编号,批发商编号,零售商编号,批发量,批发时间,批发
3、价格)四、数据字典1. 数据项数据构造:2.数据构造:3.数据存储名字:分类汇总表阐明:存储产品各类信息构造: Cno(编号) ProductStyle(产品类型) ProductName(产品名称) Higest_Price(最高价) Lowest_Price(最低价) Bulk_Price(大宗价) Ave_Price(平均价)五数据库实现1.数据库表定义每日农产品价格管理系统create database 每日农产品价格管理系统供应商表(Supplier)字段名字段类型长度主键字段值约束相应中文名SupIDvarchar10PNot null供应商编号SupNameVarchar25No
4、t null供应商名称SupareaVarchar50Not null供应商地址SupStyleIntNot null供应商类型SupPhoneVarchar20Not null 联系方式SupPWVarchar16Not null 供应商密码create table Supplier(SupID varchar(10) not null primary key,SupName varchar(25) not null,SupArea varchar(50) not null,SupStyle int not null,SupPhone varchar(20) not null,SupPW V
5、archar(16) not null,)农产品信息表(ProductInfo)字段名字段类型长度主键字段值约束相应中文名ProductIDvarchar10PNot null农产品编号ProductStyleVarchar10Not null农产品类别ProductNameVarchar50Not null产品名称ProductOriginVarchar20Not null产地ProductPriceMoneyNot null 产品价格SupIDvarchar10Not null供应商编号DistIDvarchar10Not null销售商编号create table ProductInfo
6、(ProductID varchar(10) not null primary key,ProductStyle varchar(10) not null,ProductName varchar(50) not null,ProductOrigin varchar(20) not null,ProductPrice money not null,SupID varchar(10) not null foreign key references Supplier(SupID),DistID varchar(10) not null foreign key references Distribut
7、er(DistID),)顾客表(UserInfo)字段名字段类型长度主键字段值约束相应中文名UserIDvarchar10PNot null顾客编号UserNameVarchar25Not null顾客名称UserPWVarchar16Not null顾客密码UserStyleIntNot null顾客类型UserPhoneVarchar20Not null 联系方式UserAreaVarchar50Not null 顾客地址create table UserInfo(UserID varchar(10) not null primary key,UserName varchar(25) no
8、t null,UserPW varchar(16) not null,UserStyle int not null,UserPhone varchar(20) not null,UserArea varchar(50) not null,)销售商表(Distributer)字段名字段类型长度主键字段值约束相应中文名DistIDvarchar10PNot null销售商编号DistNameVarchar25Not null销售商名称DistareaVarchar50Not null销售商地址DistStyleIntNot null销售商类型DistPhoneVarchar20Not null 联
9、系方式DistPWVarchar16Not Null销售商密码create table Distributer(DistID varchar(10) not null primary key,DistName varchar(25) not null,Distarea varchar(50) not null,DistStyle int not null,DistPhone varchar(20) not null,DistPW varchar(16) not null,)分类汇总表(C_Summery)字段名字段类型长度主键字段值约束相应中文名C_Novarchar10PNot null分类
10、汇总编号ProductStyleVarchar10Not null商品类型ProductNameVarchar50Not null商品名称Higest_PriceMoneyNot null最高价Lowest_PriceMoneyNot null最低价Bulk_PriceMoneyNot null 大宗价Ave_PriceMoneyNot null平均价ProductIDvarchar10Not null农产品编号create table C_Summery(C_No varchar(10) not null primary key,ProductStyle varchar(10) not nu
11、ll,ProductName varchar(50) not null,Higest_Price money not null,Lowest_Price money not null,Bulk_Price money not null,Ave_Price money not null,ProductID varchar(10) not null foreign key references ProductInfo(ProductID),)2.数据库关系图3. 触发器编写1、CREATE TRIGGER UserInfo_delete1 ON UserInfo for DeleteAS begi
12、n delete Distributer from Distributer dt,deleted d where dt.DistID=d.UserIDEND GO/*在顾客表中删除顾客同步将销售商表中相应信息删除掉*/2、CREATE TRIGGER UserInfo_delete ON UserInfo for DeleteAS begin delete Supplier from Supplier sp,deleted d where sp.SupID=d.UserIDEndGo/*在顾客表中删除顾客同步将供应商表中相应信息删除掉*/3、CREATE TRIGGER UserInfo_in
13、sert ON UserInfo for insertAS declare UserID varchar(10), UserName Varchar(25), UserPW Varchar(16), UserStyle Int, UserPhone Varchar(20), UserArea Varchar(50) select UserID=UserID, UserName=UserName, UserPW=UserPW, UserStyle=UserStyle, UserPhone=UserPhone, UserArea=UserArea from inserted where UserS
14、tyle=001or UserStyle=002begin insert into Supplier(SupID,SupName,SupPW,SupPhone,SupStyle,SupArea) values(UserID,UserName,UserPW,UserPhone,UserStyle,UserArea)EndGo/*当在顾客表中插入信息中“顾客类型”为“001”或“002”时,在供应商表中插入相似信息*/4、CREATE TRIGGER UserInfo_insert1 ON UserInfo for insertAS declare UserID varchar(10), User
15、Name Varchar(25), UserPW Varchar(16), UserStyle Int, UserPhone Varchar(20), UserArea Varchar(50) select UserID=UserID, UserName=UserName, UserPW=UserPW, UserStyle=UserStyle, UserPhone=UserPhone, UserArea=UserArea From inserted where UserStyle=003or UserStyle=004begin insert into Distributer(DistID,D
16、istName,DistPW,DistPhone,DistStyle,DistArea) values(UserID,UserName,UserPW,UserPhone,UserStyle,UserArea)EndGo/*当在顾客表中插入信息中“顾客类型”为“003”或“004”时,在销售商表中插入相似信息*/5、CREATE TRIGGER UserInfo_update ON UserInfofor UPDATEAS if Update(UserID) BEGIN Update Supplier set SupID=i.UserID from Supplier sp,deleted d,i
17、nserted i where sp.SupID=d.UserIDEndGo/*在顾客表更新顾客信息时将供应商表中相应信息进行同步更新*/6、CREATE TRIGGER UserInfo_update1 ON UserInfofor UPDATEAS if Update(UserID) BEGIN Update Distributer set DistID=i.UserID from Distributer dt,deleted d,inserted i where dt.DistID=i.UserIDEND Go/*在顾客表更新顾客信息时将销售商表中相应信息进行同步更新*/7、CREATE
18、 TRIGGER Product_delete ON ProductInfofor DeleteAS begin delete C_Summery from C_Summery cs,deleted d where cs.ProductName=d.ProductNameEND Go/*在顾客表删除农产品信息时将汇总表中相应信息进行删除*/8、CREATE TRIGGER Product_update ON ProductInfofor updateAS begin update C_Summery set ProductName=i.ProductName from C_Summery cs
19、,deleted d,inserted i where cs.ProductName=d.ProductNameEND Go/*在顾客表更新农产品信息时将汇总表中相应信息进行同步更新*/4. 存储过程概述:如下所有存储过程:插入:表达插入一条新记录(如果记录已经存在,则插入失败)。修改:表达修改一条记录(如果记录存在则修改,否则不能修改)删除:表达删除一条记录(如果记录存在则删除,否则不能删除在此,我没有考虑到级联关系,感觉删除这个过程用触发器做比较好,因而,删除应由触发器实现。)。查询:表达查询记录(依照查询条件,显示相应查询成果)供应商表存储过程:1插入 (如果该记录号已经存在,则不能再插
20、入)If exists(select name from sysobjects where name =add_Supplier)Drop procedure add_SupplierGOGOcreate procedure add_SupplierSupID varchar(10),SupName varchar(25),Suparea varchar(50),SupStyle int,SupPhone varchar(20),SupPW varchar(16)AsBegin transactionInsert into Supplier values (SupID,SupName,Supa
21、rea,SupStyle,SupPhone,SupPW)If(error!=0)BeginRollback transactionEndElsebegin Commit transactionEnd测试执行上述存储过程Use 每日农产品价格管理Exec add_Supplier SupID=5,SupName=2,Suparea=3,SupStyle=12,SupPhone=4 ,SupPW=1232修改(依照记录号进行修改,如果记录号不存在则不能修改。修改时,每个字段都不能为空,否则修改不了)If exists(select name from sysobjects where name =
22、edit_Supplier)Drop procedure edit_Supplier ;GOCreate procedure edit_SupplierSupID varchar(10),SupName varchar(25),Suparea varchar(50),SupStyle int,SupPhone varchar(20),SupPW varchar(16)AsBegin transactionUpdate Supplier set SupName=SupName,Suparea=Suparea,SupStyle=SupStyle,SupPhone =SupPhone,SupPW=S
23、upPW where SupID=SupID ;If(error!=0)BeginRollback transactionEndElsebegin Commit transactionEnd调用修改存储过程:use 每日农产品价格管理Exec edit_Supplier SupID=2,SupName=aa,Suparea=aa,SupStyle=10,SupPhone=123654,SupPW=1113.删除(我只是做了个简朴对单个表记录进行删除)If exists(select name from sysobjects where name =del_Supplier)Drop proce
24、dure del_Supplier ;GOCreate procedure del_SupplierSupID varchar(10)AsBegin transactionDelete from Supplier where SupID=SupID If(error!=0)BeginRollback transactionEndElsebegin Commit transactionEnd调用删除存储过程:use 每日农产品价格管理Exec del_Supplier SupID=44. 查询 (依照查询条件,显示成果。条件可以是各种字段)If exists(select name from s
25、ysobjects where name =select_Supplier)Drop procedure select_Supplier goCreate procedure select_SupplierSupID varchar(10),SupName varchar(25),Suparea varchar(50),SupStyle int,SupPhone varchar(20),SupPW varchar(16)AsBeginDeclare where varchar(100)Declare sql varchar(150)SET where=ERROR=0If(SupID)set w
26、here=where+ and +SupID=+SupIDif(SupName)set where=where+ and +SupName=+SupNameif(Suparea)set where=where+ and +Suparea=+Supareaif(SupStyle)set where=where+ and +SupStyle=+CONVERT(VARCHAR(10),SupStyle)if(SupPhone)set where=where+ and +SupPhone=+SupPhoneif(SupPW)set where=where+ and +SupPW=+SupPWset s
27、ql=Select * from Supplier where +wherePRINT +sqlENDbegin transactionexec (sql) If(error0)BeginRollback transactionEndElsebegin Commit transactionEnd调用查询存储过程:use 每日农产品价格管理Exec select_Supplier SupID=,SupName=,Suparea=,SupStyle=12,SupPhone=,SupPW=(表达详细值。也可觉得空,表达该字段没有规定)农产品信息表存储过程(ProductInfo)1插入(如果该记录号
28、已经存在,则不能再插入)If exists(select name from sysobjects where name =add_ProductInfo)Drop procedure add_ProductInfo ;GOCreate procedure add_ProductInfoProductID varchar(10),ProductStyle varchar(10),ProductName varchar(50),ProductOrigin varchar(20),ProductPrice Money,SupID varchar(10),DistID varchar(10)AsBegin transacti