一、课程设计(实训)目的及要求 本实训是在学习android的基础上进行的一次综合实践。通过综合训练,要求学生掌握android的网络编程和3G编程的应用,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等,使学生通过本次实训,能够进行独立的3G应用程序开发,能够在实际操作中得到进一步的提高,为以后的学习和工作打下良好的基础。 1、培养学生运用所学课程android的理论知识和技能,分析解决计算机实际应用中的问题的能力。 2、培养学生掌握用android的知识开发网络和3G应用程序的思想和方法。 3、培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 4、通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容,包括: ⑴确定开发的系统,收集和调查有关技术资料。 ⑵按软件工程步骤进行系统开发。 ⑶对系统进行测试和完善。 ⑷完成课程设计报告。
1
二、设计思路 (需求分析、功能介绍、模块划分、数据流图)或实训内容与安排 一.需求分析: 计算器:通过计算器实现简单的加减乘除的运算 相册浏览器:通过相册浏览器浏览图片,并应用了重力感应系统,增加菜单项,通过菜单,可以退出程序,查看作者,查看关于该软件的一些信息,并能把图片设置为背景图片。 猜数字:自动生成一个1-100的整数,然后再文本框里输入一个1-100的数字,然后跟自动生成的数字比较,如果小了,提示“太小了”,如果大了,提示“太大了”,如果两个数相等,就提示“恭喜中奖了”。 二:功能介绍 计算器:计算器拥有加、减、乘、除四个简单的运算。并有清除功能。 相册浏览器:按“上一张”按钮可以当前图片的前面一张图片,按“下一张”按钮可以当前图片的后面一张图片。按“menu”按钮可以弹出菜单选项,菜单选项里有4个选项,分别为“退出”,“作者”,“关于”,“设置”。按“退出”选项,可以退出程序;按“作者”选项,查看作者信息;按“关于”选项,查看软件信息;按“设置”,把图片设为背景图片。 猜数字:系统自动生成一个1-100的整数,然后再文本框里输入一个1-100的数字,两数比较,如果小了,就提示太小了,,如果大了,就提示太大了,并在textview中输出还有几次机会。当两数相等时,就提示“恭喜你中奖”。当按“重新来过”,游戏重新开始。 三:模块划分 计算机:
2
计算机界面: 运行界面: 界面文件 main.xml
num_zerobut=(Button)findViewById(R.id.zerobut); num_onebut=(Button)findViewById(R.id.onebut); num_twobut=(Button)findViewById(R.id.twobut); num_threebut=(Button)findViewById(R.id.threebut); num_fourbut=(Button)findViewById(R.id.fourbut); num_fivebut=(Button)findViewById(R.id.fivebut); num_sixbut=(Button)findViewById(R.id.sixbut); num_sevenbut=(Button)findViewById(R.id.sevenbut); num_eightbut=(Button)findViewById(R.id.eightbut); num_ninebut=(Button)findViewById(R.id.ninebut); dotbut=(Button)findViewById(R.id.dotbut); addbut=(Button)findViewById(R.id.addbut); subbut=(Button)findViewById(R.id.subbut); multbut=(Button)findViewById(R.id.multbut); dividebut=(Button)findViewById(R.id.dividebut); equalbut=(Button)findViewById(R.id.equalbut); clearbut=(Button)findViewById(R.id.clearbut); num_zerobut.setOnClickListener(new ButtonListener()); num_onebut.setOnClickListener(new ButtonListener()); num_twobut.setOnClickListener(new ButtonListener()); num_threebut.setOnClickListener(new ButtonListener()); num_fourbut.setOnClickListener(new ButtonListener()); num_fivebut.setOnClickListener(new ButtonListener()); num_sixbut.setOnClickListener(new ButtonListener()); num_sevenbut.setOnClickListener(new ButtonListener()); num_eightbut.setOnClickListener(new ButtonListener()); num_ninebut.setOnClickListener(new ButtonListener()); dotbut.setOnClickListener(new ButtonListener()); addbut.setOnClickListener(new ButtonListener()); subbut.setOnClickListener(new ButtonListener()); multbut.setOnClickListener(new ButtonListener()); dividebut.setOnClickListener(new ButtonListener()); equalbut.setOnClickListener(new ButtonListener()); clearbut.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onClick(View v) { // TODO Auto-generated method stub switch (i) { case R.id.zerobut: s1+=num_zerobut.getText().toString().trim(); edittext.setText(s1); break; int i=((Button)v).getId(); 9
case R.id.onebut: s1+=num_onebut.getText().toString().trim(); edittext.setText(s1); break; case R.id.twobut: s1+=num_twobut.getText().toString().trim(); edittext.setText(s1); break; case R.id.threebut: s1+=num_threebut.getText().toString().trim(); edittext.setText(s1); break; case R.id.fourbut: s1+=num_fourbut.getText().toString().trim(); edittext.setText(s1); break; case R.id.fivebut: s1+=num_fivebut.getText().toString().trim(); edittext.setText(s1); break; case R.id.sixbut: s1+=num_sixbut.getText().toString().trim(); edittext.setText(s1); break; case R.id.sevenbut: s1+=num_sevenbut.getText().toString().trim(); edittext.setText(s1); break; case R.id.eightbut: s1+=num_eightbut.getText().toString().trim(); edittext.setText(s1); break; case R.id.ninebut: s1+=num_ninebut.getText().toString().trim(); edittext.setText(s1); break; case R.id.dotbut: if(s1.indexOf('.')>=0){ Toast.makeText(Calculator.this, \"已经出现了点\", 200); } else{ s1+=dotbut.getText().toString().trim(); } 10
} break; s3=addbut.getText().toString(); if(flag==0){ edittext.setText(\"\"); s2=s1; s1=\"\"; flag=1; } else if(flag==1) {result(s3);} break; s3=subbut.getText().toString(); edittext.setText(\"\"); s2=s1; s1=\"\"; break; s3=multbut.getText().toString(); edittext.setText(\"\"); s2=s1; s1=\"\"; break; s3=dividebut.getText().toString(); edittext.setText(\"\"); s2=s1; s1=\"\"; break; result(s3); flag=0; break; s1=\"\"; s2=\"\"; edittext.setText(\"\"); } case R.id.addbut: case R.id.subbut: case R.id.multbut: case R.id.dividebut: case R.id.equalbut: case R.id.clearbut: } private void result(String s3) { // TODO Auto-generated method stub double d1=Double.parseDouble(s2); //d1约等于112.0 11
double d2=Double.parseDouble(s1); if(s3.equals(\"+\")){ } else if(s3.equals(\"-\")){ } else if(s3.equals(\"*\")){ } else if(s3.equals(\"/\")){ if(d1==0){ Toast.makeText(Calculator.this, \"除数不能为零\", edittext.setText(\"\"); s1=\"\"; s2=\"\"; result=d1*d2; s1=\"\"; s2=\"\"; edittext.setText(result+\"\"); result=d1-d2; s1=\"\"; s2=\"\"; edittext.setText(result+\"\"); result=d1+d2; s1=\"\"; s2=\"\"; edittext.setText(result+\"\"); 200).show(); } } } } else{ result=d1/d2; s1=\"\"; s2=\"\"; edittext.setText(result+\"\"); } 12
相册浏览器: 界面: Main.xml文件:
14
super.onCreate(savedInstanceState); setContentView(R.layout.main); nowpos=R.drawable.ptwo; ImageView1=(ImageView)findViewById(R.id.ImageView1); ImageView2=(ImageView)findViewById(R.id.ImageView1); button1=(Button)findViewById(R.id.button1); button2=(Button)findViewById(R.id.button2); ImageView1.setImageDrawable(getResources().getDrawable(R.drawable.ptwo)); button1.setOnClickListener(new OnClickListener() { ; ; ; Toast.makeText(Photo.this,\"FUCK\",200).show(); } if(x<=0&&y>=5&&z<4){ } Toast.makeText(Photo.this,\"YOU\",200).show(); } Toast.makeText(Photo.this,\"FUCK\",200).show(); public void onClick(View v) { // TODO Auto-generated method stub ImageView1.setImageDrawable(getResources().getDrawable(--nowpos))}); public void onClick(View v) { // TODO Auto-generated method stub button2.setOnClickListener(new OnClickListener() { ImageView1.setImageDrawable(getResources().getDrawable(++nowpos))}); sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); SensorEventListener lsn = new SensorEventListener() { public void onSensorChanged(SensorEvent e) { x = e.values[SensorManager.DATA_X]; y = e.values[SensorManager.DATA_Y]; z = e.values[SensorManager.DATA_Z]; if(x==0&&y<=5&&z<=1){ ImageView1.setImageDrawable(getResources().getDrawable(--nowpos))ImageView1.setImageDrawable(getResources().getDrawable(++nowpos)); 15
Toast.makeText(Photo.this,\"YOU\",200).show(); } setTitle(\"x=\"+(int)x+\+\"y=\"+(int)y+\+\"z=\"+(int)z); } public void onAccuracyChanged(Sensor s, int accuracy) { } }; Sensor sensor = sensorMgr.registerListener(lsn, sensor, sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); SensorManager.SENSOR_DELAY_GAME); } @Override public boolean onCreateOptionsMenu(Menu menu) { } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { // TODO Auto-generated method stub if(item.getItemId()==1) { } else if(item.getItemId()==2){ Intent intent=new Intent(); intent.setClass(Photo.this, Zuoze.class); startActivity(intent); } else if(item.getItemId()==3){ } else if(item.getItemId()==4){ Bitmap Intent intent=new Intent(); intent.setClass(Photo.this, About.class); startActivity(intent); finish(); // TODO Auto-generated method stub menu.add(0,1,1,\"退出\"); menu.add(0,2,2,\"作者\"); menu.add(0,3,3,\"关于\"); menu.add(0,4,4,\"设置\"); return super.onCreateOptionsMenu(menu); bitmap=((BitmapDrawable)getResources().getDrawable(R.drawable.pone)).getBitmap(); WallpaperManager wallpaperManager = 16
WallpaperManager.getInstance(this); } } } try { } wallpaperManager.setBitmap(bitmap); e.printStackTrace(); } catch (IOException e) { return super.onMenuItemSelected(featureId, item); 猜数字: 界面 Main.xml文件
import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Choujiang extends Activity { /** Called when the activity is first created. */ private TextView start; private Button but; private EditText end; private Button restart; private int s1; private int s2; private int k=5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start=(TextView)findViewById(R.id.start); but=(Button)findViewById(R.id.but); end=(EditText)findViewById(R.id.end); restart=(Button)findViewById(R.id.restart); s1=(int) (Math.random() * 100 + 1); but.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(s2 Toast.makeText(Choujiang.this, \"太大了\", 400).show(); k=k-1; if(k<0){ finish(); } } else if(s2==s1){ Toast.makeText(Choujiang.this, \"恭喜你答对了\", start.setText(s1+\"\"); start.setText(\"你还剩\"+k+\"机会\"); end.setText(\"\"); 400).show(); } } }); @Override public void onClick(View v) { // TODO Auto-generated method stub k=5; restart.setOnClickListener(new OnClickListener() { start.setText(\"你还剩\"+k+\"机会\"); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { } @Override public boolean onOptionsItemSelected(MenuItem item) { } // TODO Auto-generated method stub if(item.getItemId()==1){ } return super.onOptionsItemSelected(item); finish(); // TODO Auto-generated method stub menu.add(0, 1, 1, \"退出\"); return super.onCreateOptionsMenu(menu); 20 } 三、设计实现步骤(技术路线) 21 本次实训的项目是在基于eclipse工具开发的,具体实现步骤如下所示: (1)添加一个新的android模拟器 (2)通过eclipse创建一个项目。选择File->New->Project。在菜单中选择Android->Android Project,点击Next (3)创建一个新的Android工程。 22 (4)选择run as,选择android application,启动手机模拟器,即可看到运行效果 23 24 因篇幅问题不能全部显示,请点此查看更多更全内容