團隊作業—第四周—物件導向程式設計

白開水濃咖啡發表於2015-06-14

GitHub程式碼地址:

程式碼:https://github.com/zyc8023/Ivan/blob/master/MainActivity.java

清單檔案:https://github.com/zyc8023/Ivan/blob/master/AndroidManifest.xml

佈局檔案:https://github.com/zyc8023/Ivan/blob/master/activity_main.xml

 

產品設計方案

3.1  方案流程


根據需求分析,對產品方案進行分解劃分,並預留了升級介面和擴充套件欄位,以方便今後需求的刪減。為此我們制定了詳細的產品實現的流程。每個環節都可以參與進來。任何一個產品實現的過程中有意見,我們都可以進行修改。詳細產品實現流程請見下圖:

  

3.2  功能設計

3.2.1  App應用總體框架圖

暫時略

3.2.2 各類功能介紹

  1. 定位功能:定位當前位置
  2. 路線規劃功能:根據使用者互動輸入的需求,給出去使用者指定醫院的公交路線或者自駕路線(含有是否交通擁擠狀況)。
  3. 線上推薦功能:根據使用者互動輸入的需求,給出推薦的幾家優秀的醫院。
  4. 線上掛號功能:建立使用者和醫院的橋樑,實現網上掛號。
  5. 線上尋求專家功能:可以根據使用者的需求,推薦指定的醫生、專家,為使用者做出相應的指導。
  6. 線上購藥功能:借用網際網路的電子商務功能實現藥品線上銷售。
  7. 病例申請:使用者可以填寫資訊,一張病例,所有醫院共用。
  8. 遠端控制功能:物聯網的發展趨勢,跟多的醫療硬體與app相結合,實現遠端控制和只能操作。GSM    SMS(簡訊傳送器)

3.2.3  購物車

      已購藥品:顯示物品名稱、物品單價、總共價格、編輯數量、新增刪除藥品

      確認訂單:等待使用者的確認支付。

3.2.4  我的訂單

      在使用者支付之後,自動生成訂單,供使用者瀏覽和其他功能的使用,如退訂等功能。

3.2.5  活動(醫保卡)

      優惠活動:你懂得。

3.2.6支付

      支付寶、銀聯和微信支付

3.3  互動設計

      互動簡潔清晰,突出核心功能。

可以提出的App產品的界更具體的面需求。(風格、顏色)

3.4  介面設計

      符合的VI設計。

       VI全稱Visual Identity, 即企業VI視覺設計,通譯為視覺識別系統。是將CI的非可視內容轉化為靜態的視覺識別符號。設計到位、實施科學的視覺識別系統,是傳播企業經營理念、建立企業知名度、塑造企業形象的快速便捷之途。企業通過VI設計,對內可以徵得員工的認同感,歸屬感,加強企業凝聚力,對外可以樹立企業的整體形象,資源整合,有控制的將企業的資訊傳達給受眾,通過視覺符碼,不斷的強化受眾的意識,從而獲得認同。VI為企業CIS中的一部分,企業CI包含三個方面。分為BIMIVI,三方面為行為識別,企業理念識別和視覺識別

可以提出的App產品的界更具體的面需求。(風格、顏色)

3.5  定製平臺

      暫時只有Android平臺

 

部分程式碼展示:

  1 package com.example.hellomap;
  2 
  3 import java.util.List;
  4 
  5 import com.baidu.mapapi.SDKInitializer;
  6 import com.baidu.mapapi.map.BaiduMap;
  7 import com.baidu.mapapi.map.BitmapDescriptor;
  8 import com.baidu.mapapi.map.BitmapDescriptorFactory;
  9 import com.baidu.mapapi.map.MapView;
 10 import com.baidu.mapapi.map.MarkerOptions;
 11 import com.baidu.mapapi.map.OverlayOptions;
 12 import com.baidu.mapapi.model.LatLng;
 13 import com.baidu.mapapi.overlayutil.PoiOverlay;
 14 import com.baidu.mapapi.search.core.PoiInfo;
 15 import com.baidu.mapapi.search.core.SearchResult;
 16 import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
 17 import com.baidu.mapapi.search.poi.PoiBoundSearchOption;
 18 import com.baidu.mapapi.search.poi.PoiCitySearchOption;
 19 import com.baidu.mapapi.search.poi.PoiDetailResult;
 20 import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
 21 import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
 22 import com.baidu.mapapi.search.poi.PoiResult;
 23 import com.baidu.mapapi.search.poi.PoiSearch;
 24 
 25 import android.nfc.Tag;
 26 import android.os.Bundle;
 27 import android.app.Activity;
 28 import android.util.Log;
 29 import android.view.Menu;
 30 import android.view.MenuItem;
 31 
 32 public class MainActivity extends Activity {
 33     private MapView mMapView;
 34     private BaiduMap mBaiduMap;
 35     private PoiSearch mPoiSearch;
 36     private BitmapDescriptor bitmapDescriptor;
 37 
 38     @Override
 39     protected void onCreate(Bundle savedInstanceState) {
 40         super.onCreate(savedInstanceState);
 41         SDKInitializer.initialize(getApplicationContext());// 初始化SDK
 42         setContentView(R.layout.activity_main);
 43         mMapView = (MapView) findViewById(R.id.bmapView);// 獲取MapView
 44 
 45         // 生成圖示
 46         bitmapDescriptor = BitmapDescriptorFactory
 47                 .fromResource(R.drawable.icon_marka);
 48 
 49         mBaiduMap = mMapView.getMap();// 獲取地圖控制器
 50         // 取得poi檢索的例項
 51         mPoiSearch = PoiSearch.newInstance();
 52         // 設定poi檢索的監聽
 53         mPoiSearch
 54                 .setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
 55 
 56                     @Override
 57                     public void onGetPoiResult(PoiResult result) {
 58 
 59                         if (result == null
 60                                 || result.error != SearchResult.ERRORNO.NO_ERROR) {
 61                             System.out.println(SearchResult.ERRORNO.NO_ERROR);
 62                             Log.v("tag", "沒有找到相關結果");
 63                             return;
 64                         }
 65                         /*
 66                          * List<PoiInfo> list = result.getAllPoi(); for (PoiInfo
 67                          * poiInfo : list) { Log.v("tag", poiInfo.name);
 68                          * 
 69                          * OverlayOptions options = new MarkerOptions()
 70                          * .position(poiInfo.location).icon( bitmapDescriptor);
 71                          * 
 72                          * mBaiduMap.addOverlay(options); }
 73                          */
 74                         mBaiduMap.clear();// 每次選擇之前都要先清空地圖
 75                         PoiOverlay overlay = new MyOverlay(mBaiduMap);
 76                         overlay.setData(result);
 77                         overlay.addToMap();
 78                         overlay.zoomToSpan();
 79 
 80                         mBaiduMap.setOnMarkerClickListener(overlay);
 81 
 82                     }
 83 
 84                     @Override
 85                     public void onGetPoiDetailResult(PoiDetailResult result) {
 86                         if (result == null
 87                                 || result.error != SearchResult.ERRORNO.NO_ERROR) {
 88                             System.out.println(SearchResult.ERRORNO.NO_ERROR);
 89                             Log.v("tag", "沒有找到相關結果");
 90                             return;
 91                         }
 92                         Log.v("tag", result.getTelephone());
 93                         Log.v("tag", String.valueOf(result.getPrice()));
 94 
 95                     }
 96                 });
 97 
 98     }
 99 
100     @Override
101     protected void onDestroy() {
102         super.onDestroy();
103         mMapView.onDestroy();
104         mPoiSearch.destroy();// 釋放資源
105     }
106 
107     @Override
108     protected void onPause() {
109         super.onPause();
110         mMapView.onPause();
111     }
112 
113     @Override
114     protected void onResume() {
115         super.onResume();
116         mMapView.onResume();
117     }
118 
119     @Override
120     public boolean onCreateOptionsMenu(Menu menu) {
121         // Inflate the menu; this adds items to the action bar if it is present.
122         getMenuInflater().inflate(R.menu.main, menu);
123         return true;
124     }
125 
126     /**
127      * 選單
128      */
129     @Override
130     public boolean onMenuItemSelected(int featureId, MenuItem item) {
131         int id = item.getItemId();
132         switch (id) {
133         case R.id.search_in_city:
134             mPoiSearch.searchInCity(new PoiCitySearchOption().city("濟南")
135                     .keyword("醫院").pageNum(1).pageCapacity(10));
136             break;
137         case R.id.search_nearby:
138             LatLng pt1 = new LatLng(39.93923, 116.357428);
139             mPoiSearch.searchNearby(new PoiNearbySearchOption().radius(1000)
140                     .keyword("餐廳").pageNum(1).pageCapacity(10).location(pt1));
141             break;
142         default:
143             break;
144         }
145 
146         return super.onMenuItemSelected(featureId, item);
147     }
148 
149     class MyOverlay extends PoiOverlay {
150 
151         public MyOverlay(BaiduMap map) {
152             super(map);
153         }
154 
155         @Override
156         public boolean onPoiClick(int i) {
157             List<PoiInfo> list = getPoiResult().getAllPoi();
158             PoiInfo info = list.get(i);
159             Log.v("tag", info.name);
160             Log.v("tag", info.phoneNum);
161             Log.v("tag", info.city);
162             Log.v("tag", info.address);
163 
164             if (info.hasCaterDetails) {
165                 mPoiSearch.searchPoiDetail(new PoiDetailSearchOption()
166                         .poiUid(info.uid));
167             }
168             return super.onPoiClick(i);
169         }
170     }
171 
172 }

 

          

相關文章