《在线考试系统毕业论文abrw.doc》由会员分享,可在线阅读,更多相关《在线考试系统毕业论文abrw.doc(41页珍藏版)》请在三一办公上搜索。
1、 四川师范大学经济职业学院(论文)题 目: 在线考试系统 指导教师: 职称: 学生姓名: X X X 学号: C2010300XXXX 专 业: 软件工程 院(系): 计算机科学一系 完成时间: 20120301 2012年03月01日目录摘要IV1 前言11.1 系统开发意义和前景11.2 在线考试系统的现状以及发展11.3 在线考试系统研究的意义21.4 在线考试系统的优势31.5 系统的最终目标41.6 我所完成的工作42 系统可行性研究和关键技术介绍42.1 可行性研究52.1.1 技术可行性研究52.2 开发方案的选择以及开发进程计划62.2.1 开发方案的选择62.2.2 开发进程
2、计划62.3 关键技术介绍及开发工具简介82.3.1 C+MVC82.3.2 事件驱动软件和词汇92.3.3 C+常用技术和类库92.3.3.1 使用INLINE内联函数替代宏调用92.3.3.2 使用函数重载92.3.3.3 用引用(REFERENCE)代替指针进行参数传递92.3.3.4 使用缺省参数102.3.3.5 使用STL102.3.4 VISUAL C+6.0简介102.3.5 SQL SERVER 2005简介102.3.6 常用的WINDOWS下C+开发环境122.4 系统实现的关键技术和代码122.4.1 随机抽题算法122.4.2 计时算法132.4.3 图标按钮的实现1
3、32.5 系统特点 132.5.1 程序特点132.5.2 系统创新点143 系统的需求分析和概要设计153.1 系统的需求分析153.1.1 技术可行性153.1.2 经济可行性153.1.3 操作可行性153.2 模块业务流程图163.3 数据流程图183.3.1 科目管理数据流程图183.3.2 试题管理数据流程图193.3.3 试卷管理数据流程图203.4数据库设计213.4.1 数据库设计的基本原则213.4.1.1 应当重点考虑因素213.3.1.2 在实际的数据库设计过程中,判断所设计的数据库结构是否合理主要是根的数据库是否具有下列的特性来定213.4.2 数据库概念设计223.
4、4.2.1教师,学生信息实体223.4.2.2考生成绩信息实体223.4.2.3试卷信息实体233.4.2.4试卷答案信息实体233.4.2.5试题信息实体243.5 数据库设计243.5.1 教师,学生信息表243.5.2 考生成绩表253.5.3 试卷信息表253.5.4 试卷答案表263.5.5 试题表263.5.6 单项选择题表273.5.7 判断题表273.5.8 填空题表283.5.9 学生分数表284 系统的详细设计与实现294.1 在线考试系统模块的设计与实现294.1.1功能描述294.1.2 工作流程图294.1.3 代码实现294.1.4 效果图304.1.5 在线考试系
5、统欢迎窗口界面304.1.6 操作界面304.1.7 考试界面314.2 在线考试系统模块设计与实现314.2.1 随机数算法模块说明314.2.2 计时算法说明314.2.3 登录界面325 系统测试345.1 测试原则345.2 测试目的355.3 测试时间人员分配355.4 测试环境355.5 系统测试365.5.1系统总体运行测试365.5.2主机平台系统测试365.5.3应用系统功能测试375.6 测试结论376 总结39致谢40摘要考试这个词语早在中国的汉代就已经出现,经历中国几千年的发展和人类进步,考试也从过去的单一模式发展到现在的多种形式,但是在以前我们都没有跳出老师手工出题,
6、学生手写卷子,然后老师再一一的收回,然后老师在逐一批阅。但是,随着计算机网络技术和网络教育的不断发展,传统的基于纸笔的考试形式已不能适应现在的发展需要,计算机在线考试正在逐步取代传统考试。计算机在线考试利用网络实现在线考试、评分等环节,实现教考分离,在一定程度上减少了影响考试的人为主观因素,同时减少了教师的工作量。在线考试系统的设计就是基于上述目的开发设计的。这样在无形中给教师增加更大的课业和工作压力,同时也给学生增加了更多的不必要的等待,但是随着网络和软件的发展,这个问题在逐渐的解决,所以我们这次要做出一个在线考试系统,以计算机为平台,这样不仅可以大大的降低教师的工作压力,同时也可以大大减少
7、资源的浪费,更好地建设我们的“和谐社会”,“环保社会”等。本系统自动抽提,自动计分,并且提供了各种查询模块,教师只需要录入考试题目即可,学生也只是需要一台PC机即可,从而大大的减轻教师的负担和资源浪费。在论文中,严格按照软件工程中的开发方法对系统进行了需求、分析、设计、编码、调试和初步试运行等六大阶段,并对各个阶段进行详细的阐述。首先对系统需求进行了分析。其次对该系统的技术可行性、经济可行性、社会可行性、法律可行性以及开发方案可行性进行分析和研究;而后对该系统进行了设计,分析得到了功能模块,建立系统工作流程图,总结了使用的主要技术、分析了系统用途以及开发特点等。阐述了系统架构中的系统各个功能模
8、块的实现和主要的技术支持,最后陈述了个人项目实现和编写毕业论文过程中的心得体会与收获。特别地,对辛勤的指导老师表示衷心的感谢!关键词:visual C+ 6.0/ VS2008,GDI,SQLSERVER 20051 前言1.1系统开发意义和前景随着计算机技术和互联网的快速发展,人类已经进入了信息时代,也有人称为数字化时代。在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时也希望能够得到科学的评价,老师希望有效改进现有的考试模式,提高考试的效率1;教育机构也希望给网上的学生提供更全面、灵活的服务,全面准确地对学生进行跟踪和评论。网络考试系统正是迎合这一时代需求而开发的
9、,它旨在探索一种以互联网为基础的考试模式2。通过这种新的模式,为学校创造一种新的考试环境,提高考试工作效率和标准化水平,使学校管理者、教师和学生可以随时随地通过网络进行考试。在线考试系统与传统的考试相比,由于传统的考试相比涉及到组织命题、试卷印刷、考场安排、组织阅卷等诸多环节,考试试卷周期长、效率下3;同时人工批卷等主观因素也影响到考试的公正性。随着网络技术在教育领域应用的普及,应用现代信息技术构架的网络在线考试系统展现出了越来越多的优越性。在线考试系统利用网络手段将考试资源整合,实现了一定程度的无纸化考试,从而使考试这项常规而繁琐的任务变得更加方便,避免了以往学校里考试纸张、笔、监考和巡考等
10、各种资源的浪费,并且后台管理是管理员单一的管理,确保了程序的安全性。在线考试系统管理员登录后,对考试内容、专业、科目和考试题目等都作了详细的分类,只要考生通过自己的学生编号和密码进入前台,按步骤依次进行选题和答题,答题完毕后系统会自动判断考卷,并核对出最后考卷的分数,解决了在学校考试后等待考卷分数通知的问题。1.2 在线考试系统的现状以及发展世界各国对教育的发展给予了前所未有的关注,都试图在未来的信息社会中让教育处于一个优势的位置,从而走在社会发展的前列,为此许多国家都把信息技术应用于教育,采取措施推进教育信息化5。美国政府在1996年提出了“教育技术规划(Educational Techno
11、logy Initiative)”,指出到21世纪初让全美国的每间教室和每个图书馆都将联上信息高速公路,让每个孩子都能在“21世纪教师”网络服务。澳大利亚国家公共资源管理局已于1995年4月建立“澳大利亚教育网”,并联通Internet,该网络不仅包括全部高等院校,而且还覆盖全澳大利亚所有的中小国家。网络化在线考试作为网上远程教育的重要组成部分和发展分支,己经在国外一些发达国家得到蓬勃发展,人们选学课程和考试都是通过网上进行。特别是Internet业务的普及,构筑高性能、低成本的计算机网络化在线考试,从技术条件和经济条件上己经成熟。例如在美国,一些著名的考试就采用了网上在线考试的形式包括Mic
12、rosoft公司的MCSE(微软系统工程师认证考试)GMAT(工商管理硕士入学考试)、托福考试、GRE(美国研究生入学考试)等等,并己在全范应用7。在国内,普遍地看绝大多数远程教育的考试还停留在传统考试方式。在此方式下,组织一次考试至少要经过5个步骤,即人工出卷、考生考试、人工阅卷、试卷分析和成绩评估。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且这样工作将是一件十分烦琐和非常容易出错的事情。但是对互联网的真正应用仅限于网上报名工作和网上成绩查询,还没有真正形成上网考试的规模。而在国外一些国家,网上提交作业和网上考试已经相当普及了。所以说传统的考试方式已经不能
13、适应现代考试的需要。到1998年后,随着国内网络教育的兴起,各高校纷纷开发了自己的网络教学平台8。作为网络课程重要组成部分的网络考试系统也相继问世,如北京师范大学的网络教学平台、上海交大的网络考试平台。近几年来,借鉴发达国家的成功经验,结合我国的实际情况,伴随着网络应用的不断扩大,远程教育和虚拟大学的出现,网络应用正不断深入人心。人们迫切要求利用网络技术进行在线考试,来提高了考试的质量,突出公正和客观性,减轻组织及保障工作的负担,提高工作效率9。于是许多教育教学类的课程在线考试软件应运而生,高等学校,企事业单位也都纷纷组织研究此类应用的解决方案,并研制开发了大量的不同类型计算机在线考试软件,也
14、推出了一批优秀的在线考试软件产品。比如全国计算机等级考试软件、职称计算机能力考试等等。有力地推动了我国网络化在线考试的发展水平,并积累了大量有价值的经验。1.3 在线考试系统研究的意义在线考试系统提高了考试的可靠性、有效性和工作效率,降低了考试成本,顺应了社会的网络化趋势,必将成为一种不可或缺的考试方式4。本文研究的目的是设计一个易于管理和维护的面向教学的考试系统,具有一定的通用性,能够满足多门课程的测试与考核要求。为教师开展平时考核及期末考核提供一个考核平台;为学生利用网络自主学习提供条件;为不同课程的网上考试提供平台。为了满足系统对先进性、安全性、跨平台性、可扩展性、可移植性、分布式等方面
15、的要求,系统总体架构设计采用先进的基于B/S的三层体系结构:用户层、业务逻辑层、数据库层。要求建立后台数据库,内含一个试题样库,教师可以在题库中添加、编辑和删除试题;教师可以增加新的考试科目;可以充分利用题库中的试题由系统随机组卷,并能在指定时间内发布试卷;学生参加完考试能立即得到答案,并分析考试中答错的题目;教师能得到学生考试后传送到系统的反馈信息,可方便的对成绩进行查询和分析,同时对学生考试中出现的错误进行统计以便今后的教学。此外,还应具有良好的用户界面,操作方便,尽量减少误操作率。具有安全保密机制。1.4 在线考试系统的优势在线考试系统是利用计算机网络组织考试的综合性应用系统。在线考试系
16、统与传统的纸介质试卷考试相比具有以下优势:1.4.1高效节约传统考试在编写试卷、阅卷、成绩统计等方面需耗费大量的资源。而采用计算机考试,答题完毕后系统会自动判断考卷,并核对出最后考卷的分数,从而可节约大量的人、财、物力及时间资源。1.4.2准确公正计算机考试系统主要处理的是标准化试题及试卷,它不但高效迅速而且准确避免人为因素,从而在一定程度上避免人为误差及人情分等问题,保证考试的公平公正。1.4.3可有效杜绝考试的作弊现象利用计算机考试各考生的试卷现场随机生成,可以试卷不同也可试卷相同而顺序不同,由此可在一定程度避免互相参看抄袭等作弊现象,从而达到考试成绩的公平性。1.5 系统最终目标通过本系
17、统的完成,我们要实现的是考试简单化,个性化和灵活化。同时希望在不久的将来随着人工智能的发展,我相信,在线考试将成为一种时尚,或者说可以成为人类考试的一种全新的形式。1.6 我所完成的工作 我在开发这款“在线考试”系统前,我做过大量的调查,我走访了很多老师,来询问,那些老师们是如何对待学生考试这个问题的,很多老师都对我说起,出卷子的麻烦和改卷子的劳累等等这些问题。因此我觉得这个“在线考试”系统无论从它的实际意义或者是社会价值来讲都具有重要和深远的意义。所以我才动手来完成这个系统的调研和开发。在本系统的开发前期,我曾寻找多个有多年教师经验的资深教师写出“在线考试”系统的需求,我进行了详细的分析和设
18、计,从而得出了系统的可行性和可拓展性等。我是本着开发一个实用,简洁,功能强大和拓展性强的目标来开发这款“在线考试”系统。在开发过程中,我进行了系统有效性和开发费用的评估和预算,同时也做好一切测试的准备,坚持按照需求-分析-开发-测试-部署-维护来完成,并且将大部分精力放在分析和测试上面尽量满足客户和系统的要求上面来,尽可能的开发出一款实用性强,性价比高的软件。在后期的测试中,我采用不同的测试平台来测试,在Windows下面的不同版本来测试(因为,我们一般老师使用的系统都是Windows,所以没有在Linux和unix下面测试。)得出了系统完全可以在现在市面上常见的系统和硬件下面可以正常运行。在
19、“在线考试”系统的开发中,全部工作全部在张老师的指导下由我本人来完成。2 系统可行性研究和关键技术介绍在客观世界中,并不是所有的问题都可以有明显的解决方法。实际上,有许多问题不可能在设定系统的规模有解。还有一些问题在当时的技术条件下是无解的,因为工程中的问题并不是都有明显的解决办法,所以就不可能在预期的时间、费用之内解决这些问题。为了有效地防止这些情况的发生,在项目开始设计之前,我做了有关系统可行性的细致研究,针对该项目是否值得去开发,其中的关键技术难点是什么,问题能否得到解决,怎样达到、实现客户所提出的要求做了具有价值意义的分析。总之,在系统可行性研究中,我达到了如何在尽可能短的时间内用最小
20、的代价确定该项目是否值得去开发的目的。2.1可行性研究2.1.1 技术可行性研究根据客户针对基于“在线考试”系统的设计与实现所提出的系统功能、性能以及系统必须是可靠、安全、先进、开放、实用和可扩展的等其他实现的各项约束条件,从技术的角度研究实现系统的可行性:(1)开放性考虑到在线考试是一个循序渐进、逐步深化的过程,因此,系统既要考虑到现行管理工作的情况,又要放眼长远,坚持高标准、留有接口,为日后根据信息技术发展的最新动态和业务发展的需要进行升级打下基础。在项目的产品技术选型中,将尽量避免采用专有技术,而是全部采用符合国际标准和工业标准的软硬件产品,从而使项目中的软硬件平台具有充分的开放性。(2
21、)可靠性在数据处理中,采用严格的事务控制,保证对数据库中多个表的操作同时提交(Commit)或回滚(Rollback),维护数据的一致性和完整性。(3)扩展性在系统设计中,所有的网络、服务器、存储、应用软件的设计都将遵循可扩充的原则,利用企业现有的软硬件资源,提供最大的软硬件选择余地。系统采用易于扩展的框架结构,使应用系统的客户化和二次开发变得简单。(4)灵活性系统融合了各个行业的考试需求,支持不同类型类型在线考试的选择性。可以提供针对不同课程和考试的要求,在客户的要求下,本系统一般可以支持现在我国的不同类型考试,同时也在系统上面曾加了很多潜在的功能,随着社会的发展,可以起到相应的作用,并且在
22、不同的时间我们都可以使用本系统,可以在不同的环境下面运行本系统,这样就大大增大了系统的灵活性。(5)可维护性系统采用CS架构的应用软件开发,可以保证系统的不被攻入和系统的维护,数据库采用现在社会上面常采用的sql service2005来开发,可以更好的维护。(6)安全性 系统应采用先进而成熟的技术。系统对外必须有完备的安全防范措施,必须建立符合安全要求的防火墙,能够严格有效地防止外来非法用户入侵,能够避免遭受攻击或遭到攻击能报警。系统必须具有完备的用户权限管理功能,禁止越权操作。同时,本系统是CS架构下的桌面应用程序的开发,这样我们就可以避免外网的入侵,可以更好的增加“在线考试”系统的安全性
23、。(7)支持多种数据库保证系统尽可能支持不同类型的后台数据库。在数据库设计过程中,尽量保证数据库表、字段等与具体的后台数据库管理系统无关,这样可以方便数据在不同的数据库系统之间迁移。(8)结构模块化软件系统在设计和开发过程中要保证各子系统、子系统中的各项功能,甚至每一个应用程序的高度模块化。(9)系统高度集成进入系统的数据能根据事先的设定以及管理工作的内在规律和内在联系,传递到相关的功能模块中,从而实现数据高度共享和系统的高度集成。2.2开发方案的选择以及开发进程计划2.2.1 开发方案的选择系统目标: (1)提高教师工作效率和减轻教师工作量。(2)具有严肃性和公正性,系统自动交卷。(3)系统
24、自动交卷、自动阅卷,保证成绩真实、准确。(4)考生可随时查看考试成绩。(5)对考生、教师信息进行管理。软硬件要求:软件配置浏览器端要求:(1)操作系统: Windows XP 硬件配置:无(2)浏览器端要求:无处理器:酷睿双核内存:256MB数据库 接入方案特点易于部署。前瞻性。 充分利用现有资源。各中类型的考试都可以使用,只需要教师来增加试题,维护方便。 数据集中管理。2.2.2 开发进程计划开发进程计划,如表1所示:表1 开发进程计划(2010年9月2010年12月)(2010年12月2011年1月底)(2011年2月2011年2月底)(2011年3月4月底)(2011年5月)阶段目标:完
25、成计划进程表,完成需求调研。工作内容:1、了解我国现在经常用的考试制度和类型;2、搜集论文设计的相关资料,并确定毕业论文题目;3、收集相关技术的参考书籍;4、了解给予MVC架构下的开发,同时参考一些成熟的在线考试系统。阶段目标:学习并掌握相关技术,构造基本设计雏形。工作内容:1、搜集并确定Windows c+下的开发;2、掌握vc的基础语法结构;3、学会运用SVN软件进行版本控制管理,维护任意文档的开发和使用;4、深入了MVC架构模式的意义和应用。阶段目标:提交系统设计报告,完成系统设计。工作内容:1、完成系统功能概要设计、详细设计;2、运用sql service2005版本的SQL语言进行建
26、立数据库,建立数据表,查询、修改、计算、增添数据信息,修改数据表的格式,并进行用户权限管理;3、根据“在线考试”的业务管理和业务流程,设置权限管理程序构架;4、设计整体系统的风格、明确“在线考试”系统的设计与实现系统的具体功能,并绘制功能树状图模型;阶段目标:系统开发实现工作内容:1、根据不同的功能用途,将系统划分为不同的模块,使用MFC中的不同类库完成该系统建设的编码工作;2、在编码的过程中,使用SVN对软件版本进行跟踪管理,不断对代码的规范性等进行修改完善,使代码具有健壮性。 3、在编码完成以后,编写源代码的目录,为后期系统的维护提供方便;系统试运行,测试,部署。2.3关键技术及开发工具简
27、介2.3.1 C+MVCVisual C+ 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分 利用具有面向对象特性的 C+ 来开发出专业级的 Windows 应用程序。为了能充分利用这些 特性,你必须理解 C+ 程序设计语言。掌握了C+,你就必须掌握 Microsoft 基本类库 (MFC) 的层次结构。该层次 结构包容了 Windows API 中的用户界面部分,并使你能够很容易地以 面向对象的方式建立 Windows 应用程序。这种层次结构适用于所有版本的 Windows 并彼此 兼容。你用 MFC 所建立的代码是完全可移植的。2.3.2事件驱动软件和词汇 所有基于窗口的
28、GUI 都包含相同的基本元素,它们的操作方式都是相同的。在屏幕上,用户所看到的是一组窗口,每个窗口都包含有控制、图标、对象以及一些处理鼠标和键盘的元素。从用户角度来看,各系统的界面对象都是相同的:按钮、滚动条、图标、对话框以及下拉菜单等等。尽管这些界面元素的外部特性可能有些不同,但这些界面对象的工作方式都是相同的。例如,滚动条对于Windows、Mac和Motif可能有些不同,但他们的作用完全是一样的。从程序员的角度来看,这些系统在概念上是相似的,尽管它们可能有很大的不同。为了建立GUI程序,程序员第一步要把所有需要的用户界面控制都放到窗口上。例如,如果程序员要建立一个从摄氏到华氏的转换的简单
29、程序,则程序员所选择的用户界面对象来完成并在屏幕上把结果显示出来。在这个简单的程序中,程序员可能需要用户在一个可编辑的编辑框中输入温度值,在一个不可编辑的编辑框中显示转换结果,然后让用户可以单击一个标有退出的按钮来退出应用程序。 因为是用户来操作应用程序的控制,所以程序必须作出响应。所做的响应依赖于用户使用鼠标或键盘在不同控制上的操作。屏幕上的每个用户界面对象对事件的响应是不同的。例如,如果用户单击退出按钮,则该按钮必须更新屏幕、加亮它自己。然后程序必须响应退出。Windows 所用的模式也是类似的。在一个典型的应用程序中,你将建立一个主窗口,并且在其中放置了一些用户界面控制。这些控制通常被称
30、为子窗口-它们就象一些在主窗口中的更小更特殊的子窗口。作为程序员,你应该通过函数调用来发送信息操作这些控制、通过把信息发送给你到代码来响应用户的操作。 2.3.3 c+常用技术和类库:2.3.3.1使用inline内联函数替代宏调用对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。所以在C+中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。 使用内联函数只须把inline关键字放在函数返回类型的前面。这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以
31、加快程序的执行。2.3.3.2使用函数重载在C+中,函数名相同而参数数据类型不同的两个函数被解释为重载。使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。2.3.3.3用引用(reference)代替指针进行参数传递对于复杂的程序,使用指针容易出错,程序也难以读懂。在C+中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相
32、当于对原有变量进行操作。2.3.3.4使用缺省参数在C+中函数可以使用缺省参数,可以有三种方式调用函数PutHzxy(),通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C+的代码中都大量地使用了缺省参数。 需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。 2.3.3.5使用STLSTL(Standard Template Library,标准模板库), S
33、TL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会2.3.4 visualC+ 6.0简介Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业
34、程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。VC+6.0Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。
35、 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。 Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows
36、操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 2.3.5 sql 2005简介SQL Server2000技术SQL Server是Microsoft公司在原来和Sybase公司合作的基础上推出的一款面向高端的数据库系统,它推出后,得到了广大用户的积极响应并迅速占领NT下的数据库应用市场,成为数据库市场上一支不容忽视的
37、重要力量。经过不断的更新换代,SQL Server已经发展到了SQL Server2000,这是Microsoft公司在推出Windows2000之后的又一力作18。SQL Server是客户服务器系统的一个完美示例,它提供了安装到服务器系统的服务器软件和安装在客户系统上的客户端软件,连接客户和服务器计算机的网络软件组件由Windows系统提供。SQL Server2000进一步增强了SQL Server7的高性能、可靠性和方便应用的特点,并包含了一些新的特性,这些对大规模的在线事务处理、数据仓库等应用是非常有用的。SQL Server2000具有丰富的XML和Internet标准支持,它支持
38、通过XML的数据插入、删除、更新和检索操作,还提供了一个间接的模型供开发者开发应用程序。SQL Server2000还支持基于HTTP连接的数据访问,并以新的过滤机制实现了对格式化文档的高性能全文检索功能,简化了自然语言查询解决方案的开发过程。SQL Server2000还具有高度的可伸缩性和可靠性,使其成为Web的首选数据库。其提供了对超大规模数据的分析处理能力,支持上千维数据库。SQL Server2000的可靠性主要表现在对错误的自动恢复和提前预测。简化了错误恢复的操作和配置。SQL Server一贯追求性能的提升,它对数据具有高效的处理能力。它提供高度集成并扩展的数据分析服务,它对管理
39、工具进行了进一步简化,它通过一系列的向导来辅助系统管理员完成对SQL Server的管理,有效地减轻了系统管理员的负担,并大大减少了出现错误操作的几率。同时针对频繁的数据库调整工作,它提供了一系列的向导。SQL Server2000的高效性增强了T-SQL语言的功能并简化了对SQL程序的设计和调试。SQL Server 2000具有以下优点19:(1)完全的浏览器/服务器体系结构这一结构可以有效地使用网络,提高网络带宽的利用率。因为在浏览器服务器运算模式下,数据库操作都集中在服务器上进行,在网络上传输的是用户的请求命令和数据库服务器的操作结果,而不是整个数据库文件,这样可以减少网络上的信息流量
40、,从而提高网络的使用效率。简单的图形化管理工具使系统管理更为宣直观方便。SQL Enterprise Manager是一个基于Windows图形用户接口的集成管理工具,利用它可完成SQL Server的许多配置管理工作。(2)隐含的并发控制能力SQL Server利用锁定功能防止用户在查询和更新并发操作瞄相互发生冲突,锁定是隐含的,用户不必操心锁定过程。(3)丰富的编程接口工具SQL Server提供了多种专用开发工具,其中Transact SQL与工业标准SQL语言兼容,并在其基础上加以扩充,使得它更适合事务处理方面工作的需要。此外他还支持ODBC规范,可以使用ODBC访问SQL Serve
41、r数据库。(4)多线程体系结构SQL Server支持多线程操作,多篇户并发访问时,系统在发生较小额外负担的情况下能够进行并行处理,从而减少内存需求,提高系统的吞吐量。在用户数量增加时,SQL Server的运行速度也不会明显变慢。2.3.6 常用的windows下C+开发环境它大概可以分成三个主要的部分: 1 Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和
42、很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的 2 MFC。从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用M
43、FC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。 3 Platform SDK。这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。2.4系统实现的关键技术和代码2.4.1 随机抽题算法随机抽题功能是随机不重复地抽取学生选择的考试科目的题号,并将题号
44、保存到数组。随机抽题抽取选择题号、判断题题号和填空题题号。算法步骤如下:首先获得选择题数据库的最大题号,在这些题号中堆积抽取数;然后判断抽取的的随机数所对应的题目是否是学生选择的考试科目、是否不重复;是否大于0;最后把满足这3个条件的数保存到数组。这样循环抽取,直到抽满10道题目的题号为止。填空题和选择题的抽题算法与之相同,只是在填空题抽取的时候要注意对性相应的字段的长度,以防止出现段错误等不可未知的错误。同时在随机算法的抽取中,我们采用了数组存放的方式,并且会去不同的算子来分开计算,这样就可以避免在相同的时间内和相邻的客户端上出现相同的试题,从而增加了考试的公正性和系统的可靠性。2.4.2
45、计时算法总所周知,在任何的考试中,时间往往是决定成败的关键,本系统中采取了相对完善的记时算法,当学生开始选择考试开始的时候,这时候,界面自动转到考题界面,这时候计时器开始使用,定时为1秒,这里采用的是CPU时钟的方式计时,绝对的准确,从而使得本系统在时间方面可以没有任何的外界干扰因素。在时间为0的时候,这时候,所有的试题都会自动上船,并且页面自动锁死,任何操作都将失去效果,考生只能选择退出,这样就增加了本系统的公正和理性。2.4.3 图标按钮的实现在按钮控件属性窗口选择Icon属性可以让按钮显示图标,不过这种方法只能显示图标不能显示文本,因为我在这里设计了一个以CButton类为基类的CBut
46、tonBmp类,通过该类绘制按钮,可以显示图标,并且使按钮背景透明。在绘制按钮时需要改写DrawItem方法,该方法用于绘制控件。当按钮控件包含BS_OWNWEDRAW风格时,程序将自动调用DrawItem方法绘制按钮。DrawItem函数定义如下:Virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);其中lpDrawItemStruct是一个LPDRAWITEMSTRUCT结构的指针。此结构体包含了控件的一些信息。实现步骤如下:创建一个以CButton类为基类的派生类CButtonBmp。选择工作区窗口的RecourceView选项卡,想对话框中导入图标资源。在CButtonBmp累得头文件中声明