仓库管理系统毕业论文

上传人:仙*** 文档编号:146643350 上传时间:2022-08-31 格式:DOC 页数:35 大小:1.81MB
收藏 版权申诉 举报 下载
仓库管理系统毕业论文_第1页
第1页 / 共35页
仓库管理系统毕业论文_第2页
第2页 / 共35页
仓库管理系统毕业论文_第3页
第3页 / 共35页
资源描述:

《仓库管理系统毕业论文》由会员分享,可在线阅读,更多相关《仓库管理系统毕业论文(35页珍藏版)》请在装配图网上搜索。

1、 仓库管理系统的设计与实现-(数据库设计和信息,入库管理部分)摘要仓库管理系统是为了实现企业产品管理的系统化、规范化和自动化,从而提高企业管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成仓库管理提供了强有力的工具和管理手段。仓库管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了仓库管理的要求。整个系统由基本信息管理、入库管理、库存管理、查询管理等模块组成。本系统是在以SQL SERVER 2000作为后台数据库,以Visual C+ 6.0为编程语言来开发的。仓库管理系

2、统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了仓库管理计算机化。本文重点讨论数据库的设计,应用和基本信息管理模块,入库管理模块的设计与实现。关键字:仓库;管理系统;数据库The design and realization of the Administrative System Of The Warehouse (The design of the database and information management and entering warehouse management )AbstractThe administrative system of the wa

3、rehouse is designed for realizing the systematization , standardization and automization of enterprises products management and improving efficiency of enterprises management. It completely replaces the working way of artificial management originally , prevents from various kinds of mistakes because

4、 of administrative staff neglect and the quality problem of management and offeres powerful tool and management way to complet storehouse management for prompt , accurate , high-efficient . The administrative system of the warehouse is a medium and small-scale database management system,it has not o

5、nly beautiful interface, but also the high security and the simply operation , and meet the demand for storehouse management basically. the whole system is consist of molds of basic information management, entering warehouse, storage management and inquiry management,etc.The Warehouse administrative

6、 system is designed with regarding SQL SERVER 2000 as the backstage database and regarding Visual C+ 6.0 as programming language . The administrative system is effectual, the high data accuracy during the course of operating , improves working efficiency and realizes computerization for storehouse m

7、anagement at the same time . This thesis focuses on the research of data bases design, application, management of basic information as well as the design and realize of the entering warehouse management.Key word: The Warehouse ;Administrative System; The Database仓库管理系统的设计与实现-(数据库设计和信息,入库管理部分)目 录第一章

8、仓库管理系统概述1第二章 系统可行性分析22.1课题研究现状22.2 需求分析22.2.1 可行性需求分析22.2.2 业务需求分析32.2.3 功能需求分析4第三章 系统设计5第四章 数据库设计方案64.1数据库需求分析64.2数据库概念模型设计64.3数据库逻辑模型设计84.4具体逻辑模型设计104.5物理结构设计114.6 数据库连接实现15第五章 系统主窗体设计17第六章 基本信息管理模块设计19第七章 入库管理模块设计237.1 商品入库237.2 商品退货26第八章 设计总结29参考文献30致 谢3129第一章 仓库管理系统概述在市场竞争的微利时代,建立科学,规范,高效管理制度成为

9、了企业管理的当务之急.一个企业在市场中是否具有强有力的竞争力,除了要看企业的人才,资金,技术,产品之外,更重要的一项,就是要看企业是否有一个良好的管理体制.在企业管理工作中,仓库管理工作更是管理中的重中之重.通过对企业仓库信息的管理与统计,为企业积累真实,有效的数据,通过对这些数据的分析与研究,对企业各方面做出相应的调整,以提高企业的管理工作效率,使企业走上良性发展道路.进一步促进仓管部门规范化管理,提高管理效率和水平;能够方便快捷地将原来分散的货物信息进行有机地组织和管理,及时提供可靠信息,为企业的科学化决策提供重要依据.本系统专为企业仓库管理而设计的系统,可以直接把它运作在企业的内部服务器

10、上,帮助管理企业和实现真正的库存管理无纸化和自动化。仓库管理系统柔合了基本信息管理,入库管理,库存管理,库存查询的功能,同时还具备了不同用户权限设定的功能,该系统一般都是操作简单,功能强大,易于安装维护和升级,同时加上人性化的设计,能为库存管理带来极大的方便和效率的提高。这里来讨论一下管理信息系统的相关介绍,管理信息系统是一个利用计算机软硬件资源,手工作业,分析、计划、控制和决策模型以及数据库的人-机系统。它能提供信息支持企业或组织的运行、管理和决策功能。管理信息系统在企业中的应用存在三个要素,这就是人、计算机和数据。在计算机软件技术中,人机界面已经发展成为一个重要的分支。MIS人机界面设计一

11、般遵循以下一些基本原则:以通信功能作为界面设计的核心,界面必须始终一致,界面必须使用户随时掌握任务的进展情况,界面必须能够提供帮助,界面友好、使用方便,输入画面尽可能接近实际,具有较强的容错功能管理信息系统的开发过程一般包括系统开发准备、系统调查、系统分析、系统设计、系统实现、系统转换、系统运行与维护、系统评价等步骤。根据开发系统的大小、复杂、投入、方式、方法等因素的不同,各步骤的要求和内容也不同,用户需要根据实际情况进行取舍和计划。在这里,系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段,就像汽车的维护工作好可以延长汽车的使用寿命和提高其使用效率一样,系统维护工作

12、的好坏可以决定系统的生命周期的长短和使用效果。第二章 系统可行性分析2.1课题研究现状库存管理对企业来说是一项繁琐复杂的工作,每天要处理大量的单据数据。为及时结清每笔业务,盘点库存和货物流动情况,保证企业生产用料以及货物安全,库管人员要花费大量人力物力和时间来作数据记录统计工作。 在世界发达国家,库存管理的计算机化水平已经很高了,尽管我国的生产企业在这方面也有了很强的意识和长足的进步,但仍存在这样、那样的一些问题。表现之一:有的企业单位的库存管理部分目前仍为手工、半手工操作。表现之二:有的单位的库存管理部已上了微机,但对微机的利用效率极低,有的在用它打游戏,有的仅把它当计算器或打字机来用。表现

13、之三:有的企业单位既有了微机同时也有了库存管理软件,但硬件上去了,软件上不去。国内其他相似的仓库管理系统例如用友U8的进销存管理系统,基本的功能都已经可以实现了,但是使用上也有点复杂,本系统是把主要的功能都实现出来。本系统是实现了,结合了手动加自动的方式实现数据录入与处理的方便和智能化,界面采用自定义工具栏和菜单方式使得程序界面更加美观和个性化。融合先进的管理理念,创新的关联技术:使得模块关联、更好的交换信息;强大的工作流引擎应用于各个模块。模块本身就运用目前比较流行的SQL2000 server 和 Visual C+ 6.0技术,紧跟潮流又不拘于现状。在模块开发过程中大量使用集合的思想,实

14、现代码的简洁和易读性,能为以后的代码调试和修改升级带来方便。2.2 需求分析2.2.1 可行性需求分析本设计从一下三个方面进行可行性研究:1. 技术可行性。本设计“仓库管理系统”是为企业仓库管理人员开发的。鉴于本人已经有了Visual C+ 6.0和Sql Server 2000开发基础,而且通过2年的学习和实践,对开发管理信息系统又有了新的认识和提高,使自己在开发管理信息系统方面的技术更加成熟。由于本设计最重要体现的是实用性,所以,通过大量的社会调查和分析,结合自己现有的技术水平加上导师的指导,还是能按期完成本毕业设计。2. 经济可行性。成本方面:由于本毕业设计属于计算机科学(本科)教学的最

15、后一个环节,所以人力消耗免费,资源学校提供,指导老师义务指导。所以成本计算只需计算开发期间开发者的生活消费,学校资源的消耗,所以开发本软件的成本是非常低的。3. 操作可行性。本软件是为企业仓库的管理者开发的,所有本软件的用户对象是企业仓库的工作人员,由于本软件要设计成友好的界面,写出详细的使用说明,用户只需懂得简单的计算机操作知识,就能自由应用本软件。2.2.2 业务需求分析操作员进入登录界面,填入用户名和密码,如果都正确就自动转到主界面。操作员可以通过如下方式进入相应的功能界面:工具栏;菜单栏和左边的树型导航条。进入基本信息管理模块,可以对操作员信息,商品信息,库存信息和供应商信息进行添加,

16、修改,查询,删除操作。进入入库管理模块,可以增加入库信息和退货信息,加上智能窗口弹出,操作方便,可以逼真得模仿真实操作流程。在此值得一提的是,由于本系统是分权限的,一般用户只能使用本系统的一部分功能,所以在一般用户里,系统所给出的功能也相当有限,以下图2.1也恰恰说明了这一点:图2.1 仓库管理系统业务流程图2.2.3 功能需求分析系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本仓库管理系统需要完成功能主要有:基本信息管理:包括操作员管理,商品信息管理,库存信息管理,供应商信息管理入库管理:包括商品入库,入库退货库存管理:包括库存商品

17、打印,库存盘点,库存调拨,库存上下限管理查询管理:包括商品入库查询,入库退货查询,报损|报益查询这4大功能已经可以完成了企业的仓库管理的业务流程了,具有很强的易操作性和易维护性。第三章 系统设计仓库管理主要是企业各种商品的管理。进货时经检查合同确认为有效托收后,进行验收入库,填写入库单,进行入库登记。企业各个部门根据需要提出产品请求,计划员根据整个企业的需求开出产品出库单,仓库管理人员根据出库单核对发放产品。仓库管理的特点是信息处理量比较大,所管理的产品种类繁多,而且由于入库单、出库单、盘点单等单据发生量特别大,关联信息多,查询和统计的方式各不相同。因此在管理上实现起来有一定的困难。在管理的过

18、程中经常会出现信息的重复传递;单据、报表种类繁多,各个部门管理规格不统一等问题。 在本系统的设计过程中,为了克服这些困难,满足计算机管理工作的需要,我们采取了下面的一些原则。统一各种原始单据的格式,统一报表的格式。删除不必要的管理冗余,实现管理规范化、科学化。程序代码标准化,软件统一化,确保软件的可维护性和实用性。界面尽量简单化,做到实用、方便,尽量满足企业中不同层次员工的需要。建立操作日志,系统自动记录所进行和各种操作图3.1显示了本系统的主要功能结构仓库管理系统基本信息管 理库存管理查询管理入库管理操作员管理商品信息管理库存信息管理供应商信息管理商品入库入库退货商品入库查询入库退货查询报损

19、|报益查询库存商品打印库存盘点库存调拨库存上下限管理图3.1 系统功能模块图第四章 数据库设计方案4.1数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查有关仓库管理信息需求的基础上,得到图4.1所示的本系统所处理的数据流程。仓库现有库存汇总、处理各种单据产品入库产品调拨报表打印图4.1 系统数据流程图4.2数据库概念模型设计根据上面的设计规划出以下E-R图,如图4.2,4.3以及图4.4的实体间联系图:图4.2 出库管理相

20、关E-R图图4.3 入库管理相关E-R图现有库存入库调拨报损|报益盘点退货 图4.4 实体与实体间的关系把E-R图转换为关系模型如下(黑色字体为主键,下划线为外键):tb_operator(name,password,level)tb_providerinfo(providername,artificialperson,principal,phone,addr,web,e_mail)tb_check_sub(checked,merchandiseid,sum)tb_check_main(checked,storage,principal,checktime,checkspec,memo)tb_

21、storageinfo(storagename)tb_instock_sub(instockid,merchandiseID,unitPrice,numbers,rebate,paymoney,stockname)tb_cancelinstock_sub(CancelID,merchandiseID,unitPrice,numbers,rebate,paymoney,stockname)tb_cancelinstock_main(CancelID,provider,operator,rebate,sumtotal,paymoney,factmoney,intime)tb_merchandise

22、storage(merchandiseID,storagename,Storagenum,upperlimit,lowerlimit)tb_instore_main(ID,provider,operator,rebate,sumtotal,paymoney,factmoney,intime)tb_merchandiseinfo(ID,name,spec,shortname,defaultprice,manufacturer,memo)然后根据关系模型,在SQL 2000 中设计出表间的关系图,如图4.5所示: 图4.5 系统数据库关系图4.3数据库逻辑模型设计在介绍本系统的逻辑模型设计过程之前

23、,我们先来看看下面图4.6和图4.7所示:应用1应用2应用3应用4子模式1子模式2子模式3213(全局逻辑) 模式物理模式OS数据库DBMS用户外模式外模式/模式映象模式模式/内模式映象内模式图4.6 数据库的三级模式和二级映象用户3用户2用户1视图1视图2视图3视图4基表2基表1基表3基表4基表5基表6外模式模式存储文件2存储文件3存储文件4存储文件5存储分区1存储分区2存储分区3外模式图4.7 SQL数据库对3级模式的支持存储文件6存储文件1仔细对上面两图分析可以得出从基本项构思实体联系模型四条原则:(如下:)原则1:(确定实体):能独立存在的事物,例如人、物、事、地、团体、机构、活动、事

24、项等等,在其有多个由基本项描述的特性需要关注时,就应把它作为实体;原则2:(确定联系):两个或多个实体间的关联与结合,如主管,从属,组成,占有,作用,配合,协同等等,当需要予以关注时,应作为联系。联系通常是某类行为动作,ERD中关注的是其状态与结果而非其过程;原则3:(确定属性):实体的属性是实体的本质特征。实体应有标识属性(能把不同个体区分开来的属性组),并指定其中一个作为主标识;原则4:(一事一地):信息分析中得到的基本项要在且仅在实体联系图中的一个地方作为属性出现。4.4具体逻辑模型设计具体逻辑模型设计就是把一般关系模型转换成具体DBMS支持的逻辑结构。随着业务由人工处理转变到以计算机系

25、统及其网络为主要工具的人机结合处理,特别是数据从人工资料转变到以计算机系统中的数据库存储为主,计算机与人的互补性必然带来业务流程的质的变化。例如,计算机不能自动地象人那样发现并更正输入数据中的错误,所以要把好入口关,加强数据的输入校验;但只要输入数据是正确的,程序没有错误,计算机处理数据时就不会象人那样因为疏忽、疲劳、大意而出现错误,所以不需要象人工处理那样对中间结果不断地进行核对;等等。在数据库具体逻辑结构设计基本完成后,就必须考虑以数据库为中心的人机结合的新的业务流程及其所带来的影响 现在需要将在上面的数据库概念结构转化为Sql Server 2000 数据库系统所支持的实际数据模型,也就

26、是数据库的逻辑结构。仓库管理信息系统数据库中各个表的设计结果如下面表格所示。每个表所示在数据库中的一个表。我根据上面所说的四条原则,按照如下方法设计数据库。本系统使用了11张数据表,分别为操作员信息表(tb_operator),供应商信息表(tb_providerinfo),库存盘点明细表(tb_check_sub),库存盘点主表(tb_check_main),库存信息表(tb_storageinfo),入库明细表(tb_instock_sub),入库退货明细表(tb_cancelinstrock_sub),入库退货主表(tb_cancelinstock_main),商品库存表(tb_merc

27、handisestoage),商品入库主表(tb_instore_main),商品信息表(tb_merchandiseinfo)。表一 库存信息表(tb_storageinfo) 表二 操作员信息表(tb_operator) 表三 供应商信息表(tb_providerinfo) 表四 商品信息表(tb_merchandiseinfo) 表五 商品库存表(tb_merchandisestoage) 表六 商品入库主表(tb_instore_main) 表七 入库明细表(tb_instock_sub) 表八 库存盘点主表(tb_check_main) 表九 入库退货明细表(tb_cancelins

28、trock_sub) 表十 入库退货主表(tb_cancelinstock_main) 表十一 库存盘点明细表(tb_check_sub)4.5物理结构设计要实现物理结构设计,首先要了解物理结构设计的大体情况和一般方法,下面的两段文字详细介绍了数据库的物理结构设计。数据库实际是存储在物理设备上的DB在物理设备上的存储结构与存取方法称为DB的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是DB的物理设计。关系数据库中,一个关系通常就对应一个操作系统的数据文件存储,一般不必太多考虑其存储结构。存取方法是快速存取DB中数据的技术。DBMS一般都

29、提供多种存取方法。常用的存取方法有三类:第一类是索引方法,目前主要是B+树索引方法;第二类是聚簇(Cluster)方法;第三类是HASH方法。B+树索引是DB中的经典存取方法,使用最普遍。在关系数据模型中,特别强调索引存取方法的选择:根据应用要求确定对关系的哪些属性建立索引、哪些属性建立组合索引、哪些索引要设计为唯一索引等。在VFP中,主索引是通过数据库表结构定义或修改中指定主码来建立与维护的;候选索引、唯一索引、普通索引可以通过索引命令建立与管理的。在物理设计中,通过在逻辑设计中得到的关系框架下增加索引行来指明:主码行中指定的一个字段为简单主码,或指定多个字段组成复合主码,要由其组成主索引表

30、达式在数据库表结构定义中建立主索引;外码行中的单外码字段上直接建立外码普通索引,用同号数字标注的多个字段组成复合外码,这些字段组成索引表达式建立外码普通索引;索引行中,单字段索引可直接在其中标明索引类型,多字段复合索引则用同一数字标注,然后在说明中的索引类中用同一编号来说明该复合索引的类型与索引表达式。必须考虑数据库的安全性与完整性设计;为了进行本系统数据库的安全性与完整性设计,下面先分别给出数据库的安全性与完整性设计的一般方法:1DB安全性设计 DB安全性设计主要在应用程序模块设计中结合完成。应包括如下几方面:(1)用户标识与鉴别(Identification & Authenticatio

31、n):它是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用。为了进一步核实用户,系统常常要求用户输入口令(Password)。在用户管理模块中定义,在主控模块的欢迎子模块中执行。(2)存取控制:存取控制机制主要包括两部分: 定义用户权限:用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称作安全规则或授权规则。 合法权限检查:每当用户发出存取DB的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),

32、DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行上述操作。用户权限定义和合法权检查机制一起组成了DBMS的安全子系统。存取控制又可分为自主存取控制(DAC)和强制存取控制(MAC)两种方法。 自主存取控制方法:在此方法中,用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取权限转授给其他用户。因此自主存取控制非常灵活。大型DBMS几乎都支持自主存取控制,目前的SQL标准也对它提供支持,这主要是通过SQL的GRANT语句和REVOKE语句来实现。 强制存取控制方法:在此方法中,每一个数据对象被

33、标以一定的密级,每一个用户也被授予某一级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。因此,强制存取控制相对比较严格。它适用于那些对数据有严格而固定密级分类的部门。如政府部门或军事部门。在强制存取控制中,DBMS所管理的全部实体被分为主体和客体两大类。主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和客体,DBMS为它们每个实例指派一个敏感度标记(Label)。敏感度标记被分成若干级别,如绝密(Top Secret)、机密(Secret)、可信(Confidenti

34、al)、公开(Public)等。主体的敏感度标记称为许可证级别(Clearance Level),客体的敏感度标志称为密级(Classification Level)。强制存取控制机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体。(3)视图机制:进行存取权限控制时可以为不同的用户定义不同的视图(View),把数据对象限制在一定的范围内,即通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。例如,用户只能按它的子模式中所包含的记录型存取记录和数据项,企图存取子模式中未定义的数据都是非法操作,DBMS拒绝执行并提出警告。另外,

35、在子模式已定义的数据项目中,数据项目的操作方式有所区分,有的只能读,有的可更新,有的可删除,有的可追加,当企图更新一个只读的数据项目时,DBMS会拒绝执行并提出警告。(4)数据加密:数据加密是防止DB中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(术语为明文,Plain Text)变换为不可直接识别的格式(术语为密文,Cipher Text),从而使得不知道解密算法的人无法获知数据的内容。它适合高度敏感性数据加密要求,例如财务数据、军事数据、国家机密等。(5)审计(Audit):任何系统的安全保护措施都不一定是绝对安全的。蓄意盗窃、破坏数据的人总是想方设法打破控制

36、。审计功能把用户对DB的所有操作自动记录下来放入审计日志(Audit Log)中。DB管理员可以利用审计跟踪的信息,重现导致DB现有状况的一系列事件,找出非法存取数据的人、时间和内容等。2DB完整性设计DB的完整性是指数据的正确性和相容性,在数据库设计中要根据数据库中存储的数据的语义信息,结合具体DBMS确定其各个级别的各种完整性要求。 (1)字段(属性)级的完整性:通过在数据库表结构中增加字段完整性行,可以在该行的有字段完整性要求的字段所对应的单元格中指明“非空”来规定该字段不能取空值;标注、等标号,再在框架下部说明中的字段完整性说明中对相应标号列出具体要求。(2)记录(元组)级完整性:在框

37、架下部说明中的记录完整性说明中列出具体要求。(3)表(关系)级完整性:包括函数依赖约束、实体完整性约束、统计约束。函数依赖约束主要是在数据库设计中通过规范化分解到BCNF或3NF,然后在关系模式定义中确定主码,再由DBMS保证主码取值不能重复来保证,在优化中降低了关系的规范化程度后,就一定要由DBA或应用程序员设计输入程序与修改程序(而不是DBMS提供的系统输入工具)来完成数据的输入与修改,这些程序中要有保证函数依赖约束的能力。实体完整性是指主码不能取空值,Sql Server 2000是在字段设计中指定的。统计约束是一个字段值与关系中多个记录的多个字段的统计值之间要满足的条件,这也是通过专门

38、设计的输入或修改应用程序来控制的。后面两种约束要在表框架的完整性说明的表级完整性中具体规定。(4)参照完整性(RI):两个不同的数据库表(关系)的记录(元组)间的对应关系,主要指在建立父表主码到子表外码的永久关联的基础上,确定子表记录与相关联的父表记录之间的对应规则。设计参照完整性首先要画出数据库表间的永久关联图(如图4.8所示)商品入库主表供应商信息表入库明细表操作员信息表1:nn:n1:n 图4.8 入库关联图下面来讨论仓库管理系统的安全性设计及完整性设计安全性设计:DB安全性设计:本系统的SQL数据库连接字段信息放在了login.ini这个文件,修改起来十分方便,到时可以将这个文件放到远

39、程服务器上,这样就可以避免了跟本程序放到同一个目录下被用户发现,加强了安全性。此系统的敏感度标记为:可信视图机制:通过设定用户登录权限来限制用户对数据的修改与否,管理员拥有本系统的一切功能和对数据库的一切操作,而其他用户只能对数据进行相应的修改和添加,不能删除数据。其中操作员的级别分为:1-4级Level 1:最低权限,不能删除,修改功能仅限制在修改操作员模块上Level 2:不能删除记录,增加功能仅限制在增加操作员模块上Level 3:不能删除记录,其他功能可以实现Level 4:管理员级别,可以进行所有操作完整性设计:字段级的完整性:本系统的数据表的相关字段在对应的字段完整性的单元格里指明

40、“非空”来规定该字段不能取空值,例如:操作员名称、密码、供应商名称和仓库名称等;表级完整性:本系统的SQL数据库设置了主码不能为空值,例如:盘点单号、入库单号,商品编号等,所以实现了实体完整性。本系统数据表满足到3NF范式。4.6 数据库连接实现本系统数据库连接采用读取.ini文件方式连接,在login.ini文件里面有连接数据库服务器名,数据库名称,sql用户名,密码这几个字段,然后通过在CApp程序中的InitInstance函数主要加入如下代码:GetPrivateProfileString(OPTION, Server, , m_pzServer, sizeof(m_pzServer)

41、, ./Login.ini) ;GetPrivateProfileString(OPTION, DataBase, , m_pzDataBase, sizeof(m_pzDataBase), ./Login.ini) ;GetPrivateProfileString(OPTION, UserId, , m_pzUser, sizeof(m_pzUser), ./Login.ini) ;GetPrivateProfileString(OPTION, PassWord, , m_pzPassWord, sizeof(m_pzPassWord), ./Login.ini) ;strAdoConn.F

42、ormat(driver=SQL Server;SERVER=%s;UID=%s;PWD=%s;DATABASE=%s,m_pzServer, m_pzUser, m_pzPassWord, m_pzDataBase);记录集的连接是通过在CMainFrame的OnTimer函数加上如下代码:m_pCon.CreateInstance(ADODB.Connection);m_pCon-ConnectionString = (_bstr_t)pApp-strAdoConn;m_pCon-Open(,-1);m_pRs.CreateInstance(ADODB.Connection);该连接方式使

43、得每隔一秒系统就调用连接数据库记录集一次,实现每时每刻都处于准备状态,并设置m_pCon,m_pRs和m_pRs1为全局变量,使得其他窗口都可以方便得调用这几个变量,不用每次都重新加载数据库连接。第五章 系统主窗体设计该系统主窗体采用分隔条CSplitter类把CMainFrame主框架分割成2列,实现分割条分割主框架的方法为:修改CMainFrame类的OnCreateClient函数为如下代码if (!m_wndSplitter.CreateStatic(this, 1, 2) /分为一行两列return FALSE;if (!m_wndSplitter.CreateView(0, 0,

44、RUNTIME_CLASS(CLeftView), CSize(200, 100), pContext) |!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CAaaView), CSize(100, 100), pContext)左边列为重载CTreeViewl类的CLeftView类,在里面加入了各个功能快捷项为树型图的各个子项,右边列为View视图,在里面加入背景图片。树型各个子项的实现方法为:m_img.Add(AfxGetApp()-LoadIcon(IDI_ICON6);/0ctr.SetImageList(&m_img,TVSIL_NOR

45、MAL);root=ctr.InsertItem(仓库管理,0,0); /根节点CString name4=基本信息管理, 入库管理, 库存管理, 查询管理; /二级节点CString strThree45 = 操作员管理, 商品信息管理, 库存信息管理, 供应商信息管理, 商品入库, 入库退货, 库存商品打印, 库存盘点, 库存调拨, 库存上下限管理,商品入库查询, 入库退货查询, 报损|报益查询;for(int i=0;i4;i+)parent=ctr.InsertItem(namei,i+1,i+1,root);for(int m=0;mGetDC();memdc.CreateCompa

46、tibleDC(pDC);memdc.SelectObject(&bitmap);pDC-BitBlt(0,0,rc.Width(),rc.Height(),&memdc,0,0,SRCCOPY);改系统主窗体采用自定义菜单和自定义工具栏方式,使得整个程序界面变得美观。使用CMyCoolMenu类重载CMenu类,在里面重新定义了很多种漂亮的菜单背景效果。工具栏使用CReBar类为底层,在CReBar类上面加载CToolBar类,再在CToolBar类加载冷,热图标和资源ID号,这样可以做出带有背景图片的工具栏效果。根据以上的方法,我们可以设计出如图5.1的系统主窗口,该界面符合用户的要求,即

47、能够方便,快捷地找到需要进行的操作,而且界面又简单,漂亮。图5.1 系统主界面第六章 基本信息管理模块设计基本信息模块包括操作员管理,商品信息管理,库存信息管理和供应商信息管理几个部分。这几个功能的主窗口都是使用了重载CTabCtrl类的CTabSheet类来加载这四个功能的窗口,CTabSheet类可以实现点击主界面的树型视图的图标可以显示相应的选项框。因为这四个功能的实现差不多,所以介绍其中操作员管理功能就行了。基本信息管理模块采用了动态数组vector变量来实现数组的动态输入,然后把数据库的信息放到动态数组变量里面,到时引用数据库信息只要读入动态数组变量就可以了,这样可以加快系统的运行速

48、度。基本信息管理模块的各个操作数据流程图如图6.1,6.2, 6.4, 6.6所示,操作截图以下给出了。查询记录:主要SQL代码为:strsql.Format(select name as userid, password,level as lev from tb_operator );图6.1 查询记录数据流图增加记录:主要SQL语句为:strsql.Format(insert into tb_operator(name, password, level) values(%s, %s, %d), strName, strPass, iflag)图6.2 增加记录数据流图图6.3 基本信息管理

49、界面修改记录:主要SQL语句为:strsql.Format(update tb_operator set Level = %d, PassWord = %s where name = %s ,iflag, strPass, strDataiDataIndex-1.strOperName)图6.4 修改记录数据流图图6.5修改操作员截图删除记录:主要SQL语句为:strsql.Format(delete tb_operator where name = %s , strName);图6.6 删除记录数据流图图6.7 删除操作员截图其他功能截图如下:图6.8 商品信息管理页面图6.9 库存信息管理

50、页面图6.10 供应商信息管理页面其他操作都跟操作员管理类似,这里不一一举例了。第七章 入库管理模块设计该系统入库管理模块使用了重载CListCtrl类的新类CCustomGrid类来把用户的入库和退货信息显示到列表里面。实现思路如下:在列表中单击鼠标左键,自动获取鼠标在列表里面的行号和列号,然后把编辑框移动并显示到鼠标指向列表所在的该行该列上,输入完信息后,把编辑框里面的数据显示到鼠标指向列表所在的该行该列中。其中要利用到很多捕获鼠标,键盘的动作,并引用指定的函数完成相应的功能。该捕获功能是在PreTranslateMessage函数中定义的。在列表控件上显示编辑框函数如下:void CCu

51、stomGrid:ShowEdit()CRect rect; /记录当前单元格的坐标GetSubItemRect(row,col,LVIR_LABEL,rect);CString str;str = GetItemText(row,col);edit.MoveWindow(rect);edit.SetWindowText(str);edit.ShowWindow(SW_SHOW);edit.SetSel(0,100);edit.SetFocus();edit.SetReadOnly(!showedit);UpdateWindow();把编辑框数据显示到列表格中函数为:void CCustomG

52、rid:DisposeEdit(bool drawed)if (drawed)CString str;edit.GetWindowText(str);SetItemText(row,col,str);edit.ShowWindow(SW_HIDE);Invalidate();7.1 商品入库商品入库管理主要实现商品入库信息的登记,生成入库票号,修改(增加)商品库存的功能。在录入入库信息时,为了方便用户录入数据,还提供了一些辅助功能。例如:在录入供应商信息时,按PageDown键,会以表格的形式显示所有供应商信息供原来用户选择;在录入商品信息时,可以按商品编号,商品名称,助记码进行匹配查询,以列

53、表形式显示商品信息。在截获了编辑框改变时的事件后,接下来的任务是设置查询语句。首先需要确定表格中当前单元格是否处于商品编号列或商品名称列,如果不是,不会进行查询,也不会显示联想录入表格,如果是,进一步判断是商品编号列还是商品名称列方法很简单,因为CCustomGrid类中包含了两个成员变量col和row,根据col便可以确定表格当前列。其主要查询SQL代码为:sql.Format(select * from tb_merchandiseinfo where id like %s% or shortname like %s% ,str,str);sql.Format(select * from

54、tb_merchandiseinfo where name like %s% or shortname like %s%,str,str);添加入库列表信息进数据库的时候,我先在数据库那里定义一个存储过程sp_instore,然后入库函数那里调用该存储过程,就可以生成tb_instore_main表了。数据库还定义了另外2个存储过程,基本功能都差不多,主要是生成主表和生成票号。下面是调用存储过程添加数据到入库主表的主要代码:sql.Format(sp_instore %s,%s,%10.2f,%10.2f,%10.2f,%10.2f,%s,%s,c_provider,c_operator,f_

55、rebate,f_sumtotal,f_paymoney,f_factmoney,c_intime,temp); /调用sp_instore存储过程插入入库明细表:detailsql.Format(insert into tb_instock_sub values (%s,%s,%f,%f,%f,%f,%s),id,c_id,f_price,f_num,f_rebate,f_money,c_storage);之后就是判断商品数量是否查处库存上下限的限制,这里代码不说明了。更新入库主表的总金额,应付款字段:sql.Format(update tb_instore_main set sumtota

56、l=%10.2f,paymoney=%10.2f where ID=%s,total,total,id);图7.1 入库界面图7.2 入库操作成功提示框检验:如图7.1所示,添加入库信息,增加了牛奶这种产品共45个到东仓库和北仓库中,输入完相应的信息后,点击增加按钮,就如图7.2所示,证明操作成功了并生成了退货票号,然后去库存表那里查看,结果发现在北仓库和东仓库中的牛奶数量分别多了13和32,而且在退货主表和退货明细表中也看到了票号EQ20080504024所对应的入库信息,证明操作是成功的,功能是完整实现的。图7.3说明了整个入库管理操作的流程图。图7.3 商品入库流程图:7.2 商品退货商

57、品退货管理主要实现商品退货信息的登记,生成退货票号,修改(增加)商品库存的功能。跟商品入库一样,都采用了可以按PageDown键来显示辅助信息的方便功能,一样都加入了联想录入表格的功能,这里就不重复说了。退货的实现代码大都跟入库差不多,不同的一点是如果是刚刚进货,货还没有放入仓库,就确定新进的商品不符合要求,要退货,这时就直接生成退货表,而不需要更改仓库的库存信息了。图7.4 商品退货截图图7.5 退货操作成功提示:检验:如图7.4所示,添加退货信息,从东仓库和北仓库中填写要退货的牛奶数量共4个,输入完相应的信息后,点击增加按钮,就如图7.5所示,证明操作成功了并生成了退货票号,然后去库存表那

58、里查看,结果发现在北仓库和东仓库中的牛奶数量分别减少了2,而且在退货主表和退货明细表中也看到了票号EQ20080504025所对应的退货信息,证明操作是成功的,功能是完整实现的,而且商品退货功能也同样自动可以判断商品数量是否越界的问题。图7.6 商品退货流程图第八章 设计总结不知不觉就过了大四的最后一个学期了,在这个学期里面,从毕业设计选题到,写任务书,开题报告,收集相关资料及学习到开始实施该系统的设计,我学到了很多很有用的知识。以前对于C+这门语言,自己懂得的不算多,也没有尝试过自己独立去编一个较大的程序,现在通过了许许多多的学习,我对C+也懂得了比较多了。从以前遇到问题就查书,到查阅MSD

59、N和网上搜索相关问题的解决,都使得我自己的自学能力和解决问题的能力都有了一个较大的程度的提高。开始设计该系统的主界面的时候,遇到了很多困难,譬如在设计主界面分割条的时候,经常编译时就出现了errorC2501:GetDocument:missingstorage-classortypespecifiers这个错误,后来经过上网查找问题和解决方法,知道了先把CAaaView定义里面的CAaaDoc* GetDocument()这句注释掉,按F7编译,之后再去掉注释,再编译一次就行了。说实在的,用VC来做界面是需要很多代码和步骤的,不同VB,VB可以在很短时间内做出一个界面,VC就不行了,所以做界

60、面设计这项工作我都要通过2个星期的学习才能够完成。这个系统很多功能都基本能够完成了,以后还可以考虑加入数据库的备份与恢复功能,加入数据库映射管理等功能。通过这次设计,我学会了和别人配合工作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。即将毕业我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,毕业设计对于我们即将离校的同学来说,是离校前很好

61、的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信 在此,感谢广东技术师范学院的老师们对我的谆谆教导!感谢他们给了我这次机会!参考文献1李春葆.Visual C+ 6.0 程序设计例学与实践.清华大学出版社.2006.7.2李伟明,宋坤.Visual C+ 开发技术大全. 人民邮电出版社.2007.4.3第一时间工作室编著.Visual C+ 6.0 程序设计技能百练.中国铁道出版社.2006.7.4孙鑫.VC+深入详解.电子工业出版社.2006.9.5宋坤范,李伟明.Visual C+ 开发经验技巧宝典.人民邮电出版社.2007.11.致 谢在此,我要衷心感谢计算机科学学院的全体

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!