基于数据挖掘的经济普查数据分析

上传人:仙*** 文档编号:107344155 上传时间:2022-06-14 格式:DOC 页数:27 大小:137.50KB
返回 下载 相关 举报
基于数据挖掘的经济普查数据分析_第1页
第1页 / 共27页
基于数据挖掘的经济普查数据分析_第2页
第2页 / 共27页
基于数据挖掘的经济普查数据分析_第3页
第3页 / 共27页
点击查看更多>>
资源描述
.莆 田 学 院毕 业 论 文题目基于数据挖掘的经济普查数据分析学生飞跃* 510704339 专业计算机科学与技术班级计算机2班 指导教师黄海二00九年四月二十一日目录第1章 绪论31.1 数据挖掘技术31.2 研究问题分析41.3 国经济普查实践与数据分析现状41.4 本文研究容及方法4第2章 聚类分析算法42.1 数据挖掘过程42.2 聚类分析技术根底52.3 数据挖掘对聚类的要求52.4 聚类方法的分类6第3章 K均值算法63.1 K均值算法思想63.2 K均值算法流程7第4章 K均值算法在经普数据分析上的实现74.1 数据的采集、预处理74.2 算法演示84.3 数据分析8第5章 K均值算法分析系统的设计95.1 开发工具及运行环境简介95.2 主界面105.3 修改密码115.4 运算模块125.5 企业数据管理模块205.6 退出登陆265.7 下一步工作26第6章 完毕语26第7章 致26参考文献271.基于数据挖掘的经济普查数据分析飞跃电子信息工程学系 指导教师:黄海摘要:随着全国第二次经济普查数据的上报,面对普查之后的海量数据,如何更好地利用这些数据资料,帮助国家在金融危机下制定更好的经济决策,成为目前社会各界关注的热点。将数据挖掘技术应用于经济普查数据的分析,可以找出隐含在数据中的更深层次的信息,对决策者制定决策是很有参考价值的。关键词:经济普查 数据挖掘 决策树算法 K-均值算法 Abstract: With the countrys second economic census data to report, in the face of the huge amount of data after the survey, how to make better use of these data to help countries in financial crisis to develop better economic decision-making, bee the munitys concern about the hot spots. Data mining technology will be applied to the analysis of economic census data, can be found in the data implied a deeper level of information, decision-making for policy makers is a good reference.keywords: Economic Census Data Mining Decision Tree Algorithm K-means algorithm第一章 绪论计算机技术的开展为工商企业、政府机构和教育科研单位实现信息的数字化处理提供了机遇,数据库和数据仓库已经广泛地应用于企业管理、产品的销售、科学计算和信息效劳等领域。数据收集工具的进步使我们拥有数量庞大的数据。虽然数据库系统可以高效地实现数据的录入、查询和统计等功能,但缺乏挖掘数据背后隐藏的知识的手段,难以发现数据中存在的关系和规则,无法预测未来的趋势。 而传统的数据分析方法已远远不能满足现实对于数据分析的需求, 数据的迅速增加与数据的分析处理方法滞后的矛盾越来越大, 从而导致了大量的数据成为数据丰富,但信息贫乏的“数据坟墓。 而数据挖掘技术(DataMining)正是解决这一课题的重要方法。权威的Ga*toer调查报告显示,数据挖掘将是未来几年全球围重点投资研究的十大新技术之一,它引起了学术界和工业界的广泛关注,是当今数据库系统研究和应用领域的一个热点问题。1.1 数据挖掘技术数据挖掘技术出现于20世纪80年代后期,90年代有了突飞猛进的开展,并在21世纪持续繁荣。还有很多和这一术语相近的术语,如数据库的知识发现(KDD)、数据分析、数据融合(Data Fusion)以及决策支持等。数据挖掘将数据库管理系统和人工智能中机器学习两种技术相结合,用数据库管理系统来存储数据,用机器学习的方法来分析数据,自发发现隐含在大量数据中的知识。它是一个萃取和展现新知识的流程。数据挖掘聚集了统计学、机器学习、数据库、模式识别、人工智能等学科的容,是一门新兴的穿插学科。数据挖掘从一开场就是面向应用的,它不仅是面向特定数据库的简单查询调用,而且要对这些数据进展微观、宏观的统计,分析、综合和推理,以指导实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进展预测。数据挖掘更强调的是从海量数据中发现隐含的知道和算法的可伸缩性,是一门很接近使用的技术。目前数据挖掘技术主要运用于商业、医学、科研领域,着眼于海量数据集存储、检索与处理,目标是帮助人们从繁冗复杂的数据中发现有价值的信息,从而挖掘出其潜在的价值,提高其利用率。1.2 研究问题分析我国第二次经济普查自2008年12月31日正式启动以来,现在已根本完成普查数据的收集、处理与上报工作。本次经济普查是我国经济开展进入21世纪后进展的一项重大国情国力调查,是党中央、国务院为正确认识国情、准确把握国力、科学制定国策而采取的一项重要举措。也是在全球金融危机大背景下正确把握我国当前经济状况的重要渠道的。只有通过经济普查,才能比较准确地把握中国经济变化的规律和趋势,正确制定经济政策和社会经济开展规划,进一步控制经济增长,提高经济开展速度,促进经济和社会协调开展,推动可持续开展战略的实施。在这次经济普查中,从国民经济行业分类的具体构成来看,涉及到19个大的行业归类,875个行业小类。可以说这次经济普查提供的数据是非常完整的。面对普查之后的海量数据存储,国家更需要有力的数据分析工具以及方法将丰富的数据转换成有价值的知识,否则大量的数据将成为数据丰富,但信息贫乏的“数据坟墓。数据挖掘技术正是从大型数据库或数据仓库中提取有潜在应用价值的信息或模式,旨在帮助人们从海量数据中发现有价值的信息。如何从普查数据中及时发现有用的信息,从而挖掘出其潜在的价值,提高其利用率,是经济普查数据研究领域的一项重要课题。1.3 国经济普查实践与数据分析现状事实上,经济普查的主要目的就是分析企业的财务信息,也就是财务数据挖掘。财务数据挖掘其实是一类深层次的财务数据分析方法。目前的经济普查系统可以高效地实现数据录入、查询和统计,但却无法发现数据中存在的关系和规则,无法根据现有的经普数据分析结果预测未来经济开展趋势。传统的财务分析只是停留在较浅层次的分析,比方:因素分析、比例分析、趋势分析等,对决策的帮助并不大,究其原因,正式缺乏有效的挖掘知识和手段,导致了“数据爆炸但知识贫乏的现象。而随着数据库技术的迅速开展以及数据库系统的广泛应用,企业积累的数据越来越多,如自身业务运作的数据,资金运作的数据,对外投资的数据和整个市场相关行业状况的各种数据,激增的数据背后隐藏着许多重要的信息。这些数据不再是为了编制财务经济报表、分析财务状况而收集,分析这些数据也不再单纯为了了解企业各种状况,更主要的是为决策者提供真正有价值的信息,也可帮助企业提供竞争力,在这种情况下,数据挖掘技术就显得至关重要。1.4 本文研究容及方法本文认真分析了数据挖掘的根本原理和一般方法,选择了合理的数据挖掘工具。通过将数据挖掘技术应用到经济普查的数据分析中去,实现经济普查数据的充分开发以及利用。同时在数据挖掘技术应用研究的过程中,利用全国经济普查数据,分析我市*区经济普查数据中假设干企业的经济指标间关系,并对结果进展评价,为相关部门制定决策提供依据。第二章 聚类分析算法2.1数据挖掘过程在实施数据挖掘之前先制定采取什么样的步骤,每一步做什么,到达什么样的目标,是非常必要的。有了好的方案才能保证数据挖掘有条不紊的实施,并取得成功。现在,通用的数据挖掘是从数据集中识别出以模式来表示知识。它包含多个处理步骤,各个步骤之间互相影响并反复调整,形成一种螺旋上升的过程。其过程包括以下几个步骤:(1) 确定挖掘目标。了解应用领域和相关知识,从用户的观点出发确定数据挖掘的目标。这是实现数据挖掘的重要因素。相当于系统分析。这个过程要考虑的因素有:该领域的瓶颈是什么,目标是什么,挖掘模型的可理解性是否重要等。(2) 建立目标数据集。从现有的数据中,确定哪些数据是与本次数据分析任务相关的。根据挖掘目标从原始数据中选择相关数据集,并将不同数据源中的数据集中起来,在这一阶段需要解决数据挖掘平台,操作系统和数据源数据类型等不同所产生的数据格式差异。(3) 数据预处理。对选择数据,需要进展数据清洗工作,将数据变成干净的数据。目标数据集中不可防止的存在着不完整,不一致,不准确和冗余的数据,这些数据被称为“脏数据。数据抽取之后通常采用基于规则的方法分析多数据源之间的关系,然后再对他们实施相应的处理。(4) 数据挖掘算法。使用适宜的数据挖掘算法进展数据分析。首先确定实现数据挖掘目标的数据挖掘功能;其次选择适宜的模式搜索算法。数据挖掘的算法包括决策树、神经网络、遗传算法等。(5) 挖掘结果的评价与解释。根据最终用户的决策目的对数据挖掘的结果进展评价,将有用的结果以可视化的技术提供给用户,让用户能够对模型结果做出解释,同事评价模型的有效性。2.2 聚类分析技术根底将物理或抽象对象的集合分组成为类似的对象组成的多个类或簇的过程被称为聚类,聚类是数据挖掘三大领域(关联规则,聚类,分类)之一。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。在血多应用中,可以将一个簇中的数据对象作为一个整体来对待。在商务上,聚类能帮助市场分析人员从客户根本库中发现不同的客户群,并且用购置模式来刻画不同客户群的特征;在生物上,聚类分析被用来动植物分类和对基因进展分类,获取对种群固有构造的认识 ;在保险行业上,聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组。聚类也能用于对WEB上的文档进展分类,以发现信息。因为具有数据挖掘功能,聚类分析能作为一个独立的工具来获得数据分布情况,观察每个簇的特点,集中对*些特定的簇做进一步的分析。此外,聚类分析还可以作为其他算法(如特征化和分类等)的预处理步骤。这些算法再在生成的簇上进展处理。2.3 数据挖掘对聚类的要求聚类是一个富有挑战性的研究领域,它的潜在应用提出了各自特殊的要求数据挖掘对聚类的典型要求如下:1. 可伸缩性:可伸缩性是指算法不管对于小数据集还是对于大数据集,都应是有效的。很多聚类算法在小于200个数据对象的小数据集上工作的很好,而到了包含上千万个数据集对象的数据库工作时,将会有偏差的结果出现。因此,数据挖掘需要具有高度可伸缩性的聚类算法。2. 处理不同字段类型的能力:许多算法被设计用来聚类数值类型的数据。但是,应用可能要求聚类其他类型的数据。随着数据在商务、科学、医学和其他领域的应用越来越广泛,越来越需要能够处理不能字段类型的聚类算法。3. 能够发现任意形状的聚类:许多聚类算法是基于欧几里得距离来决定聚类。基于这样的距离度量算法趋向于发现具有相近尺度和密度的球状簇,但是簇可能是任意形状的。4. 用于决定输入参数的领域知识的最小化:由于聚类结果对输入参数的要求很敏感,但参数通常很难确定,特别是对于高维对象的数据来说。所以输入参数的质量直接影聚类的结果,这就加重了用户的负担。5. 处理噪声数据的能力:绝大多数数据集中存在很多孤立点、空缺、未知数据或错误数据。一些聚类算法对于这样的数据敏感,导致低质量聚类结果。6. 对输入数据的顺序不敏感:一些聚类算法对于输入数据的顺序是敏感的。对于同一个数据集合,以不同的顺序提交给同一个算法时,可能产生差异很大的聚类结果,这是我们不希望的。研究和开发对数据输入顺序不敏感的算法具有重要的意义。7. 高维性。一个数据库或是数据仓库可能只包含假设干维,很多聚类算法只涉及两到三维。人类对于三维以的数据有判断性,高于三维的数据聚类的挑战性很高,数据可能很稀疏,也可能高度偏斜。8. 基于约束的聚类。现实世界可能要在约束条件下进展聚类,这就要求既要满足客户特定的约束,又具有良好聚类特性的数据分组。9. 可理解行和可用性。用户希望聚类结果是可解释的,可理解的,并且是可用的。也就是,聚类与最后的应用相联系。应用目标对聚类方法的影响也是一个重要的课题。2.4 聚类方法的分类大体上,主要的聚类算法可以划分为如下几类: (1) 划分方法:给定一个包含n个对象或元组的数据库,一个划分方法构建数据的k个划分,每个划分表示一个聚簇,并且 kn 。通常算法中会采用一个划分准则(称为相似度函数),例如距离,以便在同一个簇中的对象是“相似的,在不同簇中的对象是“相异的。K均值算法是目前应用最广发的一种基于目标函数的划分聚类方法,一般都采用梯度法求解极值。由于梯度法的搜索方向总是沿着能量减少的方向进展,因此容易陷入局部极小值。当结果簇密集并且各簇之间的区别明显时,采用该算法效果比较好。(2) 层次的方法 hierarchical method :层次的方法对给定数据对象集合进展层次的分解。根据层次的分解如何形成,层次的方法可以分为凝聚的和分裂的。凝聚的方法,也称为自底向上的方法,一开场将每个对象作为单独的一个组,然后相继地合并相近的对象或组,直到所有的组合并为一个层次的最上层,或者到达一个终止条件。分裂的方法,也称为自顶向下的方法,一开场将所有的对象置于一个簇中。在迭代的每一步中,一个簇被分裂为更小的簇,直到最终每个对象在单独的一个簇中,或者到达一个终止条件。(3) 基于密度的方法 density-based method :绝大多数划分方法基于对象之间的距离进展聚类。这样的方法只能发现球状的簇,而在发现任意形状的簇上遇到了困难。随之提出了基于密度的另一类聚类方法,其主要思想是:只要临近区域的密度对象或数据点的数目超过*个阈值,就继续聚类。也就是说,对给定类中的每个数据点,在一个给定围的区域中必须至少包含*个数目的点。这样的方法可以用来过滤“噪声孤立点数据,发现任意形状的簇。 (4) 基于网格的方法 grid-based method :基于网格的方法把对象空间量化为有限数目的单元,形成了一个网格构造。所有的聚类操作都在这个网格构造即量化的空间上进展。这种方法的主要优点是它的处理速度很快,其处理时间独立于数据对象的数目,只与量化空间中每一维的单元数目有关。 (5) 基于模型的方法 model-based method :基于模型的方法为每个簇假定了一个模型,寻找数据对给定模型的最正确拟合。一个基于模型的算法可能通过构建反映数据点空间分布的密度函数来定位聚类。它也基于标准的统计数字自动决定聚类的数目,考虑“噪声数据或孤立点,从而产生强健的聚类方法。第三章 K均值算法3.1 K均值算法思想K均值算法属于聚类分析方法中一种根本的划分算法,是到目前为止用于科学和工业应用的诸多算法中一种极有影响力的技术。它是一种聚类类别数的聚类算法。指定类别数为K,对样本集合进展聚类,聚类的结果由K个聚类中心来表达,基于给定的聚类目标函数,算法采用迭代更新的方法,每一次迭代过程都是向目标函数值减小的方向进展,最终聚类的结果使目标函数值取得极小值,到达较优的聚类效果。下面说明这类算法的主要方法和特点:K均值算法:算法首先随机选取K个点作为初始聚类中心,然后计算各个数据对象到各聚类中心的距离,把数据对象归到离它最近的那个聚类中心所在类;对调整后的新类计算新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明数据对象调整完毕,聚类准则函数收敛。本算法的一个特点是在每次迭代中都要考察每个样本的分类是否正确,假设不正确,就要调整。在全部数据调整完后,再修改聚类中心,进入下一次迭代。如果在一次迭代算法中,所有的数据对象被正确分类,则不会有调整,聚类中心也不会有任何变化,至此算法完毕。3.1 K均值算法流程K均值算法框架如下:(1) 从数据集中随机选择K个对象作为初始簇中心,即初始均值;(2) Repeat;(3) 根据簇中对象的均值,将剩余的每个对象指派到最相似的簇;(4) 更新簇均值,即重新计算每个簇中对象的均值;(5) Until均值不再发生变化。我们不难看出,K个初始聚类中心点地选取对聚类结果具有较大的影响,因为在该算法中是随机地选取任意K个点作为初始聚类中心。如果有经历的话,可以选取具有代表性的点。例如;假设给定如下要进展聚类的元祖:2,4,10,12,3,20,30,11,25假设要求的簇的数量K=2应用K均值算饭:第一步:初始时用前个数值作为簇的质心,这两个簇的质心是:m1=1;m2=4;第二步:对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的簇,可得:K1=2,3;K2=4,10,12,20,30,11,25;数值3与两个均值距离相等,所以任意的选择K1作为其所属的簇。第三步:计算新的质心m1=(2+3)/2=2.5;m2=(4+10+12+20+30+11+25)/7=16;重新对簇总成员进展分配可得K1=2,3,4和10,12,20,30,11,25,不断重复这个过程最终可得K1=2,3,4,10,11,12和K2=20,30,25。第四章 K均值算法在经普数据分析上的实现4.1 数据的采集、预处理美国注册会计师协会通过对大量的信贷者、投资者、财务分析人员以及投资参谋公司从业人员调查后,发表了?改进企业报告-顾客导向?的研究报告,认为信息使用者需要,而且企业能够提供信息的主要包括下面几个方面:(1) 财务与财务数据;(2) 企业管理人员对财务与非财务数据的分析结果;(3) 前瞻性信息(包括预测、决策和思路);(4) 关于企业股东和高层管理人员的信息;(5) 企业的背景资料。本文将从第一点出发,即企业的财务与财务数据入手,所用的数据来自我市*区的第二次经济普查数据中,选取10家建筑企业的财务报表-C603表为数据样本,假设经普数据挖掘结果将用于银行向这10家建筑企业提供贷款做参考为例,从企业的盈利能力、经营能力、偿债能力等三个方面选取了6个贷款时银行关注的指标作为数据分析的指标,利用聚类分析中的K-均值算法来对企业的经济效益进展研究分析。表是经过数据预处理后的数据集:企业资产净利润率%固定资产利润率%总产值利润率率%本钱费用利润率%资产负债率%盈利A38.59.111.312.267.5是B32.313.99.49.845.9是C1.80.60.70.843.1否D40.424.78.28.350.3是E25.012.711.212.948.2是F13.23.33.94.442.1否G22.36.75.66.059.6否H34.311.87.18.060.6是I35.612.516.422.846.8是J22.07.89.912.655.3是(表)4.2 算法演示为了方便结果的分析,这里我们选取企业总产值利润率和资产负债率作为数据集实验对象。选K=3,将数据集分为3个簇。第一步,任意选取三个数值作为初始簇均值,利用比较欧几里德距离差的绝对值作为函数收敛准则,根据剩余对象与初始簇均值的距离,将每个对象分布于最近的簇中。第二步,求出簇中各数值的平均值作为新的簇均值。如簇中数据为0.094,0.072.0.099,则新均值为(0.094+0.072+0.099)/3=0.088,继续比较欧几里德距离,重新指派各数值到最相似的簇。将选取的三个初始均值输入数据分析系统,可得表(总产值利润率)、表4.2.2(资产负债率)。总产值利润率 a b c K1 K2 K3初始均值0.1130.0940.0560.113,0.112.0.1640.094,0.082,0.0990.039,0.007,0.056,0.071更新均值0.1290.0880.0430.112,0.113,0.1640.094,0.099,0.082,0.0710.039,0.007,0.056 准则函数收敛 企业A,E,IB,D,H,JC,F,G表(总产值利润率)资产负债率 a b c K1K2K3初始均值67.545.943.167.5,60.6,59.645.9,50.3,48.2,46.8,55.343.1,42.1更新均值62.549.342.667.5,60.6,59.650.3,48.2,46.8,55.345.9,43.1,42.1更新均值62.550.143.767.5,60.6,59.650.3,48.2,46.8,55.345.9,43.1,42.1 准则函数收敛企业A,H,GD,E,JI,B,C,F表(资产负债率)4.3 数据分析K均值算法在本文中主要是对企业总产值率和资产负债率进展聚类分析,从而考察企业的经营状况。采取欧式距离进展聚类分析,类之间的距离采用差的绝对值便于数据的计算,为K均值算法在挖掘经普数据中的运用提供了可行性。企业总产值利润率是利润总额与企业总产值的比值,反映了企业获利能力。资产负债率是负债总额与资产总额之比,这一比率是企业偿债能力的核心指标。两个指标是银行给企业提供贷款时考察其经营状况,分析贷款规模以及经济风险的重要依据,从表二可以看出聚类后的三个企业集合:第一类企业集合A,E,I,总产值利润率为同类企业中较高,且固定资产利润率和本钱费用利润率,与资产净利润率相比根本上趋于平衡,属于经营盈利能力较好的企业;第二类企业集合B,D,H,I资产净利润率较之第一类企业根本持平,但资产负债率偏高,其经营能力并没有很好表达出来,属于盈利能力一般的企业;第三类企业C,F,G总产值利润率明显偏低,与资产负债率相比严重不平衡,这类企业并不能保证实现盈利,随时可能面临经济风险。同时假设银行向这几家企业提供贷款,参考此聚类结果,以总产值利润率8%作为考核企业盈利能力的标准,则A,E,I属于达标企业,B,D,H,I属于有风险企业,而C,F,G企业,银行则暂时不能向其提供贷款。也可以对表1进展类似结果分析。第五章 K均值算法分析系统的设计5.1 开发工具及运行环境简介环境要求操作系统(OS)Windows *P.net frameworkVersion1.1或更高开发工具VB.NET数据库SQLserver20005.2 主界面运行程序,首先进展登录,登录界面如图所示。图 系统登录界面生成的代码如下:PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim pw AsStringIf tb_password.Te*t = Then MsgBo*(密码不能为空,请输入正确的密码,!, MsgBo*Style.OKOnly, 警告)ElseDim m_pw AsNew OleDbmand m_pw.Connection = conn1 m_pw.mandTe*t = select 密码 from 密码表Try conn1.Open() pw = m_pw.E*ecuteScalarIf tb_password.Te*t = pw Then Button2.Visible = True Button3.Visible = True Button4.Visible = True Button5.Visible = True Button1.Visible = False Label1.Te*t = 管理员登陆成功!Else Label1.Te*t = 密码错误! tb_password.Te*t = EndIfCatch e* As E*ception MsgBo*(e*.Message)Finally conn1.Close()EndTryEndIf tb_password.Te*t = EndSub登录成功后,系统开场运行,首先进入主界面,如图所示。图 系统主界面系统主界面主要由三个功能模块组成,分别是:运算模块;数据管理模块;密码修改模块。5.3 修改密码修改密码模块用于修改当前用户的密码,其窗体设计界面如图所示。在修改密码窗体中,点击修改密码后,必须输入要修改的新密码,否则提示“密码不能为空,请重新输入。 生成的代码如下:PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim pwd AsStringDim m_p AsNew OleDbmand m_p.Connection = conn1 pwd = InputBo*(请在下面的文本框中输入新的密码, 修改密码, ) 获取密码的对话框If pwd Then判断密码是否为空 m_p.mandTe*t = update 密码表 set 密码= + pwd + Try conn1.Open() m_p.E*ecuteNonQuery() MsgBo*(密码修改成功!)Catch e* As E*ception MsgBo*(e*.Message)Finally conn1.Close()EndTryElse MsgBo*(密码不能为空,请重新输入!, MsgBo*Style.OKOnly, 提示)EndIfEndSub5.5 运算模块运算模块是本系统的一个重要环节,运算模块的界面如图所示:图运算模块主要是对K均值算法的实现,A1,B1,C1三个文本框用来输入随机选取的三个初始均值,比照数据输入框用来输入剩下的对象值。输入一个对象值,再点击【运算】按钮,系统会自动将该对象值指派到最相似的簇,并在A组,B组,C组三个文本框中显示出来。再点击【平均值】按钮,可以求出每个簇中的新均值,并在A2,B2,C2文本框中显示出来,如此重复计算,直到均值不再发生变化,最后聚类分组的三个簇将在A2,B2,C2中显示出来。生成的主要代码如下:Dim a() AsDouble = 0, 0, 0, 0, 0Dim b() AsDouble = 0, 0, 0, 0, 0Dim c() AsDouble = 0, 0, 0, 0, 0Dim a11() AsDouble = 0, 0, 0, 0, 0, 0, 0, 0, 0Dim b11() AsDouble = 0, 0, 0, 0, 0, 0, 0, 0, 0Dim c11() AsDouble = 0, 0, 0, 0, 0, 0, 0, 0, 0Dim aa, bb, cc AsIntegerPrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load Button3.Visible = False Button4.Visible = False Button5.Visible = False Button2.Visible = FalseEndSubPrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim num_in, a1, b1, c1, d1, d2, d3 AsDouble num_in = t4.Te*t a1 = t1.Te*t b1 = t2.Te*t c1 = t3.Te*tIf num_in 0 And a1 0 And b1 0 And c1 0 Then d1 = Math.Abs(num_in - a1) d2 = Math.Abs(num_in - b1) d3 = Math.Abs(num_in - c1)If d1 d2 ThenIf d1 d3 Then Te*tBo*3.Te*t += num_in.ToString + c(cc) = num_in cc = cc + 1Else Te*tBo*2.Te*t += num_in.ToString + b(bb) = num_in bb = bb + 1EndIf Button3.Visible = TrueElse MsgBo*(初始数据不得为空!)EndIfEndSubPrivateSub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickDim i, m, n AsIntegerDim sum_a, sum_b, sum_c AsDoubleFor i = 0 To a.Length - 1 sum_a = sum_a + a(i)Ne*t iFor m = 0 To b.Length - 1 sum_b = sum_b + b(m)Ne*t mFor n = 0 To c.Length - 1 sum_c = sum_c + c(n)Ne*t n Te*tBo*4.Te*t = sum_a / aa Te*tBo*5.Te*t = sum_b / bb Te*tBo*6.Te*t = sum_c / cc Button4.Visible = TrueEndSubPrivateSub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.ClickDim i, m, n, o, p, q AsInteger aa = bb = cc = 0Dim a1, b1, c1 AsDouble a1 = Te*tBo*4.Te*t b1 = Te*tBo*5.Te*t c1 = Te*tBo*6.Te*tFor i = 0 To a.Length - 1If a(i) 0 ThenDim d1, d2, d3 AsDouble d1 = Math.Abs(a(i) - a1) d2 = Math.Abs(a(i) - b1) d3 = Math.Abs(a(i) - c1)If d1 d2 ThenIf d1 d3 Then Te*tBo*7.Te*t += a(i).ToString + c11(cc) = a(i) cc = cc + 1Else Te*tBo*8.Te*t += a(i).ToString + b11(bb) = a(i) bb = bb + 1EndIfElse i = i + 1EndIfNe*t iFor m = 0 To b.Length - 1If b(m) 0 ThenDim d1, d2, d3 AsDouble d1 = Math.Abs(b(m) - a1) d2 = Math.Abs(b(m) - b1) d3 = Math.Abs(b(m) - c1)If d1 d2 ThenIf d1 d3 Then Te*tBo*7.Te*t += b(m).ToString + c11(cc) = b(m) cc = cc + 1Else Te*tBo*8.Te*t += b(m).ToString + b11(bb) = b(m) bb = bb + 1EndIfElse m = m + 1EndIfNe*t mFor n = 0 To c.Length - 1If c(n) 0 ThenDim d1, d2, d3 AsDouble d1 = Math.Abs(c(n) - a1) d2 = Math.Abs(c(n) - b1) d3 = Math.Abs(c(n) - c1)If d1 d2 ThenIf d1 d3 Then Te*tBo*7.Te*t += c(n).ToString + c11(cc) = c(n) cc = cc + 1Else Te*tBo*8.Te*t += c(n).ToString + b11(bb) = c(n) bb = bb + 1EndIfElse n = n + 1EndIfNe*t n Button5.Visible = TrueEndSubPrivateSub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.ClickDim i, m, n, i1, m1, n1 AsIntegerDim sum_a, sum_b, sum_c AsDoubleFor i = 0 To a11.Length - 1If a11(i) 0 Then sum_a = sum_a + a11(i)Else i1 = i1 + 1EndIfNe*t iFor m = 0 To b11.Length - 1If b11(m) 0 Then sum_b = sum_b + b11(m)Else m1 = m1 + 1EndIfNe*t mFor n = 0 To c11.Length - 1If c11(n) 0 Then sum_c = sum_c + c11(n)Else n1 = n1 + 1EndIfNe*t n Te*tBo*12.Te*t = sum_a / (a11.Length - i1) Te*tBo*11.Te*t = sum_b / (b11.Length - m1) Te*tBo*10.Te*t = sum_c / (c11.Length - n1) Button2.Visible = TrueEndSubPrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim i, m, n, o, p, q AsInteger aa = bb = cc = 0Dim a1, b1, c1 AsDouble a1 = Te*tBo*4.Te*t b1 = Te*tBo*5.Te*t c1 = Te*tBo*6.Te*tFor i = 0 To a11.Length - 1If a11(i) 0 ThenDim d1, d2, d3 AsDouble d1 = Math.Abs(a11(i) - a1) d2 = Math.Abs(a11(i) - b1) d3 = Math.Abs(a11(i) - c1)If d1 d2 ThenIf d1 d3 Then Te*tBo*13.Te*t += a11(i).ToString + Else Te*tBo*14.Te*t += a11(i).ToString + EndIfEndIfNe*t iFor m = 0 To b11.Length - 1If b11(m) 0 ThenDim d1, d2, d3 AsDouble d1 = Math.Abs(b11(m) - a1) d2 = Math.Abs
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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