基于数据挖掘技术的学生成绩分析系统(完整资料)_第1页
基于数据挖掘技术的学生成绩分析系统(完整资料)_第2页
基于数据挖掘技术的学生成绩分析系统(完整资料)_第3页
基于数据挖掘技术的学生成绩分析系统(完整资料)_第4页
基于数据挖掘技术的学生成绩分析系统(完整资料)_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

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

文档简介

基于数据挖掘技术的学生成绩分析系统(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)

基于数据挖掘技术的学生成绩分析系统(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)本科毕业设计(论文)题目:基于数据挖掘技术的学生成绩分析系统的设计与实现姓名张宇恒学院软件学院专业软件工程班级2010211503学号10212099班内序号01指导教师牛琨2014年5月基于数据挖掘技术的学生成绩分析系统的设计与实现摘要随着科技的不断发展和中国教育制度的日趋完善,各大高校对教务管理工作提出了越来越高的要求.各大高校不再满足于传统的成绩管理方式,开始运用数据挖掘领域的先进方法对学生成绩进行分析和研究。教务工作人员使用关联规则挖掘算法分析课程间的内在联系,可为学校的改进教学工作提供依据,并为学生的选课和学业规划提供指导;对学生进行分类,让学生能够对自己在校期间所学课程的成绩有一个全面而清晰的了解,方便学生扬长避短选择选修课程,及时对可能在学习上遇到困难的学生进行预警;运用聚类算法对学生进行聚类,找出具有共同特征的学生,并对不同学生群体分别采取不同的教学方法,初步体现因材施教的教育理念,最终探索出适合中国国情和教育制度的个性化培养模式。本系统采用Eclipse作为开发平台,以Java作为开发语言。通过对高校学生成绩分析系统的需求分析,本系统设计实现了可以使用关联规则挖掘算法分析课程间的内在联系,使用分类算法对学生进行分类,使用聚类算法对学生进行聚类.希望本系统能对今后高校学生成绩分析系统的开发提供一定的参考价值.关键词成绩分析关联规则分类聚类DesignandimplementationofstudentachievementanalysissystembasedondataminingtechnologyABSTRACTWiththecontinuousdevelopmentoftechnologyandtheChineseeducationsystemmaturing,Universitieshaveputhigherrequirementstotheiracademicadministration.Universitiesarenolongersatisfiedwithtraditionalperformancemanagement,begantoapplyadvanceddataminingmethodstoanalyzeandstudystudents’achievement。Staffofacademicaffairsuseassociationruleminingalgorithmtoanalysisintrinsiclinkbetweencourses,whichcanprovidethebasisforimprovingtheteachingoftheschoolandguidanceforthestudent'senrollmentandacademicplanning.Usingclassificationalgorithmtoclassifythestudents,sothatstudentscanhaveaclearunderstandingintheiracademicperformance,andfacilitatestudentsinselectingcourses.Warningstudentswhoprobablyfacedifficultiesintheacademic.Usingclusteringalgorithmtoclusterthestudentstoidentifystudentswithcommoncharacteristics,sothatteacherscanteachdifferentstudentsindifferentway,embodiestheconceptofindividualizededucation,finallydiscoverapersonalizededucationmodel,whichissuitableforChina’snationalconditionsandeducationsystem。ThesystemwasdevelopedinEclipse,withjavaasadevelopmentlanguage。Byanalyzingtheneedofstudentachievementanalysissystem,thissystemusesassociationruleminingalgorithmtoanalysisintrinsiclinkbetweencourses,usesclassificationalgorithmtoclassifythestudents,usesclusteringalgorithmtoclusterthestudentstoidentifystudents.Ihopethissystemcanprovidesomereferencevaluetothefuturedevelopmentofcollegestudents’achievementanalysissystem。KEYWORDSachievementanalysisassociationrulesclassificationclustering目录TOC\o"1—3"\h\z\uHYPERLINK\l"_Toc388282754”第一章引言PAGEREF_Toc388282754\h1HYPERLINK\l"_Toc388282755"1.1选题的背景和意义PAGEREF_Toc388282755\h1HYPERLINK\l"_Toc388282756"1。2个性化培养的重要意义PAGEREF_Toc388282756\h11.3国内外个性化培养的现状2HYPERLINK\l"_Toc388282758"1.3.1国外个性化培养现状PAGEREF_Toc388282758\h21.3.2国内个性化培养现状PAGEREF_Toc388282759\h3HYPERLINK\l"_Toc388282760"1.4成绩分析系统的现状和存在的问题PAGEREF_Toc388282760\h3第二章相关技术PAGEREF_Toc388282763\h4HYPERLINK\l"_Toc388282764”2.1相关数据挖掘知识理论PAGEREF_Toc388282764\h4HYPERLINK\l”_Toc388282765"2。1.1数据挖掘PAGEREF_Toc388282765\h42。1.2关联规则PAGEREF_Toc388282766\h5HYPERLINK\l"_Toc388282767”2.1.3分类PAGEREF_Toc388282767\h62.1.4聚类PAGEREF_Toc388282768\h6HYPERLINK\l"_Toc388282769"2.2开发工具的选择PAGEREF_Toc388282769\h7HYPERLINK\l”_Toc388282770"2。2.1Eclipse简介PAGEREF_Toc388282770\h72。2.2Eclipse的优势PAGEREF_Toc388282771\h7HYPERLINK\l"_Toc388282772"第三章系统分析PAGEREF_Toc388282772\h8HYPERLINK\l"_Toc388282773"3.1软件过程模型PAGEREF_Toc388282773\h8HYPERLINK\l"_Toc388282774"3。2需求分析PAGEREF_Toc388282774\h9HYPERLINK\l"_Toc388282775"3.2.1用例图PAGEREF_Toc388282775\h93.2.2需求的结构化描述PAGEREF_Toc388282776\h10HYPERLINK\l”_Toc388282777"第四章系统设计与实现PAGEREF_Toc388282777\h144.1系统概要设计PAGEREF_Toc388282778\h144.2.4分类PAGEREF_Toc388282785\h194.2。5聚类388282786\h204。2。6导出文件PAGEREF_Toc388282787\h224。3系统实现PAGEREF_Toc388282788\h234。3。1文件导入数据PAGEREF_Toc388282789\h234.3.2数据预处理PAGEREF_Toc388282790\h234.3。3关联规则PAGEREF_Toc388282791\h234.3。4分类PAGEREF_Toc388282792\h244.3。5聚类PAGEREF_Toc388282793\h244。3.6导出文件PAGEREF_Toc388282794\h254.4系统应用PAGEREF_Toc388282795\h26第五章结论PAGEREF_Toc388282796\h30参考文献388282797\h31HYPERLINK\l"_Toc388282798”致谢PAGEREF_Toc388282798\h32第一章引言1.1选题的背景和意义进入新世纪以来,我国的高等教育事业正在快速发展,各个领域的重大科研成果不断涌现,各知名院校的国际排名和知名度也不断攀升.然而在这些光鲜靓丽的学术成果之下,各大高校对学生的管理工作却并没有跟上时代的步伐。其实对于给大高校来说,学生的考试成绩是一笔非常宝贵的财富。学生的成绩是反映学校教学水平的最直接的第一手资料,这些数据可以为学校改进招生和教学工作提供重要依据。然而,学生成绩的管理工作并没有引起高校足够的重视,尤其是在对学生成绩的分析处理方面,绝大部分高校还停留在较为原始的数据库管理和查询阶段,没有对学生的成绩进行横向和纵向的对比研究,也缺乏对各学科之间成绩内在联系的挖掘。学科成绩间的内在联系是广泛存在于各个专业的各门课程中的,学科成绩间内在联系的分析和研究对对学生和学校都有着十分重要的意义。通过了解学科成绩间存在的内在联系,学生可以清楚地认识到基础课程、先导课程的重要性,并且在选择选修课的时候,做到扬长避短,通过更多地选择与自己优势课程成绩正相关的课程来帮助提高成绩.而对于学校来说,分析学科成绩间的内在联系可以为各个专业的课程设置提供重要的参考依据.在教务工作人员进行排课工作时,可参考对往届学生成绩的分析结果来调整课程的排布顺序,达到不断优化课程设置的目的.个性化培养和发展是当今高等教育发展的主流方向,以往填鸭式、工厂式的教学方式已经被先进的教育理念所替代,而中国教育制度中流水线式的培养模式一直是一个被广泛诟病、急需解决的问题.在这一方面,我们可以借鉴发达国家的先进经验,结合我国高等教育发展现状,探索并逐步建立由中国特色的、适合我国国情的个性化培养体系。目前可以通过对学生的成绩进行挖掘和分析,对学生进行分群,为具有一定共同特征的学生制定个性化培养方案。基于上述情况,本题目以完善高校培养制度和制定学生个性化培养方案为背景,通过运用数据挖掘及相关专业技术,设计并实现学生成绩分析系统.1.2个性化培养的重要意义个性化培养其实并不是一个新颖的概念,2000多年前,我国著名教育家孔子就提出了因材施教的教育理念,并且身体力行地用因材施教的方法教育自己的弟子.在2000多年后的今天,多元化人才培养是高等教育发展的必然趋势.个性化培养不仅是实现多元化人才培养最重要的方式,更是我国建立创新型国家战略对高等教育提出的必然需求。只有摒弃传统的流水线式培养模式,在高等院校中全面推行个性化培养,我国高等教育才能真正完成人才培养方式的革命。(1)个性化培养是高等教育发展的现实需要个性化教育,是社会对大学生的预期变化的结果.在当今时代,社会要求每个人都能发挥自己独特而不可替代的作用,教育的使命也悄然转变为激发每一名学生的内在潜能。在高等院校推行个性化教育是中国高等教育的发展方向,更是世界大多数国家的共识。随着大学的扩招,原本曲高和寡的高等教育已经走进了普罗大众的生活。但是大众化的高等教育不等于流水线式的培养,相反普及高等教育的意义正在于让更多的人进入大学,按照自己的兴趣和自身特点选择专业进行学习,成为独特的人才.(2)个性化培养是创新型国家战略的必然要求2006年,国家制定了建设创新型国家的重大决策。增强自主创新能力是建设创新型国家战略中最重要的一环,而作为高端人才培养基地的众多高等院校毫无疑问成为了自主创新的排头兵.受制于特殊的国情和几千年的科举传统,我国目前的教育模式仍然是以死记硬背为主要学习手段,以分数作为评价学生优劣的主要甚至是唯一标准.在这种教育模式中培养出来的学生中,相当一部分是与社会脱节的、毫无创新能力可言的“考试机器”。现有的人才培养模式明显滞后于经济社会的发展,更是与建设创新型国家战略相违背的。只有立即转变人才培养模式,真正实现以人为本的个性化培养,才能使高等院校成为培养创新型人才的土壤.因此,以培养多元化人才为主导的个性化培养模式是我国高等教育发展的必然趋势.1.3国内外个性化培养的现状1.3.1国外个性化培养现状随着高等教育的不断发展,在发达国家学生个性化发展的理念已经深入人心。其中高等教育最为发达同时也是中国留学生首选目的地的美国毫无疑问走在了世界的前列。以常青藤联盟为代表的美国知名大学在新生录取时并不会给新生确定专业,而是根据学生的意愿将学生分进不同的基础学院,允许学生在学院内自由地选择课程。在完成一到两年的基础学习后,学生可以根据所学的课程和个人兴趣爱好自由选择自己的专业.这是一种非常人性化的人才培养模式。学生在入学时往往对自己所选择的专业并不十分了解,有的甚至是一无所知,仅凭一时兴起做出了选择。在这种情况下确定学生的专业显然不是最合理选择的。当学生完成了一段时间的学习后,无论是对所学的专业,还是对自身的学术能力和兴趣爱好都有了一个更深层次的认识。在这个时候学生对专业的选择往往会更加理性,这无论对学生还是对学校来说都是大有裨益的。而国际知名的布朗大学更是敢为天下先地取消了必修课制度,学生可以完全根据自己的兴趣选择学校提供的任何课程,修满学校要求的学分后即可毕业。学校根据学生选择的课程来给学生颁发不同专业的毕业证书。布朗大学认为:没有人会告诉学生应该上什么课或怎样做,只要有兴趣,学生可以自由的发展。但是这种教学模式一度受到了美国教育界的广泛非议。相比布朗大学,其他常青藤盟校显得保守了许多,或是设置了一些必修课,或是对学生可以选择的课程做出了一系列规定,总而言之,布朗大学超前的教育理念并没有被其他大学所广泛接受.1.3。2国内个性化培养现状国内的高等院校仍然遵循着传统的人才培养模式,在当今的时代中已经暴露出了诸如学科专业结构的设置缺乏整体思考、缺少系统设计;课程体系不够综合、开设比例不够合理;考核评价体系知识记忆、轻创新实践等方面的问题。在高校中探索并发展个性化培养模式已经成为了绝大多数教育界人士的共识。相比较国外已经比较成熟的个性化培养方案而言,国内的个性化培养方案尚处在起步摸索阶段,绝大多数国内高校的课程设置都已必修课程为主,辅以少量与专业相关的选修课程供学生选择,离真正的个性化培养还有比较大的差距。学生的专业也都是在招生是就已经确定了,为学生提供的更改专业的机会也比较少,与高等教育比较发达的国家还有较大差距。1.4成绩分析系统的现状和存在的问题1.4.1成绩分析系统开发使用的现状对于高校来说,教务管理是他的核心工作之一,而成绩分析能力的高低是衡量教务管理水平的一个关键指标。教务管理的水平对高校教学水平的进步和发展有着至关重要的意义。在当今社会,随着教育改革的逐步深入,和科学技术的发展社会对高校的成绩分析管理提出了许多新的要求,“规范化、信息化、网络化”是学校教学管理的必然选择.建立并应用一套优秀的成绩分析系统是提升教务管理水平的关键所在。目前,各高校普遍建立了教务信息管理系统,其中很多高校还根据自身需求建有成绩分析系统。此类系统一般采用关系型数据模型,数据库中主要包括学生的姓名、学号、专业、考试成绩的个人信息。而每个信息又与其它信息相关联,形成了庞大的、涵盖整个教务管理过程的数据信息网。教务管理信息系统实现了教务信息的集中管理、分散操作、信息共享,使传统的教务管理向数字化、无纸化、智能化、综合化及多元化的方向发展。借助现代信息技术,不同形式的成绩分析系统正在利用网络优势实现资源的共享、权限的信息录入、查询及修改等,改变了传统教务管理模式下信息数据层层传达及存储的模式,提高了信息的实效性,实现了真正意义上的信息交换与互动。1.4。2成绩分析系统建设存在的问题然而需要正视的是,我国高校的学生成绩分析系统仍然存在着一定问题,主要表现在:功能需求不明确,设计不尽完善各所高校间教务管理的流程有所不同,教务管理人员如何根据自身学校的特点建立成绩分析系统是一个具有普遍性问题。目前建成的成绩分析系统,大多都没有严格遵循软件项目开发流程,对功能需求的分析做的不够彻底,设计也不够完善,难以达到理想的效果.其中一个最主要的原因是使用者和设计者没能进行充分的沟通,设计人员对教务管理流程并不熟悉,和教学效果体现的理解也不透彻,使得现今的成绩分析系统大多不尽如人意。没有运用数据挖掘技术对成绩进行分析当今大部分高校对学生成绩管理的理解还停留在较为原始的数据库管理和查询阶段,对学生成绩的分析多以简单地求平均分、中位数、计算方差和标准差、统计优秀率及格率等方式进行.对于很多教务工作者来说,数据挖掘技术是一个更多的运用在商业领域的、离教务管理很遥远的东西。其实在美国等发达国家,数据挖掘技术早已走进了教务工作,成为了教务工作人员对学生成绩进行分析的重要手段。有一些名校甚至拥有一支数据挖掘技术方面的专业团队来对学生成绩进行分析。这些专业的分析结果不仅为学校改进教学工作提供了重要的参考依据,也为学生选择选修课和今后的发展方向提供了极大的便利。第二章相关技术2.1相关数据挖掘知识理论2.1.1数据挖掘数据挖掘(Datamining),又译为资料探勘、数据采矿。它是数据库知识发现(Knowledge-DiscoveryinDatabases,KDD)中的一个步骤.数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。数据挖掘是目前人工智能技术和数据库领域的研究前沿.数据挖掘是指从海量数据中发现出隐含在表象之下的、不为人所知的并有一定价值的信息的过程。数据挖掘的实质是一种决策支持过程,它主要基于人工智能、模式识别、统计学等相关技术,分析规模庞大的数据,从中找出某种规律并做出归纳性的推理,帮助决策者提高决策的准确性。数据准备、寻找规律和规律表示是数据挖掘的三个基本步骤。数据准备是指从数据源中选取相关的数据并生成可用于数据挖掘工作的数据集;寻找规律是指通过一定方法将数据集中所隐含的规律挖掘出来;规律表示是指以用户容易理解的方式(尤其是那些并不熟悉数据挖掘技术的用户)将挖掘出的规律呈现给用户.数据挖掘有填补缺失值,过滤噪声点、关联规则挖掘、分类、聚类、异常分析等任务.近年来,“大数据”成为了一个非常流行的词汇,这意味着数据挖掘技术已经进入了我们生活的方方面面。这其中最为主要的原因是我们身处在信息爆炸的时代,全世界每天产生的信息都以指数级增长,我们每天所接触的信息甚至超过几百年前一个人一生所能接触到的信息的总和.如果不对数据进行处理,如此海量的数据对于人类来说就是电子垃圾。通过数据挖掘技术,人们可以将原本无法处理的海量数据转变为有用且有限的信息和知识,充分发挥信息的价值。2.1.2关联规则关联规则是指大量数据中项集之间有趣的关联或相关联系。如果两项或多项属性之间存在关联,那么其中一项的属性就可以依据其他属性值进行预测。关联规则挖掘在数据挖掘中是一个重要的研究课题,一直是业界的研究热点。“啤酒与尿布”的故事是对关联规则挖掘的生动阐释。世界著名的沃尔玛超市在一次对原始销售数据的分析中意外发现:和尿布一起销售最多的商品竟然是啤酒!按照人们的常规思维,和尿布一起销售的应该是奶粉奶瓶一类的婴儿用品,尿布和啤酒可谓风马牛不相及。但沃尔玛超市的工作人员在运用数据挖掘技术对销售信息进行分析后,成功揭示了“啤酒与尿布”的内在联系:在美国,很多男士下班之后经常要遵照太太的指示去超市去给孩子购买尿布。而他们其中三到四成的人会在同时为自己购买一些啤酒。若不是借助了数据挖掘技术,很难想象沃尔玛能够在海量的销售信息中发现这一规律。Apriori算法是一种应用最为广泛的统计关联规则频繁项集的算法,其核心是基于两阶段频集思想的递归算法。在Apriori算法中,所有大于最小支持度的集都称为频繁项集。该算法的基本思想是:首先找出所有的频繁项集,然后由频繁项集产生强关联规则,而这些规则必须同时满足最小支持度和最小置信度.由于采用了递归的方法,Apriori算法有两个主要的缺点:会产生大量的候选集,以及需要对数据进行多次扫描.在数据量大于一定规模时,Apriori算法的时间复杂度会比较惊人。2。1.3分类分类是一种重要的数据分析形式,它提取刻画重要的数据类的模型。这种模型称为分类器,预测分类的类标号。分类可用于预测,从历史数据记录中自动推导出给定数据的推广描述,从而对未来的数据进行类预测.分类具有广泛的应用,例如医疗诊断、信用卡系统的信用分级、图像模式识别等。决策树算法是一种非常典型的算法。在决策树算法中,首先要对数据进行处理,生成可读的规则和决策树,然后使用决策对其他数据进行分析和判断。从本质上说,决策树算法是通过一系列规则对数据进行分类的过程。决策树算法在20世纪60年代被首次提出,到了70年代末,JRossQuinlan提出了ID3算法,此算法的目的在于减少树的深度,但是忽略了叶子数目的研究。C4.5算法是其改进算法,在缺值处理、剪枝技术和派生规则等方面作了较大改进。使其既适用于分类问题,又适用于回归问题。构造的决策树是否精度足够高、规模足够小是评价一个决策树算法是否优秀的关键标准。决策树构造可以分为两个步骤.首先是由训练样本集生成决策树的过程。在大多数情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。然后是对决策树的剪枝,其本质是对决策树进行检验和校正的过程,主要方法是用新数据校验决策树生成过程中得出的规则,并将影响准确性的分枝剪除.2.1。4聚类将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异.“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标.k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise)是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类.DBSCAN需要二个参数:扫描半径和最小包含点数。任选一个未被访问的点开始,找出与其距离在最小半径之内的所有附近点。如果附近点的数量大于等于最小包含点数,则当前点与其附近点形成一个簇,并且出发点被标记为已访问.然后递归,以相同的方法处理该簇内所有未被标记为已访问的点,从而对簇进行扩展。如果附近点的数量小于最小包含点数,则该点暂时被标记作为噪声点。如果簇充分地被扩展,即簇内的所有点被标记为已访问,然后用同样的算法去处理未被访问的点。2.2开发工具的选择2。2.1Eclipse简介Eclipse是一个开源的、基于Java技术的可扩展开发平台.就Eclipse本身而言,它只是一个框架和一组服务,主要用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(JDK)。虽然对于绝大多数用户来说,Eclipse只是一个Java集成开发环境(IDE),但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug—inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具.尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出.Eclipse框架还可作为与软件开发无关的其他应用程序类型的基础,比如内存管理系统。2.2。2Eclipse的优势Eclipse是开源软件。这表明Eclipse不仅不收取使用者的任何费用,而且使用者还可以通过研究网络上、尤其是各大编程论坛上公开的源代码进行学习。对于使用者尤其是初学者来说,世界一流软件工程师的代码是一笔非常宝贵的财富,学习他们优秀的编程风格可以帮助初学者迅速提高自己的编程能力.Eclipse采用插件机制,这意味着Eclipse是真正可扩展并可配置的。对于使用者来说Eclipse就好象一间仓库,你可以随时在仓库里存放任何东西,也可以很方便地将不再需要的东西从仓库中取出来。在互联网上有大量免收费和免费的插件,使用者可以通过合理使用插件极大地简化编程工作.虽然绝大多数开发者仅仅把Eclipse作为一个Java开发系统,但实际上Eclipse支持多种类的开发语言。从本质上讲,Eclipse只提供了一个能够扩展系统功能的最小核心,只要安装相应语言的插件,Eclipse就可以支持不同的开发语言。目前,Eclipse已经可以支持C/C++、COBOL、PHP、Perl、Python等多种语言.这显著降低了多语言程序开发和程序移植的难度.Eclipse支持多种开发环境,这使得开发者可以选择自己最熟悉的平台来进行开发工作。主流的操作系统都得到了支持,如Windows、MacOS和Linux等.Eclipse对每个平台都有不同的图形工具包,这使得在Eclipse上开发的程序可以最大限度地适应不同开发环境的特性。Eclipse基于业界领先的OSGi规范.1999年,SunMicrosystems、IBM、爱立信等等公司首先推出了OSGi规范。其服务涵盖:服务网关、汽车、移动电话、工业自动化、建筑物自动化、PDA网格计算、娱乐、IDE等众多领域。OSGi规范以微内核形式运行,故可以实现热插拔、动态改变行为等软件从业者梦寐以求的功能。从3。1版本开始,Eclipse果断放弃了原本已经获得业界广泛认可的框架,采用OSGi作为其架构.从3.2版本开始,Eclipse提供了基于OSGi开发的支持,开发者可以利用其开发基于OSGi的系统了。Eclipse堪称业界人机的标杆之作.Eclipse提供了全新的SWT/JFaceAPI界面,全面取代了以往SWT/Swing单调、沉闷的风格.方便使用者开发基于本地的具有丰富图形界面的应用程序,备受广大软件开发工作者的赞誉。.Eclipse基金会吸收了大量学术研究机构、商业组织,领导Eclipse的长远规划和发展,其先进理念使得Eclipse始终处于业界领先地位.综合这些原因,我选用了Eclipse作为开发工具。第三章系统分析3。1软件过程模型在选择软件过程模型时,首先考虑本系统的需求较为明确且不易发生变更,因此在开发初期选择了瀑布模型作为过程模型。瀑布模型广泛应用于软件项目的开发中,该模型将软件开发过程划分成描述、设计、开发有效性验证等界限分明且独立的过程阶段,适用于需求明确且不易变更的软件项目。但在开发的过程中,由于本人的需求分析能力有限,对任务书的需求分析工作做得不够充分,需要经常和导师讨论需求,导致需求变更较为频繁,需求分析阶段过分拉长。而且在学院和导师需要经常检查进度的情况下,瀑布模型显然是不适当的,因此改用了增量式开发模型。增量式开发的优点是可以很快开发出一个具有部分功能的、可使用的版本,而且适应需求变更的成本也比较低,比较适合本系统的开发工作。结合本系统的任务目标和学校的进度要求,我将本系统的开发工作分为4个版本来进行。第一个最初始的版本实现了对数据的预处理和关联规则的挖掘功能.第二个版本即中期检查的版本在第一个版本的基础上实现了分类功能和文件导入数据功能。第三个版本在之前版本的基础上增加了聚类功能,截止到此版本,主要的功能算法已经实现.第四个版本也就是最终的版本,为系统设计了交互界面。版本1并行活动版本1并行活动描述描述版本2版本2开发版本开发版本3概要描述概要描述有效性验证有效性验证版本4版本4图3-1增量式开发模型图在系统开发的过程中,描述和开发工作交织在一起.每完成一个模块或一个版本,都会进行有效性验证。通过验证后才会进入下一个模块或版本的开发3。2需求分析3.2。1用例图图3—2系统用例图系统的使用者—-教务管理人员对系统有包括导入文件、数据预处理、关联规则挖掘、分类、聚类和导出文件在内的六大需求3.2.2需求的结构化描述使用结构化自然语言来描述需求,保留了自然语言在表达能力和易懂性方面的优势,让没有专业背景的用户也能比较容易的理解需求;同时也约束了描述的一致性,降低了产生歧义的可能性.表3—1文件导入用例用例1名称文件导入功能将数据从文件导入系统中以备各算法调用描述将文件中的数据存入系统的数据结构中输入学生的姓名,各门课程的成绩来源数据文件输出学生的姓名,各门课程的成绩目的地系统的所定义的数据结构行动系统为每一个学生初始化一个结构体,分别读取每个学生的姓名和成绩数据,并存储到结构体中对应的成员里前置条件结构体已被定义,文件内数据的数据类型和顺序合法后置条件数据被完整存入结构体中此用例属于文件导入需求表3-2数据预处理用例用例2名称数据预处理功能对导入系统的学生数据进行预处理描述将每门课程的最高分和最低分拉平,并对其他成绩进行等比例缩放输入学生各门课程的成绩来源结构体输出学生各门课程的新成绩目的地结构体行动系统从数据结构中读取全体学生各门课程的成绩,通过算法找出其中的最高分和最低分。分别将其他每一门课程的最高分和最低分乘以一个比例系数,使之与该最高分和最低分相等,并对该门课程内的其他成绩均进行乘以该比例系数的操作。前置条件数据已被成功导入结构体中后置条件输出新的学生成绩到结构体中此用例属于数据预处理需求表3-3判断相关性用例用例3名称相关性功能计算学生成绩间的相关性描述将学生各门功课的成绩转化为每两门课程成绩的相关性输入学生各门课程的成绩来源结构体输出成绩相关课程的序号目的地关联统计数组行动对比学生每两门课程的成绩,按照一定标准判断成绩是否相关。若相关则将这两门课程的编号输入到相应的数据结构中存储起来前置条件数据预处理完毕后置条件生成课程相关性数据此用例属于关联规则需求表3-4统计频繁项用例用例4名称频繁项功能找出相关性数据中的频繁项描述统计相关性数据中各项的重复次数输入课程相关性数据来源结构体输出成绩相关联的课程目的地关联规则数组行动记录相关性数据中各项的重复次数,用重复次数除以学生数得到每个相关性的置信度,输出大于最小置信度的数据前置条件课程相关性数据已生成后置条件生成关联规则并输出此用例属于关联规则需求表3-5判断高风险学生用例用例5名称挂科学生功能输出挂科风险较高的学生描述分析学生现有成绩(平均分,是否挂科),输出挂科风险较高的学生输入学生的姓名,各门课程的成绩来源结构体输出学生的姓名目的地高风险学生数组行动统计学生是否有过挂科经历,计算没有挂科经历学生的平均分,输出有挂科经历和平均分小于一定值的学生前置条件数据已被成功导入结构体中后置条件学生被成功分类并输出挂科风险较高的学生此用例属于分类需求表3-6判断高风险课程用例用例6名称高风险课程功能输出挂科风险较高的课程描述分析所有课程的挂科风险,输出挂科风险较高的课程输入学生各门课程的成绩来源结构体输出课程名目的地高风险课程数组行动计算所有课程的挂科率,若某课程的挂科率高于一定值,则认定该课程为高风险课程,输出所有高风险课程前置条件数据已被成功导入结构体中后置条件课程被成功分类并输出高风险课程此用例属于分类需求表3-7聚类用例用例7名称聚类功能对学生进行聚类描述识别出噪声点,将学生划入不同的簇,输出聚类结果输入学生的姓名,各门课程的成绩来源结构体输出学生各门课程的新成绩目的地聚类数组行动系统依次读取每个学生的信息,通过聚类算法判断其是否为噪声点,对不是噪声点的学生判断其应该被归入哪一个簇,直到所有学生都判断完毕前置条件数据已被成功导入结构体中后置条件学生被成功聚类并输出聚类结果此用例属于聚类需求表3-8导出文件用例用例8名称导出文件功能将挖掘结果导出至文件描述将各数组中存储的挖掘结果导出至文件输入文件地址,挖掘结果来源各数组输出挖掘结果目的地文件行动系统创建文件,依次读取每个数组内的信息,输出到文件前置条件挖掘结果成功存入数组内后置条件文件成功生成并写入数据此用例属于导出文件需求第四章系统设计与实现4.1系统概要设计4.1。1系统体系结构本系统使用容器体系结构。当一个系统需要生成大量数据并持久保存时,一般使用容器体系结构。容器体系结构的优点是各个功能组件是相互独立的,它们无需知道其他组件的存在,在运行时也不会受到其他组件的影响。一个组件的变更可以传播到其他所有的组件,所有数据可以得到一致的管理。具体到本系统来说,采用容器体系结构可以使挖掘结果持久保存,可以比较方便的管理学生信息,各组件之间交互性不强,可避免因一个组件发生错误影响到其他组件的功能.交互器交互器人机交互导入文件人机交互导入文件导出文件导出文件数据预处理器聚类数据预处理器聚类器项目容器关联规则计算缩放比例生成簇分类结果识别噪声点学生信息缩放数据计算最值关联规则计算缩放比例生成簇分类结果识别噪声点学生信息缩放数据计算最值聚类结果聚类结果分类器分类器关联规则挖掘器课程分类学生分类课程分类学生分类生成规则分析关联生成规则分析关联图4—1学生成绩分析系统体系结构图系统包括导入数据、数据预处理、关联规则、分类和聚类五个组件,组件间相互平行互不干涉.所有组件共享的学生信息和各组件生成的挖掘结果存放在项目容器中,这提高了数据传输的效率.各组件下有若干子功能模块4.1.2系统数据结构采用结构体数组记录学生信息,每一个结构体代表一个学生。每个结构体内有用字符串数组存储的学生姓名,用一维整数数组存储的学生成绩(若学生成绩保留小数可改用浮点数数组),用整数存储的平均分。还可根据各学校的具体需求加入性别、学号、学院、专业等信息.采用二维整数数组记录关联规则,二维数组的行数和列数与课程数相等,数组中的每个元素代表其行标和列标所对应的两门课程的关联。采用一维整数数组记录高风险课程的编号。采用二维字符串数组记录高风险学生和和聚类结果,每一行对应一名学生。4.2系统详细设计4.2。1文件导入数据图4-2文件导入数据时序图首先用户将导入数据文件的请求和数据文件的地址发送给openfile,openfile对系统中已经定义的结构体进行初始化。初始化完成后,openfile打开文件并开始从文件中读取数据,并存入结构体中.循环这一过程,直到所有的数据都被存入了结构体中,openfile关闭文件,并向用户输出“成功导入文件”4。2.2数据预处理本系统所采用的数据为大学生各门课程的考试成绩,均为百分制,数据的准确性、完整性、一致性和可信性都比较高,无需涉及填补缺失值和过滤噪声点等处理,数据预处理的工作较为简单。考虑到不同课程间难易程度存在区别和阅卷教师存在主观差异,需对数据做出一定处理。例如全体学生中课程A的最高分为95分,最低分为55分,课程B的最高分为85分,最低分为35分,应对课程A和课程B的成绩进行一定处理,使得A和B的最高分处在同一成绩区间,最低分也处在同一成绩区间。按照一些教育领域中用百分比(即排名)替代分数来表述成绩是一个可行的办法,但这种方法有其一定的局限性。对于选拔性考试来说,这种办法是非常合理的,因为选拔性考试只按照成绩高低排序择优录取,而无需考虑这些成绩之间差距的大小。但对于本系统涉及到的算法来说,成绩间的差值显然是不能忽略的.若采用排名的方式代替分数表述成绩,在一些特定情况下会对产生较大误差.如某一门课程中,有5名学生得分82分,10名学生得分81分,1名学生得分80分。则得到82分的学生和得到80分的学生之间的相差15个名次,显然远大于两者之间2分的分数差。故对成绩的预处理采用的方法为选取一门课程的最高分和最低分为标准,将其他课程所有学生的成绩等比例放大或缩小,使得所有课程的最高分与最低分一致,消除课程难度的客观因素和阅卷教师的主观因素对成绩的影响.一些国外大学用ABCD的方式取代百分制对学生进行评价,当学生成绩中存在不同评价标准的成绩时,应对成绩进行处理,统一标准。考虑到绝大部分国内大学所有课程均采用百分制对学生进行评价,故本系统不再进行成绩转换功能的开发。图4—3数据预处理时序图用户向pretreatment发出数据预处理请求,pretreatment从结构体中读取学生成绩信息并进行预处理,预处理结束后将新的成绩再存入结构体中4。2.3关联规则关联规则功能模块的关键点有两个,一是用什么样的标准判断两门课程是否存在关联,二是如何挖掘各门课程的关联规则。对于如何判断两门课程存在关联的问题,从现有的数据来看,用两门课程成绩的接近程度来判断是否存在关联是一个比较合理的方式.判断两门课程的成绩是否接近有等宽和等深两种方式.等宽的方式为将所有学生各门课程的成绩按照一定的宽度分为若干个区间(根据大多数高校的计分制度,本系统按照每10分一个区间将成绩分为10个区间),处在一个成绩区间内的课程即认为成绩足够接近存在关联。但这种判断标准有一定缺陷,在一些特定情况下会产生较大的误差。例如某学生课程A的成绩为91分,课程B的成绩为89分,课程C的成绩为81分。按照等宽的判断标准,课程B和课程C存在关联,课程A与课程B和C均无关联。但是按照我们的常识来讲,毫无疑问课程A和课程B的成绩更为接近,二者仅相差2分,应该认定为存在关联。导致这种现象的原因是衡量两门课程是否接近应该依据两门课程成绩的差值,无需考虑成绩的绝对值.而采用等宽方式判断成绩是否接近的方法无疑会受到成绩绝对值的影响.之后我尝试采用等深的方式判断课程关联,在一定程度上避免绝对值影响判断的问题,但是又带来了新的问题,即如何划定深度。由于各高校在计算考试成绩时无需考虑成绩差值,所以在这方面无经验和先例可循.若采用动态划定深度的方式(即根据每个学生最高分和最低分之间的差值划定不同的深度)可在一定程度上得到比较合理的结果,但此种方法缺乏教育学理论的支持,仅作为参考。综上所述,本系统采取应用较为广泛、能为大多数人所接受的等宽的方式判断两门课程的成绩是否接近。本系统采用Apriori算法挖掘各门课程的关联规则。Apriori算法是应用最为广泛的挖掘布尔关联规则频繁项集的算法。Apriori算法也有一定的缺陷,主要表现在可能产生大量的候选集,以及可能需要重复扫描数据库。但是对于应用于普通高校的学生成绩分析系统来说,其课程数和学生数都是很有限的,现代高性能计算机可以迅速完成上述工作。因此对于本系统来说,Apriori算法的一些固有缺陷是完全可以接受的。图4—4关联规则挖掘时序图用户向associationrules发出挖掘关联规则请求,associationrules从结构体中读取学生成绩信息并进行分析关联,处理完成后将关联数据存入关联数组,然后统计关联数组中的频繁项,生成关联规则并存入关联规则数组4.2.4分类本系统采用决策树算法来实现分类预测功能,主要预测全体在校学生是否有挂科风险,以及挂科风险比较高的课程.在现有数据条件下,决策树选取该学生已经完成学习的课程中是否有挂科和所有已经完成学习的课程的平均成绩是否低于一个特定值来作为测试属性。如果某学生有过挂科经历,说明该学生在学习态度、学习方法或学习能力方面存在一定问题,那么他在今后学习其他课程的过程中会比其他学生挂科的可能性更大,这种因果联系符合一般人的认知,因此选择是否有挂科经历作为一个测试属性。若某学生各门课程的成绩较低(平均分低于某一特定值),他显然比其他成绩更好的学生要承担更多的挂科风险,因此选择平均成绩是否低于一个特定值来作为另一个测试属性。本算法将某一课程以毕业学生的挂科率作为衡量该课程是否为高风险课程的测试属性,将挂科率高于某一特定值的课程作为高风险课程,此参数可由教务工作人员根据本专业的课程难度和生源水平等实际情况进行调整。图4-5分类时序图用户向classify发出分类请求,classify从结构体中读取学生成绩信息并进行分析处理,将高风险学生的姓名存入高风险学生数组中并输出给用户。学生分类完成后,classify对课程进行分析,将高风险课程的名字存入高风险课程数组中并输出给用户4.2.5聚类本系统使用聚类算法对学生进行聚类,根据聚类结果分析学生在校表现和成绩之间的关联性。K-means算法是数据挖掘领域应用最为广泛的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标.从这些方面来看,K-means算法是比较符合本系统对于聚类算法的要求的。但K—means算法同样有一些固有缺点.首先是K-means算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的.不过出于和采用Apriori算法同样的理由,时间复杂度高的缺点可以忽略。其次,在K-means算法中K是事先给定的,这个K值的选定是非常难以估计的.很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。在本系统中,被聚类的对象是学生,即使对于同一所高校甚至是同一专业的学生来说,学生间的个体差异也是很大的,因此无法事先估算出K值。而且在使用K—means算法时,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化,且初始聚类中心的选择对聚类结果的影响非常大。基于和无法事先估算K值相同的理由,聚类中心也很难在事先做出选择.因此,K—means算法并不适用于本系统。DBSCAN算法也是一种应用比较广泛的聚类算法。与K—means算法相比,DBSCAN算法不需要事先知道要形成的簇类的数量,而且DBSCAN算法可以发现任意形状,显然更加适合本系统的需求。图4-6聚类时序图用户向clustering发出聚类请求,clustering从结构体中读取学生成绩信息并进行分析处理,聚类完成后,将聚类结果存入聚类数组中并输出给用户4。2.6导出文件图4—7导出文件时序图首先用户将导出数据至文件的请求和创建文件的地址发送给creatfile,creatfile在指定地址创建文件.创建文件完成后,creatfile依次从存放关联规则、分类结果和聚类结果的数组中读取数据,依次存入文件中。循环这一过程,直到所有的数据都被存入了文件中,向用户输出“成功导出数据至文件"4.3系统实现4。3.1文件导入数据图4—8文件导入数据类图将文件内的数据存入系统已定义的结构体中,每一个学生对应一个结构体4.3。2数据预处理图4—9数据预处理类图通过计算全体学生成绩的最大值和最小值以及各课程成绩的最大值和最小值确定对各课程成绩的缩放比例,并更新成绩数据4.3.3关联规则图4-10关联规则挖掘类图创建2个二维数组,1个用来统计课程关联数,1个用来记录关联规则。判断学生成绩是否关联,若某一名学生的第i门课程和第j门课程的成绩相关,则使课程关联数数组的第『i—1』『j-1』项加1.在全体学生的所有成绩都分析完成后,判断课程关联数数组各项的值是否大于最小支持度。若第『i—1』『j—1』项的值大于最小支持度,则令关联规则数组第『i-1』『j—1』项的值为14。3.4分类图4-11分类类图创建来两个数组,一个用来统计有挂科风险的学生,一个用来统计高风险课程。计算每个学生的平均分并存入结构体中,分析学生的挂科风险,若学生有挂科经历或平均分低于某一特定值,则将其放入数组中。计算每门课程的挂科率,若挂科率大于某一特定值,则将其放入数组中4。3.5聚类图4-12聚类类图任选一个未被访问过的点开始,找出与其距离某特定值内的所有附近点,如果附近点的数量大于某一特定值,则当前点与其附近点形成一个簇,并且出发点被标记为已访问.然后递归,以相同的方法处理该簇内所有未被标记为已访问的点,从而对簇进行扩展.如果附近点的数量小于某一特定值,则该点暂时被标记作为噪声点.如果簇充分地被扩展,即簇内的所有点被标记为已访问,然后用同样的算法去处理未被访问的点。直到所有点都在簇中或被标记为噪声点,将聚类结果输出到数组中4。3.6导出文件图4-13导出文件类图将关联规则、分类结果和聚类结果导出到文件4.4系统应用图4-14欢迎界面可根据用户具体需求设置不同欢迎文字或登录功能图4-15主界面本系统为学校内部所使用的办公软件,所以并不追求华丽的界面。主界面以简洁为主要诉求,方便用户上手的同时也可加快软件运行速度图4-16导入文件单击导入文件按钮后弹出窗口让用户搜索文件图4-17导入文件成功图4—18数据预处理图4-19输出关联规则在文本框内输出关联课程,并使用坐标系较为直观地展示课程关联性.XY轴分别为两门课程的成绩,每个点代表一个学生图4-20输出分类结果图4—21输出聚类结果第五章结论本文主要围绕基于数据挖掘技术的学生成绩管理系统,系统地阐述了系统所涉及的技术知识、领域知识。运用Windows7作为开发环境,Eclipse作为开发平台,Java作为开发语言.从学生成绩管理系统的实际需求出发,运用关联规则挖掘技术、分类技术、聚类技术和相关编程技术完成了数据挖掘技术的学生成绩管理系统的设计和开发。本系统拥有简洁直观的界面,可用从文件导入数据,将挖掘结果导出至文件,实现了关联规则挖掘功能,学生分类功能,课程分类功能,学生聚类功能,并且在一定程度上以可视化的方式将挖掘结果直观地呈现给用户。市面上有很多功能强大的的数据挖掘软件都能实现这些功能,甚至还能提供多种算法供用户选择.但对于教务管理工作来说,这些专业软件的功能大大超出了管理和分析学生成绩的需求,这使得软件的大部分功能都成为了冗余功能,是软件的运行速度大打折扣,复杂的界面对于没有数据挖掘背景的教务工作者来说也增加了软件的上手难度.本系统从学生成绩分析系统的实际需求出发,意图用最简洁的界面和最简单的功能满足学生成绩管理工作的需求.由于本人的算法设计能力和编程能力有限,本系统还有许多可以继续完善的地方.首先,系统的界面虽然简洁直观,但是还不够美观,且人机工程方面也有改进的空间.其次,可视化功能也不够强大,大部分挖掘结果仍然通过文字的方式呈现给用户.算法的合理性也没有得到充分的验证。由于数据真实度有限,目前对挖掘的结果的分析工作做得还不够,无法对算法的合理性作出明确的判断。主要是无法根据挖掘结果对算法中的各种参数进行调整。未来通过分析真实数据的挖掘结果,可对算法的合理性进行深入分析,通过调整各种参数来进一步调整各挖掘算法,使挖掘结果更加合理。此外,还可根据各学院的实际需求加入身份验证、成绩转换等功能,使本系统能适应更多学院的实际情况。我会在今后的学习中进一步学习数据挖掘知识和编程技术,持续改进本系统。参考文献HanJiawei,KamberMicheline.《数据挖掘:概念与技术》.机械工业出版社.2012毛国军,段立娟.《数据挖掘原理与算法》。清华大学出版社.2007韦斯,冯舜玺。《数据结构与算法》.机械工业出版社.2009朱庆生,古平。《Java程序设计》。清华大学出版社。2011赵真.《Eclipse开发技术详解》.化学工业出版社.2010姚昀.《以个性化教育为导向大学多元化人才培养探析》.中南林业科技大学学报.2012年03期鲍俊男。《学生成绩分析系统的设计与实现》.北京工业大学.2012曾泽林,段明秀.《基于密度的聚类算法DBSCAN的研究与实现》.吉林大学。2012赵松.《Apriori算法的改进及应用》.哈尔滨理工大学。2006尹晖。《决策树算法的研究与应用》.兰州大学.2009致谢首先,我要特别感谢我的毕业论文导师牛琨老师。牛琨老师不仅在数据挖掘的技术上给予我很多指导,更用专业严谨的学术态度深深影响了我.其次,我要感谢中期审查组的牛琨老师、王枞老师和李朝晖老师。三位老师对我的中期检查情况提出了宝贵的意见和建议,这为我后续的工作提供了指导。此外,我还要感谢给予我无私帮助的常笑同学、刘茂铭同学和贾晓阳同学.最后,我要感谢所有在毕业设计上帮助过我的人.学生成绩管理系统目录TOC\o"1-3”\h\z\u设计内容PAGEREF_Toc248762130\h2HYPERLINK\l"_Toc248762131”设计目的PAGEREF_Toc248762131\h2设计要求48762132\h2设计分析PAGEREF_Toc248762133\h2HYPERLINK\l"_Toc248762134"子程序分析PAGEREF_Toc248762134\h7操作说明PAGEREF_Toc248762135\h10HYPERLINK\l"_Toc248762136"程序代码PAGEREF_Toc248762136\h11HYPERLINK\l"_Toc248762137”总结PAGEREF_Toc248762137\h30参考文献PAGEREF_Toc248762138\h30设计内容设计一个学生成绩管理程序,要求能实现以下功能:各科成绩的录入,修改和删除。按姓名查询每个学生各门课的成绩。显示查询结果。统计个分数段的人数。5)打印学生成绩。设计目的用汇编数据的录入、修改和删除操作。设计要求学习如何用汇编语言进行数据处理.设计分析1。总体结构整个程序采用主程序调用子程序的方法.主程序完成菜单的显示,子程序完成一个独立功能方法的实现.各子程序的实现方法简要描述如下:1)设计INSERT(录入)子程序,先打开文件SCORE。TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序.2)设计Delete(删除)子程序,先打开文件,再调用宏GETIN得到要删除的学生的姓名,然后读文件中的记录,直到其记录的名字与所输入的名字相同为止,把文件指针后退8个字符(即4门课成绩所占的空间),写入8个“0”3)设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过调用宏SHOW_ITEM将其显示到屏幕上,入文件指针没有到达文件尾,则继续读记录并显示,当指针到达文件尾时,则关闭文件返回主程序.4)设计Modify(修改)子程序时,先打开文件SCORE。TXT,通用GER_REC得到要修改的记录,然后读文件中的记录,并与用户输入的记录做比较(只比较记录中的名字部分),若不同则吨下一条记录,若相同则将文件指针后退23个字符(一个记录为23个字符的长度),然后把用户输入的记录写入文件,最后关闭文件返回主程序。5)设计Count(统计)子程序时,先打开文件,然后读记录,比较记录的第16个字符,数学成绩的高位),并统计,直到文件指针到达文件尾,最后关闭文件调用宏SHOW_ITEM显示统计结果,返会主程序。6)设计Query(查询)子程序时,先打开文件,通过调用宏GETIN得到要查找学生的姓名,然后读文件记录,并同要查找的学生姓名比较,若相同则输出,若不同继续读文件记录,最后显示查询结果,关闭文件返回程序.另外还有打印的分数段人数统计,这些结合后面的子程序功能分析做详细介绍。图1是本设计显示记录的界面图1学生成绩管理系统界面程序流程图如图2所示入口入口入口入口打开文件打开文件打开文件打开文件置指针到文件尾读一个记录置指针到文件尾读一个记录从终端接收用户输入的记录读错?Y从终端接收用户输入的记录读错?记录写入文件显示错误信息N记录写入文件显示错误信息文件尾?Y文件尾?关闭文件关闭文件关闭文件N关闭文件显示记录显示记录返回返回返回返回A)List流程图B)Insert流程图打开文件返回返回文件删除记录姓名相同?读一条记录接收被删除记录的学生姓名入口返回关闭文件显示统计结果指针到达文件尾对数学成绩分段并统计打开文件读一个记录入口入口打开文件读一个记录是否为要修改的记录返回关闭文件显示记录返回写入修改记录并关闭文件文件指针后退一个记录是否为所寻找的记录读一个记录打开文件入口打开文件返回返回文件删除记录姓名相同?读一条记录接收被删除记录的学生姓名入口返回关闭文件显示统计结果指针到达文件尾对数学成绩分段并统计打开文件读一个记录入口入口打开文件读一个记录是否为要修改的记录返回关闭文件显示记录返回写入修改记录并关闭文件文件指针后退一个记录是否为所寻找的记录读一个记录打开文件入口YYNNNYNY开始开始调用Query子程序调用Delete子程序调用Insert子程序调用Count子程序调用Modify子程序调用Iist子程序显示菜单输入一个字符结束是E是I是C是M是D是Q是L调用Query子程序调用Delete子程序调用Insert子程序调用Count子程序调用Modify子程序调用Iist子程序显示菜单输入一个字符结束是E是I是C是M是D是Q是LYNYNYNYNYNYNNY在大型的程序中,为了使程序清晰、可读性好,一般会大量使用宏和子程序,因此,充分了解这些宏和子程序,才能掌握程序的编制方法。2.宏的分析本题中使用了下列宏,其作用如下:SHOW:用来指定地址的显示字符串,有一个地址参数SET_P1:设定光标位置,有一个可变参数a,作用是讲光标置于坐标(a,36)处,使用了BIOS中断10H的2号功能.SET_P2:将光标置于(12,2)处。SET_P3:将光标置于(1,30)处。CLEAR:清除整个屏幕,用BIOS中断10H的7号功能实现,范围是从坐标(0,0)到(24,79),将整个区域变为空白.CLEAR1:清除有半部分屏幕,清除范围从坐标(4,36)到(10,79),结果是擦出此区域的显示内容。CLEAR2:清除下半部分屏幕,清除范围是从坐标(12,0)到(24,79),结果是擦除此区域的显示内容。NNWLINE:回车换行。SHOE_ITEM:显示记录内容,执行后显示名称,然后依次显示4项功课成绩,各项成绩间空3个空格,最后换行。这个宏包含的语句较多,如果每次都直接用语句实现非常冗长,使用宏后则主程序就很简洁,充分体现了使用宏的优点。GETIN:获取学生的信息,这也是一个使用频繁的宏,其中含有很多的指令,它带有ADDRS和COUNT2两个参数,ADDRS是存放信息的数据段位置,CIUNT2是接受的字符数。子程序分析下面详细分析程序中用的的主要的子程序。(1)INSERT子程序INSERT子程序的功能是录入一条记录。首先保留现场入栈,然后DOS中断3D号功能打开FNAME指定的文件,然后宏GETIN清除屏幕右半部分的记录输入区域。在记录的第一项处置光标,用GET_REC获取记录内容,用DOS中断42H号功能将指针移到文件末尾.再用DOS中断40H号功能将放在BUFFER缓冲区的23个字节的内容写到文件中,接着关闭文件,重新设置光标位置在显示记录位置。最后弹栈恢复现场。(2)GET_REC子程序GER_REC子程序的功能是获取新的记录内容.首先用宏GETIN获取学生的姓名,放入BUFF2中,最多15个字符,如果遇到回车键则提前结束.再用循环方式将BUFFER2中的15个字符送到BUFFER1中。然后用宏SET_P1将光标置于数学成绩输入项后,等待键盘输入。输入的成绩,先放在BUER2中,然后加到BUFFER1中的姓名后面。输入为2个字符后遇到回车键提前结束。接着用同样的方法输入英语成绩,计算机成绩和中文成绩。完成后,这个程序就得到了一个记录的所有信息.(3)OPENF子程序OPENF是个一个非常简单的子程序。它的作用是打开一个文件并把一个文件句柄保存在数据段的handle缓冲区中。(4)QUERY子程序QUERY是查询一条记录。首先保留现场.然后分别清除界面右上方和下边的区域.打开FAME指定的文件并保留文件句柄。将光标至于界面的下半空白部分开始处,用宏GETIN获取最多15个字符的输入,然后将BUFFER1中的内容与BUFFER2中进行比较,看是否相同。如果不同,再继续向下从文件中读出23个字节比较,循环向下,直到相同或文件结束为止。如果不同,则显示该条记录,然后关闭文件,恢复现场。B:MOVAH,3FH;读文件MOVCX,23;读23个字节(记录长度)MOVDX,OFFSETBUFFER2;放在BUFFER2中INT21HLEASI,BUFFER2LEADI.BUFFER1MOVCX,15;循环次数C:MOVAL,BYTEPTR[SI]CMPAL,BYTEPTR[DI];比较BUFFER1和BUFFER2JNZB;不同则转BINCSIINCDLOOPC(5)MODIFY子程序MODIFY子程序的功能是修改记录。先保护现场,然后清除右上部分的记录输入区域,接着打开文件。用GET_REC子程序获取输入的记录信息,并存入BUFFER1中。从打开的文件中读取一个记录的内容(23个字节)放在BUFFER2中.比较记录前面的15个字节(姓名),如果不同,则读取下一个记录;如果相同,则回移一个记录的指针,回到刚才这条记录的位置(因为读取一个记录后,指针已移到下一条记录上)。将放在BUFFER1中的输入的记录写到刚才这条记录在文件中的位置上,从而实现此记录的修改.最后关闭程序,恢复现场。(6)DELETE子程序DELETE子程序的功能是删除一条记录。首先保留现场,清除屏幕。然后打开文件,保留文件句柄。用宏GETIN获取15个字节的姓名字符,放在BUFFER1中。读取一条记录(23个字节),放在BUFFER2中,然后和BUFFER1中内容比较,如果不同,读取下一条记录。如果姓名相同,则把指针后移8个字符(4门功课所占空间),写入8个“0"字符。关闭文件,恢复现场并退出。(7)LIST子程序LIST子程序的作用是显示文件中的记录。首先清除记录输入区和显示区域。然后显示记录字段的标题。打开文件,保留文件句柄。读取一条记录的内容放在BUFFER1中,并判断是否到了文件末尾,如果不是,则显示这条记录。循环读取直到文件结束.最后关闭程序,恢复现场。(8)PRINT子程序DELETE子程序的功能是打印文件中的记录。用OPENF子程序打开文件。读取一条记录,汇编语言提供了自定义数据结构的结构定义语句,可将不同的数据类型放在一个数据结构中,便于处理,在本程序中的记录就采用了结构定义语句.这里读取记录也用了结构的方法.接着用DOS中断21H的5号功能,逐字打印存放在BUFFER1中的所以字符。一条记录打完后,打印回车符换行.然后用同样方法继续读取下一条记录并打印,直到文件结束为止.最后关闭文件退出。(9)COT子程序COT子程序的作用是统计各分数段小说人数,并简化程序,作为示例,本程序只统计记录数学各分数段的人数。首先显示统计结果的标题:maths〈60〈70〈80〈90<100。然后打开文件.读取记录,将记录的第16个字符(数学分数的高位)取出比较。统计结果依次放在以BUFFER3开头的内存单元中,如果小于60,则将小于60的记录单元BUFFER3加一;若小于70,则将小于70的记录单元BUFFER3加一,即BUFFER3下一个地址单元内容加一,依次类推。处理完后再读取下个记录,作同样处理,直到文件结束为止。接着显示放在BUFFER3中的各分数段的人数的统计结果,最后关闭文件结束。从程序中可以看出,统计时程序有个限制,本例每个分数段最多不能超过9个人.操作说明改程序除源程序外,还需要另一个存放记录的文件(此程序中使用的文件名为SCOR

温馨提示

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

评论

0/150

提交评论