1、
课 程 设 计 报 告 课程设计名称 管理信息系统课程设计 课程设计题目 医药公司仓库管理系统 专 业 物流工程 班 级 一班 学 号 11090116 &n
2、bsp; 姓 名 李蒙 指导教师 刘艳辉/方亮 成 绩 2013年1
3、2月27日 目录 第1章 现行系统概述 第2章 系统分析 2.1需求分析 2.2可行性研究 2.2.1管理可行性 2.2.2技术可行性 2.2.3经济可行性 2.3组织结构 2.4业务流程分析 2.5数据流程分析 2.6数据字典 第3章 系统设计 3.1系统功能设计 3.2代码设计 3.3概念模型设计 3.4 数据模型设计 3.5输入/输出设计 3.5.1输入设计 3.5.2输出设计 第4章 系统实施 第5章 总结与展望 第1章 现行系统概述 1.1 调查资料
4、nbsp; 四川长新药业有限公司目前仅有两个仓库,公司规模较小,但管理设施齐全,公司运营状况良好,公司运作井然有序,有较大的发展空间。矚慫润厲钐瘗睞枥庑赖。 库存管理方面;药品种类繁多所需仓储条件较严格,仓储条件基本满足,仓库按照库存情况及时订货,每月可多次提交采购订单,也可以和其他公司进行及时交易,或可紧急采购。仓库发货按各中心店直接发来的订单发货,一般每天发货两到三次(周六日休息)。仓库每月一号进行盘点,及时上报药品过期,损坏等特殊情况,确保信息流畅,时时更新库存台账和出入库情况。聞創沟燴鐺險爱氇谴净。 1.2 系统调查 长新药业有限公司目前使用的是名为“黄药师”的
5、管理系统软件,该软件已使用多年,随着公司的不断发展,业务量和工作员工数量的增涨,系统中许多问题也随之出现。譬如:客户若选择自行去仓库提货,总部信息无法及时更改,也无法及时向仓库发出提货通知,造成系统混乱,客户满意度下降等严重后果。残骛楼諍锩瀨濟溆塹籟。 由于该公司仓库面积较大,但工作人员较少,虽然在员工管理方面比较简单便利,但是这也导致在业务量激增的一二月份人手不足,并且在该系统中不能更改仓库员工的及时信息,导致业务混乱等严重后果。酽锕极額閉镇桧猪訣锥。 仓储经理:负责调配管理人员工作和重要的单据确认. 各主管和专员:负责处理仓库实施工作 业务流程:通过观察药品公司仓库的业务流
6、程模拟出仓库信息管理系统的流程,通过业务流程图加以说明 基础数据:数据来源采购科的采购订单和各中心店及社区店的发货通知,单据等资源。管理人员:熟悉仓库管理系统操作 彈贸摄尔霁毙攬砖卤庑。 资源 硬件:电脑若干台打印机若干台 软件:操作系统:中文Windows XP / Windows 2007 开发系统:MS SQL Server 开发工具:Delphi 謀荞抟箧飆鐸怼类蒋薔。 约束条件:各主管和专员的水平很大程度上影响仓库管理系统的运行,由于时间十分有限,现有的员工很难组织成合理的系统研发团队,若聘请其他公司协助开发,则会花费
7、过多资金,而且不利于新系统的维护和管理 。 厦礴恳蹒骈時盡继價骚。 系统详细调查方法 通过对该药品公司背景了解,基本掌握公司的基本需求.掌握了公司的货物仓库的运行情况,了解了药品的存储基本状况,所以组利用我所了解的信息,为该公司仓库管理信息系统进行规划、分析和设计,以改进该公司系统方面的部分不足之处。茕桢广鳓鯡选块网羈泪。 第2章 系统分析 2.1需求分析 2.1.1 用户需求基本情况: 该公司现行的管理模式完全以利益最大化为目的,因此忽视并产生了一些问题,譬如:没有质检人员,药品保管不到位等。这些问题长期影响并消耗着公司的有效资源,造成多余的冰山成本,因
8、此尽快解决这些问题将给公司的长期发展注入新的活力。鹅娅尽損鹌惨歷茏鴛賴。 1) 功能需求:可以在计算机中需要相关字段查找到所要记录,能对常用药品进行特殊标识,对有着权限的人可以随时更改记录,并保存记录实现货物的运转与系统一体化.。 籟丛妈羥为贍偾蛏练淨。 2) 性能需求:能及时更改由于药品过期,破损等特殊情况造成的库存量变动,能有效处理 (包括退货处理)。 預頌圣鉉儐歲龈讶骅籴。 3) 环境需求:满足在WINDOWS XP / WINDOWS 2007 / WINDOWS 2012等不同系统环境下的安装和使用。渗釤呛俨匀谔鱉调硯錦。 4) 可靠性需求:电脑环境干净,没病毒,漏洞。系统全
9、面加密。 5) 用户界面需求:清晰简单能被用户快速上手操作 , 6) 资源使用需求:能及时反映员工信息变化 ,和客户自提货物时的业务变动 7) 软件开发成本:一万元以内 2.1.2 分析与综合 功能需求中都可以实现,而性能要求不但要求系统的完善,更加重要的是要求管理员能够及时更新信息和记录。这个并不是系统本身能实现的,要根据操作人员的工作态度来完善。环境要求和可靠性要求都可以在开发中实现,但是这只是开发中的问题,该系统是否能在安全的环境中运行这个条件需要用户的配合。系统会设置安全保密的密码和权限控制可以有效地实现安全保密功能。用户界面的需求和资源使用的控
10、制还有开发成本和开发进度都可以准时有效地实现。铙誅卧泻噦圣骋贶頂廡。 2.2可行性研究 2.2.1管理可行性 管理可行性: 新系统操作简单,易于理解,只需要通过简单的培训,上手较快,公司的仓库管理员均能进行操作,营运环境要求低,因此本系统从操作方面是完全可行。该公司总员工数量在60人以上,其中约有三分之一可进行系统的管理和维护工作,所以在管理方面也可行。擁締凤袜备訊顎轮烂蔷。 2.2.2技术可行性 技术可行性:本系统采用Microsoft SQL Server 和Delphi等开发系统作为数据库平台,并使用Visio等作图工具,设计采用了Delphi这门计算机程序语言Delphi应用
11、程序由窗口组成,这些窗口包含用户与之交互的控件。开发人员可以使用所有标准空间(如按钮、复选框、下拉列表框或编辑框)以及Delphi提供的特殊的使应用程序更易于开发和使用的控件。通常人们把Delphi看成是一种开发工具,实际上它比其他工具强得多,是一种强有力的开发环境。开发人员不仅能用它来开发用户容易使用的各种应用程序还可以通过Delphi修改数据库,利用多个内部定义函数,可以开发能和其他应用程序进行的各中应用程序。因此从理论上来说,该系统在技术上是可行的。贓熱俣阃歲匱阊邺镓騷。 2.2.3经济可行性 经济可行性: 虽然开发系统,其必须要投入大量的人财物各方面的力量,花大量的时间投入到系统系
12、统的开发当中。但是对于开发完成并投入使用后给企业带来的效益来看,那些投入是值得的。运用该系统来大大减少了库存管理人员所使用的时间,提高了效率对大量的数据等进行管理,又便于操作员查询各种信息. 仓库管理在企业看来作用是十分重要的,公司必须改变管理中那种重生产、轻流通,重商流、轻物流的观念,使仓库管理在实现仓库管理总目标的过程中发挥它的重要性,这就使得公司对仓储部提出了更高的要求.计算机技术飞速发展,使得计算机这一信息处理器应用于仓库的日常管理成为必然的趋势,而且这也将为仓库管理带来前所未有的改变,采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志 ,它能极大提高了仓库工作人
13、员的工作效率,大大减少繁琐、杂乱出入流程,并且可以减少入库管理、出库管理及库存管理的漏洞,节约管理开支,从而增加企业的收入,这也使得仓库的管理水平有了很大的提高。坛摶乡囂忏蒌鍥铃氈淚。 2.3组织结构 组织结构图1-1 2.4业务流程分析 业务流程图 1-2-1 业务流程图 1-2-2 2.5数据流程分析
14、 数据流程图 1-3 2.6数据字典 2.6.1 数据流定义 项目 序号 数据流名称 编号 简述 数据流来源 数据流去向 数据流组成 01 购物单 D-01 顾客购买商品清单 顾客 条码扫描 商品编号+商品名称+数量+单价 02 销售清单 D-02 经电脑查询汇总后的收货清单 条码扫描 收款操作 商品编号+商品名称+数量+单价+合计 03 售出清单 D-03 已收款的货品清单 收款操作 仓库 商品编号+商品名称+数量+单价+合计 04 发票 D-04 根据顾客购买信息打印单据 收款操作 顾客
15、 商品编号+商品名称+数量+单价+合计 05 销售数据 D-05 根据销售操作,计入库存台账 出库操作 库存商品信息记录 商品编号+商品名称+数量+单价 06 缺货数据 D-06 根据库存信息填写缺货记录 库存商品信息记录 填写缺货记录 商品编号+商品名称+缺货数量+合计 07 缺货记录 D-07 汇总缺货记录,形成缺货记录 填写缺货记录 缺货记录 商品编号+商品名称+缺货数量+合计 08 汇总缺货记录 D-08 将各商品的缺货记录进行汇总 缺货记录 填写订货单 商品编号+商品名称+数量+单价+合计 09 订货单 D-09 汇总
16、缺货记录制作订单 填写订货单 供应商 商品编号+商品名称+数量+单价+合计 10 订货单汇总 D-10 订货单汇总 填写订货单 订货单文件 商品编号+商品名称+进货数量+单价 11 供应商信息 D-11 依据供货商信息填写订货单 供货商信息 填写订货单 供货商编号+供货商地址+供应商电话+供应商品+供应价格 12 供货单 D-12 供货商供应货物信息 供货商 进货审核 商品编号+商品名称+进货数量+单价+进货日期+进货员 13 退货单 D-13 经审核不符合供货单或其他错误 进货审核 供应商 商品编号+商品名称+退货数量+单价+退货
17、日期+进货员 14 订货单信息 D-14 根据订货单信息核对进货信息 订货单文件 进货审核 商品编号+商品名称+进货数量+单价 15 到货单 D-15 审核通过的供货单形成到货单 进货审核 到货单 商品编号+商品名称+进货数量+单价+进货日期+进货员 16 入库单 D-16 货物入库单据 到货单 入库操作 入库单号+商品编号+商品名称+入库数量+日期+操作员 17 入库信息 D-17 货物入库信息 入库操作 库存商品信息记录 入库单号+商品编号+商品名称+入库数量+日期+操作员 18 库存信息 D-18 库存商品信息 库存商品信
18、息记录 条码扫描 商品编号+商品名称+单价 2.6.2 处理逻辑定义 项目 序号 处理逻辑名称 编号 简述 输入的数据流 处理描述 输出的数据流 01 条码扫描 P-1-1 读取货物信息 购物单 库存信息 根据顾客提供的购物清单读取货品价格信息,核算价格统计清单 销售清单 02 收款操作 P-1-2 核算物品价格并结算应收款 销售清单 根据销售清单进行收款与打印发票 售出清单 发票 03 变更库存状态 P-2-1 根据零售情况变更当前库存商品数量 售出清单 根据售出清单情况减少相应货物库存 销售数据 04
19、 入库处理 P-2-2 根据入库单进行入库操作 入库单 根据入库单情况增加相应货物库存 入库信息 05 填写缺货记录 P-3-1 根据缺货情况制作缺货记录 缺货数据 根据缺货数据形成缺货记录并汇总 缺货记录 06 填写订货单 P-3-2 填写订货单 汇总缺货记录 供货商信息 根据缺货汇总记录与供货商信息填写订货单 订货单信息 订货单汇总 07 进货审核 P-3-3 审核供货商送来的供货单是否合格 订货单 供货单 根据订货单与供货单进行到货审核,符合则填写 到货单办理入库,不符合则退货 到货单 退货单 2.6.3 数
20、据储存定义 项目 序号 数据存储名称 编号 简述 数据存储组成 关键字 关联处理 01 库存商品信息记录 F-01 记录商品出入库数据的明细账 出入库单编号+商品编号+商品名称+入库数量+零售数量+库存数量+出入库日期 商品编号+出入库日期 P-01;P-02 02 供货商信息 F-02 记录供货商信息 供货商编号+供货商名称+供货商地址+供货商电话+联系人+备注 供货商编号 P-03 03 缺货记录 F-03 记录缺货明细账 缺货单编号+缺货名称+缺货数量+缺货日期+审核人 缺货单编号 P-03 04 订货单文件 F-04
21、 记录订货明细账 订货单编号+订货名称+订货数量+订货日期+审核人 订货单编号+货物名称 P-03 05 到货单文件 F-05 记录到货明细账 到货单编号+到货名称+到货数量+到货日期+审核人 到货单编号 +货物名称 P-02;P-03 2.6.4 外部实体定义 项目 序号 外部实体名称 编号 简述 输入的数据流数据流 输出的数据流 01 顾客 S-1 购买货物 发票 购物单 02 供货商 S-2 供应货物 订货单 退货单 供货单 第3章 系统设计 3.1系统功能设计 3.1.1.基础数据 主要有、
22、供货商信息、员工信息、商品信息与客户信息四部分组成。 商品信息与商品分类:完成商品编号、商品名称、分类编号、分类名称等一系列信息设定,可以达到以下目标:在进行商品入库、销售等操作时,可以通过下拉列表框进行选择录入商品信息以及商品订单以及进销价格调整。蜡變黲癟報伥铉锚鈰赘。 供货商信息:完成员工与供货商的编号、名称地址、电话等等一系列信息设定,其建立可以达到如下目标:可以通过下拉列表框进行选择录入供货商信息;记录供货商的各种联系方式与联系人。買鲷鴯譖昙膚遙闫撷凄。 员工信息:完成员工编号、姓名、详细信息设定。 3.1.2.进销存管理 主要完成订单定制、采购入库、销售记录、库存查询等任务
23、 订单定制:完成订单定制工作,主要支持从下拉类表框中选择商品、对应供应商、核算金额等。 采购入库:完成采购入库的工作,主要达到以下目标:支持从下拉列表框中选择供货商、自动统计入库品种数,合计数量与金额;綾镝鯛駕櫬鹕踪韦辚糴。 销售记录:对销售情况进行记录,自动统计销售情况。 库存查询:可根据需要选择不同的查询字段和内容对库存进行查询。 3.1.3.综合信息 主要由对账单、综合账目等功能组成。 收货对账单:主要完成对收货信息的记录与确认。 销售对账单:主要完成对销售信息的记录与确认。 综合账款:可根据条件要求完成对销售账款的统计。 3.1.4.系统维护 主要完成用户设置、
24、系统重置、变更用户与退出系统功能 用户配置:增加删除用户,变更用户权限。 系统重置:备份、清空所有数据。 变更用户:变更当前系统用户。 退出系统:退出系统。 3.2代码设计 3.3概念模型设计 3.4 数据模型设计 表3-1 供货商表 字段名称 数据类型 字段大小 供货商编号 Varchar 50 供货商名称 Varchar 50 地址 Varchar 50 电话 Varchar 50 传真 Varchar
25、50 联系人 Varchar 50 手机 Varchar 50 备注 Varchar 50 表3-2 入库单表 字段名称 数据类型 字段大小 入库单号 Varchar 50 入库日期 Varchar 50 商品编号 Int 4 商品数量 Varchar 50 合计金额 Varchar 50 员工编号 Varchar 50 备注 Varchar 50 &n
26、bsp; 表3-3 员工表 字段名称 数据类型 字段大小 员工编号 Varchar 50 员工姓名 Varchar 50 家庭住址 Varchar 50 家庭电话 Varchar 50 资薪水平 Varchar 50 紧急联系人 Varchar 50 手机 Varchar 50 备注 Varchar 50 表3-4商品表 字段名称 数据类型 字段大小 商品编号 Varchar 50 商品名称 Varchar 50 商品规格 Varchar 50 分类编号 Varchar 50
27、 供货商编号 Varchar 50 进货价格 Money 8 销售价格 Money 8 备注 Varchar 50 表3-5订单表 字段名称 数据类型 字段大小 订单编号 Varchar 50 订购日期 Varchar 50 商品编号 Varchar 50 订购数量 Int 4 总计金额 Varchar 50 员工编号 Varchar 8 到货情况 Varchar 8 备注 Varchar 50 表3-6销售表 字段名称 数据类型 字段大小 销售单号 Varchar 50 销售时间 Varc
28、har 50 商品编号 Varchar 50 商品数量 Int 4 员工编号 Varchar 50 合计金额 Money 8 备注 Varchar 50 3.5输入/输出设计 3.5.1输入设计 procedure Talogo.BitBtn2Click(Sender: TObject); begin alogo.Close; end; procedure Talogo.BitBtn1Click(Sender: TObject); begin try with a
29、doquery1 do begin close; sql.clear; sql.add('select * from user_master where a=:a and b=:b ');驅踬髏彦浃绥譎饴憂锦。 parameters.ParamByName('a').Value:=trim(combobox1.Text);猫虿驢绘燈鮒诛髅貺庑。 parameters.ParamByNam
30、e('b').Value:=trim(edit1.Text);锹籁饗迳琐筆襖鸥娅薔。 if combobox1.Text ='' then begin application.MessageBox('请输入用户名','提示信息',64); combobox1.SetFocus;
31、 exit; end; if edit1.Text ='' then begin application.MessageBox('请输入密码','提示信息',64); edit1.SetFocus; exit; &n
32、bsp; end; open; end; if adoquery1.RecordCount<>0 then begin Username:=combobox1.Text; Password:=edit1.Text; application.MessageBox(
33、39;登陆成功','提示信息',64); amain.show;//需要再建立一个form窗口用来作为登录正确后显示的窗体 self.Hide; end else application.MessageBox('输入的用户名或密码错误','提示信息',64); except a
34、pplication.MessageBox('登陆失败','提示信息',64); end; end; end. 3.5.2输出设计 procedure Tcxck.Button1Click(Sender: TObject); var sqls,cp:string; i,j:integer; begin cp:=edit1.Text; case radiogroup1.ItemIndex of 0:
35、 sqls:='SELECT * from 商品表 WHERE 药品名称 ='''+cp+''''; 1: sqls:='SELECT * from 商品表 WHERE 药品编号 ='''+cp+''''; 2: sqls:='SELECT * from 商品表 WHERE 生产厂家 ='
36、39;'+cp+''''; end; With ADOQuery1 do begin SQL.Clear; SQL.Add(sqls); ExecSQL; open; Stringgrid1.RowCount:=Recordset.RecordCount+1; Stringgrid1.ColCount:=
37、Recordset.Fields.Count+1; Stringgrid1.Cells[0,0]:= '序号'; if Recordset.RecordCount<>0 then begin for i:=0 to Recordset.RecordCount-1 do begin for j:=0 to Recordset.Field
38、s.Count-1 do begin Stringgrid1.Cells[j+1,0]:= ADOQuery1.Fields.Fields[j].FieldName;構氽頑黉碩饨荠龈话骛。 Stringgrid1.Cells[j+1,i+1]:= ADOQuery1.Fields.Fields[j].AsString;輒峄陽檉簖疖網儂號泶。 &nbs
39、p;end; Stringgrid1.Cells[0,i+1]:=inttostr(i+1); next; end; next; end else showmessage('请确认查询关键字'); end; end; end. 第4章
40、系统实施 订单处理主要代码: interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,尧侧閆繭絳闕绚勵蜆贅。 Dialogs, ComCtrls, ToolWin, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB;识饒鎂錕缢灩筧嚌俨淒。 type Tcgdhd = class(TForm) ToolBar1: TToolBar;  
41、 BitBtn1: TBitBtn; DBGrid1: TDBGrid; D: TGroupBox; Button1: TButton; Button2: TButton; ADOConnection1: TADOConnection; DataSource1: TDataSource; ADOTable1: TADOTable; Button
42、3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit;  
43、 Edit5: TEdit; procedure Button8Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations
44、} public { Public declarations } end; var cgdhd: Tcgdhd; implementation uses Unit3,unit2; {$R *.dfm} procedure Tcgdhd.Button8Click(Sender: TObject); begin cgdhd.Close; amain.show end; procedure Tcgdhd.Button6Click(Sender: TObject); begin
45、if(edit1.Text='')or(edit2.Text='')or(edit4.Text='')凍鈹鋨劳臘锴痫婦胫籴。 or(edit5.Text='')then showmessage('请输入数据!') else begin with ADOTable1 do begin &nb
46、sp; Insert; FieldByName('订单编号').AsString:=edit1.Text; FieldByName('订购日期').AsString:=edit2.Text; FieldByName('订购数量').
47、AsString:=edit3.Text; FieldByName('金额').AsString:=edit4.Text; FieldByName('备注').AsString:=edit5.Text; post;
48、nbsp; With ADOTable1 do end; end; end; procedure Tcgdhd.Button7Click(Sender: TObject); begin if MessageDlg('确定删除吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes恥諤銪灭萦欢煬鞏鹜錦。 then ADOTable1.Delete; end;
49、 procedure Tcgdhd.BitBtn1Click(Sender: TObject); var Y:string; begin if (edit1.Text='')or(edit2.Text='')or(edit3.Text='')or(edit4.Text='')or(edit5.Text='') then鯊腎鑰诎褳鉀沩懼統庫。 with ADOTable1 do begin edit1.Text:=FieldByName('订单编号'
50、).AsString ; edit2.Text:=FieldByName('订购日期').AsString ; edit3.Text:=FieldByName('订购数量').AsString ; edit4.Text:=FieldByName('金额').AsString ; edit5.Text:=FieldByName('备注').AsString ; end &
51、nbsp;else begin with ADOTable1 do begin edit; FieldByName('订单编号').AsString:=edit1.Text; &nb
52、sp; FieldByName('订购日期').AsString:=edit2.Text; FieldByName('订购数量').AsString:=edit3.Text; FieldByName('金额').AsString:=edit4.Text; FieldByName('
53、备注').AsString:=edit5.Text; post; begin y:='select 订单编号 from 订货单表 where 订单编号='''+Edit1.Text+'''';硕癘鄴颃诌攆檸攜驤蔹。 with ADOTable1 do begin
54、 open; edit1.Text:=ADOTable1.fields.Fields[0].AsString; with ADOTable1 do begin edit;
55、nbsp; fieldbyname('金额').AsString:=inttostr(strtoint(edit1.Text)-strtoint(edit4.Text));阌擻輳嬪諫迁择楨秘騖。 ADOTable1.Post; ADOTable1.Active:=false;
56、 ADOTable1.Active:=true; end; end; edit1.Text:=''; edit2.Text:=''; edit3.Text:=
57、39;'; edit4.Text:=''; edit5.Text:=''; end; end; end; end; End. 第5章 总结与展望 通过本次课程设计,我深刻的认识到想要做好一个实际应用的管理信息系
58、统是十分不易的,不仅是在调研了解掌握用户需求,同时对系统的设计、开发软件的操作等,都有着较高的要求。氬嚕躑竄贸恳彈瀘颔澩。 本次由于时间比较紧张,系统并未开发的很完善,同时也存在许多问题亟待解决,功能覆盖也不够完全,尤其是在查询模块,设计功能还不够人性化,如有更多需求,日后会继续进行开发完善。釷鹆資贏車贖孙滅獅赘。 同时,本次课程设计也让我学会了多与他人沟通,共同进步、共同学习的好处。在编程过程中,经常与其他几位同学一起讨论开发思路,交换源码,不仅帮助他人解决了问题,更为自己铺平了道路。怂阐譜鯪迳導嘯畫長凉。 致谢 在此,我要对在此次课题研究和论文撰写过程中给予诸多帮助的刘艳辉老师、方亮老师寓意感谢同时也对在编程过程中耐心为我讲解的同学们表示谢意,真诚的感谢你们付出了宝贵的时间和精力!谚辞調担鈧谄动禪泻類。






