企业库存管理系统的设计与实现.doc_第1页
企业库存管理系统的设计与实现.doc_第2页
企业库存管理系统的设计与实现.doc_第3页
企业库存管理系统的设计与实现.doc_第4页
企业库存管理系统的设计与实现.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 企业库存管理系统的设计与实现 目录 目录目录 I 摘要摘要 1 ABSTRACT 2 第一章第一章 概述概述 3 1 1 引言 3 1 2 系统开发环境 3 1 3 VC 简介 3 第二章第二章 需求分析需求分析 5 2 1 问题分析 5 2 2 可行性分析 5 2 2 1 技术可行性 6 2 2 2 操作可行性 6 2 3 需求分析 6 2 3 1 系统性能分析 6 2 3 2 系统功能分析 6 2 3 3 数据库分析 7 第三章第三章 系统总体设计系统总体设计 9 3 1 系统概要设计 9 3 1 1 功能模块划分 9 3 1 2 系统设计目标 9 3 1 3 系统功能架构图 10 3 1 4 系统操作流程 10 3 2 功能模块设计 12 3 2 1 基本信息管理功能 12 3 2 2 库存管理功能 13 3 2 3 统计查询管理功能 15 3 3 数据库设计 16 3 3 1 数据表设计说明 16 第四章第四章 系统详细设计与实现系统详细设计与实现 21 4 1 数据库的连接 21 II 4 1 1 ADO 概述 21 4 1 2 数据库连接的实现 21 4 2 系统界面设计 25 4 2 1 系统主界面 25 4 2 2 系统登陆界面 26 4 2 3 基本信息管理界面 26 4 2 4 入库管理界面 27 4 2 5 库存管理界面 28 4 2 6 查询管理界面 29 4 3 系统主要功能实现 30 4 3 1 公共模块 30 4 3 2 主窗体 32 4 3 3 系统登陆 39 4 3 4 商品入库 40 4 3 5 库存盘点 42 4 3 6 入库查询 43 第五章第五章 系统测试系统测试 51 5 1 单元测试 51 5 2 功能测试与异常测试 52 5 2 1 数据库连接测试 52 5 2 2 用户登录测试 52 5 2 3 各功能点测试 53 5 3 系统维护 54 第六章第六章 总结总结 55 致致 谢谢 57 1 摘要摘要 企业库存管理系统是典型的信息管理系统 MIS 其开发主要包括后台数据库的建立和维护及 前端应用程序的实现两个方面 对于前者要求建立起一个数据的一致性和完整性都较高的安全的数 据库 而对于后者则要求实现一个功能完备且易使用应用程序 现代企业的最大特点是信息处理量比较大 需要管理的物资设备 原材料及零部件种类繁多 而且由于入库单 出库单等单据发生量特别大 关联信息多 查询和统计的方式各不相同 因此在 管理上实现起来有一定的困难 所以很有必要设计出一套系统来管理企业的库存运作 而库存管理 系统可以全面管理仓库中的商品和货物 缩短库存信息流转时间 进而提高企业的经营效率 本设计采用 Visual C 6 0 的开发环境 完成了企业库存管理系统的需求分析 功能模块的划 分 数据库模式分析 并由此完成了数据库结构和应用程序的实现 关键字关键字 企业库存管理系统 信息管理系统 Visual C SQL Server 2000 MFC 2 Abstract Enterprises stockpile manage system is a typical MIS It s development mostly include the foundation and maintenance of the database and the development of the client application programme For the former we must eatablish a better database which has well data consistency and data security For the latter we must make the programme has self contained function and easy to be use The modern enterprises most major characteristic is the information process load quite is big manages the commodity equipment raw material and the spare part type are many moreover because the warehousing list documentary evidences and so on storehouse list demand list has the quantity to be specially big is connected the information to be many the inquiry and the statistical way is various therefore realizes in the management has certain difficulty Therefore has the necessity to design set of systems very much to manage the enterprise the stock operation but the stock management system may manage in the warehouse comprehensively the commodity and the cargo reduces the stock information pasting time then enhances the enterprise the management efficiency The design of the development environment using Visual C 6 0 mainly completed inventory management system needs analysis the division of functional modules the database model analysis and thus completed the database structure and application implementation Keywords Stockpile manage system Information management system Visual C SQL Server 2000 MFC 3 第一章第一章 概述概述 1 1引言 企业库存管理系统是企业不可缺少的组成部分 对于企业的决策者和管理者来说 都至关重要 所以企业库存管理系统必须为用户提供充足的信息量和作为一种快捷的查 询手段 但使用传统方式来管理仓库中的各种物资设备存在着许多缺点 如 效率低 时间一长 将产生大量的文件和数据等 这些对于查找 更新和维护仓库物资来说都 是一个非常大的问题 随着企业竞争范围的扩大 要求企业在各个方面都必须加强管理 并要求企业有 更高的信息集成化 对企业的整体资源进行集成管理 根据对企业的库存管理情况所 作的调查和有关资料表明 目前制造业企业在库存管理方面普遍存在着如下问题 不 能及时获得库存信息 库存信息不够准确 无法及时了解发料和生产用料情况等 在企业生产经营活动中 库存管理既必须保证生产车间对原材料 零部件的需求 又直接影响采购 销售部门的购 销活动 在盘算企业流动资金 加快资金周转 在 保障供给的前提下最大限度地降低压库资金等方面起着非常重要的作用 直接牵动着 企业的经营效益 因此开发一个库存管理系统既可以解决某些企业的实际问题 又可 以锻炼学生的实际项目开发能力 1 2 系统开发环境 系统采用 Microsoft Windows XP 下的 VC 6 0 作为系统的开发平台 选用 SQL Server 2000 作为后台数据库 1 3 VC 简介 Visual C 不仅仅是一个编译器 它是一个全面的应用程序开发环境 使用它你 4 充分利用具有面向对象特性的 C 来开发出专业级的 Windows 应用程序 Visual C 作为一种程序设计语言 它同时也是一个集成开发工具 提供了软件代码自动生成 和可视化的资源编辑功能 在使用 Visual C 开发应用程序的过程中 系统为我们生 成了大量的各种类型的文件 这为我们开发者省了很多事情 Visual C 采用的框架是 MFC MFC 是一个很大的 对 C 进行了扩展的类库 它 能使开发 Windows 应用程序变得更加容易 由于 MFC 编程方法充分利用了面向对象技 术的优点 它使得我们编程时极少需要关心对象方法的实现细节 同时类库中的各种 对象的强大功能足以完成我们程序中的绝大部分所需功能 这使得应用程序中程序员 所需要编写的代码大为减少 有力地保证了程序的良好的可调试性 还需要要指出的是 MFC 类库在提供的对象的各种属性和方法都是经过谨慎的编写 和严格的测试 可靠性很高 这就保证了使用 MFC 类库不会影响程序的可靠性和正确 性 5 第二章第二章 需求分析需求分析 2 1 问题分析 根据对我国众多制造业企业的库存管理情况所作的调查和参考有关资料 发现目 前制造业企业在库存管理方面普遍存在着如下问题 1 不能及时获得库存信息 2 库存信息不够准确 3 无法及时了解发料和生产用料情况 随着市场需求的日益多样化和个性化 每种产品更新换代的周期都越来越短 这 就要求各行各业的企业都必须改变库存管理现状 因为传统企业库存管理存在以上的 问题 以至于难于适应现代库存管理要求 因此要求现代企业库存管理系统必须具有 以下的特点 1 库存管理流程科学化 由于存货的种类不同 所涉及的业务环节及它们所组成的业务流程也就各有差异 一般而言 存货业务包括到货处理 保管和发放三个主要部分 通畅 正确的业务流 程是保障高的进行效库存管理的基础 它应具备优化 无冗余 并行作业的基本属性 2 组织结构科学化 科学的组织结构确保了业务流程的高效执行 明确了工厂 存储区域 仓库编码 仓储种类以及仓储箱之间的合理关系 3 物料管理代码化 物料种类繁多 在库存管理过程中极易发生混乱的问题 而使用用功能强大是数 据库技术就能很好的解决这个问题 6 2 2可行性分 析 本系统采用的开发工具 VC 6 0 可与后台数据库 SQL Server 2000 无缝衔接 保证 系统能安全 高效和稳定的运行 2 2 1 技术可行性 我在实习时公司所做的项目都是用 VC 6 0 开发的 这个过程中 我的 C 和 MFC 编程技术都有一个很大的提高 这就为我开发这个项目奠定了一定的基础 并且我以前做过货运运输管理系统 里面也涉及到库存管理 部分功能很相似 有这样的经验为基础 我就可以更加轻松的开发本溪台系统 同时 我参考过 计算 机毕业设计指导 这本书 它关于毕业设计系统开发的全面讲解给了我很大的帮助 我还在网上查阅大量相关课题的资料 对现存系统的不足和大部分用户对库存管理的 需求有了较为全面的了解 2 2 2 操作可行性 本系统不需注册 只要简单的安装相应的应用程序就可以方便的使用 本系统界 面设计简单 菜单及功能文字简洁易懂 操作简单方便 让用户一接触界面就对其操 作及功能一目了然 可操作性很强 2 3需求分析 2 3 1 系统性能分析 通过调查 用户对企业库存管理系统有以下要求 1 由于操作人员的计算机操作能力普遍较低 因此要求系统具有良好的人机交互 界面 2 由于该系统的使用对象较多 因此要有完善的权限管理功能 3 完全人性化设计 无需专业人士指导 即可操作本系统 4 方便的 全方位的数据查询功能 5 自动完成数据计算 尽量减少人工干预 7 6 强大的报表打印功能 2 3 2 系统功能分析 根据企业库存管理的需要 开发一个企业库存管理系统应能实现的功能如下 1 实现商品的入库 入库退货管理 2 实现商品的库存盘点管理 3 实现商品的库存调拨 出库管理 4 实现商品的库存上 下限管理 5 灵活的运用表格批量输入数据 使信息传递更快捷 6 系统采用良好的人机对话模式 界面设计美好 信息查询灵活 方便 快捷 准确 数据存储安全可靠 7 键盘操作 快速响应 8 实现各种查询及打印等功能 9 操作员可以随时修改自己的指令 10 对于用户输入的数据 系统进行严格的数据检验 尽可能排除认为的错误 11 系统运行稳定 安全可靠 2 3 3 数据库分析 本系统的数据库采用 SQL Server 2000 系统数据库的名称为 StorageManage 数 据库 StorageManage 包含了 11 张表 为使用户对本系统后台数据库中的数据表有一个更清晰的认识 在此特别设计了一 张系统数据库概要说明表 该表包含了系统中的所有数据表 如表 2 1 所示 表 2 1 系统数据库概要说明表 编号数据表名描述 1 tb cancelinstock main入库退货主表 2 tb cancelinstock sub入库退货明细表 3 tb check main库存盘点主表 4 tb check sub库存盘点明细表 5 tb instock sub入库明细表 8 6 tb instore main商品入库主表 7 tb merchandiseinfo商品信息表 8 tb merchandisestorage商品库存表 9 tb operator操作员信息表 10 tb providerinfo供应商信息表 11 tb storageinfo库存信息表 9 第三章第三章 系统总体设计系统总体设计 3 1 系统概要设计 3 1 1 功能模块划分 企业仓库管理系统是一个典型的数据库开发应用程序 它由基本的信息管理模块 入库管理模块 库存管理模块和查询管理模块等几个部分组成 1 1 基本信息管理模块 该模块主要包括操作员管理 商品信息管理 库存信息管理和供应商信息管理 4 个部分 2 入库管理模块 该模块主要包括商品入库和商品退货两部分 3 库存管理模块 该模块主要包括库存商品打印 库存盘点 库存调拨 库存出货和库存上下限管 理 5 个模块 4 查询管理模块 该模块主要包括商品入库查询 入库退货查询和报损 报益查询 3 部分 3 1 2 系统设计目标 本系统于典型的数据库管理系统 是针对中小型企业的仓库管理而开发的 可实 现进一步的计算机化管理 通过本系统可以达到以下目标 1 实现商品的入库 入库退货管理 2 实现商品的库存盘点管理 3 实现商品的库存调拨 出库管理 4 实现商品的库存上 下限管理 5 灵活的运用表格批量输入数据 使信息传递更快捷 6 系统采用良好的人机对话模式 界面设计美好 信息查询灵活 方便 快捷 10 准确 数据存储安全可靠 7 键盘操作 快速响应 8 实现各种查询及打印等功能 9 操作员可以随时修改自己的指令 10 对于用户输入的数据 系统进行严格的数据检验 尽可能排除认为的错误 11 系统运行稳定 安全可靠 3 1 3 系统功能架构图 系统功能架构图如图 3 1 所示 商 品 信 息 管 理 库 存 信 息 管 理 供 应 商 信 息 管 理 商 品 入 库 入 库 退 货 库 存 商 品 打 印 库 存 盘 点 库 存 出 货 库 存 上 下 限 管 理 商 品 入 库 查 询 入 库 退 货 查 询 库 存 调 度 图 3 1 系统功能架构图 3 1 4 系统操作流程 所谓系统流程就是用户在使用系统时的工作过程 多用户系统的工作流程都从用 户登陆模块开始 对用户的身份进行认证 身分认证可以分为以下两个过程 1 确认用户是否有效的系统用户 企业库存管理系统 基本信息管理入库管理库存管理查询管理 系 统 帮 助 报 损 报 益 查 询 操 作 员 管 理 11 2 确定用户的类型 第一个过程决定用户能否进入系统 第二个过程根据用户的类型决定用户的操作 权限 从而决定用户的工作界面 具体流程图分析如图 3 2 所示 图 3 2 系统流程图 开始 读取用户类型管理自己的用户 管理普通的用户 管理自己的用户 基本信息管理 入库管理 统计查询管理 库存操作管理 用户登陆 失败超 3 次 退出系统 重试 否 是 Admin 普通用 户 用户管理模块库存管理模块 成功 管理 完成 12 在系统流程分析图中可以看到 每个用户最多有 3 登陆机会 如果 3 次输入的用 户名和密码都无法进入系统 则将强制退出系统 另外 此系统对用户的权限做了详 细的划分 只有 Admin 用户具有用户管理权限外 其他用户只有使用权限 登陆后可 以进行相应的操作 完成后退出系统 3 2 功能模块设计 3 2 1 基本信息管理功能 基本信息包括客户信息 仓库信息和用户信息 客户可分为供应商和购货商两类 如图 3 3 所示 在产品入库时 需要提供供应商的信息 在产品出库和退货时 需要提供购货商的 信息 仓库信息包括仓库编号 仓库名称和仓库说明等 用户信息包括用户名 密码 管理员姓名等 基本信息管理模块可以实现以下功能 1 客户信息的录入 修改和删除 2 仓库信息的录入 修改和删除 3 用户信息录入 修改和删除 图 3 3 基本信息管理功能图 仓库信息客户信息 基本信息管理 客户编号 单位名称 联系人 联系电话 邮政编码 通信地址 传真电话 描述信息 仓库名称 描述信息 仓库编号 用户信息 确认密码 密 码 员工名 用户名 13 3 2 2 库存管理功能 库存操作由仓库管理员执行 就是把产品放入仓库或把产品从仓库中取出的操作 入库 出库 库存操作管理模块可是实现以下功能 1 入库操作 入库可以分为采购入库 生产入库 退货入库 退料入库等情况 采购入库就是 要将从供应商处采购的产品入库 生产入库就是要将企业生产的产品入库 退货入库 就是要在售出的产品退货后 将退货产品入库 退料入库用于企业生产的原材料出库 后没有完全使用 将其退回仓库 入库操作需要记录相关产品的信息 仓库信息 客 户信息 经办人 涉及金额和入库时间等信息 2 出库操作 出库操作可以分为销售出库 退货出库 用料出库等情况 销售出库要把卖给售 货商的产品出库 退货出库就是将企业 采购的原材料从仓库中提出退货 用料出库将 本企业用于生产的原材料从仓库中提出到生产线 出库操作需要记录相关产品的信息 仓库信息 客户信息 经办人 涉及金额和出库时间等信息 3 库存盘点 库存盘点时将库存的从产品进行整理 纠正不准确的库存数据 由于人为操作等 原因 系统中的库存数据与实际数据之间可能会存在误差 所以 每隔一段时间对库 存进行盘点时很有必要的 从而保证了库存数据的准确性 4 特殊功能 本系统模块还设计有日期设置 它可以满足用户需要对以前或者以后的库存操作进 行管理 在填写产品出入库信息时我们还对出入库的产品做了详细记录 如下是库存操作管理的图 3 4 所示 14 图 3 4 库存操作管理功能图 3 2 3 统计查询管理功能 库存查询管理模块可以对库存产品进行各类型的统计和查询 从而使用户能够全 面地了解企业库存的状况 统计查询管理模块可以实现以下功能 1 产品出入库统计报表 2 库存产品流水线统计表 如图 3 5 所示 图 3 5 统计查询管理功能图 统计查询管理 盘点 产品名称 库存上限 库存总量 出库总金额 出库总量 入库总金额 入库总量 库存下限 产品编号 产品出入库统计表 盘点 产品名称 经办人 存放仓库 客户单位 总金额 产品数量 产品单价 出入库日期 出入库单号 出入库类型 库存产品流水统计表 出入库类 产品名称 产品型号 产品数量 产品价格 产品日期 客户单位 仓库名称 出入库号 经办人 出入时间 出 入 库管理 库存操作 盘点 产品编号 客户单位 产品数量 产品单价 生产日期 产品型号 产品名称 15 3 3数据库设计 3 3 1 数据表设计说明 1 操作员信息表 tb operator 操作员信息表用来存储登录系统的用户信息 该表的结构如表 3 1 所示 表 3 1 操作员信息表 字段名数据类型长度描述 Namevarchar 30 操作员名称 Passwordvarchar 50 操作员密码 levelSmallint操作员级别 2 供应商信息表 tb providerinfo 供应商信息表用来存储与企业有往来的供应商信息 该表的结构如表 3 2 所示 表 3 2 供应商信息表 字段名数据类型长度描述 Providernamevarchar 50 供应商名称 ArtificialpersonVarchar 30 法人 PrincipalVarchar 10 负责人 PhoneVarchar 30 电话 AddrVarchar 50 地址 WebVarchar 50 网址 E mailvarchar 30 电子邮箱 3 库存盘点明细表 tb check sub 库存盘点明细表用来存储对库存商品进行盘点的明细信息 该表的结构如表 3 3 所 示 表 3 3 库存盘点明细表 字段名数据类型长度描述 16 checkIDvarchar 30 盘点单号 MerchandiseidVarchar 30 商品编号 sumfloat数量 4 库存盘点主表 tb check main 库存盘点主表用来存储对库存商品进行盘点的详细信息 该表的结构如表 3 4 所示 表 3 4 库存盘点主表 字段名数据类型长度描述 checkIDvarchar30盘点单号 StorageVarchar30仓库名称 Principalvarchar30负责人 Checktimedatetime盘点时间 Checkspecsmallint盘点标志 0 报 损 1 报益 memovarchar100备注 5 库存信息表 tb storageinfo 库存信息表用来存储企业的仓库信息 该表的结构如表 3 5 所示 表 3 5 库存信息表 字段名数据类型长度描述 storagenamevarchar 30 仓库名称 6 入库明细表 tb storageinfo 入库明细表用来存储企业设备的相关信息 该表的结构如表 3 6 所示 表 3 6 入库明细表 字段名数据类型长度描述 InstockidVarchar 30 设备编号 17 merchandiseIDVarchar 30 设备名称 UnitpriceMoney使用部门 Numbersfloat设备类型 Rebatefloat设备状态 paymoneyMoney启用日期 stocknameVarchar 30 设备购买价值 7 入库退货明细表 tb cancelinstock sub 入库退货明细表用来存储商品退货的相关信息 该表的结构如表 3 7 所示 表 3 7 入库退货明细表 字段名数据类型长度描述 CancelIDvarchar 30 退货单号 merchandiseIDVarchar 30 设备名称 unitPriceMoney单价 NumbersFloat数量 RebateFloat折扣 PaymoneyMoney金额 stocknameVarchar 30 仓库名称 8 入库退货主表 tb cancelinstock main 入库退货主表用来存储商品退货的相关信息 该表的结构如表 3 8 所示 表 3 8 入库退货主表 字段名数据类型长度描述 CancelIDvarchar 30 退货单号 ProviderVarchar 50 供应商 OperatorVarchar 30 操作员 RebateFloat折扣 SumtotalMoney总计 18 PaymoneyMoney应付金额 FactmoneyMoney实付金额 intimeDatetime退货时间 9 商品库存表 tb merchandisestorage 商品库存表用来存储商品库存的相关信息 该表的结构如表 3 9 所示 表 3 9 商品库存表 字段名数据类型长度描述 MerchandiseIDvarchar 30 商品编号 StoragenameVarchar 30 仓库名称 StoragenumFloat商品库存 UpperlimitFloat库存上限 lowerlimitFloat库存下限 10 商品入库主表 tb merchandisestorage 商品入库主表用来存储商品入库的相关信息 该表的结构如表 3 10 所示 表 3 10 商品入库主表 字段名数据类型长度描述 IDvarchar 30 入库单号 ProviderVarchar 50 供应商 operatorVarchar 30 操作员 RebateFloat折扣 SumtotalMoney总计 PaymoenyMoney应付金额 FactmoneyMoney实付金额 intimeDatetime入库时间 11 商品信息表 tb merchandiseinfo 19 商品信息表用来存储商品入库的相关信息 该表的结构如表 3 11 所示 表 3 11 商品信息表 字段名数据类型长度描述 IDVarchar 50 商品编号 NameVarchar 30 商品名称 SpecVarchar 20 规格 ShornameVarchar 10 简称 DefaultpriceMoney默认价格 ManufactureVarchar 30 厂家 memoVarchar 100 备注 20 第四章第四章 系统详细设计与实现系统详细设计与实现 4 1 数据库的连接 数据库是顾名思义就是存放数据的仓库 如果数据只是存放在数据库里却没有 拿来使用 那么这些数据只是一堆没有任何用处的东西 因此 为了不使数据库里的 数据变成没有用处的东西 对数据库的连接就显得十分重要了 因为程序没有与数据 库进行连接 程序是无法使用数据库里的数据的 下面介绍 VC 中连接数据库的方法 4 1 1 ADO 概述 ADO Active Data Objects 即 ActiveX 数据对象 是微软提供的使 VC 具有访 问数据库功能的构件 ADO 结合了 OLE DB 易于使用的特性以及诸如 Remote Data Objects RDO 和 Data Access Objects DAO 模型中的最好特性 并将它们重新组织在一个 对象模型中 ADO 是一个可以通过 IDispatch 和 Vtable 函数访问的 COM 自动化服务器 最重要的是 ADO 包含所有可以被 OLE DB 标准对象描述的数据类型 换言之 ADO 对 象模型具有可扩展性 它不需要部件做任何工作 即使对于那些从来没有想到过或见 到过的记录集的信息格式 只要使用正常的 ADO 编程对象 就能够可视化地处理所有 的事情 总体说来 ADO 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术 可以使用 ADO 去编写紧凑简明的脚本 以便连接到 Open DataBase Connection ODBC 兼容的数据库和与 OLE DB 兼容的数据源 对于一个对数据库连接有一定了解的脚本编 写人员来说 ADO 命令语句并不复杂而且容易掌握 同样 一个经验丰富的数据库编程 人员将会正确认识 ADO 的语言无关特性和查询处理功能 4 1 2 数据库连接的实现 ADO 是 OLE DB 上面的高层数据库 API 本系统使用 ADO 连接数据库的过程如下 21 1 生成应用程序框架并初始化 OLE COM 库环境 创建一个标准的 MFC AppWizard exe 应用程序 然后在应用程序类的 InitInstance 函数中初始化 OLE COM 库 因为 ADO 库是一个 COM DLL 库 BOOL CAaaApp InitInstance AfxOleInit OLE 初始化 AfxEnableControlContainer 2 引入 ADO 库文件 使用 ADO 前必须在工程的 stdafx h 文件里用直接引入符号 import 引入 ADO 库文 件 以使编译器能正确编译 代码如下 include pub h import c program files common files system ado msado15 dll rename namespace ADOBS rename EOF adoEOF using namespace ADOBS 程序中 using namespace std 指示 ADO 对象不使用名称空间 本系统中使用了名 称空间且使用 rename namespace ADOBS rename EOF adoEOF 将 ADO 中的 EOF 文件结束 更名为 adoEOF 以避免与定义了自己的 EOF 的其他库冲突 3 利用智能指针进行数据库操作 在 MainFrm 中定义两个 ADO 智能指针类实例 BOOL ADOFLAG 数据库连接标识 连接 TRUE 断开 FALSE ConnectionPtr m pCon ADO 连接对象 RecordsetPtr m pRs m pRs1 ADO 记录集对象 CString strsql SQL 语句 ADO 库包含三个智能指针 ConnectionPtr CommandPtr 和 RecordsetPtr ConnectionPtr 通常被用来创建一个数据连接或执行一条不返回任何结果的 SQL 语句 22 如一个存储过程 CommandPtr 返回一个记录集 它提供了一种简单的方法来执行 返回记录集的存储过程和 SQL 语句 在使用 CommandPtr 接口时 可以利用全局 ConnectionPtr 接口 也可以在 CommandPtr 接口里直接使用连接串 RecordsetPtr 是一个记录集对象 与以上两种对象相比 它对记录集提供了更多的控制功能 如记 录锁定 游标控制等 在 CMainFrame AdoInit 中加入以下代码 void CMainFrame AdoInit 先释放未关闭的结果集和连接 if m pRs NULL if m pRs State adStateClosed m pRs Close m pRs Release if m pRs1 NULL if m pRs1 State adStateClosed m pRs1 Close m pRs1 Release if m pCon NULL if m pCon State 23 m pCon Close m pCon Release CAaaApp pApp CAaaApp AfxGetApp 建立连接后面直接利用了连接对象的 Execute 方法执行 SQL 命令 try m pCon CreateInstance uuidof Connection m pCon CursorLocation adUseClient m pCon CreateInstance ADODB Connection m pCon ConnectionString bstr t pApp strAdoConn m pCon ConnectionString Provider SQLOLEDB 1 Persist Security Info False User ID sa Initial Catalog StorageManage m pCon Open 1 m pRs CreateInstance uuidof Recordset m pRs MarshalOptions adMarshalAll m pRs1 CreateInstance uuidof Recordset m pcom CreateInstance ADODB Command ADOFLAG TRUE catch com error 异常处理 if ADOFLAG FALSE ADOFLAG TRUE 24 MessageBox 连接数据库错误 错误信息 PostMessage WM CLOSE return catch 异常处理 AfxMessageBox SYS Error return 程序中通过 variant t 和 bstr t 转换 COM 对象和 C 类型的数据 variant t 类 封装了 OLE 自治 VARIANT 数据类型 在 C 中使用 variant t 类要比直接使用 VARIANT 数据类型容易得多 4 2 系统界面设计 4 2 1 系统主界面 系统主界面主要是用户成功登录库存管理系统的界面 它完整的显示了系统的所有 功能 指示用户如何操作 是一个即美观又方便操作的界面 是该系统的预览 系统 主界面如图 4 1 所示 25 图 4 1 系统主界面 4 2 2 系统登陆界面 系统登陆界面主要用于登录库存管理系统的用户进行安全检查 以防非法用户进入 该系统 只有合法的用户才可以登录 同时根据操作员的不同给予相应的操作权限 验证操作员及其密码主要是通过数据表 tb operator 的查询 结合 if 语句判断用户选定 的操作及其输入的密码是否符合数据库中的操作员和密码 如果符合则允许登录 并 给予响应的权限 库存管理系统的登录界面如图 4 2 所示 图 4 2 系统登陆界 26 4 2 3 基本信息管理界面 基本信息管理界面包括操作员 商品信息 库存信息和供应商信息 4 个属性页 可 以对操作员 商品信息 库存信息和供应商信息进行增加 修改 查询 删除 和逐 条信息的查看 库存管理系统的基本信息管理界面如图 4 3 所示 图 4 3 基本信息管理界面 4 2 4 入库管理界面 商品的入库管理主要实现商品入库信息的登记 生成入库票号 修改 增加 商品库存的功能 在录入入库信息时 为方便用户录入数据 还提供了一些辅助功能 例如 在录入供应商信息时 按键 会列表的形式显示所有供应商信息供 用户选择 在录入商品信息时 可以按商品编号 商品名称 助记码进行匹配查询 以列表形式显示商品信息 库存管理系统的商品入库管理界面如图 4 4 所示 27 图 4 4 入库管理界面 4 2 5 库存管理界面 库存管理主要实现商品库存盘点打印 库存盘点 库存调拨 商品出库管理 库存 上下限管理功能 在企业中 库存管理员会定期对商品进行盘点 以确定商品是否缺少 在库存管理 系统中 库存盘店是对计算机中原始商品数量进行修改 以使其与实际商品数量一致 此外 还可以记录原始商品数量与实际商品数量存在差距的原因 即由于何种原因导 致实际的商品数量与原始数据不符 并针对商品数量减少的情况 对仓库管理人员进 行处罚 库存管理的库存管理界面如图 4 5 所示 28 图 4 5 库存管理界面 4 2 6 查询管理界面 入库查询能够按多种方式查询商品的入库信息 仓库管理员能够根据这些历史入库 信息制定采购计划 库存管理的查询管理界面如图 4 6 所示 29 图 4 6 查询管理界面 4 3 系统主要功能实现 主要功能点的设计与实现是指对一些比较重要或者关键的功能点的具体实现方法和 思想的描述 下面就几个部分重点介绍 4 3 1 公共模块 为了节省系统资源 实现代码重用 我在该系统中新建一个 Modulel 模块 就本系 统而言 该模块主要用于公共数据库的连接 CTabSheet 类的创建与代码如下 1 定义 5 个成员变量 代码如下 LPCTSTR m Title MAXPAGE 存储标签控件中所有窗口的标题 UINT m IDD MAXPAGE 存储标签控件中所有窗口的 ID CDialog m pPages MAXPAGE 存储标签控件中所有的窗口指针 int m nNumOfPages 记录标签控件中标签的页数 30 int m nCurrentPage 记录标签控件中的当前页面索引 2 将窗口添加到标签页 其实现代码如下 BOOL CTabSheet AddPage LPCTSTR title CDialog pDialog UINT ID if MAXPAGE m nNumOfPages return FALSE m nNumOfPages m pPages m nNumOfPages 1 pDialog 保存窗口指针 m IDD m nNumOfPages 1 ID 保存窗口 ID m Title m nNumOfPages 1 title 保存窗口标题 return TRUE 3 添加 Show 方法 该方法用于创建标签页面 显示所有窗口 其实现代码如下 void CTabSheet Show for int i 0 i Create m IDD i this 创建页面窗口 InsertItem i m Title i 设置页面标题 m pPages 0 ShowWindow SW SHOW 显示第一个页面窗口 for i 1 i ShowWindow SW HIDE SetRect 设置窗口显示区域 4 添加 Show int 方法 该方法显示某个标签页面中的窗口 其实现代码如下 void CTabSheet Show int n 31 for int i 0 i Create m IDD i this 创建页面窗口 InsertItem i m Title i 设置页面标题 for i 0 i ShowWindow SW HIDE 隐藏所有页面窗口 m pPages n ShowWindow SW SHOW 显示指定的窗口 SetRect n 设置指定窗口的现实区域 SetCurSel n 设置指定页面为当前页面 显示该页面中的窗口 4 3 2 主窗体 为了设计一个有特色的菜单 本系统从 CMenu 类中派生了一个 CMyCoolMenu 类 并 改写了父类的 DrawItem MeasureItem 方法 下面是 CmyCoolMenu 类的实现 1 定义 3 个成员变量 代码如下 class CMenuItemContext public CMenuItemContext virtual CMenuItemContext public UINT U icon 菜单图标索引 int nMenuID 2 顶层菜单条 1 弹出菜单 0 分隔条 0 一般的菜单 CString strText 菜单标题 2 定义 4 个成员变量 代码如下 CMenuItemContext lpMenu 100 32 int index CUIntArray m menuIDs store the menu ids CImageList m ImageList store the menu icons 3 改写 CmyCoolMenu 类的 MeasureItem LPMEASUREITEMSTRUCT lpMIS 方 法 其代码如下 函 数 名 MeasureItem 作 用 设置每一项的风格等 形 参 数 LPMEASUREITEMSTRUCT lpMIS 要用到的结构 返 回 值 NULL voidCMyCoolMenu MeasureItem LPMEASUREITEMSTRUCT lpMIS lpMIS itemWidth 130 lpMIS itemHeight 26 UINT nMenuID CMenuItemContext lpMIS itemData nMenuID switch nMenuID case 2 2 顶层菜单条 lpMIS itemWidth CMenuItemContext lpMIS itemData strText GetLength 5 break case 1 1 弹出菜单 lpMIS itemWidth CMenuItemContext lpMIS itemData strText GetLength 10 break case 0 0 分隔条 lpMIS itemHeight 10 33 break default 0 一般的菜单 break 4 添加 AttachMenu 方法 根据菜单句柄加载菜单资源 并确定菜单项的属性 其 实现代码如下 函 数 名 AttachMenu 作 用 将当前窗口的菜单与我的菜单关联 形 参 数 HMENU hMenu UINT uToolBarID CSize sz 返 回 值 BOOL dndn 成功时返回真 失败时出错 BOOL CMyCoolMenu AttachMenu HMENU hMenu UINT uToolBarID CSize sz Attach hMenu ChangeMenuStyle hMenu TRUE GetSafeHmenu return TRUE 5 添加 ChangeMenuStyle 方法 从菜单资源中确定菜单项的属性 参数 bTop 标 识菜单项是否为顶层菜单 其实现代码如下 函 数 名 ChangeMenuStyle 作 用 改变主菜单的风格 形 参 数 HMENU hMenu BOOL bTop 返 回 值 BOOL dndn 成功时返回真 失败时出错 BOOL CMyCoolMenu ChangeMenuStyle HMENU hMenu BOOL bTop FALSE 34 CMenu pMenu CMenu FromHandle hMenu if pMenu NULL for UINT i 0 i GetMenuItemCount i lpMenu index nMenuID pMenu GetMenuItemID i if lpMenu index nMenuID GetMenuString i lpMenu index strText MF BYPOSITION pMenu ModifyMenu i MF OWNERDRAW MF BYPOSITION MF STRING MF BYPOSITION lpMenu index nMenuID LPCTSTR CMenu pSubMenu pMenu GetSubMenu i if pSubMenu index 1 if pSubMenu ChangeMenuStyle pSubMenu GetSafeHmenu 35 return TRUE 6 改写菜单项的 DrawItem 方法 绘制菜单 其实现代码如下 函 数 名 DrawItem 作 用 分开画每一菜单项 形 参 数 LPDRAWITEMSTRUCT lpDIS 菜单上下文 返 回 值 NULL voidCMyCoolMenu DrawItem LPDRAWITEMSTRUCT lpDIS CDC pDC CDC FromHandle lpDIS hDC 获得设备上下文 VERIFY pDC pDC SetBkMode TRANSPARENT 设置背景透明 CRect rcItem lpDIS rcItem 获得菜单项区域 UINT uState lpDIS itemState 获得菜单项状态 if lpDIS itemData NULL return 获得菜单文本 CString strText CMenuItemContext lpDIS itemData strText 获得菜单 ID UINT nMenuID CMenuItemContext lpDI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论