毕业设计(论文)-基于Android平台的驾校模拟考试系统.doc_第1页
毕业设计(论文)-基于Android平台的驾校模拟考试系统.doc_第2页
毕业设计(论文)-基于Android平台的驾校模拟考试系统.doc_第3页
毕业设计(论文)-基于Android平台的驾校模拟考试系统.doc_第4页
毕业设计(论文)-基于Android平台的驾校模拟考试系统.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

河北农业大学本科毕业论文 题 目:基于Android平台的驾校模拟考试系统 学 院: 信息科学与技术学院 专业班级: 计算机1101班 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 讲 师 二O一五 年 六 月 一 日摘 要随着智能手机的发展,越来越多电脑端的功能可以在手机移动端实现。智能手机的逐渐普及,逐渐改变了人们的日常生活方式。在手机端办公、学习、娱乐等活动以其方便、不受时间和空间限制的特点逐渐被越来越多的人青睐并成为人们的习惯。而在智能手机市场份额中,Android智能手机所占比例最大,用户最多,软件数量最丰富,可见Android手机应用的前景之广阔。Android是一个有待发掘的宝藏,所以我们就以模拟考试系统为例子,对Android系统进行了一定的学习和研究,有助于我们更好地发掘和利用这个宝藏,跟紧时代的步伐,具有重要的意义。本系统是一个基于Android的模拟考试系统,题源是驾校考试的科目四理论知识。本系统有随机抽题并组卷,实时查看问题答案和问题解析,考试计时等功能,能满足基本的模拟考试效果。题型有三类,分别是单项选择题、判断题和多项选择题。系统的前台,即UI用户界面通过XML语言实现,后台代码核心是Java语言,数据库支持是轻量级数据库SQLite。数据库可以实时更新,具有基本的增加、删除、修改、查找功能。系统界面简洁大方,功能完整并容易上手使用,是一个不错的基于Android的模拟考试系统。关键词:Android;模拟考试系统;智能手机;驾校;全套设计加扣3012250582 31AbstractWith the development of smart phones, more and more computer terminal functions can be implemented in the mobile phone side. The increasing popularity of smart phones, and gradually change the way peoples daily lives. In the mobile terminal office, study, entertainment and other activities for its convenience, without time and space constraints features gradually being favored by more and more people and become a habit. In the smart phone market share, Android smartphones largest proportion of most users, the software most abundant, visible prospect of vast Android mobile applications. Android is a treasure to be discovered, so we have to simulate the exam system as an example of the Android system, a certain amount of study and research, will help us to better explore and exploit the treasure, with the pace tight times, has an important meaning.This system is a system based on Android mock exams, problem source is the Driving Test subjects four theoretical knowledge. The system has random question and test paper, real-time view answers to questions and problems to resolve, the examination timing and other functions, to meet the basic analog test results. There are three types of questions, which are multiple choice, false questions and multiple-choice questions. Reception system, namely UI user interface through XML language, the code behind the core Java language, database support is a lightweight database SQLite. Database can be updated in real time, with a basic add, delete, modify, search function. System interface is simple and elegant, full-featured and easy to use to use, it is a good Android-based mock exam system.Keywords: Android;simulation test systems;smart phones;Driving;目录1 绪论11.1课题背景、目的及意义11.2国内外现状分析11.3论文组织结构22 相关技术介绍32.1使用的技术介绍32.1.1 Java编程语言32.1.2 Android平台32.2使用的工具介绍42.2.1 Eclipse 4.242.2.2 JDK 1.742.2.3 Android SDK42.2.4 ADT42.2.5 SQLite数据库42.2.6 SQLite Developer53 需求分析63.1 需求概述63.2 功能性需求分析63.3 非功能性需求分析73.4 运行环境74 系统设计84.1概要设计84.1.1 数据库的设计84.1.2 UI布局文件的设计84.1.3 类的设计84.2详细设计84.2.1 数据库的设计84.2.2 UI布局文件的设计94.2.3 类设计115 系统实现125.1主界面125.2考试界面135.3 MainActivity类145.4 ExamActivity类156 总结与展望186.1 总结186.2 展望18致谢19参考文献201 绪论1.1课题背景、目的及意义2009年1月7日,工业和信息化部位中国移动、中国电信和中国联通发放3张第三代移动通信(3G)牌照,标志着我国正式进入3G时代。陈会安.Java和Android开发实战详解M.北京:人民邮电出版社,2014.1.移动存储、移动办公、移动生活等逐渐成为人们的生活方式。李宁.Android开发权威指南M.北京:人民邮电出版社,2013.9 .根据时代背景,智能手机的出现,是人类发展史上一个里程碑,随着它的不断研发、日益普及,且基于Internet的产生、网络化, 手机在人们日常生活中所扮演的角色越来越不可缺少也越来越重要。李刚.疯狂Android讲义M.北京:电子工业出版社,2013.智能手机已经成为人们的必备。智能手机全球化时代,人们已经不能满足于从电话、书籍、口头等日常方式来获取他们所需要的信息,更多的是通过便携的手机,这个无形的、巨大的载体,甚至不仅仅局限在信息的获取,更多的是要求获取信息时的便捷性、时效性、速效性等,近些年,智能手机的更多的向人工智能方向发展,用户可以在智能手机上做越来越多的事情,甚至出现“智能手机会取代PC”这样的说法,可见智能手机的火热。滕达.基于安卓平台的嵌入式手机MP3播放器的设计与写真D.2008.而Android是智能手机系统中比较突出的,它的开源、嵌入式、移动等特性使它在智能手机市场占有举足轻重的地位。随着 Android系统的持续火爆, 各种各样的深度定制的Android系统的出现,让用户一次又一次地刷新着对Android系统的看法,喜欢Android系统的用户越来越多,运行Android系统的智能手机将不断增加,人们肯定会越来越多跨入Android的阵营。而正是基于智能手机的移动便捷的特性,手机端的模拟考试系统也必定会越来越广泛的被使用, 可以给更多的手机用户带来更多的便利。随着私家车的逐渐普及,越来越多的人有考取驾驶执照的需要,这样,基于Android的驾校模拟考试系统便应运而生。1.2国内外现状分析Android在中国的前景十分广阔,首先消费者比较成熟,在国内,有大量的Android社区,这些社区聚集了广大的开源爱好者,他们从兴趣出发,为Android做着完善、开发的事情,源源不断地给用户带来更多好用的手机系统或应用,用户也活跃在这些社区,与广大Android爱好者交流着自己的使用体验。这些社区为Android在中国的普及做了很好的推广作用。郑人杰,马素霞,殷人昆.软件工程概论.机械工业出版社M.2011.38-64.我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Android系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能如Google Play应用市场在国内无法正常使用,目前常用的解决方法是使用类似的A8VPN的VPN服务来访问。张立国,代闻,龚海平.Android移动开发案例详解M.人民邮电出社.2012.67-78.在市场稳定快速增长的同时,中国安卓手机市场将呈现五大发展趋势:一.用户对多媒体和移动设备的强大需求是中国安卓手机市场发展的动力。二.移动终端,如智能手机,平板电脑等的普及以及对开放式操作系统的进一步开发,能保证安卓的持续活力;三.移动终端产能的提升,成本的下降,制造技术的提高和激烈的价格竞争将加快移动终端降价的步伐;四.网上购物的普及以及物流运输业的发展,也在一定程度上促进了安卓移动终端的消费;五.更完善的售后服务,移动终端保险余志龙编著.Google Android SDK开发范例大全M.人民邮电出版社.2009.的诞生,将提高安卓的用户体验,安卓用户粘性会大幅提升。总体来说,Android智能手机系统以它丰富多样并超前的功能给我们的生活带来了巨大改变。但从利弊方面来说,它在给我们带来方便的同时,也带来一些负面影响,如不少青少年会沉浸在智能手机的世界里。因此,我们应该理性面对,理智使用,不能沉迷于此,更不能凭借它的功能为所欲为。我们应该正确面对Android,让它随着科技与时代的发展,给用户带来更多的方便。如此一来,安卓手机的发展前景才是一片光明的。1.3论文组织结构本论文的安排结构如下:第一章:绪论。主要描述课题研究的背景与意义以及Android系统的国内外现状。第二章:相关技术介绍。介绍驾校模拟考试系统所使用的开发工具,如对JAVA、Android、Eclipse的描述,以及自己使用这些工具或技术的心得体会。第三章:需求分析。通过对驾校考试的了解,分析了应用应该具备的功能,确定了运行系统需要的环境。第四章:系统设计。具体描述了系统各个类的功能和实现思路。第五章:系统实现。描述了各个功能的具体实现并附上关键代码。第六章:总结。描述所完成的工作,突出工作量及亮点,并指出了系统不足和可改进地方。212 相关技术介绍2.1使用的技术介绍2.1.1 Java编程语言Java是由Sun公司推出的一种面向对象编程语言和Java平台的总称。在1995年开始出现。Java是1991年为消费类电子产品的嵌入式芯片而设计的。1995年重新设计用于开发Internet应用程序。Java有动态Web、跨平台、Internet计算的特点。Java被广泛接受并推动了Web的迅速发展。另外,Java还在被不断的完善与改进。Java自问世后被业内人士所认可,它的发展也非常迅猛,并有力冲击了C+语言。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2010年Oracle公司收购Sun Microsystems。靳岩,姚尚朗.Android开发入门与实战M.人民邮电出版社.2009 136-173.Java同时具备C语言和C+语言的特点。它也是一个面向对象的编程语言,它有C+语言面向对象技术的核心。Java用引用替代了C+语言中容易引起错误的指针、取消了运算符重载、并用接口替代了父类的多重继承,Java的垃圾回收机制能自动回收不再被引用的对象所占用的内存空间,大大简化了程序员对于内存管理的工作。在后续版本中, 又引入了泛型编程的技术、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。辛运帏,饶一梅,马素霞.Java程序设计M.北京:清华大学出版社,2006.Java和一般的编译语言和解释语言不同,它用二进制字节码作为桥梁,再使用各种不同平台上的虚拟机来运行从源代码编译来的二进制字节码,从而实现了“一次编译、到处执行”的跨平台特性。但缺点是,每次编译成二进制字节码都需要耗费一定的时间,这个特性在一定程度上降低了Java的性能。王珊,陈红编.数据库系统原理教程M,清华大学出版社,200310 谭东. JAVA开发数据应用程序的调试技巧J.科技传播. 2010(09)编辑Java源代码可以使用任何无格式的纯文本编辑器,在Windows操作系统上可以使用微软记事本(Notepad)、EditPlus等程序,在Linux平台上可使用vi工具等。2.1.2 Android平台1. Android概述Android是一个平台,主要包括 Linux微内核,中间件(SQLite等),关键应用(电话本、邮件、短消息、Google Map、浏览器等),提供的Java框架,以及Android中的JVM。 Richard Whitehead. Leading a Software Development TeamJ.A Developers Guide to Successfully LeadingPeople and Projects,20022.关键类View(视图)、contentproviders(应用交互管理类)、 ResourceManager非编码資源管理类、 NotificationManager(通告管理类)、ActivityManager(生命周期管理类)。3.界面开发这一块主要讨论了 Android的界面开发机制,可以讲组件的初始化抽取出来放到配置文件中, 组件更新用编码方式来处理。4.应用构成Android的应用一般由以下四个关键部分构成Activity、 IntentReceiver、 Service、ContentProvider。其中 Activity是必要部分。5.布局管理Android提供了 LinearLayout线形布局, RelativeLayout相对布局, FrameLayout层叠布局, TableLayout表格布局, AbsoluteLayout绝对布局五大布局管理。6. Activity交互Intent 方式: Intent其实就是用来在 Activity之间做交互用的,需要说明的是 Intent 有个意图说明,值得用深究,举个简单的例子,有种叫 Intent.ACTION_CALL,可直接拨打电话。SharedPreferences是 Android平台上一个轻量级的存储类,主要是保存一些常用的配置。 SharedPreferences类似过去 windows系统上的 ini配置文件,但是它分为多种权限, 可以全局共享访问,最终是以xn1方式来保存,效率不如Intent,但是由子可以共享,所有可以再Acitivity之间交互。但其效率比 SQLite要高。7. Android特点之生命周期每一个 Android应用都是以一个进程的方式运行的,其生命周期不是有自身控制,而是由系统根据运行的应用的一些特征来决定。2.2使用的工具介绍2.2.1 Eclipse 4.2Eclipse是一个可扩展的开发平台,它的源代码是开放的,并且基于Java语言。Eclipse的本质是一个开发框架和一组服务组件,它的开发环境是通过子通话组件来构建的。不过Eclipse自带一个标准的插件集合,集合里包含 Java开发工具(Java Development Tools JDT)。2.2.2 JDK 1.7JDK(Java Development Kit)是Java语言的软件开发工具包(SDK)。SE(J2SE),standard edition标准版,是我们通常用的一个版本。主要用于移动设备、嵌入式设备上的java应用程序。1.7则是现有JDK的版本号。2.2.3 Android SDKSDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK 指的是Android专属的软件开发工具包。2.2.4 ADTADT:安卓开发工具(Android Development Tools)。在Eclipse编译IDE环境中,需安装ADT(Android Developer Tools)Plug-in,这是Android在Eclipse上的开发工具。2.2.5 SQLite数据库SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它是为嵌入式设备设计的,现在很多嵌入式设备中都有它的身影。SQLite所占用的系统资源非常低,在一般的嵌入式设备中,运行SQLite数据库只需要不足1M的内存。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。2.2.6 SQLite DeveloperSqlite Developer是一款比较专业的数据库管理工具,强大的功能可以让你很轻松地管理sqlite3数据库。支持SQL语法高亮显示,关键字以及字段名、表的自动完成,自动高亮匹配括号。自动显示SQL语法错误,支持Unicode编码。完全可视化的查询及设计器,支持多种形式的数据编辑,能够将数据直接导出为HTML/EXCEL/SQL/WORD/XML格式,支持CSV文件的导入,可以快速查找数据库中的指定元数据。3 需求分析3.1 需求概述需求分析是软件工程中一个重要的环节。需求分析的工作在项目开发开始前就要完成。在需求分析阶段,可以采用问卷调查的方式统计用户对特定系统功能的期望,还可以先做出一个系统模型后给用户演示,在演示过程中记录下用户的评价和改进意见,作为后续需求文档编写的参考。本系统是一个驾校模拟考试系统,这个系统主要面对的是即将面临驾校理论测试,但是又不希望繁琐的打开计算机,在教材提供的光盘上进行理论考试练习,或者是某些不提供摸拟考试系统光盘的地区的用户,本系统基于Android 系统开发,利用Android系统在手持便携设备(如:“智能手机”、“平板电脑”等)普及的优势,给用户提供便捷、全面并且具有针对性的练习, 使得用户能够在步入考场前就能够应付考场中的各种题目。本系统针对当照理论考试而设计,主要针对理论考试中出现的交通法律法规、行车注意事项、交通标志等题目,题库完全按照驾照考试大纲设计,并且通过顺序练习完成一整套题库的习题并且即时显示练习正确答案以便记忆, 随机练习随机抽取题库巩固记忆, 模拟考试仿真考场情景计时、计分以及考后错题集,系统练习设计循序渐进,用户可以结合自身需求有选择的进行各种练习,能帮助用户顺利通过驾照考试,而且系统基于Android 便携设备设计可以用户闲暇时间随时随地进行练习,方便快捷。3.2 功能性需求分析通过 Eclipse的平台,开发一个基于Android的模拟考试系统,任务目标主要有:1.通过算法实现模拟考试功能这是模拟考试系统的核心功能,基于各种算法。2.完成试题随机抽取功能与组卷功能系统后台会有一个数据库支持,数据库内是考试题库,数量很大,但考试时的题量是有限的,这就要求系统能在题库中随机抽取不相连续的题目然后重组成一套试卷,以达到对考试的最大程度的模拟。3.实现评分功能评分功能把用户的分数分为三种情况,分别是满分、及格但没有满分和不及格的情况。满分时系统要给出夸赞,及格则要给出具体分数和错误题目的个数,不及格系统则要提醒用户并给出建议。4.实现显示正确答案和解析功能问题的答案在用户做对或做错的情况下都要显示,并且在答案正确时用蓝色字体显示,在错误时用红色字体显示。题目的解析只是在题目答错时出现,并用红色字体显示。3.3 非功能性需求分析为了美观及操作便捷,本系统采用简洁大方的界面设计。首先是系统欢迎界面的设计,只用两张静态图片进行美化,分别是背景图片和主题图片。代表主要功能的【开始考试】按钮用加大,标红的字体显示,并且此按钮本身要被加大拉长,放置于界面的中央位置。而代表无关紧要功能的【关于】和【退出】按钮则分别放到界面的左下角和右下角。其次是考试界面的设计,界面不进行过多的修饰,不加背景图片,不加特效字体,突出模拟考试系统的严谨和严肃。在纯白的背景上由上到下分别显示题目的题干和选项,一些功能按钮则根据重要程度不同排放到不同的位置。为了引起用户的注意,计时器要做的相对大一些,并且字体要用红色。3.4 运行环境1.Android 2.3.3系统模拟器或Android 2.3.3系统及以上智能手机。2.ARM(armeabi)处理器。3.512M 运行内存,200M机身内存,50M SD记忆卡。4.3.2寸显示屏幕,QVGA (320*480)分辨率。5.SQLite后台数据库支持。4 系统设计4.1概要设计4.1.1 数据库的设计本程序的题库文件需要用Android平台自带的SQLite数据库实现。题库文件需要用SQLite Developer提前设计并另存为*.db文件,再放到eclipse相应工程下的res/raw文件夹里,再利用相应语句导入Android应用程序所运行的机器上的SD卡内。4.1.2 UI布局文件的设计1. main.xml这个布局文件是本Android应用运行后用户看到的第一个UI,主要负责欢迎页面的编排布置,背景图片的按放,提示信息的显示和三个主要Button的布置,这三个Button分别是“开始考试”按钮、“关于”按钮和“退出”按钮。“开始考试”按钮是主要功能按钮,对应的onClick方法会启动考试Activity,开始考试。2. exam.xml此布局文件实现模拟考试的UI编排,用到LinearLayout控件、TextView控件、RadioGroup控件、CheckBox控件、Chronmeter控件、RadioButton控件等,布置比较复杂。4.1.3 类的设计1.MainActivity类这个类是与main.xml布局文件对应的类,启动应用时会先执行此类里的方法,实现主Activity的调用并引用main.xml布局文件。并实现与“开始考试”、“关于”和“退出”按钮对应的按钮onClick方法。2.ExamActivity类此类是与exam.xml布局文件相对应的类主要实现题目的随机抽取、题干和选项的显示、记录用户的答案、用户答题后给出正误提示、显示错题解析、评判分数、题目的一次显示、计时器的控制等功能。3.DBAdapter类此类是个辅助类,用于声明诸如DATABASE_PATH、DATABASE_NAME、numberLimit、scoreWeight等static变量,本身并没有实现任何功能。4.2详细设计4.2.1 数据库的设计题库中不但要有题干和选项,还要有相对应的答案与解析。考虑到题型有单项选择题、多项选择题和判断题三种类型,数据库中还要有相应字段用来记录题型。所以我对数据库做了如表4-1的设计。题号、题干、选项A、B、C、D,问题答案和问题解析都是要在答题界面显示的内容,而题目类型字段是用来标识题目的类型的。我做了这样的约定:“1”代表单项选择题,“2”代表判断题,“3”代表多项选择题。同样为了方便起见,我们约定判断题的答案“对”用“A”代表,“错”用“C”代表。表4-1 数据库字段明细表主键字段名数据类型说明主键TestIDinteger题号TestTypeinteger题目类型TestBodytext题干ChoiceAtext选项AChoiceBtext选项BChoiceCtext选项CChoiceDtext选项DTestAnswertext问题答案TestAnalysistext问题解析4.2.2 UI布局文件的设计图4-1 main.xml布局结构1. main.xml这里分别用到了一个垂直布局LinearLayout和一个水平布局LinearLayout,它们之中的控件位置主要通过android:layout_width 和android:layout_height属性来设置的,结构如上图4-1。Background代表背景图片,它不用特定的控件,可用xml语句android:src=”src/background”来实现。这里需要注意的是,xml的src命令只能识别后缀名为”.png”的图片,所以需要对资源文件里的图片做一定的修改。2.exam.xml这里用到了相当多的控件,为了方便控制控件的位置,在这个UI布局文件中大量使用了android:layout_weight属性用来控制控件所占空间的大小比例。关键的一个版块是处理好控件”RadioGroup”和控件“CheckBox”的关系。由于这两个控件分别用来表示单项选择题和多项选择题的选项显示,所以不能同时出现在界面上,必须用Object.setVisibility方法来控制它们的显示或隐藏。这里的Object.setVisibility方法有两个隐藏属性,分别是View.INVISIBLE和View.GONE。两者都能使调用这个方法的控件隐藏,不过View.INVISIBLE属性只会使控件逻辑隐藏,即用户虽然看不到了,但被隐藏起来的控件还会占用一定的物理空间,而View.GONE属性则可以使控件达到物理隐藏的效果,即控件在隐藏的同时,之前所占用的界面空间也会得以释放,之后,在被隐藏控件一下的控件会自动上移来填补被隐藏控件的位置。基于界面美观方面的考虑,我们对控件”RadioGroup”和控件“CheckBox”分别使用View.GONE属性。另外,LinearLayout容器控件有Virtical和Horizontal两个属性,它们分别控制该容器里其他控件的排列方式为“垂直”或“水平”。由于界面的最底层需要水平编排三个功能按钮和一个倒计时控件,所以它们所在的LinearLayout容器采用的是Horizontal的排列属性,其他控件使用Virtical垂直排列属性即可。最后效果如图4-2所示。图4-2 exam.xml文件布局4.2.3 类设计MainActivity类共实现了四个方法。要求重写的onCreate方法,关联“开始考试”按钮的btn_exam_Click方法,关联“关于”按钮的btn_about_Click方法和关联“退出”按钮的btn_exit_Click方法。各方法之间大多是并列关系,没有引用关系。各方法都在主方法onCreate中被调用。ExamActivity类是实现考试功能板块的类,它包含如Init、onPaint等重要方法。这两个类都是Activity类的子类。出于类封装的考虑,以上两个关键类中的各变量都声明成了private性质,各方法也声明了private性质。而类DBAapter作为一个辅助类,自身并没有具体的方法,也没有继承任何父类。它共声明了5个static类型的字符串,供其他类通过“DBAapter.变量名”的形式引用。各类关联图4-3所示。由于父类Activity是Android平台四大组件之一,其中包含有很多变量和方法,这里就不一一列出,而只写出了类名作为象征。图4-3 各类之间的关系5 系统实现5.1主界面如图5-1,主界面分为三大块,分别为界面上方的图片区域,界面中部的按钮和文字提示区域和界面底部的按钮区域。图5-1欢迎界面图片区域用到了两张图片,分别是整个界面的背景图片和显示“驾包在手 考试无忧”的主题图片。它们都是用xml语言来实现的,但实现形式不同。背景图是通过最底层的LinearLayout的android:background属性来设置的,具体代码为:android:background=drawable/background而主题图片是通过ImageView控件的android:src属性来设置的,具体代码为:android:src=drawable/background_pic界面中部的按钮和图片区域分别用控件和控件实现。为了突出文字的功能和感情色彩,【开始考试】按钮的文字用了令人严肃,集中精力的红色字体,“温馨提示”相关文字则用了令人放松、舒服的蓝色字体。字体的颜色可以通过设置android:textColor属性来实现,具体代码为:android:textColor=#FF0000android:textColor=#0000FF字体的大小则可以通过设置android:textSize属性来实现,具体代码为:android:textSize=30dp5.2考试界面如图5-2,考试界面分为五个板块,分别为最上方题干部分,之后的选项部分,【确定】按钮,答案提示和解析部分,功能按钮和计时器部分。图5-2 考试界面第一部分的题干显示部分是用简单的TextView控件来实现的,并在原基础上对字体颜色做了美化,同样是通过设置android:textColor属性来实现的。第二部分是关键部分,这里用到了为数不少的新语句。首先,为了方便控制RadioButton和CheckBox两个大控件的显示和隐藏,我们把代表单项选择功能的四个RadioButton统一放到了一个RadioGroup里,把代表多项选择功能的四个CheckBox放到了一个LinearLayout里,并在后台的类中根据当前题目的类型,通过命令Object.setVisibility来控制CheckBox和LinearLayout的显示和隐藏,具体代码会在下一节给出;其次是处理单项选择题和判断题的选项显示问题。单项选择题和判断题的选项都是用RadioGroup里的相应RadioButton实现的,单项选择题会用到四个RadioButton,而判断题只用到其中的两个RadioButton,另外两个同样适用Object.setVisibility命令达到隐藏的目的。具体代码会在下一节给出。android:onClick=btn_confirm_Click第三部分是一个简单的Button控件,为其设置了android:onClick属性,使其被点击是指向btn_confirm_Click方法。具体代码为:第四部分的答案显示和解析显示用了TextView控件来简单实现的,此TextView控件的text属性初始值是空,其中的文字是在类中用Object.setText来实现的。android:format=计时:%s第五部分除了有三个常见的功能按钮,还有一个动态计时器。此计时器是一个Chronometer控件,它有android:format这个重要属性,可用来设置计时器的样式。如图5-2所示的计时器样式的设置代码为:5.3 MainActivity类MainActivity类内有三个按钮方法,分别是btn_exam_Click方法、btn_about_Click方法和btn_exit_Click方法。public void btn_exam_Click(View view)Intent intent =new Intent(this,ExamActivity.class);startActivity(intent);btn_exam_Click方法是【开始考试】按钮对应的方法,它主要功能是通过Intent对象来启动下一个Activity,即ExamActivity。关键代码如下:public void btn_about_Click(View view)AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setMessage(驾考宝典n版本号: 1.0n作者: 王风硕);builder.setTitle(关于);builder.setPositiveButton(确定,null);builder.create().show();btn_about_Click方法是【关于】按钮对应的方法,主要功能是用AlertDialog类的Builder创建了一个Builder对象,即信息显示对话框,用于显示应用的版本号和作者等信息。关键代码如下:btn_exit_Click方法是【退出】按钮对应的方法,是一个确定信息对话框,让用户对退出动作进行确认或取消。这是一个对话框功能,同样是用AlertDialog类的Builder对象来实现的,并且用Builder.setTitle设置对话框标题,用Builder.setMessage设置提示信息,用Builder.set PositiveButton设置【确认】按钮,用Builder.setNegativeButton设置【取消】按钮。5.4 ExamActivity类/声明相关变量和数组private int questionPosition = new int30;private String myChoice= new StringDBAdapter.numberLimit;private int questionType,questionNumber = 1,myScore=0;private String currentAnswer,currentAnalysis;/声明各个控件private TextView question,answer;private RadioButton radioA,radioB,radioC,radioD;private CheckBox checkBoxA,checkBoxB,checkBoxC,checkBoxD;private RadioGroup radioGroup;private LinearLayout checkBox;private Chronometer chronometer;private Button btn_finish;ExamActivity类中共有20个private变量和9个protected方法。出于变量安全和数据封装的考虑,此类中的所有变量都为private类型。对变量的声明如下:第一个类方法是onCreate()方法,它是类ExamActivity继承父类Activity时自动重写的方法。在这个方法中,除了对exam.xml布局文件的引用,还调用了其他几个我自己实现的方法。radioGroup=(RadioGroup) findViewById(R.id.radioGroup);第二个方法是Init()方法,即初始化方法,它完成了对exam.xml布局文件中20个控件之中的14个控件的初始化,通过findViewById方法取得对14个控件的控制。关键代码如下:for(int i=0;i30;i+)questionPositioni=i; 另外,初始化方法还通过for循环实现对questionPosition数组和myChoice数组的初始化。对数组myChoice的初始化即把数组的各个元素赋值为空字符串。对questionPosition数组的初始化则用了随机数产生器Random()方法对questionPosition数组的各个元素的值进行了随机赋值,以达到随机抽题的效果,关键代码如下:Random rdm = new Random();int tmp, n1, n2;for (int i = 0; i 30; i+) n1 = rdm.nextInt(29);n2 = rdm.nextInt(29);tmp = questionPositionn1;questionPositionn1 = questionPositionn2;questionPositionn2 = tmp;for(int i=0;i= 0) fos.write(buffer, 0, count);fos.close();is.close();第四个方法onPaint()方法负责完成在考试界

温馨提示

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

评论

0/150

提交评论