课程设计(论文)基于Android开发铁路查询小助手.doc

上传人:laozhun 文档编号:2394476 上传时间:2023-02-17 格式:DOC 页数:32 大小:469KB
返回 下载 相关 举报
课程设计(论文)基于Android开发铁路查询小助手.doc_第1页
第1页 / 共32页
课程设计(论文)基于Android开发铁路查询小助手.doc_第2页
第2页 / 共32页
课程设计(论文)基于Android开发铁路查询小助手.doc_第3页
第3页 / 共32页
课程设计(论文)基于Android开发铁路查询小助手.doc_第4页
第4页 / 共32页
课程设计(论文)基于Android开发铁路查询小助手.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《课程设计(论文)基于Android开发铁路查询小助手.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于Android开发铁路查询小助手.doc(32页珍藏版)》请在三一办公上搜索。

1、摘 要出行一直是人们日常生活中不可或缺的一部分。而现在的交通状态还不够完好,整个交通查询体系庞大复杂。人们的出行却是无时无刻的,人们需要随时获取出行信息,为自己的形成进行合理的安排,其中优先考虑的就是交通工具。本课题设计的基于Android的铁路小助手可以帮助人们解决这些生活小问题。关键词:Android ;铁路查询;SQLite目 录1 课程设计目的12 课程设计要求13 相关知识24 课程设计分析34.1 技术可行性分析34.2 操作可行性分析34.3 经济可行性分析35 程序代码45.1 开发环境和目标平台45.1.1 开发环境45.1.2 目标平台45.2 数据库设计45.3.1 主体

2、框架65.3.2 欢迎界面75.3.3 主菜单模块75.3.4 主要功能模块85.3.5 附加功能模块125.3.6 方法模块196 运行结果与分析276.1 运行结果276.2 分析297 结论308 参考文献311 课程设计目的中国地域辽阔,铁路线路纵横交错,给人们带来了方便。但随着火车的客流量不断增长,越来越多的弊端暴露在人们面前:l 火车车次查询不方便。l 车次变动大。l 不能随时随地查询等。这些状况已经与人们的快节奏生活方式格格不入,急切需要一个方便快捷的查询软件。本次设计的目的将通过开发这个查询软件,帮助用户解决火车车次查询问题。2 课程设计要求本系统主要为用户提供一个专属于自己的

3、火车时刻表查询功能,用户在自己手机上安装此软件,根据自己的需求自行添加相关的列车信息,达到真正拥有一个专属于自己的、实用的火车查询系统。其功能主要包括以下几点。l 站站查询,提供一个站到达另一站的所有车次的查询,包括发车时间和到站时间。l 中转站查询,提供从起点站到达中转站,然后再从中转站到达终点站的所有车次,以及车次相关信息的查询。l 车次查询,提供该车次相关信息的查询。起点站及发车时间,终点站及到站时间。l 车站查询,提供经过该车站所有车次的查询。l 车次添加,提供某一列车的添加功能,只要提供起点站、终点站和列车类型等信息,即可实现添加车次的功能。l 车站添加,提供添加车站的功能,如果新增

4、了某一个车站,则需提供其站名和其名字的简称。l 关系添加,该功能提供用户添加某列车经过某个站的相关信息,需要提供到站时间,发车时间等信息。3 相关知识Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Goog

5、le以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。 4 课程设计分析4.1 技术可行性分析本系统采用Java JDK、Eclipse、Google Android SDK、A

6、DT、SQLite进行开发。Android是一个开放性移动开发平台,它为开发人员提供了大量的使用库和工具 。它使得开发人员可以快速地创建自己的应用程序。该系统使用的SQLite,是 目前最流行的开源嵌入式数据库,易于维护,简单操纵。Android的运用程序可以在其虚拟机上运行,这给开发工作带来了极大的方便。另外,Java语言是可以编写跨平台应用软件的面向对象的编程设计语言。因此,这样的开发平台保证了系统设计工作在技术上的可行性。4.2 操作可行性分析本系统是为使用安卓智能手机的用户开发的,用户还可以根据自己的需求在此软件上自行添加相关的列车信息。其次,软件界面简单清洁,美观易懂,方便用户查询列

7、车信息。4.3 经济可行性分析成本:系统开发仅使用电脑一台,程序开发软件可免费使用,系统开发成本低。效益:该软件可以供安卓手机用户使用,软件布局中有设置动画图片,可以考虑设立广告模块,具有不错的商业效应。 5 程序代码5.1 开发环境和目标平台5.1.1 开发环境系统:Windows 7 x64JDK:jdk-8u65-windows-x64Android SDK:Android 4.4.2(API 19)、Android 2.2(API 8)开发平台Eclipse J2EE Mars 及其ADT。5.1.2 目标平台手机平台为Android 2.2,向下兼容Android 2.1、Andro

8、id 2.0、Android 1.6。虚拟机配置:Device:4.7in WXGACPUABI:ARM (armeabi)Target:Android 2.2(API level 8)Skin:HVGARAM:512MROM:30M5.2 数据库设计(1) 列车表:用于记录列车的信息,其中包括列车名、始发站、终点站,以及列车在数据库中的编号等,如表5-2-1所示。表5-2-1列车表字段名称数据类型字段大小是否主键是否为空说明TidNUMInt YesNoIDTname文本20NoNoNameTstartstation文本20NoNo始发站Tterminus文本20NoNo终点站Ttype文本

9、20NoNo列车类型建立该表的SQL语句如下:Creat table if not exists train(Tid integer primary key,Tname char(20), Tstartstation char(20),Tterminus char(20),Ttype char(20));(2)车站表:该表用来记录车站的信息,包括车站名和车站简称,具体如表5-2-2所示。表5-2-2车站表字段名称数据类型字段大小是否主键是否为空说明SidNUMInt YesNoIDSname文本20NoNoNameSpy文本20NoNo车站简称建立该表的SQL语句如下:Creat table

10、if not exists station(Sid integer primary key,Sname char(20), Spy char(20));(3)关系表:此表用来记录列车与车站关系,即某列车与其所经过的车站的信息,具体如表5-2-3所示。表5-2-3关系表字段名称数据类型字段大小是否主键是否为空说明RidNUMInt YesNo关系IDSidNUMIntNoNo车站IDTidNUMIntNoNo列车IDRarrivetime文本20NoYes到站时间Rstarttime文本20NoYes发车时间建立该表的SQL语句如下:Creat table if not exists relat

11、ion(Rid integer primary key,Sid integer, Tid integer,Rarrivetime char(20),Rstarttime char(20));5.3 主类LCCXActivity5.3.1 主体框架enum WhichView MAIN_MENU,ZZCX_VIEW,CCCX_VIEW,CZCCCX_VIEW,LIST_VIEW,PASSSTATION_VIEW,CCTJ_VIEW,CZTJ_VIEW,GXTJ_VIEW,FJGN_VIEW,WELCOME_VIEW, ABOUT_VIEW,HELP_VIEWpublic class LCCXAc

12、tivity extends Activity WelcomeView wv;/进入欢迎界面WhichView curr;/当前枚举值static int flag;/设置页面的标志位Stringmsgg=new String;/声明引用String s1;String s2;Handler hd=new Handler()/声明消息处理器Overridepublic void handleMessage(Message msg) switch(msg.what) case 0:goToWelcomeView();break; case 1:goToMainMenu(); break; cas

13、e 2:setContentView(R.layout.about); curr=WhichView.ABOUT_VIEW; break; case 3: setContentView(R.layout.help); curr=WhichView.HELP_VIEW; break; ;Override public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/设置为全屏 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().

14、setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCREEN);/设置横屏模式setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);CreatTable.creattable();/建表iniTLisit();/初始化数组this.hd.sendEmptyMessage(0);/发送消息进入欢迎界面 5.3.2 欢迎界面public void goToWelcomeView() if(

15、wv=null)/如果该对象没创建则创建 wv=new WelcomeView(this); setContentView(wv); curr=WhichView.WELCOME_VIEW;/标识当前所在界面 5.3.3 主菜单模块public void goToMainMenu()setContentView(R.layout.main);curr=WhichView.MAIN_MENU;/拿到主菜单中个按钮的引用ImageButton ibzzcx=(ImageButton)findViewById(R.id.ibzzcx);ImageButton ibcccx=(ImageButton)

16、findViewById(R.id.ibcccx);ImageButton ibczcccx=(ImageButton)findViewById(R.id.ibczcccx);ImageButton ibfjgn=(ImageButton)findViewById(R.id.ibfjgn);ImageButton ibabout=(ImageButton)findViewById(R.id.about_button); ImageButton ibhelp=(ImageButton)findViewById(R.id.help_button);ibabout.setOnClickListene

17、r(/按钮监听new OnClickListener()public void onClick(View v) hd.sendEmptyMessage(3);/发消息进入关于界面 );ibhelp.setOnClickListener(/帮助查询的监听 new OnClickListener()public void onClick(View v) hd.sendEmptyMessage(2);/发消息进入帮助界面 );ibzzcx.setOnClickListener(/站站查询按钮的监听new OnClickListener() public void onClick(View v) go

18、TozzcxView();/进入站站查询模块 );ibcccx.setOnClickListener(/车次查询按钮的监听 new OnClickListener()public void onClick(View v) goTocccxView();/进入车次查询模块 );ibczcccx.setOnClickListener(/车站所有车次查询 new OnClickListener()public void onClick(View v) goToczcccxView();/进入车站查询模块 ); ibfjgn.setOnClickListener(/附加功能按钮的监听 new OnCl

19、ickListener()public void onClick(View v) goTofjgnView();/进入附加功能模块 ); 5.3.4 主要功能模块其中包含站站查询模块、车次查询模块、车站查询模块三部分。1)站站查询: public void goTozzcxView() setContentView(R.layout.zzcx); curr=WhichView.ZZCX_VIEW; flag=0;/标志位 Button bcx=(Button) findViewById(R.id.zzcxbt);/查询按钮 Button bfh=(Button) findViewById(R.

20、id.zzcxfhbt);/返回按钮 iniTLisitarray(R.id.EditText01);/为各个车站输入文本框添加适配器 iniTLisitarray(R.id.zzcxzzz); iniTLisitarray(R.id.zzcxzdz); final CheckBox zzzcx=(CheckBox)findViewById(R.id.zzcxzzzbt); bcx.setOnClickListener (/为查询按钮添加监听new OnClickListener()Overridepublic void onClick(View v) if(!isLegal()return;

21、AutoCompleteTextView zzcx_cfz = (AutoCompleteTextView) findViewById(R.id.EditText01);/出发站AutoCompleteTextView zzcx_zzz = (AutoCompleteTextView) findViewById(R.id.zzcxzzz);/中转站AutoCompleteTextView zzcx_zdz= (AutoCompleteTextView) findViewById(R.id.zzcxzdz);/终点站String start=zzcx_cfz.getText().toString

22、().trim();String end =zzcx_zdz.getText().toString().trim();String between=zzcx_zzz.getText().toString().trim();VectorVector temp;if(zzzcx.isChecked()=true) temp= LoadUtil.Zjzquery(start, between, end);/中转查询 if(temp.size()=0)Toast.makeText(LCCXActivity.this, 没有你所查找的中转站路线!, Toast.LENGTH_SHORT).show();

23、zzcx_cfz.setText();zzcx_zzz.setText();zzcx_zdz.setText();return;elsetemp= LoadUtil.getSameVector(start, end);if(temp.size()=0)Toast.makeText(LCCXActivity.this, 对不起,没有相关的列车信息!, Toast.LENGTH_SHORT).show();zzcx_cfz.setText();zzcx_zzz.setText();zzcx_zdz.setText();return;zzcx_cfz=null;zzcx_zdz=null;zzcx_

24、zzz=null;String msgInfo=new Stringtemp.elementAt(0).size()temp.size();/新建和结果向量对应的数组for(int i=0;itemp.size();i+)/将结果向量中的数据导入数组for(int j=0;jtemp.elementAt(0).size();j+)msgInfoji=(String)temp.get(i).get(j);goToListView(msgInfo);/切换到查询结果显示界面ListView界面 ); bfh.setOnClickListener (/为返回按钮添加监听new OnClickList

25、ener()Overridepublic void onClick(View v) goToMainMenu();/返回到主菜单界面 ); 2) 车次查询: public void goTocccxView() setContentView(R.layout.cccx);/切换到车次查询界面 curr=WhichView.CCCX_VIEW;/标识界面 flag=1; Button bcx=(Button) findViewById(R.id.cccx_cx); Button bfh=(Button) findViewById(R.id.cccx_fh); bcx.setOnClickList

26、ener (new OnClickListener()Overridepublic void onClick(View v) if(!isLegal()/如果各个输入框不满足规则则返回return;AutoCompleteTextView cccx_cc= (AutoCompleteTextView) findViewById(R.id.cccxcc);/得到车次输入框的引用 String cccxcc=cccx_cc.getText().toString().trim(); VectorVector temp=LoadUtil.trainSearch(cccxcc);/调用工具函数查询得到结

27、果集 cccx_cc=null; if(temp.size()=0)Toast.makeText(LCCXActivity.this, 没有相关信息!, Toast.LENGTH_SHORT).show();return; String msgInfo=new Stringtemp.elementAt(0).size()temp.size();/新建对应于向量的数组for(int i=0;itemp.size();i+)for(int j=0;jtemp.elementAt(i).size();j+)msgInfoji=(String)temp.get(i).get(j);goToListVi

28、ew(msgInfo);/切换到结果显示界面ListView界面 ); bfh.setOnClickListener(/为返回按钮添加监听new OnClickListener()Overridepublic void onClick(View v)goToMainMenu();/返回到菜单界面 ); 3) 车站查询: public void goToczcccxView() setContentView(R.layout.czcx);/切换到车站查询界面 curr=WhichView.CZCCCX_VIEW;/标识界面 flag=2;/标识所在界面为车次查询界面 Button bcx=(Bu

29、tton) findViewById(R.id.czcx_cx);/拿到查询按钮的引用 Button bfh=(Button) findViewById(R.id.czcx_fh);/拿到返回按钮的引用 iniTLisitarray(R.id.czcxwb);/为车站文本框添加适配器来完成文本输入的提示功能 bcx.setOnClickListener(/为查询按钮添加监听new OnClickListener()Overridepublic void onClick(View v) if(!isLegal() /如果某个文本框不合规则,则返回return;AutoCompleteTextVi

30、ew czcx_czzm= (AutoCompleteTextView) findViewById(R.id.czcxwb);/拿到车站输入框的引用String czcxczzm=czcx_czzm.getText().toString().trim(); VectorVector temp= stationSearch(czcxczzm);/调用工具函数查询得到结果向量 czcx_czzm=null; if(temp.size()=0)Toast.makeText(LCCXActivity.this, 没有相关信息!, Toast.LENGTH_SHORT).show();return; S

31、tring msgInfo=new Stringtemp.elementAt(0).size()temp.size();/否则创建对应于结果向量的数组for(int i=0;itemp.size();i+)for(int j=0;jtemp.elementAt(0).size();j+)msgInfoji=(String)temp.get(i).get(j);goToListView(msgInfo); ); bfh.setOnClickListener (new OnClickListener()Overridepublic void onClick(View v) goToMainMenu

32、(); ); 5.3.5 附加功能模块其中包含附加功能主模块、车次添加模块、车站添加模块、关系添加模块4部分。1) 主模块 :public void goTofjgnView() setContentView(R.layout.fjgnmenu);/切换到附加功能界面 curr=WhichView.FJGN_VIEW;/标识当前所在界面为附加功能界面 ImageButton ibcctj=(ImageButton)findViewById(R.id.ibcctj);/拿到车次添加按钮引用 ImageButton ibcztj=(ImageButton)findViewById(R.id.ibc

33、ztj);/拿到车站添加按钮引用 ImageButton ibgxtj=(ImageButton)findViewById(R.id.ibgxtj);/拿到关系添加按钮的引用 ibcctj.setOnClickListener(/车次添加按钮的监听 new OnClickListener() public void onClick(View v) goTocctjView();/去车次添加界面 ); ibcztj.setOnClickListener(/车站添加按钮的监听 new OnClickListener()public void onClick(View v) goTocztjView

34、();/切换到车站添加界面 ); ibgxtj.setOnClickListener (/关系添加按钮的监听 new OnClickListener()public void onClick(View v) goTogxtjView(); ); 2) 附加功能-车次添加:public void goTocctjView() setContentView(R.layout.cctj);/切换界面 curr=WhichView.CCTJ_VIEW;/标识界面 Button bcctjtj=(Button)findViewById(R.id.cctj_tj);/拿到添加按钮的一引用 Button b

35、cctjfh=(Button)findViewById(R.id.cctj_fh);/拿到返回按钮的引用 iniTLisitarray(R.id.cctj_sfz);/为始发站和终点站文本框添加适配器 iniTLisitarray(R.id.cctj_zdz); final int tid=LoadUtil.getInsertId(train,Tid)+1;/拿到此时车站表中TID列的最大ID,然后加1得出要插入此车次的ID。 bcctjtj.setOnClickListener(/为添加按钮添加监听new OnClickListener()Overridepublic void onClic

36、k(View v) if(!isLegal()/判断输入框是否符合规则return;AutoCompleteTextView cctjcnm=(AutoCompleteTextView)findViewById(R.id.cctj_cm);/拿到个输入框的引用 AutoCompleteTextView cctjclx=(AutoCompleteTextView)findViewById(R.id.cctj_lclx); AutoCompleteTextView cctjcsf=(AutoCompleteTextView)findViewById(R.id.cctj_sfz); AutoComp

37、leteTextView cctjczd=(AutoCompleteTextView)findViewById(R.id.cctj_zdz); String cnm=cctjcnm.getText().toString().trim(); String clx=cctjclx.getText().toString().trim(); String csf=cctjcsf.getText().toString().trim(); String czd=cctjczd.getText().toString().trim(); String sql=select * from train where

38、 Tname= +cnm+;VectorVector ss=query(sql);if(ss.size()0)Toast.makeText(LCCXActivity.this, 对不起,已经有了此车次!, Toast.LENGTH_SHORT).show();return; sql =select Sid from station where Sname=+csf+;if(query(sql).size()=0)Toast.makeText(LCCXActivity.this, 对不起,该始发站不存在!, Toast.LENGTH_SHORT).show();return;sql=select

39、 Sid from station where Sname=+czd+;if(query(sql).size()=0)Toast.makeText(LCCXActivity.this, 对不起,该终点站不存在!, Toast.LENGTH_SHORT).show();return;sql=insert into train values( +tid +, +cnm+, +csf + +, +czd +, +clx +);/添加关系if(!insert(sql)Toast.makeText(LCCXActivity.this, 对不起,添加失败!, Toast.LENGTH_SHORT).show();elseToast.makeText(LCCXActivity.this, 恭喜你,添加成功!, Toast.LENGTH_SHORT).show(); ); bcctjfh.setOnClickListener (new OnClickListener()Overri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号