毕业设计(论文)-仓库管理系统之动态菜单设计.doc_第1页
毕业设计(论文)-仓库管理系统之动态菜单设计.doc_第2页
毕业设计(论文)-仓库管理系统之动态菜单设计.doc_第3页
毕业设计(论文)-仓库管理系统之动态菜单设计.doc_第4页
毕业设计(论文)-仓库管理系统之动态菜单设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

仓库管理系统之动态菜单设计目 录一、引言1二、开发环境介绍1(一)C+ Builder 的特性及优点1三、菜单简介4四、设计思想4五、具体设计4(一)数据库设计4(二)建立二叉树61.二叉树的定义62.二叉树的存储结构63.二叉树建立算法7(三)遍历二叉树生成菜单101遍历概念102遍历方案103三种遍历的命名114遍历算法115具体遍历算法实现及菜单生成126菜单项响应事件12总结12致谢12参考书目13 1仓库管理系统之动态菜单设计 摘要 在信息膨胀的现代社会,一个完备的的仓库管理系统对于提高企业的经营效率、加快仓库管理的自动化具有重要的意义。而Borland公司全新推出的C+ Builder具有强大的数据库处理能力,它对目前流行的面向对象的设计方法和C+语言进行了集成,成为当今最热门的开发工具之一。在现代信息系统中,动态菜单在菜单设计中的应用越来越广,本文详细介绍了在C+ Builder中设计仓库管理系统之动态菜单的方法。关键字 数据库、二叉树的建立、二叉树的遍历,添加菜单项一、 引言库存管理是一项非常繁琐复杂的工作,每天要处理大量的单据数据,包括入库、出库、用户管理等多项货物操作流程。为及时结清每笔业务和货物流动,保证企业生产用料以及货物安全,企业要花费大量人力物力和时间来做数据记录及统计工作。因此,为提高库管工作的质量和效率,就必须根据仓库管理的专业特点开发套的仓库管理信息系统,而在仓库管理系统中,菜单管理是必不可少的模块。在现代的信息管理系统中,动态菜单的好处被越来越多的重视,应用也越来越广泛。所谓动态菜单,和其他菜单不同,其是在运行时添加的,这是以前从未出现过的一种新功能。不要将动态菜单和隐藏选项混为一谈,后者是因为一项特性被禁用或者不适合当前上下文,所以才暂时隐藏起来的。另外,动态菜单也不代表被严格禁用的菜单。动态菜单为应用程序赋予一个全新的面貌。在一个仓库管理系统中,菜单数目众多,类型多样,本文仅详细介绍其中一个弹出式动态菜单设计方法,其他菜单设计方法可类推。二、 开发环境介绍本文所讨论的动态菜单生成采用的开发环境为C+ Builder 6,数据库设计采用SQL Server 2000。(一) C+ Builder 的特性及优点C+ Builder是一个功能全面的Windows应用程序开发工具,它的应用范围非常广泛。使用它,程序员可以编写一般的Windows应用程序和控制台程序,也可以编写复杂的企业级数据库应用和Web服务程序,还可以编写各种动态链接库和ActiveX控件。利用C+ Builder,程序员能够最便捷的使用业界的各种最新技术,比如COM+以及COBRA技术。在编程形式上,程序员既可以使用Borland提供的高层次类库VCL来编写代码,也能够深入Windows底层,直接采用API函数甚至内嵌汇编代码来强化程序的功能,C+ Builder还拥有足以自豪的易用性和灵活性,可以说,C+ Builder是目前最好的RAD工具。其特性具体表现在以下几个方面: 通过Web服务简化企业到企业集成 提高Web应用开发的功能和速度 构建支持Web服务的高性能中间件 利用业界标准的优势,支持SOAP、XML、WSDL和 XSL等协议 为Windows®和Linux®操作系统构建可跨平台运行的应用程序 通过高性能的32位源代码编译器提高效率 支持IBM® DB2®、Informix®、Oracle®、Sybase®、MySQL 、dBASE®、Paradox®和Borland® InterBase®等数据库 通过Web服务快速进行C +电子商务开发 将C +开发提高到新的层次Borland® C+Builder 6 为开发人员创建支持新兴Web服务的高效应用提供了一个稳固、高效率的电子商务开发环境。BizSnap Web服务开发平台能使开发人员轻松地创建业界标准SOAP/XML Web服务和连接,从而简化了企业到企业集成。开发人员可以利用基于组件的Web应用开发平台-WebSnap提高开发过程的功能、速度和效率;利用DataSnap建立与许多商务进程和许多业务伙伴集成的强大数据存取中间件解决方案。提供全面的企业到企业Web服务集成BizSnap Web服务开发平台能使开发人员轻松地创建SOAP/XML Web服务和连接,将企业与客户以及供应商的应用系统无缝地集成在一起,从而简化企业到企业集成。提高Web应用开发的功能与速度WebSnap为电子商务Web应用开发带来了基于组件的RAD (快速应用开发)的功能与速度,可提高开发团队的效率及代码的可靠性。而Web应用调试器能发现和纠正故障,优化性能,快速简便地生成可靠的代码。构建支持Web服务的高性能中间件DataSnap构筑于C+Builder的高效率之上,可提供数据库驱动的企业级应用,这些应用能够随交易量和用户的增加同步扩展。DataSnap通过SOAP/XML、COM、TCP/IP和CORBA®等分布式计算标准,可理顺现有企业数据库、应用、对象与电子商务应用的集成过程。DataSnap通过利用其高性能分布式中间件,可集中多个电子商务进程与应用之间的数据存取和更新,从而优化宝贵的RDBMS服务器连接和带宽。DataSnap支持多种C+Builder数据存取连接解决方案,可提供对IBM® DB2®和Informix®、Oracle®、Sybase®、Microsoft® SQLServer、MySQL、Microsoft Access和Borland InterBase®等数据库的高性能存取。创建能够跨平台运行的解决方案通过Borland跨平台开发组件库(CLX)发挥基于组件开发的强大功能。由于CLX应用可在多种平台上进行编译和运行,因此几乎不需要在Windows®和Linux®端口之间进行更改。运用CLX构建的应用程序与计划用于Linux平台的Borland C+产品的源码兼容。NetCLX互联网组件能利用本机扩展或CGI脚本编写来开发跨平台Apache、Microsoft IIS和Netscape® Web Server应用。快速连接到公司数据库运用dbGo for ADO、dbExpress或BDE等用于流行数据库(如DB2、Informix、Oracle、Sybase、Microsoft SQL Server、MySQL、Access、Paradox®和InterBase)的高速数据库驱动器程序,轻松地将企业数据集成到应用中。C+Builder中丰富的数据感知的GUI组件集,可以快速建立以数据为中心的应用程序的原型;利用SQL Monitor和其它调试组件优化数据库应用的性能、可升级性和响应性。实现企业级电子商务应用C+Builder与Borland® Enterprise Server集成,可满足全球电子商务客户的苛刻要求。C+Builder可快速高效地为Borland Enterprise Server应用提供高性能的瘦/胖图形用户接口和WebSnap浏览器客户端软件。用BizSnap、WebSnap、DataSnap电子商务工具和SOAP/XML Web服务,跨互联网桥接用于Enterprise JavaBeans (EJB)的Borland Enterprise Server应用,并可直接将这些应用连接到客户和供应商。通过RAD加快市场响应时间C+Builder为帮助开发人员提高效率和缩短开发周期提供专门的工具。C+Builder完整的集成开发环境(IDE)包括ANSI/ISO兼容的编译器、全面集成的Form Designer、广泛的组件框架、Object Inspector、Project Manager和调试器。利用CodeGuard编程时诊断错误CodeGuard分配监控可自动查明代码中的内存溢出,包括指示符算术错误。通过快速集成多个JIt(Just-in-time)调试程序进行JIT调试,可帮助及时纠正运行时间错误。控制大型项目的开发与分发通过新的开放性体系结构、先进的多目标Project Manager,可获得高度的灵活性。ProjectManager通过文件序列相关性视图,按节点编译、链接和调试选项及定制工具支持,可全面控制源码。它支持独立的C和C+项目,能有效地管理的项目。通过充分集成的Borland VisiBroker ® for C +和CORBA开发简化分布式应用开发C+Builder是唯一将COM和CORBA应用无缝集成到开发环境中的C+编译器,简化了复杂的分布式对象开发。运用Borland InterBase建立优化的交换匙系统通过C+Builder和InterBase,不仅可以实现高效率、高性能的开发,同时也获得了一个使用简便、维护成本低廉、具备企业功能的高性能、跨平台、符合SQL标准的关系型数据库。 三、 菜单简介设计菜单为库房的右键弹出式菜单,类似于Windows文件夹形式,当用户将鼠标移至具体库房图标上点击右键时,系统根据其他模块传递过来的用户权限,自动动态生成菜单项。本菜单为二级弹出式菜单,具体菜单项有查看库房信息,入库管理(入库信息查询,入库信息登记,入库信息修改,打印入库单),出库管理(出库信息查询,出库信息登记,出库信息修改,打印出库单),打印报表,退出。其菜单项的权限设置并不相同。四、 设计思想首先从所建立的数据库中读入菜单项信息,并根据读入信息建立一个二叉树,再根据传递过来的用户权限值遍历二叉树,从而动态生成菜单。五、 具体设计(一) 数据库设计数据库技术是本世纪60年代开始兴起的一门信息管理自动化的新兴学科,是计算机科学中的一个重要分支。随着计算机应用的不断发展,在计算机应用领域中,数据处理越来越占主导地位,数据库技术的应用也越来越广泛。数据库是数据管理的产物。数据管理是数据库的核心任务,内容包括对数据的分类、组织、编码、储存、检索和维护。随着计算机硬件和软件的发展,数据库技术也不断地发展。从数据管理的角度看,数据库技术到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段。数据模型是数据库系统的核心。按照数据模型发展的主线,数据库技术的形成过程和发展可从以下三个方面反映:1. 第一代数据库系统-层次和网状数据库管理系统2. 第二代数据库系统-关系数据库管理系统(RDBMS)3. 新一代数据库技术的研究和发展:(1) 面向对象的方法和技术对数据库发展的影响最为深远;(2) 数据库技术与多学科技术的有机结合;(3) 面向专门应用领域的数据库技术的研究;本文数据库设计采用的是SQL Server 2000,SQL Server 2000是为创建可伸缩电子商务、在线商务和数据仓储解决方案而设计的真正意义上的关系型数据库管理与分析系统。Microsoft SQL Server 2000针对包括集成数据挖掘、OLAP服务、安全性服务及通过Internet对多维数据集进行访问和链接在内的分析服务提供了新的数据仓储功能。除了提供电子商务所需的可伸缩性和可扩展性之外,SQL Server 2000还提供了丰富的基于Web标准数据库编程功能,以确保系统的协同工作和灵活性。与此相关,SQL Server 2000还包括丰富的XML、W3C标准支持。具有通过Transact SQL实现的XML数据操作能力,灵活而强大的Web分析功能以及使用HTTP进行的安全Web数据访问功能。鉴于本文主要讨论的是动态菜单生成的方法,所以在数据库设计方面比较简单,仅建有一个表,包含字段有:菜单项名称字段,菜单项号字段,父菜单项编号字段,权限值字段。其中一级菜单项的父菜单项号设为零,其具体设计见图一,图二: 图一 菜单项表图表的最后一条记录设为零 图二 菜单项表数据图(二) 建立二叉树本文采用二叉树存储结构来记录菜单项信息。1. 二叉树的定义树是n个结点的有限集,在任意一棵树非空树中:1)有且只有一个特定的称为根的结点;2)当n1时,其余结点可分为m(m0)个互不相交的有限集,其中没一个集合本身又是一个树,并且称为树的子树。二叉树是另一种树形结构,它的特点是每个结点至多只有二棵子树(即二叉树中不存在度大于2的结点)并且,二叉树的子树有左右之分,其次序不能任意颠倒。2. 二叉树的存储结构二叉树的存储结构有顺序存储结构和链式存储结构,其中由于顺序存储结构用一组地址连续的存储单元依次自上而下、自左至右存储二叉树上的结点元素,所以只适用于完全二叉树,用于一般二叉树时会产生资源浪费问题,一般不考虑。本文对二叉树的存储采用链式存储结构。由二叉树的定义得知,二叉树的结点由一个或几个数据元素和分别指向其左、右子树的两个分支构成,则表示二叉树的链表中的结点至少包含三个域:数据域和左、右指针域,有时,为了便于找到结点的双亲,还可以的结点结构中增加一个指向其双亲结点的指针域。利用这两种结点结构所得的二叉树的存储结构分别称之为二叉链表和三叉链表,本文采用的为二叉链表,其存储表示如下:typedef struct BiTNodeint MenuNum;/菜单号int Right;/权限值struct BiTNode *lchild, *rchild;/左右孩子指针BiTNode;3. 二叉树建立算法本文建立的二叉树针对应菜单的特点,定义如下:每个菜单项对应二叉树中的一个结点,对每个结点,其左孩子结点对应其子菜单项,右孩子结点对应其同级菜单项。二叉树建立思想如下:首先逐个扫描数据库中的菜单项表,根据每条记录的父菜单号字段内容建立一个只由一级菜单项组成的二叉链表,其在形式上像一个单向链表(如图三所示),然后再次扫描菜单项表,将二级菜单项添加至已建立的链表中,完成二叉链表的建立(如图四所示)。1020304050 图三 一级菜单项结构图10203040502122232431323334 图四 二级菜单项结构图二叉树建立算法伪代码如下:BiTNode *creat (void)BiTNode *head;BiTNode *p1 , *p2;p1 = p2 = (BiTNode *) malloc (LEN);Table1 - Frist ();/移至表中的第一条记录head = NULL;while (该菜单项不为一级菜单项)Table1 - Next ();/向下移动一条记录p1 - MenuNum = 该记录的菜单号;p1 - Right = 该记录的权限值;while (该记录不是最后一条记录)if (该结点为头结点)head = p1;elsep2 - rchild = p1;p1 - lchild = Null;p2 = p1;p1 = (BiTNode *) malloc (LEN);Table1 - Next ();while (该菜单项不为一级菜单项)Table1 - Next ();p1 - MenuNum = 该记录的菜单号;p1 - Right = 该记录的权限值;p2 - lchild = NULL;p2 - rchild = NULL;/一级菜单项链表建成Table1 - Frist();/再次移至表中的第一条记录While (该菜单项不是二级菜单项)Table1 - Next;p1 = p2 = (BiTNode *) malloc (LEN);p1 - MenuNum = 该记录的菜单号;p1 - Right = 该记录的权限值;while (该记录不是最后一条记录)顺序遍历一级菜单项链表找到p1对应的双亲结点;if(p1双亲结点的左子树为空)双亲结点 lchild = p1;else顺序遍历双亲节点左子树找到其最后一个结点;左子树末结点 - p1;p1 - lchild = NULL;p1 - rchild = NULL;p1 = (BiTNode *) malloc (LEN);Table1 - Next ();while (该菜单项不为二级菜单项)Table1 - Next ();p1 - MenuNum = 该记录的菜单号;p1 - Right = 该记录的权限值;return (head);(三) 遍历二叉树生成菜单1 遍历概念所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。2遍历方案从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: (1)访问结点本身(N) (2)遍历该结点的左子树(L) (3)遍历该结点的右子树(R)以上三种操作有六种执行次序:NLR、LNR、LRN、NRL、RNL、RLN。 注意:前三种次序与后三种次序对称,故只讨论先左后右的前三种次序。3三种遍历的命名根据访问结点操作发生位置命名:(1)NLR:前序遍历(PreorderTraversal亦称(先序遍历) 访问结点的操作发生在遍历其左右子树之前。(2) LNR:中序遍历(InorderTraversal)访问结点的操作发生在遍历其左右子树之中(间)。(3) LRN:后序遍历(PostorderTraversal)访问结点的操作发生在遍历其左右子树之后。注意:由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtlee)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。4遍历算法1)中序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: (1)遍历左子树; (2)访问根结点; (3)遍历右子树。2)先序遍历的递归算法定义:若二叉树非空,则依次执行如下操作: (1) 访问根结点; (2) 遍历左子树; (3) 遍历右子树。3)后序遍历得递归算法定义:若二叉树非空,则依次执行如下操作: (1)遍历左子树; (2)遍历右子树; (3)访问根结点。5具体遍历算法实现及菜单生成本文针对菜单特点及生成的二叉树结构,采用先序遍历二叉树生成菜单的方法1)算法伪代码如下:void PreOrder (BiTNode T) if (T)/二叉树非空 if (T - Right lchild);PreOrder (T - rchild); 2)菜单项添加方法:一级菜单生成可以通过TMenuItem - Items - Add(TMenuItem *)方法实现二级菜单生成可以通过TMenuItem - Insert(int, TMenuItem *)方法实现6菜单项响应事件在C+ Builder中,每一个菜单项都是一个组件,都包含属性、事件和方法。一般来说,菜单项都响应鼠标单击事件,即每个菜单项都拥有一个事件响应函数NameClick()(Name表示菜单项的名称)。每当单击菜单项时,C+ Builder就调用NameClick事件响应函数,执行这一函数的代码。本文着重探讨动态菜单生成方法,对其菜单项的响应事件不做太多关注。总结动态菜单技术是一种新的菜单设计技术,其菜单内容操作得到后台数据库的支持,灵活多变,其设计重点在于菜单项在系统中的存储结构,以及菜单生成时对存储结构的遍历。本文所采取的二叉树存储结构和遍历方法有效的解决了这一问题。参考书目1(美)Charlie Calvert,et al.(著)徐科 冯焱 吕志明(译)C+ Builder应用开发大全清华大学出版社2李幼仪 甘志C+ Builder高级应用开发指南清华大学出版社3洪胜国 张建原 洪月里C+ Builder程序设计轻松上手清华大学出版社4刘光C+ Builder数据库系统设计与开发清华大学出版社5萨师煊 王珊数据库系统概论高等教育出版社6严蔚敏 吴伟民数据结构(C语言版)清华大学出版社7谭浩强C语言程序设计(第二版)清华大学出版社Dynamic Menu Designing In Warehouse Administrative System AbstructFor expanding information in modern society, one complete warehouse administrative system have important meaning to improving enterprises business efficiency and accelerating automation of storehouse management. And Borland C + Builder that Company put out in a totally new way is powerful in dealing with database. It has integrated target -oriented design method and C + language popular at present, and nowadays become one of the hottest developing instruments. In the modern information system, the application in the menu design of dynamic menu is wider and wider, this text detailed introduction design dynamic method of menu, warehouse of administrative system among the C+ Builder .K

温馨提示

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

评论

0/150

提交评论