1、河南城建学院 《经典数据库》课程设计汇报 课程名称: 《经典数据库》课程设计 设计题目: 仓库管理系统 指导老师: 班 级: 学 号: 学生姓名: 同组人员: 成 绩:
2、 评 语: 计算机科学和工程学院 1月10日 目 录 第1章 概述 2 1.1 选题背景和意义 2 1.2 相关技术分析 3 第2章 系统功效设计 4 2.1 系统总体结构设计图 4 2.2 系统功效模块 4 1.2.1 登录模块 4 1.2.2 基础信息管理模块 5 1.2.3 货物信息管理模块 5 1.2
3、4 仓库货物管理模块 6 1.2.5 查询信息信息模块 6 1.2.6 仓库警报功效模块 7 1.2.7 信息导出功效模块 7 第3章 数据库设计 8 3.1 需求分析 8 3.1.1 数据步骤图 8 3.1.2 数据字典 10 3.2 数据库概念结构设计 12 3.2.1 E-R图设计方法 12 3.2.2 全局E-R图 12 3.2.3 局部E-R图 13 3.3 数据库逻辑结构设计 15 3.4 安全性和完整性设计 17 第4章 数据库维护和查询 18 4.1 序列 18 4.2 触发器 18 第5章 UI设计和代码实现 20 5.1 UI设计 20
4、 5.1.1 仓库管理员 20 5.1.2 系统管理员 22 5.2 代码实现 24 5.2.1 仓库管理员 24 5.3.2 系统管理员 28 第6章 结束语 31 参考文件 33 第1章 概述 1.1 选题背景和意义 1、背景: 伴随信息技术发展和中国外互联网技术应用水平逐步提升,在企业管理过程中,传统工作方法和管理模式已经难以满足现代社会肯定需求,实现企业现代化综合管理已经是提升国家政府机关和企机关各部门工作效率、规范化管理肯定发展趋势。伴随经济全球化、信息网络化和物流现代化进程全方面推进,仓储供需量展现爆炸式增加,传统仓库管理模式和管理系统,已根本满足不了
5、现代社会全方面信息化严峻挑战,怎样加强以信息化为指导现代仓库管理技术已成为物流现代化走向成功有效路径,怎样将互联网技术和仓储物流信息化技术紧密结合起来,开发出适应该前社会发展需要、优异现代化物流仓储管理技术平台,是现代化物流发展技术中一项基础、又是很关键、尤其值得研究子课题。ASP技术是面向对象编程技术,可实现复杂数据库操作;用ASP开发Web应用程序安装在网络服务器上,运行在网络服务器上,所以ASP源程序隐密安全系数性高;而ASP又是基于B/S模型架构、开放式Web服务器应用程序开发技术,所以,采取ASP技术开发运行在服务器端仓库管理信息系统平台是众多软件设计和开发人士首要选择。本文比较全方
6、面地叙述了和ASP、ADO、B/S模式相关理论技术,为构建Web仓库管理信息系统提供了必需理论支持。首先分析了ASP技术优势、特点及其工作原理,剖析了ASP工作关键内涵,搭建了ASP技术工作环境,为开发系统功效提供必需技术运行环境;分析了现在Web数据库最好访问组件ADO技术对象和数据集之间关系,直接搭建了Web应用程序和数据库访问联络梁;依据现代仓储市场需求特点,对拟开发系统功效进行了细致地分析和设计,建立了仓储数据管理E-R模型图、数据库结构,分析了B/S架构模式三层框架,构建了以该框架为模型仓库管理信息系统,关键分析介绍了相关功效模块ASP实现过程,成功地实现了基于ASP运行环境仓库管理
7、信息系统开发和设计;并对本系统各项功效进行了测试和分析,发觉系统运行状态良好,人机交互友好,程序设计实现合理,达成了项目设计目标和要求。最终,对此次项目设计进行了总结和展望,发觉了系统构架模式关系着程序开发效率,对开发系统有着关键影响意义,好马配好鞍,优异软件肯定有优异构架。作为软件开发设计人员既要努力学好软件技术又要重视相关模式学习,这么,就能达成事半功倍效果,设计开发出愈加优异应用系统来。 2、 意义 仓库管理系统是经典信息管理系统(MIS),其开发关键包含后台数据库建立和维护,和前端应用程序开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好库,而对于后者则
8、要求应用程序功效完备、易使用等特点。经过分析,我们使用Microsoft企业数据库开发工具SQL Server和Microsoft Visual Studio ,利用其提供多种面向对象开发工具和数据库结合比较方便,我们开发了这套库存管理系统,包含仓库管理、入库管理、出库管理、库存管理和查询等模块。仓库管理可用于配置企业仓库信息;出库、入库管理能够使管理人员管理多种类型货物进出;库存管理可提供便捷库存查询管理。仓库管理系统实现了企业对货物管理,用来控制存放货物数量,以确保稳定货物支持正常运转,但又最小程度地占用资本。它是一个相关、动态及真实库存控制系统。它能够结合、满足相关部门需求,随时间改变动
9、态地调整库存,正确地反应库存现实状况,加强库存步骤管理,有效地控制货物收发,降低了库存,优化了库存结构;能够立即了解货物状态,全方位仓库管理能够立即了解货物分布,避免了货物短缺、积压、过期变质,立即了解货物收发成本,货物数据共享。 1.2 相关技术分析 此系统采取了成熟且完善oracle 11g及Microsoft Visual Studio 软件开发工具来进行后台数据库管理、操作和维护。该软件功效强大,可用性强,完全能够满足我们开发项目标要求。 第2章 系统功效设计 2.1 系统总体结构设计图 系统要含有以下功效:登录界面统一,
10、用户登录系统时进行身份验证,如不是系统用户则严禁登录; 添加新职员时,经过系统管理员进行添加,并能采集职员基础信息;仓库货物信息管理,系统包含仓库管理、入库、出库和部分统计查询等几部分组成。仓库管理系统实现对货物信息管理和总体统计等,仓库信息,供货单位和操作员信息查看及维护。仓库管理人员能够浏览、查询、添加、删除等产品基础信息。 图2.1系统功效图 2.2 系统功效模块 1.2.1 登录模块 登录模块能够分为系统管理员登录和管理员登录。假如用户要进行登陆时,系统会进去数据库进行帐号密码匹配,同时也要进行权限匹配,假如匹配成功才能够登录。依据其选择用户不一样,输入不一样用户和密码,接
11、入不一样用户界面,管理不一样界面。 图1.2.1登陆模块 1.2.2 基础信息管理模块 基础信息模块分为仓库基础信息,操作员基础信息,用户基础信息,仓库基础信息又分为管理员管理,提货员管理,采购员管理。 图1.2.2基础信息管理模块 1.2.3 货物信息管理模块 货物信息管理模块分为添加货物信息,修改货物信息,删除货物信息。 图1.2.3货物信息管理 1.2.4 仓库货物管理模块 仓库货物管理模块分为入库操作和出库操作。 图1.2.4仓库货物管理 1.2.5 查询信息信息模块 查询信息管理模块分为查询货物信息,查询仓库信息,查询
12、用户信息。 图1.2.5查询信息管理 1.2.6 仓库警报功效模块 仓库警报功效模块在货物不足时提醒。 图1.2.6警报功效 1.2.7 信息导出功效模块 信息导出功效模块分为导出货物信息,导出入库信息,导出出库信息。 图1.2.7信息导出功效 第3章 数据库设计 3.1 需求分析 3.1.1 数据步骤图 图3.1.1顶层数据流图 图3.1.2系统数据流图具体设计 图3.1.3管理员-货物 图3.1.4管理员-入库、出库 图3.1.5管理员-用户
13、 图3.1.6管理员-仓库 3.1.2 数据字典 (1)仓库表 字段名称 数据类型 描述 Sno int 仓库编号,主键 Sname varchar2(10) 仓库名称 Sadress varchar2(50) 仓库地址 Sbig number 仓库大小 Ano varchar2(10) 管理员编号 外键 (2)入库表 字段名称 数据类型 描述 Gno Int 货物编号 外键 Bno int 采购员编号 外键 Sno Int 仓库编号 外键 Idate Date 采购日期 Inum Int 采购数量 An
14、o varchar2(10) 管理员编号 外键 (3)出库表 字段名称 数据类型 描述 Gno Int 货物编号 外键 Pno int 提货员编号 外键 Sno int 仓库编号 外键 Ano varchar2(10) 管理员编号 外键 Odate date 采购日期 Onum Int 采购数量 (4)用户表 字段名称 数据类型 描述 Cno Int 用户号,主键 Cname Varchar2(10) 用户名 Ctype Varchar2(10) 用户类型 Cmethod Varchar2(11) 联络地址 Cc
15、ode Varchar2(7) 邮政编号 Cbz Varchar2(50) 备注 Pno int 提货员编号 外键 (5)库存表 字段名称 数据类型 描述 Gno Int 货物编号 外键 Sno int 仓库编号 外键 Knum Int 货物数量 Kdate date 清点时间 (6)提货员表 字段名称 数据类型 描述 Pno Int 提货员编号,主键 Pname Varchar2(11) 提货员姓名 Psex varchar2(3) 提货员性别 Pmethod varchar2(11) 提货员联络方法 Padd
16、ress varchar2(50) 提货员联络地址 (7)用户表 字段名称 数据类型 描述 Uname Varchar2(10) 用户名 Upass Varchar2(10) 密码 Ugrade Int 权限 (8)管理员表 字段名称 数据类型 描述 Ano Varchar2(10) 管理员编号,主键 Aname Varchar2(10) 管理员姓名 Asex Varchar2(3) 管理员性别 Amethod varchar2(11) 管理员联络方法 Aaddress varchar2(50) 管理员地址 (9)货物表
17、字段名称 数据类型 描述 Gno int 货物编号 主键 Gname varchar2(10) 货物名称 Sno nchar(10) 仓库编号 Gdate date 生产日期 Gfactory varchar2(10) 生产厂家 Pno nchar(10) 采购员编号 Gprice number(7,2) 货物单价 Idate date 入库时间 (10)采购员表 字段名称 数据类型 描述 Bno Int 提货员编号,主键 Bname varchar2(10) 提货员姓名 Bsex varchar2(3) 提货员性别
18、 Bmethod varchar2(11) 提货员联络方法 Baddress varchar2(50) 提货员联络地址 3.2 数据库概念结构设计 3.2.1 E-R图设计方法 1).属性必需是不可分数据项。 2).属性不能和其它实体含有联络,联络只能发生在实体之间。 3.2.2 全局E-R图 图3.2.1全局E-R图 3.2.3 局部E-R图 3.1、仓库-货物-采购员 图3.1仓库-货物-采购员 3.2、仓库-货物-提货员 图3.2仓库-货物-提货员 3.3、仓库-货物(存放情况) 图3.3仓库-
19、货物(存放情况) 3.4、用户-提货员 图3.4用户-提货员 3.5、系统管理员-采购员 图3.5管理员-采购员 3.6、管理员-仓库 图3.6管理员-仓库 3.7、系统管理员-提货员 图3.7系统管理员-提货员 3.3 数据库逻辑结构设计 1、 仓库-货物-采购员(入库)(M-N) Tb_Storage(Sno,Sname,Sadress,Sbig,Ano); Tb_Good(Gno,Gname,Gdate,Gfactory,Gprice,Idate) Tb_InStorage(Gno, Sno ,Idate,Inum,Bno
20、); 2、 仓库-货物-提货员(出库)(M-N) Tb_Storage(Sno,Sname,Sadress,Sbig,Ano); Tb_Good(Gno,Gname,Gdate,Gfactory,Gprice,Idate) Tb_OutStorage(Gno, Sno ,Odate,Onum,Pno); 3、 仓库-货物(存放情况)(M-N) Tb_Storage(Sno,Sname,Sadress,Sbig,Ano); Tb_Good(Gno,Gname,Gdate,Gfactory,Gprice,Idate) Tb_Kc(Gno, Sno ,Knum,Kdate);
21、 4、 用户-提货员(N-M) Tb_Client(Cno,Cname,Ctype,Cmethod,Ccode,Cphone,Cbz,Pno); Tb_Picker(Pno,Pname,Psex,Pmethod,Paddress); 5、 管理员-仓库(1-N) Tb_Admin(Ano,Aname,Asex,Amethod,Aaddress); Tb_Storage(Sno,Sname,Sadress,Sbig,Ano); u 仓库 //Tb_Storage(Sno,Sname,Sadress,Sbig,Ano); u 入库 Tb_InStorage(Gno, S
22、no ,Idate,Inum,Bno); u 出库 Tb_OutStorage(Gno, Sno ,Odate,Onum,Pno); u 用户 //Tb_Client(Cno,Cname,Ctype,Cmethod,Ccode,Cphone,Cbz,Pno); u 库存 Tb_Kc(Gno, Sno ,Knum,Kdate); u 提货员 //Tb_Picker(Pno,Pname,Psex,Pmethod,Paddress); u 用户 //Tb_User(Uname,Upass,Ugrade); u 管理员 //Tb_Admin(Ano,Aname,Asex,Ame
23、thod,Aaddress); u 货物 //Tb_Good(Gno,Gname,Gdate,Gfactory,Gprice,Idate) u 采购员 //Tb_Buyer(Bno,Bname,Bsex,Bmethod,Badress); 3.4 安全性和完整性设计 1.外键约束: 管理员表中作为主键管理员编号在仓库表中作为外键使用: constraint gly_key foreign key(Ano) references Tb_Admin(Ano) 提货员表中作为主键提货员编号在用户表中作为外键使用: constraint thy_key foreign key(Pn
24、o) references Tb_Picker(Pno) 货物表中作为主键货物编号在库存表中作为外键使用: constraint hw_key foreign key(Gno) references Tb_Good(Gno) 仓库表中作为主键仓库编号在库存表中作为外键使用: constraint ck_key foreign key(Sno) references Tb_Storage(Sno) 货物编号,仓库编号,提货员编号,管理员编号在出库表中作为外键使用: constraint hw1_key foreign key(Gno) references Tb_Good(Gno)
25、 constraint ck1_key foreign key(Sno) references Tb_Storage(Sno) constraint thy1_key foreign key(Pno) references Tb_Picker(Pno) constraint gly1_key foreign key(Ano) references Tb_Admin(Ano) 货物编号,仓库编号,采货员编号,管理员编号在出库表中作为外键使用: constraint hw1_key foreign key(Gno) references Tb_Good(Gno) constraint c
26、k1_key foreign key(Sno) references Tb_Storage(Sno) constraint cgy2_key foreign key(Bno) references Tb_Buyer(Bno) constraint gly1_key foreign key(Ano) references Tb_Admin(Ano) 2.check约束 check约束:Bsex varchar2(3) check (Bsex in('男','女')), Psex varchar2(3) check (Psex in('男','女
27、')), 3.primary key 约束 管理员表:Ano varchar2(10) primary key, 仓库表 :Sno int primary key, 采购员表:Bno int primary key, 提货员表:Pno int primary key, 货物表 :Gno int primary key, 用户表 :Cno int primary key, 第4章 数据库维护和查询 4.1 序列 1.提货
28、员序列 create sequence Picker_seq start with 1001 increment by 1 2.采购员序列 create sequence Buyer_seq start with increment by 1; 3.货物序列 create sequence Good_seq start with 3001 increment by 1; 4.仓库序列 create sequence Storage_seq start with 4001 increment by 1 5.用户序列 create sequence
29、Client_seq start with 5001 increment by 1; 4.2 触发器 1.提货员触发器 create or replace trigger add_Picker_trigger before insert on TB_Picker for each row begin if :new.Pno is null then select Picker_seq.nextval into :new.Pno from dual; end if; end add_Picker_trigger; 2.采购员触发器 create or repl
30、ace trigger add_Buyer_trigger before insert on TB_Buyer for each row begin if :new.Bno is null then select Buyer_seq.nextval into :new.Bno from dual; end if; end add_Buyer_trigger; 3.货物触发器 create or replace trigger add_Good_trigger before insert on TB_Good for each row begin if :new.
31、Gno is null then select Good_seq.nextval into :new.Gno from dual; end if; end add_Good_trigger; 4.仓库触发器 create or replace trigger add_Storage_trigger before insert on TB_Storage for each row begin if :new.Sno is null then select Storage_seq.nextval into :new.Sno from dual; end if; end
32、add_Storage_trigger; 5.用户触发器 create or replace trigger add_Client_trigger before insert on TB_Client for each row begin if :new.Cno is null then select Client_seq.nextval into :new.Cno from dual; end if; end add_Client_trigger; 第5章 UI设计和代码实现 5.1 UI设计 5.1.1 仓库管理员
33、 1. 登录界面设计 登录模块能够分为系统管理员登录和管理员登录。假如用户要进行登陆时,系统会进去数据库进行帐号密码匹配,同时也要进行权限匹配,假如匹配成功才能够登录。依据其选择用户不一样,输入不一样用户和密码,接入不一样用户界面,管理不一样界面。 2. 基础信息模块设计 基础信息模块包含仓库基础信息,用户基础信息,操作员基础信息。仓库基础信息设置有修改和删除功效。用户基础信息设置了添加,删除和修改功效。操作员基础信息设置了修改功效。因为用户信息为常变实体属性,所以设置了添加,修改和删除功效。仓库信息为不常变实体属性,所以设置了修改和删除属性。操作员因为是管理员,不能修改同一等级权
34、限信息,所以只给添加了修改基础信息功效。 3. 货物信息模块设计 货物信息模块包含对货物信息添加,货物信息删除,货物信息修改对应现实世界引进新货物,货物信息更新和清仓处理。 4. 出库入库模块设计 出库入库模块包含了货物出库和入库模块。对于入库信息来说,当系统开始入库时,先判定货物是否存在,假如不存在话这直接将货物信息插入库存表,然后在入库表中插入统计,提醒入库成功。假如货物存在话则看对应仓库是否存在假如存在话则在原来货物基础上只更新货物数量提醒入库成功,假如仓库不匹配话则插入该货物信息,然后在入库表中插入统计,提醒入库成功。 出库信息,当系统开始出库时,先判定货物是否存
35、在假如存在话则看需要出货仓库是否存在,假如存在话再看货物数量是否满足出货数,假如满足则出库成功同时对库存表和出库表进行更新,提醒出库成功,不然则出库失败。 5. 信息查询模块设计 信息查询模块包含货物信息查询,仓库信息查询,用户信息查询。经过对用户表,仓库表和货物表主键进行匹配唯一确实定一行数据返回GridView进行显示。 6. 警报信息模块设计 警报信息功效,是当库存中货物数量少于10时候自动提醒管理员要进行立即补货,以免货物短缺,造成损失。 7. 信息导出模块设计 信息导出模块包含了导出货物信息,导出出库信息,导出入库信息功效,方便仓库人员进行报表打印和仓库流
36、水信息。 5.1.2 系统管理员 1. 管理员信息模块设计 管理员信息模块包含对管理员添加修改和删除功效,因为仓库管理系统由管理员进行管理,所以当添加管理员信息时,在给管理员表添加基础信息同时也给用户表中添加了信息,帐号为管理员编号,密码默认为123. 2. 采购员信息模块设计 采购员信息管理(对采购员信息添加,修改,删除) 3. 提货员信息模块设计 提货员信息管理(对提货员信息添加,修改,删除) 5.2 代码实现 5.2.1 仓库管理员 1. 登录界面登录匹配关键代码 protected void Button1_Click(object sende
37、r, EventArgs e) { var qx = -1 ; if (DropDownList1.SelectedValue.ToString() == "仓库管理员") { qx = 1; } else { qx = 0; } OracleCommand mycommand = new OracleCommand("select * from Tb_User where Uname='"
38、 + this.TextBox1.Text.ToString() + "'and Upass='" + this.TextBox2.Text.ToString() + "' and Ugrade=" + qx, conn); conn.Open(); OracleDataReader recu = mycommand.ExecuteReader(); if (recu.Read()) { if (qx==1) { Session["Ana
39、me"] = TextBox1.Text; Response.Redirect("jbxx.aspx"); } else if (qx == 0) { Response.Redirect("gly.aspx"); } } else { Response.Write("
40、>"); TextBox2.Text = ""; } } 2. 基础信息添加用户信息关键代码 protected void Button1_Click(object sender, EventArgs e) { OracleCommand mycomm = new OracleCommand("insert into Tb_Client(Cname,Ctype,Cmethod,Ccode,Caddress,Cbz,Pno) values('" + this.TextBox2.Text.ToString()
41、 "','" + this.TextBox3.Text.ToString() + "','" + this.TextBox6.Text.ToString() + "','" + this.TextBox5.Text.ToString() + "','" + this.TextBox4.Text.ToString() + "','" + this.TextBox7.Text.ToString() + "','" + this.TextBox8.Text.ToString() + "')", conn); conn.Open(); my
42、comm.ExecuteNonQuery(); conn.Close(); OracleCommand my = new OracleCommand("select * from Tb_Client where Cname='" + this.TextBox2.Text.ToString() + "'", conn); conn.Open(); OracleDataReader recu = my.ExecuteReader(); if (recu.Read()) {
43、 Response.Write(""); this.TextBox2.Text = ""; this.TextBox3.Text = ""; this.TextBox4.Text = ""; this.TextBox5.Text = ""; this.TextBox6.Text = ""; this.TextBox7.Text = "";
44、 this.TextBox8.Text = ""; } else { Response.Write(""); } conn.Close(); } protected void Button2_Click(object sender, EventArgs e) { //this.TextBox1.Text = ""; this.TextBox2.
45、Text = ""; this.TextBox3.Text = ""; this.TextBox4.Text = ""; this.TextBox5.Text = ""; this.TextBox6.Text = ""; this.TextBox7.Text = ""; this.TextBox8.Text = ""; } 3. 货物信息添加货物信息关键代码 protected void Button1_Click(object sender, EventArgs e)
46、 { OracleCommand mycomm = new OracleCommand("insert into Tb_Good(Gname,Gdate,Gfactory,Gprice,Idate) values('" + this.TextBox2.Text.ToString() + "','"+ TextBox3.Text.ToString()+"','" + this.TextBox4.Text.ToString() + "',"+TextBox5.Text+ ",'"+TextBo
47、x6.Text.ToString()+"')", conn); conn.Open(); mycomm.ExecuteNonQuery(); conn.Close(); OracleCommand my = new OracleCommand("select * from Tb_Good where Gname='" + this.TextBox2.Text.ToString() + "'", conn); conn.Open(); OracleDataReader recu = my.
48、ExecuteReader(); if (recu.Read()) { Response.Write(""); this.TextBox2.Text = ""; this.TextBox3.Text = ""; this.TextBox4.Text = ""; this.TextBox5.Text = ""; this.TextBox
49、6.Text = ""; } else { Response.Write(""); } conn.Close(); } protected void Button2_Click(object sender, EventArgs e) { //this.TextBox1.Text = ""; this.TextBox2.Text = "";
50、 this.TextBox3.Text = ""; this.TextBox4.Text = ""; this.TextBox5.Text = ""; this.TextBox6.Text = ""; } 4. 出库入库信息出库入库关键代码 protected void Button1_Click(object sender, EventArgs e) { OracleCommand my = new OracleCommand("select * from Tb_Kc where






