莊海濤 田柏玉 錢旭
摘 要:目前,二手物品交易成為當代大學生課余生活的一大熱門。校園跳蚤市場商品多樣、價格低廉,備受同學們的青睞,有實體跳蚤市場和網上跳蚤市場兩種形式,仍以實體跳蚤市場為主。實體跳騷市場的功能很局限,交易效率低,無法很好地完成物品交換。而網上跳蚤市場,由于并不單獨針對高校學生,個人的安全便無法保障,在交易過程中容易上當受騙。針對以上的問題,為了滿足高校學生二手交易的需求,該文重點研究和設計了一款大學校園二手交易Android客戶端——高校網上跳蚤市場,它具有良好的創(chuàng)新性與實用性,利用在校大學生的學號信息進行實名注冊,使高校學生能夠更安全、更便捷地進行二手物品交易。
關鍵詞:二手交易 網上跳蚤市場 Android 實名注冊
中圖分類號:TP39 文獻標識碼:A 文章編號:1672-3791(2015)12(a)-0026-03
在高校里,傳統(tǒng)的二手交易形式一般表現(xiàn)為一年一度的跳騷市場,通常集中于畢業(yè)之際。首先,跳騷市場時間長度很局限;其次,在跳騷市場舉辦期間,會造成學校交通的擁擠;另外,同學在搜集二手物品信息時沒有目標性,交易效率很低。對于高校大學生這個群體,急需創(chuàng)建新型的大學校園二手物品交易平臺。
該文在Android平臺的移動終端下,設計開發(fā)了一個借助在校大學生學號信息實現(xiàn)實名注冊的高校網上跳蚤市場應用軟件,極大地提高了交易的可靠性。通過登錄個人賬號,可隨時管理個人主頁信息的發(fā)布與收藏。另外,在這款軟件中具有物品分類選項,加上個人對交易物品的文字描述和圖片展7示,更加方便同學們尋找自己需要的物品。相比傳統(tǒng)的二手交易方式有著更加強大的功能,在全國高校內具有很大的實現(xiàn)和使用價值。
該文主要說明了軟件架構設計、總體功能結構設計以及軟件實現(xiàn)。
1 軟件總體設計
1.1 軟件架構設計
“高校網上跳蚤市場”由客戶端和服務器端結合。客戶端主要負責與用戶進行交互,完成注冊、登錄、發(fā)布物品信息等操作;服務器負責對用戶的請求進行處理,并在客戶端和數(shù)據庫之間傳輸數(shù)據;客戶端與服務器則通過服務器接口進行相互通信[1]。
1.2 總體功能結構設計
為了滿足用戶需求,制定如下功能模塊,各功能模塊如圖1所示.
2 軟件實現(xiàn)
2.1 服務器
服務器提供一個API接口,當客戶端發(fā)來請求時,服務器會把請求中的字符串轉化成json格式的數(shù)據字段,然后根據請求字段中的type來轉入相應的程序流程處理請求[2]。
(1)用戶注冊。
用戶注冊會接收參數(shù)sno(學號),school(學校),password(密碼),qq(qq號),moblie(聯(lián)系電話),userName(用戶昵稱)六個參數(shù),然后根據學號和學校查詢未注冊用戶表中的用戶,將查到的用戶從未注冊的用戶表中刪除,在已注冊的用戶表中添加用戶并給相應的屬性復值,并根據用戶的密碼明文生成sha1加密用戶密碼,最后保存該用戶。
(2)用戶登錄。
用戶登陸請求會接收兩個參數(shù) username 和 password ,從已注冊的用戶表中查詢該用戶,如果查詢服務器根據當前的時間生成sessionid來標識本次會話,sessionid保存在會話表中,然后返回給客戶端sessionid,并將用戶昵稱字段存進cookie和session數(shù)據中,返回給客戶端。sessionid和用戶昵稱存進會話信息表中。如果在注冊的用戶表中查不到相應用戶則返回用戶不存在。
(3)獲取最近的物品發(fā)布信息。
用戶登陸后首先獲得最近期的10個交易,該請求接收兩個參數(shù)recent-start和recent-end表示獲得交易數(shù)量的起點和終點,首先請求會從請求頭中解析本次會話的sessionid,如果數(shù)據庫中包含該sessionid則表示該用戶現(xiàn)在是登陸狀態(tài),可以繼續(xù)進行請求。
(4)獲取用戶基本信息。
請求接收用戶昵稱參數(shù),從數(shù)據庫中查出該用戶后取出用戶的真實姓名,昵稱,學校,電話,qq號并封裝成字典返回。用戶不存在返回提示信息。
(5)發(fā)布一個物品。
接收上傳用戶昵稱,交易標題,簡介,類別參數(shù)。根據交易的標題和當前時間生成交易的sha1來唯一標識該交易,計算出當前時間,在數(shù)據庫交易表中創(chuàng)建一個新的交易,并將交易的屬性根據之前的參數(shù)賦值,之后保存該交易。返回該交易的sha1和上傳用戶昵稱。
圖片上傳在創(chuàng)建交易請求之后執(zhí)行,接收一個交易sha1參數(shù)和圖片的二進制數(shù)據參數(shù)。首先從圖片的二進制數(shù)據中獲取圖片名稱,根據名稱和當前時間生成圖片sha1來唯一表示。再由圖片的數(shù)據生成圖片文件和縮略圖文件并保存。最后在圖片表里創(chuàng)建一個圖片的數(shù)據,將所屬的交易sha1和圖片sha1存入數(shù)據庫。
(6)獲取單個發(fā)布物品的詳情。
請求接收交易的sha1和上傳用戶昵稱作為參數(shù)。首先根據交易sha1從數(shù)據庫中得到該交易,取出交易的類別,簡介,標題,時間屬性封裝成字典,返回屬性值。在根據用戶昵稱和交易sha1在用戶收藏表中取值,如果取到則表明用戶已經收藏,反之沒有收藏,返回是否收藏的標志。根據交易sha1在交易圖片表中取出交易圖片的sha1,返回圖片sha1[3]。
(7)收藏和取消收藏。
收藏:接收用戶昵稱和交易sha1參數(shù),然后根據昵稱和sha1在用戶收藏表中判斷該收藏是否存在,如果存在返回你已經收藏過,不存在就在用戶收藏表中添加一個收藏。
取消收藏:接收戶昵稱和交易sha1參數(shù), 然后根據昵稱和sha1在用戶收藏表中判斷該收藏是否存在,如果存在就刪除交易,不存在就會返回錯誤信息提示收藏不存在。
(8)獲取我發(fā)布的物品。
接收開始和結束的數(shù)量參數(shù),從session數(shù)據中獲取當前用戶昵稱,在根據開始和結束數(shù)量從交易表中取出制定數(shù)量的當前用戶發(fā)布的交易,再分別對每一個交易取出各項屬性,根據用戶收藏表判斷用戶是否收藏過,根據圖片表取出交易的圖片,把各項屬性值封裝成字典,形成一個屬性集合的列表,對列表按照時間排序后返回。
(9)獲取我收藏的物品。
接收開始和結束的數(shù)量參數(shù),從session數(shù)據中獲取當前用戶昵稱,根據用戶昵稱在收藏表中取出所有當前用戶收藏的交易sha1,再分別對每一個sha1取出對應的交易,取出交易的各項屬性值,在圖片表里取出對應圖片形成交易的信息的字典。把每個交易信息按照時間排序后返回。
(10)按照分類獲取發(fā)布的物品。
接收類別參數(shù),開始和結束的數(shù)量參數(shù)從session數(shù)據中獲取當前用戶昵稱,根據類別在交易表中找到所有當前類別的交易,在根據數(shù)量參數(shù)得到對應的交易,再分別對每一個交易取出所有屬性,在圖片表里取出對應圖片,在收藏表里取出當前用戶是否收藏過,形成一個交易的屬性的字典。返回所有交易字典的列表。
2.2 客戶端
手機客戶端采用android平臺。
程序中需要頻繁地發(fā)送http請求和接收http回復,如果將請求和回復分別在每一個activity中都進行定義的話,勢必會導致程序代碼量增大,結構混亂。同時,如果一個請求需要在不同的activity中執(zhí)行,就會出現(xiàn)重復定義的問題。因此,在整個應用中,最重要的就是對整體框架的搭建[4]。
(1)定義兩個接口CollegeBarterRequest和CollegeBarterResponse。
在CollegeBarterRequest中定義方法toJsonString()和getType()。toJsonString()用來將字符串轉換成http請求中需要用到的JSON數(shù)據,getType()返回當前請求的類型。
在CollegeBarterResponse中定義方法fromJsonString()、getType()和getStatus()。fromJsonString()用來將服務器返回的JSON數(shù)據進行解析,獲取需要獲得的字段值,getType()返回當前回復的類型,getStatus()返回是否正確的對數(shù)據進行解析。
在程序中每一個http請求和回復都要分別實現(xiàn)上述兩個接口。
(2)自定義一個CollegeBarterClient用來處理http的請求和回復。
在構造函數(shù)中,初始化應用程序需要訪問的服務器地址。
定義一個函數(shù)CollegeBarterResponse executeRemoteComm
and(CollegeBarterRequest request, AppData appData)。在這個函數(shù)中,需要初始化一個HttpPost,然后將需要上傳的數(shù)據添加到NameValuePair類型的參數(shù)里面,包括驗證用戶是否登錄的sessionId。在接收到http回復之后,通過request的不同類型對http回復執(zhí)行不同的操作。
(3)定義類CollegeBarterOperation實現(xiàn)一個Runnable接口。
在CollegeBarterOperation中,通過線程發(fā)送http請求,接收http請求后,通過handle.post進行通知。可以避免由于服務器沒有響應導致UI線程超時,應用程序出現(xiàn)ANR(Application No Response)的問題。
(4)定義接口CollegeBarterOperationListener。
在接口中定義方法onCollegeBarterOperationFinish()。在每一個需要進行服務器通訊的activity中實現(xiàn)這個接口,可以在當前activity中的onCollegeBarterOperationFinish()中接收到對應請求的回復,從而對回復進行處理。
3 結語
“高校網上跳蚤市場”是針對當前跳蚤市場的現(xiàn)狀和校園對跳蚤市場的需求開發(fā)的,目標人群是在校大學生。通過實名制的注冊與登錄,可以查看到發(fā)布者的個人真實有效的信息。因此,無論是對賣家還是對買家而言,都提供了一個良好的交易平臺。此外,軟件的功能設計完善,可做到更高效、更便捷地處理高校大學生的閑置物品,減少浪費,提高物品利用率。
參考文獻
[1] 楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010:88-91.
[2] 范懷宇.Android開發(fā)精要[M].北京:機械工業(yè)出版社,2012:154-156.
[3] 孟巖.Android組件模型評析(上)[J].程序員,2008(1):49-51.
[4] 張棟棟,徐峰.一個移動應用個性化集成框架的研究及其在Android平臺的實現(xiàn)[J].計算機科學,2014(11):63-68.