基于Android的驾校科目一考试练习系统的设计与实现毕业论文
2020-04-04 10:55:48
摘 要
随着现代生活节奏的加快、科学技术的发展,人们获取知识的方式已经不再局限于书本,而是寻求更加高效、更加方便、更加快捷的方式进行学习。使用Android技术设计的各种软件,由于运行在移动设备上,满足了人们随时随地进行学习和信息获取的需求。这些App的出现不仅满足了人们的要求,也极大地丰富了人们的生活。
科目一考试是驾考中的第一项考试,其作用不言而喻。有关科目一练习测试的Android软件也有很多,但是大部分都是将做题记录留在本地,在用户删除软件后就无法知道自己以前的错题或收藏题,本系统针对这一情况做了改进。本系统主要实现了用户的登录注册、用户数据管理、专项练习、错题收集、题目收藏以及模拟测试等功能,为用户提供便利、迅速的练习环境。
本系统采用C/S模式,客户端为安卓手机,服务端为PC机所搭建的服务器。客户端中采用Android相关的设计技术和GSON、Okhttp3等开源框架来进行页面交互和数据操作,利用MVC开发模式分离数据访问和人机交互,使系统便于维护。服务端利用Tomcat和PC机搭建服务器,采用SSM框架来写服务程序,SSM的封装性使得程序简练易维护。
关键字:Android;C/S;MVC;SSM
Abstract
With the accelerating pace of modern life and the development of science and technology, people's ways of acquiring knowledge are no longer limited to books, but they are seeking more efficient, more convenient and faster ways of learning. The various software designed using Android technology runs on mobile devices and meets the need for people to learn and access information anytime, anywhere. The appearance of these apps not only satisfies people's demands, but also greatly enriches people's lives.
Subject test is the first test in the driving test, and its role is self-evident. There are many Android software related to subject practice test, but most of them are to keep the title records in the local, and after the user deletes the software, they cannot know their previous wrong title or collection question. The system has improved for this situation. This system mainly realizes the user's functions such as login registration, user data management, special practice, wrong question collection, title collection and simulation test, etc., providing users with a convenient and rapid practice environment.
The system uses C/S mode, the client is an Android phone, and the server is a server built by the PC. The client uses Android-related design technology and GSON, Okhttp3 and other open source frameworks for page interaction and data operations, using the MVC development model to separate data access and human-computer interaction, so that the system is easy to maintain. The server uses Tomcat and PC to build the server and uses the SSM framework to write the service program. The encapsulation of the SSM makes the program concise and easy to maintain.
Keywords: Android、C/S、MVC、SSM
目 录
第1章 绪论 1
第2章 系统概述 2
2.1课题背景 2
2.1.1研究目的 2
2.1.2研究现状 2
2.2开发环境 3
2.2.1整体概述 3
2.2.2客户端 3
2.2.3服务端 3
第3章 系统分析 5
3.1可行性分析 5
3.2需求分析 5
3.2.1功能需求 5
3.2.2性能需求 6
3.3系统数据分析 6
3.3.1数据流图 6
3.3.2数据库简要设计 8
第4章 系统总体设计 9
4.1系统设计目标 9
4.2系统模块设计 9
4.3数据库结构设计 10
第5章 系统详细设计 13
5.1系统功能模块设计 14
5.2系统关键问题及解决 23
5.2.1主进程与子进程的切换 23
5.2.2题目选择模块的实时更新 26
5.2.3收藏功能的实现 28
第6章 系统测试 29
6.1单元测试 29
6.2集成测试 34
总结 35
参考文献 36
致谢 37
第1章 绪论
随着社会的不断向前发展,人们生活节奏不断加快,科学技术力量日新月异,以往利用书本阅读进行信息和知识获取的方式已经不能够满足人们的需求。特别是对上班族而言,抽出完整的时间来进行学习更加困难,时间相对而言更加零散化。而运行在移动设备上的安卓程序无疑给人们提供了更加便捷的手段来进行学习和信息的交流,可以充分利用零散的时间。
作为一个移动端的科目一练习测试软件,相对于传统的方式,有以下的优势:
(1)不用携带厚重的书本,随时随地都能够进行练习;
(2)添加错题本,不用手动标记错题,可以重复做题;
(3)可以有类似于考试的模拟测试,帮助适应考试节奏;
(4)有针对章节的专项练习,学习效率会更高。
事实上类似的软件在国内市场上有不少,但是很大一部分都是离线题库和错题集,当用户一次删除后就会丢失自己的做题信息,本系统针对这一点进行了改进,增加服务端程序,用于保存用户的个人做题数据,使得用户即使删除再下载也能找回原来的做题记录。
进行该系统的设计时,为了最大程度地方便用户,节省用户的流量资源,采用数据库是本地和服务器相结合的办法。在用户第一次使用软件时会将用户的题库和个人做题数据下载到本地的SQLite,各种有关数据库的操作会在本地进行,这样可以加快页面加载的时间,也会节省用户的流量。用户在做题练习之后,可以选择上传自己的做题记录,以备永久使用。另外,为了保证该系统的扩展性,采用MVC设计模式对该应用系统进行划分。视图(view)部分由加载到活动上的布局文件(.xml)组成,例如主页面,答题页面,做题情况的页面等,该部分是用于显示系统的功能和相关数据的;控制(control)部分将会针对用户的请求调用相应的方法完成页面的加载和数据的加载,主要是Activity和Fragment实现这一部分的功能;模型(model)部分封装了将要使用的数据以及业务规划。整个系统的页面加载在主进程之中,而与服务器传输数据和从数据库查询数据则放在子线程之中,以保证软件使用的流畅。
第2章 系统概述
2.1课题背景
2.1.1研究目的
本系统是一个基于Android平台开发设计的一款app,旨在为用户提供一个能够针对驾考中科目一的考试而进行专项训练和模拟考试的平台,让用户能够通过移动平台随时随地进行科目一考试的相关练习,增强对交通法规的理解能力和掌握能力,提高科目一考试的通过能力。本课题致力于利用移动终端的便捷性打破传统的书本学习模式,结合一定的题目安排技巧,在提高通过率的同时也让交通法规深入人心。
2.1.2研究现状
现如今开车已经成了人们出行方式中的首选,越来越多的人们加入有车一族。2017年底,全国汽车驾驶人超3.42亿人[11],如此庞大的数量位居世界第一。在赞叹国家经济高速发展的同时,不免也担忧起交通安全的问题。驾考作为成为一名合法、合格的驾驶人的必经之路,承担着越来越重要的责任,与交通秩序的维持直接挂钩。而科目一作为驾考第一科,其意义就是让人们能够重视、理解并遵守交通法规,熟悉汽车驾驶相关的知识,保障自己的安全同时也要保障他人的安全。
得益于互联网飞速发展,相关的模拟驾校考试的网站和app越来越多,比如驾校一点通、驾考宝典等这些网站,它们也都有相应的移动端软件。一方面,网页学习和测试其便捷性不如移动端来的更加方便,能够实现随时随地进行学习测试,离线版的题库也不会花费用户的手机流量,充分节约流量资源;另一方面,它们的移动客户端过于集成化,从科目一到科目四均有涉及,现实中很多人只想了解其科目一相关的内容,对于科目二和三会有专门的教练教授,这样软件显得臃肿,不受青睐。而且,很多相关app没有专项训练功能和错题收集功能,影响使用者掌握科目一相关知识的时间和对自己易错点的加强记忆;即使有错题收集功能,也没有上传至服务器中存储,无法实现永久保留做题记录的要求。
2.2开发环境
2.2.1整体概述
为了高效、便捷地进行系统的开发,选择了以下的环境以及相应的开发工具:
开发环境:Windows 10
开发工具:Android Studio、IntelliJ IDEA
数据库管理系统:MySQL、SQLite
服务器搭建:Jetty
设计模式:C/S设计模式
2.2.2客户端
客户端即使用的app利用Android Studio进行开发,在软件中使用Android自带的轻量级数据库SQLite进行科目一题库和用户做题数据的本地存储,便于程序中进行数据的查询和调用。SQLite运算速度非常快而且占用的资源很少,因此它特别适合在移动设备上使用。此外,它不仅支持标准的SQL语法,还遵循了数据库的ACID事务,使得开发者上手起来很快。
在设计模式方面采用MVC设计模式,将应用分为模型层、视图层和控制层,这样可以减少代码的冗余。因为Android的页面展示是在活动中加载布局或者碎片得到的,过多的活动会使得整个软件臃肿,活动之间的切换也会浪费大量的资源和时间并且过多的活动也不好管理。采用MVC设计模式就是将活动放置在控制层中,相同的活动可以加载不同的布局和碎片,不同的活动也可以加载相同的布局或碎片,实现代码的重用,减少了代码的维护量。比如普通的练习模式和模拟测试模式都是进行答题,可以将答题的相关逻辑安排在碎片(Fragment)中,这样两个不同的活动可以加载同一个碎片,在碎片中判断相应的模式执行相应的操作,就不用为两个活动写不同的碎片。
2.2.3服务端
服务端利用计算机和Jetty搭建服务器,在IntelliJ IDEA中进行服务程序的开发,数据库采用小型轻便的关系型数据库MySQL。服务端程序大体上也是采用MVC的设计模式,但是因为不需要界面进行交互,所以并没有视图层(View),而且控制层(Control)负责处理的是来自客户端的请求。模型层(Model)对应的是数据库中表的信息和字段,而真正用来做数据传输服务的是重定义的数据库模型,这样设计可以方便对前端数据的传输,假如前端需要数据库的表中不存在的一个字段,可以将此字段及其实现方法写在重定义的模型中。整个服务端程序较为精简,利用了SSM框架进行开发,省去了很多对数据库的连接操作。SSM框架由Spring、SpringMVC、MyBatis三个开源框架整合而成,常使用它作为数据源和对数据操作较为简单的web项目的框架。
SSM框架是标准的MVC模式,它会将整个系统划分为表现层、controller层,service层,DAO层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。
SpringMVC主要负责的就是控制层的部分:客户端会发送请求到分发器(DispacherServlet),由分发器的控制器查询Hand而Mapping,找到处理请求的Controller,Controller调用业务逻辑处理后,返回ModelAndView,分发器会查询视图解析器,找到ModelAndView指定的视图,最后视图负责将结果显示到客户端。
Spring:IOC容器就是我们平时开发接触最多、使用最多的,它可以装载bean(也就是Java中的类,包括Service和Dao里面的),有了这个机制,就不用在程序中每次使用这个类的时候为相应的类进行初始化,因此很少会看到关键字new。
Mybatis:Mybatis是对JDBC的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个SQLSessionFactory实例展开的,它通过配置文件关联到各实体类的Mapper文件,而在Mapper文件中配置了每个类对数据库所需进行的SQL相关的语句映射。在每次与数据库交互时,通过SQLSessionFactory拿到一个SQLSession,再执行SQL命令。
第3章 系统分析
3.1可行性分析
在确定问题以后,仍然不能急于直接进行开发,因为任何一个系统开发的任务都会受到时间和资源等这些条件的限制。由此来看,进行可行性研究就是根据当前可利用的资源条件来确定问题是否值得去解决,是否有可行的解决方法。
(1)技术可行性:本系统采用C/S设计模式进行整体开发,这种设计模式已经很普遍地应用于生活之中。客户端基于Android技术利用MVC模式开发,并且使用了GSON、OkHttp和LitePal等开源库。Android技术到现在已经非常成熟,相关的书籍和案例数不胜数,其中封装好的各类优秀的库完全可以满足本系统的开发需求。而那些开源库的版本已经更新了好几代,经过市场的检验是完全可以使用的,其兼容性和解决问题的能力都是得到了认可的。服务端基于JavaWeb技术利用SSM框架进行开发,SSM框架应用于大部分企业级的项目之中,证明了它的健壮性。服务端和客户端之间是利用Http协议进行会话,传输的数据格式为JSON。JSON体积小,采用键值对的方式构造,灵活方便,便于封装、解析和传输,很容易就能够掌握使用它。因此在技术上没有限制,是能够实现的。
(2)经济可行性:作为驾考的第一个科目,科目一是为了让人们能够重视交通法规,全面地了解行车安全,在驾驶过程中应该注意的事项,是保证人们以后上路行驶的安全。本系统的经济可行性不能单从是否能够通过软件获取利润来看,对于参加驾考的人们来说,能够充分利用零散时间进行交通法规的学习,提高科目一考试的通过率;对于社会层面来说,app中设计的错题收集会提醒即将成为驾驶员的人们注意自己以后的驾驶行为,从而对维护交通安全,宣传文明守法出行有积极的意义。
3.2需求分析
通过对系统的分析以及对其他同类app的参考,基本上确定了本系统的功能需求以及对性能的基本需求。
3.2.1功能需求
(1)用户注册:进入app后用户是游客的身份,在个人的页面进行注册,获得专属的账号,以便通过该账号进行登录,获取相应的功能。
(2)用户登录:已经注册过的用户可以通过输入账号和密码登陆平台。
(3)专项练习:用户选择相应的章节例如道路交通、安全文明、驾驶操作和交通信号进行针对性的练习,答题后会有结果和分析。
(4)模拟考试:用户能够体验到和驾校考试一样的模拟科目一考试,有时间要求和分数统计。
(5)错题记录:将用户在练习中做错的题目进行收集,能够有针对性的记忆,下次查看错题还可以进行再次做题。
(6)收藏记录:用户在练习过程中如果发现哪道题自己比较感兴趣,或者只是因为一时的凑巧才做对了,可以将此题加入收藏夹,以便登录后可以查看自己收藏的题目并且可以再次做题。
(7)上传数据:用户在进行练习之后,能够将自己的答题数据上传给服务器,以便能够永久存储该数据,使得下一次换机器使用时仍能够得到自己的做题相关的数据。
(8)删除数据:由于一部手机上可能会有多个账户使用,所以Android本地的数据库中会存有其他用户的个人答题数据,此时可以选择删除不再使用的账户的数据,节省存储空间。
3.2.2性能需求
系统必须满足的定时约束或者容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的要求。
(1)客户端向服务端请求数据时,服务端能够快速响应并且传输数据;
(2)客户端解析数据并存入数据库应该不能耽误主进程的相关服务;
(3)客户端封装数据并发送给服务端时要独立于主进程的页面操作;
(4)由于本系统不涉及到用户的个人数据,所以在安全性方面不作过多要求。
3.3系统数据分析
3.3.1数据流图
(1)客户端与服务端交互数据
说明:未注册的用户在客户端填写相应的信息发送个服务端,服务端确认完毕后进行数据库录入;未登录的用户将密码和用户名发送给服务端核对并请求题库数据,服务端首先发送题库数据,在核对完成后返回登录成功的信息并发送个人数据;用户在完成某次练习后可以上传自己的做题数据,如下图3.1所示。
图3.1 客户端与服务端交互数据流图
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: