張晏齊,田 菲,楊 潔,楊樹媛
(新疆農業(yè)大學 計算機與信息工程學院,新疆 烏魯木齊 830052)
隨著互聯(lián)網技術的飛速發(fā)展和智能手機的廣泛應用,APP作為基于Android平臺開發(fā)的第三方應用,在智能手機的使用過程中扮演著越來越重要的角色。社團是大學生開展活動、認識新朋友的主要組織[1-3],但社團的繁雜性和隨意性使得社團的管理并不順利,雖然目前通過各種主流通信工具在一定程度上改善了此種狀況,但隨著“互聯(lián)網+”的提出,是否能夠實現(xiàn)一款專門將社團與互聯(lián)網緊密結合,以社團服務為目的的APP成為了人們關注的焦點。因此,研究傳統(tǒng)社團管理模式,利用互聯(lián)網技術和Android技術結合傳統(tǒng)社團管理模式和互聯(lián)網技術的新型社團管理模式將成為現(xiàn)代社團管理的新方向[4,5]。
系統(tǒng)采用模塊化設計方法,由社團展示、帖子管理和成員管理3個模塊組成,權限用戶包括社長、管理員和普通成員。系統(tǒng)功能模塊如圖1所示。
(1)社團展示模塊。該模塊主要實現(xiàn)社團介紹、社團展示、社團活動點贊、社團活動時間軸等功能,社團可通過這四個功能展示社團的各個方面,吸引新成員。
(2)成員管理模塊。該模塊主要實現(xiàn)申請入團、申請退團、分配職務、設置管理員、設置群組等功能,可對社團內成員進行有效管理聯(lián)系。
(3)帖子管理。該模塊主要實現(xiàn)管理員發(fā)帖、刪帖、刪回復和成員瀏覽帖子、帖子回復等功能,可以實時更新社團活動和意見反饋等信息。
在系統(tǒng)實現(xiàn)中,前臺頁面展示部分采用Java語言和XML語言以及Android Studio開發(fā)工具,后臺采用Java語言,數據庫采用SQLite。
圖1 系統(tǒng)功能模塊圖
根據新農大社團管理APP的調研需求,進行數據庫的邏輯設計,系統(tǒng)主要包含9個數據表:
(1)user(用戶表):用于管理用戶權限、角色信息。
(2)tb(社團表):用于管理各社團信息,如社團名、社團貼子數等。
(3)huifu(回復表):用于管理各帖子下回復的內容、所屬帖子、回復人等信息。
(4)tiezi(帖子表):用于管理各社團的帖子主題、內容、發(fā)帖人、所屬社團等信息。
(5)tieba_user(社團用戶關系表):用于建立各社團與用戶之間的關系。
(6)time (社團活動時間軸表):用于管理社團活動的日期、活動內容等信息。
(7)zhanshi(社團活動展示表):用于管理社團名、簡介等信息。
(8)join_tb(申請入團表):用于建立申請者與申請社團之間的聯(lián)系。
(9)quit_tb(申請退團表):功能同上。
1.3.1 界面設計
新農大社團管理APP的界面設計主要采用Android Studio自帶的TextView,EditView,Button,Listview等布局,其中Listview在功能實現(xiàn)中起著重要作用。Listview是Android應用開發(fā)中常用的組件,其通過列表形式展示數據,具有較強的可擴展性,通常還會給每一項綁定一個點擊時間,用于處理相應請求。該部分由item,適配器和數據三部分組成,根據適配器的不同可分為以下三類:
(1)ArrayAdapter。使用最為簡單,以數據集合為基礎,只顯示一行文本。
(2)BaseAdapter。具有較好的擴種行,可自定義出各樣式的布局。
(3)SimpleAdapter??煞奖愕貙祿熘械膬热萃ㄟ^列表形式展現(xiàn)出來。
本設計主要使用ArrayAdapter和繼承BaseAdapter的自定義適配器,可根據需要靈活動態(tài)地展示所需內容。
本設計中使用適配器的主要步驟如下:
(1)確定Listview所顯示的數據類型,根據不同的數據類型選擇相應的適配器。
(2)如果顯示的數據類型為單一的文本或列表,可使用固定的適配器,使用規(guī)定好的方法顯示數據:
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, ls)
(3)若要求顯示的數據多樣,則可選擇自定義適配器。自定義適配器繼承BaseAdapter,在使用時需要重寫:
@Override
public int getCount() {}
@Override
public Object getItem(int position) {}
@Override
public long getItemId(int position) {}
@Override
public View getView(int position, View convertView, final
ViewGroup parent) {}
在這四種方法中,最主要的是對第四種方法的重寫,其是實現(xiàn)自定義適配器的關鍵部分。
(4)重寫getView()方法需要確定添加在item中的元素,并將其逐一添加:
public View getView(int position, View convertView, final
ViewGroup parent)
{
database = s.openDatabase(mContext);
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewHolder holder = null;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.item_listview,
null);
holder = new ViewHolder();
holder.button = (Button) convertView.findViewById(R.id.
dianzan);
holder.count = (TextView) convertView.findViewById(R.id.
count);
holder.info = (TextView) convertView.findViewById(R.id.
info);
holder.shetuan = (TextView) convertView.findViewById(R.id.
shetuan);
holder.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.updateposition(position);
final ViewHolder finalHolder = holder;
holder.button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
count = finalHolder.bt(mContext,iid,count);
notifyDataSetChanged();
}
});
holder.title.setText(title.get(position));
holder.shetuan.setText(shetuan.get(position));
holder.info.setText(info.get(position));
holder.count.setText(count.get(position));
holder.button.setTag(position);
return convertView;
};
(5)當需要對item進行點擊、長按等操作時可以在Java文件中定義:
//長按item響應事件
list View.set OnItemLong ClickListener(new
OnItemLong ClickListener()
{
@Override
public boolean onItemLongClick(final AdapterView<> parent,
View view, final
int
position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(shetuan_
guanli.this);
builder.setTitle("選擇以下操作")
.setItems(new String[]{"刪除數據 "}, new
DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
case ACTION_DELETE:
//取出ls2中的id的值
String tiezi_id = ls2.get(position);
String a[] = {tiezi_id};
//在huifu表中刪除帖子的回復
database.delete("huifu", "post_id=?", a);
//在tiezi表中刪除這條信息
database.delete("tiezi", "id=?", a);
//查找tb表中的tz_num將其-1
String b[] = {String.valueOf(tbid)};
cursor = database.rawQuery("select * from tb where
id=?", b);
if (cursor.moveToFirst())
{
tznum = cursor.getInt(cursor.getColumnIndex("tz_num")) - 1;
}
//在tb表中修改tz_num
ContentValues values = new
ContentValues();values.put("tz_num", tznum);database.update("tb", values, "id
=?", b);
ls2.remove(parent);
mBaseAdapter.remove(position);
//調用適配器的刪除方法break;
}
}
});
AlertDialog dialog = builder.create();
dialog.show();
return true;
}
})
1.3.2 服務器設計
部分服務器使用Java語言開發(fā),其中網絡通信使用HTTP協(xié)議。
超文本傳輸協(xié)議是互聯(lián)網應用最廣泛的一種網絡協(xié)議。HTTP協(xié)議是客戶端和服務器請求和應答的標準,采用了請求/響應模型。由客戶端向服務器發(fā)送請求,包含請求的方法,URL,協(xié)議版本,請求修飾符,客戶信息等。服務器以某狀態(tài)行為響應,響應的內容包括消息協(xié)議版本,成功或錯誤編碼,服務器信息,實體元信息以及可能的實體內容等。本項目考慮到安全性、數據長度及類型,采用POST請求。
數據交換格式采用JSON。JSON是一種輕量級數據交換格式,其鍵值對可同時傳輸多個數值,且方便區(qū)分使用。在本項目服務器與客戶端交換數據過程中,有數組與列表的傳輸,通過JSON的傳輸方式可方便地交換較復雜的數據類型。
{"content":["說的真好","很期待啊 ","進入這個社團是正確的 "],
"username":["admin","admin","admin"],"id":["1","2","4"]}
1.3.3 結果展示
將社團信息和社團成員集中管理是本文研究的重點。社團信息管理可極大地凸顯社團的優(yōu)勢,吸引成員加入;社團成員可對社團的發(fā)展現(xiàn)狀有直觀的了解。登錄界面如圖2所示,主界面如圖3所示,群組展示界面如圖4所示,社團展示界面如圖5所示。
圖3 主界面
圖2 登錄界面
圖4 群組展示界面
圖5 社團展示界面
本文設計并完成了基于Android的新農大社團管理APP,實現(xiàn)了各社團基本信息以及活動內容的管理與展示,同時實現(xiàn)了對社團成員基本信息、退團、入團、回復帖子等功能的管理,達到了社團管理簡潔化的目的。
[1]滕佶祺,陳霖,鐘谷朋,等.社團與活動系統(tǒng)的安全設計與實現(xiàn)[J].信息安全與技術,2017,8(6):26-29.
[2]李錦康.基于Android的智慧校園生活互動[J].通訊世界,2016 (9):280.
[3]李盼.高校學生社團的功能研究[D].重慶:西南大學,2016.
[4]胡月,王以寧,徐鵬,等.互聯(lián)網時代教育類APP開發(fā)——美國《教育技術開發(fā)人員指南》手冊解讀及啟示[J].中國電化教育,2015(12):41-48.
[5]常青.高校學生社團問題研究[D].長春:東北師范大學,2012.
[6]彭林,于國龍,宋敏,等.高校社團管理系統(tǒng)設計與實現(xiàn)[J].物聯(lián)網技術,2017,7(2):113-114.
[7]陳振起.某高校社團管理系統(tǒng)設計與實現(xiàn)[D].廈門:廈門大學,2014.
[8]董彩華,梁敏健,郭振銘.高校社團管理系統(tǒng)的設計與實現(xiàn)[J].電腦與電信,2017(1-2):28-30.