# "NCU Carpool app" - Independent study in NCU ###### tags: `Android` [Project on Github](https://github.com/doodoomilk/NCU-carPool) ## APP Introduction ![](https://i.imgur.com/J94yIqK.png) 此APP是專門設計給中央學生的計程車叫車和共 乘平台,使用者可以藉由網路連線到此平台,尋找一起搭車的 同學,藉此平分搭車的車費。 ### 製作動機 中央大學,位在桃園市中壢區的一座小山丘上,交通非常不方便,對沒有交通工具的同學來說,只能等20分鐘一班的公車或是搭計程車,但是等公車會花費許多時間,搭計程車則是價格昂貴。為了解決這些交通上的困擾,我設計了 NCU Carpool app(中央大學師生專用的計程車共乘系統)。 鑒於智慧型手機、WIFI和網路的普及,希望能藉由此APP, 來進一步協助中央大學的師生們找尋可信任且能夠共乘的成員。 使用者可以藉由網路連接到此平台,尋找一起搭計程車的人,除了節省等公車的時間,還可以一起平分計程車車錢,達到省錢的目的,也解決交通不便的問題。 ### 特色 1. 操作簡單, 方便且迅速: 簡單明瞭的操作介面, 可依照需求, 做相對應的搜尋(ex: 搭車之日期、時間、地點),讓使用者能夠輕易地找到符合需求的共乘。 2. 進行身份認證,保障使用者安全: 必須使用學校信箱進行登入及註冊,註冊時會寄送email認證信做認證,以便確認身份,保障全校師生的安全。 3. 擁有評分制度: 計程車搭乘完畢後,系統會請使用者對搭車之成員做評分。可以藉由查看對方的評分,避免遇到有不良記錄的同學。 透過評分制度,可以讓使用者之乘車品質有所提升。 ### 運用技術 - 開發環境: Android Studio Android app 的開發,最多人使用的這兩個環境: Android Studio 和 Eclipse。 而對新手來說, Android studio 相較於Eclipse,比較好上手且擁有較快的啟動速度、UI 較漂亮、整合了Gradle 建構工具...等等優點,而最重要的就是它是 Google 推出的,專門為 Android 量身定做,相容性更 高。 - 資料庫的選擇: MySQL 選擇使用 MySQL主要有三個原因,第一操作簡單,第二它提供眾多資料格式可以做彈性的介面,而最後一個原因,也是最主要的原因,是因為它免費且簡易查詢的效率較高。 - 如何連接資料庫: PHP Android 連接 MySQL 資料庫的常見方式之一是使用PHP程式碼,在PHP中設定資料庫的Host、user、pass...等等, 加上“mysqli_connect()”便可以連接到MySQL,而再用其他不同功能之程式碼進行資料的存取。 ### 資料傳輸流程 ![](https://i.imgur.com/wSmHcbr.png) - Upload: 由 Android 手機端發請求,經由 PHP 程式碼,傳遞資料到 MySQL 資料庫。 - Download: 從 MySQL 資料庫抓資料,經由 PHP 程式碼,回傳到 Android 手機端。 ### APP使用流程 ![](https://i.imgur.com/f5LKizk.png) ## APP GUI ### **登入畫面 & 註冊畫面** 為了保障使用者安全,必須用中央大學信箱進行註冊和登入。 註冊時必須填寫相關個人資料,例如:姓名、性別、科系、年級...等 等(如右圖所示)。 註冊後會發送認證信至信箱,認證後即可登入。 ![](https://i.imgur.com/rF0a8JY.jpg) ### **主畫面** 主畫面上方有兩個分頁,可以進行分頁的切換: 1. 找共乘: 可以依時間、起點、終點來尋找想要加入的計程車共乘。 畫面會顯示各個共乘的資料,例如:主揪人資料、人數是否已滿、時間地 點...等資訊。 2. 我的共乘: 可以查看自己已經加入的共乘資訊。 3. 刊登共乘: 主畫面右下方的粉紅色按鈕,可以進行新共乘的刊登。 ![](https://i.imgur.com/XrJdFbO.jpg) ### **詳細資料畫面** 詳細資料畫面會顯示有關共乘的所有資訊, 除了基本的時間、地點之外,還包括主揪人資料、主揪人評價, 而下方按鈕也可以查看其他乘客的資訊。 ![](https://i.imgur.com/9NHcqzh.png) ### **評分畫面** 當搭乘計程車結束,系統會請你對其他乘客進行評分。 而這個評分會影響個人資料「評價」的部分,成為往後其他使用者選擇共乘的依據之一。 ![](https://i.imgur.com/diTBqbO.png) ### **我的共乘畫面** 顯示加入的共乘、自己發起的共乘 一樣可以查看詳細資料 ### **側邊欄畫面** 畫面上方可以看到目前登入的帳號、使用者姓名、照片。 而下方的按鈕,可以查看個人資料及登出帳號。 ![](https://i.imgur.com/loiF75P.png) ## Introduction of Code ### MainActivity.java - Tab setting: 切換分頁 - Floating button: 刊登共乘用 - NavigationView: 側邊欄setting - DrawerLayout: 設定整個畫面(讓他可放入側邊欄跟tab) - Relative xml: 1. activity_main.xml 2. nav_header_main.xml 3. content_main.xml (tab有關) 4. app_bar_main.xml (floating button) 5. dialog_info.xml (查看個人資料用) ### LoginActivity.java - SharedPreferences: 記住登入狀態 - Login GUI setting - Relative xml: 1. activity_login.xml ### RegisterActivity.java - the registration page - Pattern: regular expression - Relative xml: 1. activity_register.xml ### add_new_missionActivity.java - Used to post new carpool mission - Relative xml: 1. activity_add_new_mission.xml ### misstion_list.java - the 1st tab: show the list of missions - RecyclerView: 放cardview的地方 - CardView: 顯示一個一個的mission - Dialog: used to show the details of mission - Sorting: the newest to the oldest - RefreshLayout: 實現下拉刷新功能 - Relative xml: 1. mission_list.xml 2. few_detail.xml 3. dialog_all_detail.xml ### my_list.java - show carpool mission I launched or I joined - RecyclerView: 放cardview的地方 - CardView: 顯示一個一個的mission - Dialog: used to show the details of mission - Sorting: the newest to the oldest - RefreshLayout: 實現下拉刷新功能 - Relative xml: 1. my_list.xml 2. dialog_join_detial.xml 3. dialog_launch_detial.xml 4. dialog_people.xml 5. join_few_detail.xml 6. launch_few_detail.xml ### join_rateActivity.java - the rating system of carpool launcher - RatingBar: 評分星等 - Relative xml: 1. activity_join_rate.xml ### rateActivity.java, rateActivity2.java, rateActivity3.java - the rating system of carpool passengers - RatingBar: 評分星等 - Relative xml: 1. activity_rate.xml 2. activity_rate2.xml 3. activity_rate3.xml