课程设计(论文)-基于Android开发铁路查询小助手.doc_第1页
课程设计(论文)-基于Android开发铁路查询小助手.doc_第2页
课程设计(论文)-基于Android开发铁路查询小助手.doc_第3页
课程设计(论文)-基于Android开发铁路查询小助手.doc_第4页
课程设计(论文)-基于Android开发铁路查询小助手.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

沈阳理工大学课程设计专用纸 no29摘 要出行一直是人们日常生活中不可或缺的一部分。而现在的交通状态还不够完好,整个交通查询体系庞大复杂。人们的出行却是无时无刻的,人们需要随时获取出行信息,为自己的形成进行合理的安排,其中优先考虑的就是交通工具。本课题设计的基于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 主体框架65.3.2 欢迎界面75.3.3 主菜单模块75.3.4 主要功能模块85.3.5 附加功能模块125.3.6 方法模块196 运行结果与分析276.1 运行结果276.2 分析297 结论308 参考文献31沈阳理工大学1 课程设计目的中国地域辽阔,铁路线路纵横交错,给人们带来了方便。但随着火车的客流量不断增长,越来越多的弊端暴露在人们面前:l 火车车次查询不方便。l 车次变动大。l 不能随时随地查询等。这些状况已经与人们的快节奏生活方式格格不入,急切需要一个方便快捷的查询软件。本次设计的目的将通过开发这个查询软件,帮助用户解决火车车次查询问题。2 课程设计要求本系统主要为用户提供一个专属于自己的火车时刻表查询功能,用户在自己手机上安装此软件,根据自己的需求自行添加相关的列车信息,达到真正拥有一个专属于自己的、实用的火车查询系统。其功能主要包括以下几点。l 站站查询,提供一个站到达另一站的所有车次的查询,包括发车时间和到站时间。l 中转站查询,提供从起点站到达中转站,然后再从中转站到达终点站的所有车次,以及车次相关信息的查询。l 车次查询,提供该车次相关信息的查询。起点站及发车时间,终点站及到站时间。l 车站查询,提供经过该车站所有车次的查询。l 车次添加,提供某一列车的添加功能,只要提供起点站、终点站和列车类型等信息,即可实现添加车次的功能。l 车站添加,提供添加车站的功能,如果新增了某一个车站,则需提供其站名和其名字的简称。l 关系添加,该功能提供用户添加某列车经过某个站的相关信息,需要提供到站时间,发车时间等信息。3 相关知识android是一种基于linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。android操作系统最初由andy rubin开发,主要支持手机。2005年8月由google收购注资。2007年11月,google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良android系统。随后google以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、adt、sqlite进行开发。android是一个开放性移动开发平台,它为开发人员提供了大量的使用库和工具 。它使得开发人员可以快速地创建自己的应用程序。该系统使用的sqlite,是 目前最流行的开源嵌入式数据库,易于维护,简单操纵。android的运用程序可以在其虚拟机上运行,这给开发工作带来了极大的方便。另外,java语言是可以编写跨平台应用软件的面向对象的编程设计语言。因此,这样的开发平台保证了系统设计工作在技术上的可行性。4.2 操作可行性分析本系统是为使用安卓智能手机的用户开发的,用户还可以根据自己的需求在此软件上自行添加相关的列车信息。其次,软件界面简单清洁,美观易懂,方便用户查询列车信息。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、android 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文本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 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 relation(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 lccxactivity 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; case 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().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(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)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.setonclicklistener(/按钮监听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) gotozzcxview();/进入站站查询模块 );ibcccx.setonclicklistener(/车次查询按钮的监听 new onclicklistener()public void onclick(view v) gotocccxview();/进入车次查询模块 );ibczcccx.setonclicklistener(/车站所有车次查询 new onclicklistener()public void onclick(view v) gotoczcccxview();/进入车站查询模块 ); ibfjgn.setonclicklistener(/附加功能按钮的监听 new onclicklistener()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.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;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().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();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_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 onclicklistener()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.setonclicklistener (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);/调用工具函数查询得到结果集 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);gotolistview(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=(button) 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;autocompletetextview 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; 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); ); bfh.setonclicklistener (new onclicklistener()overridepublic void onclick(view v) gotomainmenu(); ); 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.ibcztj);/拿到车站添加按钮引用 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();/切换到车站添加界面 ); 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 bcctjfh=(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 onclick(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); autocompletetextview 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 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 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()overridepublic void onclick(view v) gotofjgnview();/返回到附加功能界面 ); 3) 附加功能-车站添加:public void gotocztjview() setcontentview(r.layout.cztj);/切换界面 curr=whichview.cztj_view;/标识界面 button bcztjtj=(button)findviewbyid(r.id.cztj_tj);/拿到添加按钮的引用 button bcztjfh=(button)findviewbyid(r.id.cztj_fh);/拿到返回按钮的引用 final int sid=loadutil.getinsertid(station,sid)+1;/查出sid列中最大的id,加1得到此时需要插入的车站的id bcztjtj.setonclicklistener(/为添加按钮添加监听new onclicklistener()overridepublic void onclick(view v) if(!islegal()return;edittext cztjmc=(edittext)findviewbyid(r.id.et_cztj_czmc);/得到个输入框中的引用edittext cztjjc=(edittext)findviewbyid(r.id.et_cztj_czjc);string cnm=cztjmc.gettext().tostring().trim();/得到对应的文本string clx=cztjjc.gettext().tostring().trim();if(!clx.matches(a-za-z+) toast.maketext(lccxactivity.this, 对不起,简称只能为字母!, toast.length_short).show(); return;string sql=select * from station where sname= +cnm+;vectorvector ss=query(sql);/查看该车站是否已经存在if(ss.size()0)toast.maketext(lccxactivity.this, 对不起,已经有了此车站!, toast.length_short).show();return;sql=insert into station values( +sid +, +cnm +, +clx +);if(!insert(sql)toast.maketext(lccxactivity.this, 对不起,添加失败!, toast.length_short).show();return;elseinitlisit();toast.maketext(lccxactivity.this, 恭喜你,添加成功!, toast.length_short).show(); ); bcztjfh.setonclicklistener (new onclicklistener()overridepublic void onclick(view v) gotofjgnview();/返回到附加功能界面 ); 4) 附加功能-关系添加:public void gotogxtjview() setcontentview(r.layout.gxtj);/切换界面 curr=whichview.gxtj_view;/标识界面 button bgxtjtj=(button)findviewbyid(r.id.gxtj_tj);/拿到添加按钮的引用 button bgxtjfh=(button)findviewbyid(r.id.gxtj_fh);/拿到返回按钮的引用 initlisitarray(r.id.et_gxtj_zm);/为车站名字添加适配器 bgxtjtj.setonclicklistener(/为添加按钮添加监听 new onclicklistener()overridepublic void onclick(view v) edittext gxtjcnm=(edittext)findviewbyid(r.id.et_gxtj_cm);/拿到车名输入框的引用autocompletetextview gxtjclx=(autocompletetextview)findviewbyid(r.id.et_gxtj_zm);/拿到站名输入框的引用edittext gxtjcsf=(edittext)findviewbyid(r.id.et_gxtj_dzsj);/拿到到站时间输入框的引用edittext gxtjczd=(edittext)findviewbyid(r.id.et_gxtj_kcsj);/拿到发车时间输入框的引用string cnm=gxtjcnm.gettext().tostring().trim();/得到对应的文本信息string znm=gxtjclx.gettext().tostring().trim();string dct=gxtjcsf.gettext().tostring().trim();string fct=gxtjczd.gettext().tostring().trim();int rid=loadutil.getinsertid(relation,

温馨提示

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

评论

0/150

提交评论