王落凡 穆翠霞
摘要:基于詩詞愛好者的移動學(xué)習(xí)和交流需求,提供一個詩詞信息檢索和詩詞學(xué)習(xí)交流的網(wǎng)絡(luò)平臺,采用SSM框架、Java語言和MySQL數(shù)據(jù)庫,設(shè)計(jì)和開發(fā)了基于Android的我愛詩詞App,移動端實(shí)現(xiàn)了詩詞相關(guān)信息的分類存儲和檢索以及用戶間的交互功能。Web后臺實(shí)現(xiàn)了詩詞、用戶以及推送信息等管理功能。該系統(tǒng)功能簡潔實(shí)用,界面友好,運(yùn)行穩(wěn)定,能夠滿足詩詞愛好者網(wǎng)絡(luò)學(xué)習(xí)交流的基本需求。
關(guān)鍵詞:App;詩詞;Android;Web設(shè)計(jì)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)20-0077-03
Designing and Implementation of I Love Poems App
WANG Luo-fan, MU Cui-xia
(China Womens University, Beijing 100101, China)
Abstract: Based on the mobile learning and communication demand of the poems lovers, in order to provide a network platform of poems information retrieval and communication, it used SSM framework, the Java language and MySQL database to design and develop I Love Poems App based on the Android system. The platform realized such functions as the classification storage and retrieval of the poems information for poems lovers, poems management, users management and activities management for system administrators. The system has simple and practical functions, friendly interface and stable operation, which can meet the basic needs of online learning and communication of poems lovers.
Key words: App; poems; Android; Web designing
1 背景
唐詩宋詞是中國傳統(tǒng)文化的重要組成部分,也是中華民族的重要精神財(cái)富,需要人們不斷地去挖掘、繼承和弘揚(yáng)。重溫文化經(jīng)典,鑒賞其豐富情感和無窮韻味,增強(qiáng)對傳統(tǒng)文化的熱愛與尊崇以及自身鑒賞能力,可以激發(fā)人們的文化自信?!蛾P(guān)于實(shí)施中華優(yōu)秀傳統(tǒng)文化傳承發(fā)展工程的意見》中指出,實(shí)施中華優(yōu)秀傳統(tǒng)文化傳承發(fā)展工程,對于傳承中華文脈、全面提升人民群眾文化素養(yǎng)、維護(hù)國家文化安全、增強(qiáng)國家文化軟實(shí)力,具有重要意義。另外,在如今快節(jié)奏生活中,唐詩宋詞可喚醒人們生命中的詩意和內(nèi)心的安寧,讓人們從傳統(tǒng)文化中汲取營養(yǎng),成為生活的情趣與情懷。隨著移動網(wǎng)絡(luò)的飛速發(fā)展和智能手機(jī)的普及,人們的學(xué)習(xí)和生活方式發(fā)生了改變,詩詞類App也應(yīng)運(yùn)而生。人們期望用手機(jī)隨時隨地學(xué)習(xí)詩詞,也可以隨時隨地向他人分享自己的作品,與好友進(jìn)行互動。
隨著《詩詞大會》節(jié)目大火以及一系列傳統(tǒng)文化節(jié)目開播,社會上掀起傳統(tǒng)文化學(xué)習(xí)的熱潮,唐詩宋詞重返人們的日常生活?;谠娫~愛好用戶和隨時隨地學(xué)習(xí)與交流的需求,設(shè)計(jì)和開發(fā)了我愛詩詞App,為詩詞愛好者進(jìn)行學(xué)習(xí)、鑒賞、傳播、交流提供了便捷、友好的服務(wù)平臺。下文將從系統(tǒng)需求分析、設(shè)計(jì)和實(shí)現(xiàn)等幾個方面對我愛詩詞App進(jìn)行闡述。
2 系統(tǒng)需求分析
我愛詩詞App,主要滿足詩詞愛好者在手機(jī)移動端的學(xué)習(xí)和交流[1-2]。系統(tǒng)主要有兩類用戶:詩詞愛好者用戶和系統(tǒng)管理員。用戶用例圖如下圖1所示。
詩詞愛好者用戶(手機(jī)端)的主要功能需求包括:
1)詩詞歌賦:詩詞分類存儲和檢索;
2)詩人檔案:詩詞作者的信息管理;
3)以詩會友:用戶發(fā)表作品、評論、點(diǎn)贊、舉報(bào)、加好友等;
4)詩詞名句對:人機(jī)對詩詞上下句,設(shè)置積分排行榜等;
5)資訊推送:詩詞名家講解、詩詞活動比賽信息推送等;
6)個人中心:用戶的個人信息管理;
7)用戶的注冊和登錄。
系統(tǒng)管理員(Web后臺)的主要功能需求包括:
1)詩詞管理:對詩詞進(jìn)行增刪改查等;
2)用戶管理:對用戶的基本信息和發(fā)表內(nèi)容進(jìn)行查詢;
3)舉報(bào)管理:對被舉報(bào)人和信息進(jìn)行禁言和刪除等;
4)推送管理:活動信息等管理。
3 系統(tǒng)設(shè)計(jì)
依據(jù)前端和后臺的兩類用戶角色的功能需求分析,該系統(tǒng)功能模塊如下圖2所示,主要包括:注冊/登錄、詩詞查詢、詩人查詢、以詩會友、詩詞名句對、活動比賽信息推送、個人中心以及Web后臺管理等。
在需求分析和總體功能模塊劃分的基礎(chǔ)上,給出數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì),包含以下10個數(shù)據(jù)庫表:
1)用戶(用戶id,用戶名,密碼,電話號,性別,生日,頭像,狀態(tài),積分);
2)詩詞(詩詞id,詩詞名,作者,詩詞內(nèi)容,類型id);
3)作者(詩人id,詩人姓名,生平);
4)評論(評論id,用戶id,作品id,評論內(nèi)容,評論時間);
5)作品(作品id,用戶id,作品名,內(nèi)容,點(diǎn)贊數(shù),創(chuàng)建時間);
6)舉報(bào)(舉報(bào)id,用戶id,作品id);
7)活動(活動id,標(biāo)題,內(nèi)容);
8)通訊錄(通訊錄id,主加人id,被加好友id);
9)比賽(試題id,上句,下句,出處);
10)管理員(管理員id,用戶名,密碼)。
4 系統(tǒng)功能實(shí)現(xiàn)
下面從開發(fā)技術(shù)與軟硬件環(huán)境配置、主界面設(shè)計(jì)效果以及關(guān)鍵功能實(shí)現(xiàn)等方面闡述我愛詩詞App的系統(tǒng)實(shí)現(xiàn)。
4.1 開發(fā)技術(shù)與環(huán)境
我愛詩詞App的開發(fā),選用Eclipse開發(fā)手機(jī)端和MyEclipse開發(fā)后臺管理端,采用JDK 1.7集成開發(fā)環(huán)境和Tomcat7服務(wù)器。選擇開源MySQL數(shù)據(jù)庫,采用當(dāng)前流行且兼容性較好的JAVA語言。手機(jī)系統(tǒng)Android4.3。
采用MVC(Model-View-Controller)模式,將數(shù)據(jù)、業(yè)務(wù)邏輯、界面顯示相分離。采用JavaScript實(shí)現(xiàn)Web頁面的交互效果,采用jQuery框架簡化了JavaScript編程,而且jQuery框架直接支持AJAX編程。采用了SSM(SpringMVC-Spring-Mybatis)框架實(shí)現(xiàn)Web后臺業(yè)務(wù)[3]。在前端和后端的請求和數(shù)據(jù)的傳輸采用了JSON(JavaScript Object Notation)存儲。
4.2 主界面設(shè)計(jì)
普通用戶主界面和Web后臺主界面如下圖3和圖4所示[4]。其中普通用戶主界面,選擇了中國詩詞傳統(tǒng)文化中常用的意象竹、鶴、舟等作為背景元素,淡灰色作為主色調(diào),給人以朦朧、寧靜、悠遠(yuǎn)的視覺和心理感受。
4.3 關(guān)鍵功能實(shí)現(xiàn)
1)前后端數(shù)據(jù)庫連接[5]
用戶手機(jī)端和Web后臺需要連接同一個數(shù)據(jù)庫。在開發(fā)Android端時,使用httpclient訪問網(wǎng)絡(luò)連接Tomcat服務(wù)器,再由服務(wù)器讀取數(shù)據(jù)庫來實(shí)現(xiàn)數(shù)據(jù)的增刪改查。前端接收返回信息并進(jìn)行操作的關(guān)鍵代碼實(shí)現(xiàn)如下:
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
JSONObject o = null;
JSONArray a = null;
if (entity != null)
{ String contentString = EntityUtils.toString(entity);
Log.i("ju", contentString);
o = new JSONObject(contentString);
int status =o.getInt("status");
String str =o.getString("str");
Log.i("ju","status:"+ status);
if (status != 1)
{
Log.i("ju","status:"+ status);
return list;
}
Gson gson = new Gson();
list = gson.fromJson(str, new TypeToken>(){}.getType());
//json轉(zhuǎn)為list
}
httpclient.getConnectionManager().shutdown();
2)詩詞查詢
詩詞查詢有兩種查詢方式,一種是通過輸入關(guān)鍵詞查詢詩名,另一種是通過頁面提供常見的類別查詢。用戶輸入關(guān)鍵詞,點(diǎn)擊“查詢”后,會驗(yàn)證查詢是否為空,并給出提示。查詢不為空時,則跳轉(zhuǎn)到所有詩名中含有關(guān)鍵詞的列表,點(diǎn)擊列表中的一首詩,則會跳轉(zhuǎn)到相應(yīng)的詩詞詳情頁面,點(diǎn)擊詳情中的詩人姓名,可以跳轉(zhuǎn)到相應(yīng)的作者詳情頁面。類別查詢時,點(diǎn)擊一個類別,則會跳轉(zhuǎn)到屬于該類別的所有詩詞的列表。實(shí)現(xiàn)關(guān)鍵代碼如下:
判斷查詢是否為空:
if("".equals(etsearch.getText().toString().trim())){
Toast.makeText(this, "查詢不能為空!", Toast.LENGTH_SHORT).show();
}
else{
poemController.opensearch(str);
}
關(guān)鍵字查詢數(shù)據(jù)庫操作:
select * from poem where poemname like concat('%',#{poemname},'%')
查詢成功后跳轉(zhuǎn)頁面:
List
Intent i = new Intent(activity, PoemSearchActivity.class);
i.putExtra("listTemp", (Serializable)listTemp);
activity.startActivity(i);//跳轉(zhuǎn)
類別查詢數(shù)據(jù)庫操作:
select * from poem where type like concat('%',#{type},'%')
類別查詢,成功后跳轉(zhuǎn)頁面:
List
Intent i = new Intent(activity, PoemSearchActivity.class);
i.putExtra("listTemp", (Serializable)listTemp);
activity.startActivity(i); //跳轉(zhuǎn)
3)詩人信息的動態(tài)模糊查詢[6]
在主界面點(diǎn)擊“詩人檔案”,進(jìn)入詩人查詢頁面。在搜索框?yàn)榭諘r,會展示所有詩人列表;輸入文字時,會進(jìn)行動態(tài)的模糊查詢。點(diǎn)擊列表中的詩人,可進(jìn)入詩人詳情頁面。動態(tài)模糊查詢的關(guān)鍵代碼如下:
public void onTextChanged(CharSequence s, int start, int before, int count) {//文字改變時
try {//更新界面
authorListController.updateSearch(etauthorsearch.getText().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public void updateView(List
if (listTemp != null) {
list.clear()//清空原本列表
list.addAll(listTemp);//添加新列表
}
Aadapter.notifyDataSetChanged();//更新界面
}
4)以詩會友中的發(fā)表和評論作品[6]
用戶點(diǎn)擊“以詩會友”后,進(jìn)入“以詩會友”的主界面,可以看到所有用戶的所有作品。用戶可以點(diǎn)擊“增加”按鈕跳轉(zhuǎn)到增加作品的頁面,完成作品后,點(diǎn)擊“發(fā)表”,回到“以詩會友”的主界面。用戶點(diǎn)擊某作品時,會進(jìn)入該作品的詳情頁面,用戶可以對該作品進(jìn)行評論、點(diǎn)贊、舉報(bào)等。實(shí)現(xiàn)關(guān)鍵代碼如下:
case R.id.bt_submitwriting://點(diǎn)擊提交,發(fā)表作品
Intent intent=getIntent();
String tmp = intent.getStringExtra("userid");
int userid = Integer.valueOf(tmp);//獲取userid
Writing writing = new Writing();
writing.setWname(et_addwname.getText().toString());
writing.setWriting(et_addwrite.getText().toString());
writing.setUserid(userid);
writingController.add(writing);//添加
AddWritingActivity.this.finish();
break;
public void onClick(View arg0) {//發(fā)表評論
String comment = et_comment.getText().toString();
wid=writing.getWid();
Intent intent=getIntent();
String tmp = intent.getStringExtra("userid");
int userid = Integer.valueOf(tmp);//獲取userid
System.out.println("wd is"+wid);
commentController.addcomment(comment,wid,userid);//增加評論
}
public void refresh() {
list.clear();
onCreate(null);//頁面刷新
}
5)詩詞名句對中的排行榜實(shí)現(xiàn)
select username,point from friendlist join user
on friendlist.frienduserid=user.userid
where mainuserid=#{userid};
Web后臺管理主要實(shí)現(xiàn)了系統(tǒng)管理員的用戶管理、詩詞管理、詩人管理和推送管理的增、刪、改、查等基本操作功能,具體實(shí)現(xiàn)不再贅述。
5 結(jié)束語
我愛詩詞App系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),為詩詞愛好者提供了一個方便、快捷的詩詞詩人檢索、學(xué)習(xí)和交流的網(wǎng)絡(luò)平臺,實(shí)現(xiàn)了詩詞歌賦、詩人檔案、以詩會友、詩詞名句對、資訊推送、個人中心、后臺管理等功能。今后,還需要研究完善的方面,比如詩詞以及詩人信息中可以加入音頻、視頻和圖片等內(nèi)容元素,詩詞名句對還可以擴(kuò)展為更靈活的動態(tài)測試方式等。
參考文獻(xiàn):
[1] 舒一. 基于Android系統(tǒng)的古典詩詞鑒賞App軟件的設(shè)計(jì)與開發(fā)[J]. 河南教育: 高校版, 2016(10): 25-27.
[2] 何瓊露, 王小明. 基于Android的小學(xué)古詩App設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊: 教育技術(shù), 2015, 14(7): 85-86.
[3] 楊開振. Java EE互聯(lián)網(wǎng)輕量級框架整合開發(fā)—SSM框架和Redis實(shí)現(xiàn)[M]. 北京: 電子工業(yè)出版社, 2017.
[4] 唐亮, 杜秋陽. Android開發(fā)基礎(chǔ)[M]. 北京: 高等教育出版社, 2016.
[5] 王慶喜, 趙浩婕. MySQL數(shù)據(jù)庫應(yīng)用教程[M]. 北京: 中國鐵道出版社, 2016.
[6] 唐亮, 王洋. Java開發(fā)基礎(chǔ)[M]. 北京: 高等教育出版社, 2016.