Android设计天气表,word文档里是整个设计说明书。
目录 1、需求分析 2、总体设计 3、详细设计 3.1、开始界面 3.2、主界面 3.3、添加界面 3.4、显示界面 3.5、编辑界面 3.6、周显示界面 4、程序运行结果测试与分析
1、需求分析走进大学,上课的方式和地点都和以前的高中不一样了。鉴于大学上课教室分散,学生经常会忘记自己的或是上课的教室。这在一定程度上促进学生课表软件的开发。使其可以帮助学生记录自己的和对自己的掌握。因为手机相对笔记本电脑更加具有便携性,可以随时随地的打开并使用它。相对于笔记本电脑的开机并打开软件所用的时间,其需要的时间更短,所以手机端的学生课表备受学生用户的青睐。 该款软件就是基于Android平台开发的一款学生课表软件。当学生上课途中却不知道教室地点的时候,大多数人选择发短信或者打电话询问同学。这对学生的造成了一定的花费。通过这款软件完全避免了这些不必要的开销。而且通过手机管理课表也是目前比较流行的方式,也具备实用、方便和免费等优点。开发这样一个学生课表软件,涉及到的技术不会太多,用到的主要技术就是Sqlite数据库编程、适配器的运用、Android XML的布局和UI特效以及对Android各种组件的运用。开发采用Android SDK与Eclipse开发的插件ADT,数据库采用Android自带的Sqlite数据库 所有我们要开发一个可查看自己学期的课表,并添加了天气预报的功能 通过分析得出,其要实现的功能为: 1.天气表主界面:可在该界面中查看天气、城市、。 2.添加界面:可在该界面中添加。 3.点击查看界面:可在该界面中查看所添加的。 4.编辑界面:可在该界面中修改所添加的。 5.整周界面:查看每一周的。 6.Widget界面。 2、总体设计(1)总体设计思路: 根据该问题的需求,需要在程序中建立五个界面:天气表主界面、添加界面、查看界面、编辑界面、整周界面。以及一个可在手机上桌面上建立一个4×4的小插件的Widget界面。各界面主要功能: 1.天气表主界面:可在该界面中查看天气,城市等信息,还需可查看每周每天的。 2.添加界面:可在该界面中添加名称、教师姓名、上课地点、上课节数、上课周数、上课星期。 3.点击查看界面:可在该界面中查看所添加的名称、教师姓名、上课地点、上课节数、上课周数、上课星期。 4.编辑界面:可在该界面中修改所添加的名称、教师姓名、上课地点、上课节数、上课周数、上课星期。 5.整周界面:可在该界面中调整软件的背景,查看每一周的。 6.Widget界面:需要在手机桌面上建立一个4×4的小插件。
(2)系统模块图: 3、详细设计3.1、开始界面设计思路:首先创建一个开始界面another,使用LinearLaout布局,在该界面可设置开始时间,并使用SQLite数据库创建cource表用来存放和开始时间。给下一步按钮添加事件,点击进入主界面。 开始界面模块图: 3.1开始界面模块图 流程图
部分代码: public static String StringData(){ final Calendar c = Calendar.getInstance(); c.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份 mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份 mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号 mHour=(c.get(Calendar.HOUR_OF_DAY)<10?"0":"")+String.valueOf(c.get(Calendar.HOUR_OF_DAY)); mMinute=(c.get(Calendar.MINUTE)<10?"0":"")+String.valueOf(c.get(Calendar.MINUTE)); return mYear + "年" + mMonth + "月" + mDay+"日 \t\t"+mHour+":"+mMinute; } 3.2、主界面设计思路:创建一个主界面odd_days,使用LinearLayout布局,在该界面显示城市,从获取当地天气并显示,然后从数据库默认显示当天,给周一至周日按钮添加事件。最后在为添课和整周显示按钮分别添加事件。 模块图:
3.2 主界面模块图 部分代码: public void onClick(DialogInterface dialog, int which) { index=which; city.setText(cities[which]); msg=city.getText().toString(); Intent intents = new Intent("wyf.action.city"); intents.putExtra("ccity", msg); OddDaysActivity.this.sendBroadcast(intents); try{ initThread();//从网络获取天气信息 }catch(Exception e){ e.printStackTrace(); } dialog.dismiss(); } }) .setNegativeButton("取消", null) .show(); } 3.3、添加界面设计思路:创建添加界面addcource_activity,使用TextView显示添加的的信息,并在EditText中输入需要添加的信息,并给添加按钮设置事件,当添加的不存在并且每项内容不为空,添加此到数据库提示添加成功。当添加的存在并且有一项内容为空,就提示添加的不符合要求,请重新添加! 模块图:  3.3添加界面模块图 部分代码: if(SQLiteUtil.QueryCourseIfExist(insertCourse[0])||((!insertCourse[0].trim().equals(""))&& (!insertCourse[1].trim().equals(""))&&(!insertCourse[2].trim().equals("")))){ SQLiteUtil.insertCourceMess(insertCourse);//添加此进数据库 bb1=true; } insertTime=new String[3];//获得时间新型 insertTime[0]=et4.getText().toString(); insertTime[1]=Constant.editText; insertTime[2]=et6.getText().toString(); if(insertTime[0].trim().equals("请输入上课节数")||insertTime[1].trim().equals("请输入上课周数")|| insertTime[2].trim().equals("请输入上课星期")||insertTime[0].trim().equals("")|| insertTime[1].trim().equals("")||insertTime[2].trim().equals(""){ Toast.makeText(AddCourseActivity.this, "添加的不符合要求,请重新添加!", Toast.LENGTH_SHORT).show(); bb2=false; } 3.4、显示界面设计思路:创建显示界面odd_list_selected,使用LinearLayout布局,并从数据库读取的信息后使用TextView显示。为返回,编辑和删除本节课按钮添加事件。点击删除本节课,从数据库删除。 模块图:  3.4显示界面模块图 从 部分代码: value=bundle.getString("info"); names=value.split("<#>"); Constant.showWeeks=AddCourseActivity.DivideString(names[4]); title.setText(names[0]);//标题 tv1.append(": "+names[0]);//名称 tv2.append(": "+names[1]);//教师 tv3.append(": "+names[2]);//地点 tv4.append(": "+names[3]);//节数 tv5.append(": "+Constant.showWeeks);//周数 tv6.append(": "+names[5]);//星期
3.5、编辑界面设计思路:创建编辑界面edit_course,使用使用LinearLayout布局,,使用TextView显示编辑的的属性,先在中EditText显示没有改变的,在输入需要编辑的的信息。为确定按钮添加事件,点击后将数据存入数据库并提示此已经更新。 模块图:  3.5 编辑界面模块图 部分代码: new OnClickListener() { public void onClick(View v) { updateMess[0]=et1.getText().toString(); updateMess[1]=et2.getText().toString(); updateMess[2]=et3.getText().toString();
updateTime[0]=et4.getText().toString(); updateTime[1]=Constant.editText; updateTime[2]=et6.getText().toString(); SQLiteUtil.ReSetCource(firstName,updateMess,updateTime); Toast.makeText(EditCourseActivity.this, "此已经更新!", Toast.LENGTH_SHORT).show(); MondayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期一")); TuesdayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期二")); WednesdayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期三")); ThursdayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期四")); FridayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期五")); SaturdayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期六")); SundayActivity.listview.setAdapter(new MyBaseAdapter(context,"星期日"));}}); 3.6、周显示界面设计思路:创建整周显示whole_week,使用LinearLayout布局,在界面中创建一个Spinner,选择显示那一周的,并使用ListView,显示整周的。  模块图: 3.6周显示界面模块图 部分代码: oddDays=(Button)this.findViewById(R.id.odddays); //监听,切换到整周 oddDays.setOnClickListener( new OnClickListener() { public void onClick(View v) { Intent intent=new Intent(); intent.setClass(WholeWeekActivity.this, OddDaysActivity.class); WholeWeekActivity.this.startActivity(intent); } } 4、程序运行结果测试与分析程序调试完毕后,在手机上开始运行程序。 
点击天气表程序图标,将进入如图4.1所示界面。 图4.1 程序开始运行图
在进入开始界面后,选择好你开始的时间,然后点击下一步,进入程序的主界面,如图4.2所示。主界面中可查看当地城市天气,和当天。 图4.2程序主界面

在程序主界面中如果你想查看其他周的,可以点击中间的第一周下拉按钮如图4.3所示,在下拉列表中你可选择你所想要查看的周次。 图4.3 周次选择
在程序主界面中如你想查看本周所有,可点击整周按钮,将进入图4.4所示界面,在该界面中你可以查看本周星期一到星期五的所有。 
图4.4 整周显示界面

若是想添加属于自己的,可在主界面中点击添课按钮,将进入如图4.5所示界面,在该界面中你可以添加名称、老师、地点、节数、周数、星期等属性。添加完成属性以后点击确认按钮,则该建立完毕。 图4.5 添加界面
若想查看异界的详细信息,可以点击该,将进入查看界面如图4.6所示,改界面中会将的所有属性显示在屏幕上。
图4.6 查看界面

在查看界面,你可以删除本节,只需点击删除本节课即可,若想修改属性,可点击编辑按钮,进入编辑界面如图4.7所示,在该界面你可重新输入属性。完成输入后点击确认按钮,则修改完毕。 图4.7 编辑界面

若想修改程序的背景皮肤,可在整周显示界面,点击皮肤按钮如图4.8所示,可选择所喜欢的背景,进行更换。更换背景后如图4.9所示。 图4.8 换肤界面 图4.9 换肤后界面
5、结论与心得本次设计是一个基于 Android的天气表设计,完成这个项目之后,以前觉得复杂的布局文件,现在变得简单易懂。从之前面对一个项目的无从下手,到现在一步步的分析项目。实践检验问题,在做项目中,一点点理清上课时模糊不清的知识点。提高了自己对编程的兴趣也加深了对所学知识的理解。巩固了listview的使用。 还有就是SQLite数据库的使用,比如将数据存入数据库,读取数据库中数据等。 我学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作。但是在检测过程中,还是出现了很多的不足之处,这些都是要在今后的工作中需要努力改进和完善的。期间我学到了非常多的andrio专业知识,体会了其中的乐趣,当我自己解决问题,运行成功时,那种成就感,非常的好。我对andrio充满了兴趣。于个人而言,在程序设计的过程中,我深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我定将“认真严谨”时刻作为自的谨言。与此同时,我们小组成员的互帮互助,让我体会到了团结的力量,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。这次设计本来是纯粹的Android端的开发,但是进入这样的开发一段时间之后,我就感觉到这个的魅力所在。通过这次的设计亲切的感受到Android开发的魅力。我现在对这门课真的很感兴趣,如果这样的开发多了我相信以后的经验的积累会更快。但是这次设计里也是有很多不懂的问题,这样其实也就是按部就班的进行开发,对于一些技术还掌握不到位,说明自己的功底以及相应知识还是不熟,欠练。这次设计是我自己选的素材,也是我想要追寻的方向,虽然不能达到像工程师那样熟练,但是起码给了我自己这样一个学习方向。互联网其实是现代接触最为接近的核心网络技术之一,掌握这样的技术无论是以后找工作,还是以想开发自己想要的服务都是一个莫大的帮助。我现在正在往这方面进行发展,等到学好这门技术我希望能开发出一个完全属于自己的项目。总之,此次设计在我的学习生涯中启上了至关重要的作用
以上图文的Word格式文档下载(内容和本网页上的一模一样,方便大家保存): |