张 四川信息职业技术学院
本设计主要利用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,即采用红黑树的数据结构对元素进行排序,找出集结点。这对软件开发者要求比较高。