?️?前言
传统的仓库管理,一般依赖于一个非自动化的、以纸张文件为基础的系统来记录、追踪进出的货物,完全由人工实施仓库内部的管理,因此仓库管理的效率极其低下,所能管理的仓库规模也很小。 随着计算机的应用普及,目前大多数企业的仓库管理数据资料已开始采用计算机数据系统管理,但数据还是采用先纸张记录、再手工输入计算机的方式进行采集和统计整理。这不仅造成大量的人力资源浪费,而且由于人为的因素,数据录入速度慢、准确率低。 随着企业规模的不断发展,仓库管理的物资种类机数量在不断增加、出入库频率剧增,仓库管理作业也已十分复杂和多样化,传统的人工仓库作业模式和数据采集方式已难以满足仓库管理的快速、准确要求,严重影响了企业的运行工作效率,成为制约企业发展的一大障碍。
随着我国改革开放步伐的不断深入,经济高速的发展,企业要想生存、发展,要想在激烈的市场竞争中处于不败之地,没有现代化的管理是万万不可的,仓库管理的整体自动化、信息化则是其中极其重要的组成部分。为了加快仓库管理自动化的步伐,,提高仓库的管理业务效率,建立仓库管理信息系统已变得十分重要。
?️?1、需求分析
?1.1.1、功能性需求分析
传统企业库存管理系统存在的问题:
库存管理是企业管理的重要组成部分。在企业生产经营活动中,库存管理既必须保证生产车间对原材料、零部件需求,又直接影响采购、销售部门的购、销活动。为盘活企业流动资金,加快资金周转,在保证供给的前提下,最大限度的降低压库资金,直接牵动着企业的经营效益。根据对我国众多制造业企业的库存管理情况所做的调查和参考有关资料,发现目前制造企业在库存管理方面普遍存在着如下问题:
不能及时获得库存信息。在企业运转过程中,有时必须获知各种零部件当前的库存量,但由于零部件种类多、数量大,需要进行仔细的核算,这不仅费时,而且易出错,从而影响企业快速有效的运转。
库存信息不够准确。仓库管理员根据各种送货单、退货单、收料单、发料单、领料单和退料单进行物料的入库、出库搬运后,要随时修改库存信息和借、欠料信息,以便反映库存状况。
工作中的主要问题是,由于零部件种类多、数量大,使得库存记录和实际库存时常不是严格一致的。因而需要通过盘点来纠正差错,这既耽误时间,工作量又打。
无法及时了解发料和生产用料情况。在工令单下达后,由于零部件与生产线的关系复杂,根据材料员的个人经验给各配料点送料时,常缺少发料、用料记录和相关信息,经常出现生产线缺料才知道需要送料的情况,导致生产和用料发生混乱,无法了解发料和生产用料的实际情况。
现代企业库存管理系统的特点
因为传统企业库存管理存在以上的问题难于适应现代库存管理要求,所以现代企业库存管理系统要具有以下的特点:
1、科学的库存管理流程
存货的种类不同,所涉及的业务环节及它们所组成的业务流程也各有差异。一般而言,存货业务包括到货处理、保管和发放三个主要部分。通畅的业务流程是保障高效库存管理的基础,应具备优化、无冗余、并行作业的基本属性。
2、科学的组织结构
科学的组织结构确保了业务流程的高效执行,明确了工厂、存储区域、仓库编码、仓库种类以及仓库箱之间的合理关系。
3、进行物料代码化管理
物料种类繁多,在库存管理过程中极易发生混乱的问题。IT技术与层次编码技术的结合为物料的高效管理提供了可能。这种编码技术将所有存货按照层次和类别进行编码的唯一形管理,编码的组成部分包括存货的型号、规格、尺寸等内容。它具有易读易记的特点,使得管理者只需知道货物的编码,就可以了解该物料的所有信息,以便在每日的繁杂管理中,保持规范、有序的状态。
?️?1.2、可行性分析
可行性分析的任务是在初步调查的基础上对开发项目进行分析,分析是否必要和可行。分析建立信息系统必要性时主要考虑用户提出的理由是否充分和合理,对用户意见进行筛选,以备使用;分析建立信息系统可行性主要包括经济可行性、技术可行性和营运可行性,本项目可行性分析如下:
1、经济可行性分析
经济上的可行性分析主要是对开发项目的成本与效益进行评估,就是评估使用开发的系统带来的经济效益是否超过开发和后续系统维护所需要的费用,判断一下这样的项目在经济上是否合算。由于该系统具有良好的实际用途,该系统交付使用后将会很大提高工作的效率,进而提升仓库管理水平,节省人力开支,减轻了仓库管理员的繁琐复杂的工作负担。因此,该系统的所带来的效益将远远大于其开发,维护,运行等一切成本,通过上述分析,该系统在经济上是可行的。
2、技术可行性分析
技术上的可行性分析是根据新系统目标衡量所需要的技术是否具备,如硬件、软件和其他应用技术以及从事这些工作的技术人员数量及水平等。
本系统开发所涉及的技术因素主要有:
(1)系统开发工具及技术:选用Microsoft SQL Server 作为后台数据库,以Microsoft Visual Studio 2015作为前端开发工具,具有很强的实用性,易于操作实施,数据处理方便、安全。
(2)从事工作的人员技术要求:本系统开发后易于操作,只要求有计算机基本操作能力的人员即可使用。
3、社会可行性分析
目前,原材料库存管理是建筑、装修公司提高自身管理效率的重要手段。加强库存管理,实现计算机化管理,不仅能使企业具有更高的市场竞争力,而且方便了仓库管理人员对货物订单、账目、库存等诸多信息进行实时管理和监督。在建筑原材料企业实现库存管理的计算机化,是去企业发展的一个重要的方面。本系统操作简便灵活,便于使用。因此,该系统具有可行性。因此,本系统在开发上是可行的。
?️?1.3、技术方案
?1.3.1、系统开发工具
1、本系统采用 Visual Studio作为前端开发工具,sql server作为后台数据库。
?1.3.2、Visual Studio2012 简介
Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C 、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
功能:
创建满足关键性要求的多层次的智能客户端、Web、移动或基于Microsoft Office的应用程序。使用Visual Studio 2005, 专业开发人员能够: 使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境 在统一的开发环境中,开发并调试多层次的服务器应用程序 使用集成的可视化数据库设计和报告工具,创建SQL Server 解决方案 使用Visual Studio SDK创建可以扩展Visual Studio IDE的工具 Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,Visual Studio 2015 Professional Edition和用于Microsoft Office系统的Visual Studio 2015工具。每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQL Server2012开发的工具,以及完整的、没有限制的开发环境。每种产品都可以单独购买或打包定购。 专业开发人员喜欢自由的使用.NET Framework 5.2,它是一种稳健的、功能齐备的开发环境,支持创建扩展Visual Studio集成开发环境的工具。
主要部分:
公共语言运行库:运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。统一编程类:该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集 (API)。目前,C 开发人员使用 Microsoft 基础类,而 Java 开发人员使用 Windows 基础类。该框架统一了这些完全不同的模型,还为 Visual Basic 和 JScript 程序员提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript 到 C 的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。
ASP.NET:ASP.NET 建立在 .NET Framework 的编程类的基础上,为 Web 应用程序模型提供了一组可简化 Web 应用程序生成的控件和基础结构。ASP.NET 包括可用于封装通用 HTML 用户界面元素(如文本框、按钮和列表框)的一组控件。但这些控件在 Web 服务器上运行,并以 HTML 的形式将其用户界面呈现在浏览器中。在服务器上,这些控件公布面向对象的编程模型,该模型为 Web 开发人员提供面向对象编程的丰富功能。ASP.NET 还提供基础结构服务,如状态管理和进程回收,从而可以进一步减少开发人员必须编写的代码数量,并提高应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用 XML Web Services 功,ASP.NET 开发人员可以编写他们的业务逻辑,并使用 ASP.NET 基础结构通过 SOAP 交付该服务。有关更多信息,请参见使用托管代码进行 XML Web services 编程简介。
?1.3.3、SQL Server 2012简介
1、企业级数据管理
在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全,有了SQL Server 2005,组织内的用户和IT专家将从减少应用程序宕机时间、提高可伸缩性及性能、更紧密的安全控制中获益。SQL Server 2005 也包括了很多新的和改进的功能来帮助企业的IT团队更有效率的工作。SQL Server 2005 包括了几个在企业级数据管理中关键的增强: 易管理 可用性 可伸缩性 安全性 2、开发者的能力
SQL Server 2012 包含了多个能显著提高开发者能力的新技术。从支持.NET Framework 到和Visual Studio的紧密集成,这些新特性使开发人员能够以更低的成本,更容易地创建安全、强大的数据库应用程序。SQL Server 2005 提供了一个端到端的数据库开发环境,使开发人员能够更有效的利用其已有的开发技能。本机XML功能也使开发人员能够创建运行在不同平台或设备上的新型应用程序。 开发人员能力的增强包括: 扩展的语言支持 改进的开发工具 可扩展能力 改进的数据访问 XML 和 Web services 应用程序Framework 3、查询通知
SQL Server 2012引入了对SQL Server 查询的通知支持。你可以使用这一功能来发送一个命令到SQL Server,并且要求当其后运行的同样命令产生不同的结果时,SQL Server生成一个通知。这一功能是通过从属对象检测到基础数据的改变来实现的。可用通过多种客户端API将命令发送到服务器,如:ADO.NET, OLE DB, Open Database Connectivity (ODBC), Microsoft ActiveX Data Objects (ADO), 或 SOAP等,这些命令可能包含一个通知请求的tag。对于被作为请求一部分的被执行的每一条语句,服务器都会为请求中的每一条语句创建一个“通知订阅”。通知通过一个SQL Service Broker 队列传递,应用程序可以轮询,并且无论通知是否可用,都可以使用活动服务,或者阻碍语句的返回。 查询通知对于在那些数据库驱动Web 站点应用程序中启用结果缓存非常有用。 4、MARS
多活动结果集 (MARS)允许每个连接有超过1个的挂起请求,特别是允许每个连接有超过1个的打开的默认结果集。默认结果集是一种前向的、只读的结果集,采用默认结果集,客户端驱动可以透明的接受数据块(表格数据流buffer大小的数据块)以满足应用程序的要求,而无需在服务器往返(就像使用服务器游标)。 应用程序可用使用一种简单的一次一行的编程方法而不会有性能上的损失。多活动结果集消除了这一当前的限制:一个打开的默认结果集将阻止发送新的请求给服务器,直到整个结果集关闭为止。
?️?1.4、实施步骤
系统的实施遵循软件工程的方法,通常一个管理信息系统的发布需要经过系统分析、系统设计、系统实施三个阶段。
1、系统规划阶段
信息系统规划的主要任务和内容包括三个主要的方面:目标设定、环境分析(技术环境、管理环境、社会环境)、战略选择。
2、系统分析阶段
主要包括组织结构分析、业务流程分析、数据流程分析等。
3、系统设计阶段
主要包括总体结构设计(划分子系统、功能结构图设计、处理流程设计、代码详细设计、物理系统配置方案设计、数据文件和数据库设计)和具体物理模型的设计(数据库存设计、输入输出设计、编写程序模块说明书)
4、系统实施阶段
系统实施是继系统规划、系统分析、系统设计之后的又一个重要阶段。它将在系统设计的基础上,将系统审计方案的结果具体的在计算机系统上进行实现。主要任务可以概括为:系统环境的建立、程序设计、数据的录入、系统人员的培训、系统调试与转换、文档的建立与完善等。
5、系统运行维护阶段
主要是程序的维护、数据文件的维护、代码的维护、机器设备的维护、机器和人员的变动等。
?️?2、系统需求分析
?2.1、系统的需求分析调查
在信息技术高速发展的今天,任何企业都离不开信息化建设,信息化水平已经成为一个评价一个企业综合实力的一项重要指标。由于企业管理已经向现代化管理转变,本系统对建筑公司加强原材料的库存管理有着极其重要的作用。随着建筑市场的不断扩大,建筑装修公司也随着发展的浪潮不断扩大规模,随之,订单成倍增加,各项业务更加细化,各部门工作量增加,以往的人工处理方式就显得力不从心,劳动强度大而且容易出错。为使建业库存管理更加简洁、系统、科学和高效,减少工作人员的工作量,建立一个以数据库为基础的管理信息系统就尤为重要了,渔阳建业管理信息系统利用现代计算机和数据库开发技术来代替人工处理,从而减轻企业各部门工作人员的劳动强度,提高工作质量和效率,提高信息资源的利用率和企业管理水平。
目前,这类相关的信息管理系统已经广泛的应用于社会的各行各业,成为各行业提高自身管理效率的重要手段,也是现代企业管理的发展方向。因此,这样的一套管理软件是非常有实用价值的。
?2.2、经需求分析后的系统开发目标
为了提高某某有限公司仓库工作效率我们针对原材料库存管理的实际工作,经过了反复地论证,最终确定了某某有限公司仓库管理信息系统的设计方案。
1、功能需求
系统功能包括:
- 产品入出库登记
- 确认入出库信息
- 删除库内信息
- 借出信息登记
- 产品分类管理
- 报表生成
- 事件记录
- 数据检测
- 数据警告
系统管理员功能:
- 添加人员
- 删除人员
- 查询库内信息
- 用户管理
- 人员权限区分
用户功能包括:
- 查询库内信息
- 查询出库信息
- 查询入库信息
- 修改本用户密码
2、用户需求
根据用户需求,该系统应该实现以下功能:
1、进、出库管理。对进、出库信息进行记录。
2、查询功能。仓库管理对查询要求高,通过主菜单记录当前操作用户的用户编号,保证了对进、出库信息录入负责人的确认。
3、部门资料管理与库存报表生成。资料管理包括了人员信息管理,以及各项业务单据的资料管理。报表主要分类为:日报表,月报表,销售报表,入库报表等等。
4、应用计算机管理后,由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确。
5、应用计算机管理后,许多重复性的工作,都可由计算机去执行,从而使管理人员从事务性工作解脱出来,真正变为从事一些信息的分析,判断,决策等创造性的工作。
?️?3、业务流程分析
代码语言:javascript复制业务流程分析,可以用管理业务流程图来完成。这是一种表明系统内各单位、人员之间业务关系、作业顺序和管理信息流动的流程图,它可以帮助分析人员找出业务流程中的不合理迂回等。
业务流程分析是在功能分析的基础上利用系统调查的资料将业务处理过程中的每一具体步骤用一个完整的图形将其联系起来。在这个过程中若发现问题,可以分析其中的不足,优化业务处理的过程。因此构建业务流程图是业务流程分析的重要步骤。
?3.1、业务流程图
业务流程图表明系统内各单位、人员之间业务关系、作业顺序和管理信息流动的流程图,它可以帮助分析人员找出业务流程中的不合理迂回等。 业务流程图符号如上方图所示。
某某有限公司库存管理业务流程图如下方图所示:
?️?4、数据流程分析
数据流程图是用来描述系统逻辑模型的,它可以用少数几种图形符号综合地反映出数据信息在系统中的流动、传递、存储和处理的情况。每一个图形符号表示不同的含义,数据流程图具有抽象性和综合性两个特点,其抽象性表现在用图形符号表示具体的物质,如企业部门、人事单位、信息流、货币流等,数据流程图展现的是数据的流动、存储、使用及加工的过程。它可以把系统中的各种业务处理过程联系起来,形成一个完整统一体。
?4.1、外部实体
外部实体指系统以外的人或事物。它表达该系统数据的外部来源和去处,例如供应商、销售员、车间等实体。其实外部实体也可以是另外一个信息系统,在本系统中不涉及到其他信息系统。
外部实体用一个矩形表示,并在其左上角外边另加一个直角来表示外部实体,外部实体的名称写在矩形框内。
?4.2、数据处理
数据处理指对数据的逻辑处理。它可以是人工处理,也可以是计算机处理。在数据流程图中,用长方形表示处理。其中功能描述部分是要必须标注的,他是表示这个处理的逻辑功能,一般用动宾结构来表示。功能执行部分表示这个功能有谁来完成,可以是一个人,也可以是一个部门,也可是一个计算机程序。
?4.3、数据流
数据流表示是指处理功能的输入或输出的,用一条带箭头的直线表示。箭头指所表示的是数据流动的方向。数据流可以是信件、票据、订单,也可以是电话等。 一般来说,对每个数据流要加以简单的描述,使用户和系统设计员用够理解一个数据流的具体的含义。
?4.4、数据存储
数据存储顾名思义就是数据保存的地方。这里“地方”并不是指保存数据的物理地点或物理介质,而是指数据存储的逻辑描述,它可以是一个实际的订单、文件夹、登记表等手工文件,也可以是存储在计算机中的某个文件或数据库等。
数据流程图的符号如下方图所示:
?️?5、系统数据流程图
数据流程图是描述系统逻辑模型的主要工具,它可以用少数几种符号综合的反映出信息在系统中的流动、传递、存储和处理的总情况。数据流程图具有抽象性和综合性两个特点,抽象性表现在已经完全舍弃了具体的物质,综合性表现在它可以把系统中的各种业务处理过程联系起来,形成一个整体。
?5.1、本系统顶层数据流程图
本系统顶层数据流程图见下方所示:
?5.2、本系统第一层数据流程图
本系统第一层数据流程图见下方所示:
?5.3、仓库管理信息系统数据流程图分解
接下来,再把顶层数据流程图的总共能模块进行详细的分解,绘制了基本资料管理数据流程图,材料入库处理数据流程图,材料库存盘点数据流程图,材料出库处理数据流程图。
1、基本资料管理数据流程图
采购部数据流程图:
仓库信息数据流程图:
规则信息数据流程图:
材料信息数据流程图:
2、材料入库处理数据流程图
3、库存盘点数据流程图
4、材料出库处理数据流程图
?️?6、某某有限公司库存管理信息系统数据字典
数据字典是对数据流程图中包含的所有元素的定义的集合。它对数据流程图上每一个成分:数据项、数据流、数据结构、数据存储、处理过程和外部实体等给以定义和说明。字典最重要的用途能使查阅者了解每一条数据项目,数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。两者缺一不可,相辅相成的关系。只有这样才能共同构成系统的规格说明。
进行详细的数据收集和数据分析所获得的主要结果就是数据字典。它一般由五部分组成:数据项、数据结构、数据流、处理过程、数据存储。数据字典是对数据库中的数据进行描述,而不是数据本身。数据本身是存放在数据库中,由数据库系统管理。数据字典有助于这些数据的进一步管理和控制,是设计人员和数据库管理人员进行管理等工作时提供依据,并在出现问题时方便查找错误。
其作用有以下几点:
1、他是数据库开发的首要步骤,也是整个系统开发必不可少的一个环节。
2、它起到一个参照系的作用,能够使编辑人员的工作更加方便,主要表现在:帮助本系统编辑人员了解数据库和系统内部的运行机理。
3、他是系统生命周期后继时期交流的基本工具,特别是在系统评价和系统维护起到非常重要的作用。
大家们看了那么久文章,你们可以点个收藏。休息会!!!然后再看。不要忘记哦!学习要持之以恒你才有进步。加油加油!!!
?️?7、系统设计
系统设计是管理信息系统开发过程的第二个阶段。在这一阶段中我们将根据系统调查与分析阶段的结果,进行新系统的设计。系统设计包括两个方面的工作:首先是系统总体结构的设计,即把系统的功能分解成许多基本的功能模块,确定它们之间的联系,规定它们的功能和处理流程;其次是具体的物理设计,即对实现系统的各项功能,选择具体的技术手段和处理方式。因此,如果说系统研制人员在系统调查与分析阶段的任务是在逻辑上弄清楚系统“做什么”的话,在系统设计阶段的任务则是在物理上确定系统“如何去做”。
系统设计包括如下工作内容:
1、系统的总体设计描述
2、系统开发环境
3、数据库设计
4、代码设计
5、输出设计
6、输入设计
7、数据存储设计
系统设计的目标包括:
1、系统的可靠性,即系统在存在外界干扰或大访问量时是否能正常运行。
2、系统的效率,即系统处理业务的速度,单位时间内处理的业务量。
3、系统的工作质量,即系统提供数据量的准确性,系统操作的简易型。
4、系统的扩展性,即系统的可维护性或可修改性。
系统设计遵循的原则:
1、系统性,在系统设计中,要从整个系统的角度进行考虑。
2、灵活性,系统应具有较好的开放性和结构的可变性,尽可能减少模块间数据偶合,使各个系统间的数据依赖程度减至最低限度。
3、可靠性,是系统地与外界干扰的能力及受到外界干扰时的恢复能力。
4、经济性,在满足系统的需求的前提下,尽可能减少系统机构。
?️?8、系统总体设计描述
系统设计是信息系统开发过程中的另一个重要的阶段。这一阶段中我们将要根据前一阶段系统分析的结果,在已经获得的批准的系统分析报告的基础上,进行新系统设计。它将系统分析阶段建立的新系统逻辑模型转化为系统的结构模型。
系统设计阶段的主要目的是将系统分析阶段提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案。而系统的总体结构设计是系统设计阶段的主要活动之一,是为了实现系统总体功能,提高系统的各项指标。这一阶段的主要任务就是将整个系统合理的划分为各个功能模块,正确处理模块之间与模块内部的联系以及他们之间的调用关系和数据联系,定义各模块的内部结构等等。
?8.1、系统总体功能模块图
系统总体功能模块图,如下方图所示:
?8.2、开发环境
软件环境:
1、开发工具:Microsoft Visual Studio 20105
2、数据库:Microsoft SQL Server 2012
硬件环境
系统配置:
处理器(CPU):英特尔 酷睿 i5-10400
内 存:16G
硬 盘:1T机械硬盘 256G固态
显 卡:核芯显卡
?️?9、数据库设计
?9.1、数据库设计概述
信息系统的基础和核心就是数据库,它在系统中占得地位可想而知,数据库设计的好坏直接关系到信息系统开发的成败与失败。在信息系统设计中,数据库设计是指根据业务需求、信息需求和处理需求,对信息系统中的数据库结构、数据操作和数据一致性进行约束过程。
数据库设计一般包括需求分析、数据分析、概念设计、逻辑设计和物理设计等步骤。
数据库设计一般分为两种方法:自顶向下与自底向上,但通常是把两种方法综合起来使用。数据库它既包含了数据内容本身,又能反映出数据之间的联系。在数据库中,是用数据模型来抽象表示处理实现世界中的数据和信息的。根据模型应用的不同情况,可以将数据模型分成两个层次:概念模型和具体数据模型。用户和数据库设计人员之间运用概念模型进行交流。
数据模型是由概念模型转化而来的,是根据计算机系统的观点来对数据进行建模的。
数据库设计的六个阶段:
用户需求分析阶段
概念结构设计阶段
逻辑结构设计阶段
数据库物理结构设计阶段
数据库实施阶段
数据库运行和维护阶段
数据库设计是在选定的数据库管理系统基础上建立数据库的过程。使用原型法开发系统,该过程主要包括:概念结构设计、逻辑结构设计和物理结构设计,与上面进行的系统分析和设计的阶段相对应。
?9.2、数据库概念结构设计
数据库结构的设计包括逻辑设计、物理设计,其中逻辑设计是把概念模式转化为与选用的具体机器上DBMS所支持的数据模型相符合的逻辑结构,而物理设计主要是设计DB在物理设备上的存储结构与存取方法等,数据库结构的设计在生存期中的地位很重要。
概念设计是建立在数据分析的基础之上,自底向上的建立整个系统的数据库概念结构,即首先从用户的角度进行设计,然后将所得的视图集成,最后对集成后的结构分析优化得到最终的结果。根据用户需求来设计数据库的概念模型。我们所建立概念模型其实是从用户角度看到的数据库,因为我们是从用户的角度进行设计的。它可以用E-R模型来表示也可以用3NF关系群来表示。
概念设计的主要步骤为:
(1)对数据进行抽象化并设计局部概念模式
(2)将所有局部概念模式联系起来构成全局概念模式
(3)核对并优化
E-R图是用来表示数据库概念设计E-R模型的工具,它使用图形来表示实体、属性和联系之间的关系。构成E-R图的基本要素是实体、属性和联系。
利用E-R方法进行数据库的概念设计,可以分成三步进行:
首先要设计局部E-R模式,然后把各部E-R模式结合成一个全局的E-R模式,最后对全局E-R进行优化,得到最终的E-R模式,即概念模式。
通过对某某有限公司库存管理系统的了解,现使用E-R图将系统设计所涵盖的实体以及各个实体之间的关系表现出来。
实体,用方块表示,方块内为实体的名称。
实体的各种属性。用椭圆表示,椭圆内为属性名称。使用线段将其和相应的实体连接起来。
实体之间的联系。用菱形表示,菱形内为联系的名称。
实体和实体之间的联系较多,比较常见的联系有1:1,N:1,N:M这三种。
1、货品信息实体图
货品信息实体图如下方图所示:
2、供货商信息实体图
供货商信息实体图如下方图所示
3、销售商信息实体图
销售商信息实体图如下方图所示
4、管理员信息实体图
管理员信息实体图如下方图所示
5、仓库信息实体图
仓库信息实体图如下方图所示
6、入库信息实体图
入库信息实体图如下方图所示
7、出库信息实体图
出库信息实体图如下方图所示
8、库存信息实体图
库存信息实体图如下方图所示
9、总体E-R图
总体E-R图如下方图所示
?9.3、数据库逻辑结构设计
根据前文所分析的E-R图以及各实体与实体之间的关系,进行模型化。建立关系数据库模型,如下面的几个表格:
1、Goods:
货品信息表设计,如表下面:
2、Records:
入/出库表设计,如表下面:
3、Store:
库存信息表设计,如表下面:
4、Users:
用户信息表设计,如表下面:
5、Warehouses:
仓库信息表设计,如表下面:
?️?10、代码设计与实现
代码是代表客观存在的事务名称、属性、和状态等的符号。代码的符号可以是数字,字母和数字与字母混合组成。
合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在代码设计时,应遵循以下基本原则:唯一性、标准性、合理性、可扩充性、简单性、实用性和规范性。
如材料标号,是标志材料的标号,不能重复,5位字符组成,前两位是类型,再两位是尺寸最后二位是所属仓库。如A1D1W2,A1代表圆钢,D1代表规格型号12mm,W2代表所属第二仓库。
?10.1、输入输出设计
输入输出设计在信息系统设计中占据主要地位,因为输入和输出是用户与系统之间沟通的途径,是用户与系统关系最密切的部分,是用户使用系统的方便性及系统的安全可靠性的重要保证。
系统设计时,应该先进行输出设计,之后再对输入进行设计,因为输入信息只有根据输出要求才能确定。
?10.2、输出设计
输出设计是对系统输入数据通过计算机分析处理后的结果通过一定的表现形式,提供用户使用。输出是向用户提供信息处理结果的唯一手段,也是评价一个信息系统的重要依据之一。另一方面,从系统开发的角度来看,输出决定输入,即只有明确了输出,才能最后确定输入,本系统输出大多采用报表的形式。
1、货品信息查询输出界面,如下方图所示:
?10.3、输入设计
输入设计是系统对数据输入功能的要求设计,是将事务设计变成可使用的格式,把数据提交到计算机中进行处理活动的一系列活动。输入设计首先要做的是要保证向管理信息系统体统正确的输入设计。在保证输入数据正确和满足需要的前提下,应尽量做到输入方法简单、迅速和使用方便。
此系统输入内容是根据输出功能的要求来确定各种输入的数据项;输入方式以键盘人工输入为主;辅助鼠标操作的输入方式。为了实现输入设计的目标,本系统采用了很多的菜单式输入功能。
1、货品信息输入界面,如图下方所示:
2、仓库信息输入界面,如图下方所示:
?️?11、系统实施
?11.1、登录界面实现
1、说明:
此模块实现系统登录,用户输入用户名、密码和权限后,系统判断是否正确,如果正确,进入主界面,否则,要求重新输入。
2、模块处理流程图,如图下方所示:
3、登录界面,如图下方所示:
4、代码设计
代码语言:javascript复制private void btnlogin_Click(object sender, EventArgs e)
{
bool isvaliuser = false;
dbhelper.LoginId = txtuser.Text;
if (validateinput())
{
isvaliuser = validateuser(cbousertype.Text, txtuser.Text, txtpassword.Text);
if (isvaliuser)
{
showuserfrom();
this.Visible = false;
}
else
{
MessageBox.Show( "用户名或密码不存在或权限不对","登录失败", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}//登录
private void btncancal_Click(object sender, EventArgs e)
{
Application.Exit();
}//退出
public void showuserfrom()
{
switch (cbousertype.Text)
{
case "管理员":
Form fm = new mainForm();
fm.Show();
break;
default:
mainForm fm1 = new mainForm();
fm1.人员信息维护ToolStripMenuItem.Visible = false;
fm1.Show();
break;
}
}//权限验证
private bool validateinput()
{
if (txtuser.Text.Trim() == "")
{
MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtuser.Focus();
return false;
}
else if (txtpassword.Text.Trim() == "")
{
MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtpassword.Focus();
return false;
}
else if (cbousertype.Text.Trim() == "")
{
MessageBox.Show("输入登录类型", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
cbousertype.Focus();
return false;
}
else
{
return true;
}
}//验证是否为空
public bool validateuser(string logintype, string loginid, string loginpwd)
{
int count = 0;
bool isvaliduser = false;
string sql = string.Format("select count(*) from Users where UID='{0}' and UPassword='{1}'and UPower='{2}'", loginid, loginpwd,cbousertype.Text);
try
{
SqlCommand command = new SqlCommand(sql, dbhelper.connection);
dbhelper.connection.Open();
count = (int)command.ExecuteScalar();
if (count == 1)
{
isvaliduser = true;
}
else
{
isvaliduser = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
dbhelper.connection.Close();
}
return isvaliduser;
}
//账号密码是否正确
?11.3、主界面的实现
1、说明:
此模块实现各分模块的进入。
2、系统主界面,如图下方所示:
3、代码设计
代码语言:javascript复制public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
}
private void FormMain_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
private void 货品信息列表ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new goodsManage();
fm.MdiParent = this;
fm.Show();
}
private void 注销ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 货品信息新增ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new goodsAdd();
fm.MdiParent = this;
fm.Show();
}
private void 个人密码修改ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new passwordmodify();
fm.MdiParent = this;
fm.Show();
}
private void 权限设置ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new userpower();
fm.MdiParent = this;
fm.Show();
}
private void 添加新成员ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new useradd();
fm.MdiParent = this;
fm.Show();
}
private void 货品信息删改ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new goodsModify();
fm.MdiParent = this;
fm.Show();
}
private void 货物进出添加ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new goodsReserve();
fm.MdiParent = this;
fm.Show();
}
private void 添加存放规则ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new StoreRegularAdd();
fm.Show();
}
private void 存放规则浏览ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new StoreRegularManage();
fm.MdiParent = this;
fm.Show();
}
private void 仓库信息浏览ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new WarehouseManage();
fm.MdiParent = this;
fm.Show();
}
private void 仓库信息添加ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new WarehouseAdd();
fm.MdiParent = this;
fm.Show();
}
private void 货物进出浏览ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new RecordsList();
fm.MdiParent = this;
fm.Show();
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
Form fm = new OrderDetail();
fm.MdiParent = this;
fm.Show();
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
passwordmodify fm = new passwordmodify();
fm.MdiParent = this;
fm.textBox1.Text = dbhelper.LoginId;
fm.textBox1.ReadOnly = true;
fm.Show();
}
private void 人员信息浏览ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form fm = new usermanage();
fm.MdiParent = this;
fm.Show();
}
?11.4、各分界面的实现
1、说明:
材料、用户、仓库信息的增、删、改等的实现。
2、仓库信息管理及代码,如图下方所示:
3、代码设计
代码语言:javascript复制 private void WarehouseManage_Load(object sender, EventArgs e)
{
dbhelper.connection.Open();
string sql = "select WID as 仓库编号,WName as 名称,WArea as 容积,WAddress as 地址,WDescribe as 简单描述 from Warehouses ";
SqlCommand com = new SqlCommand(sql, dbhelper.connection);
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet DS = new DataSet();
adapter.SelectCommand = com;
adapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
dbhelper.connection.Close();
}//初始化
private void btndelete_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确定删除此记录吗?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
{
int wid = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
string sql = string.Format("delete from Warehouses where WID='{0}'", wid);
dbhelper.connection.Open();
SqlCommand com = new SqlCommand(sql, dbhelper.connection);
com.ExecuteNonQuery();
dbhelper.connection.Close();
MessageBox.Show("成功", "提示");
}
else
MessageBox.Show("操作失败!", "提示");
}//删除
private void btnexit_Click(object sender, EventArgs e)
{
this.Close();
}//退出
private void btnchange_Click(object sender, EventArgs e)
{
warehousechange fm = new warehousechange();
fm.label10.Text = Convert.ToString(dataGridView1.CurrentRow.Cells[0].Value);
fm.textBox1.Text = Convert.ToString(dataGridView1.CurrentRow.Cells[1].Value);
fm.textBox2.Text =Convert.ToString( dataGridView1.CurrentRow.Cells[2].Value);
fm.textBox3.Text = Convert.ToString(dataGridView1.CurrentRow.Cells[3].Value);
fm.textBox4.Text = Convert.ToString(dataGridView1.CurrentRow.Cells[4].Value);
fm.Show();
}//修改
private void button1_Click(object sender, EventArgs e)
{
Form fm = new WarehouseAdd();
fm.Show();
}//添加
?11.4.1、修改界面
1、如图下方所示:
2、代码设计
代码语言:javascript复制private void btnexit_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnsave_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确定提交修改吗?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
{
dbhelper.connection.Open();
string sql = string.Format("update Warehouses set WName='{0}',WArea='{1}',WAddress='{2}',WDescribe='{3}'where WID='{4}'", textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text,Convert.ToInt32(label10.Text));
SqlCommand com = new SqlCommand(sql, dbhelper.connection);
com.ExecuteNonQuery();
dbhelper.connection.Close();
MessageBox.Show("成功", "提示");
}
else
{ MessageBox.Show("失败", "提示");}
}
?11.4.1、修改界面库存信息管理
1、修改界面库存信息管理如图下方所示:
2、代码设计
代码语言:javascript复制private void OrderDetail_Load(object sender, EventArgs e)
{
dbhelper.connection.Open();
string sql = "select GID as 货品编号,SWID as 仓库编号,SQuantity as 现有数量,SbaseLine as 数量下限,STopLine as 数量上限,GPrice as 当前价格,GProvider1 as 住供应商,GProvider2 as 次供应商 from Goods , Store where Goods.GID=Store.SGID";
SqlCommand com = new SqlCommand(sql, dbhelper.connection);
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet DS = new DataSet();
adapter.SelectCommand = com;
adapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
dbhelper.connection.Close();
label4.Text = "共有" DS.Tables[0].Rows.Count "条查询记录";
textBox1.Text = "";
textBox3.Text = "";
}//初始化
private void btnsearch_Click(object sender, EventArgs e)
{
dbhelper.connection.Open();
string sql = string.Format("select GID as 货品编号,SWID as 仓库编号,SQuantity as 现有数量,SbaseLine as 数量下限,STopLine as 数量上限,GPrice as 当前价格,GProvider1 as 住供应商,GProvider2 as 次供应商 from Goods , Store where Goods.GID=Store.SGID and Store.SWID like '%{0}%' and Goods.GID like '%{1}%'", textBox3.Text,textBox1.Text);
SqlCommand com = new SqlCommand(sql, dbhelper.connection);
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet DS = new DataSet();
adapter.SelectCommand = com;
adapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
dbhelper.connection.Close();
label4.Text = "共有" DS.Tables[0].Rows.Count "条查询记录";
}//查询
源码地址:https://download.csdn.net/download/weixin_46931877/19814654