




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安阳工学院计算机科学与工程学院JAVA程序设计课程综合项目报告项目题目:基于Android平台的手机应用软件设计与实现专业班级:计算机科学与技术(信息技术)11-1学生姓名:吕鹏学生学号:201103010042指导教师姓名:许研 2013年12月摘 要随着IT技术的发展,移动开发已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在移动开发中,Android开发近些年来突飞猛进的发展,在智能手机领域中的市场份额以及超过80%。同样,基于安卓平台的手机应用开发也达到前所未有的高度,各种安卓手机应用软件竞相出现。本次的JAVA课程设计将基于安卓的平台,因为安卓开发主要基于JAVA语言和XML语言。本次所做的手机应用软件,可实现系统的登录、计算器、打电话、发短信、上网等简单功能实现。在此系统的实现过程中不仅提高了JAVA语言编程,而且加入了Android的成分,提高了软件设计的兴趣性。关键词: 手机应用软件开发,Java程序设计语言,Android开发。目录摘 要2第1章 系统目标4第2章 系统功能介绍42.1系统功能总框图52.2 模块功能介绍52.2.1 登录模块功能介绍52.2.2 等待模块功能介绍62.2.3系统主界面模块功能介绍72.2.4短信和拨号模块功能介绍72.2.5计算器模块功能介绍82.2.6网上冲浪模块功能介绍9第三章 系统功能实现103.1 系统登录模块设计103.1.1 登录框布局设计103.1.2 登录对话框设计123.2 等待模块设计143.3 系统主界面模块设计153.3.1 主界面XML布局设计153.3.2 主界面背景图片设计173.3.3 主界面功能实现设计173.4 短信和拨号模块设计193.4.1短信功能实现设计193.4.2 拨号功能实现设计213.5 计算器模块设计213.5.1 计算器界面设计213.5.2 计算器功能实现设计213.6 网上冲浪模块设计233.6.1 网上冲浪模块XML布局设计233.6.2 网上冲浪功能设计24第四章 系统设计总结27参考文献28第1章 系统目标 实现简单的手机界面操作,包括密码登陆,多个Activity的界面切换和调用,包括等待界面、主界面、发短信界面、拨号界面、计算器界面、音乐播放器、视频播放器、网上冲浪等界面。实现手机界面的一般操作。在此过程中,会熟练掌握Action事件,按钮事件、事件驱动程序、窗口设计。在布局方面,将采用xml语言和java语言混合布局。现将登录界面截图如下: 图1-1 登录界面和主界面在登录界面输入正确密码后,进入等待界面十秒等待后,进入系统主界面,点击ImageButton按钮进入各自的功能实现界面,实现各自的具体操作。第2章 系统功能介绍2.1系统功能总框图 图书馆管理系统功能总框图,如图2-1所示。图2-1 系统功能框架图2.2 模块功能介绍2.2.1 登录模块功能介绍此模块主要采用java语言实现,使用AlertDialog.builder类实现登录对话框。利用此类的方法进行实现登录对话框的标题以及内容。输入登录名和密码后即可检测,密码或者登录名输入错误后就后退出程序,然后重新登录。输入错误后,可以单击“重置”按钮就行清空密码或者登录名,然后重新输入密码和用户名。由于知识有限,本此登录设计采用固定密码和用户名,是本次课程设计的一个不小的遗憾!图2-2 系统登录界面2.2.2 等待模块功能介绍 此模块的设计目的是为了使用Splash Activity窗口设计而特意添加的功能,主要内容包括个人信息介绍。此界面采用RelativeLayout和TableLayout布局实现手机窗口。在此界面使用Runnable类实现了10秒钟的等待时间,以便于进行信息的阅读,十秒过后,界面自动切换到系统主界面,当前界面关闭。图2-3 Splash界面2.2.3系统主界面模块功能介绍 系统主界面采用XML语言进行手机界面的布局,通过添加多个ImageButton进行事件驱动设计。包括发短信、打电话、上网、计算器、音乐播放器(未实现)和视频播放器(未实现)。通过单击相应的按钮,可以跳转到想用的功能界面。图2-4 系统主界面2.2.4短信和拨号模块功能介绍短息和拨号两个界面的界面设计采用XML语言实现,而具体功能采用语言实现。在发短息界面,输入手机号码和短息内容,即可直接发信要发送的对象。在拨号界面,输入手机号即可进行直接拨号,另外,也可单击“间接拨号按钮”调用手机系统拨号程序进行拨号。此两项功能实现较为简单,没有使用价值,只有学习参考价值。图2-4 短信和拨号界面2.2.计算器模块功能介绍计算器模块是本次课程设计中最复杂的部分,计算器模块同样采用上述布局方法和实现方法,可实现普通数据运算和复杂的科学运算以及三角函数的运算。在计算器中添加了智能提示按钮,可对计算器按键进行智能提示,用户可以知道复杂的按钮的具体操作,提高计算器的可行性和实用性。图2- 计算器界面2.2.6网上冲浪模块功能介绍 网上冲浪界面是本次课程设计最有使用的一个方面,通过ImageButton,添加事件处理程序,可以快速访问互联网。主要连接一些自己比较常用的网站,比如安工贴吧、安阳工学院教务管理系统、计算机科学与信息工程学院首页、百度首页、新浪微博和我的QQ空间等。通过这些可以快速进入我经常访问的网页。但此设计没有做成自己的浏览器,而是调用系统浏览器,是这次程序设计的不足之处。图2- 网上冲浪界面第3章 系统功能实现3.1 系统登录模块设计 软件应用系统应该有自己的系统登录管理,这也是出于系统安全方面的考虑,设置用户名和密码登录,就必须设置一个系统登录功能模块。系统登录采用的是固定密码和用户名登录,是本课程设计一个遗憾,缺乏使用价值。3.1.1 登录框布局设计使用XML程序设计创建login.activity.xml文件,使用相对布局,加入EditText控件和TextView控件,实现登录框和密码框的设计。其代码如下: 布局结果如图所示:图3.1 登录框布局3.1.2 登录对话框设计登录对话框的设计与实现采用JAVA语言实现,实例化AlertDialog.Builder类,此类用作创建手机界面的对话框,实例View类中的方法,加载login.activity布局,即将此布局加载到对话框的里面。在登录对话中可以显示布局里面的内容,运行结果如图2-2 所示,具体实现代码如下:protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);AlertDialog.Builderbuilder=new AlertDialog.Builder(MAIN_ACTIVITY.this);View view=LayoutInflater.from(MAIN_ACTIVITY.this).inflate(R.layout.login_dialog, null); Final EditText Username=(EditText)view.findViewById(R.id.AccountEditText);final EditText Password=(EditText)view.findViewById(R.id.PasswordeditText);builder.setView(view);builder.setTitle(登錄對話框);builder.setPositiveButton(确定, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubString username=Username.getText().toString().trim();String password=Password.getText().toString().trim();String currentuname=吕鹏;String currentpassword=201103010042;try if(.equals(username)|.equals(password)Toast.makeText(MAIN_ACTIVITY.this, 用户名或者密码不能为空, 1).show();MAIN_ACTIVITY.this.finish();if(!currentuname.equals(username)|!currentpassword.equals(password)Toast.makeText(MAIN_ACTIVITY.this, 用户名或者密码错误, 1).show();MAIN_ACTIVITY.this.finish();if (currentuname.equals(username)¤tpassword.equals(password) Intent intent=new Intent(MAIN_ACTIVITY.this, Splash_Activity.class);Toast.makeText(MAIN_ACTIVITY.this, 登陆成功!, 1).show(); startActivity(intent);MAIN_ACTIVITY.this.finish(); catch (Exception e) / TODO: handle exceptionToast.makeText(MAIN_ACTIVITY.this, 出现异常, 1).show(););builder.setNegativeButton(取消, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubMAIN_ACTIVITY.this.finish(););builder.show();3.2 等待模块设计此模块的设计目的为的是练习使用Splash Activity,用于显示个人信息。在XML布局方面,没有采用才布局,主要采用的是JAVA语言布局。在此模块实现了规定时间的延时操作,时间到后,即可通过Intent实现跳转下一个界面。其实现代码如下:public class Splash_Activity extends Activityprivate final int SPLASH_DISPLAY_LENGHT=1000;/延时时间Overrideprotected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);TableLayout tableLayout=new TableLayout(this);/使用TableLayout布局setContentView(tableLayout);/加载此布局TableRow tableRow1=new TableRow(this);TableRow tableRow2=new TableRow(this);TextView name=new TextView(this);name.setText(n JAVA课程设计nn+姓名:吕鹏nn+学号:201103010042n+ n班级:11计科信息);/设置显示信息name.setTextColor(Color.BLACK);name.setTextSize(18);TextView textView1=new TextView(this);textView1.setText( 10秒钟等待.);textView1.setTextColor(Color.RED);textView1.setTextSize(20);ImageView imageView=new ImageView(this);imageView.setImageResource(R.drawable.me);/加载图片tableRow1.addView(imageView);tableRow1.addView(name);tableRow2.addView(textView1);tableLayout.addView(tableRow1);tableLayout.addView(tableRow2);new Handler().postDelayed(new Runnable() Overridepublic void run() / TODO Auto-generated method stubIntent mianIntent=new Intent(Splash_Activity.this, MainActivity.class);/实现窗口之间的调用Splash_Activity.this.startActivity(mianIntent);/开启下一个ActivitySplash_Activity.this.finish();/关闭当前的Activity, SPLASH_DISPLAY_LENGHT);3.3 系统主界面模块设计3.3.1 主界面XML布局设计 主界面的XML布局非常的简单,只需添加几个ImageButton即可。在工程目录下的layout 文件夹下,新建activity_main.xml文件,在可视化的布局界面,添加5个ImageButton按钮,并加载与功能相关的图片。相关代码如下:activity_main.xml 3.3.2 主界面背景图片设计 添加手机界面的背景图片,可以提高的欣赏性。下面简单介绍添加背景图片的简单步骤。首先,打开values 文件下的styles.xml,添加如下代码: drawable/mianactivity 其次,打开工程目录下的AndroidManifest.xml文件,加载上面的图片。新建一个新的Activity时,都需要在此文件声明,其加载图片代码和声明窗口代码如下: drawable/mianactivity 3.3.3 主界面功能实现设计此部分采用JAVA语言实现,创建MainActivity.iava文件,首先获取XML文件中的各个按钮的id,为每个按钮添加事件监听器,并且添加事件处理程序,当点击按钮时,就会创建Intent 对象,跳转到相应的界面。运行效果如图2-4所示。MainActivity.iava文件的主要代码如所示:public class MainActivity extends Activity private ImageButton bt_message;private ImageButton bt_tell;private ImageButton bt_net;private ImageButton bt_calculator;private ImageButton bt_music;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/加载界面 / 获取按钮的idbt_message=(ImageButton)findViewById(R.id.message);bt_tell=(ImageButton)findViewById(R.id.call);bt_net=(ImageButton)findViewById(R.);bt_calculator=(ImageButton)findViewById(R.id.calculator);bt_music=(ImageButton)findViewById(R.id.music);bt_tell.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this, Tell_Activity.class);startActivity(intent);/跳转到下一个界面);/* * 调用发短息的界面 */bt_message.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this, Message_Activity.class);startActivity(intent);/finish(););/* * 调用计算器 */bt_calculator.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this, Calculator_Activity.class);startActivity(intent););/* * 进入网站选择页面 */bt_net.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this, Internet_Activity.class);startActivity(intent););3.4 短信和拨号模块设计3.4.1短信功能实现设计 实现此功能,首先创建message_activity.xml文件,在此文件中实现发短信界面的设计,并用相同的方法设计背景图片。这个过程非常的简单,然后创建Message_Activity.java文件,获取按钮的id并为按钮添加事件处理程序。该功能实现最重要的方法就是通过PendingIntent.getBroadcast的方法,实现发送短信的功能。Message_Activity.java文件的部分代码如下:/发送短信button.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubString telStr=Message_Activity.this.tel.getText().toString();String note=Message_Activity.this.content.getText().toString();SmsManager sms=SmsManager.getDefault(); /调用系统发短信功能PendingIntent sentintent =PendingIntent.getBroadcast(Message_Activity.this, 0, new Intent(), 0); try if(content.length()70&telStr.length()=11) /设置字数限制List msgs=sms.divideMessage(note); for(String msg:msgs) sms.sendTextMessage(telStr, null, msg, sentintent, null); else sms.sendTextMessage(telStr, null, note, sentintent, null); new AlertDialog.Builder(Message_Activity.this).setMessage(短信发送成功!).create().show(); catch (Exception e) / TODO: handle exception e.printStackTrace(); /Toast.makeText(Message_Activity.this, 短信发送失败, 1000).show();new AlertDialog.Builder(Message_Activity.this).setMessage(短信发送失败!).create().show(); );/清空内容reset.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubtel.setText();content.setText(););3.4.2 拨号功能实现设计拨号功能的实现与短信功能的实现大同小异,具体布局也是相似,具体实现的方法详见课程设计的附件代码部分,这里不再累赘叙述。3.5 计算器模块设计3.5.1 计算器界面设计 计算器界面布局采用XML语言设计,总体界面才线性布局,鉴于计算器的按钮是有规则的按钮,故采用TableRow布局。在layout文件夹中,创建calculator_activity.xml,具体代码详见附件的工程文件夹,效果如下图所示:图5-1 计算器界面布局3.5.2 计算器功能实现设计首先,最基本的我们要先定义一些变量,用来表示按键和文本内容,如数字按键,还有用于显示输出结果的显示器,用于显示记忆内容的文本框,用于显示提示的文本框。定义按键之后,我们需要在onCreate()函数中将这些变量与calculator_activity.xml中的视图绑定,同时为按键绑定按键监听器actionPerformed.。代码详见工程文件。然后创建Calculator_Activity.java文件,在这个文件中,首先实现的是actionPerformed()函数。此函数的功能用于计算器的整体操作,包括检测输入是否合法,以及判断输入的列别,。如果输入的是数字或者运算符,就将新输入的命令增加到缓存的字符串Tipcommandmand中,并显示到显示器中。如果输入的是角度切换按钮,则将相应的标志位改变,并将当前是角度还是弧度显示出来,如果输入的是退格键,则先通过函数TTO判断是要删掉几个字符串,有可能是一个、两个、也可能是多个。若果当前标志位是应经输入的“=”的标志位。其次,我们介绍print()函数,这个函数根据变量vbegin来判断当前显示内容后面追加字符串还是清零后显示。然后是right()函数,这个函数通过判断字符串内容是否只包含按键上面的字符来判断当前字符串是否合法,合法则返回ture,反之,返回false.。最后介绍是TTO()函数,判断当前字符串最后一个字符的内容来决定是删除一个、两个、还是单个字符串。然后,我们介绍TipChecker()函数,这个函数在程序中非常的重要,主要有两个方面的作用,一是检测当前输入的字符串是否合法,二是对某些函数的显示一些提示信息。此函数一开始就定义了错误类型和按键类型,接着一方面枚举可能出现错误的情况,将这些错误类型以数字的形式表示出来;另一方面,若输入的是sin/cos之类,将会在最低层提示信息,一指导用户使用这些函数,从某种角度上说是一种预防错误的措施。最后将会通过TipShow()将信息显示出来。最后我们来看一下整个计算器的核心计算类calc.此类包括这样的几个部分。(1) 表达式部分:一部分是数字,一部分是运算符号,首先要做的就是分离这两种元素。一部分代码用于存储数字、运算符和运算符的优先级,另一部分将表达式中的负号提取出来,传递给flag.通过这种方式,整个表达式的符号全部传递给数字,因此最后运算的时候就不需要另外考虑结果的正负。(2) 压入堆栈:获取整个计算式的所有数字,并依此进入堆栈。(3) 确定优先级:运算符的优先级有两部分组成:基本优先级和变动优先级。基础优先级固定不变,比如+、-的优先级是一,*、/的优先级是二;而变化的优先级由括号层数决定。(4) 进行计算:运算符入了堆栈之后开始进行计算,依此从堆顶部取出运算符进行计算。因为前面已经确定优先级的顺序,所以这时候只要依次取出计算就行了。计算完之后,将计算结果进行有效格式化,并显示到显示器上,整个计算过程结束。 此功能的详细代码详见工程文件夹中的Calculator_Activity.java文件。3.6 网上冲浪模块设计3.6.1 网上冲浪模块XML布局设计创建internet.xml文件,在此文件中时间网上冲浪界面的设计,此界面比较简单,仅包含6个imagebutton,代码实现也是非常的容易。代码如下所示: 3.6.2 网上冲浪功能设计首先创建Internet_Activity.java文件,加载xml布局文件中的按键,并为按键添加事件处理程序onClick(View v)函数,利用intent类中的setAction函数,加载安卓系统指令,然后利用Uri 类中的parse()函数获取相应的IP地址。利用intent.setData函数将传送到系统浏览器中,获取想用的网页。Internet_Activity.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卒中健康管理师工作体系构建
- 2025年医疗美容行业美容美发行业新技术应用与市场监管挑战报告
- 2025年社区获得性肺炎诊疗与管理进展
- 2025年医疗健康行业健康险产品创新与风险控制研究报告
- 幼儿中班健康《保护牙齿》教案
- 蜘蛛网织网课件
- 培训员工仪容仪表
- 肿瘤康复训练实施路径
- 课外活动类型体系解析
- 古筝六一活动方案
- 浙江省强基联盟学考模拟2024-2025学年高二下学期6月学考模拟地理试题(含答案)
- 中国美术学院非教学岗位招聘笔试真题2024
- 人形机器人深度研究系列八:谐波减速器:差齿传动持续进化
- 公立医院风险评估报告
- 肿瘤妇科进修汇报
- 麻醉意外与并发症处理规范与流程
- 危险化学品临界量表(参考)
- 墙柱梁板混凝土同时浇筑方案.doc
- 新生儿视觉训练黑白卡(整理90张必备图卡)
- 矿山地质环境恢复治理方案治理经费估算计算部分
- 大学遗传学期末考试题库及答案参考
评论
0/150
提交评论