摘? 要:移動設(shè)備的大范圍普及極大地促進(jìn)了移動辦公的發(fā)展,Android系統(tǒng)的開放性也為此提供了很大的便利。移動辦公系統(tǒng)很好地解決了傳統(tǒng)辦公系統(tǒng)存在的時(shí)間和空間上的限制,極大地提高了辦公效率,改善了辦公體驗(yàn)。文章綜合Web端和移動端設(shè)計(jì)了基于Android的移動OA辦公系統(tǒng),Web端主要運(yùn)用了SSM框架,實(shí)現(xiàn)了系統(tǒng)交互以及移動端與服務(wù)器的通信;移動端使用Kotlin語言,主要實(shí)現(xiàn)了用戶登錄、打卡簽到、查看公告、個人中心等功能。
關(guān)鍵詞:移動辦公;SSM;安卓
中圖分類號:TP311.52? ? ? 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2020)16-0104-03
Mobile OA Office System Based on Android
YU Xiaoli
(College of Computer Information Engineering,Nanchang Institute of Technology,Nanchang? 330044,China)
Abstract:The popularity of mobile devices has greatly promoted the development of mobile office,and the openness of Android system also provides great convenience. Mobile office system can solve the time and space defects of the previous office system,greatly improve the office efficiency and improve the office experience. A mobile OA office system based on Android is designed by integrating Web and mobile terminal. SSM framework is mainly used in Web side to realize system interaction and communication between mobile terminal and server. The mobile terminal uses Kotlin language,which mainly realizes the functions of user login,check-in and clock out,view announcement,personal center and so on.
Keywords:mobile office;SSM;Android
0? 引? 言
為了滿足南昌理工學(xué)院計(jì)算機(jī)信息工程學(xué)院教師希望能夠隨時(shí)隨地辦公的需求,作者帶領(lǐng)學(xué)生開發(fā)了基于Android的移動OA辦公系統(tǒng),系統(tǒng)分為Web端和移動端,Web端主要功能有用戶登錄、公告管理、人員管理和個人中心等,移動端主要功能有用戶登錄、打卡簽到、個人中心、即時(shí)通信和查看公告等。
該系統(tǒng)很好地支持南昌理工學(xué)院計(jì)算機(jī)信息工程學(xué)院教師在不同地點(diǎn)、不同時(shí)間的辦公,讓教師擺脫了時(shí)間和空間的限制,有效地提高了辦公效率,解決了教師不能隨時(shí)獲取和處理辦公文件的問題。
本系統(tǒng)面向的用戶角色包括:
(1)系統(tǒng)管理員:系統(tǒng)管理員是為了辦公系統(tǒng)能夠正常運(yùn)行而存在的角色,主要負(fù)責(zé)維護(hù)數(shù)據(jù)庫、管理賬號、更新信息以及管理系統(tǒng)的常規(guī)化運(yùn)行。
(2)普通用戶:普通用戶通過移動端等各種類型的終端登錄辦公系統(tǒng),從而完成各項(xiàng)任務(wù),達(dá)到移動辦公的目的。
(3)管理層用戶:管理層用戶較普通用戶而言擁有更多的權(quán)限,管理層用戶主要可以在Web端對員工發(fā)布公告、下達(dá)命令、指定任務(wù)等。
1? 系統(tǒng)架構(gòu)設(shè)計(jì)
本文所設(shè)計(jì)的OA辦公系統(tǒng)架構(gòu)由移動端、Web端、Web服務(wù)器、數(shù)據(jù)庫服務(wù)器四個部分組成,各部分通過無線網(wǎng)絡(luò)互連,系統(tǒng)架構(gòu)如圖1所示。
在本系統(tǒng)架構(gòu)中,系統(tǒng)管理員可以通過Web端網(wǎng)頁登入系統(tǒng)后臺,對系統(tǒng)進(jìn)行操作。普通用戶和管理層用戶使用移動端登錄系統(tǒng),與系統(tǒng)進(jìn)行交互。移動端通過調(diào)用接口的方式發(fā)送請求到Web服務(wù)器,Web服務(wù)器響應(yīng)移動端的請求做出相應(yīng)的處理,再將自身從數(shù)據(jù)庫中獲取的數(shù)據(jù)處理好返回給移動端。
2? 系統(tǒng)核心功能設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)在Web端和移動端都使用了MVC結(jié)構(gòu)進(jìn)行設(shè)計(jì),視圖層、數(shù)據(jù)持久層和控制層的分離有效地降低了系統(tǒng)的耦合性,使得系統(tǒng)具備了良好的框架結(jié)構(gòu),易于后期對系統(tǒng)的維護(hù)和擴(kuò)展。系統(tǒng)核心(部分)功能如圖2所示。
2.1? Web端公告管理
管理層用戶登錄后可以對公告進(jìn)行增刪改查等操作,Web端公告管理界面如圖3所示。
該功能核心代碼如下:
@RequestMapping("/noticelist")
public ModelAndView findall(@RequestParam(name="page",required = true,defaultValue = "1")int page,@RequestParam(name="size",required=true,defaultValue = "5") int size,@RequestParam(name="flag",required = true,defaultValue = "allResult")String flag,@RequestParam(name="keywords",required = true,defaultValue = "")String keywords)throws Exception {
ModelAndView mav = new ModelAndView ();
if(flag.equals("allResult")) {
flag = "allResult";
mav.addObject("flag", flag);
List
PageInfo
mav.addObject("pageInfo",pageInfo);
}else if(flag.equals("partResult")) {
flag = "partResult";
mav.addObject("flag", flag);
mav.addObject("keywords", keywords);
PageHelper.startPage(page, size);
List
PageInfo
mav.addObject("pageInfo",pageInfo);
}
return mav;
}
以上代碼主要實(shí)現(xiàn)了查詢所有公告并將其返回給前端界面的功能。如果flag為allResult則首先調(diào)用nservice.findall (page,size)方法在數(shù)據(jù)庫中查詢所有公告,將該方法返回的數(shù)據(jù)保存在all對象中再執(zhí)行PageInfo
2.2? 移動端用戶登錄
移動端用戶登錄界面模擬展示如圖4所示移動端用戶登錄。
實(shí)現(xiàn)移動端用戶登錄的主要代碼如下所示:
(1)登錄流程代碼為:
login.setOnClickListener {
val loginDao = LoginDao()
if(isFirstLogin =="true"){
//賬號密碼登錄
loginFlag = loginDao.login(account.toString (),MD5.MD5(password.toString()))
if(loginFlag == "success") {
//從服務(wù)器獲取token
token = loginDao.getTokenFromWeb()
//保存token到Sqllite
loginDao.saveToken(token)
}
loginCheck(loginFlag)
} else if(isFirstLogin =="false"){
//獲取token
token = loginDao.getToken()
//用token向服務(wù)器發(fā)登錄送求
loginFlag = loginDao.loginByToken(token)
loginCheck(loginFlag)
}
}
(2)登錄校驗(yàn)代碼為:
//登錄校驗(yàn)
private fun loginCheck(loginFlag:String){
if(loginFlag == "success"){
isFirstLogin = "false"
val intent = Intent(this,MainActivity::class.java)
startActivity(intent)
this.finish()
}else if(loginFlag == "fail"){
//清空賬號密碼
account.setText("")
password.setText("")
//彈出提示
toast("用戶名或密碼錯誤!")
}
}
以上代碼的業(yè)務(wù)邏輯為判斷用戶是否為第一次登錄,如果是第一次登錄則執(zhí)行l(wèi)oginDao.login(account.toString(), MD5.MD5(password.toString()))方法,向服務(wù)器發(fā)送請求,獲取服務(wù)器返回的數(shù)據(jù)保存到loginFlag中,如果loginFlag為success則執(zhí)行l(wèi)oginDao.getTokenFromWeb()方法從服務(wù)器獲取生成的token,然后再保存在移動端的SQLite數(shù)據(jù)庫中,之后再調(diào)用loginCheck(loginFlag)方法判斷是否進(jìn)入主頁面。若不是第一次登錄,則先調(diào)用loginDao.getToken()方法獲取保存在SQLite數(shù)據(jù)庫中的token,再調(diào)用loginDao.loginByToken(token)方法向服務(wù)器發(fā)送登錄請求,最后再調(diào)用loginCheck(loginFlag)方法判斷是否進(jìn)入主頁面。
2.3? 移動端查看公告
在移動端查看公告功能的實(shí)現(xiàn)過程中,移動端與服務(wù)器端通信的方法與移動端用戶登錄類似。用戶登錄后可以查看所有公告,點(diǎn)擊某一條公告時(shí)就能查看到該條公告的詳細(xì)信息。移動端查看公告界面的模擬展示如圖5所示。
3? 結(jié)? 論
本文設(shè)計(jì)并實(shí)現(xiàn)了一個具有Web端和移動端的移動OA辦公系統(tǒng),使用SSM框架,搭建Web服務(wù)器作為數(shù)據(jù)交互的后臺并設(shè)計(jì)了Web前端頁面。本文使用JSON格式的數(shù)據(jù)作為服務(wù)器端與移動端數(shù)據(jù)傳輸格式,設(shè)計(jì)了優(yōu)美移動端界面,系統(tǒng)主要實(shí)現(xiàn)了用戶登錄、公告管理、打卡簽到等功能。由于系統(tǒng)處在測試階段,部分功能還有待進(jìn)一步優(yōu)化。
參考文獻(xiàn):
[1] 程亮.基于Android的移動政務(wù)OA客戶端設(shè)計(jì)與實(shí)現(xiàn) [D].西安:西安電子科技大學(xué),2016.
[2] 姚蘆娟.基于Android平臺的移動OA系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].成都:電子科技大學(xué),2018.
[3] 梁鍾燁.基于Android平臺OA軟件的設(shè)計(jì)與實(shí)現(xiàn) [D].上海:東華大學(xué),2016.
作者簡介:余曉麗(1981—),女,漢族,江西南昌人,講師,研究生,碩士,研究方向:軟件工程。