收藏 分销(赏)

杭氧集团库存管理系统论文.doc

上传人:精*** 文档编号:2111958 上传时间:2024-05-16 格式:DOC 页数:34 大小:1.09MB 下载积分:12 金币
下载 相关 举报
杭氧集团库存管理系统论文.doc_第1页
第1页 / 共34页
杭氧集团库存管理系统论文.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
个人收集整理 勿做商业用途 毕业设计说明书 课题名称: 杭氧集团库存管理系统 系 别: 计算机工程系学院 ?????你的模板完全不对。所以后面所有格式需要全部修改。建议你把内容先复制到记事本,然后贴到新模板中。记住:模板格式不对,会导致到时候全部论文重新打印 专 业: 计算机应用技术 班 级: 计算0912 姓 名: 郎欢臣 学 号: 0903101231 指导教师: 沈建刚 起始时间:2011年12月12日~2012年04月09日(共12周) 摘 要 随着现代工业的发展,计算机信息管理系统越来越受到企业重视.本文主要分析了库存管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构,功能模块划分以及数据库模式分析等,重点对应用程序的实际开发实现作了介绍。达到了数据的一致性和安全性,且应用程序功能完备,符合了库存管理系统作为典型的信息管理系统(MIS)的要求。同时简单介绍了Visual Studio 编程环境和SQL Server数据库管理系统的功能特点,库存管理系统是企业物流管理中不可或缺的一部分.既然标题说了“杭氧集团”,摘要中就应说明针对该企业的一些特点。另外,摘要不要说你介绍了什么,而是你开发了一个什么,有什么作用。 关键词:库存管理,数据库,信息管理,VS缩写不能作为关键词 目 录 摘 要 I 第1章 绪论 1 1.1 概述 1 1.2 背景 1 1。3 意义 3 第2章 系统平台和开发工具 4 2.1 系统开发语言 4 2。1.1 微软推出C# 4 2。2 数据库理论 4 2.2。1 SQL Server 简介 4 2。3 系统开发工具 5 2.3。1 Visual Studio 2008 简介 5 2。3。2 Windows 窗体 5 第3章 库存管理系统的设计及分析 7 3.1 总体设计 7 3.1。1 项目规划 7 3.1.2 系统业务流程分析 8 3。1。3 系统功能结构 9 3.2 系统设计 10 3。2.1 设计目标 10 3.2。2 开发及运行环境 10 3.2。3 数据库设计 10 第4章 库存系统的实现与测试 12 4.1 公共模块 12 4.1。1 DataCon类 12 4。1.2 DataOperate类 16 4.2 主要功能模块 17 4。2.1 系统登录 17 4.2。2 供应商信息设置 17 4。2.3 货物入库管理 18 4.2。4 货物出库管理 19 4.2。5 借货管理 20 4.2。6 还货管理 21 4。2。7 库存信息查询 22 第5章 结论 24 5.1 结论 24 结束语这是什么东西 28 参考文献 29 致谢 30 29 第1章 绪论 1.1 概述 库存管理是企业日常经营管理中十分重要的组成部分,传统的手工管理方式弊端很多,入库、统计、汇总处理时的工作量极其繁重,处理效率非常低,领导也无法及时了解企业资金占用的实际状况。越来越多的企业经营者意识到:只有采用信息化的管理系统,才能适应日益激烈的市场竞争. 本人做的库存管理系统是一个Windows应用程序,它不仅可以有效管理企业的库存,还能够用图表分析某年某月的货物出入库情况,给企业管理者的经营决策提供依据,灵活的批量录入数据,使信息传递更快捷。系统采用人机交互方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。实施强大的后台监控功能.功能强大的出入库分析。实现各种查询,如定位查询、模糊查询等。实现货物进货分析与统计、货物出库明细记录等功能。对用户输入的数据,系统进行严格的数据检验,尽可能避免人为错误。系统最大限度地实现了易维护性和易操作性。 1.2 背景 当今企业竞争范围的扩大,要求在企业的各个方面加强管理,并要求企业有更高的信息化集成,要求对企业的整体资源进行集成管理,而不仅仅对制造资源进行集成管理。现代企业都意识到,企业的竞争是综合实力的竞争,要求企业有更强的资金实力,更快的市场响应速度。因此,信息管理系统与理论仅停留在对制造部分的信息集成与理论研究上是远远不够的。与竞争有关的物流、信息及资金要从制造部分扩展到全面质量管理、企业的所有资源(分销资源、人力资源和服务资源等)及市场信息和资源,并且要求能够处理工作流。另一方面,企业规模不断扩大.这就要求企业各部门之间统一计划,协调生产步骤,汇总信息,调配集团内部资源。这些既要独立,又要统一的资源共享管理。第三,信息全球化趋势的发展要求企业之间加强信息交流和信息共享。企业之间既是竞争对手,又是合作伙伴,信息管理要求扩大到整个供应链的管理。 随着现代管理思想和方法的提出和发展,如JIT(Just ln Time—-及时生产)、TQC(TotalQualityControl——全面质量管理)、OPT(OptimizedProduction Technology——优化生产技术)及DRP(Distribution Resource Planning—-分销资源计划)等,又相继出现了MES(ManufacturingExecuteSystem—-制造执行系统)、AMS(Agile Manufacturing System——敏捷制造系统)等现代管理思想.MRP-II逐步吸收和融合其他先进思想来完善和发展自身理论。20世纪90年代MRP—II发展到了一个新的阶段:ERP(EnterpriseResourcePlanning——企业资源计划).简要地说企业的所有资源包括3大流:物流、资金流和信息流.ERP也就是对这3种资源进行全面集成管理的管理信息系统。概括地说,ERP是建立在信息技术基础上,利用现代企业的先进管理思想,全面地集成了企业的所有资源信息,并为企业提供决策、计划、控制与经营业绩评估的全方位和系统化的管理平台. ERP系统是一种管理理论和管理思想,不仅仅是信息系统.它利用企业的所有资源,包括内部资源与外部市场资源,为企业制造产品或提供服务创造最优的解决方案,最终达到企业的经营目标。ERP理论与系统是从MRP—II发展而来的,它除继承了MRP-II的基本思想(制造、供销及财务)外,还大大地扩展了管理的模块,如多工厂管理、质量管理、设备管理、运输管理、分销资源管理、过程控制接口、数据采集接口、电子通信等模块.它融合了离散型生产和流程型生产的特点,扩大了管理的范围,更加灵活或“柔性”地开展业务活动,实时地响应市场需求。它还融合了多种现代管理思想,进一步提高了企业的管理水平和竞争力。因此ERP理论不是对MRP—II的否认,而是继承与发展。MRP-II的核心是物流,主线是计划。伴随着物流的过程,同时存在资金流和信息流。ERP的主线也是计划,但ERP已将管理的重心转移到财务上,在企业整个经营运作过程中贯穿了财务成本控制的概念。 总之,ERP极大地扩展了业务管理的范围及深度,包括质量、设备、分销、运输、多工厂管理、数据采集接口等。ERP的管理范围涉及企业的所有供需过程,是对供应链的全面管理和企业运作的供需链结构的全面管理。 1.3 意义 库存管理系统是生产、计划和控制的基础。库存管理系统主要通过对仓库、入库、出库的管理,及时反映物资的仓储、流向情况,为生产管理和成本核算提供依据。并通过库存分析信息。同时为计划及决策人员提供实时准确的存货信息,以便及时调整生产,保证企业各项生产经营活动的顺利进行.通过库存管理信息化,可以全面监控企业商品的进、出、存等各种状况,满足现代企业的库存管理需要。 第2章 系统平台和开发工具 2.1 系统开发语言 2.1.1 微软推出C#这一章并非重点,就不要出现三层标题了。而且,你写系统平台和开发工具,却没有说明你或者这个系统为什么选择这个平台和这个工具,如果不写出为什么,这章就没有存在的理由。 C# (C sharp) 是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft 。NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选--无论是高级的商业对象还是系统级的应用程序.使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。 最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。 2.2 数据库理论 2.2.1 SQL Server 简介 Microsoft SQL Server 2000 是一个高性能的客户端/服务器结构的关系数据库管理系统(RDBMS,Relational Database Management System)。SQL Server 2000 是为支持高容量的事务处理(比如在线订购录入、存货目录、记账或制造)以及数据仓库和决策支持系统(比如销售分析应用)而设计的。它运行在Microsoft Windows NT 4或Microsoft Windows 2000 Server上――基于使用Intel处理器的网络。 SQL Server 2000 实际上有七种不同的可用版本:Standard Edition \ Enterprise Edition \ Personal Edition \ Developer Edition \ Windows CE Edition \ Evaluation Edition 和Microsoft Desktop Engine (MSDE)。 图2-1 SQL Server 简介 2.3 系统开发工具 2.3.1 Visual Studio 2008 简介 Visual Studio 2008 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序.Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。 2.3.2 Windows 窗体 Windows 窗体用于在 .NET Framework 上创建 Microsoft Windows 应用程序。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。 Windows 窗体是 .NET Framework 的智能客户端技术,。NET Framework 是一组可简化常用应用程序任务(如读写文件系统)的托管库。使用类似 Visual Studio 的开发环境时,您可以创建 Windows 窗体智能客户端应用程序,以显示信息、请求用户输入以及通过网络与远程计算机通信。 在 Windows 窗体中,“窗体”是向用户显示信息的可视图面。通常情况下,通过向窗体上添加控件并开发对用户操作(如鼠标单击或按下按键)的响应,生成 Windows 窗体应用程序.“控件”是显示数据或接受数据输入的相对独立的用户界面 (UI) 元素。 当用户对窗体或其中的某个控件进行操作时,将生成事件。应用程序使用代码对这些事件进行响应,并在事件发生时处理事件。有关更多信息,请参见在 Windows 窗体中创建事件处理程序。 Windows 窗体包含可添加到窗体上的各式控件:用于显示文本框、按钮、下拉框、单选按钮甚至网页的控件.有关可在窗体上使用的所有控件的列表,请参见用于 Windows 窗体上的控件。如果现有控件不满足需要,Windows 窗体还支持使用 UserControl 类创建自己的自定义控件。 Windows 窗体具有丰富的 UI 控件,可模拟象 Microsoft Office 这样的高端应用程序中的功能。使用 ToolStrip 和 MenuStrip 控件时,可以创建包含文本和图像、显示子菜单及承载其他控件(如文本框和组合框)的工具栏和菜单。 使用 Visual Studio 的具有拖放功能的 Windows 窗体设计器,可以轻松创建 Windows 窗体应用程序。只需使用光标选择控件并将控件添加到窗体上所需的位置即可.设计器提供类似网格线和对齐线的工具,可简化对齐控件的操作。无论使用 Visual Studio 还是在命令行上编译,都可以使用 FlowLayoutPanel、TableLayoutPanel 和 SplitContainer 控件以较短的时间创建高级窗体布局。 最后,如果您必须创建自己的请读一下你自己的文章,这不是写教科书 自定义用户界面元素,则可使用 System.Drawing 命名空间,其中包含了大量的类,可供您选择用于直接在窗体上呈现线条、圆和其他形状。 第3章 库存管理系统的设计及分析没有需求的分析,就直接开始系统设计,那么做出来的东西是为了什么呢?文章必须要能自圆其说。我觉得你应该把你的第2章内容并入第1章,并进行精简。然后,第2章写成需求分析,分析一下杭氧这个单位的库存管理的基本业务模型,可以画点业务的流程图之类的,并进行文字说明需要的库存管理是什么样的。然后这里第3章对业务进行抽象,把它化成程序设计的各种模块和操作 3.1 总体设计 3.1.1 项目规划 库存管理系统主要由基本档案、货物管理、查询统计、系统维护和帮助等模块组成,具体规划如下。 基本档案模块 该模块主要用于实现货物档案设置、供应商设置和仓库设置等功能。 货物管理模块 该模块主要用于实现货物的入库管理、出库管理、借货管理、还货管理和盘点管理等功能。 查询统计模块 该模块主要用于实现货物的库存查询、入库查询、出库查询、借出查询、归还查询、警戒查询和出入库货物的年统计、月统计等功能。 该模块主要用于实现用户管理、更改密码、权限设置、关于本系统、重新登录和退出系统等功能。 3.1.2 系统业务流程分析见上面的批注。建议这个业务流程放入需求分析。 系统登录 仓库设置 是否登录 借出货物 供货商设置 仓库信息 货物入库 入库货物统计 盘点货物 归还货物 出库货物统计 货物出库 是 否 图3-1 系统业务流程图 3.1.3 系统功能结构 库存管理系统 帮助 查询统计 基本档案 货物管理 入库管理 出库管理 借货还货 盘点管理 仓库设置 货物档案设置 供货商设置 警戒查询 出库查询 出入库货物月统计表面黄肌 出入库货物年统计 货物归还查询 货物借出查询 入库查询 库存查询 退出系统 重新登录 关于本系统 用户管理 权限设置 更改密码 图3-2 系统功能模块 3.2 系统设计 3.2.1 设计目标 本系统属于小型的数据库管理系统,可以对中小型企业库存进行有效的管理。通过本系统达到以下目标: 灵活的批量录入数据,使信息传递更快捷。 系统采用人机交互方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。 实施强大的后台监控功能。 功能强大的出入库分析. 实现各种查询,如定位查询、模糊查询等. 实现货物进货分析与统计、货物出库明细记录等功能。 对用户输入的数据,系统进行严格的数据检验,尽可能避免人为错误。 系统最大限度地实现了易维护性和易操作性. 3.2.2 开发及运行环境 系统开发平台:Microsoft Visual Studio 2005. 系统开发语言:C#。 数据库系统:SQL Server 2000。 运行平台:Windows XP(SP2) / Windows 2000(SP4) / Windows Server 2003(SP1). 运行环境:Microsoft。NET Framework SDK v2.0. 3.2.3 数据库设计 本系统采用SQL Server 2005作为后台数据库,数据库名称为db_SMS,其中包含9张数据表。分别是:借出货物表(tb_BorrowGoods)、盘点货物表(tb_Check)、货物信息表(tb_GoodsInfo)、货物入库表(tb_InStore)、货物出库表(tb_OutStore)、供应商信息表(tb_Provider)、归还货物表(tb_ReturnGoods)、仓库信息表(tb_Storage)、用户信息表(tb_User)。 部分数据表的E-R图: 货物出入库价格 货物规格 货物数量 仓库名称 货物名称 货物编号 货 物 信 息 表 图3-3 货物信息表E—R图 货物入库表 入库编号 货物编号 货物名称 仓库名称 货物规格 入库日期 图3-4 货物入库表E-R图 还货数量 货物规格 货物名称 仓库名称 借货编号 还货编号 货物归还表 图3-5 货物归还表E-R图 第4章 库存系统的实现与测试 4.1 公共模块 在开发项目中以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的重用率,而且也方便代码的管理。本系统中创建了两个公共类DataCon。cs和DataOperate。cs,其中DataCon类主要用来访问SQL Server数据库并且执行基本的SQL语句,DataOperate类主要用来实现调用SQL存储过程和执行数据验证等功能.在程序开发时,窗体只需调用相应方法即可。 4.1.1 DataCon类 DataCon类在命名空间区域引用System。Data.SqlClient命名空间,用来连接数据库和进行有并数据库的操作.主要代码如下: using System; using System.Collections。Generic; using System.Text; using System。Data; using System。Data。SqlClient; namespace SMS.BaseClass { class DataCon {     ……自定义方法(getcon()、getcom(string M_str_sqlstr)等) } }论文不要出现这样的代码,没人看你的代码的。建议多点流程图。需要用代码说明,用伪代码就行了,不要直接拷贝你的程序,尤其是不该出现那么多using语句。 getcon方法是返回值为SqlConnection类型的自定义方法,它主要用来建立数据库连接,其实现代码如下: #region 建立数据库连接 /// 〈summary〉 /// 建立数据库连接。 /// </summary> /// <returns〉返回SqlConnection对象</returns〉 public SqlConnection getcon() { string M_str_sqlcon = ”Data Source=(local);Database=db_SMS;User id=sa;PWD=”; SqlConnection myCon = new SqlConnection(M_str_sqlcon); return myCon; } #endregion getcom方法为无返回值类型的自定义方法,它主要用来执行SQL语句,其实现代码如下: #region 执行SqlCommand命令 /// <summary〉 /// 执行SqlCommand /// </summary〉 /// <param name="M_str_sqlstr">SQL语句</param> public void getcom(string M_str_sqlstr) { SqlConnection sqlcon = this。getcon(); sqlcon.Open(); SqlCommand sqlcom = new SqlCommand(M_str_sqlstr, sqlcon); sqlcom.ExecuteNonQuery(); sqlcom。Dispose(); sqlcon.Close(); sqlcon.Dispose(); } #endregion getds方法用来执行SQL语句,并返回一个DataSet类型的数据集对象。在此方法中,首先调用本类中的getcon()方法实现数据库连接,然后使用SqllDataAdapter类对象填充数据集,其实现代码如下: #region 创建DataSet对象 /// 〈summary> /// 创建一个DataSet对象 /// 〈/summary> /// 〈param name=”M_str_sqlstr”>SQL语句</param〉 /// 〈param name=”M_str_table"〉表名〈/param〉 /// <returns>返回DataSet对象</returns> public DataSet getds(string M_str_sqlstr, string M_str_table) { SqlConnection sqlcon = this。getcon(); SqlDataAdapter sqlda = new SqlDataAdapter(M_str_sqlstr, sqlcon); DataSet myds = new DataSet(); sqlda.Fill(myds, M_str_table); return myds; } #endregion getread方法中,首先使用SqlCommand类对象执行SQL语句,然后调用SqlCommand类的ExecuteReader方法生成SqlDataRerder类的一个对象,并返回该对象.getread方法实现代码如下: #region 创建SqlDataReader对象 /// <summary〉 /// 创建一个SqlDataReader对象 /// 〈/summary> /// <param name=”M_str_sqlstr”〉SQL语句〈/param〉 /// 〈returns〉返回SqlDataReader对象〈/returns〉 public SqlDataReader getread(string M_str_sqlstr) { SqlConnection sqlcon = this。getcon(); SqlCommand sqlcom = new SqlCommand(M_str_sqlstr, sqlcon); sqlcon.Open(); SqlDataReader sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection); return sqlread; } #endregion 4.1.2 DataOperate类 DataOperate类首先在命名空间区域添加如下命名空间,并声明DataCon类的一个对象,通过该类对象调用类中的功能方法。实现代码如下: using System。Drawing; using System。IO; using System。IO。Compression; using System。Drawing.Text; using System。Drawing。Drawing2D; using System。Drawing.Imaging; using System.Text.RegularExpressions; namespace SMS。BaseClass { class DataOperate { DataCon datacon = new DataCon();//声明DataCon类的一个对象,以调用其方法     ……自定义方法(cboxBind()、drawPic()、compressFile()等) } } DataOperate类还包括以下方法: cboxBind方法无返回值,主要用来执行SQL语句,并将执行结果绑定到ComboBox控件上。 drawPic方法无返回值,它主要用来根据SQL语句的查询结果在窗体中绘制饼图。 compressFile方法无返回值,主要用来执行文件压缩操作。 validateNum方法无返回值,它主要用来验证输入字符串是否为数字。 UserLogin方法返回值类型为int类型。在该方法中,首先使用SqlCommand类对象调用proc_Login存储过程,然后使用Parameters类的Add方法给该存储过程的参数赋值,最后调用SqlCommand类对象的ExecuteNonQuery方法执行该存储过程,并返回一个int类型的值。 4.2 主要功能模块 4.2.1 系统登录 系统登录主要用于对进入库存管理系统的用户进行安全性检查,以防止非法用户进入该系统。在登录进,只有合法的用户,才可以进入该系统,同时,系统还根据登录用户的级别,给予其不同的操作权限。 图4-1 系统登录 4.2.2 供应商信息设置 库存货物的进货渠道是供应商,为了使系统操作员使用方便,在进行出入库操作之前,首先应该对供应商信息进行设置。 在供应商信息设置窗体中,可以添加、修改和删除供应商信息。添加和修改供应商信息进,使用了Regex类的IsMatch方法自定义正则表达式,来验证供应商的电话号码和传真号码是否合法。 图4-2 供应商信息设置 4.2.3 货物入库管理 货物入库管理是库存管理系统中的一个重要功能,它主要实现货物的入库登记功能。在货物入库时,不仅需要记录货物名称、货物数量、进货价格和货物种类等信息,还需要修改货物信息表中货物的库存数量,本系统中该功能是通过触发器trig_inGoods实现的。 图4-3 货物入库管理 4.2.4 货物出库管理 货物出库管理主要完成货物的出库功能.用户从仓库提取货物后,对应货物的库存数量也相相应减少,因此货物出库管理不仅需要记录用户提货的数量和种类等信息,还需要修改货物信息表中货物的库存数量,本系统中该功能是通过用触发器trig_outGoods实现的. 图4-4 货物出库管理 4.2.5 借货管理 借货管理是库存管理系统中的日常业务,在进行货物借出操作时,货物的借出数量不能大于货物的库存数量.另外,管理员还可以对货物借出信息进行删除。本系统实现货物借出功能时,首先使用自定义的正则表达式判断用户输入的货物借出数量是否为数字,然后判断该数量是否大于货物的库存数量,如果大于,弹出信息提示框,否则执行货物借出操作。 图4-5 借货管理 4.2.6 还货管理 还货管理就是对所借货物进行归还操作。本系统在实现货物归还功能时,首先判断输入的归还数量是否大于该货物的借出数量,如果大于则弹出提示信息,否则执行还货操作,同时,调用触发器trig_reGoods和rig_updateGInfo更新货物借出表和货物信息表中的相关记录. 图4-6 还货管理 4.2.7 库存信息查询 库存信息查询主要是根据用户选择的条件和输入的查询关键字查询货物的库存信息,仓库管理人员可以通过库存查询及时了解指定货物在库存中的详细情况。 图4-7 库存信息查询 第5章 结论结论部分全部重写。结论只要说明你做了个什么东西,和一般的库存管理系统有什么区别,或者这个库存管理有什么特点。你的系统实现了什么,达到了什么目的,有什么意义。最后少量提可以完善的方面。结论不要超过一页纸。 5.1 结论 在做一个系统之前,一定要先弄清楚开发该系统的目的是什么,并将其业务流程图画出来,然后根据所做的需求分析对系统进行可行性分析、总体设计和系统设计,在这些前期工作完善之后,最后进行编码,这时你将会发现自己的编程思路非常明确。程序分好几个模块,毕业设计一共有12周的时间,就要先把做每个模块的时间安排好,这样,自己可以很明确程序的完成度.在做程序的过程中也遇到了不少问题,涉及到C#的一些语法和数据库的多张表,发现自己好多不懂,然后自己先去参考书本上的资料,实在不行的了,就只有有请教别人帮忙了,觉得在调试程序的时候是最麻烦了,会出现很多问题,当你把一个问题解决了,之后会出现其他的问题,这刻有得去一行一行地看代码,去测试,也是考验一个人耐心的时候,同时不能马虎,有时候也就多了一个点,检查了半天,都没发现,真的是细节决定成败! 另外,在开发数据库应用程序时,如果遇到涉及多个表操作的问题,可以通过使用触发器来完成. 当有货物入库时,程序需要判断该在货物信息表中是否已存在,如果已经存在,则更新对应货物的库存数量,否则在货物信息表中插入一条新记录.实现该功能时,如果在后台编写代码,由于涉及到两个表中的多个字段,实现起来非常复杂,这里通过一个trig_inGoods触发器来实现该功能。trig_inGoods触发器代码如下: CREATE TRIGGER trig_inGoods ON dbo.tb_InStore FOR insert AS if exists(select GoodsID from inserted where GoodsID in(select GoodsID from tb_GoodsInfo)) begin if exists(select StoreName from inserted where StoreName in(select StoreName from tb_GoodsInfo)) begin update tb_GoodsInfo set GoodsNum=GoodsNum+(select GoodsNum from inserted) where GoodsID=(select GoodsID from inserted) and GoodsName=(select GoodsName from inserted) and StoreName=( select StoreName from inserted) and GoodsSpec=( select GoodsSpec from inserted) end else begin insert into tb_GoodsInfo(GoodsID,GoodsName,StoreName,GoodsSpec, GoodsUnit,GoodsNum,GoodsInPrice,GoodsOutPrice) select GoodsID,GoodsName,StoreName,GoodsSpec,GoodsUnit, GoodsNum,GoodsPrice,GoodsPrice*110/100 from inserted end end else begin insert into tb_GoodsInfo(GoodsID,GoodsName,StoreName,GoodsSpec, GoodsUnit,GoodsNum,GoodsInPrice,GoodsOutPrice) select GoodsID,GoodsName,StoreName,GoodsSpec,GoodsUnit, GoodsNum,GoodsPrice,GoodsPrice*110/100 from inserted end 第一次调试程序时,执行货物出库操作,货物信息表中只有最后一条记录更新,其它记录无论出库数量多少,在货物信息表中的库存数量都不会发生变化。经过分析,发现该错误由于在trig_outGoods触发器中,给声明的变量赋值时没有设置条件,因此变量的值总是货物信息表中最后一条记录的相关值。修改后的trig_outGoods触发器代码如下: CREATE TRIGGER trig_outGoods ON dbo。tb_OutStore FOR insert,delete AS declare @GoodsName varchar(50),@StoreName varchar(100), @GoodsSpec varchar(50),@GoodsNum bigint select @GoodsName=GoodsName,@StoreName=StoreName, @GoodsSpec=GoodsSpec,@GoodsNum=GoodsNum from tb_GoodsInfo where GoodsName=(select GoodsName from inserted) and StoreName=(select StoreName from inserted) and GoodsSpec=(select GoodsSpec from inserted) if(@GoodsName=(select GoodsName from inserted) and @StoreName=(select StoreName from inserted) and @GoodsSpec=(select GoodsSpec from inserted)) begin if(@GoodsNum>(select GoodsNum from inserted)) begin update tb_GoodsInfo set GoodsNum=@GoodsNum-(select GoodsNum from inserted) where GoodsName=(select GoodsName from inserted) and StoreName=(select StoreName from inserted) and GoodsSpec=(se
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服