课 程 设 计
课程名称_信 息 系 统 开 发 与 管 理
题目名称 华润万家采购管理系统 _
学生学院_ 管 理 学 院_
专业班级 07电子商务4班 _
学 号 3207005630
学生姓名____张 嘉 欣 ____
指导教师____张 延 林________
2010年 2 月 25 日
《信息系统开发与管理》课程设计评分表
学号
3207005630
姓名
张嘉欣
专业班级
07电商4班
题目
华润万家采购管理系统
主要内容
主要以华润万家超市为背景进行分析,采用SQL Server2000和JSP为开发工具实现了成品入库管理、出库管理、退库、盘存等业务功能。
评分标准
序号
评审项目
指 标
所占总评比例
得分
1
平时成绩
积极选题、按时完成报告和系统、格式正确
10%
报告成绩
系统分析,初稿成绩
10%
系统设计,二稿成绩
10%
2
系统完整报告,终稿成绩
30%
3
系统检查
运行顺畅,回答问题正确,与报告一致性强
40%
最终成绩
平时成绩、报告成绩和系统检查成绩的综合评分
指导老师:
张延林
2010年3月 12 日
广东工业大学课程设计任务书
题目名称
华润万家采购管理系统开发
学生学院
经济管理学院
专业班级
07电子商务专业(4)班
姓 名
张嘉欣
学 号
3207005630
一、课程设计的内容
1. 华润万家采购管理系统业务及其用户需求概况
2. 华润万家采购管理系统业务信息系统系统分析
(1)现状调查研究
(2)目标分析――新系统逻辑模型的构思
3. 华润万家采购管理系统业务信息系统系统设计
(1)系统的总体设计
(2)系统的详细设计
4. 华润万家采购管理系统业务信息系统系统实现
5. 华润万家采购管理系统业务信息系统系统运行与评价
6. 系统开发的收获体会
二、课程设计的要求与数据
要求学生在完成数据库应用课程设计的基础上,运用各门专业课与专业基础课中所学知识,选择自己了解的电子商务环境下的经营管理生产运作业务,采用结构化生命周期法或面向对象方法,分析、设计一个在电子商务环境下运作的业务信息系统,用SQL Servers或类似的数据库管理系统为数据管理环境,以ASP、JSP、C#等为前台开发工具实现并运行、评价改进之,最后要写出课程设计报告(参见《信息系统开发与管理课程设计大纲》)。通过本设计进一步弄懂电子商务环境下的信息系统及其相关的基本概念,理解经营管理决策与信息系统之间的依存互动关系,明确信息系统要把重点从IT中的T转到I、M(管理)、E(经济)的转变的重要意义,把握与信息系统密切相关的管理决策理论与方法,掌握网络环境下的信息系统开发的原则、方法、方式、策略及其基本过程与项目管理,领悟信息系统工程中结构化生命周期法(或面向对象方法)的基本思路和基本过程,初步具备开发与管理网络环境下的信息系统的基本能力,初步形成在计算机网络平台上,运用现代管理理论与方法,通过信息系统增值开发,解决电子商务环境下经营管理中的实际问题的基本素质。
三、课程设计应完成的工作
1. 进行必要的实地调查与文献阅读,正式确定选题
2. 完成华润万家采购管理系统的系统分析,包括用户需求调查、可行性研究、现状调研、目标分析(构思系统的逻辑模型)
3. 完成华润万家采购管理系统的系统设计,包括总体设计与详细设计
4. 完成华润万家采购管理系统的系统实现,包括数据库建立、模块的编程与调试、系统联调等
5. 运行并评价实现的完成华润万家采购管理系统
6. 撰写课程设计报告,除上述内容外,要总结自己的收获体会。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
初步选题和资料准备
课室与宿舍
平时课后完成
2
动员大会与选题指导
课室
第4周一上午
3
业务流程调查及绘制业务流程图BPD
分散
第1-14周
4
初步完成系统开发
课室与宿舍
第5-17周
5
系统演示与讲解
A南507
第19周一上午
6
答疑、设计报告初稿的验收
办公室
第19周周五
7
系统分析的讲解与答疑
实验室D503
第17周周五上午
8
系统设计的讲解与答疑
实验室D503
第21周周四上午
9
系统抽查
学生宿舍
下学期第一周周二下午
10
最终版报告提交
办公室
下学期第二周周二下午
11
系统全面检查
学生宿舍
下学期第二周周五、六、日
五、应收集的资料及主要参考文献
1. 应收集的资料
(1)华润万家采购管理系统业务运作与管理的相关资料
(2)超市采购的相关资料和单据
(3)MIS开发与管理的相关资料。
2. 主要参考文献
[1] 张立厚等编著,管理信息系统开发与管理,清华大学出版社,2008.
[2] 张立厚 张应利 高京广 陈鸣中 管理信息系统 清华大学出版社2007年7月8日
[3] 王晟 万科 Dephli数据库开发经典案例解析 清华大学出版社 2006年6月
发出任务书日期:2009年12月 2日 指导教师签名:张延林
计划完成日期:2010 年3月12日
基层教学单位责任人签章:
主管院长签章:
华润万家采购管理系统
摘要:
华润万家是中央直属的国有控股企业集团——华润(集团)有限公司旗下优秀的零售连锁企业品牌,同时也是中国最具规模的零售连锁企业品牌之一。截止2008年12月,华润万家在全国拥有门店2698家,员工人数超过15万人,2008年实现销售638亿元,位居中国连锁超市第一位。
华润万家秉承“全国发展、区域领先、多业态协同”的发展战略,坚持“时尚、品质、贴心、新鲜、低价、便利”的经营理念,以持续改善大众生活品质为己任,引领现代、健康的生活方式。以大卖场为主的多种业态优势互补,为消费者提供高质、超值、安全的商品与服务,最大限度的满足消费者的各种购物需求。目前,华润万家的业务发展区域已遍布华东、华南、华北、西北、东北、中原以及香港等16个省(直辖市)、近100个城市。
华润万家采购管理系统概述
作为超市经营的一个核心环节,采购是获取利润的重要来源。采购制约着超市销售工作的质量,决定着超市商品周转的速度,关系到超市经济效益的实现程度。作为步入快速发展和成熟期的超市行业同其他企业一样,信息化是可持续发展,增加核心竞争力的必要手段。但目前为止,大多数超市管理信息系统都是不太完善的,信息化认识处于表面层次,业务流传和信息系统建设需要一段时间的探索,认识和渐进的过程。如果能够采用完善的系统,就能使业务井然有序地进行,简化日常烦琐事务,实现有效管理。因此,尽可能地完善采购管理系统是每个超市成功经营的核心问题的核心。
采购管理的内涵。①就企业功能而言是,采购管理是企业为了达成生产或者销售计划,从适当的供应商,在确保适当品质下,于适当的时期,以适当的价格,购入必须数量的物品或者劳务所采取的一切管理活动。②就管理功能而言是,采购管理系研究在取得物品与劳务的过程中,统筹兼顾事前的规划,事中的执行以及事后的控制,以达到维持正常的产销活动,降低产销成本的目的。
1. 华润万家采购管理系统的系统分析
1. 1用户需求:
华润万家在中国不断地发展,所接的客户与跟单也越来越多,总体来说,他们的单据已经全部电子化,没有一张是纸质的单据。而且单据类型就达1000都种,不过实际上用的占总体比例比较少。
本系统是针对采购环节的,尽量完善采购的功能,使用户有高效的操作。开发的基本目标包括:
1) 请购单管理。包括需求的商品的详细内容:商品号,名称,规格,需求时间等。接受库存部门的请购信息,并提供其他一些能引起需求变化的因数查询(销售计划,上次合同是否执行完毕,部门财务信息),供主管审批时参照使用。审批结束后对请购单按是否批准作分类记录。
2) 采购订单管理。根据审批通过的请购单,生成采购订单,除了请购的基本内容外还包括供应商,
运输方式,付款方式,付款条件,交货日期等详细情况。按不同的状态实现订购单的新建,修改,撤销功能。具体地说,未执行状态下才能够新建,撤消订购单,执行中状态下才能修改和撤销,订购单一旦完成,就不允许修改和撤销。另外也对订购单按状态分类列表记录。
3) 采购合同管理。该部分功能最强大。
①一份采购定单生成后对应生成采购合同(采用合同号和订购单号对应)。
②对撤销,执行中,已执行的合同分类列表记录,并且合同状态和采购订单状态有效关联:一份合同生成后,合同和对应的采购订单自动进入执行状态;一份合同完成后,对应的采购订单也自动进入完成状态。
③提供每一个供应商信誉记录(合同执行情况分类记录)。
④按供应商名称和商品名称提供供应商供货记录查询列表;按商品名称,供应商名称和合同执行时间提供进货数量统计。
⑤按照合同的付款信息,及时向财务部门反馈用款信息,经批准后更新部门可用资金数目。⑥合同完成后,为库存提供到货信息(名称,数量等)。
初步调查
初步方案
初步收集信息,进一步细化用户需求,了解该企业的部门,人员,业务流程与处理等方面的情况,为可行性研究提供参考。
了解该企业的部门结构,该企业主要的部门有分店店长,分店值班经理,采购部门,和销售部门等。各部门都由管理部门统一管理。
了解该企业的各部门人员的职责,分店店长是管理各部门,接受各部门的反馈意见,并根据企业的现状制定计划好方针政策。分店值班经理是协助分店店长监督管理财务,销售,采购和仓管工作。采购部是根据仓库部的补货单寻找满意的产品。销售部:收银台销售货物,自动生成小票或者发票。仓管部:当库存量少于设定的数量时,向采购部门发出补货单,提醒他们入货以及审核货单是否一致,一致则入库。
了解业务流程。首先是仓库部门发出补货订单给采购部门,然后交给采购部门(做跟单的工作),电话或者到实地联系供应商,选择符合要求的货品,进货。仓管人员验货后入库,若货单不一致,则通知采购部或者另行协商处理。
收集相关单据:进货单,出货发票
该企业的流程基本顺畅,就是数据的查找速度慢,统计不方便,耗费较多的时间。因此针对该企业的采购部创建一个系统。
结合企业自身的条件,总结出三个备选方案。
1)用传统的局域网的开发模式,比如VFP,VB来开发
操作系统:Windows 2000/XP
开发目标:减少因用excel带来的数据统计不便
基本功能:实现企业内部的数据共享;以数据库来管理企业。
硬软件平台:在局域网平台上,用VFP,VB等开发软件,对内存容量要求比较低,一般128MB或256MB就足够,高效的处理能力,简单易用的输入输出,对环境要求也相对比较简单,由于只是在企业局域网内运行,如果不遭受自然灾害等攻击,外部网络很难对其进行攻击,所以在硬件方面还是有较强的可靠性;在软件方面就先进性而言,还是相对比较落后的,而且在处理能力上比较单一,功能较差,可靠性也没那么完善,特别是当遭受不可预料的攻击后,灾难恢复能力较弱。采用的源代码独立性差,很难移植性。对硬件的要求较低。
应用方式:单机结构方式。
策略:结构化生命周期法。
2)用初始的C/S开发模式,比如Delphi。
数据库系统: SQL Server 2000
操作系统:Windows NT/2000/XP
开发目标:基本实现网络平台,使得只有一台电脑并能上网就能登录本系统进行管理,将组件技术和ActiveX技术分别应用在服务器端和客户端,开发高效、安全的应用系统。
基本功能:信息与数据共享的范围更广,在Internet平台下信息量更丰富,信息交互性明显提高,从而提高企业业务处理的效率,实现COM组件技术和ActiveX技术相互操作,建立可伸缩的应用系统;
硬软件平台:采用数据库服务器、信息处理系统服务器、浏览器、IIS、WindowsNT操作系统、Dreamweaver、FrontPage、VisualIntDev等软件来开发,要求较高的内存与CPU,至少256MB的,最好是512MB以上,CPU则至少在Pentium 3以上,处理能力较强,输入输出简单易用,以网页形式表示,给用户熟悉的操作界面与方式,环境要求较高,在网络环境下,要确保客户资料的安全保密;总之,对硬软件要求都相对较高。
应用方式:客户器/服务器二层结构模式。
策略:结构化生命周期法。
3)用目前比较流行的B/S开发平台,比如JSP平台。
开发工具:JSP + SQL Server 2000/Dreamweaver
数据库系统: SQL Server 2000
操作系统:Windows NT/2000/XP
开发目标:解决单机与两层结构存在灵活性差、升级困难、维护工作量等问题,弥补c/s开发模式的不足,适应了当前用户对管理信息系统的新需求,适应web服务器发展的需求,建立一个适应企业可持续发展的维修管理系统。
基本功能:三层体系结构实现服务器对浏览器的请求单独处理了;web server单独组成一层实现数据请求、加工、结果返回以及动态网页生成等工作;简化客户机负担,事务处理逻辑部分分给了功能服务器;独立三层体系结构,任何一层的改变不会影响其它层的功能。跨平台操作,任何一台机器只要装有WWW浏览器软件,均可作为客户机来访问系统;用防火墙技术来保证系统的安全性,有效地适应了当前用户对管理信息系统的新需求。基于b/s体系结构开发应用程序将组件技术应用到B/S体系结构中,实现业务逻辑封装,提高软件的可重性和可维护性。硬软件平台:在B/S模式下,用Dreamweaver作为开发工具,JSP作为开发语言,SQL Server 2000作为数据库系统,对内存和CPU要求较高,至少要有512MB的内在和Pentium 4 的。强大的处理能力,简单易用的输入输出,网页形式下,给用户熟悉的操作;对环境要求高,在开放的网络下运行,使得企业提供安全,有效的浏览,以及易懂。对硬软件要求很高,并充分考虑了备份性与灵活的移植性,有效的数据维护和灾难恢复。
应用方式:服务器/浏览器三层结构模式
策略:结构化生命周期法。
1.2.2可行性分析与评价:
MIS的开发是一项耗资多、周期长、风险大的工程项目,在系统开发之初进行可行性研究,对于确保资源的舒坦使用、避免浪费和一些不必要的失败都是十分重要的。介于以上三个方案的详细分析,现对这三种方案的技术,经济,社会这三个方面的必要性,可能性,有益性组成九宫格可综合评价备选方案的可行性及其满意程度。
第一种方案的可行性研究的九宫格
必要性
可能性
有益性
技术
提高了用户的效率,避免了用excel时逐一查询的麻烦
所需设备简单,容易实现
提高了数据的查找速度,方便统计
经济
管理效率有所提高
投入资金少,人员只需作简单的培训
效率的提高也提高了企业经济效益
社会
若不采用,企业的数据输入仍然是相对原始,效率低
能为企业提高一定的效率,促进企业的发展
企业的数据处理技术有所进步
第二种方案的可行性研究的九宫格
必要性
可能性
有益性
技术
提高系统与客户的交互性
除了设备外,还需要一个熟悉系统的计算机人员
更好地客户交流,方便统计数据
经济
方便了客户提交订单
投入资金相对多些,需要培训一个计算机管理人员
效率更大的提高为企业带来更多的利益
社会
若不采用,需要每次订货要通过电话协商
提高与客户交流的效率,促进企业发展
便于企业与客户的交流
第三种方案的可行性研究的九宫格
必要性
可能性
有益性
技术
可以较高效率的处理数据
除了设备外,还需要一个熟悉系统的计算机人员
较高地提升了数据的处理速度,提升了企业的整体效率
经济
更进一步地实现计算机化操作,提升整体效率
一次性投入较多的资金,长期配备网络管理人员.
效率的较高提升,提高了企业的竞争力
社会
若不采用,与先进的计算机化操作有一定的距离
企业人员都需要熟悉此系统的整个操作流程
综合管理能力的提高,利于企业的长时间发展
综合以上3个方案,从当前竞争力的要求和企业的长远利益考虑,决定采用第3种方案,虽然是一次投入相对较多的设备资金和人员的培训资金,但是客户数量和订单数量的不断增加,要使企业能获得更多的利益,必需是更有效地提高效率。
可行性研究成果方案:
开发工具:JSP +SQL Server 2000、Dreamweaver
开发语言:JSP
数据库系统:SQL Server 2000
操作系统:Windows NT/2000/XP
开发目标:舍弃现状的excel的储存数据的方式,建立一个B/S模式的能够为用户带来较高效率地存储和统计的采购系统
基本功能:实现企业的采购功能,为企业的采购完成一个能方便输入、统计、查询数据的功能
扩展功能(在本次设计系统的基础上扩展):信息与数据共享的范围更广,在Internet
平台下信息量更丰富,信息交互性明显提高,从而提高企业业务处理的效率,实现
COM组件技术和ActiveX技术相互操作,建立可伸缩的应用系统;
应用方式:单机结构方式。
策略:结构化生命周期法。
1.3现状调查
1.3.1组织机构调查
经过调查,该办事处的部门机构简单,包括分店店长,分店值班经理,财务部,采购部,销售部。各部门由分店店长统一管理。现状组织机构如下:
主要职能:
①销售部:收银台销售货物,自动生成小票或者发票。
②采购部:根据仓库部的补货单,寻找供应商,采购产品。
③仓管部:当库存量少于设定的数量时,向采购部门发出补货单,提醒他们入货以及审核货单是否一致,一致则入库,否则向采购部反应。
④分店值班经理:协助分店店长监督管理财务,销售和采购工作。
⑤分店店长:管理各部门,接受各部门的反馈意见,并根据企业的现状制定计划好方针政策。
1.3.2业务流程现状调查
华润万家是以中国超市零售为中心。而其主要业务流程为:
A.客户直接到卖场购物,当剩下库存少于设定的数量时,直接向供应商发出补货单。
B.采购部根据仓库需求制定进货单,并对其审核,有错则重新制定,无错则根据情况制定造价单,并与供应商讨价格,价单不符合要求的则重新造价,符合要求的则进货,生成以进货单,提交给仓库部门。
C.仓管部门接受进货单后对其进行单货一致审核,有错则退回给供应商并通知采购部门,无错入库。
注:业务流程图中,圆形是外部对象,是与信息系统交往、提供输入或接受输出信息、甚至参与现场作业的人或机构;平行四边形是单据、票证、报表等资料;书形是帐簿等资料,在计算机系统中为数据存储,用圆柱形表示;菱形表示审核、校验等;矩形表示处理功能。
具体流程图如下:
报价表
年 月 日
产品编号
产品名称
图示
规格
重量
颜色
计量单位
单价
数量
金额
备注
货物总金额
税费
总额
采购员
由现状业务流程图及相关的单,证,票,据等其他文档资料,可以列出以下的所有数据项(由于本人是为企业创建采购系统,所以是针对采购系统地采集数据单表):
管理人员登记表中的数据项有:工号、姓名、性别、生日、职务、家庭地址、电话、任职日期
进货单据中的数据项有:单号、物资名称及规格、数量、单位、金额、总金额、日期、备注、经手人。
已进货单中的数据项有:单号、货号、物资名称及规格、数量、单位、金额、总金额、日期、备注、经手人。
报价表中的数据项有:产品编号、产品名称、图示、规格、计量单位、重量、颜色、单价、数量、金额、备注、货物总金额、税费、总额、采购员。
根据已经列出来的数据项去掉重复的和根据建立数据库的需要改变和完善一下数据项,就得到帐务处理中最基本的全部数据项如下:产品号、产品名、规格、计量单位、供应商号、供应商名、供应商地址、供应商联系人、供应商邮编、供应商电话、部门号、部门名称。金额和总金额是导出项。
1.3.4由基本项构思ERD的基本结构
由系统的基本数据项,按照由基本项构思E-R图的四条基本原则,并且根据系统的基本功能的要求,导出本系统4个初始局部的E-R图,然后在根据实际情况引进虚实体添加各实体属性进行改造,最后综合成系统的全局E-R图。
1.初始局部E-R图的构思
原则1(确定实体):把在业务流程中能独立存在的现实事物作为实体,通常它有多个由基本项描述的特性。
在此系统中,员工,产品,供应商,部门是单独存在的事物,应做为是实体。
原则2(确定联系):在业务流程中实体集之间的关联与结合需要长期保存时,应作为联系并确定其类型。
(1)员工与部门之间包含两种联系,其一为员工与部门有着M:1的属于联系,
其二是员工与部门有M:1的属于联系。如图:
员工包括了分店店长,分店值班经理,财务员,采购员,销售员,仓管人员,所以他们之间是父子联系
如图:
(3)采购员、供应商和产品之间存在M :N:L的采购关系,如图:
原则3(确定属性):实体的属性是试题的本质特性,实体应有标识属性(能把不同个体区分开来的最小属性组),并指定其中一个作为主标识。联系的属性是联系的结果或状态。
部门:部门号、部门名。如图:
员工:员工号、姓名、性别、家庭地址、联系电话、所属部门。如图:
供应商:供应商号、供应商名、供应商地址供应商联系人、供应商邮编、供应商电话。如图:
产品:产品编号、产品名称、图示、规格、计量单位、重量、颜色。如图:
采购关系中的属性:提成、运输费、日期、数量、单价。如图:
2. 综合成全局E-R图
原则4(一事一地检验原则):业务的所有基本项要在其ERD中作为属性在且仅在一个地方出现。(由于篇幅的限制,实体联系图中没有属性给出,不过在逻辑检查上符合原则4)
1.3.5引进联系体得到改进的ERD
消除冗余的实体与联系;如果有复杂的多对多的多元联系,则引进联系体把它分解为多个二元联系来简化
从上面的采购,报价子ERD导出一般关系的四条原则,得到关系框架
时间
日期
采购员号
产品号
供应商号
单价
数量
外码
外码
外码
复合主码
从上面的关系表中可以发现一下两个问题:第一就是主码太复杂;第二是当进货需要多种货物时,出现数据输入的大量冗余。因此此关系模型不是合理的,需要我们进一步的改进。为此我引进了联系虚实体。
引进虚实体后的局部E-R图
采购,报价子ERD
2.引进联系体后的全局EDR如下图所示
1.3.6现状评价
对于引进联系体后,能使其关系的复杂程度大为简化,使数据的管理更加的科学化。
1.4 目标分析
1.4.1 由ERD初步考虑数据存储组织
原则1(实体转换成关系模式):ERD中每一个独立的实体转换为一个关系模式,实体的属性组成关系的属性,实体的主标是转换成关系的主码。
原则2(从实体及其从联系转化为关系模式):ERD中一个从主体及其主从联系转换为一个关系,从实体的属性及其主实体的属性组成该关系的属性,其主实体关系的主码,在实体的一组属性,作为该关系的主码。对子类实体可作类似一对一联系的从实体的转换。
对于员工与库管人员,采购人员等具有父子类关系,
则在员工关系中用“职务”属性识别。
原则3(一对多联系在关系模式中的表示):ERD中的一个一对多联系通过在其“多”实体关系上增加“1”实体关系的主码和联系的本身的属性来表示。
原则4(多对多联系转换为关系):ERD中的一个多对多联系转换为一个关系,其被联系实体的关系的主码作为外码和该联系本身的属性一起组成关系的属性,被联系关系的主码组成该关系的复合主码。
依据四条原则从全局ERD导出一般关系框架,作为数据存储组织的初步考虑,可以检验ERD的构思是否规范,可为以数据库为中心进行业务流程再造提供依据。从引进联系体的E-R图中导出系统的一个关系模型框架如下图所示:
部门联系
部门号
部门名
主码
员工关系
员工号
姓名
性别
家庭住址
联系电话
所属部门号
外码
主码
产品关系
产品号
产品名
规格
计量单位
图示
重量
颜色
主码
供应商关系
供应商号
供应商名
供应商地址
供应商联系人
供应商邮编
供应商电话
主码
采购,造价联系体关系
提单号
采购员号
供应商号
外码
外码
主码
1.4.2 业务流程再造
作为以数据库设计为中心的业务系统开发中的业务流程再造,主要是考虑以数据库为中心,尽可能地让计算机自动完成业务,带到人机合理地结合,集成业务流程,提高效率。再此还要考虑有效地控制采购环节的效用,为企业创造出更大的经济效益,增强企业活力,赢得市场。(本流程图是针对采购部分而再造)
企业采购管理
接收仓库部提供的补货单,有错退回,无错则货单输入FORM。接着查找供应商,查找产品,采购员认为价格相符则形成造价单,价单资料输入数据库FORM。然后进货,将实到货输入FORM,货单与实到不符则形成单货不符进货明细交给供应商,相符则将已进货单提交给仓管部。
1.4.3由新BPD导出数据流图DFD:
运用功能-数据(P-D)分析法,可得到初始化的UC矩阵图,如图所示:
1-供应商关系处理 2-进货单处理 3-核对货单 4-入库
通过调整后的UC矩阵后得到的所有数据流图(DFD)如下:
新DFD的数据字典(DD):
编号
项名
类型
长度
小数位
值域
说明
按首次出现的数据存储编号
员工号
字符
4
按首次出现的数据存储编号
姓名
字符
20
按实际出现的数据存储编号
性别
字符
2
按首次出现的数据存储编号
家庭地址
字符
50
按首次出现的数据存储编号
电话
字符
20
按首次出现的数据存储编号
产品号
字符
6
按首次出现的数据存储编号
产品名
字符
20
按首次出现的数据存储编号
计量单位
字符
8
按首次出现的数据存储编号
规格
字符
12
按首次出现的数据存储编号
计量单位
字符
4
按首次出现的数据存储编号
重量
浮点
8
按首次出现的数据存储编号
颜色
字符
4
按首次出现的数据存储编号
供应商号
字符
6
按首次出现的数据存储编号
供应商名
字符
20
按首次出现的数据存储编号
供应商地址
字符
50
按首次出现的数据存储编号
供应商联系人
字符
20
按首次出现的数据存储编号
供应商邮编
字符
6
按首次出现的数据存储编号
供应商电话
字符
20
导出项的描述
编号
导项名
类型
长度
小数位
导出方法
按首次出现的数据存储编号
合计金额
数值
9
3
∑单价*数量
数据流表
编号
数据流名
来源
结构
去向
FT-1
订货单
采购部门
订货单
1确定信息采购
FT-11
相符进货单
3采购结果处理
相符进货单
仓库部
FT-12
单货不符进货明细表
3采购结果处理
单货不符进货明细表
供应商
数据存储表
编号
数据存储名
写入
结构
读出
ST-1
供应商关系
供应商资料
供应商号、供应商名、供应商地址、供应商联系人、供应商邮编、供应商电话
查看供应商资料
ST-2
货物关系
产品资料
产品号、产品名、规格、计量单位、重量、颜色
查询产品资料
ST-11
供应商关系
供应商关系
提单号、供应商号、供应商名、供应商地址、供应商联系人、供应商邮编、供应商电话
1供应商管理
ST-12
货物关系
进货资料
提单号、供应商号、产品号、每种产品数量
2货物管理
ST-13
进货单关系
进货资料
提单号、供应商号、产品号、每种产品数量
4造价单管理
ST-14
造价单关系
造价单关系
提单号、供应商号、产品号、每种产品数量、金额
4造价单管理
ST-15
已进货单关系
已进货单关系
提单号、供应商号、产品号、每种产品进货数量
5货到管理
加工处理说明表
编号
加工名
输入
处理逻辑
输出
1
供应商管理
FT-1订货单
ST-1供应商关系
处理供应商关系
ST-11供应商关系数据文件
S0-1完善信息进单记录
2
货物管理
ST-2货物关系
S0-1完善信息进单记录
处理货物关系
S0-2进货单报表
4
造价单管理
S0-2进货单报表
处理造价单关系
ST-13进货单关系
ST-14造价单关系
5
货到管理
S0-4正确造价单记录
处理已到货的关系
FT-11进货单
FT-12货不符进货单明细表
ST-15已进货单关系
1.4.4 修改ERD
经过检查,上面得到的EDR没有必要修改!
1.4.5得到新系统的功能层次图(FHD)
系统功能层次图
华润万家采购管理系统的系统设计
2.1.总体设计
2.1.1一般关系模型设计(修改和新建关系框架)
所有的改进都在上述的系统分析中已修改完整,这理不再重画,此部分略。
2.1.2处理功能总体结构设计(设计新系统的MSD)
1)由DFD导出初始MSD:
图 华润万家采购系统模块结构图
注:1.订货单 2.无误货单 3. 货单临时文件 4. 供应商关系 5. 新供应商记录 6. 老供应商记录 7. 完善供应商信息进单记录 8. 货物关系9.供应商关系数据文件 10. 新货进单记录 11. 老货进单记录 12. 完善货物信息进单记录 13. 货物关系数据文件 14. 进货单报表 16. 造价单报表 17. 价单符合 18. 正确造价单记录 19. 进货单关系 20. 造价单关系 21. 实到货量进货单 22. 相符进货单表 23. 不符进货单表 24. 进货单 25. 单货不符进货明细报表 26. 单货不符进货明细表 27. 正确进单记录 28. 已进货单关系
2)写出改进MSD的启发性规则,必要时叙述改进初始MSD的思路,画出改进后的MSD;
①MSD与DFD的对应性;
②模块的独立性;
③模块的影响范围是控制范围的尽可能大的子集;
④基本模块的大小要适中;
⑤结构图的宽度、深度,模块的扇入、扇出应适度;
⑥接口简明且与子模块功能一致;
⑦模块只有单一的入口;
⑧模块功能是可预期且简明的。
3)叙述MSD优化思路,必要时,给出优化的结构。改进后的完整模块结构图台下:
注:29.统计报表 30.员工关系
2.1.3系统平台的总体结构设计:
(1)设备地理位置分布
设备都位于值班室。
(2)信息处理及信息存储设备总体设计
信息处理主要以事务处理和数据处理为主,采用一般的微机即可。
(3)人机接口设备总体设计
所开发的是Windows应用程序,使用键盘、鼠标作为输入设备,显示器和打印机作为输出设备。
(4)数据通信设备总体设计
由于设备地理分布较近,所以只需要采用一般的通信电缆来连接网络,如双绞线就行了。计算机采用基于Windows2000和Windows XP的微机,计算机之间的通信不需要特别的连接技术。
(5)系统处理结构的总体设计
采用集中式模式:
2.2详细设计:
2.2.1代码系统设计:
代码设计的基本原则:唯一确定性,标准化与通用性,简单性,稳定性和可扩充性,容易修改,满足系统要求,便于记忆和使用。
1)员工编号:8位,前两位为性别,后六位为顺序号。如男为01,女为02。
2)部门编号:3位, 3位顺序码。如:001代表采购部门。
3)造价单单号:10位,为分组码。
单据标志——1位字符,以字母A开头;日期——6位字符(年月日);顺序编号——3位字符。
2.2.2系统平台具体设计:
SHAPE \* MERGEFORMAT
设备选型表的相关清单
名称
型号
价格
生产日期
保修期限
服务器
联想深腾7000G高性能服务器
¥999,999
2009上市
三年保修,三年上门
交换机
Brocade 300 光纤存储交换机
¥178,
2009年上市
三年保修,三年上门
计算机
戴尔 Studio One 19(S210552CN)
¥8,880
2009年上市
升级到3年远程诊断及3年电话支持和为客户提供上门硬件有限保修服务
打印机
HP 2605dn(网络型)
¥4,500
About2009年
一年上门服务
双绞线&水晶头
元/米 元/个
总共需要约¥1,191,900。
在本系统中有如下用户分类:采购员,分店店长,分店值班经理,系统管理员。
所以每当用户系统人员进入系统时,系统会自动检验用户的登陆权限,系统会根据用户的最大权限,把菜单上此权限外的部门进行屏蔽,权限设置如下:
采购员:进料单基本资料的录入。
分店店长、分店值班经理:可以行使对系统的一切操作。
系统管理员:除部门信息管理,员工信息管理外的一切操作,如:用户权限设置,系统备份系统恢复,还原等。
2.2.3数据库结构的具体设计:
(1)数据表结构:
数据基础表结构:
员工关系
字段名
员工号
姓名
性别
家庭住址
联系电话
所属部门号
登录密码
外码
外码
主码
主码
类型
Varchar
Varchar
Varchar
Varchar
Varchar
varchar
Varchar
长度
6
20
2
50
20
3
10
小数位
列约束
非空
非空
eq \o\ac(○,1)
行约束
插入、删除为 ”限制”,更新为 ”级联”
表约束
参照约束
说明
性别=”男” or性别=”女”,出错信息: ”性别只能是男或女”
部门关系
字段名
部门号
部门名
外码
主码
主码
类型
char
Varchar
长度
3
10
小数位
列约束
非空
非空
行约束
表约束
插入为”忽略”,删除为”限制”,更新为 ”级联”
产品关系
字段名
产品号
产品名
规格
计量单位
图示
重量
颜色
供应商号
外码
外码
主码
主码
类型
Varchar
Varchar
Varchar
Varchar
pictrue
varchar
Varchar
Varchar
长度
6
20
40
10
50
50
8
6
小数位
列约束
非空
非空
非空
行约束
插入为忽略、删除为限制,更新为级联
表约束
供应商关系
字段名
供应商号
供应商名
供应商地址
供应商联系人
供应商邮编
供应商电话
外码
主码
主码
类型
Varchar
Varchar
Varchar
Varchar
Varchar
varchar
长度
6
20
50
20
6
20
小数位
列约束
非空
非空
行约束
表约束
采购,造价表
字段名
提单号
采购员号
供应商号
进货日期
进货时间
审核状态
成交状态
外码
外码
外码
主码
主码
类型
char
char
char
smalldatetime
smalldatetime
audit
varchar
长度
10
4
6
8
8
10
6
小数位
列约束
非空
非空
非空
行约束
插入为”忽略”,删除为”限制”,更新为 ”级联”
表约束
参照约束
说明
采购明细表
字段名
提单号
产品号
单价
数量
已进数量
外码
外码
外码
主码
复合主码
类型
char
char
smallmoney
Int
Int
长度
10
6
11
4
4
小数位
列约束
非空
非空
行约束
表约束
已进数量小于等于库存数量
参照约束
说明
数据视图表结构:
查询视图
字段名
提单号
采购员号
采购员姓名
供应商号
供应商名
进货日期
外码
外码
外码
主码
主码
类型
Varchar
Varchar
Varchar
Varchar
Varchar
smalldatetime
长度
10
8
20
10
20
8
列约束
非空
非空
永久关联:
注:箭头表示父表主键指向子表的相关索引(常为外键)的永久关联
表间的永久关联如下表所示:
父表
主码
子表
修改
删除
插入
部门表
部门号
员工表
级联
限制
限制
员工表
工号
采购,造价表
级联
限制
限制
供应商表
供应商号
采购,造价表
级联
限制
限制
产品表
产品号
采购明细表
级联
限制
限制
采购,造价表
提单号
采购明细表
级联
级联
限制
2.2.4模块设计:
子业务模块的设计
登录界面:
此模块用、和三个页面实现,其中页面用来显示登陆系统的入口,用来验证三次密码输入
下订单的界面: 订单查询界面:
订单报表的界面:
添加信息界面:
提货单界面:
2.2.5人工模块的业务流程、现场工作流程设计与组织结构的改组的建议:
没有完整意义上的人工模块,人工只是负责数据的录入与检验,系统都是由计算机实现的。例如提单的输入,用户只需填写信息,确认保存。当客户同意这造价后便进入确定提单界面进行确认,并打印采购单。当进货与单据相一致时,便打印进货单交给销售部,否则打印单货不符进货明细表交给供应商。
三、采购系统的系统实现
3.1 人员培训与平台实现的简要讨论
人员培训方面,按系统使用的不同层次对员工进行不同的培训,使用户在接受培训后能够更有效地参与系统的测试,更好地了解系统的结构、功能和软、硬件运行环境,从而更好地管理系统。系统正式投入运行后,由经过培训合格的操作用户和运行管理人员接收新系统的运行和管理,确保系统正常投入运行;并配置相关技术人员。
平台实现方面,按照先前所设计的系统平台设计方案,在原有的系统平台基础上,先改造现有设备,充分利用现有的软、硬件资源,后购置新设备。按前面所选的软、硬件,通知供货商按要求供货,然后按照系统平台设计方案布置、安装设备并调试。
3.2 数据结构的建立与初始化数据输入
3.2.1 数据库及其基本表的建立
①用SQL编写数据库表,输入计算机并打印出来;
(1)建立采购系统数据库
(2)各数据库表的建立如下:
为了保证数据库系统的使用安全,实现不同身份的用户在登陆系统后,拥有各自对系统的使用权限,所以需要创建用户表,以达到管理不同权限用户的目的。
建立部门表create table department
(departmentnum char(3) primary key,departmentname varchar(20) not null)
建立员工表create table Staff
(staffnum char(4) primary key , staffname varchar(20) not null, sex char(2),
familyaddress varchar(50), stafftel varchar(20),departmentnum char(3),foreign key (departmentnum) references department(departmentnum),
password varchar(10))
建立产品关系表
create table production
(pronum char(6) primary key,proname varchar(20) not null,standard varchar(40),
customtel varchar (20),unit varchar(10),pictrue varchar(50),weight varchar(10),
colour varchar(8))
建立供应商关系表
create table supplier
(supnum char(6) primary key,supname varchar(20) not null,supaddress varchar(50),supman varchar(20),suppostalcode varchar(6),
suptel varchar(20))
建立订单表
CREATE TABLE p_order
(
orderID int identity(1,1) not null,
supnum varchar(10) not null,
id char(6) not null ,
quantity int not null,
daytime smalldatetime not null,
worker varchar(50) not null,
PRIMARY KEY ("orderID"),
FOREIGN KEY(supnum) REFERENCES supplier(supnum),
FOREIGN KEY(id) REFERENCES production(pronum)
);
建立提货单表
CREATE TABLE p_th_detail
(
tid varchar(15) not null unique,
supnum varchar(10) not null,
daytime smalldatetime not null,
worker varchar(50) not null,
PRIMARY KEY ("tid"),
FOREIGN KEY(supnum) REFERENCES supplier(supnum),
);
建立提货联系体表
CREATE TABLE p_th
(
Lid bigint identity,
tid varchar(15) not null,
id char(6) not null,
quantity int not null,
PRIMARY KEY ("Lid"),
FOREIGN KEY(tid) REFERENCES p_th_detail(tid),
FOREIGN KEY(id) REFERENCES production(pronum)
);
系统关系图
3.2.2 用户视图的建立
产品、供应商信息视图的建立,显示中文信息
find_order订单视图的建立
ti_table提单视图的建立
3.3 模块的实现
3.3.1客户模块的实现
产品资料显示
产品资料查询显示
产品的添加
<table width="38%" border="0" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="43%"><div align="center">产品号:</div></td>
<td width="57%"><div align="left">
<input name="pronum" type="text" id="pronum" size="10" onfocus="showmuti();" />
</div></td>
</tr>
<tr>
<td><div align="center"> 产品名称:</div></td>
<td><div align="left">
<input name="proname" type="text" id="proname" size="15" onblur="checkproname();" />
</div></td>
</tr>
<tr>
<td><div align="center"> 销售单价:</div></td>
<td><div align="left">
<input name="price" type="text" id="price" size="15" onblur="checkprice();" />
元</div></td>
</tr>
<tr>
<td><div align="center"> 计量单位:</div></td>
<td><div align="left">
<input name="unit" type="text" id="unit" size="10" onblur="checkunit();"/>
</div></td>
</tr>
<tr>
<td><div align="center"> 规格:</div></td>
<td><div align="left">
<input name="standard" type="text" id="standard" size="10" onblur="checkstandard();"/>
</div></td>
</tr>
<tr>
<td><div align="center"> 颜色:</div></td>
<td><div align="left">
<input name="colour" type="text" id="colour" size="10" />
</div></td>
</tr> <tr>
<td><div align="center"> 供应商号:</div></td>
<td><div align="left">
<input name="supnum" type="text" id="supnum" size="10" onblur="checksupnum();"/>
</div></td>
</tr>
<tr>
<td height="50" colspan="2">
<div align="center">
<input type="submit" name="Submit" value="确定" />
<input name="Submit2" type="reset" value="重置" />
</div></td>
</tr>
</table>
产品的修改删除
<div align="center">
<input type=image src="image/" name="Submit" onclick="return confirm('确定修改吗?');" />
<a href=" alt="删除" src="image/" border="0" onclick="return confirm('确定删除吗?');" /></a></div> </td>
供应商模块的实现
供应商资料显示
供应商的查询:
供应商的添加、修改和删除:
订单模块的实现
下采购单
采购单号:
<%="KH"+year+month+day+"_"+zi+(NO+1)%>
<%if(supnum!=null) {%>
供应商名:<font color="red"><%=supname%></font>
<%}%></div>
<table width="72%" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#00CCCC">
<tr>
<td width="26%" bgcolor="#66CCFF"><div align="center">产品号</div></td>
<td width="18%" bgcolor="#66CCFF"><div align="center">产品名称</div></td>
<td width="15%" bgcolor="#66CCFF"><div align="center">计量单位</div></td>
<td width="13%" bgcolor="#66CCFF"><div align="center">销售单价</div></td>
<td width="14%" bgcolor="#66CCFF"><div align="center">购买数量</div></td>
<td width="14%" bgcolor="#66CCFF"><div align="center">应付金额</div></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><form id="form1" name="form1" method="post" action="">
<div align="center">
<input name="pronum1" type="text" id="pronum1" size="5" value="<%if(pronum1!=null){%><%=pronum1 %><%}%>" onBlur="formCheck();" />
<a href="
<label></label>
<label><a href="" target="_blank"><img src="image/" width="24" height="24" border="0" /></label>
</div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(pronum1!=null)%><%= proname1%></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname1!=null&&!"Not Exist!".equals(proname1))%><%= unit1 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname1!=null&&!"Not Exist!".equals(proname1))%><%= price1 +"元"%></div></td>
<td bgcolor="#FFFFFF">
<form id="form2" name="form2" method="post" action="">
<div align="center"><label>
<input type="text" name="pnum1" id="pnum1" size="3" value="<% if(proname1!=null&&!"Not Exist!".equals(proname1)) %><%=()%>" onblur="checkform2()" />
</label></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><% if(proname1!=null&&!"Not Exist!".equals(proname1)){ p_num1=(pnum1);
%><%= p_num1*price1+"元" %><% } %></div></td>
</tr>
<% if(proname1!=null&&!"Not Exist!".equals(proname1)){ %>
<tr>
<td bgcolor="#FFFFFF"><form id="form3" name="form3" method="post" action="">
<div align="center">
<input name="pronum2" type="text" id="pronum2" size="5" value="<%if(pronum2!=null){%><%=pronum2 %><%}%>" onBlur="();" />
<a href="
<label>
<input type="image" name="imageField5" src="image/" />
</label>
</a></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(pronum2!=null)%><%= proname2 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname2!=null&&!"Not Exist!".equals(proname2))%><%= unit2 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname2!=null&&!"Not Exist!".equals(proname2))%><%= price2 +"元"%></div></td>
<td bgcolor="#FFFFFF">
<form id="form4" name="form4" method="post" action="">
<div align="center"><label>
<input type="text" name="pnum2" id="pnum2" size="3" value="<%if(proname2!=null&&!"Not Exist!".equals(proname2))%><%=()%>" onblur="();" />
</label></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname2!=null&&!"Not Exist!".equals(proname2)){ p_num2=(pnum2);
%><%= p_num2*price2+"元" %><% } %></div></td>
</tr>
<% } %>
<% if(proname2!=null&&!"Not Exist!".equals(proname2)){ %>
<tr>
<td bgcolor="#FFFFFF"><form id="form5" name="form5" method="post" action="">
<div align="center">
<input name="pronum3" type="text" id="pronum3" size="5" value="<%if(pronum3!=null){%><%=pronum3 %><%}%>" onBlur="();" />
<a href="
<label>
<input type="image" name="imageField6" src="image/" />
</label>
</a></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(pronum3!=null)%><%= proname3 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname3!=null&&!"Not Exist!".equals(proname3))%><%= unit3 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname3!=null&&!"Not Exist!".equals(proname3))%><%= price3 +"元"%></div></td>
<td bgcolor="#FFFFFF">
<form id="form6" name="form6" method="post" action="">
<div align="center"><label>
<input type="text" name="pnum3" id="pnum3" size="3" value="<%if(proname3!=null&&!"Not Exist!".equals(proname3))%><%=pnum3%>" onblur="();" />
</label></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname3!=null&&!"Not Exist!".equals(proname3)){ p_num3=(pnum3);
%><%= p_num3*price3+"元" %><% } %></div></td>
</tr>
<% } %>
<% if(proname3!=null&&!"Not Exist!".equals(proname3)){ %>
<tr>
<td bgcolor="#FFFFFF"><form id="form7" name="form7" method="post" action="">
<div align="center">
<input name="pronum4" type="text" id="pronum4" size="5" value="<%if(pronum4!=null){%><%=pronum4 %><%}%>" onBlur="();" />
<a href="
<label>
<input type="image" name="imageField7" src="image/" />
</label>
</a></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(pronum4!=null)%><%= proname4 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname4!=null&&!"Not Exist!".equals(proname4))%><%= unit4 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname4!=null&&!"Not Exist!".equals(proname4))%><%= price4 +"元"%></div></td>
<td bgcolor="#FFFFFF">
<form id="form8" name="form8" method="post" action="">
<div align="center"><label>
<input type="text" name="pnum4" id="pnum4" size="3" value="<%if(proname4!=null&&!"Not Exist!".equals(proname4))%><%=pnum4%>" onblur="();" />
</label></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname4!=null&&!"Not Exist!".equals(proname4)){ p_num4=(pnum4);
%><%= p_num4*price4+"元" %><% } %></div></td>
</tr>
<% } %>
<% if(proname4!=null&&!"Not Exist!".equals(proname4)){ %>
<tr>
<td bgcolor="#FFFFFF"><form id="form9" name="form9" method="post" action="">
<div align="center">
<input name="pronum5" type="text" id="pronum5" size="5" value="<%if(pronum5!=null){%><%=pronum5 %><%}%>" onBlur="();" />
<a href="
<label>
<input type="image" name="imageField8" src="image/" />
</label>
</a></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(pronum5!=null)%><%= proname5 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname5!=null&&!"Not Exist!".equals(proname5))%><%= unit5 %></div></td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname5!=null&&!"Not Exist!".equals(proname4))%><%= price5 +"元"%></div></td>
<td bgcolor="#FFFFFF">
<form id="form10" name="form10" method="post" action="">
<div align="center"><label>
<input type="text" name="pnum5" id="pnum5" size="3" value="<%if(proname5!=null&&!"Not Exist!".equals(proname5))%><%=pnum5%>" onblur="();" />
</label></div>
<input name="supnum" type="hidden" value="<%=supnum%>" />
<% if(pronum1!=null){ %> <input name="pronum1" type="hidden" value="<%=pronum1%>" /><% } %>
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<% if(pronum2!=null){ %><input name="pronum2" type="hidden" value="<%=pronum2%>" /><% } %>
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<% if(pronum3!=null){ %><input name="pronum3" type="hidden" value="<%=pronum3%>" /><% } %>
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<% if(pronum4!=null){ %><input name="pronum4" type="hidden" value="<%=pronum4%>" /><% } %>
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<% if(pronum5!=null){ %> <input name="pronum5" type="hidden" value="<%=pronum5%>" /><% } %>
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
</form> </td>
<td bgcolor="#FFFFFF"><div align="center"><%if(proname5!=null&&!"Not Exist!".equals(proname5)){ p_num5=(pnum5);
%><%= p_num5*price5+"元" %><% } %></div></td>
</tr>
<% } %>
</table>
<form id="form11" name="form11" method="post" action="">
<div align="center">
经手人:<%=trueName %> 提货日期:<script language="javascript" type="text/javascript" src="" ></script>
总应付金额:<%= p_num1*price1+p_num2*price2 +p_num3*price3+p_num4*price4+p_num5*price5+" 元" %>
</div>
<br>
<input name="worker" type="hidden" value="<%=trueName%>" />
<input name="supnum" type="hidden" value="<%=supnum%>" />
<input name="pronum1" type="hidden" value="<%=pronum1%>" />
<input name="pnum1" type="hidden" value="<%=pnum1%>" />
<input name="pronum2" type="hidden" value="<%=pronum2%>" />
<input name="pnum2" type="hidden" value="<%=pnum2%>" />
<input name="pronum3" type="hidden" value="<%=pronum3%>" />
<input name="pnum3" type="hidden" value="<%=pnum3%>" />
<input name="pronum4" type="hidden" value="<%=pronum4%>" />
<input name="pnum4" type="hidden" value="<%=pnum4%>" />
<input name="pronum5" type="hidden" value="<%=pronum5%>" />
<input name="pnum5" type="hidden" value="<%=pnum5%>" />
<input name="tino" type="hidden" value="<%="KH"+year+month+day+"_"+zi+(NO+1)%>" />
<div align="center">
<input type="submit" name="Submit" value="提交" />
<input type="button" name="button" value="取消" onclick="JavaScript:='';;" />
</div>
</form>
<p> </p> </tr>
采购单查询
<p align="center" class="STYLE1 STYLE2">采购单查询
<hr></p>
<form name="form" method="post" action="" onsubmit="return check();">
<table width="58%" border="0" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="18%" height="42"> </td>
<td width="26%"><select name="select1">
<% ResultSet rs1=("select name from syscolumns where id=(select max(id) from sysobjects where name='ti_table')");
while(()) { %>
<option value="<%=("name")%> "><%=("name")%> </option>
<% }%>
</select> </td>
<td width="28%"><input name="text1" type="text" id="text1" size="15" value="<%if(text1!=null)%><%=text1%>"/></td>
<td width="16%"><input type="checkbox" name="checkbox1" value="a" />
模糊</td>
<td width="12%" rowspan="3"><input type="submit" name="Submit" value="查找" /></td>
</tr>
<tr>
<td height="30"><select name="select">
<option value="and" selected="selected">并且</option>
<option value="or" >或者</option>
<option value="and not">不包含</option>
</select> </td>
<td><select name="select2">
<% ResultSet rs2=("select name from syscolumns where id=(select max(id) from sysobjects where name='ti_table')");
while(()) { %>
<option value="<%=("name")%> "><%=("name")%> </option>
<% }%>
</select></td>
<td><input name="text2" type="text" id="text2" size="15" value="<%if(text2!=null)%><%=text2%>"/></td>
<td><input type="checkbox" name="checkbox2" value="b" />
模糊</td>
</tr>
<tr>
<td height="37"><select name="select4">
<option value="and" >并且</option>
<option value="or" selected="selected">或者</option>
<option value="and not">不包含</option>
</select></td>
<td><select name="select3">
<% ResultSet rs3=("select name from syscolumns where id=(select max(id) from sysobjects where name='ti_table')");
while(()) { %>
<option value="<%=("name")%> "><%=("name")%> </option>
<% } %>
</select></td>
<td><input name="text3" type="text" id="text3" size="15" value="<%if(text3!=null)%><%=text3%>"/></td>
<td><input type="checkbox" name="checkbox3" value="c" />
模糊</td>
</tr>
</table>
</form>
<div align="center"><strong>查找结果</strong></div>
<hr>
<table width="100%" border="0" align="center" cellpadding="1" cellspacing="1" >
<tr>
<td bgcolor="#99CCff"><div align="center">采购号</div></td>
<td bgcolor="#99CCff"><div align="center">供应商号</div></td>
<td bgcolor="#99CCff"><div align="center">供应商名</div></td>
<td bgcolor="#99CCff"><div align="center">产品号</div></td>
<td bgcolor="#99CCFF"><div align="center">产品名称</div></td>
<td bgcolor="#99CCFF"><div align="center">采购数量</div></td>
<td bgcolor="#99CCFF"><div align="center">计量单位</div></td>
<td bgcolor="#99CCFF"><div align="center">销售单价</div></td>
<td bgcolor="#99CCFF"><div align="center">应付金额</div></td>
<td bgcolor="#99CCff"><div align="center">提货日期</div></td>
<td bgcolor="#99CCFF"><div align="center">经手人</div></td>
</tr>
<%
if(!"".equals(text1)){
while(()){
%>
<tr>
<td bgcolor="#CCCCCC"><div align="center"><%=("采购号")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("供应商号")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("供应商名")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("产品号")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("产品名")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("采购数量")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("计量单位")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("销售单价")%>元</div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("应付金额")%>元</div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("提货日期")%></div></td>
<td bgcolor="#CCCCCC"><div align="center"><%=("经手人")%></div></td>
</tr>
<%}%>
<% ();
int RecordCount=();%>
<div align="center">共有<font color="red"><%=RecordCount %></font>条记录</div>
<%}%>
</table>
采购单报表
<%
String adminName=(String)("username");
String radio = ("radiobutton");
if(radio==null)radio="a1";
String sql =null;
if("a1".equals(radio)){
sql="select * from ti_table order by 采购号 asc";
}else if("a2".equals(radio)){
sql="select * from ti_table order by 采购号 desc";
}else if("a3".equals(radio)){
sql="select * from ti_table order by 应付金额 asc";
}else if("a4".equals(radio)){
sql="select * from ti_table order by 应付金额 desc";
}else if("a5".equals(radio)){
sql="select * from ti_table order by 采购数量 asc";
}else if("a6".equals(radio)){
sql="select * from ti_table order by 采购数量 desc";
}else if("a7".equals(radio)){
sql="select * from ti_table order by 提货日期 asc";
}else if("a8".equals(radio)){
sql="select * from ti_table order by 提货日期 desc";
}
ResultSet rs = (sql);
String sq = "select sum(应付金额) as zong from ti_table";
ResultSet rs2 = (sq);
String str=("Page");
if(str==null){str="0";}
int pagesize=4;
();
int RecordCount=();
int maxPage=0;
maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1);
int Page=(str);
if(Page<1){
Page=1;
}else{
if(Page>maxPage){Page=maxPage;}
}
((Page-1)*pagesize+1);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Transitional//EN" "
<html xmlns="
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>采购单报表</title>
<link href="" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.STYLE1 {
color: #FF0000;
font-weight: bold;
}
.STYLE2 {font-size: larger}
-->
</style>
</head>
打印采购单
<a HREF="#" onClick="javascript:()">打印报表</a>
导入数据库
1.打开企业管理器,选择附加数据库
2.路径为提交文件的App_Data文件夹里的数据库文件
3.附加成功后的表如图
四、采购系统的系统运行
4.1 系统运行说明书
打开网页后,输入密码登录,在菜单关系管理里,可打开产品,供应商,订单、采购单的页面,在各自的页面里可以对该类的资料进行增删改查,在采购管理里可以添加采购单,和对产品、供应商进行有限制的增删改查,在添加采购单的页面可以选择和输入相应的资料,在审核后,打印采购单,同时显示出确认成交按钮,成交后填写采购单资料,确认数据后,可打印采购单。
4.2 系统运行示例
登录系统
<%@page contentType="text/html; charset=gb2312" language="java" import=".*" errorPage=""%>
<%int count=1;int c=3;
if((("count"))!=null){
count=(("count").toString());
}
if(count>=3)
{ %>
<script language="javascript">
alert("你三次输入密码错误,强制关闭~!!!")
=null;
();
</script>
<% }
String susername=("name");
if(susername==null)
susername="";
String spassword=("password");
if(spassword==null)
spassword="";
if(susername=="")
{("<script>alert('请输入用户名!');=''</script>");}
if(spassword=="")
{("<script>alert('请输入密码!');=''</script>");}
("").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=caigou";
String user="sa";
String password="";
Connection con=(url,user,password);
//("");
//Connection con=("jdbc:odbc:booksystem","sa","");
Statement stmt=(_SCROLL_SENSITIVE,
_UPDATABLE);
ResultSet rs;
rs=("select * from staff where snum='"+susername+"' and password='"+spassword+"'" );
if(())
//if((("password"))){
// rss=("select * from tt where username='"+susername+"' and password='"+spassword+"'");
// if(()){
{
("count",1);
("username", susername);
("password", spassword);
("");}
else
{ %>
<script language="javascript">
var st=3-<%=count%>;
alert("用户名或密码错误!!你还有"+st+"次机会");
();
</script>
<%}
("count",count+1);
%>
<%
();
%>
其中一个模块的管理
v
添加单据
添加产品资料
<%@page contentType="text/html; charset=gb2312" language="java" import=".*" errorPage=""%>
<%@ page import=".*"%>
<jsp:useBean id="dbconn" scope="page" class=""/>
<jsp:useBean id="str" scope="page" class=""/>
<%@ include file="" %>
<%
String pronum = (("pronum"));
String sql="select * from production where pronum='"+pronum+"'";
ResultSet rs = (sql);
if(()){
("<script language='JavaScript' type='text/javascript'>alert('该产品已经存在,请重新输入!');javascript:(-1);</script>");
}else {
String proname = (("proname"));
String unit = (("unit"));
String price = (("price"));
String standard = (("standard"));
String colour = (("colour"));
String supnum = (("supnum"));
int ret=0;
String sq="Insert into production(pronum,proname,unit,price,standard,colour,supnum)values('"+pronum+"','"+proname+"','"+unit+"','"+price+"','"+standard+"','"+colour+"','"+supnum+"')";
ret=(sq);
if(ret!=0){
("<script language='JavaScript' type='text/javascript'>alert('产品添加成功!');='';</script>");
}else{
("<script language='JavaScript' type='text/javascript'>alert('产品添加失败!');='';</script>");
}
}
();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Transitional//EN""
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用JDBC直接连接SQL Server</title>
</head>
<body>
</body>
</html>
打印进货单
<p align="center" class="STYLE1 STYLE2">采购报表
<hr>
<form id="form1" name="form1" method="post" action="">
<table width="77%" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#66CCFF">
<tr>
<td colspan="2" bgcolor="#FFFFFF"><div align="center">按采购号</div></td>
<td colspan="2" bgcolor="#FFFFFF"><div align="center">按采购金额大小</div></td>
<td colspan="2" bgcolor="#FFFFFF"><div align="center">按提货数量大小</div></td>
<td colspan="2" bgcolor="#FFFFFF"><div align="center">按提货日期</div></td>
</tr>
<tr>
<td width="12%" bgcolor="#FFFFFF"><div align="center">
<input name="radiobutton" type="radio" onclick="();" value="a1" <%="a1".equals(radio)?"CHECKED":""%> />
升序</div></td>
<td width="13%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a2" onclick="();" <%="a2".equals(radio)?"CHECKED":""%> />
降序</div></td>
<td width="13%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a3" onclick="();" <%="a3".equals(radio)?"CHECKED":""%>/>
升序</div></td>
<td width="14%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a4" onclick="();" <%="a4".equals(radio)?"CHECKED":""%>/>
降序</div></td>
<td width="12%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a5" onclick="();" <%="a5".equals(radio)?"CHECKED":""%>/>
升序</div></td>
<td width="13%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a6"onclick="();" <%="a6".equals(radio)?"CHECKED":""%>/>
降序</div></td>
<td width="11%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a7" onclick="();" <%="a7".equals(radio)?"CHECKED":""%>/>
升序</div></td>
<td width="12%" bgcolor="#FFFFFF"><div align="center">
<input type="radio" name="radiobutton" value="a8" onclick="();" <%="a8".equals(radio)?"CHECKED":""%>/>
降序</div></td>
</tr>
</table>
</form>
<div align="center"> 总共有<font color="red"><%=RecordCount%></font>条记录 总销售额:<%if(())%><font color="red"><%=("zong")%></font>元
<a HREF="#" onClick="javascript:()">打印报表</a>
4.3 系统评价与收获体会
在这次的学生包车系统中,主要采用了JAVA技术中的JSP和SERVLET,JDBC连接数据库SQL server2000,而服务器选择了Tomcat,操作系统选择WINDOWS XP。而在页面设计中,充分运用了CSS和JAVASCRIPT处理页面字体和规范,在数据验证方面,主要运用了JAVASCRIPT来处理,尤其是运用了JAVASCRIPT中的DOM解析。用CSS+JAVASCRIPT制作了弹簧树型导航条。运用JAVASCRIPT制作了客户端的时间和日期显示。而在表单显示上,主要封装了一个类包(基类),用来处理表格的显示和数据库的连接。
在完成系统的过程中,总是会遇到很多代码上的错误和逻辑上的错误,有部分是因为在写代码上粗心,而另外一个部分,就是对技术的不熟练。在设计的理念上,由于MIS是面向对象的,开发的时候更多的要考虑使用者。老师经常教导我们说:设计的时候要站在使用者的角度。可是经常做出来的模块都是笑话百出的。
现在,终于把系统的雏形做了出来,由于平时甚少接触业务,所以做出来的系统依然存在很多漏洞,希望能在以后的学习中更多的吸取经验,做出更好的系统。在接下来的工作中将进一步完备以上的不足之处,另外还将对系统功能进一步完善,使其真正成为一个应用良好的商业系统,特别是对系统数据的完整性控制,对有错数据的排错操作等,进一步把系统设计成一个操作方便的系统。
参考文献:
[1] 张立厚等编著,管理信息系统开发与管理,清华大学出版社,2008.
[2] 张立厚 张应利 高京广 陈鸣中 管理信息系统 清华大学出版社2007年7月8日
[3] 王晟 万科 Dephli数据库开发经典案例解析 清华大学出版社 2006年6月
采购部
计算机1
计算机
2
主机服务器
数据库
防火
墙法火墙
数据服务器
交换机
其他
交换机
交换机
工作站
文件服务器
采购部
中心
机房
交换机
其他
欢迎使用华润万家采购系统
用户名:
密 码:
登录 重置
PAGE
0
�
�
�
供应商
供应商号
供应商名
供应商地址
供应商联系人
供应商邮编
供应商电话
�
�
�
�
�
�
�
�
�
�
采购,报价联系体
供应商
供应
1
M
产品
所购
K
L
单价
数量
�
�
采购员
负责
1
L
�
�
S0-1招聘信息临时文件
1
供应商管理
FT-1
ST-11
S0-1完善进单记录
2
货物管理
ST-2
ST-12
S0-2进货单报表
4
造价单管理
ST-13
ST-13
S0-4正确造价单记录
5
货到管理
FT-13
FT-12
ST-15
�
�
�
�
�
采购管理系统�
供应商管理�
货物管理
造价单管理
货到管理
进货单审核�
货单输入�
查供应商�
填入供应商信息�
查货物�
修改补充完善�
填入货物信息�
修改补充完善�
货物修改或插入�
生成未完成进单报表�
供应商修改或插入�
货物信息获取�
造价单报表�
与供应商商讨�
登记实到货量�
确定关系�
检查是否单货相符�
打印进货单�
生成单货不符进货明细报表�
打印单货不符进货明细表�
输入实到货量�
登记�
1�
2�
3�
4�
5
6
7
8
9
10
11
12
13
14
16
17
18
19
20
21
22
23
24�
25
26�
27
28
供应商信息获取�
�
�
�
�
�
采购管理系统�
供应商管理�
货物管理
造价单管理
货到管理
进货单审核�
货单输入�
查供应商�
填入供应商信息�
查货物�
修改补充完善�
填入货物信息�
修改补充完善�
货物修改或插入�
生成未完成进单报表�
供应商修改或插入�
货物信息获取�
造价单报表�
与供应商商讨�
登记实到货量�
确定关系�
检查是否单货相符�
打印进货单�
生成单货不符进货明细报表�
打印单货不符进货明细表�
输入实到货量�
登记�
1�
2�
3�
4�
5
6
7
8
9
10
11
12
13
14
16
17
18
19
20
21
22
23
24�
25
26�
27
28
供应商信息获取�
系统维护
系统管理员管理
30
�
�
部门�
员工�
主管
所属
采购,造价表�
供应商
采购明细表�
产品
�
采购管理系统�
供应商管理�
货物管理
造价单管理
货到管理
�
�
�
�
�
�
调整框的宽度可更改段落宽度。框的高度根据文本自动调整。�
补货单
仓管部
进货单
采购部
审核
有误货单�
无误货单�
供应商
货单输入�
货单输入FORM�
进货临时文件
�
校验
错误货单记录�
修改�
正确货单记录�
查供应商�
新供应商记录�
老供应商记录
供应商关系�
填入供应商信息�
修改补充完善�
供应商修改或插入�
完善进单记录�
供应商关系�
查货物�
货物关系�
老货进单记录�
新货进单记录�
填入货物信息�
修改补充完善�
完善货物信息的进单记录�
货物修改或插入�
货物关系�
打印进货单
进货单
所进货�
登记实到货量�
单货相符�
不符进货单表
生成单货不符进货明细报表�
单货不符进货明细报表�
打印单货不符进货明细表�
单货不符进货明细表�
相符进货单表�
已进货FORM�
实到货量进货单
输入实到货量
仓管部
校验
错误进单记录
修改�
正确进单记录
登记�
造价单FORM�
输入价单
校验
正确造价单记录
错误造价单记录
进货单关系�
已进货单关系�
有实到货量进货临时文件�
�
确定关系
打印采购单
采购单
�
�
�
仓管部
0
企业采购处理
FT-1补货单
采购系统
ST-1供应商关系
ST-2货物关系
ST-3货运公司关系
ST-11供应商关系数据文件
ST-12货物关系数据文件
ST-13进货单关系
ST-14造价单关系
ST-15已进货单关系
FT-12单货不符进货明细表
FT-11进货单
采购系统
仓管部
供应商
供应商
FT-13采购单
�
�
�
�
部门
员工�
属于�
1�
M�
分店店长
分店值班经理
财务员
采购员
销售员
�
父子类
�
�
�
采购,报价联系体
供应商
供应
1
M
产品
所购
K
L
单价
数量
�
�
负责
1
L
仓管人员
�
�
�
�
�
产品
供应商
采购,报价
L�
N
日期
数量
单价
�
�
�
采购员
M�
�
�
�
�
部门
员工�
属于�
1�
M�
分店店长
分店值班经理
财务员
采购员
销售员
�
父子类
�
�
�
产品
供应商
采购,报价
L�
M�
N
日期
数量
单价
�
�
�
仓管人员
�
�
�
�
图示
重量
产品
产品号
产品名
规格
计量单位
�
�
�
�
颜色
�
�
�
�
�
员工�
分店值班经理
财务员
采购员
销售员
分店店长
父子类
�
�
�
�
仓管人员
�
�
�
�
部门
部门号
部门名
�
�
�
�
�
员工
员工号
姓名
性别
家庭住址
联系电话
所属部门号
�
�
�
�
�
�
�
�
�
产品
供应商
采购,报价
L�
N
采购员
M�
�
�
�
�
�
�
客户�
收银台
少于设定的库存量�
小票
入库�
盘价
进货单
价单不符
与供应商商讨�
价单符合
盘价单
已进货单�
审核
货单符合
货单不符
采购部
进货
仓管部
�
补货单
供应商
采购台帐�
登记
审核
有误货单�
无误货单�
有误货单�
无误货单�
�
�
�
部门
员工�
属于�
1�
M�
小组名称�
�
公司名称
�
�
�
公司名称
部门名称�
分店店长
分店值班经理
采购部
销售部
财务部
销售员
会计人员
跟单员
图 现状组织结构图
仓管部
仓管人员