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格式文檔下載(內容和本網頁上的一模一樣,方便大家保存): |