排队系统的仿真与应用—毕业设计.doc_第1页
排队系统的仿真与应用—毕业设计.doc_第2页
排队系统的仿真与应用—毕业设计.doc_第3页
排队系统的仿真与应用—毕业设计.doc_第4页
排队系统的仿真与应用—毕业设计.doc_第5页
免费预览已结束,剩余48页可下载查看

下载本文档

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

文档简介

排队系统的仿真与应用摘要排队系统是一个应用很广泛的课题。它可以应用于各个部门,比如:银行储蓄柜的排队管理,医院门诊挂号,电信营业厅排队管理,财政营业厅,税务报税大厅,工商注册,海关业务大厅,邮政业务,民航、铁路、车站售票处等任何窗口服务需要排队等候的场所。在这些场所,使用排队管理系统的意义重大。首先,它可以提升服务机构的形象,提高服务质量;其次,减少客户的等待时间,杜绝大厅的纷乱现象;最后,它也为部门有关决策提供依据,增加对工作人员的考核依据。此外利用排队系统的原理结合预测算法和大量历史数据来设计系统,用它来预测顾客的到来和顾客的订单。利用本系统可以科学的预测将来的某一天中顾客的到达情况和他所要的订单,为公司生产多少产品提供了依据。除了以上的基本功能外,本系统还提供了对历史数据和库存基本操作,更方便了用户的使用。希望对朋友们有所启发,也希望同朋友们一起完善它,使之更实用。【关键词】 排队系统 预测 数据库操作 历史数据 随机数AbstractQueueing system is an applied very extensive lesson. It can apply in the each department, for example,the queueing system using in the cashomart of bank, the hospital out-patient service registers,the system using in the telecommunication business hall,public finance business hall,tax administration tax reporting hall,industry and business register, maritime customs business hall, postal service business, and civil , railroad, station box office etc. any places which provide server windows and demand waiting in line. In these places, it is very important to use the queueing system. First, it can promote the image of the service organization,and increase service quantity; Second, it also can reduce the customers time spending on waiting, and eradicate completely the confusion phenomenon of the hall; Finally, it can provide grounds for some relevant decisions, and increase to investigate to the worker basis. In addition,making use of the principle of the queueing system ,predictive algorithm, and a flood of history data,we can design a system,with which to predict when the next customer will come and how many products he will order.Making use of this system,you can predict scientifically the situation of the arrives of customers and their orders on some day in the future,which could provide the basis on how many products should be produce in the future. In addition to above basic function, this system still provided the basic operations for the history data in stock,making it more convenient. I hope this system to have to inspire to the friends. I also hope to make it perfect with friends, let it more practical.【Key Words】Queueing system;Pretect;Operate on database; History data; Random number目 录引言2第一章 系统概述及其体系结构31.1系统概述31.2系统体系结构4第二章 开发环境介绍62.1 Microsoft Visual C+ 6.0简介62.2开发过程中所用到的组件及其介绍112.3开发过程中所用到的数据库及其简介12第三章 系统功能的实现143.1预测算法的原理143.2 Visual C+环境下数据库与应用程序的连接183.3 各个功能模块的实现简介20第四章 开发过程中遇到的问题及其解决方法35第五章 系统的改进方案36第六章 心得体会37致谢38参考文献39附录40引言离散事件系统中,由于顾客到来时间间隔与服务台服务时间都是随机的,所以在系统中会产生顾客排队现象,排队是该类系统的特征. 离散系统仿真技术是研究该类系统的有效方法,在计算机上模拟逐个顾客的来到、排队、服务及离开,统计得到整个系统的运行参数,即根据顾客到来及服务台结构、服务时间的分与参数得到了顾客的等待时间与服务台效率,从而有效地分析各类排队系统的性能。本系统的重点放在顾客的到来,顾客的需求量,即何时到来,订单是多少。当然这一切都要根据数据库中的历史数据的规律得到。我利用毕业设计的机会在毕建良老师的指导下,通过两个月的不懈努力终于开发完成了这套“排队系统的仿真与应用”。此系统是运用Microsoft公司开发的Visual C+ 6.0的环境下开发的。整个系统主要通过程序对以前每天顾客到来的情况、订单的情况以及仓库中各原材料库存量来预测将来某一天的市场对产品需求量和库中原材料的供求情况,并输出变化曲线和预测值。再根据需求量对原材料进行出入库。整个系统从设计到实现,先后经历了问题分析、算法设计、数据库设计、数据存取、结果输出等过程,前后历时两个半月。期间,我充分运用大学期间所学的知识方法,对每一部分都进行了精心的分析设计,力求完美。如在程序设计阶段,我就运用了软件工程中关于模块化设计的方法和原则,尽量使每个功能模块做到高内聚、低耦合,并控制扇出个数。在程序的测试过程中,又再次运用黑盒、白盒等测试方法并且把测试用例分为有效等价类与无效等价类分别进行测试。数据的存储则是运用数据结构中的结构体数组来实现的。“排队系统的仿真与应用”的系统是我综合运用数据存储、数据库操作、图形输出、Visual C+ MFC类库以及预测算法等方面的知识所开发出来的具有研究价值的软件系统。欢迎大家试用。同时,由于时间和能力有限,难免有不足之处,诚请老师同学予以指正,不胜感激。第一章 系统概述及其体系结构1.1系统概述 该“排队系统的仿真与应用”系统是在Microsoft公司推出的Visual C+ 6.0的开发环境下,用MFC类库进行设计并结合Microsoft Access数据库来开发的一种快速、高效、准确、稳定、功能强大的仿真软件。(1)总体要求某个公司生产某个产品,该产品有N种材料组成(C1,C2,C3,Cn),每种材料需要不同的数量(N1,N2,N3,,Nn)。建立一个数据库,存放以前每年每月每天顾客到达的编号和时间,每个顾客所要的订单是均匀分布的随机数。程序通过数据库中的相应数据总结规律输出一天的概率密度图,再根据概率密度图输出相应的分布函数图并预测出将来的某年某月某天顾客来的时间点和各个顾客所要的订单。(2)确定算法未来的事是不定的所以预测是一件很困难的事,本系统只是预测软件的初步尝试,如果要想实现比较完善的预测系统,还需要增加各种算法,因为不同的问题还要有对应的不同算法,如:趋势分析法、回归分析法、指数平滑法、单耗法、灰色模型法、负荷密度法和弹性系数法等,也可采取各种不同的算法模型:灰色系统预测模型、时间序列预测模型、神经网络预测模型,还有有名的博克思-詹金斯法的三种模型:AR模型、MA模型和ARMA混合模型。我曾经编写一元线性拟合预测的算法,是采用最小二乘拟合的方法,但这需要事先假定数据的变化规律是按某个曲线,且可以写出该曲线的方程,再通过最小二乘法求出相应系数。这样虽然简单,但是不太现实,用户不可能事先知道数据的变化曲线,而且随着时间的推移,预测的精度会变得越来越差。事实上,一个好的预测往往会综合应用各种预测算法,那样的话就比较麻烦。既然就出连续的预测曲线实现不太可能,那就采用离散的点集来预测。(3)系统功能描述主界面对数据库中的历史数据的逐条操作:移动(移动到表头、向上移动一条、向下移动一条、移动到表尾)、删除、增加、修改、按日期升序(或降序)排序和用过滤器察看某年某月某天的所有记录。此外,主界面我用菜单实现,这样便于操作,而且我为几个主要的数据库操作制作了工具条,这样操作更快捷。为了能够便于查看数据库中的记录,我使用了列表控件,还增加了条件选择,使界面更具人性化。根据数据库中“客户”表中的数据输出概率密度图,再根据概率密度图处理后输出分布函数图。概率密度图显示出客户在一天的各个时间段上出现的概率,分布函数图则显示了顾客的分布情况。输出图形,使预测更加具有直观性。在“预测”菜单项中我用对话框的列表显示出预测的详细结果,并根据预测的数据统计总顾客数和总订单量。把各种原材料的需求量与库中供应量相比较,若不足则提示。此外,为了清楚地知道库存量还要有显示库存量的对话框,以及相关操作如出库、入库等。1.2系统体系结构 整个系统从总体上来说可分为四个大模块以及一些小的功能模块,时个大模块分别为数据库数据操作模块、库存操作模块、图形输出模块和预测模块。而这三个大模块每一个又可以细分为若干个小的功能模块,比如数据库数据操作模块中又可以按功能细分为数据读取模块、数据过滤模块和数据处理读取模块;图形输出模块也可以按功能细分为绘制概率密度图模块、绘制分布函数图模块;库存操作又可分为出库和入库。其具体关系结构图如下:数据库读取模块图形输出模块绘图数据查询绘制概率密度图模块绘制分布函数图模块数据过滤模块数据读取模块数据库操作模块数据处理模块 库存操作模块SQL Server数据库出库模块入库模块图1.2.1-“排队系统的仿真及应用”体系结构图 从上图中可以比较清晰的看出本系统的体系结构,同时,也可以初步了解此“排队系统的仿真与应用”系统的运行过程。另外,本系统前台应用程序与后台数据库的连接是通过用ODBC 数据源来实现的,所用的微软的MFC类库中的类有CDataBase类-连接数据源CRecordSet类-对记录集进行操作CRecordView类-记录机的用户界面CFieldExchange类-CRecordSet与数据源的数据。具体使用在后面的相关部分中都会有详细介绍。本系统的应用程序主界面主要用于程序参数的初始化以及显示当前记录和对当前记录的基本操作等功能,其具体如下:图1.2.2-系统主界面注:在初始化时或已经移动到第一条记录时,因为记录集指针指向第一条记录所以工具条和菜单中“指向第一条记录”和“指向前一条记录”这两项灰化,以避免用户按不正确的顺序操作;但移动到最后一条记录时,也要相应地使工具条和菜单中的“指向最后一条记录”和“指向后一条记录”这两项灰化。第二章 开发环境介绍2.1 Microsoft Visual C+ 6.0简介Visual C+是一种可视化软件开发语言工具,它适合编写Windows应用程序。使用Visual C+集成开发环境(IDE)能够非常方便地管理开发过程中的各个阶段从创建源代码、编译代码到测试、调试和优化代码。(1)工具栏和菜单工具栏和菜单是Visual C+集成开发环境的重要组成部分,用途十分广泛。考虑到菜单命令和工具栏按钮非常多,这里不一一介绍。随着内容的深入,将会对这些菜单命令和工具栏按钮有更深入的了解。以下只介绍一些一般问题。Visual C+带有一个预先定义好的工具栏集合,每个工具栏都有自己的标题栏和工具按钮。工具栏的安排可以有自己决定,可以调整工具栏的位置和可见或隐藏。将鼠标指针移动到工具栏的空白部分或标题栏,然后拖动鼠标指针,都可以调整工具栏的位置。打开Tools菜单,选择Customize命令,出现Customize对话框。在Toolbars选项卡的Toolbars列表中,显示了Visual C+集成开发环境中的所有工具栏。选中工具栏标题前的复选框,该工具栏就显示在集成开发环境中。一般情况下,Standard工具栏、WizardBar工具栏和Build工具栏是可见的,而Debug工具栏只在调试过程中才可见。Visual C+环境中几乎所有的对象都响应鼠标右键的单击,通常显示一个快捷菜单,该菜单的选项与鼠标所在的环境和位置有关,提供相应操作的快捷方式。(2)项目和项目工作区每个Visual C+程序的核心是项目,而项目位于Workspace(项目工作区)之上。在Visual C+的Workspace中可以容纳多个项目。例如,你写了一个动态链接库(DLL),在一个Workspace上为这个DLL建立了一个项目。可以再建立了一个新项目,来测试这个DLL。在你开始编写新程序时,所要做的第一件事就是创建项目。项目文件保存了源代码文件和资源文件以及你所指定的编译设置等信息。Visual C+的编译系统使用这个信息编译并链接你的文件,以创建可执行的文件。在你创建项目时,同时默认地创建了一个Workspace。Workspace文件保存有关Visual C+窗口的状态、位置以及你针对该Workspace所做的设置信息。开发应用程序时,一般要经过以下步骤:1) 创建项目。2) 使用Workspace窗口及其ClassView、FileView和ResourceView选项卡对项目中的类、文件和资源进行操作。3) 在项目中添加或删除文件。4) 在项目编辑源代码和资源。5) 为项目指定编译配置。6) 编译项目。7) 纠正编译或链接错误。8) 执行并测试可执行文件。9) 调试项目。10) 配置和优化代码。创建项目在File菜单上选择New命令,从弹出的New对话框中选择Projects选项卡,选取其中的一个项目类型。在Project name框中输入项目名称,在Location框中指定存放项目文件的位置。选中Create new workspace单选按钮,最后单击OK按钮。根据所选项目的类型,下面会有不同的步骤,依次选择后,单击Finish按钮。这样就创建好了一个项目。Workspace窗口当你创建了一个项目后,它就成为Visual C+的当前项目。在Visual C+主窗口的左侧你会看到Workspace窗口。在Workspace窗口的下部有几个选项卡。如果在主窗口中看不到Workspace窗口,可以从View菜单中选择Workspae来显示它。可以单击Workspace窗口右上角的小叉关闭窗口,也可以使用工具栏上的Workspace按钮来打开和关闭它。在Workspace窗口中,你可以看到项目中C+类的列表。单击类左边的加号(+),可以展开该类的一列成员。双击类或其中的成员可以打开它们。要通过ClassView添加新类,右键单击最高层的条目,从弹出的快捷菜单中选择New Class命令。要向类中添加新成员,右键单击类名并从弹出的快捷菜单中选择相应的添加命令。要删除类成员,在ClassView中右键单击它,从弹出的快捷菜单中选择Delete命令。在Workspace窗口的ResourceView选项卡中,包含了各种资源,它们组成了Windows的用户界面。打开相应的文件夹,双击一个资源就可以对它进行编辑。从Insert菜单中选择Resource,在弹出的Insert Resource对话框中双击所需的资源类型,就可以创建新的资源。要删除资源,选中资源后按Delete键。在Workspace窗口的FileView选项卡中,包含了源文件(.cpp)、头文件(.h)和资源文件(.rc)的一组文件夹。双击文件名,就可以从FileView中打开文件。在文件名上右键单击,你会发现与该文件有关的一系列操作。添加和删除项目文件项目一般包括以下源文件:11) 头文件,扩展名为.h。12) 实现文件,C+的扩展名为.cpp,C的扩展名为.c。13) 资源文件,扩展名为.rc,也包括扩展名为.bmp和.ico以及其他包含图形元素(如工具栏按钮和图标)的文件。在编程过程中,需要不断向项目中添加新的头文件和实现文件:14) 要创建新的.h、.cpp或.c文件并将它们添加到项目中,请在File菜单中选择New命令。在New对话框的Files选项卡中,选择C/C+Header File或C+Source File选项。然后选中Add To Project选项,键入文件名。如果新文件与当前的项目不在同一个目录中,则指定其路径,单击OK按钮。15) 要将现有的.cpp、.c或.rc文件添加到项目中,请在Project菜单上指向Add To Project选项,在子菜单上选择Files命令。在Insert Files Into Project对话框中,选中要插入的文件,然后单击OK按钮。16) 要将现有的.h文件添加到项目中,只需在项目中的某个.cpp或.h文件中插入指向该头文件的#include语句。不需要手工将文件添加到项目中。编辑源代码和资源现在你已经知道创建Visual C+项目并管理项目中文件、类以及资源的方法,让我们编写并编辑构成程序的代码和资源。使用Visual C+ 源代码编辑器,编写和编辑代码。在你创建新的.h或.cpp文件,或打开现有的文件时,就启动了源代码编辑器。源代码编辑器自动用颜色将不同的语法元素区分开来,这就便于阅读源文件。Visual C+提供了许多方法来定位源代码文件中类、函数和其他条目。在以后,我们会讨论ClassView、WizardBar以及Find命令。使用Visual C+的资源编辑器编辑程序中的菜单、对话框及其他资源。对于每一种类型的资源有不同的编辑器。指定项目配置并编译项目在开发程序期间,你通常在Debug模式配置下工作。在这种配置下,编译器包含了Visual C+调试器能够使用的调试信息。在准备发布正常使用的程序时,你需要切换为Release模式。Debug和Release是项目配置的两种主要模式。高级的程序员还会使用自己定义的配置。因为开发程序时经常需要调试程序,所以默认的配置是Debug模式。在你编辑完项目的代码和资源后,就可以编译项目了。编译过程调用适当的资源和语言编译器、链接器及其他工具。它在适当的目录中生成中间文件,如果没有编译错误,它生成最终的可执行文件(.exe)。在编译过程中,你会在Visual C+的Output窗口中看到许多条消息,它们指出了编译进度并列出了发现的错误和问题。纠正编译错误并运行程序编译错误包括语法错误、文件错误以及逻辑错误等等。纠正逻辑错误,就要用到调试器。纠正编译错误可以按照以下步骤执行:1双击Visual C+ Output窗口中的错误信息。这样就打开了该错误产生的源代码,并且光标会位于出错的那一行上。2单击Output窗口中的错误信息,并按F1键来得到有关错误的信息。3纠正代码并重新编译程序。通常,一个或两个错误会导致它后面的语句产生一系列错误,因此,先纠正前几个错误,再重新编译程序是一个很好的策略。在成功地编译没有错误的程序后,就可以在Visual C+的环境中运行程序了。从Build菜单中选择Execute命令或按Ctrl+F5,来运行程序。(3)使用向导和其他的Visual C+工具Visual C+给予你许多编程上的帮助,这些帮助主要是它的一组向导实现的。向导就像一列对话框。它引导你进行一系列复杂的选择。下面简要地介绍几个主要的向导和工具:17) 使用AppWizard在项目的开始创建一组启始文件。New对话框中的大多数项目类型调用AppWizard创建项目及其文件。18) 使用ClassWizard可以在程序中添加C+类和类成员、操纵MFC消息映射、使用自动属性和方法、操纵ActiveX事件以及执行许多其他任务。19) WizardBar工具栏是使用ClassWizard功能的捷径,并且它还作为在源代码文件中查找类和函数的查找工具。除了向导以外,你还可以使用Tools菜单上的命令。例如:20) 使用Source Browser命令调用Visual C+的源代码浏览器。21) Error Lookup命令在你知道错误号时,帮助你查找错误消息。22) MFC Tracer工具使MFC的TRACE宏能够打印诊断输出字符串。你可以向Tools菜单添加自己的工具,打开Tools菜单,选择Customize命令。在Customize对话框中,单击Tools选项卡。要获得更多的有关信息,请在帮助索引中输入customizing,并双击Tools menu选项即可。(4) 环境窗口在你开发程序时,会用到Visual C+中的各种窗口:源代码窗口和资源编辑器窗口、Workspace和Output窗口,还有各种调试器窗口。下面,我们讨论Visual C+中的两类窗口:文档窗口和停靠窗口。文档窗口是包含文档(例如,源文件编辑器文档或资源编辑器文档)的普通框架窗口。这些窗口含有最大化、最小化和关闭按钮,以及系统菜单,并且可以拖动它的边框改变它的大小。拖动停靠窗口突出的按钮,可以把它附加到Visual C+中主窗口的任何边缘。这个特性使用户能够将停靠窗口定位于更利于工作的位置。停靠窗口也能够浮于主窗口中间,而不靠在主窗口的边缘上。拖动停靠窗口就可以将其停靠在主窗口的边缘上。(5) 使用帮助系统由于Visual C+是一个非常大的产品,它的帮助系统也非常庞大甚至比Windows 95的帮助系统还大。可以在任何时候使用帮助,学习使用帮助、学习缩小搜索范围是非常有用的。在编写Visual C+程序时,有四种方式可以得到帮助:23) F1帮助。这是最快的方式。只要单击一个单词、突出显示一条短语或单击一条错误信息,再按F1。可以在源代码编辑器窗口、帮助窗口或输出窗口中使用这种方式。24) 帮助索引。帮助带有一个非常大的索引。它还不十分完美,并不是您想要知道的所有信息都包含在里面,但是它包含绝大多数所需的信息。25) 搜索机制。帮助是个联机系统,你可以在帮助系统中搜索每一条文本。搜索的范围比索引要广泛得多。它可能列出了1000条不相关的主题,但其中有一条是你所需要的。26) 帮助目录。帮助就像一本书一样也有目录,使用帮助窗口中的目录选项卡,可以阅读某个主题的所有内容。27)启动MSDN库在Visual C+中,打开Help菜单,选择Contents、Search或Index命令,将打开MSDN(Microsoft Developer Network,微软开发人员网络)窗口。MSDN使用Internet Explorer Web浏览技术显示帮助主题。你可以使用帮助窗口左侧的目录、索引和搜索选项卡定位信息,在右侧的主题显示窗格中单击超级链接浏览相关主题。还可以使用帮助窗口工具栏上的前进和后退按钮浏览一系列主题。当你在帮助系统里转迷糊的时候,可以使用工具栏上的主页按钮回到帮助系统的启始点。(6) 在Visual C+中进行查找Visual C+提供了功能强大的查找工具,可以查找打开的文件的内容以及磁盘上的文件。除了Edit菜单外,Visual C+将以下与查找有关的控件放在Standard工具栏上:28) Search按钮(带有问号的望远镜)。这个按钮打开帮助的Search选项卡,它寻找信息而不在你的文件中寻找字符串。29) Find下拉列表。这同Edit菜单上Find命令相同。30) Find In Files按钮(望远镜和文件夹)。这是强大的磁盘文件查找工具。查找和替换要在当前的源代码文件中执行查找和替换操作,可以在Edit菜单中选择Find或Replace命令,显示Find或Replace对话框。Find和Replace都允许以不同的方式自定义查找:31) 可以匹配整个单词。32) 可以匹配大小写。33) 可以使用类似Unix风格的Grep命令的常规表达式。34) 可以限制查找选中的文本或整个文件。35) 可以使用Find命令的Mark All选项,在文件中每个查找到的地方放置书签。Find下拉列表控件Standard工具栏上的Find下拉列表是查找当前文件的便利的快捷方式。只需单击该控件,键入要查找的字符串,然后按Enter键。Find In Files命令Find In Files命令在Edit菜单和Standard工具栏上都可以找到。它是一个强大的查找工具,可以查找磁盘上的文件,以及当前打开的文件。源代码文件中的书签尤其在大型程序中,你会发现需要的代码在几个文件中,或在一个文件的几个位置。这是使用书签就很方便。要在源代码文件中放置书签,单击要放置书签的那一点。从Edit菜单上选择Bookmarks命令,显示Bookmark对话框。在Bookmark对话框中,键入该书签的名称。然后单击Add按钮并关闭对话框。要查找一个书签,从Edit菜单上选择Go To命令。在Go To对话框的Go To What框中单击Bookmark。然后在Enter Bookmark Name框中键入书签名,或单击下拉列表箭头显示所有的书签,单击所需的书签,单击Go To按钮。要删除书签,在Bookmark对话框中选中它并单击Delete按钮。2.2开发过程中所用到的组件及其介绍 在本系统的开发过程中,所用到的组件有图像、静态文本、按钮、编辑框、组框、组合框、热键、下拉列表框、列表控件等,所用到的资源有菜单、对话框、工具条、图标、加速键。下面对一些用到的主要的组件及其功能进行简要的介绍:(1)图像组件(图像框)的介绍:图像框是用来显示图象的静态显示组件,其主要属性大多数是用来制定图像的显示方式,而在本系统中,我使用其默认属性,用来在图形输出时绘制图像。因为是画条形图,所以我主要用到CBrush类、CPen类、CClientDC类、CFont类及CRect类,具体步骤如下:CClientDC dc(this);1)相应类的对象获得设备环境(以画笔为例);2)创建画笔,如:HPEN hp;hp=GetStockObject(BLACK_PEN);hp=CreatePen(int nPenStyle, int nWidth, COLORREF rgbColor ); 3)选入画笔,如:SelectObject(hdc, hp); 4)使用画笔,本系统只需要画矩形和输出坐标,所以要用到BOOL TextOut( int x, int y, const CString& str )和BOOL Rectangle( int x1, int y1, int x2, int y2 )函数 5)删除画笔,如:DeleteObject(hp);画刷的使用类似画笔,在这不再重复。(2)静态文本组件的介绍:作用是简单的在屏幕显示一字符串,在运行中它不和用户发生任何关系。可以是所有的静态文本控件的ID可以相同,这样并没有什么关系,因为程序不会对他们进行访问。(3)按钮组件的介绍:作为与用户交互,单击进行相应的操作,如进入另一个对话框、关闭当前对话框或确认及提交用户的操作。(4)编辑框组件的介绍:通过编辑控件,用户间以输入文本信息,可以将输入信息转换为各种类型的数据。其中需要使用对话框的动态交接技术。编辑控件除了常见的单行编辑控件,还有多行编辑控件。(5)组合框组件的介绍:从本质上讲,组合框控件也是一个窗口,当然大多数情况下,它是应用程序的了窗口,在其列表窗口中包含一系列的字符串。这些字符串的内容可以代表任何应用程序所需要的含意,可以是文件名、字符名等等。用户也可以用特定的函数填写这些字符串,组合框允许用户从组合柜中选择一顶,用户选中表框中的项目后,所选字符串会出现在其编辑控件内。(6)下拉列表框组件的介绍:列表框是一个包含许多项的列表,可以供用户从中进行选择的控件。把所有可能的输入用列表列出,让用户选择,可以根本杜绝键盘输入造成的错误,而且用户用鼠标进行输入也比用键盘输入要方便和直观。(7)列表控件的介绍:可以同时显示一组成员。(8)菜单:菜单是Windows与用户交互的标准接口之一,它可以令应用程序的操作更方便。菜单一般包括主菜单条、下拉式菜单框、菜单项热键标识、菜单项加速键标识、菜单项分割线、选中与否的标识等。菜单项的一般创建过程是:1)定义菜单,可以在资源管理器中实现。2)加载菜单资源在窗口类中加载菜单在创建窗口中加载菜单动态加载菜单。3)操作菜单项禁止或激活设置或取消菜单项增加、删除或修改菜单项(9)对话框:对话框是一种弹出式的特殊窗口,它主要用来实现应用程序与用户之间的信息交互活动。它是用户输入数据的重要手段之一。对话框本身甚至可以成为应用程序的框架。对话框中还可以加入各种Windows控件。创建对话框的一般步骤如下:1)定义对话框,可分为两种:一种是模态式对话框,另一种是非模态式对话框。前者不允许用户在关闭对话框之前切换到应用程序其它窗口,而后者是允许的。CDiaLog(UINT nIDTemplate,CWnd *pParentWnd=NULL);其中nIDTemplat是对话框模板资源的标识符,它在resource.h中有定义,而整个对话抠的定义则在*.rc中,当然是通过资源编辑器实现的。pParentWnd是指向父窗口的指针,当对话框窗口为应用程序的主窗口时为NULL。2)调用DoModal()函数显示对话框。DoModal()函数适用于模态式对话根,DoMdoal()函数包揽了对话框显示部分的操作。3)构造对话框处理函数。4)关闭对话框。2.3开发过程中所用到的数据库及其简介1)数据库的当前发展状况纵观当今的商用数据库市场,称之为群雄割据毫不为过。其中涌现出了许多性能优良的商品化关系数据库管理系统。例如,小型数据库系统Foxpro, ACCESS, PARADOX等,大型数据库系统DB2, INGRES, ORACLE, INFORMIX, SYBASE, SQL SERVER等。关系数据库技术仍然是主流。关系数据库技术出现在20世纪70年代、经过80年代的发展到90年代已经比较成熟,在90年代初期曾一度受到面向对象数据库的巨大挑战,但是市场最后还是选择了关系数据库。无论是Oracle公司的Oracle 9i、IBM公司的DB2、还是微软的SQL Server等都是关系型数据库。Gartner Dataquest的报告显示关系数据库管理系统(RDBMS)的市场份额最大,2000年RDBMS的市场份额占整个数据库市场的80%,这个比例比1999年增长了15%。这组数据充分说明RDBMS仍然是当今最为流行的数据库软件。当前,由于互联网应用的兴起,XML格式的数据的大量出现,学术界有一部分学者认为下一代数据库将是支持XML模型的新型的数据库。我对此持否定态度,认为关系技术仍然是主流,无论是多媒体内容管理、XML数据支持、还是复杂对象支持等都将是在关系系统内核技术基础上的扩展。2)本系统所使用的数据库首先,Access的优点在于它能使用数据表视图或自定义窗体收集信息。您还可以创建象其他windows应用程序一样的自定义窗体来收集和检索信息。另外,Access允许创建自定义报表,用于打印或输出数据库中的信息。其次,Access提供了数据存储库。Access2000提供了一种关于数据库的物理什储(也就是数据实际存储的地方)的选择,您可以用默认的桌面数据库文件或Microsoft SQL Server存储数据。可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。但是,这种方法不是真止的客户服务器数据库。因为Access的数据库是存放在硬盘上的,不是可执行应用程序。这似乎是一种不足,而事实并非如此。当Access在这种环境中运行时,它比客户服务器数据库有明显的优点。首先,它非常便于管理。没有大量复杂的设置或网络及安全问题。也不需用内存64MB的Pentium 200来运行Access 2000。最后,Access是一种关系数据库工具。关系数据库是已开发的最通用的数据库之一。第三章 系统功能的实现3.1预测算法的原理(1)随机数的产生(均匀分布)因为每个客户的到达是在一天中的任意时刻,所以可以由均匀分布的随机数根据求出的离散点集来影射顾客到达时间。而且,为了方便实现,顾客的订单上的产品数量也用80200的均匀随机数。产生01均匀分布的随机数算法有很多像乘同余法或混合同余法。这两种方法产生的伪随机数序列在随机性、序列周期长度及计算速度等方面都有较好的性能,但是他们都有固定的周期。所以我利用抛物线影射产生01范围的伪随机数,经测试它具有良好的均匀性和独立性,且不再具有固定的周期。源代码如下:#include stdafx.h#include #include #include math.h#include #include iostream.h#define Q 2000double random;int OrderNumRandom;int main(int argc, char* argv) int i,j,k,times; double seed,randomNum,R2000; time_t t; srand(unsigned) time(&t); /以系统时间为种子OrderNumRandom=rand()%121;/获取0120之间的随机数 OrderNumRandom=OrderNumRandom+80;/转化为80200之间的随机数 seed=rand()/100000.0;/用满抛物线射影法求01之间的随机数 times=rand()%1000; i=rand()%2000;for(k=0;k2000;k+)randomNum=seed;for(j=1;j=times;j+)randomNum=1-2*randomNum*randomNum;seed=randomNum;if(randomNum0)Rk=asin(randomNum)/3.1415926+1.0;elseRk=asin(randomNum)/3.1415926; random=Ri;coutOrderNumRandomendl;for(i=0;i20;i+)coutRiOpen(Data Sourc

温馨提示

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

评论

0/150

提交评论