汇编语言,如何编写程序,实现比如给出1.2.3.4.5让你统计0到2,3到5之间的个数?

在线考试系统设计与开发论文

  无论是在学习还是在工作中,大家都接触过论文吧,论文是进行各个学术领域研究和描述学术研究成果的一种说理文章。还是对论文一筹莫展吗?下面是小编为大家收集的在线考试系统设计与开发论文,欢迎大家分享。

  等。本设计采用(又称ASP+)是ASP的下一代版本,它并不只是完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多激动人心的新技术,正是这些具有革新意义的新特性,让与Windows2000Server/AdvancedServer的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定,高效,安全的运行环境。

  由于本系统涉及到许多数据的处理,这就需要有一个强大的后台数据库管理系统支持。目前主要的数据库有:Access、FoxPro、Excel、Sybase、Oracle、Informix、SQLServer等,其中网络型的SQLServer、Oracle产品安全性远远高于桌面型的Access、FoxPro等数据库。

  本系统采用的是微软公司的SQLServer2000。原因如下:第一,SQLServer与Windows2000Server服务器紧密集成,而Windows2000Server服务器具有很好的安全性,能够排除所有未经授权的非法用户的访问,确保了SQLServer2000服务器的安全性,符合系统对安全性的要求;第二,用户可以使用Web浏览器查询存储在SQLServer2000数据库中的数据,符合系统远程访问数据库的要求。第三,容量庞大,每个数据库中可创建多达20万个数据表,数据表中的记录的行数只受服务器硬盘空间的限制,符合系统的考题数目较多的要求。

  1.4网络考试系统优点

  (1) 可以创立电子题库,方便地实现试题的数字化管理。

  所谓题库就是试题的仓库,是把许多题目集合到一起,供试卷编制者随时查询和使用的集合。为题目的保存、分类和检索提供了便利,为编制试卷提供了高效率和低成本的手段。电子题库是网络考试系统的重要组成部分,也是考试系统中最具有特色和实用价值的模块之一。

  (2) 可以按照科学的策略智能组卷,从而提高出卷效率。

  网络考试系统以电子题库为依托,可以按照教师制定的组卷策略自动的抽题成卷,极大的提高了出卷效率。为一些面向社会开放的常年考场,提供了海量试卷资源的有力支持。也可以被广大教师用来辅助教学和测验。

  (3) 可以具有操作性和交互性。

  计算机考试系统与传统纸上考试相比,有一个显著的优点和特点就是具有操作性和交互性。可以更好的“设置一定的情景让学生表现,以此衡量学生的心理品质”。如计算机应用技能的考试等,使用计算机模拟就具有纸面考试无法比拟的效果。计算机考试系统可以根据学生的反应,对试题进行调整和反馈,使一些非经典的测量理论。能够在实践中得以实现,发挥出它们的优点和长处。而网络化考试很好地继承了这个优点。

  (4) 使考试和判卷更具规范性和合理性。

  网络考试系统使用计算机系统来进行考试和自动判卷。具有更好的规范性和合理性。试题的呈现和判卷的标准都是严格统一的,一般不会发生学生忘记书写姓名,答题卡填写方法不正确或错位等意外丢分情况。学生答题过程中,由于系统限制也必将更加规范,不会出现笔试中经常出现的由于学生没有严格按照答题要求做,判卷时被强行扣分的事情。判卷由系统自动完成,极大的提高了准确性,防止了人工判卷时经常出现的错判、漏判和分数计算错误的情况。使考试更加公正合理,具有权威性。

  (5) 实现自动判卷和数据的有效保存。

  如果说考试使教师教学过程中重要工作之一的话,那么判卷又是教师在考试实施过程中最重要和最烦琐的工作之一。判卷有两个基本的要求,那就是快速和准确。学生希望在最短的时间内知道自己准确的考试成绩,在集体中的位置知道问题出现的所在和应该努力的方向。这也是考试教育功能的重要体现。如果判卷越慢这种对学生的反馈和激励的效果就会越小,达不到原有的考试目的。快速和准确对传统的教师手工判卷来说是一对矛盾,加重了教师的工作负担。而使用考试系统的自动判卷功能,能很好的解决这些问题。甚至在学生考试完成后,他就能马上看到自己的成绩。考试成绩的保存,对计算机考试系统来说,是非常简单方便的。而在手工考试中,需要教师特别的注意将成绩单存档或再输入计算机中,工作比较烦琐。

  (6) 具有强大的数据统计分析功能。

  计算机考试系统与传统纸上考试相比具有强大的统计功能,原来非常烦琐甚至手工难以进行的分析统计计算工作,现在可以在瞬间完成了。由于考试系统从出题、考试到判卷、统计,完全实现了数字化,不再需要教师手工地将学生成绩、答题情况等详细信息输入计算机,因此使学生成绩统计分析,试题参数的统计分析及自动调整在实际工作中成为可能。随着社会的不断发展,信息保存和分析提取的日趋重要,考试实现数字化,提高数据存储和分析的能力是不可逆转的潮流,网络考试系统的发展前景是光明的。

  可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。

  A社会因素方面的可行性:

  本系统用于学校考试,无法律和政策方面的限制

  B经济方面的可行性:

  主要是对项目的经济效益进行评价,本系统作为一个实训的一个项目,无需开发经费,对于我系在经济上是可以接受的,并且本系统实施后可以显著提高考试效率,有助于学院完全实现网络化管理。所以本系统在经济上是可行的

  C技术方面的可行性

  技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。

  软件方面,网络化考试需要的各种软件环境都已具备,数据库服务器方面则有SQLServer,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。

  硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。

  D操作方面的可行性

  目前,大学的校园网路覆盖了教学区和学生区的主要建筑物及部分家属宿舍,从而满足校内各学院,各职能部门,各直属单位上网需求。学校良好的网络设施为开发使用无纸化网络考试系统提供了坚实的基础。

  综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快.

  我们学校的计算机课程采用上机考核方式,以前所用的考试系统由于种种原因不能满足一些要求,需要添加新的功能,因此我们对考试系统重新设计和开发出一套全新的考试系统的项目,并得到老师的大力支持。我们在保持原有绝大部分功能的前提下,不仅需发完善原有功能,而且按照老师和同学的'要求,加入许多新的功能,使得题目管理,上机考试,试卷评分,考试分析更加方便完善。

  该软件项目可行性研究报告是对项目课题的全面通盘考虑,是项目分析员进行进一步工作的前提,是软件开发人员正确成功的开发项目的前提与基础.写软件项目可行性研究报告可以使软件开发团体尽可能早的估计研制课题的可行性,我们首先确定考试系统需要做什么,并充分理解考试系统要实现的功能,以文档形式说明我们的分析的过程,以便我们以后的设计开发中参考,所以该软件项目可行性研究报告在整个开发过程中是非常重要的

  a本系统的用户可分为教师,学生两类。

  考虑到系统的安全性,本系统共分成两个部分:一个部分用于教师登录,主要负责进行基本资料、题库、试卷、成绩的管理以及查询等;另外一个部分用于考生登录,参加考试和考试前的模拟训练。

  b从总体上考虑,系统应该实现下列功能:

  对教师来说,包括试卷管理、题库管理、成绩管理。基本资料管理

  试卷管理:教师可以将各种题型的数量等方面对某份试卷提出一定的要求生成试卷规则,在学生考试时,由系统根据试卷规则自动组卷生成满足教师要求的试卷,而不用手工组卷。同时,教师还可以对库中已有的试卷进行修改和删除,添加新试卷等。

  题库管理:教师可以根据教学需求对题库中的试题进行三种基本操作:添加新的考题、删除旧有考题、修改原有考题,其中试题类型包括判断题、填空题、单选题,多选题,Microsoftoffice操作(包括word文档操作、excel文档操作、PowerPoint文档操作)、windows文档操作题和打字测试(中文,英文),windows文档操作题。

  成绩管理:教师可以查看考生的考试成绩,并针对不同的课程进行成绩统计,包括考试人数、最高分、最低分、平均分以及各分数段得分人数等。

  主要包括管理基本资料(包括教师、学生资料的增、删、改以及个人资料修改)

  对学生来说,有两方面要求:。

  模拟考试训练:学生可以任选时间进行在线测试,考试结束后,系统会根据已有的标准答案进行在线判卷,考生可以立刻知道考试成绩。

  正常考试:学生只能一人只考试一次,在特殊情况下,可以由监考教师删除以往考试信息情况下,可以进行考试。

  2.3.1给出所建议系统的处理流程和数据流程

  图2.2模拟考试流程图

  图2..2考试系统流程图

  图2.3考试题库管理系统流程图

  2.3.2系统数流图分析

  图2.4考试系统数据流图

  图示2.5考试系统管理流程图

  2.3.3数据字典定义;

  数据字典有四类:数据项,文件,数据流,加工

  表4.1考生登陆信息

  数据流名:考生登陆信息

  简述:考生进入考试系统中的身份

  组成:考生学号+考生姓名

  注释:考生只能参加考试只能登陆一次

  数流流名:空白试卷

  组成:考生学号+姓名+(选择题)+(判断题)+(填空题)+(office操作题)+考试时间

  注释:考生没有做题的试卷

  组成:题名+题号+{问题+选项A+选项B+选项C+选项D+答案+结果}

  注释:每一次生成的选择题都不一样,结果都为空

  组成:题名+题号+{问题++[答案A|答案B]+结果}

  数据流名:office操作题

  组成:题名+题号+{问题+答案+结果}

  表4.7备份答题卷

  数流名:备份答题卷

  简述:试卷类对象初始化的一个string型数据

  组成:考生学号+姓名+(选择题)+(判断题)+(填空题)+(office操作题)+考试时间+考试剩余时间+结果

  注释:每隔1分钟生成一次

  表4.8考试设置信息

  数据流名:考试设置信息

  组成:选择题数目+选择题分值+判断题数目+判断题分值+office操作题分值+考试时间

  注释:是生试卷试题和考试的要求

  表4.9学生信息表

  文件名:学生信息表

  组成:{学生姓名+学号+班级}

  表4.10学生成绩表

  文件名:学生成绩表

  组成:{学号+成绩+考试状态}

  表4.11判断题储存表

  文件名:判断题储存表

  组成:{题序排列号+问题内容+答案A|答案B]+}

  注释:按题序列号排列

  表4.12选择题储存表

  文件名:选择题储存表

  组成:{题序列号+问题内容+选项A+选项B+选项C+选项D+答案}

  注释:按题序列号排列

  表4.13填空题储存表

  文件名:填空题储存表

  组成:{题序列号+问题内容+答案}

  注释:按题序列号排列

  文件名:Office操作题储存表

  注释:按题序列号排列

  表4.15答题卷备份表

  文件名:答题卷备份表

  组成:{学号+答题卷}

  表4.16抽取选择题

  加工名:抽取选取择题

  激发条件:收到生成选题要求

  加工逻辑:1联结数据库,

  2随机抽取选择题库中考试要求数量的选题

  执行次数:一人一次

  表4.17抽取判断题

  加工名:抽取判断题

  激发条件:收到生成选题要求

  加工逻辑:1联结数据库,

  2随机抽取判断题库中考试要求数量的判断题

  执行次数:一人一次

  加工名:抽取选office操作题

  激发条件:收到生成office操作题要求

  加工逻辑:1联结数据库,

  2随机抽取office操作题库中考试要求数量的office操作题

  执行次数:一人一次

  表4.19试卷备份

  加工逻辑:1对考试类中对象初始化,生成二进制数据流

  2将生成的二进制数据流转化这Unicode字符串

  3联接数据库,将生成的字符串,保存到数据库中

  执行次数:每一分钟备份一次

  表4.20试卷备份

  激发条件:收到恢复试卷的考生学号

  加工逻辑:3联接数据库,读取该学号考生备份文件

  2将生成的文件字符串的转化这二进制数据流

  1对考试类中对象逆初始化,生成考试类

  执行次数:当考试发生中断时执行

  列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括:

  服务器运行配置:硬件要求:运行在内存至少在256M以上并装有网卡的微型机上

  客户端:硬件要求:运行在内存至少在128M以上并装有网卡的微型机上

  列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。

  表2.1编程中所用到件

  说明该软件同其他软件之间的接口、数据通信协议等。

  在线考试系统主要是针对当前教考分离的现状设计的。主要目的是为学生平时学习和自测、大规模考试测验服务。系统可以实现如下功能:

  建立完备的试题库,整合现有的考试资源,提高资源的利用率和当前的工作效率;利用计算机自动生成试卷,减少教师负担,提高试卷的科学性,同时也防止考生抄袭作弊;登陆后可以根据用户类型的不同分别进入不同的界面,身份验证严格,防止窃取权限修改成绩;考生答完卷后答案自动存储,若时间已到而试题未答完则自动保存成绩后强行退出;设定自动阅卷功能,标准化试题由于答案固定,可以让计算机自动将考生答案和标准化答案比对,自动生成成绩,确保成绩的公平和公正;最后还可以就考试情况进行分析,找出考生分数层次和薄弱知识点,从而利于教学改进。

  3.1.1编写概要设计说明书目的

  在分析阶段的工作结果是需求说明书,它通过需求分析,明确了解该项目的基本功能。现在我们根据需求说明书,着手开始设计如何实现这些功能,建立一个符合用户要求的软件系统。概要设计就是将系统划分成模块,并决定每模块的功能和模块间的调用关系以及模块的界面

  概要设计将软件系统分解成许多模块,决定每个模块的外部特征,即每个模块的功能和界面(输入和输出),以便详细设计人员参考和进行详细设计。

  根据需求说明书的分析结果和对数据流图分析,将数据流图.转换为模块结图

  图3.1考试管理系统模块图

  图3.2考试系统模块结构图

  考试系统模块功能简介:

  登陆模块:当考生登陆到考试系统窗体时,首先要求输入考生的学号和姓名,并按下确定,进行身份验证,如果没有通过身验证,根据验证结果进行不同的操作,说明没有通过的原因。返回原因可能为,学号与姓名不相配,或者是已经参加过考试,或者是某种原因,你已经处于考试状态。

  身份验证模块:。在考生进入考试系统时,要求确认其考试资格,并跟据不同的情况返回不同的值。

  生成试卷模块:根据读取到的考试设置,生成考试试卷。

  生成选择题模块:根据考试要求,从数据库中的选择题库中随机抽取规定数量的选择试题。

  生成判断题模块:根据考试要求,从数据库中的判断题库中随机抽取规定数量的判断试题

  生成office操作题模块:从数据库中的office操作题库中随机抽取office操作题试题。

  读取数据库信息模块:根据要求,从数据库中读取需要的信息。

  做试卷模块:考生做试卷,让考生根据试题要求,输入结果或进行操作;

  试卷备份模块:在考生做题时,每分钟将试卷更新到数据库中一次。

  试卷恢复模块:在考生考试发生中断或出现错误时,可以数试卷恢复设置,恢复试卷,继续考试。

  时间控制模块:在考试中,考试有时间限制,当考试时间结束前5分钟,将提醒考生交卷,考试时间到时,将自动交卷,并且禁止考生操作。

  提交试卷模块:先将考生试卷保存到数据库中,然后评卷,并把考试分数保存到数据库中。

  评卷模块:对考生试卷的答案与标准答案对比,对的加分,最后得出考试结果

  保存到数据库模块:根据要求,所结果保存的数据库中。

  学生考试查询模块:系统中的教师只有能登陆均可考生考试成绩和答题卷等信息

  3.3.1用户接口

  说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。

  用户接口是用户与系统进行互动操作,为用户使用软件提供了方便。

  本软件的接口一般是通过窗体控件输入输出数据,用户只需在需要操作的窗体控件以输入数据,然后点击确定就可以。

  用户登陆界面设计:需要用户输入姓名和输入学号的TestBox控件TBid和TBname和一个按钮控件BTenter

  图3.3用户登陆图

  考生做试卷界面设计:在考试显示控件中,有4个Label控件,分别显示考生的学号,姓名,考试时间,剩余时间。另外有5个按钮控件,分别用来打开选题题界面,判断题界面各office操作题界面和提交

  图3.4考试系统图

  考生做选择题界面设计:选择题显示在一panel控件中,在panel控件中每一次显示8道选择题,做完之后,可以按“下一页按钮控件,显示下8个选择题,也可以按“上一页”,将显示做过的题。

  图3.5选择题设计图

  考生做判断题界面设计:判断题显示在一panel控件中,在panel控件中每一次显示8道判断题,做完之后,可以按“下一页按钮控件,显示下8个判断题,也可以按“上一页”,将显示做过的题。

  图3.6判断题设计图

  3.1.2外部接口

  说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。

  3.4系统数据结构设计

  3.4.1数据库需求分析

  所谓题库就是试题的仓库,是把许多题目集合到一起,供试卷编制者随时查询和使用的集合。为了方便所有学科组成网络题库,应遵循经典测量理论的指导,要严格按照经典测量理论的数学模型开发题库管理系统、组织试题

  针对一般考试系统的需求,设计如下所示的数据项和数据结构:

  学生信息,包括的数据项有:学生编号、学号、姓名、性别、班级、

  试卷信息,包括的数据项有:、填空题分值、填空题数量、判断题分值、判断题数量、单选题分值、单选题数量、考试时间、office操作题等。

  成绩信息,包括的数据项有:考生学号、成绩、考试状态等。

  判断题信息,包括的数据项有:判断题编号、题干、正确答案。

  填空题信息,包括的数据项有:填空题编号、题干、正确答案。

  单选题信息,包括的数据项有:单选题编号、题干、正确答案、备选项(A、B、C、D)、等。

  office操作题信息:包括数据项有:word文档内容、word操作要求、excel文档内容、excel操作要求、web内容、web操作要求。

  管理考师密码信息:密码;

  试卷备份表包括:考生学号、答题卷

  本系统应该建立一个稳定的后台数据库系统,通过该数据库管理整个考试系统所需的信息(用户信息、试题信息、试卷信息、考试信息等)。

  为了从多方面来保障考生考试信息的安全性、可信性和考试成绩的可依赖性,本系统还应该建立一套机制,这套机制至少应该包括学生和教师的账号的安全机制、后台数据库的安全机制、考试过程的控制机制。

  4.2逻辑结构设计要点

  给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。

  表3.1学生信息表

  列名数据类型长度是否这空注释

  表3.2学生成绩表

  列名数据类型长度是否为空注释

  表3.3考试设置表

  列名数据类型长度是否为空注释

  表3.4管理教师密码表

  列名数据类型长度是否为空注释

  列名数据类型长度是否为空注释

  列名数据类型长度是否为空注释

  表3.7试卷备份表

  列名数据类型长度是否为空注释

  列名数据类型长度是否为空注释

  3.4.3物理结构设计要点

  给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。

  对应逻辑设计的数据库名standtest,设计数据库的物理文件及相关属性如下。

  初始空间:1MB,若超出空间按10%自动增长。

  最大文件大小:不受限。

  隶属文件组:PRIMARY。

  初始空间:1MB,若超出空间按10%自动增长。

  最大文件大小:不受限。

  。具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,处理数据

  运行控制:软件运行时有较友好的界面,基本能够实现用户的数据处理要求。

  运行时间:系统的运行时间基本可以达到用户所提出的要求。

  3.6出错处理设计

  3.6.1出错输出信息

  在用户登陆失败,系统给出提示:“对不起,你已经考试了,或学号错误,请重新登陆!”在考试过程中,突然发生考试中断事件,可以通过试卷恢复来恢复已经做过的考试卷,继续考试。

  3.6.2.出错处理对策

  由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏。但有可能占用更多的数据存储空间,权衡措施由用户来决定。如在考试过程中发生了中断,可以通过试卷恢复系统来恢复试卷,继续考试。考试完了,将考试结果保存到数据库中。

  3.7.安全保密设计

  系统的系统用户管理保证了只有授权的用户才能进入系统进行数据操作,而且对一些重要数据,系统设置为只有更高权限的人员方可读取或是操作。系统安全保密性较高。

  由于系统较小没有外加维护模块,因为维护工作比较简单,仅靠数据库的一些基本维护措施

  设计设计阶段的目的是为编程制定一个周密计划。根据“由外向内”的思想方法,设计阶段分为概要设计和详细设计。在概要设计中我们把考试系统分解成多个模块,现在我们开始进行详细设计,确定每个模块的内部功能各模块内部的详细执行过程。

  4.1.1编写目的

  说明编写这份详细设计说明书的目的,指出预期的读者软件设计是把软件需求变换成为软件的具体设计方案,即模块结构的过程。软件设计一般分为总体设计和详细设计两个阶段。总体设计阶段根据软件需求分析所得到的数据流程或数据结构,使用结构化设计技术,导出软件的模块结构。详细设计阶段是给出软件模块的内部过程描述。内部过程描述是模块内部的算法设计。。

  在详细设计说明书中,我们确定每个模块的内部详细执行过程,包括:局部数据组织,控制流。每一步的具体加工的具体加工要求及种种实现细节,该文档是直接给软件开发人员看的,以便指导编程人员编写代码。

  4.2程序系统的结构

  用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间的层次结构关系。

  图4.1考试系统模块结构图

  4.3程序设计说明

  从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。

  4.3.1程序描述

  给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点

  本程序分为三个功能部分,用户登陆,考生考试和交卷部分,分别调用多个模块。

  考试系统中的身份验证是很重要的,它关系到考试的严肃性。在传统的计算机考试中,简单的口令机制就能取得很好的效果,因为系统本身不会将口令泄漏出去在线考试系统也不例外。以学号这一条件限制,这就使有资格的考试者才能注册考试。考试者注册时,系统便要验证其学号和口令与考试者信息库所备案的是否一致,以及其是否己经参加过考试,这样就保证了考试者的身份是合法的

  用户登陆调用身份验证模块,用于验证进入考试系统的人员身份和考试资格,通过验证后就以进行下一步的考试操作。

  图4.2用户登陆模块流程图

  输人项包括学生的考生的学号和考生的姓名。学号只能是长度的6的string类型,考生姓名只能是长度不能超过6的string类型

  输出项是一个标志符bool类型数据,表示通过验证

  给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。

  当启用评卷功能时,机器首先将标准答案表和考生答案表调出来并设初始成绩为0,根据试卷中的试题标号逐个对答案进行比对(与运算),运算结果为1,则说明考生答案和标准答案相同,找到其对应的分值,则考生成绩=初始成绩+分值。逐次比对累加,直到所有试题都已批阅完毕。最后,输出考生成绩本模块用于考试试卷评分。首先是对把考生的答案与试卷标准答案对比,相同的话根据每一题的分值加分,错误不加分。

  图4.3评卷模块流程图

  输入项:考生的试卷答案,是一个数组项。

  输出项:考生的成绩单。是一个float类型数据

  时间控制模块是用来控制考试时间。时间模块中的时间是不断减小,直到考试结前5分钟,提醒考生要注意提交试卷,考试时间结时,禁止考生继续答题

  时间控制模块流程图

  图4.4时间控制流程图

  输入项:考试时间是一个int类型数据,用来表示本次考试时间

  输出项:考试剩余时间

  生成试题模块有选择题模块、判断题模块,office操作题模块

  这些模块抽取试题算法基本相同,现在只简单说一下判断题模块生成。判断题模块主要生成判断题。判断题是调用读取数据库存信息随机抽取数据库中题,任何一套选择题不会相同,客观上能客观防止作弊

  图4.5判断题模块流程图

  4.3.2注释设计

  说明准备在本程序中安排的注释,如:

  加在模块首部的注释;

  加在各分枝点处的注释;

  对各变量的功能、范围、缺省条件等所加的注释;

  对使用的逻辑所加的注释等等。

  软件系统的开发经历了需求分析、设计和编程三个阶段,并在分析、设计和编程中改进软件质量并尽量避免错误的产生。但是,由于分析、设计和编程都是人来完成的,人在工作中难免会犯各种各样的错误,这就需要我们对软件系统进行测试,找出可能存在的错误。系统在投入使用之前必须进行严格的测试,测试的内容包括功能测试、性能测试、可用性测试、客户端兼容性测试、安全测试等。测试完成后要上交测试报告,我们可以根据测试报告及时发现问题并提出解决方案,便于系统的维护与升级。

  经过初步测试,系统在服务器端和客户端均能正常运行,对于不同显示分辨率下也能够正常显示。但由于系统对操作人员录入的错误数据和数据本身的错误所造成数据的不完整性,系统的约束力较弱,应加强数据的完整性约束提高系统数据的正确性和相容性,以及系统的容错性,加强对用户输入端的数据进行检验。

  本文详细论述了B/S网上考试系统的设计与实现,该系统基本实现了需求分析中的功能要求,其中考生信息主要由数据库直接输入,考生成功登录后进入考生界面,考生界面主要由考试、成绩查询、修改个人资料,考试时考生输入准考证号码、考生姓名,核对正确后进入考场,关键实现了考生在选择后由系统随机抽题、自动组卷后进入考试页面,考试计时,考试时间到,系统强制考生退出,考完后对客观题的自动评分、存档。管理员进入管理员界面,管理员界面主要由基本资料管理、题库管理、试卷管理、成绩管理以及查询等模块组成。

  由于时间和技术水平的缘故,本系统还存在着许多方面的工作尚未完善。系统对操作人员录入的错误数据和数据本身的错误所造成数据的不完整性,系统的约束力较弱,在系统的更进一步的实现阶段,应加强数据的完整性约束提高系统数据的正确性和相容性,以及系统的容错性,加强对用户输入端的数据进行检验。另外,本系统只提供了一些基本的统计与分析功能,如。这些指标还不能揭求教学过程的全貌,还需要进一步地引入新的测量指标.

  本次毕业设计是在老师的精心指导下完成的。我借次机会向表示衷心的感谢!

  同时,也对计算机科学与技术系全体老师的帮助和指导表示感谢!另外,还要感谢在我进行毕业设计过程中给子我帮助的同学。

  最后,对阅读和评审本论文的各位专家表示衷心的感谢!

  [1]朱贵良,宋庆涛,许强《基于WEB模式的网络考试系统安全性研究》计算机工程与应用,3-175.

  [2]郭建波,王建国,王祥《基于Web的局域网标准化考试系统的设计与实现》唐山师范学院学报2004年3月

  [3]刘福春、高昆《基于Internet的通用考试系统》长春科技大学

  [4]陈敬东,陈学东《基于Internet的水平考试系统的设计与实现》内蒙古师范大学学报 (教育科学版).2004年5月

  [5]张峦桥《谈开放教育的标准化考试》《开放教育研究》2002年第1期(总第35期)

  [6]汤志伟,钟毅,方波.《通用在线考试管理信息系统的研究》电子科技大学学报社科版2003年(第5卷)第1期

  [7]蒋东升,江效尧《通用试题库系统的开发》安庆师范学院学报(自然科学版)2001年11月第7卷第4期

  [8]教育部现代远程教育资源建设委员会《现代远程教育资源建设技术规范》2000年5月

【在线考试系统设计与开发论文】相关文章:

}

首先非常感谢您在合作期间的付出! 现为了进一步整合资源,百度阅读即日起将停止自出版业务,其他业务不受影响。我们非常遗憾与您结束合作。现为了最大程度保障您的权益,希望您解除在注册和使用百度阅读自出版服务时与我们签订的协议。

您的书籍会在您确认解约后的3个工作日内在百度阅读平台下线,后台仍可查看,建议您做好相关备份工作;

请您于2019年12月31日23:59:59前在百度阅读平台后台申请提现;

合同规定的双方权利义务全部终止,均不再享有或履行;

以上,如有问题可以与我们邮件沟通。

}

1.1 Java源程序的扩展名是什么?

1.2 什么是标识符?

在java语言中能够我们自己起名的都叫标识符

1.3 标识符有哪些特点?

标识符是大小写字母、数字字符、$和_组成,不能以数字开头,也不能是java关键字,并且区分大小写

path是系统用来指定可指定文件的完整路径。Path是用来搜索所执行的可执行文件路径的,如果执行的可执行文件不在当前目录下,那就会依次搜索path中设置的路径。

classpath是指定你在程序中所使用的类(.class)文件所在的位置。

1.5 java程序经编译后产生的字节码文件扩展名是什么?

字节码文件扩展名是 .class

1.6 请说出常用的DOS命令并解释?

1.7 请解释Java语言的跨平台特性?

Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(class file)。

  • Java Runtime Environment(java运行时环境)。也就是我们说的JAVA平台。所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具(编译器、调试器和其他工具)。
  • Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

2.1 注释的分类及作用?

    注释单行代码或为单行代码添加描述的时候使用 注释多行代码或为代码添加多行描述的时候使用 生产java帮助文档的时候使用,开发中常用来描述类、描述方法

2.2 请说出Java中数据类型的分类?基本数据类型都有哪些?

2.3 Java中数据的类型转换有几种?分别是什么?

  • 容量大的类型向容量小的类型转换时使用
  • 容器小的类型向容量大的类型转换时使用

2.4 Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。

  • 比较运算符,用来比较操作符两边的变量的值是否相等。
  • 赋值运算符,把操作符右边的值,赋值给左边的变量

2.7 三元运算符的基本格式是什么?

三元运算符的格式是: 条件表达式 ? 表达式1 : 表达式2

2.8 三元运算符的执行流程是什么?

三元运算符的执行流程: 首先计算条件表达式的值看其返回结果是true还是false,如果是true就执行表达式1,如果是false就执行表达式2

2.9 使用键盘录入数据的三个步骤是什么?

2.10 请说明for、while、do…while三种循环的格式以及执行流程,以及它们的区别。

  • for(初始化语句;判断条件语句;控制条件语句) {
  1. 执行判断条件语句,看其结果是true还是false,如果是false,循环结束;如果是true,继续执行。
  • while循环语句格式
    1. 执行判断条件语句,看其结果是true还是false
      如果是false,循环结束。
      如果是true,继续执行。
    1. 执行判断条件语句,看其结果是true还是false,如果是false,循环结束;如果是true,继续执行。
    • do…while循环至少会执行一次循环体
    • for循环和while循环只有在条件成立的时候才会去执行循环体

    注意:写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环

    2.11 定义一个方法的格式是什么,以及方法的注意事项?

    • 修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2 ….){
    • A. 方法不调用不执行
      B. 方法与方法是平级关系,不能嵌套定义
      C. 方法定义的时候参数之间用逗号隔开
      D. 方法调用的时候不用在传递数据类型
      E. 如果方法有明确的返回值,一定要有return带回一个值

    类中的成员需要私有的时候使用private关键字
    可以修饰成员(成员变量和成员方法)
    被private修饰的成员只在本类中才能访问

    this用来解决成员变量与局部变量重名问题
    this关键字代表的是本类对象引用;谁调用我,this就代表谁.

    2.14 final 关键字是什么意思,可以修饰那些成员?被修饰的成员有哪些特点?

    final最终的意思。

      • final修饰类,此类不能被继承。
      • final修饰变量,变量就成了常量,只能被赋值一次
      • final修饰方法,方法不能被重写

    2.15 形式参数是基本类型要的是什么?是类名、抽象类名、接口名时分别要的是什么?

    形式参数是基本类型要的是一个基本类型的变量或者具体的常量值

      要的是一个继承自该类的一个子类对象 要的是一个实现了该接口的子类对象

    2.16 返回值类型是基本类型返回的是什么?是类名、抽象类名、接口名分别返回的是什么?

    返回值是基本数据类型的时候返回的是一个具体的值

      本质上返回的是一个该类对应的子类对象 返回的应该是一个继承自该类的子类对象 返回的是一个实现了该接口的子类对象

    package,包的意思,其实就是文件夹,它可以对类进行分类管理

    在不同包下的类之间相互访问的时候,发现,每次使用不同包下的类的时候,都需要加包的全路径。比较麻烦,这个时候,java就提供了( import )导包的功能。
    使用import可以将包中的类导入进来,以后使用类的时候,不需导包,直接使用,简化了书写

    对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

    • 基本类型:比较的是值是否相同;
    • 引用类型:比较的是引用是否相同;

    代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

    equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了。

    首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:

    输出结果出乎我们的意料,竟然是 false?这是怎么回事,看了 equals 源码就知道了,源码如下:

    那问题来了,两个相同值的 String 对象,为什么返回的是 true?代码如下:

    同样的,当我们进入 String 的 equals 方法,找到了答案,代码如下:

    总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

    2.20 请简述泛型是什么?有什么用?在哪里用?

    • 泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的使用进行。也被称为参数化类型,可以把类型当做参数一样传递过来,在传递过来之前我不明确,但是在使用的时候就就明确了。
      • 将运行期遇到的问题转移到了编译期

    2.21 如何编写一个泛型方法,让它能够接受泛型参数并返回泛型类型?并举例

    泛型方法,指把泛型定义在方法上,使用泛型类型来替代原始类型

    2.22 请简述Java中如何使用泛型编写带有参数的类?并举例

    泛型类,指把泛型定义在类上,使用泛型类型来替代原始类型

    FilenameFilter是文件名过滤器,用来过滤不符合规则的文件名,并返回合格的文件。

    2.24 请简述递归是什么?注意事项是什么?

    所谓递归,是指程序调用自身
    注意,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了。

    代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

    等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。

    3.1 请写出Java标识符的命名规则

        首字母小写,举例:name,main

    变量,在程序运行时,值可以被修改的量。

    3.3 变量的定义格式是什么?

    数据类型 变量名 = 变量值

    3.4 成员变量与局部变量的区别?

      成员变量:在类中方法外
      局部变量:在方法定义中或者方法声明上 成员变量:随着对象的创建而存在,随着对象的消失而消失
      局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 成员变量:有默认初始化值
      局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

    3.5 静态变量与成员变量的区别?

      静态变量属于类,所以也称为为类变量
      成员变量属于对象,所以也称为实例变量(对象变量) 静态变量存储于方法区的静态区
      静态变量随着类的加载而加载,随着类的消失而消失
      成员变量随着对象的创建而存在,随着对象的消失而消失 静态变量可以通过类名调用,也可以通过对象调用
      成员变量只能通过对象名调用

    因为字符串的特点是一旦被创建就不能被改变,所有在使用常量进行相加的时候,都是在创建新的字符串对象,最后在把字符串"abc"这个常量值赋值给引用变量s

    1. 通过String类的构造方法
    1. 通过与字符串""相连接

    4.4 如何实现【基本数据类型】与【基本数据封装类】之间的相互转换

    1. 通过包装类的静态方法valueOf()
      包装类 转换到 基本数据类型的方式:

    String类表示内容不可以改变的字符串
    StringBuffer类表示内容可以被修改的字符串

    • 是线程不安全的,运行效率高
      > 如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。
    • > 如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

    4.7 什么是正则表达式?

    正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则达表示通常被用来检索、替换那些符合某个模式的文本。

    不一样,因为内存的分配方式不一样。String str="i"的方式,Java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

    4.12 如何将字符串反转?

    • indexOf():返回指定字符的索引。
    • charAt():返回指定索引处的字符。
    • trim():去除字符串两端空白。
    • split():分割字符串,返回一个分割后的字符串数组。
    • length():返回字符串长度。

    5. Java 类、抽象类、接口、内部类、代码块

    5.1 类是什么? 对象是什么?举例说明

    是一组相关属性和行为的集合是一个抽象的东西,对象则是该类的一个具体的体现。

    举例: 学生就是一个类,然后每一个学生都是学生的一个个具体的体现,所以每一个学生就是一个学生。

    5.2 类由哪些内容组成?

    类由成员变量和成员方法组成
    成员变量对应的就是事物的属性(就是事物固有的信息,比如: 人的属性有身高 , 姓名 , 年龄 , 学历…) , 成员方法对应的是行为(行为: 就是该事物可以做的事情,比如:人的行为有: 吃饭,睡觉…)

    5.3 什么是匿名对象?什么时候使用匿名对象?

    匿名对象指:没有起名字的对象
    a:调用方法,仅仅只调用一次的时候
    b:匿名对象可以作为实际参数传递

    5.4 构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项? 构造方法中可不可以写return 语句呢?

    构造方法的作用是用于给类的成员变量赋值,完成类的初始化工作

      构造方法的名称和类名相同
      构造方法没有返回值类型,连void也没有
      构造方法没有具体的返回值
      • 如果一个类没有给出构造方法,系统将会提供一个默认无参的构造方法
      • 如果我们给出类构造方法,系统将不会提供默认无参的构造方法,这个时候如果我们还想使用无参的构造方法来创建对象,那么就需要我们给出无参的构造方法

    5.5 一个类的缺省构造方法可以有参数吗?

    一个类的缺省构造方法没有参数

    5.6 请说明一个对象的创建过程做了哪些事情?

    1. 在栈内存中,开辟一个空间存储 s变量,用来记录Student对象的引用
    2. 在堆内存中,开辟一个空间存储 new Student()对象的成员信息

    5.7 子父类中构造方法的执行有什么特点?为什么要这样?

    1. 子类有所有的构造方法默认都会访问父类中空参数的构造方法。
      因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
      每一个构造方法的第一条语句默认都是:super()
    2. 如果父类中没有空参数的构造方法,通过下列方式解决
    • 子类通过super去显示调用父类其他的带参的构造方法
    • 子类通过this去调用本类的其他构造方法(本类其他构造也必须首先可以访问了父类构造)

    > 注意:super(…)或者this(…)必须出现在第一条语句上,否则,就会有父类数据的多次初始化

    5.8 静态代码块,构造代码块,构造方法的执行顺序是什么以及执行特点?

    1. 先执行所有的静态代码块,再执行所有的构造代码块,最后执行构造方法
    2. 静态代码块只执行一次, 构造代码块和构造方法,每创建一次对象就执行一次

    5.9 抽象类是什么,抽象类的特点?

    • 使用了关键字abstract声明的类叫做“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
    • 抽象类中可以存在抽象方法,也可以存在非抽象方法
    • 抽象类不能直接进行实例化,我们可以使用多态的形式进行进行间接实例化
      • > 如果子类还是抽象类,那么我们还是不能进行实例化,还需要一个子类去继承 > 子类必须重写父类的抽象方法

5.10 抽象类中有没有构造方法,如果有它是用来做什么的?

抽象类虽然不能进行实例化,但是抽象类中是存在构造方法,该构造方法的作用是用于子类访问父类数据时的初始化.

5.11 接口中成员变量的特点,以及成员方法的特点?

接口中的成员变量都是常量,存在默认的访问修饰符:

接口中的成员方法都是抽象方法,存在默认的访问修饰符:

5.12 请说出类与类,类与接口,以及接口与接口的关系以及特点?

    继承的关系,只支持单继承,可以是多层继承。 是实现的关系,可以是多实现
    • 一个类可以继承一个类的同时,还可以实现多个接口
    • 接口与接口是继承的关系,可以是单继承也可以是多继承

5.13 抽象类和接口的区别?

      可以是变量,也可以是常量
    可以抽象,也可以非抽象
    被继承体现的是:“is a”的关系。 抽象类中定义的是该继承体系的共性功能。 被实现体现的是:“like a”的关系。 接口中定义的是该继承体系的扩展功能。

5.14 内部类有哪些访问特点?

  1. 内部类可以直接访问外部类的成员,包括私有
  2. 外部类要访问内部类的成员,必须先创建内部类对象

5.15 匿名内部类的格式是什么?其本质是什么?

    匿名内部类本质是一个继承了某一个类或者实现了某一个接口的子类对象

5.16 抽象类必须要有抽象方法吗?

不需要,抽象类不一定非要有抽象方法。

上面代码,抽象类并没有抽象方法但完全可以正常运行。

不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类

6. 封装、继承、多态

6.1 请解释什么是方法的重载?

方法重载指在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

a) 与返回值类型无关,只看方法名和参数列表
b) 在调用时,虚拟机通过参数列表的不同来区分同名方法

6.2 使用面向对象【封装】的好处有哪些?

隐藏实现细节,提供公共的访问方式;

6.3 Java 中的类的继承特点是什么以及继承的注意事项?

继承的特点: 在java语言中类的继承只支持单继承,不支持多继承.但是可以多层继承。

  1. 子类只能继承父类非私有的成员
  2. 子类不能继承父类的构造方法,但是可以通过super去访问父类的构造方法
  3. 不要为了某个功能去使用继承

6.4 继承的好处是什么?

  1. 让类与类之间产生了关系, 是多态的前提

6.5 this 和 super 分别是什么,他们各自的应用场景是什么?

    代表的是本类对象的引用 , 谁调用我这个方法,这个方法里边的this就代表谁。一般的使用场景是,当局部变量隐藏了成员变量的时候,我们可以使用this去明确指定要访问的是成员变量 代表的是父类存储空间的一个标志(可以理解为父类对象的引用),我们可以使用super来访问父类的成员

6.6 什么是方法重写?需要注意哪些问题?

方法重写:指子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写

1. 父类中私有方法不能被重写
2. 子类重写父类方法时,访问权限不能更低
3. 父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此)

6.7 方法重写和重载有什么区别?

  • 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同),与返回值类型无关。
  • 发生在子父类中的一个现象, 子类中出现了和父类中一模一样的方法,与返回值有关.

6.8 什么是多态,多态的前提是什么?

一种事物在不同时刻表现出来的状态就是多态

  • 需要有方法重写(其实没有也是可以的,但是没有意义),不同状态的表现就是就是靠方法重写体现的
  • 需要有父类的引用指向子类对象:Fu f = new 子类()

6.9 多态中成员(成员变量,成员方法,静态成员方法)的访问特点是什么?

  • 编译看左边 , 运行看左边
    > 因为成员变量其实就是属性,属性就是只该事物的描述信息,所以使用父类在访问的时候,访问的就是父类的成员变量
  • 编译看左边,运行看右边
    > 这个是多态的本质,存在动态绑定的机制
  • 编译看左边,运行看左边
    > 所以说静态算不上重写
  1. 提供了代码的维护性(通过继承保证)
  2. 提供了代码的扩展性(通过多态保证),这个特点也体现了多态的最常见的应用,作为参数传递.

6.11 多态的弊端是什么,如果我们想访问子类的特有的功能我们应该怎么办?

多态的弊端,不能访问子类中特有的功能
如果我们还想使用子类中特有的功能,我们需要使用向下转型

> 向下转型: 就是将父类的引用强制转换成子类的引用,在向下转型的过程中需要注意一个异常: ClassCastException

7.1 数组有几种创建的方式?分别是什么?

2种。动态创建和静态创建。

7.2 请简述集合和数组的异同点?

  • 可以存储不同类型的元素(通常使用存储一种类型元素)
  • 必须存储相同一类型的元素

7.3 迭代器Iterator是什么?怎么使用?有什么特点?

Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。

7.4 请简述常见的数据结构有哪些?

7.7 请简述并发修改异常产生的原因?如何解决?

> 在迭代器迭代的过程中,集合中的元素个数发生了改变,此时导致并发修改异常。

  1. 通过列表迭代器自带的方法完成元素增删操作。
  2. 通过for循环遍历集合,使用集合中的方法完成元素增删操作。

7.9 请简述Set集合的特点?

  1. 元素是按照某种排序规则存储的

7.10 请简述HashSet是如何保证元素唯一性的?

7.11 请简述TreeSet是如何保证元素唯一性与排序的?

Map接口是双列集合顶层接口,每个位置存储一对元素(key, value)
Collection接口是单列集合顶层接口,每个位置存储一个元素

7.13 请说出Map集合的遍历方式

  1. 键值对对象,找键,找值
  • 单列集合的顶层接口,包含集合中常用的方法。
  • 集合工具类,包含获取集合最大元素值、集合排序等方法。

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:

List、Set、Map 的区别主要体现在两个方面:元素是否有序、是否允许元素重复。

三者之间的区别,如下表:

对于在 Map 中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言 HashMap 的插入会更快,但如果你要对一个 key 集合进行有序的遍历,那 TreeMap 是更好的选择。

值的 value。当 hash 冲突的个数比较少时,使用链表否则使用红黑树。

7.21 如何实现数组和 List 之间的转换?

  • Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。
  • Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。
  • 相同点:都是返回第一个元素,并在队列中删除返回的对象。
  • ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

7.25 怎么确保一个集合不能被修改?

8.1 请说说什么是异常?异常的分类?

  • Java异常是java提供的用于处理程序中错误的一种机制
    所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0错误,数组下标越界,所要读取的文件不存在)。设计良好地程序应该在程序异常发生时提供处理这些错误的方法,使得程序不会因为异常的发送而阻断或产生不可预见的结果。
    Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将被提交给java运行时系统,这个过程称为抛出异常。
    当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交其处理,这一过程称为捕获异常。
    • 所有异常类的父类,其子类对应了各种各样的可能出现的异常事件,一般需要用户显示的声明或捕获。
  • 称为错误,由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等,程序对其不做处理。 一类特殊的异常,如被0除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。

8.2 请说出异常处理的方式?

    • try{…}语句制定了一段代码,这段代码就是一次捕获并处理异常的范围。在执行过程中,这段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应的处理。如果没有异常发生,所有的catch代码段都被略过不执行。
    • 在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。在catch中声明的异常对象(catch(XxxException e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。
    • finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态做统一的管理。无论try所指定的程序块中是否抛出异常,finally所指定的代码都要执行。通常在finally语句中可以进行资源的清除工作。
    • throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
    • throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通常throw抛出异常后,如果想在上一级代码中捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指定要抛出的异常;如果要捕获throw抛出的异常,则必须使用try{}catch{}语句。

8.3 请说说编译期异常和运行期异常的区别?

  • 程序正确,但因为外在的环境条件不满足引发。对商用软件系统,程序开发者必须考虑并处理这类异常。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
  • 这意味着程序存在bug,如数组越界,0被除,传入参数不满足规则等,这类异常需要更改程序来避免,java编译器强制要求处理这类异常。
  • 一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而由运行环境处理。
  • 通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
  • 通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通常throw抛出异常后,如果想在上一级代码中捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指定要抛出的异常;如果要捕获throw抛出的异常,则必须使用try{}catch{}语句。
  • 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。
  • 是异常处理语句结构的一部分,表示总是执行。
  • 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提高垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用。

8.6 请说说异常的注意事项及如何使用异常处理?

  1. 子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。
  2. 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常。
  3. 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try…catch,不能throws

8.8 请简述IO流的分类

9.1 请简述字符编码是什么?请说出常见字符编码表?

    字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象,以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其他符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便以1个字节的方式存储。
      是一个简体中文字符集,由6763个常用汉字和682个全角的非汉字字符组成。 GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库 是在GBK基础上增加了一部分汉字
      Big5:在台湾、香港与澳门地区,使用的是繁体中文字符集 将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,这样就利于同一的管理,在这个编码表中每一个字符占两个字节 为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。

9.2 请说出学习过的IO流中的常用方法?

  • 在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte类型)的格式化表示形式。PrintStream的方法从不抛出IOException
  • 作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。
    Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。 New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

9.6 Files的常用方法都有哪些?

}

我要回帖

更多关于 计算1+2+3+4+5+6...+n程序设计 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信