版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华东交通大学毕业设计基于移动设备的违章车辆管理系统设计及开发摘要当今,人们机动车的拥有量日益增加,车辆的违章发生率也在迅速攀升。当前落后的违章的执法模式在实际的操作过程中有着信息记录不准确,违章信息传递不及时等等缺点。而智能手机愈发普及,3g和4g网络也在飞快发展,我们正大步走进信息化的社会。与此同时,安卓智能手机占据了智能手机的绝大多数,Android凭借用户数量多,易开发的优势占据了大部分的份额的市场。本课题便是基于Android系统,通过eclipse集成开发环境,使用java语言,制作一个违章车辆管理系统的app(application应用),用于交通执法人员的信息收集查询。本应用包含
2、违章车辆信息录入、违章车辆信息管理和违章车辆数据分析等功能。本系统的开发流程为:首先进行需求分析,然后确定违章车辆管理系统的功能,再编写程序的代码,调试程序,运行程序,并对程序进行优化完善。关键字:java;Android;智能手机应用;违章车辆管理The development of illegal vehicles management system based on mobile devicesAbstractNowadays,the amount of motor vehicle ownership is increasing, the vehicle violation rates
3、are rapidly rising. The current law enforcement pattern of the backward violation has the information record in the actual operation process, and the illegal information transmission is not timely and so on,and smart phones are becoming more and more popular.3G and 4G networks are also developing fa
4、st.we are now entering the society of information technology.At the same time, Android smart phones occupy the vast majority of smart phones.Android dominate the market with the number of users and the advantages of easy development.This paper is based on Android systems,through the eclipse integrat
5、ed development environment, using java language, design a illegal vehicles management system app (Application) for the information collection and inquiry of traffic law enforcement officers.This application contains the functions of illegal vehicle information entry, illegal vehicle information mana
6、gement and illegal vehicle data analysis, etc.The development process of this system is: first carries on the demand analysis, then determines the function of peccancy vehicle management system, and then write a program code, debugging a program, run the program and the program optimiztion.Keywords:
7、java;Android;smart phone application;management of illegal vehicle.目录1.开发背景51.1智能手机的普及51.2 各智能手机系统的特点51.3本系统的设计目的62.违章车辆管理系统功能要求72.1车辆信息录入72.2违章信息的查找72.3违章车辆数据分析72.4系统功能结构73.违章管理系统功能模块设计93.1主系统设计93.2 信息录入模块设计12 3.3信息查找模块设计173.4违章数据分析模块264. 违章车辆管理系统运行测试354.1系统测试的方法354.2系统测试过程354.3系统测试总结445.违章车辆管理系统的拓
8、展455.1 图片的存储功能455.2 数据库与个人计算机的交互465.3数据库在不同智能手机间的传递476.设计心得总结48参考文献:491.开发背景1.1智能手机的普及智能手机指的是像PC(个人电脑)一样,有着自己独立的操作系统,可以由用户自行安装各类第三方程序的手机。智能手机主要具有互联网能力、PDA功能、开发的操作系统、人性化、功能多运行输的快的等等特点,相较于个人电脑,智能手机具有携带十分方便的优势,随之而来的是各式各样在智能手机上使人们的学习和生活越来越方便的手机应用。手机应用功能繁多,Android的开发者逐年增加,各类应用手机化已经成了不可改变的趋势。为了顺应时代潮流,在移动端
9、的违章车辆管理系统的开发也就很有必要了。近几年来,智能手机已经普及到了人手一部,3G网络基本普及,4G网络正在飞速的发展,智能手机已经成为了人们生活的一部分。随之而来的是各种方便人们生活的各类手机应用的开发。本违章车辆管理系统便是基于智能手机而开发的一款违章车辆管理系统。1.2 各智能手机系统的特点1.2.1Android系统Android是开放源代码的操作系统,它基于Linux且非常自由,一般以智能手机和平板电脑等移动设备作为载体。当今的智能手机中,Android的市场份额占了80%以上,IOS不足13%,window phone 不足4%,在智能手机系统的领域占据主导地位。与此同时,And
10、roid不同于苹果,不在应用程序上进行严格的限制,同时Google放出了Android的开发平台,十分适合进行应用开发,且尤其适合新手。1.2.2苹果的IOS系统IOS是由苹果公司开发的移动操作系统,IOS的系统最大的优点就是其安全性能好,所有的应用都必须通过appstore发布再进行下载,IOS的系统运行快,使用流畅,软件数量和种类繁多,但是应为安全性的原因远不及Android系统。IOS系统的安全性就导致了其开发的不方便,应用发布的流程比较麻烦,软件在硬件上的调试和测试所需要花费的精力就太多,同时IOS的市场占有率不足13%,app的市场远没有Android那么大,所以IOS系统并不适合用
11、来开发我们的违章车辆管理系统。1.2.3 微软的Windows PhoneWindows Phone(简称:WP)是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。微软的Windows Phone具有运行流畅,系统优先级高,硬件要求低,与windows操作系统的电脑结合紧密等等优点。但是Windows Phone的应用较少,手机不能越狱,这点也限制了开发者在这种系统上进行开发新的软件。基于以上几个智能手机开发系统的比较,本应用选择Android系统,使用eclipse集成开发环境,来对车辆违章系统进行设计和开发。1.3本系
12、统的设计目的当今社会人们的生活水平越来越高的同时,机动车的保有率也与日俱增。机动车数量的增长难免会带来违章数量的提升,同时也给交通执法人员和违章信息的处理带来了更沉重的工作负担。现当前落后的执法模式为,交通管理人员先发现违章行为,随即开罚单记录违章信息,之后再将罚单提交给交管部门。交通管理部门有专门的人员将违章信息录入到网络当中,驾驶人这时可以再网络上查找到自己的违章信息,然后缴纳罚款。此过程长,流程复杂,待违章信息上传时,驾驶人再来处理自己违章记录,交通执法人员的信息量不足,此过程有诸多不便。本违章车辆管理系统的意义就在于简化这个交通执法的过程。交通执法人员可以直接在自己的智能手机上安装这个
13、应用。这样,交通管理或者执法人员在发现违章的行为时,可以直接将违章的信息直接录入到数据库当中。不仅如此,交通执法人员可以根据数据库已经存在的信息,判断该次违章是否是初犯,是否该罚款,扣分有没有达到十二分等等。系统避开了递交罚单再上传的过程,提升效率的同时节省了不少精力。交通管理人员可以对已知的违章信息进行查询和对系统分析出的结果多加注意,以提升交通违章的管理质量。通过使用本系统,交通管理的过程加快了信息的上传速度,并且节省了人力物力,同时本应用具有违章车辆数据分析的功能,可以给交通执法人员提供一定的参考信息。2.违章车辆管理系统功能要求违章车辆管理系统的功能主要包括以下三种:车辆信息录入、违章
14、信息查找、违章车辆数据分析。2.1车辆信息录入 把司机违章的信息录入到系统当中,数据保存在手机的SD卡当中,并以TXT的格式保存。内容包括,驾驶员姓名、车牌号、驾驶证号、行驶证号、违章车型、违章地点、违章时间、违章条款和罚款金额。2.2违章信息的查找本应用通过按姓名、按车牌号、按驾驶证号、按行驶证号4种方法查询。查询并可以一次性显示出所有结果。2.3违章车辆数据分析本应用通过对录入的信息进行统计和分析,以文字或图表等形式把所以违章车辆的信息表现出来,用于之后的车辆管理与研究。2.4系统功能结构进入程序的主界面后,分别通过三个按钮进入三种不同的功能,程序的组织结构体系图如下图2.1所示:图2.1
15、 违章车辆关系系统结构体系图3.违章管理系统功能模块设计3.1主系统设计3.1.1 主界面设计主界面采用linearlayout,由一个textview和4个button组成,textview显示“违章车辆管理系统”,前三个按钮分别对应车辆信息录入、车辆信息查询和违章车辆数据分析,第四个按钮为初始化,该按钮的作用是创建底层数据文件和格式化所有数据。主界面的样式如下图3.1:图3.1 主界面其中所有控件的width均为fill_parent,height均为warp_content,如:3.1.2主界面对应的代码设计(MainActivity)首先在oncreate方法中,对所有的控件进行实例化
16、,并对按钮设置监听器,当点击按钮的时候,系统会进入当相应的操作界面,具体代码如下Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/绑定主布局 /实例化操作btnInput=(Button) findViewById(R.id.btnInput);btnFind=(Button) findViewById(R.id.btnFind);btnAnalyze=(Button) find
17、ViewById(R.id.btnAnalyze);btnInitialise=(Button) findViewById(R.id.btnInitialise); /设置监听器btnInput.setOnClickListener(oclInput);btnFind.setOnClickListener(oclFind);btnAnalyze.setOnClickListener(oclAnalyze);btnInitialise.setOnClickListener(oclInitialise);MainAcitivity中,filename代表全局代码使用的文件名,用于储存违章车辆的数据
18、,路径为手机内存的根目录,格式为txt,三个进入次界面的按钮监听器事件用intend 方法进入下一个acitivity。初始化的点击事件为新建txt文件,用于储存数据,同时可以清除所有之前输入的数据,具体代码如下:public class MainActivity extends Activity public String filename=database.txt;/全程使用的文件名private Button btnInput,btnFind,btnAnalyze,btnInitialise;/四个按钮的名称public File sdcard = Environment.getExte
19、rnalStorageDirectory();/获得SD卡的操作权限private OnClickListener oclInitialise=new OnClickListener() /初始化Overridepublic void onClick(View arg0) File myfile= new File(sdcard,filename);try myfile.createNewFile();FileOutputStream fos=new FileOutputStream(myfile);OutputStreamWriter osw=new OutputStreamWriter(f
20、os,UTF-8);osw.write();osw.flush();osw.close();fos.close();Toast.makeText(MainActivity.this, 初始化成功, Toast.LENGTH_SHORT).show(); catch (IOException e) e.printStackTrace();private OnClickListener oclInput=new OnClickListener() /进入录入窗体Overridepublic void onClick(View arg0) startActivity(new Intent(MainA
21、ctivity.this,inputActivity.class); ;private OnClickListener oclFind=new OnClickListener() /进入查找窗体Overridepublic void onClick(View arg0) startActivity(new Intent(MainActivity.this,findActivity.class);private OnClickListener oclAnalyze=new OnClickListener() /进入数据分析窗体Overridepublic void onClick(View ar
22、g0) startActivity(new Intent(MainActivity.this,analyzeActivity.class);3.2 信息录入模块设计3.2.1信息录入界面设计违章车辆信息录入的界面采用tablelayout,用tablerow来填充每一行,每一行包括一个textview和一个editext,textview用于提示要输入的信息,edittext用于用户的信息输入。在最下有三个按钮:违章信息录入、重新输入、返回主菜单,分别用于把输入的数据保存到数据库,清空所有输入的数据和返回之前的界面。每一行中,textview和edittext的weight都为1,用来填充并且
23、分割每一行的空间,具体界面如下图3.2所示:图3.2:车辆信息录入界面3.2.2 存成数据类型的选择本应用存储数据有两种选择SQLite数据库和TXT文档,以下对两种数据存储模式进行分析。 SQLite在Android应用的设计中,数据库使用最多的是SQLite。SQLite是一种嵌入式的轻量数据库,它最大的优点就是占用的资源极小,数据易于查询,支持SQL语法,尤其适用于手机这种资源有限的设备。SQLite的数据保存在应用的内部,不能被eclipse集成开发环境打开,内部存储了多少数据难以知道。不仅如此,SQLite并不适合大量的数据存储,数据难以备份,保存和上传,仅仅能作为内部代码的查询和计
24、算。TXT文档使用TXT文档来存储数据文件属于另辟蹊径的一种做法,它也有不少缺点。首先是查询代码难写,在SQLite中查询仅仅需要对SQL数据库语言有一定的了解,用select form等语句就能轻松在数据库中查出想要的信息。同时代码牵涉到文件的读取与写入增加了代码的复杂性。但是,使用TXT文档存储数据的优点也是显而易见的。TXT文件直接被应用创建在SD的目录下,数据写入TXT文档当中。该txt文档可以被其他应用打开(如wps,记事本等等),方便检查输入的信息是否正确,对程序的调试有着很大的帮助。更重要的是,txt文档是以文件的形式存在,意味着违章的数据可以进行备份、手动修改和上传到服务器,有
25、着更加广阔的拓展空间。基于以上几点考虑,本违章车辆管理系统决定采用TXT文档作为储存数据的媒介,并认真的花更多精力设计系统的查询模块和系统分析模块,以使得软件的数据具有备份和存储的能力,和上传服务器的潜力。3.2.3信息录入界面代码设计(inputActivity)与主界面的oncreate的方法类型,inputAcitivity的创建方法为控件的实例化和事件监听器的设置,具体代码如下:Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentV
26、iew(R.layout.input);/按钮实例化&设置监听器btnInputInfo=(Button) findViewById(R.id.btnInputInfo);btnInputInfo.setOnClickListener(oclInputInfo);btnInputBack=(Button) findViewById(R.id.btnInputBack);btnInputBack.setOnClickListener(oclInputBack);btnClear=(Button) findViewById(R.id.btnClear);btnClear.setOnClickLis
27、tener(oclClear);/EditText实例化EditTextName=(EditText) findViewById(R.id.EditTextName);EditTextLicenseNumber=(EditText) findViewById(R.id.EditTextLicenseNumber);EditTextLicenseNumber1=(EditText) findViewById(R.id.EditTextLicenseNumber1);EditTextPlateNumber=(EditText) findViewById(R.id.EditTextPlateNumb
28、er);EditTextType=(EditText) findViewById(R.id.EditTextType);EditTextAddress=(EditText) findViewById(R.id.EditTextAddress);EditTextTime=(EditText) findViewById(R.id.EditTextTime);EditTextClause=(EditText) findViewById(R.id.EditTextClause);EditTextMoney=(EditText) findViewById(R.id.EditTextMoney);在以上代
29、码中,变量对应的意义如下表3.1所示:表3.1 inputActivity变量含义表变量名称对应含义类型EditTextName用户输入的姓名EditTextEditTextLicenseNumber用户输入的驾驶证号EditTextEditTextLicenseNumber1用户输入的行驶证号EditTextEditTextPlateNumber用户输入的车牌号EditTextEditTextType用户输入的车型EditTextEditTextAddress用户输入的违章地点EditTextEditTextTime用户输入的违章时间EditTextEditTextClause用户输入的违章
30、条款EditTextEditTextMoney用户输入的罚款金额EditTextbtnInputInfo录入信息按钮ButtonbtnInputBack返回主菜单按钮ButtonbtnClear清除信息按钮ButtonoclInputInfo录入信息按钮监听器onclicklisteneroclInputBack返回主菜单按钮监听器onclicklisteneroclClear清除信息按钮监听器onclicklistener清除数据按钮对应的事件代码很简单,把每一个edittext设为空“”即可,具体代码如下:Overridepublic void onClick(View arg0) / 清
31、空数据EditTextName.setText();EditTextLicenseNumber.setText();EditTextLicenseNumber1.setText();EditTextPlateNumber.setText();EditTextType.setText();EditTextAddress.setText();EditTextTime.setText();EditTextClause.setText();EditTextMoney.setText();返回主菜单按钮对应的事件用intend发放实现即可:private OnClickListener oclInput
32、Back =new OnClickListener() /返回主菜单Overridepublic void onClick(View arg0) startActivity(new Intent(inputActivity.this,MainActivity.class);信息录入按钮对应的事件代码较为复杂,思路为首先读取先前保存的数据,存储在一个字符串中,然后把所有edittext的信息整合起来,保存为一个新的字符串,将新老字符串合并之后,总字符串便是最新的数据。最后将这最后的字符串保存到原先的数据文件中,便完成的违章信息的录入,算法流程图3.3如下:图3.3 违章信息录入算法流程图 通过违
33、章车辆信息录入系统,每一条违章系统在违章的数据库中占用一行,以“*”开头,方便之后的查找,以回车“n”结束。比如按图3.3中输入违章信息,在数据库中,显示的结果为“*姓名:张三;驾驶证号行驶证号:18237;车牌号:赣A1430;车型:大众;违章地点:双港路;违章时间:5月20日上午10点;违章条款:闯红灯;罚款金额:100;”其中每条信息由分号“;”隔开,用于之后的查找功能。图3.4 车辆信息录入实例3.3信息查找模块设计3.3.1违章信息查找界面设计违章信息查找界面由RadioGroup单选组件决定选择的方式,提供按姓名查找,按驾驶证号查找,按车牌号
34、查找三种查找方式。RadioGroup下面设置一个EditText,用于用户输入查找的关键字,最下方一个查找按钮,用于显示查找的结果。界面如下图3.5显示:图3.5查找界面3.3.2查找界面代码设计(findActivity)首先,在oncreate方法中进行控件的实例化,具体代码与之前的acitivity类似,如下:Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.find);btnFind=(Button)
35、 findViewById(R.id.btnFind);tvResult=(TextView) findViewById(R.id.tvResult);etKeyWord=(EditText) findViewById(R.id.etKeyWord);rdByName=(RadioButton) findViewById(R.id.rbByName);rdByLicense=(RadioButton) findViewById(R.id.rbByLicense);rdByNumber=(RadioButton) findViewById(R.id.rbByNumber);btnFind.set
36、OnClickListener(oclFind);在以上代码中,变量对应的意义如下表3.2所示:表3.2 findActivity变量含义表变量名称对应含义类型btnFind查找按钮ButtontvResult显示结果的地方TextViewetKeyWord用户输入的查找关键字EditTextrdByName按姓名查找选项RadioButtonrdByLicense按驾驶证号查找选项RadioButtonrdByNumber按车牌号查找选项RadioButtonoclFind查找按钮的监听器OnClickListener在btnFind的点击事件中,首先设置一些初始值:/获取存放数据的文件名F
37、ile myfile= new File(sdcard,filename);/把用户输入的关键字转换成字符串keyword=etKeyWord.getText().toString();/把显示结果的界面清零tvResult.setText();为了防止用户还未输入任何关键字就点击了查找按钮而导致程序报错,需添加:if (keyword.equals()return;由于有三种不同的查找方式:按姓名查找、按驾驶证号查找和按车牌号查找,用户通过单选框(RadioButton)来对查找的方式进行选择,系统内部需要判断用户的选择,然后再执行相应的代码,所以,可以得出之后的程序框架:if (rdByN
38、ame.isChecked()按姓名查找的代码else if (rdByLicense.isChecked()按驾驶证号查找的代码else if (rdByNumber.isChecked()按车牌号查找的代码按姓名查找的理论算法:确定程序的框架之后,我们可以对三种不同查找方式的代码进行设计,在设计查找的代码时,主要用到了indexof这个方法,该方法为:字符串A.indexof(需要查找的内容,开始查找的位置)同理,lastindexof方法为从后往前查找。在查找时,我们通过对数据库的文件进行读取,把整个数据文件存放在一个字符串中(本系统存放数据的字符为inString),然后对inStri
39、ng进行关键字查找。找到关键字的位置之后,判断关键字是否为需要查找的内容,如:按姓名查找只找姓名,其他信息的关键字若和姓名重复,不会对其造成干扰。在确认关键字与关键字的类型都匹配之后,系统会根据关键字的位置,通过之前信息录入插入的星号“*”和每一栏信息的间隔符分号“;”,确定整条违章信息的内容,然后把这整条违章信息显示在屏幕上(tvResult),并记录该条信息在整个系统中的违章。获得违章信息是,本系统使用substring方法,截取instring的子字符串,如:字符串B=字符串A.Substring(开始位置,结束位置)在获取整个字符串的长度之后,通过for循环,检索第二、第三个关键字,并
40、用同样的方法对违章信息进行判定。算法流程图如下:图3.6按姓名查询算法流程图查找的过程中,需要用到各种变量,各变量的类型和含义在下表3.3中显示:表3.3 查找点击事件变量含义表变量名称对应含义类型inString从数据文件中读取的数据字符串lengthinString的字符串长度整型positionKeyword关键字在inString中的位置整型positionEnter关键字之后回车的位置整型result含有关键字的违章信息字符串position查找过程中的指针位置整型wzName违章信息中姓名的位置整型wzLicense违章信息中驾驶证号的位置整型wzLicense1违章信息中行驶证号
41、的位置整型wzNumber违章信息中车牌号的位置整型wzType违章信息中车型的位置整型wzAddress违章信息中违章地点的位置整型wzTime违章信息中违章时间的位置整型wzClause违章信息中违章条款的位置整型wzMoney违章信息中罚款金额的位置整型wzfh违章信息中分号的位置整型所以,按姓名查找的详细设计如下:先读入数据文件FileInputStream fis= new FileInputStream(myfile);InputStreamReader isr=new InputStreamReader(fis,UTF-8);char input= new charfis.ava
42、ilable();isr.read(input);isr.close();fis.close();String inString= new String(input);再获取数据文件的长度,并将显示的文本清空Integer length = inString.length();tvResult.setText();建立for循环,position指针位置为循环标量,从0开始到length结束,步长为1for (int position =0; position=length;position+)查找关键字是否存在, 如果关键字在数据库中不存在,则positionKeyword获得的返回值即为-
43、1,return跳出点击方法,查找结果不存在。positionKeyword=inString.indexOf(keyword,position);if (positionKeyword=-1)return;查找到关键字后,positionKeyword即存放了本次循环中关键字所在的位置,通过获取关键字位置的前一个星号“*”和最后的换行,在代码中为“n”,再用截取子字符串的方式,把含有关键字的违章信息,保存到result字符串中。获取违章信息之后,让指针即循环变量position等于positionEnter(违章信息末尾的换行符),使下一次循环直接从下一条违章信息开始查找,直到for循环结束
44、。positionStar=inString.lastIndexOf(*,positionKeyword);positionEnter=inString.indexOf(n,positionKeyword);result=inString.substring(positionStar+1,positionEnter);position=positionEnter;在获取了含有关键字的违章信息result之后,该关键字不一定是我们所需要查找的关键字,如:张三可能是人名,也有可能是违章地点,车型等其他我们所不需要的信息,我们需要对result进行逐条信息提取和比对,来确定该信息是否是我们所需要的信
45、息。在查找姓名模块中,以关键字输入“张三”为例,首先获取违章信息中的“姓名:”的位置。在“姓名:”和紧接着的一个分号“;”中间的内容,便是违章信息的姓名内容。同样的,用截取子字符串的方法获取违章信息中的姓名,再与输入的关键字“张三”,进行比对,若相同,则依次输出接下来的位置信息,若不同,则“张三”关键字不是姓名而且其他的内容,用continue结束本次循环,查找下一个目标。具体到代码中:wzName=result.indexOf(姓名:,0);wzfh=result.indexOf(;,wzName);String name=result.substring(wzName+3,wzfh); i
46、f(name.equals(keyword)tvResult.append(result.substring(wzName,wzfh)+n);elsecontinue;通过if语句判断之前截图的result是否为应当输出的信息,如果不是,后面的代码不执行,如果判断通过,后面的输出代码正常执行,紧接着的输出代码如下:/显示驾驶证号wzLicense=result.indexOf(驾驶证号:,wzfh);wzfh=result.indexOf(;,wzLicense);tvResult.append(result.substring(wzLicense,wzfh)+n);/显示行驶证号wzLice
47、nse1=result.indexOf(行驶证号:,wzfh);wzfh=result.indexOf(;,wzLicense1);tvResult.append(result.substring(wzLicense1,wzfh)+n);/显示车牌号wzNumber=result.indexOf(车牌号:,wzfh);wzfh=result.indexOf(;,wzNumber);tvResult.append(result.substring(wzNumber,wzfh)+n);/显示车型wzType=result.indexOf(车型:,wzfh);wzfh=result.indexOf(
48、;,wzType);tvResult.append(result.substring(wzType,wzfh)+n);/显示违章地点wzAddress=result.indexOf(违章地点:,wzfh);wzfh=result.indexOf(;,wzAddress);tvResult.append(result.substring(wzAddress,wzfh)+n);/显示违章时间wzTime=result.indexOf(违章时间:,wzfh);wzfh=result.indexOf(;,wzTime);tvResult.append(result.substring(wzTime,w
49、zfh)+n);/显示违章条款wzClause=result.indexOf(违章条款:,wzfh);wzfh=result.indexOf(;,wzClause);tvResult.append(result.substring(wzClause,wzfh)+n);/显示罚款金额wzMoney=result.indexOf(罚款金额:,wzfh);wzfh=result.indexOf(;,wzMoney);tvResult.append(result.substring(wzMoney,wzfh)+n+n);以上代码多次利用wzfh这个变量,依次确定每一个分号的位置,加强的变量的利用率,不
50、需要多次定义同一类型的变量,而且代码结构清晰,方便调试。之后的按驾驶证号查找和按车牌号查找的代码与按姓名查找类似,不同之处在于:按姓名查找的姓名是第一项属性,判定姓名是否是关键字是第一项,尚未显示其他内容。而按驾驶证号和按车牌号查找时,判定关键字是否为车牌号和驾驶证号时,姓名等之前的属性已经输出在屏幕上,牵涉到wzfh这个变量的值难以找回,所以要做特殊处理。在这里引入back这个字符串和positionlast记录之前已经输出的字符串末尾的位置,即字符串的长度,以返回之前的值。具体代码如下:以按驾驶证号查找为例,按车牌号查找同理positionlast=tvResult.getText().t
51、oString().length();/显示驾驶证号wzLicense=result.indexOf(驾驶证号:,wzfh); wzfh=result.indexOf(;,wzLicense);String license=result.substring(wzLicense+5,wzfh);if(license.equals(keyword)tvResult.append(result.substring(wzLicense,wzfh)+n);else String back=tvResult.getText().toString().substring(0,positionlast); t
52、vResult.setText(back);continue;通过这种手段,当驾驶证号或者车牌号与关键字并不对应时,可以通过返回该次循环之前的状态,来清除额外的信息。这样,查询的结果就不会有多余的结果。同样以“张三”为例,在违章信息查询界面,选择按姓名查询,在文本框内输入“张三”,再次点击查找,便可以得出如图3.7所示的结果:图3.7 查询的结果3.4违章数据分析模块3.4.1 需要分析的数据交通管理人员在执法的过程中,发现的违章行为,有可能是之前有过先例的。在对有违章前科的驾驶员和车辆进行处理时,应加大惩罚和教育力度。而交通管理人员可以依靠本系统,来得知这一次违章行为是第几次发生,是否是初犯
53、等等。系统可以通过对违章数据库的计算,得知累计违章记录最多的驾驶员和违章的多发地带,并把结果显示在违章数据统计分析的屏幕当中,为交通管理人员的执法提供了便利。基于以上几点考虑,本系统违章分析模块设计的内容包括统计违章次数最多的车牌号(不统计驾驶员姓名的原因是考虑到重名的情况不好分析),以及违章的多发地带。系统将把统计出的结果前几名一次显示在违章数据分析模块的屏幕上。3.4.2 违章数据分析模块的界面设计之前已经得出,违章数据界面仅仅需要显示系统计算的结果违章次数最多的车辆和违章的多发地点。所以系统界面并不需设置其他空间,需要设置一个textview,用来显示违章数据的结果即可。所以,数据分析页面在设计可以放置一个按钮并且设置了事件监听器,通过代码计算,把统计后的结果显示到屏幕当中。界面如下图3.6所示:图3.6违章数据统计分析界面3.4.3违章数据分析的算法思路统计违章次数最多的车辆(通过车牌号)的算法思路 通过交通管理人员查处违章事件,并通过之前的违章信息录入系统录入违章信息并保存到数据库当中,手机内部存储已经以txt文档的形式把所有的违章信息保存下来。要对违章信息进行统计,必须先读取数据库,即存储数据的txt文档。用之前类型的读取文档中的文本的方法,把读取出的内容保
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年银行从业人员综合考试题含反洗钱知识与应用能力题目
- 2026年电子竞技运营与推广专业技能鉴定题库
- 2026年人力资源管理师考试试题集及解析
- 2026年企业法务管理人员实务处理及决策能力测试
- 2026年新一代人工智能算法及应用创新挑战赛试题
- 2026年计算机软件编程与软件开发实践题库
- 2026年新闻传播实务及新闻采访笔试题目
- 2026年市场营销消费者行为分析专项练习题
- 2026年法律职业道德与职业素养考核试题集
- 2026年证券从业资格认证考试金融市场基础知识模拟题
- 上海市历年中考语文现代文之议论文阅读6篇(含答案)(2003-2022)
- 烟气脱硝装置安装单位工程质量验收表
- AQ 1046-2007 地勘时期煤层瓦斯含量测定方法(正式版)
- 软装配饰合同范本
- 苏教版三年级下册数学计算能手1000题带答案
- 新媒体艺术的发展历程及艺术特征
- 依法行医教学课件
- 《日语零基础学习》课件
- 讲课学生数学学习成就
- 西葫芦栽培技术要点
- 高中学生学籍表模板(范本)
评论
0/150
提交评论