基于java的高职单招录取系统的设计与实现(硕士论文)


苏州大学 硕士学位论文 基于java的高职单招录取系统的设计与实现 姓名:汪刚 申请学位级别:硕士 专业:软件工程 指导教师:朱艳琴 2010-11-28 基于 java 的高职单招录取系统的设计与实现 中文摘要 II 基于 java 的高职单招录取系统的设计与实现 中文摘要 高职高专单独招生是近年来被教育部批准的一项新的高考招生录取方式,目前 在全国首批 28 所示范性高职院校中进行试点。江苏省两所示范性高职院(南京工业 职业技术学院、无锡职业技术学院)开始筹备此项招生录取工作。由于之前没有此类 招生录取经验,更没有相关的软件系统来支持该项工作。故两所高校在教育厅的协调 下,下达了该项课题,由笔者在短时间内设计一个高职单招录取系统,以用于此项高 考的录取工作。 本文主要研究如何利用 JAVA 技术、RBAC 技术、身份认证技术、 UML 建模语言及 遗传算法理论来构建高职单招录取系统。本系统主要实现了笔试成绩录入统计与校 验、面试现场智能组卷以及综合智能录取等核心功能。为了实现系统的高效、智能化, 本文在研究遗传算法理论的基础上,设计了基于遗传算法的智能组卷算法及多因素优 化录取方案算法。另外,本文采用了基于单向散列算法的用户身份认证技术,实现了 身份验证和授权机制,保证了数据传输的安全,并使用基于 RBAC 的访问权限控制技 术,实现了用户分角色的访问权限控制。 本文所设计的单招录取系统能较好地利用招生过程中的各项资源,实现录取工 作的信息化、网络化、智能化以及管理系统的安全性访问。 关键词:遗传算法;UML;RBAC;JAVA;SQL;单招录取 作 者:汪 刚 指导教师:朱艳琴 基于 java 的高职单招录取系统的设计与实现 英文摘要 III Java-based Design and Realization of Independent Admission System for Higher Vocational Institutes Abstract Independent admission of higher institutes is a new mode of college admission, which has recently approved by the Ministry of Education and has been piloted in two of twenty eight National Exemplar Higher Vocational Institutes. The two Exemplar Institutes from Jiangsu Province (i.e. Nanjing Institute of Industry Technology and Wuxi Institute of Technology) have prepared for the new admission. There are no previous experience for the work and no relevant software supporting it. Under the coordination of Jiangsu Department of Education, they launched a research project presided by the author of this paper to write a software to support the admission. This paper mainly studies how to construct an independent admission system for higher vocational institutes with the help of JAVA technology, RBAC technology, identity authentication, UML modeling language and genetic algorithm. The system realizes the key functions such as score input, result statistics and check, intelligent forming of test papers on the interview spot and intelligent admission. This paper, based on genetic algorithm, designs an algorithm of intelligent forming test papers and multi-factor optimal admission to achieve high-efficiency and intelligence. In addition, this paper uses user identity identification based on way hash algorithm to realize authentication and authorization and ensure the security of the transmitted data, and uses the control technologies of access authority based on RBAC to realize the control of different users’ access authority. The independent admission system designed in this paper can better take the advantage of various resources in the process of admission to realize the informatization, networking, intelligentization of admission and security access to administrative system. Key word: Written by:Wang Gang Supervised by:Zhu Yanqin 基于 java 的高职单招录取系统的设计与实现 引 言 1 引 言 2006 年国家教育部批准包括我校(南京工业职业技术学院)在内的全国 28 所高 职院校为国家首批高职教育示范院校。同时首次批准这 28 所院校,除了在统一高考 时正常批次录取外,还可以在每年的 4 月中下旬组织一次单独招生。考试及录取工作 由各高职院校自主完成。 本课题属于学院下达课题,要求为单独招生工作设计一个完整的管理系统,涵 盖招生过程中的笔试成绩录入统计、面试管理系统、综合录取系统等模块。要求利用 该信息化的系统来保证招生过程的公正、公平及高效。 单招录取系统和传统招生系统有很多不同的特点。其中面试现场的智能组卷是 单招的一个重点。面试试卷生成为技术核心,既要考虑考生专业,还要考虑试题的知 识点、题型、难度、出现概率、先后顺序等因素。另外,单招是高校获取生源、实现 学校教育事业发展的一个新的增长点。学校可根据实际情况,综合各方面的资源,制 定出一个最有利于教育学生、有利于学校发展的招生策略,也即是招生计划,如招生 的专业、人数等。 本文结合单招工作流程及现场操作办法,对单招录取系统的整体设计、功能设 置、系统实现等方面做了较为全面的描述。首先调研并分析了当前国内外主流的部分 招生录取系统,结合单招这一新兴事物特点,全面分析了单招录取工作的过程,并对 所有环节进行了基于工作过程抽象和优化,利用 JAVA 技术、基于角色访问的权限控 制、结合 UML 系统建模以及遗传算法等理论来构建面试现场智能组卷系统以及智能优 化辅助录取系统,最终实现了一套可用性高、操作性强、公正、合理、智能、安全的 单招录取系统。 在系统的实现过程中,对以下问题做了一定的创新和改进: 1.传统的招生录取软件只是单一的导入学生基本信息及学生对应科目成绩,加 以简单的统分排名,更多的是根据录取规则进行从高分到低分的排序录取法则。 2.单独招生考试的过程分成两个环节,即笔试和面试。传统考试仅采取单一的 笔试成绩作为录取依据,其本身不包括成绩的管理模块,谈不上对成绩的有效性和正 确性做必要的校验。 引 言 基于 java 的高职单招录取系统的设计与实现 2 3.单独招生另外一个重要的环节,即面试。报考同一个专业的所有考生在面试 考场,逐个依次抽题作答,多个评委分别打分。这就要求面试现场能实现实时组卷, 同时对试卷的类型、知识点分布、题型、分值等多个方面做权衡,另外还要记录题目 出现的概率及时效性等。 4.一般的招生录取系统在成绩导入后,用户(各校招生工作人员)直接登录, 按照事先规定的录取方案及人数进行录取工作,系统不需要更多类型的用户及角色。 而单招系统则需要多个类型的角色,因为整个工作过程中涉及多个不同的部门、多个 不同角色及多个不同的用户,需要他们协同工作。 针对以上问题,本文利用 UML 统一建模语言,完成系统的分析与设计;利用 SQL Server 2005 的相应数据库技术,建立安全可靠的后端数据源;利用 Java、Java Swing 及 BaseDAO 等技术,构建用户界面,并实现对后台数据库的高效安全连接访问。 系统所提出的招生现场实时智能组卷问题以及多重要素综合评定录取问题实际 上都是一个多重约束条件下的组合优化问题,而遗传算法是一种借鉴生物自然选择和 进化机制发展起来的高度并行、随机、自适应搜索算法 [1]。由于遗传算法具有并行性、 自学习性、健壮性和易于实现等特点,非常适合处理多目标的优化问题。本文针对智 能组卷与智能辅助录取模块都设计采用遗传算法来实现。 安全策略方面,系统设计采用单向散列算法进行用户身份认证,保证敏感数据 传输的安全性;使用基于 RBAC 的访问权限控制技术,实现对系统访问权限的控制。 将访问权限与角色相联系,通过给用户分配合适的角色,让用户与访问权限相联系。 角色是根据为完成各种不同的任务需要而设置的。用户可以在角色间进行转换,系统 可以对角色及其权限进行添加、删除管理。 本系统能有效地利用现有各类资源,实现资源共享,加强招生过程中各个环节 之间的工作协调、统一,实现信息化协同操作、智能化辅助录取以提高工作效率, 达到节省人力,且有助于公平、公正的效果。 基于 java 的高职单招录取系统的设计与实现 第一章 概 述 3 第一章 概 述 1.1 课题研究的背景 随着信息时代的来临,我国各行各业都竞相利用信息化技术来改变各自领域的 工作方式,这不仅切实的提高了工作效率,也适应了时代发展的需要。教育领域中的 信息化也已经走在了时代的前列。早在 2002 年,国家教育部就正式开始应用“全国 普通高校招生网上录取系统”来实现每年 7 月份的高考录取工作。当时的教育部副部 长周远清在讲话中指出,网上录取系统是对我国高等教育改革有重大影响的技术,是 我国教育信息化工作的一个重要成果。 高职高专院校近年来发展迅速,每年的招生规模已接近传统的本科高校招生规 模。这也使得高职教育成了我国高等教育中不可或缺的重要组成部分。2006 年教育 部批准包括南京工业职业技术学院(以下简称南工院)在内的全国 28 所高职院校作 为国家高职教育示范院校,国家每年拨款不少于 6 千万(国家、地方各半)用于学校 软硬件建设。同时,允许包括南工院在内的 8 所示范院校从 2007 年开始实行单独招 生试点工作。原本高职高专院校的招生工作是随着国家高考录取工作一并完成的,教 育部下发此政策之后,就给这 8 所学校每年新增了一次招生机会。 面对单独招生这样一个新兴事物,笔者认真的研究了教育部有关单招政策及各项 工作要求,分析了招生过程的各个环节。整个招生录取过程是从报名开始,要经历笔 试、面试两个常规项考核,再结合学生所报考的专业及其特长分等要素,按照学校最 优化的招生方案制定录取规则进行录取。这和传统的招生过程有很大的区别。按照学 校的要求,笔者设计了设计了一套可用性高、操作性强、公正、合理、智能、安全的 招生录取系统。涵盖了单招过程中的笔试成绩统计、面试综合管理、辅助录取等主要 模块。其中面试综合管理模块中要求在面试现场自动组卷,并且各专业的考生都是在 同一天依次抽卷参加面试,这就要求现场能按照录取工作需要,分别实时组卷,既要 保证试题的合理性,又要保证试题有效性。另外,单招录取工作需要制定出最有利于 学校发展的招生计划及策略。即能完成上级部门指令计划,也要兼顾学校的收益;既 要力求多招生,又要考虑各个专业的教学能力和学校的后勤保障能力;既要尽力发展 第一章 概 述 基于 java 的高职单招录取系统的设计与实现 4 热门专业,也要考虑传统专业优势。招生策略必须先进行优化、完善后,才能在众多 报考生源中择优录取。 1.2 国内外研究现状 高职单招录取系统应该是教育工作中的一个辅助管理系统,它涵盖了教学工作中 的考生信息、分数、录取信息等管理内容,又包括了考试组卷、成绩录入、辅助录取 等功能。所以它既是 MIS (Management Information System 管理信息系统),又是 一个 CBE(Computer Based Education 计算机辅助教育)系统[2]。 MIS 是英文 Management Information System(管理信息系统)的缩写,其产生 于六十年代,是一门新兴的计算机应用学科。至七十年代末八十年代初, MIS 逐渐成 为现代管理不可缺少的组成部分。90 年代后,随着与信息系统相关的信息技术、网 络技术、管理技术的飞速发展,尤其是 Internet 技术迅猛发展,企业信息处理系统 的结构和思想基础已经发生巨大的转变,网络作为信息传递的桥梁己经成为发展趋 势,势必加速 MIS 的发展。 CBE(Computer Based Education 计算机辅助教育)是计算机在教育领域中的应 用。在教育领域中,计算机不仅是一门学科,更是教学媒体和教育管理的重要工具。 CBE 包括了两个重要领域:计算机辅助教学(Computer Assisted Instruction,CAI) 和计算机管理教学(Computer Managed Instruction,CMI)。CAI 是指用计算机帮 助或代替教师执行部分教学任务,向学生传授知识,提供技能训练,直接为学生服务。 CMI 是利用计算机来实施教育管理功能,帮助教师及教育管理人员监测、评价和控制 调节教学和教育管理过程,提供教育决策,实施学校及整个教育系统现代化的一种新 型管理手段。它包括课堂信息处理系统、计算机辅助测验(Computer-Assisted Testing,CAT)系统、计算机辅助教务管理、计算机辅助教育行政管理、图书资料管 理和现代远程教育管理。CAT 是计算机在测验及其评价中的应用,近年来在我国教育 领域的应用发展得很快。在计算机辅助测验的构成中题库是重要的内容。 1.2.1 国外研究现状 欧美发达国家的信息化进程相对我国来说要早,尤其在教育信息化方面。由于历 基于 java 的高职单招录取系统的设计与实现 第一章 概 述 5 史、社会传统等原因,各国高校招生制度各不相同,使得各国具体的考试模式、招生 录取过程形态各异。国外高校招生制度大致分为两种:即证书制和高考制。两种不同 的高校招生制度对应两种大学考试方式,即证书制对应的是中等教育终了资格认定, 高考制对应的是大学统一考试[3]。 证书制在中等教育过程中通过陆续的各类考试后,获得相应的学分或成绩合格 后,就可以拥有中等教育(含高中)的教育终了资格。学生得该毕业资格证书,就基 本获得大学学籍登录权和进入大学学习的资格。这种录取过程是直接通过成绩认定 的,没有录取的比例,不需要复杂的招生录取环节和过程,也就无需特别的招生录取 软件系统的支持,只要完善的信息化管理工具即可。目前采取中等教育终了资格认定 的大学入学考试方式的有英国、法国、西德、瑞士、西班牙等欧洲国家。 采取大学统一考试的有日本、美国、俄罗斯等国家,其特点是具有统一的尺度性 和区分性。大学统一考试是由某个考试机构负责全国考试,为大学提供选拔性信息, 用一个标准衡量每个学生,把考生区分为不同等级为高校选拔优秀生服务。当然,这 类考试都不是一次性的,还有补充和辅助手段。同时这些考试都依赖各自国家信息化 的手段,考试手段和我国比较类似,通过笔试或在线考试等方式,但招生录取工作都 采用了各自的信息化平台做辅助工作,结合各自不同的招生模式进行统一的录取工 作。 国外大学在录取环节上,可分为大学决定型、大学和地方入学考试委员会共同决 定型。各国不同院校录取方式不一,有面试、有可直接录取,大学虽然是最后录取决 定者,但地方考试委员会有监督、选送等权利,这是国外大学招生录取的一个特色。 本项目前期调研了英国、美国、日本等在信息化程度相对发达国家的考试、招生录取 系统。下面介绍国外几个具有代表性的高校招生录取所采用的相关措施及办法[4]。 1.英国大学招生策略。英国大学招生,一般不单独组织入学考试。除开放大学 外,大学选拔新生主要根据申请者参加普通教育证书考试所取得的成绩。大学负责录 取新生工作,考试由全国性的招生委员会协调。英国各高校都有负责招生的职能机构。 考试、招生、录取三职分离,招生机构是考生和高校的中介服务机构。英国在上世纪 60 年代以前一直由各大学独立招生和录取,1961 年成立了大学招生委员会,管理全 国大学招生具体业务工作,为大学录取和准备升入大学的学生提供服务,协调各大学 的招生工作。 第一章 概 述 基于 java 的高职单招录取系统的设计与实现 6 录取程序复杂,注重全面测查。录取的决定权掌握在大学手里。各院系认真查看 申请材料,了解学生以前的考试成绩、日常表现和教师评语,从中选出若干学生来校 面试。面试后,大学提出的初审意见分三类,即无条件录取、条件录取和不予考虑。 名牌高校还要组织笔试。在整个录取过程中,已广泛采用现代化技术手段来管理考试 的各个环节和相关机构部门等,拥有先进的印刷设备和密封机械,实现了网上远程录 取。 这里由于考试、招生、录取三职分离,所以负责考试的部门就主管学生的考试工 作,用到独立的考试软件,不具备招生录取功能。同样,招生部门用到独立的招生软 件系统,而负责录取工作的拥有录取工作所需要的信息化的软件系统。这和我国高考 统一录取工作在功能上类似,但由于考试方式、种类各不相同,故英国的考试、招生、 录取工作,无论是工作流程,还是工作所使用的信息化应用系统,和本项目——单独 录取系统都有着较大的区别。 2. 美国大学招生策略。美国高校招生考试制度也是典型的招考分离。虽然美国 实行地方分权制,但却有相对统一的考试,即由 ETS(Educational Testing Service,ETS)机构实施的 SAT(Scholastic Assessment Test)考试和 ACT(American College Testing,ACT)机构实施的 ACT 测试[5]。ETS 和 ACT 是独立的、非营利性的机 构。在考试管理中, ETS 和 ACT 制定了系统而具体的管理制度和规范性文件,以保证 考试顺利进行。 SAT 考试通常被称作学能测验,是被采用最为广泛的高校入学考试,它主要测验 学生的综合学习能力,并显示学生在全国大学考生中的成绩排名先后。此种考试每年 举行 6 次,在全美国和世界各地设了数百个考试点,学生可以自由选择合适的地点和 时间参加考试。 ACT 考试也被称作美国高校测验,包括英语、数学、自然科学和社会研究 4 部分, 主要考查学生的基本知识和基本技能。此项测验与学能测验颇为相似,且在许多情况 下可互相取代,每年亦举行 6 次左右,考生可选择时间应试。 美国大学按不同的录取标准进行招生,大致可分成以下 4 类:第一种是社区学院 和 4 年制的州立大学实行开放性的招生,录取所有申请入学者,并为那些不合格的学 生补课。第二种是大部分院校所实行的“最低限度筛选”招生,它们接纳那些符合最 低入学标准的学生,以便量才施教,而非以此来决定是否录取。第三种是有近 300 基于 java 的高职单招录取系统的设计与实现 第一章 概 述 7 所院校实行有选择性的招生,主要考查学生的一般能力,而不注重学业成绩。第四种 是不超过 100 所院校实行的竞争性招生,除了学能测验外,还要求学业成绩测验。 综上所述,可知美国高校考试、录取工作和高职单招录取工作也有着显著的不同, 他们的特点,一是考、招分离;二是不同大学招生方式不同。在四种方式中,也没有 一种方式接近我国的高职单招模式。 3.日本大学招生策略。日本的国立大学实行国家统一考试和大学自主考试相结 合的方式。第一次考试由国家大学入学考试中心主持,称为“共同一次试”;第二次 考试由各大学自行主持。考生可依据第一次考试成绩参加适合自己兴趣的多所大学的 考试,作为大学入学成绩评定的依据。 在参加完“共同一次试”考试 10 天后,考生须向其所报考的学校提出第二次考 试申请书,3 月上旬,考生参加各大学的第二次考试。第二次考试主要测定考生的学 科专业知识水平和专业学习能力、对报考学校和专业的特殊要求所具备的能力。考试 的内容由各大学根据各自的专业要求自行确定,考试方法有笔试、口试、实际操作。 日本大学的招生在模式和我国最为接近,且早已实现信息化管理,包括部分二次 考试也是通过专门的考试软件进行。在考试结束后,系统自动生成成绩,并能够导入 到相对应的招生录取平台,供招生录取人员参考。具体的操作过程及软件系统和本项 目还是有很大的不同。首先,日本大学第二次考试测试相当于复试,只有“一次试” 通过的同学参加复试,这不同于单招中的面试,面试成绩计入录取总分;其次,日本 大学第二次考试中,是根据不同的专业,采用不同的考试手段,不需要面试现场抽题 做答的环节;另外,日本大学的录取过程是学校各个专业根据自己的招生计划进行复 试,最后再综合评定录取,而不是学校综合各方面因素制定一个优化的招生方案。 1.2.2 国内研究现状 我国的考试、招生录取制度有着我国自己的特色,这是我国基本国情及历史现状 所决定的。 我国的高考经过了近 30 年的发展和变革,如今依旧在不断的创新和改革之中, 但基本的政策可分为两大类。一类是地方省市自主出题考试、招生录取(这里包含了 部分高校被授予独自命题招生录取的权利,类似本文所涉模式);另一类是参加全国 性的统一考试。近几年国家高考的录取政策又有创新,最终的录取除了统一高考成绩 第一章 概 述 基于 java 的高职单招录取系统的设计与实现 8 外,还要是结合并参考地方组织的预考成绩(有些地方成为小高考)。而整个录取过 程也采用了基于 Internet 的在线录取系统。 我国高考考试方式目前还是采用传统的笔试为主的方式,部分院校、专业(艺术、 体育类)可能有其他科目的加试、面试等环节。核心的招生方式还是依照考分的逻辑 排序。各省、直辖市在考后规定的时间内批阅试卷,并将成绩录入国家统一的招生录 取系统中,该系统中的用户可分为省(直辖市)教育厅、各高校招生办等。录取过程 中按照事先提交的各省、各高校的招生计划,结合考生成绩及考后学生所填报的志愿, 就构成了录取前期基础数据库。各省教育厅根据本省所管辖的高校学生报考信息进行 投档,各高校根据教育厅所转投的报考学生档案进行录取工作。 目前我国每年一度的统一高考录取工作采用的是“全国普通高校招生网上录取系 统” [5]。这个系统是教育部“面向 21 世纪教育振兴行动计划”的一个课题,是高等 学校考试招生改革的一项重要举措。该系统主要应用于全国普通高校招生工作中,它 以中国教育和科研计算机网(CERNET)为依托,连接全国 31 个省级招办和上千所高校, 对每年 400 多万考生,实现从招生来源计划管理、考生信息采集与录入、电子化档案 制作、招生现场信息管理到高校一端实现招生网上录取的全过程的计算机管理 ,并对 招生录取信息进行实时查询与监控,是有着重大社会效益和经济价值的大型分布式信 息处理系统。 该项目于 1996 年 10 月开始启动,1998 年招生期间在天津第一次成功地进行了 试点工作,即受到了社会的广泛关注,公众对此认可程度高,反映良好。2000 年全 国有 16 个省市、845 所院校实行了网上录取,占当年高校总数的 82%,网上录取的学 生总数 111.7 万人,占当年招生计划的 54.75%,其中远程异地网上录取 30.6 万人。 实践证明,该系统完全胜任当前省市和院校招办对网上录取工作的要求。到 2004 年 全国所有省市都实现了高考的网上录取工作。 该系统的成功实施,它从技术层面上为防止招生中的不正之风提供了有效保障, 对实现高校招生的公正、公平、公开,维护教育公平有重要意义。该系统的应用将极 大地提高省市招办和招生院校的工作效率和管理水平,将极大地节省人力、物力和财 力,仅此一项所产生的直接经济效益每年就接近两亿元。同时,该系统还可以向社会 和考生提供各种高考信息的查询和咨询服务,对推动教育部门其他方面的配套改革提 供了必要的支持。 基于 java 的高职单招录取系统的设计与实现 第一章 概 述 9 当然,由于该系统只保障了面向学校的录取工作,当学校录取结束后,接下来的 分专业、分班级、学号生成、录取确认与查询、证书打印等一系列工作并不能在此系 统中完成。故后续的工作很多学校都自行的开发或购买相关的软件系统来完成。目前 市场化的具有此功能的软件比较典型的就是青果教育软件,它包含了高校教育教学管 理过程中的很多典型工作,如上述所提的录取后续工作。另外,也有很多高校自行组 织团队进行开发类似的教育管理软件,并将录取的后续工作包含其中。经过充分的市 场调研,本系统借鉴了高校招生工作中很多共性环节所采取的措施,如按报考专业对 相关课程成绩的加权,总成绩的分类汇总、专业分班及学号编排等。但其他高校类似 的系统大多数都是依附于全国统一网上录取系统来进行对接的,和本项目所设计的单 招录取系统有较大的区别。本系统根据项目本身的特征,结合了其他高校有关考试管 理、招生管理、录取管理等类似软件的有关功能,来设计开发单招录取系统的各个功 能模块。 1.3 本文研究内容 通过以上分析可以看出,国外的高校招生制度和我国截然不同,所以相应的招生、 录取等信息系统就没有实际的可参考性。而国内除了全国性的统一高考已经有了相对 成熟的招生录取系统外,各地方(部队)等也根据自己的招生形式,陆续加快了信息 化系统的开发和应用。但高职高专院校自主单独招生的模式是一个新兴的产物,没有 现成可用的信息化系统。故必须要深入的研究该项目内涵及特色,同时还要总结国内 招生录取过程中常用系统建设的不足,重新开发一套智能、可用的招生录取系统。本 文研究内容包括以下几个方面: 1.查找现有各种载体的文献资料,通过教育部授权我校开展单独招生的相关文 件和精神,详细分析该项目的具体要求及操作流程,同时对我校现有软硬件设施做全 面的了解和分析。 2.对招生录取系统的功能模块进行详尽的设计,探讨招生录取环节所需的管理 模式、运行环境、工作方式及实现技术。 3. 结合单独招生的特点及面试目的和要求,研究面试现场自动组卷所需要的基 本理论与实现技术。 第一章 概 述 基于 java 的高职单招录取系统的设计与实现 10 4. 研究录取环节的智能化实现。在综合学校多方面的利益,制定出最优化的招 生策略,也即是综合多重因素求最优解,利用遗传算法来实现智能优化招生方案,辅 助录取工作。 5. 为提高系统的安全性,设计用户管理方面的安全策略,基于单向散列算法进 行用户身份认证,基于角色访问控制技术 RBAC 实现数据访问的权限控制。 1.4 本文研究的意义 教育部原副部长周远清同志曾在讲话中指出,高考实现了信息化、网络化的招生 模式是我国高等教育的一项重大改革,是我国教育信息化工作的一个重要成果。同时 要求各地研究开发人员要不断适应高考改革的新形势、新举措,并进一步加强信息安 全技术的研究。高职高专单独招生是国家新批准的新类高考招生方式,所以本项目的 顺利实施对高职高专类院校的招生进程及信息化有着非常重要的意义,其主要体现在 以下几个方面: 1. 充分利用现有各类资源、实现资源共享,加强学校各部门之间的工作协调、 统一 可充分利用学校现有各类资源,包括网络资源、硬件资源、软件资源,甚至是学 校的教学师资、试题等资源,大大提高了作为学校各项资源利用率。本系统作为整个 招生录取过程的主线,不仅可以协调学校和考试有关的各类资源,同时也可以充当考 试过程重要平台。本系统还可以让所有参与招生录取工作的相关人员迅速掌握工作进 程和状态,及时调整和分配该项工作的任务,增加各环节之间的合作。 2. 实现网络化管理、规范工作过程,提高工作效率 由于本系统是基于网络环境下的客户端/服务器访问方式,能够使信息快速、及 时地传递。一方面实现了网络化管理,可以使不同级别的部门和领导能够从多角度、 多方位的了解当前录取过程中的相关信息,便于进行决策;另一方面由于整个过程都 采用信息化、网络化管理,也可以使得学校在这项工作管理上更加现代化、规范化。 在招生录取过程中大量种类繁多数据处理工作都交由计算机处理,大大的节省了人 力,同时也有效的提高了工作效率。 3. 辅助录取充分体现了系统的智能性和可用性 基于 java 的高职单招录取系统的设计与实现 第一章 概 述 11 在单独招生的规则允许范围内,学校在招生过程中是要综合学校各方利益关系、 资源优势及发展规划,来制定招生的专业及招生规模。怎样才能使招生计划更加科学, 即完成上级部门指令计划,也要兼顾学校的收益;既要力求多招生,又要考虑各个专 业的教学能力和学校的后勤保障能力;既要尽力发展热门专业,也要考虑传统专业优 势。如何在众多方案中选取最佳解决方案?只有招生计划方案完善后,才能在众多报 考生源中择优录取。本系统依靠遗传算法综合各方因素加以比较,得出优化的招生策 略以辅助录取,提高了系统的智能性和科学性,也提高的工作效率。 4. 基于角色访问控制技术,提高了系统的安全性 本系统有着大量的学生成绩等重要数据信息,且很多环节有不同的用户在进行着 协同操作,所以系统的信息安全问题显得尤为必要与紧迫。为了防止非法用户窃取机 密信息和非授权用户越权操作数据,将访问权限与角色相联系,通过给用户分配合适 的角色,让用户与访问权限相联系。角色是为完成各种不同的任务需要而设置的。用 户可以在角色间进行转换,系统可以对角色及其权限进行添加、删除,这样大大提高 了系统的安全性。 本系统的及时和顺利的开发,既保证了单招这个项目在我校乃至其他几所兄弟院 的顺利进行,同时也促进了我校信息化进程的推进工作。重要的是利用信息化的平台, 提高了工作效率,且大大增强了招生过程的公平、公正性,同时在录取过程中,有了 辅助录取功能,使得整个工作更加的智能和先进。由于本系统具备了招生录取过程中 的众多环节管理功能,这对于其他同类高职院校未来进行相关的招生工作提供了一个 参考依据。本系统的成功实施,是学校乃至全国教育领域信息化的一个范例,也是一 项创新。 1.5 论文组织结构 本论文分为六章,第一章为概述部分;第二章对本论文所涉及到的相关技术理论 作了初步的探讨;第三章重点对单招系统功能设计、 UML 建模、数据库表的设计做了 详尽的描述;第四章重点阐述系统相关模块中的遗传算法实现。包括遗传算法在面试 现场自动组卷中的应用,遗传算法在优化招生方案及决策中的应用;第五章着重描述 第一章 概 述 基于 java 的高职单招录取系统的设计与实现 12 本系统所采取的安全技术;第六章对目前的研究工作予以总结,并指出需进一步完善 的地方及今后的研究发展方向。 基于 java 的高职单招录取系统的设计与实现 第二章 相关理论及技术基础 13 第二章 相关理论及技术基础 高职高专单招录取系统构建所涉及到的相关理论及技术有很多,主要包括:整个 系统的架构依附于 Java 平台,利用 JAVA Swing 和基于 JDBC 的 ORM 等技术构建用户 界面和对后台数据库的高效安全连接访问;利用 UML 建模语言对整个系统建模分析; 使用 SQL SERVER 2005 数据库作为后台支撑数据库,使用 SQL 查询语言,对数据库进 行操作;使用单向散列算法和 RBAC 访问权限控制来保证系统的安全性。系统的核心 智能化模块则需借助于遗传算法来实现。本章对单招录取系统所涉及到的主要理论及 技术基础作初步探索。 2.1 UML 建模语言 UML 是一种可视化模型语言,高职单招录取系统的整体分析及功能设计借助于 UML 建模实现,可提供良好的面向对象的开发环境。 1. UML简介 随着日益复杂的软件工程系统的出现,一个用来描述它们的清晰、简洁的方法正 变得越来越重要。针对这种需要,Grady Booch、Jim Rumbaugh和Ivar Jacobson开发 出了统一建模语言(UML:Unified Modeling Language)[5]。在建立一个信息管理和 事务处理的模型及文档系统时,可以利用面向对象的分析和设计方法建立UML。UML 代表了面向对象方法的软件开发技术的发展方向,已被对象管理组织(OMG)接受为 标准的面向对象建模语言。UML的目标是以面向对象图的方式来描述任何类型的系统, 具有很宽的应用领域。可适用于软件系统或具有实时要求的工业系统或工业过程等 [7]。 2. UML的基本目标 UML设计的基本目标如下所示: (1)向用户提供了一种随时可用的可视化模型语言以便他们能够开发和交换有 意义的模型。( 2)为扩展核心概念提供了扩展和规范机制。( 3)独立于特定的编程 语言和开发过程。( 4)为理解模型语言提供了正式基础。( 5)鼓励面向对象工具市 第二章 相关理论及技术基础 基于 java 的高职单招录取系统的设计与实现 14 场的发展。( 6)支持较高层次的开发概念,如合作、框架、模式和组件。( 7)集成 最好的实践经验。 基于以上理由,可知UML是设计对象/关系系统的可选择语言。UML并不只是实体 关系图的替代物,它还包含了许多组成部分,它们结合在一起提供了一个完整的面向 对象的开发环境。 3. UML的组成部分 UML提供了两大类共九种不同的图。一类是静态图,包括类图( Class diagram)、 对象图( Object diagram)、组件图( Component diagram)和部署图( Deployment diagram);另一类是动态图,包括用例图( Use case diagram)、序列图( Sequence diagram)、协作图(Collaboration diagram)、状态图(Statechart diagram)和 活动图( Activity diagram)。静态图用于系统逻辑结构建模(类图、对象图)和物 理结构建模(组件图、部署图)。动态图用于系统行为建模[8]。 4. UML的建模步骤 从实际应用角度来看,当采用面向对象技术设计系统时,通常采用以下步骤: (1)建立需求模型( 2)建立系统的对象模型( 3)建立系统的体系结构模型( 4) 在组件图的基础之上生成所选开发语言的代码框架。 5. UML建模工具 常用的 UML 建模工具有 Rational Rose、Microsoft Office Visio® 2003 Enterprise Architect、PowerDesigner 等。UML 建模工具可创建复杂软件系统的面 向对象的模型(模型:建模系统的一种抽象表示,它从特定的视角并在某一抽象级别 上指定建模系统),提供全面的支持。一般模板包括下列工具、形状和功能: (1)“UML 模型资源管理器”,它提供模型的树视图和在视图间进行浏览的手 段。树视图:显示于 UML 导航器窗口中的一种层次结构,其中的各个 UML 元素或视 图(图表)都用图标表示。UML 模板自动创建模型的树视图。 (2)预定义的智能形状,这些形状表示 UML 标注中的元素并支持 UML 图类型的 创建。通过对这些程序进行编程,使其行为方式同 UML 语义相符。 (3)易于访问“UML 属性”对话框,可通过这些对话框将名称、特性、操作和 其他属性添加到 UML 元素。 基于 java 的高职单招录取系统的设计与实现 第二章 相关理论及技术基础 15 (4)动态语义错误检查,用于标识和诊断错误,例如缺少数据或错误地使用了 UML 表示法。 (5)用 Microsoft Visual C++ 6.0 或 Microsoft Visual Basic 6.0 创建的项 目进行反向工程,以生成 UML 静态结构模型的能力。 (6)对 Microsoft Visual Studio.NET 中创建的项目进行反向工程并生成 UML 静态结构模型的能力。 (7)从 UML 模型中的类定义将代码框架生成到 C++、Visual C#或 Microsoft Visual Basic 中。 (8)创建用于 UML 静态结构、活动、状态图、组件和部署图的报告。 2.2 角色访问控制 RBAC 单招录取系统由于工作任务的繁杂性,要求系统具有一定的开放性和资源的共享 性,从而大大提高了工作效率和工作质量。然而正因系统的多用户性和广应用性,以 及数据存取都是在网络上运行,也就对系统的安全方面提出了更高的要求,针对这种 情况,除了采用相应的加密技术外,也应设计一种安全模型。基于角色的数据访问权 限控制(RBAC)应用较为广泛。采用 RBAC 模型设计的招生录取系统可通过对不同角 色的用户访问权限的控制,更能有效的保证一些重要和敏感数据的安全性。 2.2.1 RBAC 的特点 1. RBAC(Roles-Based Access Control)的核心思想 将访问权限与角色相联系,通过给用户分配合适的角色,让用户与访问权限相联 系。角色是为完成各种不同的任务需要而设置的。用户可以在角色间进行转换,系统 可以对角色及其权限进行添加、删除[9]。 2.RBAC 的优势 RBAC 的优势在于它对授权管理的支持。通常的访问控制实现方法是:将用户与 访问权限直接相联,当组织内人员新增或有人离开时,或者某个用户的职能发生变化 时,就需要进行大量授权更改工作。而在 RBAC 中,角色作为沟通用户和资源之间的 桥梁,对用户的访问授权转变为对角色的授权,然后再将用户与特定的角色关联起来。 第二章 相关理论及技术基础 基于 java 的高职单招录取系统的设计与实现 16 RBAC 系统建立后,主要的管理工作即为授权或取消用户的角色。因此,RBAC 特别适 合于系统(特别是大型系统)的安全管理。 2.2.2 基于角色的数据访问权限控制模型 RBAC引入角色将用户和访问权限逻辑分开,根据用户所在的工作岗位和工作职责 设置角色,授予其相应的访问权限,再为用户分配角色,并通过会话激活角色集合。 1. 模型组成部分说明[9] 用户(U-user):是管理系统中对数据对象进行操作的主体,主要指人。 角色(R-role):主要是指用户在企业中的工作岗位,反映用户的职责。 权限( P-permission):对系统中的客体进行特定模式访问的操作许可。在面向 对象技术中,权限表示对某个对象方法是否有引用的权力。 用户分配(UA):指根据用户在组织中的职责和能力被赋予对应各个角色的成员; 用户、角色的分配是多对多的关系。 权限分配( PA):指角色按其职责范围与一组操作权限相关联。用户通过被指派 到角色间接访问资源,进行权限分配时,应遵循最小特权原则。 最小特权原则:要求分配给用户的特权不超过用户完成其工作所必需的权限,它 对维护信息的完整性是很重要的[10] [11]。保证最小特权需要做到:l)标识用户的工作 职责;2)确定该工作所需的最小特权集合;3)限制用户在这个特权集合范围之内。 会话(S-session):是一个用户与多个角色的映射,用户激活角色时,可以打 开多个会话。用户是一个静态的概念,会话是一个动态的概念,它代表用户与系统进 行交互[12]。 角色继承( RH-role hierarchy):允许将某些角色定义为另一个角色的子角色, 通过角色之间的继承关系,间接的拥有其子角色所定义的权限。其关系表达式为: RH R×R 。 约束( C-constraint):体现了不同角色之间的相互制约,比如一个企业中的产 品加工部负责人和质量检验部负责人不能是一个人,如果不进行相互制约,产品的质 量将会很难得到保障。引入约束机制就可以有效地防范这种危险。通过设置约束条件, 可以对角色授权、用户授权和角色层次进行各种必要的限制。 其基本模型如图2-1 所示[13]: 基于 java 的高职单招录取系统的设计与实现 第二章 相关理论及技术基础 17 图 2-1 RBAC 基本模型 2.3 遗传算法理论 本文所设计的高职单招录取系统与传统招生录取系统的最大区别在于其智能化 的功能实现,本系统通过遗传算法来加以实现。 遗传算法是模拟自然界生物进化过程的随机化搜索算法,由美国J.H .Holland 教授于1975年在他的著作《自然系统和人工系统的适配》中提出,其主要特点是采取 群体搜索策略和在群体中个体之间进行信息交换,利用简单的编码技术和繁殖机制来 表现复杂的现象,不受搜索空间的限制性假设的约束,不要求诸如连续性、导数存在 和单峰等假设[14]。 目前遗传算法已经在组合优化、机器学习和并行处理等领域得到了越来越广泛的 应用。本节主要讨论遗传算法的基本概念、历史、遗传算法的局限性及其理论基础。 基本的遗传算法及详细的遗传算法的应用在第四章作重点描述。 2.3.1 遗传算法的历史 遗传算法的研究历史可以追溯到上个世纪六十年代,从六十年代到七十年代中 期,是遗传算法的萌芽期。1967年,J.D. Bagay 在他的博士论文中首次使用了遗传 算法(Genetic Algorithm)这个术语,他采用了双倍体编码,发展了与目前类似的 复制,交叉,变异等基因操作,并提出了适应度定标及自组织遗传算法的概念[15]。 1975年,J.H. Holland教授的专著《自然界和人工系统的适应性》问世,该书比 较全面地介绍了遗传算法,并为其奠定了数学基础,人们常常把这一事件视作遗传算 法正式得到承认的标志。从此时到八十年代,遗传算法得到了不断的完善,这一阶段 用户 角色权限 会 话 集 S ··· 权限集 P 角色集 R 角色继承 RH 用户集 U 外部关系 ER 约束 C 特 权 用 户 分 配 用户 角色 分配 UA 角色权限分配 第二章 相关理论及技术基础 基于 java 的高职单招录取系统的设计与实现 18 是遗传算法的成长期。 随着遗传算法研究和应用的不断深入和发展,一系列遗传算法为主题的国际会议 十分活跃,从1985年开始,国际遗传算法会议ICGA(International Conference on Genetic Algorithms)每两年召开一次,有效的推动了遗传算法的传播及研究。 进入九十年代,以不确定性、非线性、时间不可逆为内涵,以复杂问题为对象的 科学方式得到了学术界普遍认同,由于遗传算法能有效地求解属于NP类型的组合优化 问题及非线性多模型、多目标的函数优化问题,从而得到很多学科的广泛重视。遗传 算法在吸收了遗传学、进化论及分子生物学等最新成果和在实验得到证明和证伪的同 时本身也在进化。 2.3.2 遗传算法的特点 遗传算法具有很强的鲁棒性,这是因为比起普通的优化搜索方法,它采用了许多 独特的方法和技术,它从某一初始群体出发,按照一定的操作规则,不断迭代计算, 逐步逼近最优解。这种搜索技术,有如下特点[16]: 1. 智能式搜索。遗传算法的搜索策略,既不是盲目式的乱搜索,也不是穷举式的 全面搜索,它是有指导的搜索。指导遗传算法执行搜索的依据是适应度,也就是它的 目标函数; 2. 渐进式优化。遗传算法利用复制、交叉、变异等操作,使新一代的结果优越于 旧一代,通过不断迭代,逐渐得出最优的结果,它是一种反复迭代的过程; 3. 全局最优解。遗传算法由于采用交叉、变异等操作,产生新的个体,扩大了搜 索范围,使得搜索得到的优化结果是全局最优解而不是局部最优解; 4. 黑箱式结构。遗传算法根据所解决问题的特性,进行编码和选择适应度。一旦 完成字符串和适应度的表达,其余的复制、交叉、变异等操作都可按常规手续执行。 个体的编码如同输入,适应度如同输出; 5. 通用性强。传统的优化算法,需要将所解决的问题用数学式子表示,常常要求 解该数学函数的一阶导数或二阶导数。采用遗传算法,只用编码及适应度表示问题, 并不要求明确的数学方程及导数表达式,因此,遗传算法通用性强,可应用于离散问 题及函数关系不明确的复杂问题; 6. 并行式算法。遗传算法是从初始群体出发,经过复制、交叉、变异等操作,产 基于 java 的高职单招录取系统的设计与实现 第二章 相关理论及技术基础 19 生一组新的群体。每次迭代计算,都是针对一组个体同时进行,而不是针对某个个体 进行。因此,尽管遗传算法是一种搜索算法,但是由于采用这种并行计算机理,搜索 速度很高。 2.3.3 遗传算法的局限性 近年来,遗传算法 (GA)的卓越性能引起了更多人的关注,对于以往难以解决的函 数优化问题、复杂的多目标规划问题、工农业生产中的配管、配线问题以及机器学习、 图象识别、人工神经网络的权系数调整和网络构造等问题,遗传算法都给出了最有效 的解决方法。虽然遗传算法在许多优化问题中都有很多重用的应用,但其本身却也存 在着一些不足[17]。例如局部搜索能力差、存在未成熟收敛和随机漫游等现象,从而导 致算法的收敛性能差,需要很长时间才能找到最优解;另外遗传算法对问题特定的知 识利用较少,在求解组合优化问题时,若不能利用问题的固有知识来缩小搜索空间, 则会产生搜索的组合爆炸。因此,设计遗传算法时往往需要在其通用性与有效性之间 进行折衷。可通过对遗传算法中控制参数和遗传操作的改进,来改善了其全局搜索性 能和收敛性能,具体而言,在初始群体产生、变异概率自适应控制方面充分利用领域 知识,在选择算子设计和交叉操作实现方面可结合爬山搜索算法的核心思想。[18] 遗传算法作为一种优化方法,其自身也存在一些局限性,归纳起来有如下几点[19]~ [21]: 1. 遗传算法通常的效率比其他传统的优化方法低。 2. 遗传算法容易出现过早收敛。 3. 遗传算法的局部搜索能力差,有随机漫游的现象。 4. 遗传算法对算法的精度、可信度、计算复杂性等方面,还没有有效的定量分 析方法。 5. 遗传算法不能利用求解问题的固有知识来缩小搜索空间。 6. 遗传算法难觅全局最优解,只能获得较优解。 2.3.4 遗传算法的理论基础 遗传算法模拟了生物的进化机理,简单而有效,但其中的许多随机性操作使人们 第二章 相关理论及技术基础 基于 java 的高职单招录取系统的设计与实现 20 对它的性能产生疑虑。模式定理是遗传算法的基本理论,它提供了一种解释遗传算法 机理的数学工具,其中还蕴涵着发展编码策略和基因操作策略的一些准则[22] [23]。 1. 模式定理 在遗传算子选择、交叉和变异的作用下,具有低阶、短定义距以及平均适应度高 于群体平均适应度的模式在子代中将以指数级增长。 2. 积木块(Building Block)假设 低阶、短距、高平均适应度的模式 (积木块)在遗传算法作用下,相互结合,能生 成高阶、长矩、高平均适应度的模式,可最终生成最优解。 3. 隐含并行性(Implicit parallelism): Holland 和Goldbery指出遗传算法的有效处理的模式个数为O(n3),即尽管遗传 算法实际上只对n个串个体进行运算,却隐含的处理了 O(n3)个模式,但现在普遍认为 其证明存在着严重漏洞。模式定理保证了较优模式的样本数呈指数级增长,从而满足 了寻找最优解的必要条件。而积木块假设则指出了遗传算法具备寻找全局最优解的能 力,有了以上两点保证,我们就可以利用遗传算法来求解任何可以表示为优化过程的 问题。 2.4 本章小结 本章主要对单招录取系统涉及到的研究领域 UML 建模语言、RBAC 访问控制技术、 遗传算法的相关理论做了初步介绍,为后面具体的应用研究工作作理论铺垫。第三章 用 UML 建模语言对整个系统进行概要设计;系统智能性功能的遗传算法实现在第四章 着重阐述;系统安全设计所用到的单向散列算法及 RBAC 技术在第五章做详尽描述。 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 21 第三章 系统的总体分析及设计 高职单招录取系统采用 JAVA 平台构建实现,以 SQL SERVER 2005 作为后台支撑 数据库。本系统拟设六大功能模块:用户管理模块、访问权限控制模块、成绩录入模 块、成绩核查模块、辅助录取模块和数据管理模块。本章重点对系统的整体进行需求 分析及功能设计,采用 UML 统一建模语言实现面向对象建模。 3.1 系统需求分析 3.1.1 任务概述 按照国家教育部有关高职单招相关文件要求,结合我校实际情况,本项目所设计 的单招录取系统内容涵盖了整个招生录取过程。具体从报名开始,结合笔试成绩的管 理、面试考试管理以及面试成绩、特长分等管理,再按照学校最优化的招生方案制定 录取规则进行录取。这和传统的招生过程有很大的区别。 为此,笔者设计了设计了一套可用性高、操作性强、公正、合理、智能、安全的 招生录取系统。涵盖了单招过程中的笔试成绩统计、面试综合管理、辅助录取等三大 主要模块。 需求分析工作是软件生存期中的第一步,也是最重要的步骤之一。在招生过程中, 信息化的管理软件显得尤其重要,为此,开发设计出在招生过程中基于成绩管理的一 套综合系统显得尤其必要。 该部分的目标主要有:获得当前系统的物理模型,了解当前单招考试过程中成绩 管理、面试管理、录取管理等具体要求,其次,抽象出当前系统的逻辑模型,对物理 模型进行筛选,从用户角度,用 UML 用例图简明的表示软件系统的功能;然后,建立 单招成绩管理系统的逻辑模型,用序列图、活动图等多种方式,表现单招录取过程中 各模块的管理过程;最后,设计数据库表结构,并进入具体编程阶段。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 22 3.1.2 功能需求 为创建一个高职单招录取系统的概貌并实现基本的功能,主要设计以下六大功能 模块如图 3-1 所示。 单招录取系统 用户管理 用 户 注 册 信 息 维 护 用 户 注 销 访问控制 用 户 登 录 角 色 权 限 设 置 数 据 维 护 笔试成绩管理 学 生 信 息 查 询 成 绩 录 入 成 绩 校 验 面试综合管理 面 试 专 家 管 理 面 试 试 卷 管 理 面 试 成 绩 管 理 辅助录取管理 成 绩 统 计 汇 总 特 长 分 数 处 理 辅 助 录 取 管 理 数据管理 学 生 信 息 维 护 学 生 成 绩 维 护 系 统 数 据 维 护 图 3-1 单招录取系统功能模块 1. 用户管理模块 用户管理:对用户进行管理,并通过将用户设定为不同的角色,赋予不同的权限。 用户信息维护:更新用户一般信息,并可以修改登录密码。 用户登录:在登录界面,输入操作人员的用户名、密码,经系统验证无误后,可 以登入系统进行操作。 2. 访问控制模块 该模块对系统中用户权限进行管理、验证,资源管理、角色管理、用户管理以及 权限分配,在实际的系统中,都隶属于 RBAC 权限管理模块。 资源管理:把要操作的对象设置为不同的资源,并进行统一的管理。 角色权限设置:添加不同的角色,并为不同的角色设置不同的操作权限。 操作权限验证:用户在执行录入成绩、维护信息、考生录取等操作时,检查执行 操作的用户是否具有相应的权限。 3. 笔试成绩管理模块 学生信息查询:可以根据学号、姓名、准考证号以及身份证等查询学生的详细信 息。由于经常有学生忘记或输入了错误的学号,因此需要多种查询方式。 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 23 成绩录入:成绩录入人员根据考生的学号,输入课程考生成绩,系统自动将考生 成绩保存至数据库。 成绩校验:由于单独招生是高考性质的考试,对成绩处理要求非常高,不能运行 丝毫的错误。因此要求对同一考生的每门成绩,分别有不同的录入人输入两次,对这 两次成绩进行校验,只有两次都匹配时才能确定该考生的成绩。 4. 面试综合管理模块 面试专家管理:每个面试点的不同面试场次,例如上午、下午,都要重新安排面 试专家,以最大程度的防止作弊,每个考生由 5 位专家进行面试,该模块主要是对面 试专家进行管理。 面试试卷管理:结合专业考试的要求,根据面试现场的情况,利用遗传算法进行 智能自动组卷,详细内容见 4.2 节描述。 面试成绩管理:这里同业也分为面试成绩录入和校验两个子系统。具体为成绩录 入人员根据考生的学号,选择面试专家,输入课程考生成绩,系统自动将考生成绩保 存至数据库。由于面试专家有多位,且同一考场,不同考生录入面试专家成绩时的顺 序是未知的,因此,录入面试成绩的过程、面试成绩在数据库中的表结构与笔试成绩 表结构完全不一样。成绩校验人员要求对同一考生的每门成绩,分别有不同的录入人 输入两次,对这两次成绩进行校验,只有两次都匹配时才能确定该考生的成绩。 5. 辅助录取管理模块 成绩统计汇总:将考生的面试成绩、笔试成绩进行分类汇总,可按报考专业汇总, 也可按总分或专业单科成绩进行汇总。 特长分处理:为特长生实行加分,根据获奖或取得证书的级别,按照规定的分值 予以加分。 辅助录取:按照学校招生方案的设定,根据遗传算法设计出一个最优的招生计划 (具体含招生专业、招生人数、录取方法等)进行录取。 6. 数据处理模块 学生信息维护:主要是通过报名系统,获得单招的报考学生信息,并将学生信息 导入考生信息,可进行学生信息的添加、删除和修改等编辑操作。 学生成绩维护:对单招录取系统中笔试成绩、面试成绩、特长分等成绩信息进行 基本的维护。如备份数据库至 sql 文件、导出考生成绩、生成报表并打印考试成绩等。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 24 系统数据维护:对系统中所有数据进行必要的权限范围内的维护。 3.1.3 技术描述 1.技术选型 考虑到招生录取工作是一项具有很高保密性和安全性的工作,同时考虑到这项工 作需要很多不同部门的协同工作,故将招生录取系统设计为基于 Internet/Intranet 体系结构。并且考虑到安全性,所有数据库服务器、客户端都与网络进行物理隔绝。 结合系统的功能定位和具体的需求,决定采用 C/S(客户端/服务器)架构[24]。 综上所述,本系统的系统模式和开发技术可以总结为: 服务器构架: C/S 架构 开发环境:Eeclipse 开发语言:Java 客户端界面:Java Swing 数据库持久化层:自己开发通用数据库层,BaseDAO 数据库:SQL Server 2005 操作系统:Windows 2003 Server 在数据访问模型中,采用通用的三层数据访问模型,如图 3-2 所示。 图 3-2 三层数据访问模型 2. 数据库表结构 业务逻辑层 数据访问层 (BaseDAO). 表现层 SQL 2005 表示层 中间层 数据访问层 数据库 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 25 多位录入员输入多个考生的多门课程考生成绩,这是典型的多对多关系,如图 3-3 所示。 图 3-3 成绩数据库表、实体关系模型 系统涉及的表有 RBAC、课程、录入员、考生、复核前笔试成绩、复核后笔试成 绩、复核前面试成绩、复核后面试成绩等多个表,图 3-4 给出了系统部分关键表的关 系结构图,图 3-5 是自动组卷模块相关数据库表结构图。 课程 PK id 名称 类别 面试标志 考生 PK id 准考证号 姓名 性别 身份证 类别 录入员 PK id 姓名 密码 角色 复核前笔试成绩 PK id FK3 考生 FK1 课程 FK2 录入员 成绩 缺考 作弊 面试专家 PK id 姓名 场次 复核前面试试成绩 PK id FK4 考生 FK2 课程 场次 FK1 面试专家 FK3 录入员 成绩 缺考 作弊 笔试成绩 PK id FK2 考生 FK1 课程 成绩 缺考 作弊 面试试成绩 PK id FK1 考生 FK3 课程 场次 FK2 面试专家 成绩 缺考 作弊 图 3-4 数据库关键表结构 课程 录入员 考生 考生成绩 n 1 n 1 11 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 26 试题库考题 PK id FK1 课程 知识点 难度 分值 课程 PK id 名称 类别 面试标志 考生 PK id 准考证号 姓名 性别 身份证 类别 复核前面试成绩 PK id FK2 考生 FK1 课程 场次 成绩 缺考 作弊 面试试卷 PK id FK1 试题 FK2 课程 FK3 考生 图 3-5 自动组卷模块数据库表结构 3.1.4 性能需求 1. 安全要求 单招录取对信息的安全、数据库的安全有着较高的要求。针对这种情况,除了采 用相应的加密技术外,也应设计一种安全模型。基于角色的数据访问权限控制(RBAC) 应用较为广泛。采用 RBAC 模型设计的招生录取系统可通过对不同角色的用户访问权 限的控制,更能有效的保证一些重要和敏感数据的安全性。 2. 性能要求 (1) 成绩管理模块:要求能够同时满足 50——80 人同时录入学生成绩,并且 对 3000 人每门课程成绩的复核时间在 5s 之内,成绩保存至数据库的时间 在 30s 之内。 (2) 面试管理模块要求每个客户端利用系统在 5s 内能自动生成符合要求的面 试试卷。 (3) 辅助录取模块要求能够对学生各类成绩进行多种汇总,甚至加权汇总。并 要求在自动录取前,先智能的确定最佳招生录取的方案。 3. 精度要求 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 27 系统中所有成绩要求精确到小数点后 1 位;出现在算法中的百分比要求精确到小 数点后 2 位。 3.2 规格说明 系统功能和目标如下: 1. 登录前,需检查 Client 的 IP 地址是否在运行的范围内,程序只能在设定的 IP 范围内运行。 2. 为增强系统的保密性,设置身份验证模块,当用户进入系统时,首先要进行 身份验证。管理员初次使用系统由系统设计者提供用户名及口令,其他用户 则由管理员提供用户名及口令。数据传输过程中采用加密、校验技术,提高 了数据的安全性和可靠性。 3. 操作人员只能看到自己输入的考生成绩,不能直接看到其他操作人员输入的 考生成绩。每个操作人员只能修改自己输入的考生成绩,不能修改其他操作 人员录入的成绩。 4. 可以根据准考证号、身份证号码、姓名检索考生信息,因为经常有学生漏写、 错写准考证号。 5. 面试时,为了防止考生作弊,面试专家都是临时抽签决定的,每个考点的不 同场次的面试专家都不同,因此,要求每场面试都可以方便、迅速的设置面 试专家名单。 6. 采用遗传算法能够快速智能的生成符合面试现场要求的面试试卷。 7. 在录取模块,能够按照学校的要求,保证学校收益最大化的前提下智能的获 得最优招生策略。 8. 无需改动源代码的情况下,用户可以重新设定学生各项成绩的加权计算公 式。 9. 系统所有数据可有系统管理员或数据维护人员进行管理和维护,可对成绩、 录取信息生成报表、打印、备份等操作。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 28 3.3 UML 建模及分析 系统利用 UML 专业建模工具 JUDE 对整个高职单招录取系统进行建模设计及分析。 3.3.1 建立系统的用例视图 用例视图是被称为参与者和外部用户所能观察到的系统功能的模型图。用例是系 统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。用例模型的 用途是列出系统中的用例和参与者,并显示哪个是用例的执行者[25]。 图 3-6 成绩管理系统用例图 图 3-6 是本系统的部分用例图,用例图是用来表现用户所期望的系统功能。总体 而言,其参与者是系统管理员、成绩录入员、录取管理员和试题管理员,用户登录后, 首先系统管理员为用户分配角色,然后设置权限,设定可以使用系统的成绩录入员、 试卷管理员,以及录取管理员等操作人员;学生面试前,成绩管理员要设定面试专家 信息,录入所有的面试试题,学生面试抽题时系统根据遗传算法自动组卷,在面试现 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 29 场录入成绩时,往往来不及进行校验,因此成绩管理员需要在面试后进行面试成绩的 校验、管理;成绩录入员根据学生信息,录入学生各门课程的考试成绩,最后对录入 的成绩进行校验,如果有错误,则修改录入有误的成绩;然后,处理加分等特殊成绩, 最后利用系统进行成绩汇总、统计,最后进行辅助录取。 3.3.2 系统动态行为分析 活动图描述用例或对象内部的工作过程,活动图是由状态图变化而来的,它们各 自用于不同的目的。活动图依据对象状态的变化来捕获动作与动作的结果。活动图中 一个活动结束后将立即进入下一个活动图。用活动图可以进一步描述业务工作流程, 下图 3-7 描述了成绩管理系统的概要部分活动图[26]。 图 3-7 系统整体概要活动图 系统管理员设定权限后,成绩录入用户登录,然后输入学生准考证号,检索到学 生信息,录入该生的笔试成绩,检查输入的各科笔试成绩,修改录入有误的成绩,反 复核查修改,直至没有错误;面试时,学生首先取得系统根据遗传算法自动组合的面 试试卷;面试结束后,成绩录入员录入该生的面试成绩,并核查面试成绩,修改录入 有误的成绩,反复核查修改,直至没有错误;最后处理特长生、加分等特殊成绩,进 行排序、统计,然后进行录取。这就是涵盖所有用例的整个系统流程。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 30 3.3.3 组件图描述分析 组件图:组件是软件系统的一个物理单元,组件和类之间有密切关系。一个组件 可以包括多个类。图 3-8 描述了单招录取管理系统组件图。 图 3-8 成绩管理系统组件图 与偏向最终用户的用例图相比,组件图比较偏向开发人员,因此,组件图与用例 图既有相同,也有不同。最简单的可以将系统划分为用户界面、业务逻辑、数据库 DAO,以及数据库层这四部分。虽然在软件调研阶段,对软件系统功能进行了划分, 并根据实际情况,用用例图做了详细的表述,但实际的软件系统中,从系统开发的角 度,有很多功能是在各个模块反复使用的,例如数据库的 DAO、遗传算法。 从系统组件图可以看出,整个系统可以分为主要业务逻辑层、辅助业务逻辑层, 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 31 以及 DAO 层;主要分为 RBAC 权限管理、权限验证、用户登录验证、考生信息导入导 出、数据库备份,以及用户操作记录;主要业务逻辑层可以划分为学生信息检索、课 程管理、读写笔试成绩、遗传算法、面试试题管理、自动组卷、面试专家、读写面试 成绩、面试成绩加权、特长分处理,以及辅助录取这些功能。 每一个功能都尽量的高耦合、低内聚,能够独立的完成相应的功能,为其他模块 提供服务。 功能详细说明: 1. 用户角色权限管理 RBAC 权限管理分为资源管理、角色分配、权限分配和用户管理这四个功能,分 别说明如下。 资源管理:根据考生类别,例如考现场临摹的艺术类考生,设置不同的资源类别。 角色分配:系统管理员可以为成绩录入员、成绩管理员设定不同的角色,不同的 学生可以分成的文科组、理科组、艺术组等资源类别,不同的角色可以录入、管理不 同学生的成绩。 权限分配:系统管理员可为各类角色分配相应权限。 用户管理:系统管理员创建成绩录入员、录取管理员的过程,并可分配相应的角 色,从而赋予用户不同的权限。 用户登录:注册用户登录时需输入自己的用户名和密码,使每次进入该系统时会 自动提示并验证用户的身份,通过单向散列算法对用户密码等敏感信息进行加密以达 到安全管理的目的。 2. 笔试面试成绩读写 用户要录入考生课程考生成绩并保存至数据库、辅助录取时调用考生成绩,都需 要读写考生笔试面试成绩。由于笔试面试成绩读写操作是类似的,因此放到一起。包 括四部分,录入考生成绩、读取考生成绩、删除已录入成绩,以及更新学生成绩。 该功能是比较底层的,主要是程序逻辑,不直接关系业务逻辑。 3. 笔试面试成绩录入 这里主要是录入考生笔试、面试成绩。笔试成绩相对而言比较简单,根据输入的 考生学号,检索学生信息,核查考生类别,防止机械系考生的成绩录入到艺术系临摹 考生成绩中这种错误,然后录入考生的课程考试成绩。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 32 录入面试成绩比笔试成绩要复杂很多,在录入成绩前,要经过遗传算法自动生成 面试试卷,然后输入考点、面试专家名称、面试场次,并输入的考生学号检索学生信 息,核查考生类别,最后才录入成绩。录入详细的信息是为了在需要时对面试成绩作 加权处理。具体流程如图 3-9 所示。 图 3-9 录入面试成绩顺序图 成绩录入、成绩核查是系统的重点。首先,用户需要有适当的权限以登录成绩管 理系统,经系统验证后方能登录。其次,成绩录入过程中,首先要输入学生的准考证 号,系统然后要获取考生信息;因为单独招生是文理科、艺术等考生分开科目考试的, 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 33 然后验证是否需要考这门课程;无误后方可录入考生成绩,如果是面试,还需输入考 点、面试组、面试专家等信息,最后录入考生成绩,并且系统自动保存至数据库。 重点功能说明如下: 试题管理:事先录入所有的试题,面试现场,考生抽题时,系统根据遗传算法自 动编组面试试卷,供考生面试现场答题用。 面试专家管理:为了防止作弊,每个面试考点的专家信息都是开考后才知道的, 因此,录入面试成绩前,每个考点需要先维护该考点的面试专家信息。 4. 成绩核查 核查成绩:每个考生每门课程的成绩由 2 位成绩录入员分别录入一次,系统对录 入的 2 次考生成绩进行对比,不匹配的成绩为录入错误,完全匹配的成绩为正确的成 绩。 保存正确的成绩:将匹配的成绩保存到数据库“核查后成绩”表中。 5. 辅助录取 成绩汇总:将学生参与的课程考试成绩进行各种不同类别的汇总。 面试成绩加权处理:面试中,不同专家评分标准不同,因此各考点成绩有的偏高, 有的偏低,进行加权处理,减低人为因素对面试成绩的影响。 特殊成绩处理:处理各种加分政策,例如特长生加分。 辅助录取管理:分文科、理科、艺术等类别,根据遗传算法,获得学校最优化的 招生方案制定录取规则进行录取辅助录取。 统计打印:系统管理员和数据维护人员可进行各类数据的统计打印工作。 6. 数据库通用 DAO 模块 数据库 CRUD:CRUD 是数据库的插入、删除、更新操作,利用 Java 的反射功能, 设计一个类,可以对所有需要操作数据库的地方进行 CRUD 操作[27]。 3.3.4 序列图描述用例分析 序列图以可视化方式为系统中逻辑的流程建模,能够让系统分析人员描述和验证 逻辑。序列图描述对象是如何交互的,并且将重点放在消息顺序上,描述消息如何在 对象间发送和接收。如图 3-10 所示反映了高职单招录取系统用户登录和核查成绩的 序列图。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 34 图 3-10 用户登录序列图 系统安全是重中之重,用户登录过程中,首先要检测是否在允许的 IP 范围内, 如果不在允许的范围内,直接返回;其次,验证用户输入的用户名、密码是否匹配, 为了防止网络嗅探等攻击,密码在网络传输的过程中首先进行加密。 3.3.5 活动图描述系统用例 活动图描述了需要做的活动以及执行这些活动的顺序,经常用活动图描述一个总 体业务的过程。在描述概念层视图中,活动表示需要完成的一些任务;在说明层视图 和实现层视图中,活动表示类中的方法。一个活动可以顺序地跟在另一个活动后执行, 这是简单地顺序关系。如果触发事件连接到一个粗黑线段表示的同步条上,且同步条 引出几个带箭头地触发事件,那么这几个触发事件是并行的,也就是说这几个活动 的 执行次序可以是随意的。 1. 核查成绩的活动图(如图 3-11 所示)。 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 35 图 3-11 成绩核查活动图 本系统采用的方法是二组录入人员,分别把考生每门课程的成绩录入一遍,然后 系统自动校对这二组输入的成绩。系统自动校对这二组输入的成绩是否匹配的过程就 是成绩检查的流程。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 36 首先分课程按学生准考证号、录入人取出所有成绩,将数据库中每条成绩记录装 配成一个考生成绩类的对象,然后检查每个学生该课程成绩的录入次数是否为 2 次, 如果不是 2 次则一定是多录或漏录入了学生成绩;如果是 2 次,则检查录入的 2 次成 绩是否相等,如果不等则需修改录入有误的成绩。 2. 成绩汇总活动图 成绩汇总是单招考试的的重中之重。如图 3-12 所示,是成绩汇总的流程。 图 3-12 成绩汇总流程图 成绩汇总时,首先读取所有考生所有课程的笔试成绩:按照学号、课程的顺序排 列,此时,这些成绩记录像一个二维数组,每一位考生的每一门考试成绩记录映射为 一个 Java 对象,再将这些成绩记录根据准考证号进行合并,将每个考生的多个科目 笔试成绩映射为一个 JAVA 对象;然后汇总考生面试成绩:首先读取所有面试成绩, 在所有面试专家评分中去除最高分,去除最低分,然后取平均分,根据考点、场次对 面试成绩加权;最后读取加权成绩并进行汇总:将笔试成绩、加权后面试成绩、加权 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 37 成绩进行汇总,就是考生的最终成绩。 考试结束后,笔试及面试成绩汇总、校验完毕后,综合学校招生需求、招生能力, 以及招生动力等各方面因素,通过遗传算法得出最优化的招生策略,即方案,从而展 开录取工作。详细过程见图 3-13 所示。 图 3-13 辅助录取活动图 3.3.6 状态图描述用例分析 状态图对于接口、类或协作的行为建模尤为重要。强调对象行为的事件顺序,强 调对象对外部事件的响应及相应的状态变迁。其主要用来描述对象、子系统和系统的 生命周期[28]。图 3-14 描述了成绩的状态图。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 38 图 3-14 成绩录入状态图 在系统中,录入考生课程成绩后,等待用户把学生课程成绩录入完成后进行核查, 此时成绩处于“新创建”状态;核查过程中,处于“核查”状态,此时不应该修改考 生课程成绩;核查成绩后, 2 次录入成绩都相等的,处于“正确”状态,可以保存如 “核查后成绩数据库表”;如果是只录入了 1 次或录入了 3、4 次的成绩,则处于“录 入成绩次数不对”的状态,应该补录或删除多录的成绩; 2 次成绩不相等的记录,应 该根据考生的卷面成绩,更正错误的成绩记录,然后重新核查成绩。 3.3.7 系统类图分析 类图是使用得最普遍的软件开发用图,它描述类和类之间的静态关系。即显示了 信息的结构,同时还描述了系统对象的行为。系统类分类主要任务是把用例描述中的 各个步骤和动作变换为协作中的类、类操作和类之间的关系。具体地说,就是把用例 中的每个步骤所完成的工作交给协作中的类来完成。用例视图和行为描述图(活动图、 状态图、序列图)描述了系统对象的特征、操作。类是对象的封装,从用例行为描述 不难提取出类[29]。综上所述,可以发现对象,找出对象类,描述类的属性与服务,建 立类图。 对整个系统而言,在系统边界以外与系统进行交互的活动者是系统管理员、录入 员和成绩管理员,考虑系统问题域和系统责任可以发现下述类: 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 39 用户类:派生出管理员类、成绩录入员类和成绩管理员类三类子类。 实体类:用户数据表类、RBAC 数据库类、考生课程成绩类三类子类,复核前成 绩类派生出复核后成绩类;数据库表类还包括很重要的。 数据库 DAO 类:数据库通用 DAO 类,根据数据库表类,自动进行 CURD 操作的辅 助类。其原理是根据数据库表类的字段信息,利用 Java 反射功能,自动生成 SQL 语 句。 登录验证类:用于用户进入系统前登录验证。 操作类:包括学生信息检索类、成绩录入类、成绩核查类、辅助录取类、遗传算 法自动组卷类,这几个类涉及系统中成绩数据的录入、核查、自动组卷、成绩排序等 核心操作功能。 统计报表类:用于统计、生成报表、打印。 如图 3-15 所示,为系统的 RBAC 权限管理类图,图 3-16 所示为考生成绩相关类 图,图 3-17 为通用数据库 DAO 的相关类图。 图 3-15 RBAC 权限管理类图 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 40 图 3-16 考生成绩相关类图 图 3-17 通用数据库 DAO 的相关类图 面试综合管理模块是单招录取系统中的一个重要模块,其中结合遗传算法实现自 动组卷,系统类图如图 3-18 所示。 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 41 图 3-18 面试组卷的系统类图 自动组卷是一个接口,通过遗传算法具体实现了面试组卷的功能,为各个考生智 能生成了独立、且唯一的面试试卷,每份试卷都包含了满足面试要求的考题;一共有 5 位面试专家对考生进行评分,学生面试结束后,成绩录入员将考生的面试成绩录入 系统。 3.3.8 部署图描述分析 部署视图描述位于节点实例上的运行构件实例的安排。节点是一组运行资源,如 计算机、设备或存储器等,部署视图用部署图来表达。图 3-19 表示了系统中的各构 件和每个节点所包含的构件。节点用立方体图形表示。 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 42 图 3-19 系统部署图 软件系统完成后,在局域网运行,由于学生较多,通常有两千多考生,因此,用 户机的数量在 50 台左右,为这么多的客户机安装软件系统是非常麻烦的,而采用 BS 架构又无法保障安全性,因此采用 Java WebStart 进行程序的发布[30]。 用户在浏览器输入发布服务器的网址,首先进入 Java Run Environment (JRE) 的下载界面,下载安装后刷新浏览器,则自动下载 Java 程序。这极大的简化的发布 工作,尤其在程序根据学校要求有了更新后,不用再费时费力的更新 50 台电脑,只 要使用者浏览下网页即更新了程序。 3.4 概要设计 面向对象是软件开发的一种方法,它的设计目标是增强代码的可重用性同时减少 对软件的维护工作。 业务对象模型描述现行业务活动对象之间的关系,利用业务对象描述现行系统, 通过对象的合作来实现业务用例的功能。图 3-20 给出成绩管理中的对象模型类图。 基于 java 的高职单招录取系统的设计与实现 第三章 系统的总体分析及设计 43 图 3-20 成绩管理中的对象模型类图 系统分析模型把逻辑对象模型向系统实现方向推进了一步,使它更多地接近逻辑 对象模型。图 3-21 给出了单招系统分析类图。 图 3-21 单招系统分析类图 整个高职单招录取系统以独立开发的方式,使用面向对象系统的开发方法,通过 系统开发准备、系统调查、系统分析、系统设计、系统实施与转换、系统维护和评价 整个一系列过程来实施。 系统采用 Java 开发,因此可以运行在 Windows 下,也可以运行在 Linux 下,考 虑到安全性,因此采用 C/S 架构,由于采用了 Java WebStart 发布技术,因此兼有 B/S 架构发布方便的优点。Client(客户端)负责提供表态逻辑、显示用户界面信息、 访问数据库服务器;Server(服务器端)则用于提供数据服务。系统具备数据库维护 功能,及时根据用户需求进行数据的添加、删除、修改、存储等操作[31]。 辅助录取管理 招生计划 学生成绩汇总 学生信息控制 管理员 (from 系统角色) 校验人员 (from 系统角色) 学生信息 create 成绩录入人员 (from 系统角色) 成绩信息 receivereceive 第三章 系统的总体分析及设计 基于 java 的高职单招录取系统的设计与实现 44 本系统采用 Java 语言开发,Swing 技术作为程序界面,后端采用 MS SQL Server 2005 数据库。 3.5 本章小结 本章重点对高职单招录取系统的总体需求做了分析,并设计相应的功能模块,对 系统所需的数据、性能、运行需求做了说明。采用 Jude 实现面向对象建模,列出部 分图例进行分析。 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 45 第四章 智能组卷及辅助录取模块的遗传算法实现 本系统设计的核心思想在于体现系统在招生考试、录取过程中的智能性和高效 性。本章首先介绍遗传算法的基本算法和应用步骤,然后在具体研究面试现场实时智 能组卷、智能优化招生方案辅助录取等实际应用问题求解的基础上,通过遗传算法实 现第三章所设计的相关功能模块。本章分别从上述两个实际应用的智能性、高效性需 求出发,进行遗传算法编码设计、适应度函数构造和遗传算子的操作,着力于适应度 函数的构造,使算法能解决实际问题,提高算法效率,提升系统的智能化。 4.1 遗传算法的基本原理 本节主要对遗传算法的基本术语、基本算法、应用步骤及其理论基础分别作出详 细描述。遗传算法( Genetic Algorithm,GA)是基于自然选择,在计算机上进行模拟 生物进化机制的寻优搜索算法。在自然界的演化过程中,生物体通过遗传(传种接代, 后代与父辈非常相像)、变异(后代与父辈又不完全相像)来适应外界环境,一代又 一代地优胜劣汰,发展进化 [32]。遗传算法则模拟了上述进化现象。它把搜索空间(欲 求解问题的解空间)映射为遗传空间,即把每一个可能的解编码为一个向量(二进制 或十进制数字串),称为一个染色体,向量的每一个元素称为基因。所有染色体组成 群体,并按预定的目标函数(或评价指标)对每个染色体进行评价,根据其结果给出 一个适应度的值。算法开始时先随机地产生一些染色体(欲求问题的候选解),计算 其适应度,根据适应度对各染色体进行选择复制、交叉、变异等遗传操作,剔除适应 度低(性能不佳)的染色体,留下适应度高(性能优良)的染色体,从而得到新的群 体。由于新群体的成员是上一代群体的优秀者,继承了上一代的优良性态,因而在适 应度上明显优于上一代。遗传算法就这样反复迭代,向着更优解的方向进化,直至满 足某种预定的优化指标。 4.1.1 遗传算法的基本实现技术 传统遗传算法包含五大要素:参数编码、初始群体设定、适应度函数设计、遗传 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 46 操作设计和控制参数(主要指群体规模以及执行遗传操作的概率等)的设定。 1. 遗传算法基本流程 基本遗传算法流程见图4-1所示: 开始 产出初始群体并编码 计算个体的适应值 选择 交叉 变异 输出结果 结束 N Y 是否满足条件 图 4-1 基本遗传算法流程 步骤1:随机产生初始群体,作为第一代,个体长度、群体规模、交叉概率、变 异概率为固定值; 步骤2:父代群体计算适应度值; 步骤3:判断是否满足终止条件,是,则执行步骤 4;否则,进行选择、交叉、变 异操作形成子代群体,并将子代群体作为下一代迭代的父代群体,转入执行步骤2; 步骤4:输出最佳个体,退出。 可见,遗传算法从任一初始化群体出发,通过选择(使优秀个体有更多机会传给 子代),交叉(体现优秀个体间的信息交换),变异(引入新的个体,保持群体的多 样性操作),群体一代一代的进化到搜索空间中最优点附近,直至收敛到最优解点, 遗传算法不是直接作用在问题空间中,而是在编码空间中,并且遗传操作非常简单, 这使得遗传算法具有简单、通用、鲁棒性强的特点。 2. 遗传编码 遗传算法的工作对象是字符串,因此对字符串的编码有两点要求:一是字符串要 反映所研究问题的性质;二是字符串的表达要便于计算机处理。由问题空间向GA空 间映射称为编码,而由编码空间向问题空间的映射称为译码 [33]。遗传算法首先要对实 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 47 际问题进行编码,用字符串表达问题。这种字符串相当于遗传学中的染色体。每一代 所产生的字符串个体总和称为群体。为了计算机实现的方便,通常字符串长度固定, 字符选0或1。遗传算法的编码机制主要有:二进制编码、格雷码编码、浮点数编码、 树编码等。二进制编码和格雷码编码将问题空间的参数表示为基于字符集 {0,1}构成 的染色体位串,需要问题的解空间为离散型或能以离散值表达。浮点数编码则对一些 多维、高精度的连续函数优化问题,存在较大的优势。 3. 适应度函数 在遗传算法中,衡量个体优劣的尺度是适应度。根据适应度的大小,决定某些个 体是繁殖或是消亡。因此,适应度是驱动遗传算法的动力。遗传算法在进化搜索中基 本不利用外部信息,仅以适应度函数为依据,利用种群中每个个体的适应度值来进行 搜索。一般而言,适应度函数是由目标函数变换而成的。在实际问题中,有时希望适 应度越大越好(如盈利、劳动生产率),有时要求适应度越小越好(费用、方差)。 为了使以后所讨论的遗传算法有通用性,这种最大值、最小值问题宜统一表达。通常 都按最大值问题处理,而且不允许适应度小于零[34]。 4. 初始种群 遗传算法是一个群体搜索算法,因此需要产生一定数量的染色体种群。为了使系 统在初始搜索时,对于每一个状态空间都有有相等的机会,一般要以随机方式产生初 始种群。初始种群的规模,一般由实际问题的具体性质决定,它通常关系着算法运算 的速度。种群过大会造成搜索效率的降低,失去遗传算法的功能;种群过小,则会造 成算法提早收敛。 5. 遗传算子 GA中最常见的算子有如下几种: (1)选择算子(selection/reproduction) 为了将已有的群体变为下一代群体,遗传算法仿效进化论中的“自然选择、适者 生存”的原则,从旧群体中选择优良个体进行复制。选择的依据是个体的适应度大小, 适应度大的个体接受复制,使之繁殖;适应度小的个体则予以删除,使之死亡。这样, 算法就会朝最优化的方向进化。具体为选择算子从群体中按某一概率选择个体,某个 体xi被选择的概率pi与其适应度值成正比。最通常的实现方法有轮盘选择(Roulette WheelSelection),精英保留选择( Elistism Selection)和排序选择( Rnk-basedModel)。 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 48 (2)交叉算子(Crossover) 通过复制产生的新群体,其性能得到改善,然而它不能产生新的个体。为了产生 新的个体,遗传算法仿照生物学中杂交的办法,对染色体(字符串)的某些部分进行 交叉换位。被交叉的母体都选自经过复制产生的新一代个体(优胜者)。交叉算子将 被选中的两个个体的基因链按概率pc进行交叉,生成两个新个体,交叉位置的选择是 随机的。其中 pc是一个系统参数。对于二进制交叉,有单点交叉、多点交叉和均匀交 叉、顺序交叉、匹配交叉等多种方法。通过交叉,子代的字符串不同于亲代。有时, 这种差别很明显,有时,这种差别却不大。尽管如此,交叉仍然是遗传算法产生新个 体的主要手段。正是有了交叉换操作,群体的形态才多种多样。 (3)变异算子(Mutation) 遗传算法模仿生物学中的基因突变的方法,将个体字符串某位符号进行逆变,就 是将1变为0或由0变为1。遗传算法中,个体是否进行突变以及在哪个部位突变,都由 事先给定的概率决定。通常,变异概率很小。应当指出,尽管变异和交叉都能产生新 个体,但是在遗传算法中,交叉的作用远比变异重要。 6. 控制参数选择 在遗传算法的运行过程中,存在对其性能产生重大包括染色体位串长度L、群体 规模popsize、交叉概率pc在初始阶段和群体进化过程中,对这些参数进行合理的GA 以最佳的搜索轨迹达到最优解。 控制参数主要有群体规模、迭代次数、交叉概率、变异概率等,对此基本的遗传 算法都需要提前设定: M:群体大小,即群体中所含个体的数量,一般取为20~100。 T:遗传运算的终止进化代数,一般取为100~5000。 PC:交叉概率,一般取为0.5~0.99。 Pm:变异概率,一般取为0.0001~0.1。 4.1.2 遗传算法的应用步骤 遗传算法的基本应用步骤如下: 1. 确定决策变量及其各种约束条件,即确定出个体的表现型X和问题的解空间。 2. 建立优化模型,即确定出目标函数的类型(是求目标函数的最大值还是求目 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 49 标函数的最小值)及其数学描述形式或量化方法。 3. 确定表示可行解的染色体编码方法,也即确定了个体的基因型X及遗传算法 的搜索空间。 4. 确定解码方法,即确定由个体基因型X到个体表现型X的对应关系或转换方 法。 5. 确定个体适应度的量化评价方法,即确定出由目标函数值 f(X)到个体适应 度F(X)的转换原则。 6. 设计遗传算子,即确定出选择运算、交叉运算、变异运算等遗传算子的具体 操作方法。 7. 确定遗传算法的有关运行参数,即确定出遗传算法的 M(种群大小)、 T(终 止进化代数)、PC(交叉概率)、Pm(变异概率)等参数。 由上述构造步骤可以看出,可行解的编码方法、遗传算子的设计是构造遗传算法 时要考虑的两个主要问题,也是设计遗传算法时的两个关键步骤。对不同的优化问题 需要采用不同的编码方法和不同操作的遗传算子,它们与所求解的具体问题密切相 关,因而对所求解问题的理解程度是遗传算法应用成功与否的关键。 4.1.3 遗传算法的应用领域及现状 遗传算法的主要应用领域在于函数优化(非线性、多模型、多目标等 ),机器人学 (移动机器人路径规划、关节机器人运动轨迹规划、细胞机器人的结构优化等 ),控制 (瓦斯管道控制、防避导弹控制、机器人控制等),规划(生产规划、并行机任务分配等), 设计(VLSI布局、通信网络设计、喷气发动机设计等 ),组合优化(TSP问题、背包问题、 图分划问题等),图象处理(模式识别、特征提取、图象恢复等),信号处理(滤波器设 计等),人工生命(生命的遗传进化等)领域[35]。 另外,目前遗传算法的研究出现了几个新的方向: 1. 基于遗传算法的机器学习 这一新的研究方向把遗传算法从历史离散的搜索空间的优化搜索算法扩展到具 有独特的规则生成功能的崭新的机器学习算法。这种新的学习机制对于解决人工智能 中知识获取和知识优化精炼的瓶颈难题带来了希望。 2. 遗传算法与其他计算智能方法的相互渗透和结合 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 50 遗传算法正日益和神经网络、模糊推理以及混沌理论等其他智能计算方法相互渗 透和结合,必将达到取长补短的作用。 3. 并行处理的遗传算法 并行处理的遗传算法的研究不仅是遗传算法本身的发展,同时对于新一代智能计 算机体系结构的研究都是十分重要的。 4. 遗传算法与人工生命的渗透 人工生命是用计算机、机械等人工媒体模拟或构造出的具有自然生物系统特有行 为的人造系统,人工生命与遗传算法有着密切的关系,基于遗传算法的进化模型是研 究人工生命现象的重要理论基础。人工生命与遗传算法相辅相成,遗传算法为人工生 命的研究提供了一个有效的工具,人工生命的研究也必将促进遗传算法的进一步发 展。 5. 遗传算法与进化规则及进化策略的结合 遗传算法、进化规则及进化策略是演化计算的三个主要分支,这三种典型的进化 算法都以自然界中生物的进化过程为自适应全局优化搜索过程的借鉴对象,所以三者 之间有着较大的相似性。随着对各种进化算法机理研究的发展,各种进化计算之间会 相互结合、相互交流、相互融合。 4.2 面试现场智能组卷实现 本节着眼于讨论利用遗传算法在单招面试考试现场智能组卷的问题。分析了智能 组卷相关技术,并对面试试题的筛选、组卷、建模、实现等做了全面介绍。 单独招生的特点就是允许主考院校有更大的自主招生权限,主考院校根据自己学 校的各个专业的特点,侧重挖掘在相关方面有特色、有特长的学生加以录取。这就需 要学生除了参加统一的理论笔试后,再逐一经行现场面试。 为了保证面试环节的公正、公平性,在面试期间(一般为两天),学校组织近 200 名教师分成40组左右,每组5名教师构成一个面试考场的专家。(每个考场的具体5 名教师分配采用临时随机组合法则,这也是通过本系统现场完成的,因其技术成熟, 就不在此赘述。)考生按照考试号顺序按序分配到各个不同考场排队候考。每个考生 进入考场前由考场工作人员利用本系统智能的生成一套面试试卷,由于每个学生的面 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 51 试时间在10到15分钟,故考场工作人员有足够的时间来生成面试试卷。学生领取试卷 后进入考场进行现场答题,专家现场给出评分。学生面试的分数最终交给面试环节的 成绩管理人员进行核算、录入和校验等操作。 4.2.1 智能组卷概述 智能组卷实际上就是根据用户设置的组卷条件,按照一定的算法从题库中选择满 足要求的最优解,组成试卷。试卷主要质量控制指标有:试卷总分、各类题型及试题 数量、各知识点分数比例和各类难度等级分数比例。 这里所采用的算法是问题的关键所在,它决定了组出的试卷是否满足用户的要求 及满足的程度如何。现有的网络考试或信息化考试系统,基本都采用计算机自动组卷 和人工组卷两种方式来进行。自动组卷就是输入各个约束条件的参数,系统根据这些 参数随机抽取相应的试题组成试卷。人工组卷就是根据用户的经验和需要手工出题成 卷,存入数据库中备用,或者输入与自动组卷的部分约束条件,系统显示符合条件的 试题,再由用户选择合适的试题组织成卷,这种方案需要用户在大量符合条件的试题 中进行筛选,过程较为繁琐。网络考试系统的关键技术是组卷策略。如何快速组卷, 并且提高组卷的成功率,是考试系统开发中的热门课题。目前,国内外在组卷方面的 研究也是方法众多,总结起来主要包括以下几种算法: 1. 随机算法[36]。随机算法是一般系统中运用较多的组卷策略,主要有两种情况, 一是从试题库中随机抽取试题,然后判断是否符合试卷的约束条件。二是从符合试卷 某项要求的试题库子集中随机抽取试题,再判断其是否符合试卷的其它约束条件。实 际上,随机策略就是在试题库中随机搜索满足条件的试题,不断重复搜索过程,直到 试题生成操作完成或不能搜索到满足约束条件的试题为止。这种方法具有很大的随机 性和不确定性,特别是题库中题量少的情况下,其效率更差。 2.回溯试探法[37]。回溯法是一种“通用的解题法”,它可以求出问题的所有解 或任一解。它是将随机选取法产生的每一状态都记录下来,当搜索失败时,释放上次 记录的状态类型,然后再按照一定的规律变换另一种新的状态类型进行试探,通过不 断的回溯试探,直到试卷生成完毕或退回出发点为止。这种有条件的深度优先搜索法, 对于状态类型以及出题量都比较小的题库系统而言,成功率较高,但是实际应用时发 现这种算法对内存的占用量大,程序结构相对复杂,而且由于依据一定的规律去变换 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 52 另一种新的状态类型进行试探的,但这种规律破坏了选择试题的随机性,并且组卷时 间长。在这两方面与用户的所想所需不符,因此它也不是一种很好的组卷方法; 3.误差补偿策略。理想的试题生成结果是各项约束条件百分之百的满足,但实 际上,由于随机技术的采用、约束条件间的相互牵制、题量的限制等,在试题生成过 程中很难达到最理想的状态。误差补偿策略就是在试题生成过程中当不满足约束条件 时,适当放松约束条件,让试题在允许的误差区域内完成。误差策略在实际试题生成 中确实可以减少失败次数,提高试题生成的成功率及效率,但实际试题生成中误差的 区间是较难掌握的尺度; 4.优先权策略。在试题生成的初始阶段,由于各项属性都有较大的取值范围, 所以各指标的牵制问题不会立即反映出来,但随着被选试题数目的增加,取值范围逐 渐缩小,随之矛盾便会产生,为了避免这种情况,可考虑利用优先权策略,将难选试 题放在前面选出。该方法在实际操作过程中还需要不断对优先权重新进行计算与排 序,这样会使算法变得很复杂,效果也有限; 5.遗传算法(GA)。遗传算法(Genetic Algorithm)是当前组卷问题中学术研究最多 的、也是最前沿的策略,它是借鉴生物界进化规律 (适者生存,优胜劣汰遗传机制 )演 化而来的随机化搜索方法。通过模拟自然选择和遗传机制的全局概率寻优算法,它的 寻优过程是一个迭代过程,通过基因遗传机制将每一代的基本特征遗传到下一代。该 方法能解决随机算法中的盲目随机性,能从群体中选择更适合条件的个体,具有很强 的智能性。同时,由于遗传算法具有内在的并行性,不会出现象回溯试探法一样计算 量大的问题。许多研究人员对基于遗传算法的试卷生成方法作了深入的研究,取得了 比较好的效果。 4.2.2 单招面试组卷算法设计 1. 组卷问题的数学模型 在组卷中决定一道试题是否被选中,就要通过相关 n 项指标来做判断,这里我们 分 S1:章节(科目), S2:难度, S3:题型, S4⋯), ai 相当于第 i 项指标。若用 m 来表示试卷所含题制指标的试题数目,这就生成了一个 m*n 的矩阵。[12] 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 53             mnmm n n aaa aaa aaa ............ .......................... ............ ............ 21 22221 11211 按照上述的目标矩阵,可分析得出以下结论: (1)试卷的分数约束公式 ∑ = m ia 1i 1 =总分 (4-1) (2)各章节分值比 ∑ = m ii a 1i 21c/总分=第 j 章的分值比 (4-2) 其中,当 ai2=j 时,C1i=1,当 ai2<>j 时,C1i=0,j 是章节编号,用户出题时, 具体某一章节应占一定的分值比例。在本系统中,面试试题各章节实际是各类知识试 题的种类,如基本的物理知识、化学知识、数理知识等、人文知识等,按照不同的面 试专业,合理的进行分值匹配(为方便描述,下文依然采用章节来描述)。 (3)各难度等级所占分值比 ∑ = m ii a 1i 32c /总分=第 j 难度登记的分值比 (4-3) 其中当 ai3=j 时,C2i=1,当 ai3<>j 时,C2i=0,其中 j 是难度等级编号。用户 出题时,除了各种类别的知识点要求都应占一定的分值比例外,还要求在难度上对所 有的题目按照一定比例加以控制。 2.算法设计与实现 (1)染色体编码方法 运用遗传算法求解组卷问题的编码方案借鉴了背包问题的部分思想。题库中的待 选试题数量为 L,从 L 道试题中选出满足约束条件的试题组成试卷,可用一个长度为 L 的字串表示,每一位的取值为 0 或 1,0 表示未选中某题,1 表示选中某题,这 样,每一道试题就对应一个 0,1 组成 L 位长字符串,称为染色体,这就形成了染 色体的编码。 实现时,染色体由三个子染色体组成,分别对应三种题型:选择题、填空题和主 观题。每个子染色体的长度为题库中本类试题的数量。组卷约束条件中设置的每类题 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 54 型的数量对应为这三个子染色体位串中“1”的个数。以染色体 0110011 为例,其中 1 的个数及总长度固定,m 表示 1 的个数,n 表示染色体的总长度。用数组 code[]表 示染色体中各个基因位的值,初始时将所有位都设为 0,用 rand()函数随机选取 m 个 不重复位,将其置 1,实现后即 code[0]=0,code[1]=1,⋯code[n]=1,但种群中有多 个染色体,用一维数组无法表示所有染色体,考虑到 Java 强大的字符串处理功能, 故可将一条染色体当成一个字符串来处理。用字符串 str 表示一条染色体,数组 code[] 中的各个值通过符号“ .”来连接成字符串 str,如 str=0.1.1.1.0.0.1.1,此时染色体编码 完成,将它赋给种群中的每个个体即可。 (2)确定目标函数 组卷问题是一个有多重约束的求解问题,可以把这些约束条件转化为所需试卷的 目标,通过试卷模型中各个参数的取值来体现,因此可以把各个试卷参数取值的限定 作为实现组卷的多个目标。比如,要求试卷中难度级别为 i 的试题所占的分值共计 ai(i=1,⋯, p),p 表示难度级别的总数。各难度级别试题的比例是由用户自行定义设 置的,另外,也可以根据难度比例得出试卷平均难度。 试卷总分 Total_Score,显然有下式: ∑ = p 1i ia =Total_Score (4-4) 同理,针对组卷中其他的约束条件题型和章节也有类似的约束。这里将约束条件 进行处理,使它能够转化为目标函数的一部分。设 dai 为试卷中难度级别为 i 的实际 试题总分值与所要求该难度试题总分值之间的偏差(即绝对差值),所以(∑ dai)/p 为当前所组试卷中各难度级别试题的实际分数比值与预定值偏差的平均值。这个平均 值的大小反映了抽得的各难度试题比值与预定值之间相差的程度,均值越小,则表明 选取的试题越接近于用户的组卷要求,误差越小;反之,表明选出的试题离用户的组 卷要求相差甚远,误差越大。 若用 bi 表示试卷中第 i 章(本系统表现为第 i 科目知识点)试题所占的分数比例, 其中 q(i=1,⋯,q)表示章节总数。相应的对于这一约束条件,也可将其转化为目 标函数的一部分,设 dbi 为试卷中知识点类别为 i 的试题实际总分值与所要求的实际 总分值之间的偏差(即绝对差值),故∑ dbi/q 为当前试卷中各类考察范围的试题实际 分数比值与预定值偏差的平均值。这个平均值的大小反映了抽得的各类考察范围比例 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 55 与预定值之间相差的程度,该均值越小,则表明选取的试题越接近于用户的组卷要求, 误差越小;反之,表明选出的试题离用户的组卷要求相差较远,误差较大。这样就可 以把平均值差值当作一个个目标分量,将它们组合起来作为目标函数。由于组卷时有 多个约束条件,它们之间往往是互相制约的,很难做到同时满足,并且对于这些约束 条件的要求苛刻程度也不一样,即有些条件需要优先满足,有些则可以适当的放宽限 制。所以将这些目标分量组合时,应分配一定的权值,来说明它们的重要程度。设各 分量的权值分别为 r1,r2,⋯,rn。 r1+r2+⋯+rn=1,(1≥ri≥0) (4-5) 将以上分量组合起来,组卷问题就变成下述目标函数 f 的最小化问题。 Min f =r1* ]/d[ p 1i a pi)(∑ = +r2* ]/d[ p 1i b pi)(∑ = +⋯⋯ (4-6) 公式 4-6 中,f 越小,说明选出的试题越符合用户的组卷要求。本算法在实现时, 可将最小值问题转化为最大值问题,即对适应度函数进行转化。具体如下:取一足够 大常数 C,转化后的适应度函数为 F=C-f,这样 F 就成为转化后最大值问题时的适应 度,f 为上式最小值问题时的适应度。这里将难度、章节等约束条件转化到了目标函 数中。对于题型,总分等约束条件的处理,则采用搜索空间限定法。基本思想是对遗 传算法搜索空间的大小加以限制,使得搜索空间中表示一个个体的点与解空间表示一 个可行解的点有一一对应的关系。用这种方法能够在遗传算法中设置最小搜索空间, 提高遗传算法的搜索效率。在后面交叉算子的设计中将会一并考虑编码结构的改进。 通过编码和交叉操作的特殊设计来保证总是能够产生出在解空间中有对应可行解的 染色体。 (3)产生初始种群 由于试卷中每类题型的试题数量固定,初始种群最好是各子染色体位串中“1” 的数量固定为组卷约束条件中各类题型的试题数量。这里以洗牌方式随机产生初始种 群,种群中每个个体的子染色体位串中“1”的数量固定为组卷条件中设置的对应题 型的试题数量。 (4)遗传算子设计 ①选择算子 选择算子的目的是把优良的个体直接遗传到下一代。在产生了合法可行的染色体 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 56 gen 后,利用适应度函数对染色体计算适应度 fitness(gen)。然后对初始种群进行“优 胜劣汰”的选择复制,复制是遗传算法的基本算子,它将优良的个体遗传到下一代新 群体中进行繁殖,个体是否被复制的依据是其适应度的大小,适应度大者被复制,小 者被淘汰,保持新群体中的个体总数和原来群体相同。本系统采用轮盘选择过程,具 体描述如下: a、依次累计群体内各个体的适应度,得相应的累加适应度 cfitness,最后一个累 加适应度为 cfitness(accum); b、在[0,cfitness(accum)]区间内产生均匀分布的随机数 R; c、依次用 cfitness 与 R 相比较,第一个出现 cfitness 大于或等于 R 的个体确定为 复制对象; d、重复 b、c,直至满足所需要的个体数目。 其中适应度和为:sum=∑fitness(gen) 相关适应度为:rfitness(gen)=fitness(gen)/sum 累加适应度为:cfitness(gen)=cfitness(gen(i-1))+rfitness(gen) 表面上看,复制个体的选择是随机的。但是,选择时是依据相邻两个适应度累计 值的差值△Si;△Si=Si-S(i-1)=fi。式中 fi 是第 i 个个体的适应度。因此,适应度 fi 越大,△ Si 的距离越大,随机数落在这个区间的可能性越大,第 i 个个体被选中的机 会也越多。 ②交叉算子的设计 交叉是遗传算法的一个本质操作,也是最核心的操作,有了不断的交叉,才能不 断的产生新的个体。执行交叉的个体是随机选择的。首先,要确定交叉的概率 Pc, 大致为 0.5—0.8 左右,即有将近 50%—80%的个体要执行交换操作。然后,采用上述 轮盘选择的方法,选择被交换的个体,进行两两交换。交叉点的选择也可随机。本系 统中是采用单点交叉。单点交叉是随机产生一个断点,然后交换双亲断点之后的部分, 从而生成一个新的后代。为了保证新后代仍满足约束条件,改进单断点交叉算子,在 交叉时采用相同题型段编码整体交叉。设计题型段交叉时,在 1 到 3 整数内(一共有 三种题型)按均匀分布产生一个随机整数作为交换的题型段。交叉算子执行过程如下: a、由交叉率随机决定进行交叉的个体,即对于每一个个体,由于交叉率是小于 1 的小数,所以用 rand()函数随机产生一个小数。rand()%100/100.0 表示产生一个随机 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 57 小数,且小数点后保留两位。如果随机数小于交叉率,则此个体被选中; b、对种群内所有个体重复上述操作,选出所有要进行交叉的个体; c、判断要交叉个体总数奇偶性,若为偶数,则两两进行交叉,若为奇数,则舍 弃最后一个个体,将前面所有个体两两进行交叉操作; d、由交叉率决定随机到某个题型段进行交叉。试题共有三种类型,用 rand()函 数产生一个 1~3 之间的随机数,决定在哪个题型段进行交叉。在这里,进行遗传操作 之前要先将染色体解码。可用 explode()函数将染色体字符串依“.”切开,将切开后 的字符串返回到数组变量中,再进行交叉操作。 ③变异算子的设计 变异是遗传算法中产生新个体的另一种方法,变异个体的选择以及变异位置的确 定,都是采用随机的方法产生。首先,根据给定的概率 P1,随机选择一个发生变异 的个体。此时的概率 P1 不同于变异概率 P,P1 是对个体而言的,而 P 是针对字符而 言的。遗传算法中讨论的是字符的变异概率 P,两者的关系与字长 L 有关,即在本系 统中,P1=染色体长度(字符串长度)*P。然后,确定变异概率 P,P 通常较小,约 0.001—0.01。也就是说,1000 个字符中有 1—10 个发生突变。针对每字符在( 0,1) 之间产生三位有效数的均匀分布随机数。若 P=0.008,是随机数小于 0.008 所对应的 字符,将实行变异。在设计变异算子时,也必须考虑变异后新的染色体仍然满足约束, 所以这里就规定,对异算子采用在一个题型段内一次变异两位,即:一位从 1 到 0, 另一位从 0 到 1,称之为段内两位变异。该算子执行过程如下: a、由变异率 P1 决定随机到某个个体进行突变,随机产生一个小数,对种群中的 每个个体,如果该小数小于 P1,则这个个体被选中; b、由变异率 P 决定随机到某位将该位取反,产生一个随机小数,遍历染色体的 每一位,如果该小数小于 P,则对该位进行取反操作; c、在该位所在段内,寻找与该位值相反的位,对其取反,以保证每类题型所选 的题目数量固定。 (5)遗传运算终止条件的设计 遗传算法是一种反复迭代的搜索过程,它通过多次进化逐渐逼近最优解而不是恰 好等于最优解,所以需要人工确定终止条件。最常用的终止方法就是人为规定遗传(迭 代)的代次。刚开始时,迭代次数小一些,如 100 次。然后视情况逐渐增加代数,可 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 58 达到上千次。第二种方法是当目标函数是方差这一类有最优目标值的问题时,可采用 控制偏差的方法实现终止。一旦遗传算法得出了目标函数值(适应度)与实际目标值 之差小于允许值后,就算法终止。第三种终止方法是跟踪检验适应度的变化。在遗传 算法后期,一旦最优个体的适应度没有变化或变化很小时,就终止运算。遗传算法的 另一个重要参数就是种群规模 M。很明显,个体数目越多,搜索范围越广,也就更 容易获得全局最优解。但若个体数目过多,每次迭代时间也就过长。通常,个体数目 可取 100 个左右。在本系统中,终止条件为第一种和第三种的结合,如果在规定的代 数内有一个个体的适应度值已经满足要求,则停止进化;否则,一直进化到规定的代 数算法停止。取出最后算法停止运算时的一个最优个体(一份最优组卷参数表)作为 算法的最优解输出。 4.2.3 遗传算法在面试组卷中的应用 为了验证使用算法生成的试卷对组卷约束条件的满足情况,以及确定部分参数对 算法的影响,进行如下实验:题库中有选择题 300 道,填空题 300 道,主观题 60 道; 试题共分为 6 个章节,难度等级分为 3 等。用户设置的算法参数和组卷条件如下: 1. 算法参数设置: 种群大小:50;最大世代数:100;交叉率:0.8;变异率:0.008;难度权重:0.5; 章节权重:0.5。 图 4-2 世代进化适应度曲线 第 0 代 第 10 代 第 20 代 第 30 代 第 40 代 第 50 代 第 60 代 第 70 代 第 80 代 第 90 代 第 100 代 95.10 96.75 97.17 97.67 98.22 98.67 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 59 2. 组卷条件设置: 总分:100 分;难度分数比例:易 30 分、中 40 分、难 30 分。 系统运行后,经过历代进化,算法得到最佳解的适应度值为 98.6667,对应平均 难度误差为 0,章节误差为 0.3333,题型分数误差为 0。在搜索过程中,世代进化适 应度曲线如图 4-2 所示。其中,横轴为世代数,纵轴为适应度。当增加最大世代数后, 还可能得到更优的解。在上述约束条件下生成的试卷如表 4-1、表 4-2、表 4-3 所示。 表 4-1 填空题分配表 试题号 难度 知识点(章节) 分值 16 1 3 3 49 1 1 3 68 1 5 3 97 2 4 3 158 2 1 3 181 2 3 3 216 2 6 3 227 3 2 3 273 3 5 3 289 3 4 3 表 4-2 选择题分配表 试题号 难度 知识点(章节) 分值 16 1 3 3 49 1 1 3 68 1 5 3 97 2 4 3 158 2 1 3 181 2 3 3 216 2 6 3 227 3 2 3 273 3 5 3 289 3 4 3 表 4-3 主观题分配表 试题号 难度 知识点(章节) 分值 4 1 2 8 12 2 4 8 19 2 3 8 29 2 6 8 43 3 5 8 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 60 3. 与传统组卷算法的性能比较 表 4-5 组卷方式—适应度关系表 运行代数 组卷方式 20 40 60 80 100 最佳解 适应度 96.2083 92.3333 95.2015 94.6667 93.4667 传统 随机抽题 平均适应 度 84.4085 84.7333 86.7235 85.9169 86.3743 最佳解 适应度 95.1026 96.75 96.5822 97.8856 98.6667 改进遗传 算法组卷 平均适应 度 92.6667 93.2375 93.8155 95.2369 95.5208 图 4-3 两种算法的性能比较示意图 表 4-5 是以上两种算法的适应度比较,其性能分析比较如图 4-3 所示。由此可以 看出,随机组卷由于随意性较大,因此种群的平均适应度函数和最佳解的适应度函数 随着进化代数的增大波动变化也很大,而且函数的收敛具有不确定性,无法保证可以 得到最优解。而改进后的遗传算法在遗传算子的选择上和适应度函数的确定上都做了 一定的改进,在一定程度上避免了算法收敛于局部最优解,并保证了算法的绝对收敛。 因此,这两种方法比较起来,后者具有较高的搜索到最优解的能力。 4.3 智能优化招生方案辅助录取 高考招生总的原则是:公开、公平、公正。高校招生录取有如下规定:“高校 录取人员在录取中重点放在考查高考成绩总分和相关学科分数的高低。如果总分高, 相关学科分数也高的学生,则必定被录取。当遇到总分相近的考生,就要选择相关学 科分数较高的考生作为录取的新生”[38]。这里是假定了招生专业及招生人数确定的情 况下所采取的招生办法。按照国家教育部有关文件要求和指示,高职高专单独招生过 程中,总的原则必须依照国家相关招生录取管理办法实施,但具体招生的专业、人数 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 61 及录取办法由各高职院校自主设定,报当地主管部门备案。 这就使得学校在招生是要综合学校各方利益关系、资源优势及发展规划,来制 定招生的专业及招生规模。单招录取工作同样必须要先制定最有利于学校发展的招生 计划。怎样才能使招生计划更加科学,即完成上级部门指令计划,也要兼顾学校的收 益;既要力求多招生,又要考虑各个专业的教学能力和学校的后勤保障能力;既要尽 力发展热门专业,也要考虑传统专业优势。如何在众多方案中选取最佳解决方案?只 有招生计划方案完善后,才能在众多报考生源中择优录取。 4.3.1 招生方案优化模型 在通过系统开始录取前,必须确立完善的招生方案,也就是招生录取规则。结 合国家教育的发展趋势及单独招生管理办法,学校有权也有必要制定出科学的招生计 划。目前影响招生计划决策的主要因素有: 1. 招生需求 高职教育招生不在是根据上级下达的招生计划,实行“计划招生”,而是积极 主动的去通过人才市场预测,来调整专业设置,走自我发展、自我完善之路,注重多 样化、合作化发展路线。这使得高职院校招生专业及招生人数贴近社会、贴近企业, 以市场需求为导向,拟定符合市场需求的指导性计划。 2. 招生能力 学校所具备的招生能力,具体体现在学校的吃住容纳能力和各个专业的教学软 硬件能力。学校除了有足够的基础设施的同时,还要有配套的教学设备、设施投入。 学校应将有限的资源用到专业实验室、实训基地、教学手段现代化的建设上。这些基 础能力直接影响招生数量,同时也影响了后期的教学质量。 3. 招生动力 学校的招生动力主要是指学校的常用收益。收益有来自学生的学费,另一部分 来自国家相应的拨款,但要扣除学生的培养成本,成本的主要支出是教学设施的损耗 和教学必要支出。要使得学校收益最大化,需要在国家政策范围内合理的制定收费标 准。比如对热门专业可适当增加收费标准,对冷门专业、社会需求量大而生源短缺的 专业可适当降低收费标准,从而赢得更多生源和最大收益。 综上,高职单独招生计划的制定,既要完成上级部门的指令计划,也要兼顾学 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 62 校收益;既要力求多招生源,又要考虑学校接受能力。综合起来,影响招生计划的主 要因素和各因素之间的层次关系如图 4-4 所示。 招生方案 招生需求 招生能力 招生动力 指令计划 自主计划 后勤能力 教学能力 综合效益 学生预期收益 收入 成本 学生学费 上级拨款 图 4-4 招生计划因素关联图 上述模型中的最底层,实际上都可以获得的。例如某个专业的培养成本,可根 据学校后勤设施及教学实践设施折旧、教学必要支出等项目来计算。各个专业的教学 能力可根据实践设施、师资等来计算。教学能力有两个重要指标,即最佳教学能力和 极限教学能力,招生方案中要避免超过极限教学能力。 通过以上分析,确立了影响高职单招的主要因素,如何制定具体的招生方案,则 要根据不同的目标来确定。例如招生人数最大化、学校收益最大化等准则。本校确定 采用后者来制定招生方案。具体文字描述为:在完成国家指导计划的前提下,不超出 学校后勤能力、教学能力的情况下,综合各个专业收益情况,使得学校的收益最大化。 为此设计模型如下: 设我校共有m个专业可招生;具有总的后勤能力为n,每个专业要完成国家计划 招生数Ni(i=1……m),每个专业招生人数最少为pi,培养一个学生的学校成本为 Ci(i=1……m),培养一个学生的收入为Ii(i=1……m),通过调查和计算,预计每个学 生在校期间为学校贡献收益为Si(i=1……m) ,各个专业的极限教学能力为 Ei(i=1……m),最佳培养教学能力为Gi(i=1……m),确定各个专业的招生人数为 ni(i=1……m)。 4.3.2 基于遗传算法的招生方案设计 遗传算法是基于生物进化和选择机制的随机搜索算法,由于算法本身的并行性, 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 63 以及对求解问题的限制较少,所以较适合于综合评定录取的实现。算法设计见图 4-5。 图 4-5 基于遗传算法的辅助录取算法框图 若要利用遗传算法对多重因素的选择求最优解,必须先对所有影响招生决策的各 项要求进行预处理,去除原始数据中的“噪音”无关数据,补充不完整的数据。再进 行数据转换,将数据转换成统一的格式。然后进行适应度函数设计,并进行相关算子 运算,最终得出最佳适应度,进行译码输出,得到最优方案。 综合以上描述,可知本方案中,影响最终策略的因素主要有最佳能力、极限能力、 指导计划、学费、拨款、成本、学生收入等。由于不同专业的学生学费、拨款、成本、 学生收入等固定,这里需要做出编码的就是问题的解空间——各专业招生数。设有4 个专业Zi(i=1,2,3,4),最终解空间就是各个专业招生多少人N i(i=1,2,3,4),必须由 先给定一个满足国家指导的计划数(最小值)和一个学校能力的最大容量数(最大值), 这4个专业对于招生人数组合,即问题的解M(N1、N2、N3、N4)。 结合上节描述,其适应度函数F()可描述如下:、 F(i)=)(n 1i ii m ii CIS −+∑ = (i=1……m, ni为正整数) ni≥max(Gi,Ni) (i=1……m, ni为正整数) (4-7) ∑ = m i 1i n ≤ni≤Ei (i=1……m, ni为正整数) 当公式4-7中F(i)最大时,就可以获得满足国家指令计划、不超出学校总体后 勤能力、各个专业极限教学能力的情况下,保证了学生受到社会的欢迎,又使得学校 获得最大的收益。需要说明的是,本系统中的模型建立在学校的后勤能力和总体教学 能力相当的前提下进行的,这对于运行多年的老的高职高专院校来说,基本是受保证 初始化 数据转换 划分训练集 译码 输出 选择交叉变异 是否满足条件 计算适应度值 是 否 编码 第四章 系统智能管理模块的遗传算法实现 基于 java 的高职单招录取系统的设计与实现 64 的。 4.3.3 遗传算法实现单招辅助录取 依靠上述的模型,对我校单招方案做出了智能优化工作,为具体的决策层提供一 定的帮助。由于上述决策优化模型涉及 m个变量,因此不能用传统的优化求解方案求 解。手工求解更是不可想象。以上采用的遗传算法优化了目标函数。 现设定我校单独招生有4各专业,学校后勤能力能够容纳 600名新生(指的是单独 招生这个种类的招生容量),这4个专业的最佳教学能力和极限教学能力、国家指导 计划、每个学生的学费、拨款成本如表 4-6。经过上述基于遗传算法的优化模型计算, 得出了一个问题的优化解为N(133,133,163,160)。 表4-6 专业招生参数表 表 4-3 专业 1 2 3 4 最佳能力 120 120 180 180 极限能力 140 140 220 220 指导计划 100 100 120 120 学费 1.8 1.8 2.1 2.4 拨款 1.8 1.8 1.8 1.8 成本 2 1.8 2 2.2 学生收入 7.5 6.6. 6.9 6 这个结果,后勤能力用到了极限,教学能力没有用到极限,各个专业的负担基本 均衡,学校也较大的获得收益,培养的学生总体收入预期也较大。需要说明的是,遗 传算法是求解规划和优化问题的有力工具,但是遗传算法获得的不一定就是绝对的最 优解,而是可以接受的次优解。 按照这样的招生计划,结合系统中辅助招生模块中的成绩分类汇总,按照各个专 业的综合成绩排序,加以录取。这样就解决了招生录取过程的信息化和智能化。 4.4 本章小结 本系统设计的核心思想在于体现系统在招生考试、录取过程中的智能性和高效 性。本章首先介绍遗传算法的基本算法和应用步骤,然后在具体研究面试现场实时组 卷以及综合学校多项因素寻求最优招生方案等实际问题求解的基础上,通过遗传算法 实现第三章所设计的相关功能模块。本章重点从上述两个实际应用的智能性、高效性 基于 java 的高职单招录取系统的设计与实现 第四章 系统智能管理模块的遗传算法实现 65 需求出发,进行遗传编码设计、适应度函数构造和遗传算子的操作,着力于适应度函 数的构造,使算法能解决实际问题,提高算法效率,提升系统的智能化。 第五章 系统安全性设计 基于 java 的高职单招录取系统的设计与实现 66 第五章 系统安全性设计 高职单招录取系统在运行过程中会产生和积累大量的信息,在很多环节有不同的 用户在进行着协同操作。随之而来的信息安全问题显得尤为必要与紧迫。由于本系统 的所有信息的传递都是在网络上进行,为了防止非法用户窃取机密信息和非授权用户 越权操作数据,必须采取相应的安全策略。 5.1 安全技术分类 单招录取对信息的安全、数据库的安全有着较高的要求。在本系统中所用到的安 全技术主要有以下几种: 1. 身份认证技术 身份认证技术的主要目标是控制对信息的访问。用户进入单招录取时,系统必须 对用户进行身份的合法性鉴别认证,防止非法用户进入系统。本系统利用用户口令进 行单向散列算法计算等技术措施进行身份识别,同时辅以 IP地址的合法性认证,拒绝 非法IP地址访问。通过单向散列算法生成验证码是目前解决身份认证、系统鉴别和信 息交换中的重要技术措施。“高职单招录取系统”中用户登录模块,采用了单向散列 算法进行用户身份认证的技术,具体实现在第5.2节中阐述。 2. 数据库安全技术 在高职单招录取系统中,数据库层面的安全也至关重要。实现数据库的安全可用 以下两种方案: (1)应用程序层控制:可以创建多个用户,后台数据库只创建一个或很少几个(具 有极大权限)用户,用这些用户完成数据库的连接。这样虽然简便,但若超级数据库 用户口令泄漏后,其他的所有用户都可以绕过应用程序直接操纵数据库,带来了安全 隐患。这个层上往往根据应用程序用户,进行菜单项(功能模块)的安全控制。 (2)数据库层控制:应用程序的用户和后台数据库用户一一对应。并且只给数 据库用户分配有限的所需权限,即使绕过应用系统,其他人也只能操纵有限的数据。 这个层上往往根据应用程序用户,分配数据库级别 (表或视图级)的权限。这种实 基于 java 的高职单招录取系统的设计与实现 第五章 系统安全性设计 67 现方案比较复杂。高职单招录取系统就采用此方法实现数据库的安全设计。 3. 访问控制技术 访问控制技术的目的是防止入侵者非法侵入系统。并非所有的合法用户都可以使 用单招录取系统中的各项功能和资源,系统访问权限的规定控制用户能够使用的系统 功能和资源。随着网上黑客越来越活跃,Internet/Intranet的安全问题成为网络界 关注的焦点,为了解决网络安全问题,一系列的网络安全技术应运而生,其中防火墙 技术在目前网络安全技术中最为瞩目。防火墙就是网络与网络之间的安全接口。它可 以限制他人进入内部网络,过滤不安全的服务和非法用户 [39]。目前基于这方面产品主 要有两大类:一类是安全路由器,一类是防火墙路由器和软件系统。 基于用户对系统安全性的要求,在设计单招录取系统时,当普通访客成为合法注 册用户,确认 IP地址范围的合法性后在采用了基于角色访问控制的权限设定,具体应 用在“5.3基于用户角色的权限访问控制”中介绍。 5.2 用户登录身份验证 由于“高职单招录取系统”中主要涉及到的学生成绩管理及辅助录取管理中具有 高度的机密和安全性,另外本系统是在校园网络环境中运行的,所以对数据的传输安 全性有着较高的级别和要求。本系统所设计的身份认证技术借助于单向散列算法实 现。 要做到身份认证的安全性,由于信道本身的干扰和人为的破坏,使接受到的信息 可能与原来发出的信息不同,一个通用的办法就是加入校验码。单向散列函数便可用 于此用途。 在本系统中,用户登录时需要对用户身份进行认证,具体方法是为密码创建一个 单向算法的散列,当数据被转换后,将无法再获得其原始值。很多开发人员使用数据 库存储密码。但是,在数据库中查找用户数据的人员也能够看到这些密码。若使用单 向散列算法对密码进行计算后,然后再将其存储在数据库中,用户输入密码后,可以 再次使用散列算法对其进行计算,然后将其与存储在数据库中的散列进行比较。同样, 加密后的字符串看起来也与原始输入相去甚远。这些散列算法对于创建没有直接含义 的密码来说非常有用,也使非法用户很难猜出这些密码[40]。 第五章 系统安全性设计 基于 java 的高职单招录取系统的设计与实现 68 在本系统中,当用户试图登录系统时,服务器端脚本提供用户一个随机数,当用 户在此登录表格中输入它们的用户名和口令,客户端的脚本将这个随机数值添加到口 令后并加以单向散列算法进行单向运算生成验证码,然后以验证码输出作为口令 (PW1),用户登录端利用此口令进行提交。 客户端脚本会将用户名和验证码口令传输至服务器,由于这个值是单向散列算法 的输出,反向推算出用户原来输入的口令是几乎不可能的。当用户名和验证码口令被 服务器端应用程序接收到后,执行与用户客户端相同的操作,它将当初传给用户的随 机数加到用户口令中(此口令取自服务器中被保护区域),然后计算出正确的单向散 列算法口令值(PW2),将此数值与从客户端收到的值进行比较,若相同,则设置一 个服务器端会话变量以确定用户认证。 用户登录 对输入的密码调用散列算法 计算生成PW1 验证成功 对存储的密码调用散列算法 计算生成PW2 生成随机数 查询用户信息库 判断用户名、密码 用户是否匹配? 判断: PW1=PW2 用户 信息库 Y Y Y N N N 图 5-1 登录验证单向散列算法应用示意图 通过随机数是用来防止重新攻击的,如果仅用户口令经过单向散列算法运算,此 验证码口令将始终保持一个值,监听的黑客只需简单地截获这个验证码就可用它来登 录系统。这个随机数保证了每次新的登录都有一个特定的单向散列算法口令,从而保 证了系统安全性。系统登录部分工作流程如图 5-1 所示。 基于 java 的高职单招录取系统的设计与实现 第五章 系统安全性设计 69 5.3 基于用户角色的权限访问控制 角色访问控制 RBAC 认为权限授权实际上是 Who、What、How 的问题[41]。在 RBAC 模型中,who、what、how 构成了访问权限三元组,也就是“ Who 对 What(Which)进 行 How 的操作”。Who:权限的拥用者或主体(如 Principal、User、Group、Role、 Actor 等等)What:权限针对的对象或资源(Resource、Class)。How:具体的权限 (Privilege,正向授权与负向授权)。 高职单招录取系统的访问控制权限设计是采用的基于 RBAC 模型的数据访问控制 技术。本系统涉及到多个业务部门,又涉及到多个不同的岗位和不同级别的用户,对 于各个部门的不同用户,要访问不同密级的数据。其中一些用户只能访问一定范围的 信息,一些用户则能够对全部的数据进行访问和操作。考虑到多用户性、多功能性、 复杂性及安全性,所以系统的设计采用了基于角色的数据访问控制。根据部门职能的 不同,设计相应的子系统,每个子系统拥有不同角色集的用户,角色不同,其权限也 不相同。 5.3.1 系统权限访问控制设计 本系统采用基于角色的访问控制( RBAC)技术,对用户的操作权限进行限制,防 止非法用户的入侵和系统用户操作不当带来的系统危害。用户注册或添加后,若是成 绩管理员,则可获得相应科目(专业)的成绩录入功能;当用户要进行查询、修改成 绩时,亦需要进行登录验证操作;在面试环节,管理员可分配面试考场专家名单、学 生名单及现场自动组卷功能;录取人员则可进行综合评定、辅助录取工作。对于系统 的普通用户,则只能查询访问成绩模块、录取模块,并对数据进行处理。 访问控制模块中的权限管理库子模块是 RBAC 访问控制的权限管理工具,提供给 各级管理员进行权限管理的工具,通过这个子模块,系统管理员可以修改角色信息, 修改角色的权限赋予信息等,部门管理员可以设定本该部门成员并赋予相应的角色。 5.3.2 用户角色设计及分级 从系统管理的层面上考虑,本系统可划分为四类用户角色,如图 5-2 所示。 第五章 系统安全性设计 基于 java 的高职单招录取系统的设计与实现 70 笔试模块管理员 系统管理员 面试模块管理员 录取模块管理员 成 绩 录 入 管 理 员 成 绩 校 验 员 其 他 用 户 试 卷 管 理 员 成 绩 管 理 员 其 他 用 户 成 绩 管 理 员 录 取 操 作 员 其 他 用 户 一 专 业 录 入 员 二 专 业 录 入 员 1...n 1...n 1...n 1...n 1...n 1...n 1...n ⋯⋯ 12 n 图 5-2 用户角色等级示意图 1. 系统管理员:拥有系统的所有权限,是最高权限的超级用户。该类用户可以 对各个子系统的用户进行授权,包括创建、修改、删除和分配所有级别用户的角色和 相应权限,并可以访问系统的所有功能模块,对数据库进行读写操作。此外它还可以 添加一些特殊用户。如:系统的负责人和主管领导等,他们不属于某个业务部门,系 统管理员可以直接对他的各种访问权限进行单独授权。 2. 部门管理员:指笔试管理员、面试管理员和录取管理员等,其级别仅次系统 管理员,可以创建、修改、删除所有管理子系统内的所有用户、角色的分配及相应的 权限的分配。例如:笔试子系统管理员就可以设定不同专业的成绩管理员、成绩录入 员、成绩校对员等,他们分别对应该系统的不同子应用程序。拥有对该子系统的所有 权限,他可以访问本子系统和整个系统的公有资源。 3. 面试试卷管理员:专指面试管理模块中,对各专业面试现场试题进行操作、 控制的工作人员。一般情况下,可以对与其角色相对应的应用子程序进行一定权限的 读写操作,可创建该子系统新的用户角色,对子系统的用户进行注册审验,及用户信 基于 java 的高职单招录取系统的设计与实现 第五章 系统安全性设计 71 息数据进行更新。系统管理员如果赋予他所有的权限,那么他的权限可以等同于子系 统管理员,可以对系统的公有资源和子系统进行一定权限的访问。 4. 其他普通用户:只能查看系统中学生信息、已录入的成绩信息、及最终的录 取记录信息。该用户需由系统管理员添加或设定相应权限后方可访问系统,但他不能 对系统中的任何记录进行更改。 5.3.3 角色划分 从用户访问的角度上考虑,由于一般用户只是系统的普通使用者,因此不要求其 具备系统管理的权限。其角色划分可参照图 5-2 所示。 由一般用户的角色层次关系可以看出,系统管理员高于子系统管理员,子系统管 理员高于子系统成员。不同角色的权限可用单重继承和多重继承来实现,比如成绩录 入管理员就继承了各个专业的录入人员所许可的权限。 角色之间可能会有许可重叠,可以为其重叠部分设置一个角色,其他角色包含公 有部分和私有部分。如系统中的“成绩管理员”,面试模块和录取模块都有该角色, 可为其设定公有部分和私有部分。 可以看出,角色之间具有偏序关系,上一级的角色继承了下一级的权限。偏序关 系满足反身性、传递性和非对称性。 5.3.4 权限制约 权限制约施加于单个或多个角色之间,用来表达权限的执行是有条件的[42]。 1. 基数限制 在同一时间内拥有某角色的用户个数是受限的,应大于规定的下限,小于规定的 上限。比如成绩录入子系统中的某专业成绩录入员,同一时间只能按照系统设定的 2 名录入员工作,目的是为了对每个学生的所有成绩录入 2 次,为校验人员的校验做准 备。而同一时刻某专业的校验人员只能一个,该用户具有修改成绩的权限。 2. 静态责任互斥 在将用户指派为某角色的成员时,必须与己获得的角色没有互斥,比如本系统成 绩录入员和成绩校验员、录取模块中的成绩管理员与录取操作员是角色互斥的。 3. 动态责任互斥 第五章 系统安全性设计 基于 java 的高职单招录取系统的设计与实现 72 静态责任互斥使一个用户不能同时拥有两个互斥的角色,互斥发生在角色分配 时;而动态责任互斥则允许用户拥有两个互斥的角色,但用户在运行时不能同时激活 他们,互斥发生在会话时。 如果一个角色同另一个角色之间存在责任互斥关系,则他们之间不存在直接和间 接的继承关系。 5.3.5 数据库结构设计 系统考虑到基于角色的访问控制,在数据库的设计上采用了以下几个和权限控制 有关的表: 1. 用户信息表 Users 此表中存储了用户的基本信息,包括登录的验证信息(用户名、密码)、登录限 定时间、限定的 IP 地址、用户详细信息等。 2. 角色表 RoleInfo 该表中存储了关于用户的所有角色信息,用户和角色的关系,是多对多的,反之 亦然。这里的角色主要包括用户 ID 和关于角色的一些详细信息等。 3. 权限表 Permission 该表中存储了所有角色的权限集合,角色和权限的关系,也是多对多的双向关系。 4. 功能模块表 Function 该表中存储了各个功能模块的信息以及和角色之间的对应关系。 权限控制 E-R 图如图 5-3 所示。 UsersUsers User_ID Username Password UserID ...... User_ID Username Password UserID ...... RoleInfoRoleInfo RoleInfo_ID RoleName Users_ID ... RoleInfo_ID RoleName Users_ID ... FunctionFunction Function_ID FuncName Premission _ID ...... Function_ID FuncName Premission_ID ...... PermissionPermission Permission_ID PerName RoleInfo_ID ...... Permission _ID PerName RoleInfo_ID ...... 图 5-3 权限控制 E-R 图 其中 User_ID 是用户信息表的主键,是角色表的外键,用户可以通过访问用户信 息表获取 User_ID,进而来访问角色表,获得用户角色集;同样 RoleInfo_ID 是角色 基于 java 的高职单招录取系统的设计与实现 第五章 系统安全性设计 73 表的主键,是权限表的外键,通过角色表 RoleInfoID 访问权限表,获得角色的权限 集;通过权限表 Permission_ID 访问功能模块表,获得各个功能模块的操作权限。 5.3.6 数据访问控制工作流程 “高职单招录取系统”的数据访问控制就是采用基于 RBAC 来实现的,其工作流 程如图 5-4 所示。 主要步骤包括: 1. 用户登录验证 2. 获得用户 ID 3. 获得用户的角色集 4. 获得角色的权限集 5. 获得各个功能模块的操作权限集 6. 进入相应的子系统 第五章 系统安全性设计 基于 java 的高职单招录取系统的设计与实现 74 IP地址合法? IP 地址库 根据用户 ID获得角色集 根据角色 ID获得权限集 根据权限 ID获得相应 功能模块访问权 角色库 权限库 功能模 块库进入相应界面 用户登录 对输入的密码调用散列算法 计算生成PW1 验证成功 对存储的密码调用散列算法 计算生成 PW2 生成随机数 查询用户信息库 输入用户名、密码 用户是否匹配? PW1与PW2对比 用户 信息库 Y Y Y N N N Y N 图 5-4 用户访问权限控制示意图 5.4 本章小结 本章着重介绍了本系统的安全策略。数据传递的安全以单向散列算法实现,对用 户的登录验证的密码进行计算生成散列验证码,较好地体现了单向散列算法的优点, 保证了在网络中传递密码时的安全性。系统的数据库的访问权限控制以 RBAC 实现, 角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,可灵活地重新定义 新角色,减小了授权管理的复杂性,降低系统管理的开销。 基于 java 的高职单招录取系统的设计与实现 第六章 总结与展望 75 第六章 总结与展望 本章对整个单招录取系统在设计与实现时所做的研究工作及所遇到的技术问 题进行总结,并对今后进一步的的研究工作进行展望。 6.1 总结 本论文的主要工作包括: 1. 详细了解了国家有关高职高专单独招生的有关政策和要求,调查了传统的招 生录取办法及相关信息化手段,重点是普通高考录取系统。分析了单招录取实际工作 中所要面临的问题及系统运行时可能会遇到的困难,给出实际工作中所需要的信息 化、智能化的操作手段,解决招生录取工作中的信息化问题。 2. 研究了本系统所涉及到的相关基本理论与实现技术基础,对 UML 建模语言、 RBAC 角色访问控制及遗传算法在系统中的应用作了探讨,并深入研究了面试现场按 照专业、考场及时间等因素为每个学生智能组卷的方法,及其运行环境和实现技术。 用 UML 建模语言对高职单招录取系统进行详尽的整体设计。本系统采用 Java 语言开 发,用 SQL SERVER 2005 作为后台数据库,基于 JDBC 开发的通用 DAO 类——BaseDAO 实现数据库访问。 3. 设计了比较先进的系统的安全策略,引入了单向散列算法和 RBAC 角色访问控 制技术。用户登录验证密码数据在网络传递时,设计以随机数加密码进行单向运算生 成验证码,以保证数据的安全传递,在数据库访问安全性方面采用 RBAC 访问控制技 术,将用户与访问许可从逻辑上进行分离,一方面方便了权限的管理,另一方面杜绝 了用户误操作对系统带来的安全隐患,提高系统安全性。 4. 设计了基于遗传算法的系统智能组卷模块和智能优化招生方案辅助录取模 块。为保证考试的公平与公正,在面试环节必须要现场生成大量的满足组卷各项指标 要求的面试试卷;另外,在录取工作前,制定出符合政策、符合学校多方要求的招生 方案,实现专业、人数上的最优化的配比。本文利用遗传算法的特性,对以上两种多 重约束条件下求取最优解问题,进行了编码设计、适应度函数构造和遗传算子设计, 第六章 总结与展望 基于 java 的高职单招录取系统的设计与实现 76 成功的解决了系统中的各项需求,提升系统的智能化。 5.实现了一套可用性高、操作性强、公正、合理、智能、安全的高职单招录取 系统。该系统能很好的实现了单招录取过程中多部门、多事项的协同作业问题,如笔 试成绩处理、面试过程中的管理、出卷、成绩问题,以及多重因素智能优化辅助录取 问题,另外,还通过相关技术实现了系统的高度安全性和可靠性。 从 07 年至今,本系统已 4 次成功的协助我院完成单独招生工作。经过多年的实 际应用,使本系统得到了进一步的完善。目前我省已有多家高职院校来借鉴学习本系 统的功能及应用模式,并已有其他院校开始使用本系统进行单招录取工作。 6.2 展望 由于作者的知识面和经验有限,本文所作的设计尚有许多方面需要进一步的改 善,有待于更加深入地探讨、研究。 1. 高职单招录取系统还未涉及到学生报名及专业管理内容,相应的管理模块 的设计还需进一步细化。 2. 在用遗传算法实现多重因素综合评定下的辅助录取方案时,对适应度函数 的构造过于简化,其中由于最终录取比例具有不确定性,另外初始群规模的不确定 性易造成非正常收敛性过快,达不到理想的智能性筛选初衷。完善遗传算法中适应 度函数的构造,选择更好的遗传操作算子将是下一步工作的重点内容。 3. RBAC 访问控制方面需要进一步研究。本文所采用的 RBAC 设计中角色权限关 系相对比较简单,并没有涉及到角色层次的细分和约束关系的限定。随着系统功能 的不断扩充,权限管理将会更为严格,需要对 RBAC 访问控制做进一步设计。 总而言之,对于高职单招录取系统的建设,作者只是在可用性、安全性、智能 性方面作了一些尝试和探索,基本达到了预期的设计效果,实现了高职高专单独招 生项目的信息化、智能化、规范化管理的目标。 基于 java 的高职单招录取系统的设计与实现 参考文献 77 参考文献 [1] 张文修,梁怡.遗传算法的数学基础 [M].西安 : 西安交通大学出版社,2009.6. [2] 黄小龙.基于校园网的高校招生系统设计与实现.赤峰学院学报(自然科学 版) 2009,5(5)37-38 [3] 于堪为.见识频道. 国外高考制度一览[EB/OL]. [4] http://www.ny1988.com /knowledge/topic/200907/53358.html.2009-10-23. [5] 吴霞.厦门教育信息网. 国外的学生是怎么参加高考的? . [EB/OL] [6] .http:/ /www.xmjjxx.cn/news_list.asp?news_id=2471. 2009-10-20. [7] 刘真.新浪文化教育. 教育部推出全国普通高校招生网上录取系统[EB/OL]. http://edu.sina.com.cn/i/26646.shtml.2009-5-11. [8] 殷兆麟. UML 及其建模工具的使用[M].北京:清华大学出版社 2004.3. [9] 陈松乔. 现代软件工程[M].北京: 清华大学出版社 2008.5. [10] http://www-900.ibm.com/cn/software/rational/products/rose/index.shtml IBM Rational Rose [11] 王莎,黄志武.基于角色的访问控制[J].电脑知识与技术,2007,5(28):64-66. [12] 王娟娟,宋三华.基于角色的多域访问控制研究 [J].天中学刊 ,2010(5):17-21. [13] 戴祝英,左禾兴.基于角色的访问控制模型分析与系统实现 [J].计算机应用研 究,2004,21(9):173-175. [14] Matthnew J Moyer, Mustaque Ahamad. Generalized Role Based Access Control [J]. Proccedings International Conference on Distributed Computin Systems, 2008(4): 38-39. [15] Yong-Zhong He. Configuring RBAC to Simulate Bell Model [J]. Intelligent Information Hiding and Multimedia Signal Processing, 2008. IIHMSP '08 International Conference on 2008,11(2):15-17. [16] Wim J.van der Linden,Bernard P,Veldkam P. An integer programming approach to item bank design.Applied Psychological Measurement, 2007,6. [17] Zbigniew Michalewicz . Genetic Algorithms+Data Structures=Evolution Programs.Beijing Sience Press,2008. [18] 玄光男,程润伟著,遗传算法与工程优化.西安:西安交通大学出版社,2002.1. 参考文献 基于 java 的高职单招录取系统的设计与实现 78 [19] 王小平,曹立明.遗传算法--理论、应用与软件实现[M].西安:西安交通大学 出版社,2002.1. [20] 江敏, 陈一民. 遗传算法在多目标优化问题中的应用策略[J]. 兰州理工大学 学报, 2007,3(24):87-90. [21] 周明,孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999. [22] 黄晓滨,邹书蓉,张洪伟. 免疫遗传算法及其在 VRP 中的应用[J]. 成都信息工 程学院学报, 2006,6(11):29-31. [23] 华欣.遗传算法的物流系统路径优化[J].电脑编程技巧与维护, 2009,(S1):44-45. [24] 夏爱月. 基于遗传算法的自动组卷系统研究与实现[J]. 电脑编程技巧与维护, 2009,(2) :16-18. [25] 赵跃新,许军林. 基于遗传算法自动组卷的实现[J]. 计算机与信息技术, 2009,(03):39-41. [26] 张志华,王莉. 网络环境下广告资源优化决策模型[J]. 鞍山科技大学学报, 2006,(05) . [27] 冀振燕. UML 系统分析设计与应用案例.北京:人民邮电出版社,2003.6. [28] 施昊华,张朝辉. UML 面向对象结构设计与应用. 北京:国防工业出版社, 2003. [29] 姚亚兵. 基于 J2EE 的民族古籍文献保护系统设计与实现[J].江汉大学学报 ( 自 然 科 学 版)2009,3(37):58-60. [30] 李桂,苏一丹. UML 状态图的形式化[J]. 广西大学学报( 自然科学 版)2003,3(28):318-321. [31] 王晓博, 王欢, 刘超.UML 类图层次化自动布图算法. 软件学 报,2009,20(6):1487-1498. [32] 邹 琼,伍 鸣,胡伟武,章隆兵.基于插桩分析的 Java 虚拟机自适应预取优化框架. 软件学报,2008,19(7):1581-1589. [33] 金英,李泽鹏. 多线程 Java 程序安全行为模型的静态检查方法[J]. 计算机学 报,2009,9: 1856-1868. [34] 陈曦, 王希诚. 一种改进的多种群遗传算法[J]. 辽宁科技大学学报, 2009,3,(02):16-18. 基于 java 的高职单招录取系统的设计与实现 参考文献 79 [35] 吴成洲,滕敏. 基于改进遗传算法的自动组卷算法研究[J]. 宁波职业技术学院 学报, 2009,(05).27-28. [36] 傅元宏,牛德雄,李燕. 基于角色的用户权限系统设计[J]. 计算机与数字工程, 2007,(09). [37] 袁锋. 遗传算法在自动组卷系统中的应用[J].山东师范大学学报(自然科学 版),2006 21(1)53-56. [38] 张亚静. 遗传算法在通用试题库自动组卷中的应用[J].云南农业大学学报, 2005 20(5)714-719. [39] 方大良. 在线考试系统组卷策略分析. 电脑知识与技术[J] 2008,36(34):45-46. [40] 谢晓兰,刘建华,陆绮荣.高考招生系统中的决策算法[J]. 桂林工学院学报, 2001,10,(4):402-406. [41] 卢开澄.计算机密码学:计算机网络中的数据保密与安全[M].北京:清华大学出 版社,1998(4). [42] 黄元飞等.信息安全与加密解密核心技术[M],上海:浦东电子出版社,2001(1). [43] 夏志雄,张曙光.RBAC 在基于 WEB 管理信息系统中的应用[J].计算机应用 研究,2004(7):98-199. [44] 查义国,徐小岩,张毓森.在 Web 上实现基于角色的访问控制[J].计算机研究 与发展,2002,39(3):257-263. 攻读硕士学位期间发表的论文 基于 java 的高职单招录取系统的设计与实现 80 攻读硕士学位期间发表的论文 [1] 汪 刚,朱艳琴. 遗传算法在单招面试自动组卷系统中的应用. 南京工业职业技术学院学报,2007(1). 基于 java 的高职单招录取系统的设计与实现 致 谢 81 致 谢 经过三年难忘而又美好的学习生活,除学到更多更深的专业知识,扩大知识视 野,提高今后将继续深造学习的信心和勇气外,也深刻体会到了苏大教师们的兢兢 业业、严谨的教学态度和良好亲近的师生关系。本文就是将三年来学习的成果向尊 敬的老师们做一个展示,在本论文结束之际,我要衷心感谢在论文完成的过程中给 予我关心和支持的人们。 首先,我要感谢恩师朱艳琴教授。在我进入撰写硕士论文的前前后后,从论文的 选题、研究方案的确定直到论文的书写和审阅,朱艳琴老师给予了我无微不至的关心、 尽心尽力的指导及适时适度的鼓励。同时,她和蔼可亲的辅导态度、渊博的学识、忘 我的工作热情、深邃的教学思想和严谨的治学态度都深深地影响了我、感动着我、令 我受益匪浅。我为自己能得到朱老师的指导而感到十分幸运。 其次,感谢苏大的诸多任课教师。在整个求学的过程中,无论是专业课老师,还 是公共课老师都给了我们尽心尽意的教诲,在此一并致以深深的敬意与谢意。 另外,我要感谢的是苏州大学和南京工业职业技术学院,是这两所学校能让我有 机会继续深造学习,提高自我。 还要感谢的是 06 南京软件工程硕士班的所有同学,是他们让我处在一个团结、 合作、上进的集体中。 最后,深深地感谢我的父母和家人,是他们给予我精神上的鼓励和物质上的支持, 他们对我的关心、理解和支持是我克服困难和不断进取的动力和源泉。 基于java的高职单招录取系统的设计与实现 作者: 汪刚 学位授予单位: 苏州大学 本文链接:http://d.g.wanfangdata.com.cn/Thesis_D137603.aspx
还剩84页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 5 人已下载

下载pdf