張 四川信息職業技術學院
本設計主要利用Android 平臺設計并開發一款線上集結、線下聚會的社交網絡應用軟件。旨在工作會議、旅游行程和日常聚會時,能方便、快速集合響應者,提前測算響應者在時間上的統一點,高效能地提高工作效率、降低會議發起者的時間成本,合理利用響應者的時間節點。從而利用實現一個足夠小的需求點,滿足大眾人群高頻率的使用。
Android是基于Linux內核的操作系統,從互聯網角度設計開發而來,能真正支持移動互聯網用戶的需求。隨著無線網絡的全覆蓋概念提出和智能終端的普及,Android應用軟件開發平臺的免費安裝和使用,都為軟件開發者提供了最有力的工作基礎和條件支持。
Android平臺采用軟件堆層的架構,主要分為底層、中間層和應用層。應用層實現客戶端用戶界面時,通過圖形化的界面設計,減少用戶認知負擔,建立與用戶的互動交流平臺,實現聚會邀約APP的前端設計與開發。在界面設計同時引入地圖導航提示行動路線。地圖導航可以時時顯示各響應者地理位置,通過GPS電子簽到,匯總集結情況,用于確保集結的空間統一。
Android平臺下的應用軟件由設計者自行開發,以Java作為編寫程序的主要語言。在設計智能測算時間集合點時可以尋找集合相關函數,可以用到HashMap/Hashtable/HashSet等。借助hashcode()方法和equals()函數來實現判斷元素是否已經存在于HashMap/Hashtable/HashSet任意選用的一個函數中。如果向Hashtable中查詢元素A是否存在,就可以采用hashcode()方法。如果A元素的hash值不存在,則直接插入。否則,接著調用equals()方法,判斷A元素在容器中是否已經存在。hashcode()的時間復雜度為O(1),equals()方法的時間復雜度為O(m),整體的時間復雜度就是:O(1) + O(m)。其中,m是容器桶的深度,這里指具有相同hashcode值得元素個數。在一般情況下,經過哈希算法后的這個值為1,這是由哈希算法具有一定唯一性確定的。這是利用“空間換時間”的做法,大大節省了反應時間,快速查詢到數據。
所謂哈希算法就是可以將任意長度的二進制值映射為較短的,固定長度的二進制值。通常把這個二進制值稱為哈希值(Hash)。Hash是通過某種算法,把一個字符串"壓縮" 成的一個整數。相同的字符串只會映射出同一個哈希值,且結構緊湊;在一定范圍內,不可能找到生成同一個哈希值的2個不同字符串。借助這種映射出來的唯一性,應用到集合中可以既快速又安全地查詢元素是否存在。
本設計要測算時間的集合,為了加速查找比對的速度,可以將時間數據都做成字符串形式,映射到一個哈希表(HashTable)中。哈希表也叫散列表,是根據關鍵字值(Key value)而直接進行訪問的數據結構。
哈希表作為一種數據機構,通過把關鍵字值映射到表中一個位置來訪問記錄。這個映射函數叫做哈希函數,存放記錄的數組叫做哈希表。給定表M,存在函數f(key),對任意給定的關鍵字值key,代入函數后若能得到包含該關鍵字的記錄在表中的地址,則稱表M為哈希(Hash)表,函數f(key)為哈希(Hash) 函數。利用函數查詢關鍵字值是否在哈希表中存在,如果不存在,則插入,如果存在則返回。簡單地理解哈希表,它類似于數組,是查詢效率最高的且安全可靠的數據結構,因為不管數組的容量多大,查詢的時間復雜度都是O;同時哈希算法又具有一定的唯一性。
本文的研究思路是“發起人”吹響“集結號”,派發“英雄帖”,匯集響應者可以占用時間段或者不能占用的時間段。通過軟件編程測算時間集結點,由“發起人”最終反饋聚會事項、時間、地點的“集結卡”并定時提醒響應者集結。當響應者迷路時,可以通過地圖導航提示行動路線。地圖導航時時顯示各響應者地理位置,通過GPS電子簽到,匯總集結情況。
在Java軟件編程中,為了高效快速的測算響應者會議時間上的統一,選用哈希函數編程。將上班時間或者發起者設定的預約時間按每10分鐘分割成一個字符串,利用Hashtable函數構造一個哈希表,并將哈希值賦值給一個數組用于存放相對應的時間段。這個哈希表本身將會是一個大數組,其容量根據程序的要求設定。每個Hash值再通過取模運算(mod)對應到新數組中。在新數組中查找每一位響應者的哈希值是否存在于Hashtable中,返回該哈希值并計算占用的位置個數。通過占用位置的個數來判斷響應者能否參會。通過比對每個能參會的響應者的哈希值出現的次數,次數最多且排位最前面的哈希值作為會議的時間起點。時間起點又可以通過最先賦值的數組中查詢。
在發起者發布“英雄帖”時,應注明會議時間長度值。編程時,引入一個INT值,該INT等于會議時間長度值/10取整。如果占用位置為0,可以視為不能參會的人。如果占用位置小于INT值,可以視為參會時間不足,要提前離場的人,可以考慮是否提前發言。考慮到會議中,存在必須到場者的情況,可以通過界面設定響應者優先級。
本設計就是通過軟件編程,充分發揮計算機強大的計算功能,體現活動的人性化,積極全面、合理地利用響應者的時間,高效完成會議邀約集結任務。
時下流行的騰訊QQ、微信等社交網絡軟件中出現的“群”功能,促進了人們的交流與協調溝通,但是“群”僅僅是實現了信息的發布、響應者的意見羅列,不能真正利用智能終端完成智能測算各響應者在時間、空間的集結。本設計最終可以達到利用社交網絡平臺,實現響應者在時間上的集結,確定受邀赴會人數、時間;定時提醒響應者參與集結,實時掌握邀約和集結結果,保證集結任務順利開展;響應者回復“英雄帖”時可以填寫不能參加會議的時間段,通過后臺處理轉換為能參加會議時間段。同時參加會議后可以通過GPS進行電子簽到、點評照片、分享日志保證集結的安全和互動效果。設計還可以進行愛心集結,創建區域內的“朋友圈”。
不足之處在于,Hashtable函數決定元素的存儲位置,采用“順延”實現位置查詢與比對,是用“空間換時間”的做法。如果受邀響應者數據過大,內存占用不夠時,程序測試會癱瘓。介于此,可以采用“鏈表”,比如TreeSet,即采用紅黑樹的數據結構對元素進行排序,找出集結點。這對軟件開發者要求比較高。