基于藍(lán)牙的考勤系統(tǒng)_第1頁(yè)
基于藍(lán)牙的考勤系統(tǒng)_第2頁(yè)
基于藍(lán)牙的考勤系統(tǒng)_第3頁(yè)
基于藍(lán)牙的考勤系統(tǒng)_第4頁(yè)
基于藍(lán)牙的考勤系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于藍(lán)牙的考勤系統(tǒng)-用戶界面設(shè)計(jì)基于藍(lán)牙的考勤系統(tǒng)摘要隨著教育的普及,大學(xué)生的數(shù)量也越來(lái)越多。不同于初高中的管理,大學(xué)更偏向于自主學(xué)習(xí)。且高校流行選分制度班級(jí)流動(dòng)性增強(qiáng),因此大學(xué)生獲得了更多課程選擇上的自由度,班級(jí)概念弱化,因此學(xué)生有著充裕的時(shí)間可以去做自己喜歡的項(xiàng)目,從而在自己喜歡的項(xiàng)目上大放異彩,但是在這種情況下,學(xué)院管理難度變大。有些學(xué)生過(guò)于放縱導(dǎo)致對(duì)上課產(chǎn)生厭倦情緒,因此產(chǎn)生了逃課,代名互相頂替等行為。而且有些老師淡化管理,進(jìn)一步縱容了這種行為。在傳統(tǒng)的考勤方式比如口頭點(diǎn)名,在學(xué)生人數(shù)太多情況下很難有效檢測(cè)這些行為。因此,為了杜絕這種行為,基于藍(lán)牙的考勤系統(tǒng)被廣泛的應(yīng)用起來(lái)。本設(shè)計(jì)雖然叫基于藍(lán)牙的考勤系統(tǒng),但藍(lán)牙只負(fù)責(zé)簽到,連接信息交互這方面的功能,其他數(shù)據(jù)的交互只要靠app和服務(wù)端完成。本文主要描述在設(shè)計(jì)的工作原理和各個(gè)模塊的內(nèi)容。本設(shè)計(jì)以數(shù)據(jù)庫(kù)和服務(wù)端的交互和作為核心,讓學(xué)生的藍(lán)牙名稱改為自己學(xué)號(hào),讓設(shè)備自己進(jìn)行搜尋和定位,從而確定學(xué)生狀態(tài)。mysql是服務(wù)端的數(shù)據(jù)庫(kù)主要用來(lái)處理登錄、注冊(cè)、收發(fā)通知sqlite為本地?cái)?shù)據(jù)庫(kù),主要用來(lái)存儲(chǔ)藍(lán)牙通訊的簽到以及請(qǐng)假的數(shù)據(jù)。對(duì)于缺勤的學(xué)生做出特殊標(biāo)記且顯示出勤率,事后打包信息傳送給相關(guān)管理人員。這種方法能提高學(xué)生出勤率,也能改善教學(xué)質(zhì)量。而且比口頭點(diǎn)名更加現(xiàn)代

化.。關(guān)鍵詞:藍(lán)牙考勤;數(shù)據(jù)庫(kù);服務(wù)端;BluetoothManagementSystemBasedon-UserInterfaceDesignAbstractWiththepopularizationofeducation,thenumberofcollegestudentsisincreasing.Differentfromthemanagementofjuniorandseniorhighschools,universitiespreferautonomouslearning.Inaddition,theclassmobilityofthepopularselectionandscoringsystemincollegesisenhanced,socollegestudentshavemorefreedomincourseselectionandclassconceptisweakened.Althoughthereisplentyoftimetodotheprojectstheylike,soastoshineintheprojectstheylike,inthiscase,theschoolmanagementbecomesmoredifficult.Somestudentsaresoindulgentthattheygetboredofclasses,sotheyskipclassesandsubstituteforeachother.Andsometeachersdownplaythemanagement,furthercondoningthiskindofbehavior.Intraditionalattendancemethodssuchasoralrollcall,itisdifficulttodetectthesebehaviorseffectivelywhentherearetoomanystudents.Therefore,inordertoeliminatethiskindofbehavior,bluetoothbasedattendancesystemiswidelyused.Althoughthisdesigniscalledabluetooth-basedattendancesystem,bluetoothisonlyresponsibleforcheck-in,connectioninformationinteraction,otherdatainteractionaslongastheappandtheservertocomplete.Thispapermainlydescribestheworkingprincipleinthedesignandthecontentofeachmodule.Thedesignofthedatabaseandserversideoftheinteractionandasthecore,letthestudents'bluetoothnamechangedtotheirstudentnumber,letthedevicetosearchandlocate,soastodeterminethestatusofstudents.Mysqlisaserver-sidedatabasemainlyusedtohandlelogin,registration,sendandreceivenotificationsqliteisalocaldatabase,mainlyusedtostorethebluetoothcommunicationcheck-inandleavedata.Studentswhoareabsentfromschoolarespeciallymarkedandtheirattendanceisdisplayed.Theinformationisthenpackagedandsenttotherelevantmanagement.Thismethodcanimprovestudentattendanceandthequalityofteaching.Andit'smoremodernthanaverbalrollcallKeywords:Database;BluetoothManagermentSystem;Clinet-sideSystem目錄61541前言 1TOC\o"1-3"\h\u61541.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求 153231.2本設(shè)計(jì)在國(guó)內(nèi)外的發(fā)展概況及存在的問(wèn)題 1297351.3本設(shè)計(jì)應(yīng)解決的主要問(wèn)題 257362搭建環(huán)境及工具 257362.1關(guān)于AndroidStudio 2274172.1.1介紹 213722.1.2環(huán)境搭建 2198372.2關(guān)于MyEclipse 2206202.2.1介紹 252432.3關(guān)于Mysql 27772.3.1介紹 2254082.3.2環(huán)境搭建 3281992.4操作系統(tǒng)選擇 3320682.4.1關(guān)于Android 3269172.4.2Android架構(gòu) 381352.4.3Andr應(yīng)用程序oid開(kāi)發(fā)的四個(gè)主要模塊 4315522.5語(yǔ)言JAVA 4246163設(shè)計(jì)原理 5110454用戶界面設(shè)計(jì) 5322594.1用戶界面設(shè)計(jì)的原則 5181994.1.1界面整潔 5202864.1.2通用性 5213324.1.3合理的界面布局 5239074.14界面設(shè)計(jì)使用到的布局屬性 6308335教師學(xué)生界面設(shè)計(jì) 10181805.1注冊(cè)界面 10229845.2歡迎界面 10197025.3查詢請(qǐng)假界面 10154085.4工具欄界面 11293485.5登錄界面 11265165.6關(guān)于系統(tǒng)界面 1145605.7左滑小菜單 11169345.8教師功能界面 1113975.9學(xué)生功能界面 12231036接口設(shè)計(jì) 12278227考勤簽到設(shè)計(jì)原理 13317878總結(jié)工作與展望 1319909參考文獻(xiàn) 147029謝辭 161前言在現(xiàn)代化信息管理的時(shí)代下,教育工作者可用藍(lán)牙考勤系統(tǒng)進(jìn)行簽到。學(xué)生可以進(jìn)行請(qǐng)假,進(jìn)而更好安排自己的學(xué)習(xí)計(jì)劃。老師端不僅可以通過(guò)考勤檢查學(xué)生到勤狀況,還可以發(fā)布群消息。不僅節(jié)省了人工成本,還提高了效率。本設(shè)計(jì)的基于藍(lán)牙的考勤系統(tǒng)是基于app和服務(wù)端交互,藍(lán)牙之間連接。課題針對(duì)用戶界面設(shè)計(jì),意在做出互動(dòng)性強(qiáng)的界面。REF_Ref26720\r\h[1]1.1本設(shè)計(jì)的目的、意義及應(yīng)達(dá)到的技術(shù)要求目前,考勤簽到多采占用時(shí)間長(zhǎng)效率的口頭簽到,這樣易造成課堂學(xué)生學(xué)習(xí)時(shí)間減少,時(shí)間花在考勤。為了造就一個(gè)良好的教學(xué)環(huán)境,本設(shè)計(jì)易在完成一個(gè)先進(jìn)高效的藍(lán)牙考勤系統(tǒng),并使用Android設(shè)計(jì)一個(gè)一致性高,受眾廣,易上手,界面切換迅速,字體顏色分布看著舒適的界面。選擇一個(gè)主要色調(diào)作為APP的主題色。讓操作達(dá)到簡(jiǎn)單舒適的范疇,合理傳達(dá)視覺(jué)元素,達(dá)到信息對(duì)于用戶來(lái)說(shuō)一目了然。1.2本設(shè)計(jì)在國(guó)內(nèi)外的發(fā)展概況及存在的問(wèn)題近年來(lái)隨著大學(xué)生數(shù)量增多,考勤任務(wù)變得越來(lái)越兼巨,拖延時(shí)間也長(zhǎng)。教師也不可能每節(jié)必點(diǎn)名,這樣引起學(xué)生的僥幸心理,對(duì)學(xué)生的學(xué)習(xí)和發(fā)展無(wú)疑是種巨大的影響。而改變機(jī)制使得點(diǎn)名時(shí)間大幅度減少,效率變高。而用戶界面設(shè)計(jì)也是不可或缺的一環(huán),因?yàn)榭记诘捻樌c否會(huì)影響積極性(用戶體驗(yàn)),所以優(yōu)化用戶使用感受,盡量使用戶感受傻瓜式體驗(yàn)。因?yàn)槠髽I(yè)學(xué)習(xí)都是追求效率,時(shí)間就是金錢,在這種基礎(chǔ)上藍(lán)牙考勤系統(tǒng)越來(lái)越普及。無(wú)論國(guó)內(nèi)還是國(guó)外,在不久的將來(lái),口頭點(diǎn)名這類地效率低下的方式最終將被淘汰。REF_Ref28558\r\h[4]在國(guó)外,app的設(shè)計(jì)更加人性化,他們把用戶體驗(yàn)作為最終目標(biāo),打造了許多讓人愛(ài)不釋手的app。那些app下載率都高居不下,見(jiàn)到有趣十分減壓,它由許多元素組成,譬如俏皮的文字,適宜的畫(huà)面,完美的組合成了這個(gè)app,多次使用視覺(jué)手法,引發(fā)人們的共鳴。所以一個(gè)好的用戶體驗(yàn)是用戶對(duì)這個(gè)app的直觀感受,不夸張地說(shuō)一個(gè)良好的互動(dòng)的的確確能影響到用戶對(duì)其的使用積極性,從而引發(fā)一系列相關(guān)連鎖問(wèn)題。本設(shè)計(jì)以安卓為平臺(tái),以點(diǎn)名app為媒介,找到符合大眾視覺(jué)需求的界面樣式。以舒適簡(jiǎn)潔好用出發(fā)。但是受限于某些限制,國(guó)內(nèi)設(shè)計(jì)的操作系統(tǒng)在經(jīng)驗(yàn)和性能上與國(guó)外還有一定差距,手機(jī)用戶界面沒(méi)有國(guó)外那么人性化,缺少良性互動(dòng),缺少實(shí)用性。所以應(yīng)該想方設(shè)法增加客戶粘。1.3本設(shè)計(jì)應(yīng)解決的主要問(wèn)題打造用戶喜歡的用戶界面,根據(jù)用戶的使用習(xí)慣設(shè)計(jì)界面,如閱讀習(xí)慣,信息語(yǔ)言使用是否恰當(dāng),數(shù)據(jù)對(duì)齊排列,屏幕各類圖標(biāo)擺放適宜。減少app中廣告植入,過(guò)多的廣告植入不在用戶的享受范圍內(nèi),而且app應(yīng)該簡(jiǎn)單好用,減少?gòu)?fù)雜的操作和過(guò)多的頁(yè)數(shù)。拉近app與客戶的距離,應(yīng)該為了針對(duì)該app的專用人群添加該人群熟悉的元素。2.1關(guān)于AndroidStudio2.1.1介紹AndroidStudio是Google這家技術(shù)公司推出的,用于給Android這個(gè)需要合適工作環(huán)境的工具用于開(kāi)發(fā)應(yīng)用和調(diào)試的集成工具。2.1.2環(huán)境搭建下載安裝AndroidStudio。(可不選擇安裝VirtualDevice)。設(shè)定使用Custom,可按照自己的喜好設(shè)置。安裝路徑不能出現(xiàn)中文,因?yàn)锳ndroidStudio的默認(rèn)語(yǔ)言中沒(méi)有中文。根據(jù)自己喜好選擇內(nèi)存。第一次安裝會(huì)自動(dòng)配置gradle。2.2關(guān)于MyEclipse2.2.1介紹MyEclipse是一個(gè)包含幾乎所有Java所學(xué)特殊功能于一體開(kāi)發(fā)環(huán)境。是高效開(kāi)發(fā)的選擇,從JavaSpring到RESTWeb服務(wù)再到Maven均可在MyEclipse中統(tǒng)一開(kāi)發(fā)。它有著強(qiáng)大的JavaEE優(yōu)勢(shì),也可在WebSphere、WebLogic、Tomcat、Glassfish這種使XE"有著強(qiáng)大的JavaEE優(yōu)勢(shì),也可在WebSphere、WebLogic、Tomcat、Glassfish這種使"\t"請(qǐng)參閱"用各種應(yīng)用系列服務(wù)器。該軟件沒(méi)有什么特殊之處。但自帶的tomcat并沒(méi)有那么好用,需自己安裝一個(gè)7x的,導(dǎo)入路即可。再啟動(dòng)服務(wù)器, 下方Console可顯示內(nèi)容與相關(guān)信息。2.3關(guān)于Mysql2.3.1介紹MYsql是一個(gè)數(shù)據(jù)存放的倉(cāng)庫(kù)。為了方便管理和使用數(shù)據(jù)庫(kù)中的數(shù)據(jù),數(shù)據(jù)被按照早就編寫好的規(guī)律存放。在數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的管理下,用戶日常的操作將更加有效且組織化,也更加易于管理。它由5部分組合成。數(shù)據(jù)庫(kù)服務(wù)器。數(shù)據(jù)庫(kù),數(shù)據(jù)表,字段和行。SQL,結(jié)構(gòu)化查詢與程序的應(yīng)用設(shè)計(jì)語(yǔ)言,是一種有著不尋常目的編程語(yǔ)言,用于存取查詢,更新,管理數(shù)據(jù)庫(kù)系統(tǒng)。2.3.2環(huán)境搭建將Mysql的安裝路徑配置到Path環(huán)境變量中。安裝的時(shí)候避免中文路徑。設(shè)置端口為3306.。將字符集設(shè)置值為默認(rèn)的字符其集。2.4操作系統(tǒng)選擇2.4.1關(guān)于Android2007年剛成立才22個(gè)月的Android公司被Google收購(gòu)并在11月份被Google納入OHA(OpenHandestAilance),即是所謂的手機(jī)開(kāi)放聯(lián)盟。它是在Linux系統(tǒng)上建立的,從開(kāi)發(fā)到現(xiàn)在,Android操作系統(tǒng)一直保持著不可思議的進(jìn)步速率,而它相對(duì)于其他操作系統(tǒng)的優(yōu)勢(shì)便是其完全開(kāi)放的代碼。在2008年,第一臺(tái)基于Android的智能手機(jī)面向世人。在此次事件之后,Android以憑借著它的優(yōu)勢(shì)勢(shì)不可擋地進(jìn)入了其他電子設(shè)備地開(kāi)發(fā)領(lǐng)域,并在2011年地第一季度成為全球使用最多地操作系統(tǒng)。在2013年,Android成為了這領(lǐng)域當(dāng)之無(wú)愧的霸主。2.4.2Android架構(gòu)Android的架構(gòu)可具體分為4部分。因?yàn)锳ndroid操作系統(tǒng)是基于Linux內(nèi)核的基底上開(kāi)發(fā)的,所以這層為L(zhǎng)inuxKernel。在這一層中使用的是C語(yǔ)言開(kāi)發(fā)的,都是一些設(shè)備的驅(qū)動(dòng)程序,這些驅(qū)動(dòng)程序均為最基礎(chǔ)且核心的功能,功能相對(duì)比較簡(jiǎn)答。其進(jìn)程和內(nèi)存管理還有服務(wù)功能都需要linux來(lái)驅(qū)動(dòng),如顯示藍(lán)牙照相機(jī)音頻驅(qū)動(dòng)。而在這層上面為L(zhǎng)Iibararies和虛擬機(jī)所構(gòu)成。Library包含一些C++和C語(yǔ)言的程序包。有了這些程序包,許多功能各異的組件就可以被利用到,使開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中更加便捷方便。如因?yàn)榇蠖喑绦蛞玫綀D片和視頻,所以錄制功能和解碼有媒體文件功能要用到媒體庫(kù)。以及標(biāo)準(zhǔn)的系統(tǒng)都要用到的C語(yǔ)言庫(kù)。又因?yàn)锳ndroid使用Java編程語(yǔ)言,所以其擁有一個(gè)安卓核心系統(tǒng)運(yùn)行庫(kù)。有對(duì)2D底層圖像處理的庫(kù)SGL。不同于SGL,Surface是用于子系統(tǒng)管理且對(duì)圖像處理上更有建樹(shù)。Dalvik虛擬機(jī)也是這部分的重要組成鵝部分之一,它對(duì)于移動(dòng)的電子設(shè)備如平板和智能手機(jī)有著與其他設(shè)備得天獨(dú)厚的優(yōu)勢(shì),比如說(shuō)在有限的組裝空間里的芯片儲(chǔ)存空間和能快速響應(yīng)的能力。在這些的上層是應(yīng)用程序框架(ApplicationFramework),它作為連接程序和linux驅(qū)動(dòng)層能在此基礎(chǔ)上開(kāi)發(fā)應(yīng)用程序,也就是說(shuō)一個(gè)開(kāi)發(fā)人員想要開(kāi)發(fā)應(yīng)用程序都必須基于開(kāi)發(fā)應(yīng)用程序框架。在Android程序框架中,而且這必須建立在保證框架是對(duì)整個(gè)結(jié)構(gòu)沒(méi)有不良的影響下,為了方便開(kāi)發(fā)人員對(duì)程序的訪問(wèn),一大部分核心重要代碼是開(kāi)放的。因此開(kāi)發(fā)人員在開(kāi)發(fā)不同的應(yīng)用程序時(shí)可以很便捷地互相使用或提供給其他人思路。重復(fù)的組件使用減少了,想要替換模塊中的組件也更加簡(jiǎn)單。如內(nèi)容提供器、通知管理器。最上層即為用戶直接接觸的程序?qū)?Application),在我們的日常生活中有豐富且功能各異的應(yīng)用程序。如最基礎(chǔ)的電話和短信功,備忘錄時(shí)間網(wǎng)頁(yè)瀏覽功能?;蚩蓮腉oogleplay上下載應(yīng)用程序其中包括許多開(kāi)發(fā)人員自己開(kāi)發(fā)的程序。使用的語(yǔ)言為JAVA,程序比較靈活不會(huì)死板。著這很大程度上歸因于用戶個(gè)人開(kāi)發(fā)和Android本身的核心為同一層次,即構(gòu)建于安卓系統(tǒng)上的應(yīng)用程序接口。2.4.3Android應(yīng)用程序開(kāi)發(fā)的四個(gè)主要模塊Activity屏幕組件Service服務(wù)組件BroadcastReceiver廣播接受組件ContentReceiver內(nèi)容提供者。Activity它時(shí)一種包含用戶界面的組件,這是用戶唯一能看到的,也是進(jìn)行交互的界面。一個(gè)應(yīng)用程序包含著零個(gè)或以上的組件。而在活動(dòng)組件內(nèi)又包含多個(gè)控件。Textview是用來(lái)顯示文本的EditText顧名思義就是一個(gè)可給用戶在程序上編輯信息的組件。Button則用來(lái)給予用戶監(jiān)聽(tīng)事件活動(dòng)的功能。具體點(diǎn)理解Activity就是一個(gè)程序上的屏幕之一。Activity有四種活動(dòng)模式,本設(shè)計(jì)采用默認(rèn)standard模式。Service它不屬于一個(gè)獨(dú)立進(jìn)程,屬于用戶看不見(jiàn)的界面,它讓Android實(shí)現(xiàn)了后臺(tái)運(yùn)行的方案,比較適用于那些一直長(zhǎng)時(shí)間運(yùn)行但又不用用戶進(jìn)行交互的任務(wù)。有點(diǎn)類似于電腦的后臺(tái)進(jìn)程。它不需要任何用戶界面的幫助,且當(dāng)用戶打開(kāi)或切換應(yīng)用程序時(shí)并不會(huì)對(duì)它造成影響。BroadcasterReceiver用來(lái)接收系統(tǒng)或者自身應(yīng)用程序的廣播。比如注冊(cè)軟件時(shí)的短信提醒,來(lái)電提醒功能,鬧鈴提醒功能等。在Android的廣泛選擇中你可以選擇自己更加感興趣的程序進(jìn)行廣播。廣播分為有序廣播和標(biāo)準(zhǔn)廣播。標(biāo)準(zhǔn)廣播為完全異步,所有接收器幾乎同時(shí)接收,效率高,但是不能被攔截。有序廣播只有等邏輯執(zhí)行完才有下一步,有先后順序,優(yōu)先級(jí)高的先接受且它可攔截廣播。ContentProvider應(yīng)用程序通常只能訪問(wèn)應(yīng)用內(nèi)儲(chǔ)存的數(shù)據(jù),共享的數(shù)據(jù)則不能對(duì)外提供。內(nèi)容提供者則實(shí)現(xiàn)了跨程序間的數(shù)據(jù)共享。它有一整套完健全的機(jī)制去給權(quán)限一個(gè)程序去訪問(wèn)另一個(gè)程序中的屬數(shù)據(jù),與此同時(shí)還能保證數(shù)據(jù)在操創(chuàng)建一個(gè)供給于數(shù)據(jù)的訪問(wèn)接口2.5語(yǔ)言JAVA目前Java主要應(yīng)用于中間件的開(kāi)發(fā)--明,Java不適合pc應(yīng)用程序的開(kāi)發(fā),其發(fā)展逐漸變成在開(kāi)發(fā)手持設(shè)備,互聯(lián)網(wǎng)信息站,及車載計(jì)算機(jī)的開(kāi)發(fā).Java的語(yǔ)法與C++語(yǔ)法類似,而且Java是完全的徹底的面向?qū)ο蟮?其中提出了很好的GC(GarbageCollector)垃圾處理機(jī)制,防止內(nèi)存溢出。優(yōu)點(diǎn):JAVA語(yǔ)言健壯且安全,使用servlet機(jī)制使得編程更加高效不易崩潰。它時(shí)多線程工作模式且可移植性好。3設(shè)計(jì)原理老師與學(xué)生之間傳遞信息使用藍(lán)牙為媒介。服務(wù)端則利用Servlet這個(gè)用來(lái)處置服務(wù)器的響應(yīng)的程序,它是輕量級(jí)框架進(jìn)行HTTP請(qǐng)求和響應(yīng)的的。響應(yīng)從教師端或?qū)W生端發(fā)起到服務(wù)端進(jìn)行處理,再返回到學(xué)生或教師端。藍(lán)牙作為每個(gè)設(shè)備獨(dú)有地址中的模塊是一種載體。4用戶界面設(shè)計(jì)本設(shè)計(jì)研究?jī)?nèi)容基于Android這個(gè)比較方便使用的系統(tǒng)。設(shè)計(jì)出來(lái)界面內(nèi)容以XML的格式存儲(chǔ)。在研發(fā)過(guò)程中只需解析這些XML文件,然后再將其中信息補(bǔ)充進(jìn)相對(duì)的界面中。由于本人負(fù)責(zé)的是用戶使用各項(xiàng)功能的見(jiàn)界面設(shè)計(jì)和界面接口設(shè)計(jì)。所以本位會(huì)著重講Activity及相關(guān)組件。4.1用戶界面設(shè)計(jì)的原則它存在的意義在于它是人與機(jī)器交互如進(jìn)行信息交互對(duì)話的中間體。隨著高科技的發(fā)展,人機(jī)交互的方式方法也更加多樣化。它有很多種元素構(gòu)成,比如視覺(jué)上和聽(tīng)覺(jué)上的交互,用戶使用時(shí)的操作邏輯。因此界面設(shè)計(jì)可以說(shuō)時(shí)是一款軟件的門面。一個(gè)好的人性化設(shè)計(jì)應(yīng)該涵蓋一下幾個(gè)方面。REF_Ref26720\r\h[1]4.1.1界面整潔保持界面整齊簡(jiǎn)潔,一個(gè)好的界面一定能讓用戶輕松地掌握它地使用方法,盡量達(dá)到用戶感覺(jué)不到很復(fù)雜地界面存在但能快速區(qū)分信息地重要性。4.1.2通用性無(wú)論是在此應(yīng)用內(nèi)還是與其他app比較起來(lái),大體地布局都應(yīng)該相似。在整體的界面中應(yīng)該高度一致,特別是在字體的應(yīng)用上還有對(duì)方塊的顏色和放置的位置。這樣用戶的使用才會(huì)更加的舒適整潔。用戶熟悉界面后能效率更高的工作或轉(zhuǎn)戰(zhàn)于其他app。4.1.3合理的界面布局Android中的各種組件位置的放置是非常有講究的。為了讓的界面看起來(lái)舒適,排版應(yīng)均勻,元素放置不應(yīng)該全聚集于一處或又過(guò)于稀疏。可以合理運(yùn)用顏色,紋理,對(duì)比度和光效來(lái)制造美感或引導(dǎo)用戶的注意力到重點(diǎn)的事物上。文字在某種意義上是傳達(dá)文化符號(hào)的一種信息,所以可對(duì)文字進(jìn)行藝術(shù)效果處理,增強(qiáng)聯(lián)系結(jié)構(gòu)。在重點(diǎn)想描述部分可是用加粗或者黑體下劃線來(lái)特別說(shuō)明。應(yīng)認(rèn)真思考重點(diǎn)文字的字體和所放置位置,提高可讀性和舒適性。除非想打造一種別樣的風(fēng)格,增加視覺(jué)感,不然還是以閱讀舒適性為主。為了主流大眾符合閱讀習(xí)慣,大多使用左對(duì)齊,也可使文字和圖片搭配使用,但是還是要以文字為主圖片為輔。圖形是比較多用到的一種素材。常用于傳達(dá)信息的用戶頭像,代表方向的箭頭。在一定程度上減少文字的表達(dá),使得app更加多樣化且有趣。同時(shí)還要注意對(duì)應(yīng)分辨率的大小。在不同情況下,app要按照嚴(yán)格的設(shè)計(jì)規(guī)定。有時(shí)候空間有限,應(yīng)適當(dāng)剪裁留下重要部分。顏色選用高辨識(shí)度。REF_Ref28872\r\h[2]在進(jìn)行排版設(shè)計(jì)中,不僅要靠慮到用戶的實(shí)際需求還要將想表達(dá)的主題信息和視覺(jué)要素以適合融洽的方法聯(lián)系到一起。來(lái)自巴塞盧羅那龐培法布拉大學(xué)的心理學(xué)教授葛思達(dá)在研究人類的視覺(jué)規(guī)律時(shí)曾經(jīng)提到過(guò)“最佳視域”這個(gè)概念。在一個(gè)版面中,它的左和上部分是讓人最輕松且容易接收信息的部分,所以設(shè)計(jì)的時(shí)候要注意這兩部分的構(gòu)造。要強(qiáng)調(diào)重復(fù)性,因?yàn)橹貜?fù)的元素不僅可以吸引用戶的注意力還能著重強(qiáng)調(diào)某種特殊的信息,一般是在用類似和或近似的圖片來(lái)搭建,可以在律動(dòng)和放置的位置或者方位上有細(xì)微的調(diào)整,比只是單一枯燥的重復(fù)要好。在構(gòu)建界面時(shí)要注意平衡性,兩個(gè)有聯(lián)系的元素上保持視覺(jué)的平衡,平衡不一定要完全一樣,而是在某些微小特真上改動(dòng),大體還是要保持平衡聯(lián)系性。因?yàn)橛脩魧?duì)色彩是十分敏感的,選擇正確的顏色能影響客戶的心理程序,比如本設(shè)計(jì)為與學(xué)習(xí)相關(guān)的app,所以使用讓人冷靜的墨綠色。而如,消防栓,和滅火器這種能讓用戶十分敏感,刺激視覺(jué)能讓人馬上注意啊到的顏色。文化的不同對(duì)顏色和文字使用不一樣,如西方13被代表惡魔,和中國(guó)忌諱諧音。色調(diào)統(tǒng)一,能代表開(kāi)發(fā)者對(duì)本app的主旨,符合設(shè)計(jì)心靈學(xué)。REF_Ref28271\r\h[5]4.14界面設(shè)計(jì)使用到的布局屬性線性布局:Android操作系統(tǒng)布局中比較常用到且簡(jiǎn)易的布局方式。在這種布局里,它的子布局按照橫線或者豎線排布。并可分配權(quán)重。1其中可用orientation設(shè)置為水平或者豎直的排列方式。2gravity里面的控件或者字體的對(duì)齊方式,子容器相對(duì)于父容器的布局,如左對(duì)齊或者底部對(duì)齊。而layout_gravity指的是該元素本身的布局。同理width控制控件內(nèi)文本寬度,layout_width控制控制該元素本身的寬度。height和layout_height一樣。layout_weight指布局所占比重,可通過(guò)更改屬性調(diào)整屏幕占比。3在Android中有些組件需要一個(gè)int值,表示只接收int該類型的值,按照格式必須以@開(kāi)頭。而如果s是@+則表示修改完某些布局后要在文件中生成相應(yīng)int值,例@+id/bzzb。變量名為/后面的值。但如果文件中已經(jīng)存在相同名字的變量則會(huì)直接使用已經(jīng)存在的值。常用在一些輸入文本上,比如輸入id或者密碼。4background,為你的組件生成一個(gè)背景圖也可以全用別的顏色。5divider,分割線。可以用drawable中的圖片,也可以shape定義一個(gè)。也可以用showDividers來(lái)設(shè)置分割線所在位置,有none(無(wú)分割線)middle(在兩控件中間設(shè)置分割線)begining(在頂端設(shè)置)end(在末端設(shè)置分割線)。6fill_parent,wrap_content,match_parent,這三個(gè)屬性都是用來(lái)將視圖內(nèi)容或尺寸的大小及布局作調(diào)整的。fill_parent用來(lái)強(qiáng)制性的使組件的尺寸填滿該布局內(nèi)的空間.wrap_content用來(lái)完整顯示整個(gè)布局。match_parent與fill_parent一樣。7drawable圖片資源,通過(guò)@drawable可獲取已放置在里面的圖片資源。許多app自定義的圖標(biāo)和背景圖及其開(kāi)發(fā)者要使用的圖片轉(zhuǎn)為xml文件里放在drawable中儲(chǔ)存。8values。values存放了colors常用默認(rèn)的顏色值,使用時(shí)可調(diào)用,每個(gè)顏色有專用的代碼。Dimen是屏幕中像素的大小,本設(shè)計(jì)主要用到的是dp。Strings是字符串,提前寫好,使用使直接調(diào)用即可。Stylenames是本設(shè)計(jì)的某些控件主要風(fēng)格??偟膩?lái)說(shuō)就是一個(gè)已經(jīng)整合好的資源庫(kù)隨時(shí)可以拿出來(lái)調(diào)用。9layout_margin,指距離父控件的各距離。Padding控制的內(nèi)容距離四邊界的距離。Visibility可設(shè)置控件是否可見(jiàn),可設(shè)置為不可見(jiàn)及可見(jiàn),但不可見(jiàn)仍占據(jù)布局。Scrollbar用來(lái)設(shè)置滾動(dòng)條,用法很多,可設(shè)置為是否可見(jiàn),滾動(dòng)方向,背景色,是否有軌道,褪色方向。10Edittext文本編輯。Hint可輸入提示信息。在輸入賬號(hào)或者密碼的時(shí)候經(jīng)常用到。numeric=integer/decimal當(dāng)有特殊需求只能輸入整數(shù)或者小數(shù)的時(shí)候用到。singleLine=true則為設(shè)置只能輸入單行。TextColour字體顏色。Textstyle字體。TextColourHint默認(rèn)字體顏色。Typeface=monospace字體間距。Background背景,可設(shè)置為null默認(rèn)沒(méi)有。MaxLengtht限制文本長(zhǎng)度。CusorVisivle設(shè)置光標(biāo)是否可見(jiàn)。Capitalize設(shè)置英文字母大小寫類型。可設(shè)置為AutoText自動(dòng)糾正文本錯(cuò)誤。Editable是否可編輯。Elipise,TextScaleX=1.5控制字與字之間距離。設(shè)置當(dāng)文字過(guò)長(zhǎng)時(shí),該控件該如何顯示。有如下值設(shè)置:”start”—?省略號(hào)顯示在開(kāi)頭;”end”——省略號(hào)顯示在結(jié)尾;”middle”—-省略號(hào)顯示在中間;”marquee”——以跑馬燈的方式顯示(動(dòng)畫(huà)橫向移動(dòng))。11Textview:android:text設(shè)置顯示文本。android:textappearan設(shè)置文字外觀。android:textcolor設(shè)置文本顏色。android:textcolorhighligh被選中文字的底色,默認(rèn)為藍(lán)色。android:textcolorhint設(shè)置提示信息文字的顏色,默認(rèn)為灰色。android:textcolorlink文字鏈接的顏色textscalex設(shè)置文字之間間隔,默認(rèn)為1.0f。android:textsize設(shè)置文字大小,推薦度量單位”。textstyle設(shè)置字形。android:autolin設(shè)置是否當(dāng)文本為:url鏈接/email/電話號(hào)碼/map時(shí),文本顯示為可點(diǎn)擊的鏈接。可選值(none/web/email/phone/map/all)android:autotext設(shè)置,將自動(dòng)執(zhí)行輸入值的拼寫糾正。此時(shí)是無(wú)效果的,只在顯示輸入法并輸入的時(shí)候起作用。android:buffertyp指定gettext()方式取得的文本類別。android:capitalize設(shè)置英文字母大寫類型。需要彈出輸入法才能看得到。android:cursorvisible設(shè)定光標(biāo)為顯示/隱藏,默認(rèn)顯示。android:digits設(shè)置允許輸入哪些字符。如“1234567890.+-*/%()”android:drawablebottom在text的下方輸出一個(gè)drawable,如圖片。如果指定一個(gè)顏色的話會(huì)把text的背景設(shè)為該顏色,并且同時(shí)和background使用時(shí)覆蓋后者。android:drawableleft在text的左邊輸出一個(gè)drawable。android:ellipsize設(shè)置當(dāng)文字過(guò)長(zhǎng)時(shí),該控件該如何顯示。有如下值設(shè)置:”start”—-省略號(hào)顯示在開(kāi)頭;”end”——省略號(hào)顯示在結(jié)尾;”middle”—-省略號(hào)顯示在中間;”marquee”——以跑馬燈的方式顯示(動(dòng)畫(huà)橫向移動(dòng))android:freezestext設(shè)置保存文本的內(nèi)容以及光標(biāo)的位置。android:gravity設(shè)置文本位置,如設(shè)置成“center”,文本將居中顯示。android:hinttex為空時(shí)顯示的文字提示信息,可通過(guò)textcolorhint設(shè)置提示信息的顏色。android:impositions附加功能,設(shè)置右下角ime動(dòng)作與編輯框相關(guān)的動(dòng)作,如actiondone右下角將顯示一個(gè)“完成”,而不設(shè)置默認(rèn)是一個(gè)回車符號(hào)。android:includefontpadding設(shè)置文本是否包含頂部和底部額外空白。inputmethod為文本指定輸入法,需要完全限定名(完整的包名)。android:inputtype設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型。android:linksclickable設(shè)置鏈接是否點(diǎn)擊連接,即使設(shè)置了autolink。android:ems設(shè)置textview的寬度為n個(gè)字符的寬度。這里測(cè)試為一個(gè)漢字字符寬度。12ListView是一個(gè)能將數(shù)據(jù)集合起來(lái)以動(dòng)態(tài)滾動(dòng)方式展示到用戶界面View。將具體內(nèi)容以列表的形式展示并且能夠自適應(yīng)數(shù)據(jù)內(nèi)容,然后通過(guò)適配器加載到屏幕。如此說(shuō)來(lái)Adapter是用來(lái)在View和數(shù)據(jù)之間傳遞的。13Button普通按鈕ImageButton為圖像按鈕,為Textview字類,所以它的很多屬性可以應(yīng)用到Button上,通過(guò)drawable里的資源StateListDrawable可以將按鈕設(shè)置成按下去為一個(gè)顏色彈起來(lái)又為一個(gè)顏色。drawable:引用的Drawable位圖,我們可以把他放到最前面,就表示組件的正常狀態(tài)。state_focused:是否獲得焦點(diǎn)。state_window_focused:是否獲得窗口焦。state_enabled:控件是否可用。state_checkable:控件可否被勾選,state_checked:控件是否被勾選,state_selected:控件是否被選擇,針對(duì)有滾輪的情況,state_pressed:控件是否被按下,state_active:控件是否處于活動(dòng)狀態(tài)。state_single:控件包含多個(gè)子控件時(shí),確定是否只顯示一個(gè)子控件。state_first:控件包含多個(gè)子控件時(shí),確定第一個(gè)子控件是否處于顯示狀態(tài)。state_middle:控件包含多個(gè)子控件時(shí),確定中間一個(gè)子控件是否處于顯示狀態(tài)。state_last:控件包含多個(gè)子控件時(shí),確定最后一個(gè)子控件是否處于顯示狀態(tài)。14ImageView為圖像視圖,就是用來(lái)顯示圖像的一個(gè)組件。值得注意的是background背景通常是為了填充屏幕而進(jìn)行拉伸。而圖像試圖屬于內(nèi)容,不會(huì)進(jìn)行拉伸而是按照原圖片直接進(jìn)行填充。且在調(diào)整縮放的時(shí)候要配合maxWIdth最大寬度和maxHeight最大長(zhǎng)度這兩個(gè)屬性一起使用,它才會(huì)成功調(diào)整。fitXY:對(duì)圖像的橫向與縱向進(jìn)行獨(dú)立縮放,使得該圖片完全適應(yīng)ImageView,但是圖片的橫縱比可能會(huì)發(fā)生改變。fitStart:保持縱橫比縮放圖片,知道較長(zhǎng)的邊與Image的編程相等,縮放完成后將圖片放在ImageView的左上角。fitCenter:同上,縮放后放于中間;fitEnd:同上,縮放后放于右下角。center:保持原圖的大小,顯示在ImageView的中心。當(dāng)原圖的size大于ImageView的size,超過(guò)部分裁剪處理。centerCrop:保持橫縱比縮放圖片,知道完全覆蓋ImageView,可能會(huì)出現(xiàn)圖片的顯示不完全。centerInside:保持橫縱比縮放圖片,直到ImageView能夠完全地顯示圖片matrix:默認(rèn)值,不改變?cè)瓐D的大小,從ImageView的左上角開(kāi)始繪制原圖,原圖超過(guò)ImageView的部分作裁剪處理15fragment可看作一個(gè)小型Activity,組件多管理過(guò)于麻煩,此時(shí)就要用到fragment進(jìn)行模塊化管理,但fragment不可單獨(dú)使用,會(huì)收到宿主Activity的生命周期影響。Fragment的生命周期和Activity有點(diǎn)類似:三種狀態(tài):Resumed:在允許中的Fragment可見(jiàn),Paused:所在Activity可見(jiàn),但是得不到焦點(diǎn),Stoped:①調(diào)用addToBackStack(),Fragment被添加到Bcak棧②該Activity轉(zhuǎn)向后臺(tái),或者該Fragment被替換/刪除,但是停止?fàn)顟B(tài)的fragment仍然活著不過(guò)對(duì)用戶不可見(jiàn)。16progressbar是安卓下的進(jìn)度條,當(dāng)使用到加載畫(huà)面的時(shí)候或者在看視頻的時(shí)候進(jìn)場(chǎng)用到。相對(duì)布局:也是Android界面設(shè)計(jì)里常用到的一種布局。顧名思義就是相對(duì)父元素或者兄弟組件來(lái)有參照的布置子元素。5教師學(xué)生界面設(shè)計(jì)這次設(shè)計(jì)的教師主要功能:登錄、注冊(cè)、藍(lán)牙設(shè)置、藍(lán)牙連接、分享至第三方、查看考勤、查看請(qǐng)假、發(fā)布通知以及打開(kāi)校園官網(wǎng)、關(guān)于和退出系統(tǒng)。本次設(shè)計(jì)學(xué)生主要功能:登錄、注冊(cè)、藍(lán)牙設(shè)置、藍(lán)牙連接、分享至第三方、藍(lán)牙簽到、藍(lán)牙請(qǐng)假、吊起qq聯(lián)系老師、接收通知、關(guān)于系統(tǒng)、退出系統(tǒng)。本設(shè)計(jì)建立的Activity主要有介紹本APP應(yīng)用,添加通知界面,登錄界面,查看請(qǐng)假和查看簽到界面,注冊(cè)和加載界面。學(xué)生老師操作的界面則為了方便管理使用fragment。5.1注冊(cè)界面當(dāng)學(xué)生或者老師使用本app時(shí)首先應(yīng)注冊(cè)一個(gè)賬號(hào),那么就來(lái)到了RegisteActivity。采用了線性布局,界面垂直排布,界面占滿整個(gè)屏幕,調(diào)用了drawable里的背景圖作為背景,調(diào)用了放在layout里面的考勤簽到注冊(cè)布局.整體讓這個(gè)小長(zhǎng)方形里的元素采用豎直線性結(jié)構(gòu),具體里面采用相關(guān)布局因?yàn)樵乇容^多。包含了工具欄toolbar。使用顯目大框和bold字體還有符合主題的顏色作為題目。為了能讓用戶分清哪個(gè)框是填對(duì)應(yīng)什么的,使用了hint提示文字并配上對(duì)應(yīng)圖標(biāo)使左對(duì)齊。為了能更清晰的讓用戶看清填的東西將背景色設(shè)置為null。并所有文本左對(duì)齊layout_marginLeft。使各布局central_vertical垂直居中。服務(wù)器地址需要限制輸入文本Digits =0,1,2,3,4,5,6,7,8,9,0,.。最下方是提交BUTTON,button放塊設(shè)置為比其他輸入按鍵稍大。5.2歡迎界面背景布局為全綠色。有開(kāi)場(chǎng)動(dòng)畫(huà),先彈出string里面第一串字符串考勤簽到app然后再?gòu)棾龅诙址呍O(shè)作品。然后就進(jìn)入主界面。5.3查詢請(qǐng)假界面先設(shè)置好每個(gè)item即每個(gè)小項(xiàng)目的的規(guī)格。比如查詢請(qǐng)假時(shí)每個(gè)學(xué)生的請(qǐng)假信息。然后用ListView加載。如果沒(méi)有項(xiàng)目將用TestView顯示暫無(wú)數(shù)據(jù)記錄。查詢簽到界面項(xiàng)目界面與查詢簽到界面一樣。5.4工具欄界面Toolbar在界面的最上端,為了方便用戶使用,存在于每一個(gè)界面最上端。采用了相對(duì)布局,在每一個(gè)界面的最上方都存在工具欄。5.5登錄界面將整體設(shè)置為好打理的相對(duì)布局。在主要界面的上方有加載圖標(biāo)ImageView,在用戶填寫完賬戶后彈出。在左上方設(shè)置了一個(gè)半圓的圖標(biāo)提示用戶現(xiàn)在使用的是學(xué)生端或教師端。在最下方用Textview設(shè)置2020畢業(yè)設(shè)計(jì)作品提示字樣。然后include登錄表格布局與注冊(cè)中一樣。不過(guò)在最下方添加了注冊(cè)和登錄的Button。發(fā)布通知界面:最上方是背景圖為學(xué)??s略圖。往下為三個(gè)EditText,分別為發(fā)布內(nèi)容姓名時(shí)間。其中發(fā)布內(nèi)容占據(jù)板塊較大并且都帶有hint提示字符。最下方為發(fā)布提交Button。5.6關(guān)于系統(tǒng)界面有關(guān)于系統(tǒng)的介紹和使用的工具,app所擁有功能,開(kāi)發(fā)團(tuán)隊(duì)及版本號(hào)均使用TextView展示。5.7左滑小菜單在學(xué)生或老師主要功能界面有fragment展示學(xué)校背景和兩個(gè)TextView,分別是學(xué)校官網(wǎng)和退出系統(tǒng)。在現(xiàn)有的移動(dòng)用戶端中,大多都采用這種形式,不僅與大眾群體的習(xí)慣有關(guān),這還能整個(gè)操作過(guò)程變的更加平滑,讓用戶的操作更加具有流暢性。而且還能再擁擠的屏幕上節(jié)省了時(shí)間,用戶整潔度提高。5.8教師功能界面使用fragment.在登陸界面左上角有可切換為學(xué)生端按鍵。中間有深色底白色字體顯示界面的標(biāo)題。從上到下為符合行業(yè)標(biāo)準(zhǔn)的藍(lán)牙地址,賬號(hào),密碼。并且每個(gè)圖標(biāo)必須有特色,不需要字體也可快速分辨出對(duì)應(yīng)圖標(biāo)。登錄成功過(guò)后下次可記憶最近一次的賬號(hào)密碼。最下面兩個(gè)功能為注冊(cè)和登錄。最下方字體標(biāo)明產(chǎn)品來(lái)源。登錄界面的背景圖選用跟app主題顏色相互搭配的圖片。在點(diǎn)擊登錄之后,在教師端打開(kāi)藍(lán)牙期間可現(xiàn)實(shí)加載圖案。最上方像許多常規(guī)app一樣顯示當(dāng)前界面,方便用戶查明所在界面。下方為教師可發(fā)布的公告。公告需放置于僅大標(biāo)題下,但字體放小可滾動(dòng)的提醒作用。顯示藍(lán)牙狀態(tài),因?yàn)榇藶橹匾獱顟B(tài)顯示功能,用生活種紅色代表失去連接,綠色代表已連接的狀態(tài)顯示,并且消息窗口可現(xiàn)實(shí)與哪位學(xué)生連接,并且顯示藍(lán)牙地址,連接成功后有灰底黑字小框提示。登陸界面的切換學(xué)生端改為顯示教師名字。并且可發(fā)布Tips。由于該頁(yè)面功能較多,有藍(lán)牙設(shè)置,考勤簽到,查看簽到,查看請(qǐng)假,發(fā)布通知,及關(guān)于系統(tǒng)的介紹。所以排版不可過(guò)于緊湊,流出舒適空間。因此,功能均采用圓形圖標(biāo)。圖標(biāo)要符合審美比例,字體要與界面大小和相應(yīng)功能圖標(biāo)和界面比例要符合用審美。在做到這些的基礎(chǔ)上盡量簡(jiǎn)潔。一個(gè)良好的用戶界面設(shè)計(jì)應(yīng)與用戶的顯示世界感官相貼近。在學(xué)生進(jìn)行請(qǐng)假時(shí),會(huì)有白底黑字彈窗提示,下方可選擇拒絕或同意。同時(shí)操作后會(huì)有通知更新。關(guān)于系統(tǒng)介紹北京采用北理珠圖片。有作品介紹及使用了哪些工具。下方為主要涵蓋功能,如教師學(xué)生端均有的登陸注冊(cè),藍(lán)牙設(shè)置,藍(lán)牙連接,分享至第三方,查看考勤,查看請(qǐng)加發(fā)通知,校園官網(wǎng),關(guān)于系統(tǒng),通出系統(tǒng)。而學(xué)生端有藍(lán)牙簽到請(qǐng)假,接收通知。主要開(kāi)發(fā)工具為AndroidStudio,MyEclipse,My'Sql,Tomcat,NavicatforMySQL等開(kāi)發(fā)工具,還有開(kāi)發(fā)人員和版本號(hào)。這些都是為了使用者能更好了解本功能。并且在此界面右上角為第三方分享,方便使用。5.9學(xué)生功能界面同樣使用fragment除了開(kāi)啟考勤換成了學(xué)生的開(kāi)連接。除了學(xué)生端界面改了上面的注釋標(biāo),發(fā)布通知換成了聯(lián)系老師,查看簽到和查到請(qǐng)假換成對(duì)應(yīng)的查看和請(qǐng)假,其他均與教師端基本相同。提示界面:因?yàn)樘崾窘缑孓D(zhuǎn)瞬即逝,所以通常使用fragment。加載界面由TextView顯示正在加載和Progressbar進(jìn)度條即可。分別顯示的是在有網(wǎng)絡(luò)延遲正在加載的“正在玩命加載”界面來(lái)提示用戶現(xiàn)在的情況和“沒(méi)有更多了”來(lái)提示用戶瀏覽界面已經(jīng)到頭了還有最后出現(xiàn)錯(cuò)誤的“出錯(cuò)了”界面,后面還加上貓表情拉近開(kāi)發(fā)者與用戶的距離。6接口設(shè)計(jì)界面接口設(shè)計(jì)指的就是人機(jī)的交互形式。因?yàn)殡m然我們可以用控件做一個(gè)精美的界面,但它僅僅只是界面而已,無(wú)法與用戶進(jìn)行互動(dòng)。所以就要用到Android使用最頻繁的監(jiān)聽(tīng)機(jī)制。比如用戶填寫完了基本信之后點(diǎn)擊注冊(cè)按鈕,這時(shí)候開(kāi)始向服務(wù)器發(fā)送登錄請(qǐng)求。其實(shí)就是在屏幕的后面,當(dāng)用戶交互時(shí)看不見(jiàn)的一些動(dòng)作。流程:一開(kāi)始先為事件源注冊(cè)監(jiān)聽(tīng)器,一般是組件。然后用戶外部的動(dòng)作觸發(fā)然后觸發(fā)事件源的事件。事件源受到影響后會(huì)生成對(duì)應(yīng)事件,此時(shí)事件監(jiān)聽(tīng)器將會(huì)把事件的參數(shù)記錄下來(lái),從而對(duì)不同的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,分析后得到事件的處理方法。事件源,事件,事件監(jiān)聽(tīng)器。主要方法:1直接使用匿名內(nèi)部類,通常只是用一次,復(fù)用性不高,是本設(shè)計(jì)使用最多的監(jiān)聽(tīng)方法。2使用內(nèi)部類,好處是可在該類中進(jìn)行復(fù)用并可直接訪問(wèn)所有界面的組件。3使用外部類,這種形式比較少見(jiàn),即為創(chuàng)建另一個(gè)JAVA文件,但通常會(huì)導(dǎo)致代碼不夠簡(jiǎn)潔好用。4將Activity作為事件的監(jiān)聽(tīng)器。5直接綁定到標(biāo)簽,即為在layout布局的文件中將對(duì)應(yīng)的Activity中可以定義一個(gè)事件的處理方法 ,相對(duì)應(yīng)組件觸發(fā)事件的組件即可。7考勤簽到設(shè)計(jì)原理老師與學(xué)生之間傳遞信息使用藍(lán)牙為媒介。服務(wù)端則利用Servlet這個(gè)用來(lái)處置服務(wù)器的響應(yīng)的程序,它是輕量級(jí)框架進(jìn)行HTTP請(qǐng)求和響應(yīng)的的。響應(yīng)從教師端或?qū)W生端發(fā)起到服務(wù)端進(jìn)行處理,再返回到學(xué)生或教師端。藍(lán)牙作為每個(gè)設(shè)備獨(dú)有地址中的模塊是一種載體。8總結(jié)工作與展望本文主要針對(duì)設(shè)計(jì)的考勤簽到系統(tǒng)和交互界面設(shè)計(jì)的優(yōu)點(diǎn)和一些不足進(jìn)行總結(jié)。優(yōu)點(diǎn):必要功能健全,使用操作方便,Android系統(tǒng)比較靈活。人和UI界面互動(dòng)良好,教師可從發(fā)布通知,查看考勤情況,也可與學(xué)生進(jìn)行互動(dòng)。缺點(diǎn):雖然手機(jī)端操作方便,但電腦端還要打開(kāi)服務(wù)器,用戶界面比較擁擠,而且接口項(xiàng)目有限,多個(gè)學(xué)生同時(shí)連接可能存在丟失情況,展望:可以拓展更多功能,如簽到排名,學(xué)生可發(fā)彈幕,增加學(xué)生與學(xué)生及學(xué)生和老師之間的良性互動(dòng)。藍(lán)牙考勤的系統(tǒng)普及關(guān)系一定越來(lái)越高,app已經(jīng)廣為社會(huì)使用。隨著技術(shù)的更新?lián)Q代,人機(jī)交互的形式也必然更加讓用戶感同身受。參考文獻(xiàn)王鵬飛,移動(dòng)設(shè)備應(yīng)用軟件交互界面設(shè)計(jì)[D].工業(yè)設(shè)計(jì)工程,2013王延盼,基于安卓的App界面視覺(jué)藝術(shù)元素的分析與探究[D].藝術(shù)與設(shè)計(jì)學(xué)院,2013葛會(huì)會(huì),基于藍(lán)牙考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電子與通信工程,2016向小瓊,李敏,蒲昱霖,劉海燕,基于藍(lán)牙通信的高校課堂手機(jī)考勤管理系統(tǒng)[R],長(zhǎng)沙醫(yī)學(xué)院,2018王曦,有關(guān)軟件中用戶界面設(shè)計(jì)的探討[N].山東工業(yè)技術(shù),2018-10-25(10).附錄MyEclipse所用到代碼://Food.javapackagecom.bs.bean;//功能說(shuō)明:publicclassFood{ publicStringid; publicStringuuid; publicStringname; publicStringstate; publicStringtime;}//Like.javapackagecom.bs.bean;publicclassLike{ publicStringid;// publicStringnum;// publicStringname;// publicStringlike;//}//NotifyInfo.javapackagecom.bs.bean;publicclassNotifyInfo{ //通知 publicStringid;// publicStringname;//姓名 publicStringcontent;//內(nèi)空 publicStringtype;//類型 publicStringtime;//時(shí)間 publicNotifyInfo(Stringname,Stringcontent){ super(); =name; this.content=content; }}//RatingBar.javapackagecom.bs.bean;/****功能說(shuō)明:**/publicclassRatingBar{ publicStringid; publicStringuuid; publicStringname; publicStringstate; publicStringtime;}//Suggestion.javapackagecom.bs.bean;/****功能說(shuō)明:**/publicclassSuggestion{ publicStringid; publicStringuuid; publicStringname; publicStringstate; publicStringtime;}//User.javapackagecom.bs.bean;publicclassUser{ publicStringuuid;// publicStringname;// publicStringpsd;// publicStringtype;// publicStringlogourl;// publicStringchineseName;//中文名字}//===============================//FunctionServlet.javapackagecom.bs.servlet;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importcom.bs.bean.NotifyInfo;importcom.bs.util.DBUtil;importcom.bs.util.ReqType;importcom.bs.util.RspType;importcom.bs.util.T;/***項(xiàng)目名稱:bs002功能說(shuō)明:多功能管理類*/@SuppressWarnings("serial")publicclassFunctionServletextendsHttpServlet{ privateStringtag="FunctionServlet:"; privateHttpServletResponseresponse; privatebooleanresult; privateListdatalist; privateStringrequestType;//請(qǐng)求參數(shù)集 @Override protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp) throwsServletException,IOException{ doPost(req,resp); } @Override protectedvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ this.response=response; request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=utf-8"); response.setHeader("Pragma","No-Cache"); response.setDateHeader("Expires",0); requestType=newString(request.getParameter("param").getBytes( "iso-8859-1"),"utf-8"); if(!requestType.contains("QueryNotify")){ System.out.println(T.getDateTime()+"====="+tag +"======正在請(qǐng)求獲?。?+requestType); } if(requestType.startsWith("Add")||requestType.startsWith("Remove")){ addTypeRequest(requestType); }elseif(requestType.startsWith("Query")){ queryTypeRequest(requestType); }elseif(requestType.startsWith("Delete")){ deleteTypeRequest(requestType); } } /** *新增數(shù)據(jù)接口 */ privatevoidaddTypeRequest(StringrequestType){ if(requestType.startsWith(ReqType.Add_Notify)){//發(fā)布通知 String[]params=requestType.split(":"); NotifyInfonotify=newNotifyInfo(params[1],params[2]); result=DBUtil.addNotify(notify); }else{ return; } if(result){ returnResponseStringData(RspType.SUCC); }else{ returnResponseStringData(RspType.FAIL); } System.out.println("addresult:"+result); } /** *查詢數(shù)據(jù)接口 */ privatevoidqueryTypeRequest(StringrequestType){ if(requestType.startsWith(ReqType.Query_Notify)){ List<NotifyInfo>notify=DBUtil.getFirstNotify(); returnResponseListData(notify,"notify"); } } /** *刪除數(shù)據(jù)接口 */ privatevoiddeleteTypeRequest(StringrequestType){ } privatevoidreturnResponseStringData(Stringresult){ PrintWriterout; try{ out=response.getWriter(); out.print(result); out.flush(); out.close(); }catch(IOExceptione){ e.printStackTrace(); } } privatevoidreturnResponseListData(Listdatalist,Stringtype){ try{ JSONObjectobject=newJSONObject(); JSONArrayarray=newJSONArray(datalist); object.put(type,array); OutputStreamos; os=response.getOutputStream(); OutputStreamWriterosw=newOutputStreamWriter(os,"utf-8"); BufferedWriterbw=newBufferedWriter(osw); bw.write(newString(object.toJSONString().getBytes())); bw.flush(); }catch(IOExceptione){ e.printStackTrace(); } }}//LoginServlet.javapackagecom.bs.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.bs.bean.User;importcom.bs.util.DBUtil;/****功能說(shuō)明:登錄校驗(yàn)**創(chuàng)建時(shí)間:2018-6-1下午3:35:29*/@SuppressWarnings("serial")publicclassLoginServletextendsHttpServlet{ privateStringTag="LoginServlet:"; privateUseruser; @Override protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp) throwsServletException,IOException{ doPost(req,resp); } @Override protectedvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=utf-8"); response.setHeader("Pragma","No-Cache"); response.setDateHeader("Expires",0); Stringparam=newString(request.getParameter("param").getBytes( "iso-8859-1"),"utf-8"); String[]reqArray=param.split(":"); user=newUser(); =reqArray[0]; user.psd=reqArray[1]; Stringresult=DBUtil.checkUser(user); String[]reStrings=result.split(":"); response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=utf-8"); response.setHeader("Pragma","No-Cache"); response.setDateHeader("Expires",0); PrintWriterout=response.getWriter(); out.print(result); out.flush(); out.close(); switch(Integer.parseInt(reStrings[0])){ case-1: //用戶名不存在 response.getWriter().print("用戶名不存在"); System.out.println(Tag+"用戶名不存在:"+); break; case0://登錄成功 response.getWriter().print("登錄成功"); System.out.println(Tag+"登錄成功:"+); break; case1://密碼錯(cuò)誤 response.getWriter().print("密碼錯(cuò)誤"); System.out.println(Tag+"密碼錯(cuò)誤:"+); break; case2://查詢異常 response.getWriter().print("查詢異常"); System.out.println(Tag+"查詢異常:"+); break; } }}//RegisteServlet.javapackagecom.bs.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.bs.bean.User;importcom.bs.util.DBUtil;/****功能說(shuō)明:注冊(cè)**創(chuàng)建時(shí)間:2018-6-1下午3:35:29*/@SuppressWarnings("serial")publicclassRegisteServletextendsHttpServlet{ privateStringTag="RegisteServlet:"; privateUseruser; @Override protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp) throwsServletException,IOException{ doPost(req,resp); } @Override protectedvoiddoPost(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=utf-8"); response.setHeader("Pragma","No-Cache"); response.setDateHeader("Expires",0); Stringparam=newString(request.getParameter("param").getBytes( "iso-8859-1"),"utf-8"); System.out.println(Tag+"收到請(qǐng)求:"+param); String[]reqArray=param.split(":"); user=newUser(); =reqArray[0]; user.psd=reqArray[1]; user.chineseName=reqArray[2]; booleanresult=DBUtil.addUser(user); response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=utf-8"); response.setHeader("Pragma","No-Cache"); response.setDateHeader("Expires",0); PrintWriterout=response.getWriter(); if(result){ System.out.println(Tag+"注冊(cè)成功:"+); out.print("0:"+user.chineseName); }else{ System.out.println(Tag+"用戶名已存在:"+); out.print("-1"); } out.flush(); out.close(); }}//DBUtil.javapackagecom.bs.util;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjava.util.UUID;importcom.bs.bean.NotifyInfo;importcom.bs.bean.User;/****數(shù)據(jù)庫(kù)連接工具*/publicclassDBUtil{ privatestaticConnectioncon; privatestaticPreparedStatementps; privatestaticResultSetrs; static{ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager .getConnection( "jdbc:mysql://localhost:3306/bs002elm?characterEncoding=utf-8", "root","123"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } } /** *用戶注冊(cè) * *@paramname *@parampsd *@return */ publicstaticBooleanaddUser(Useru){//TODO Booleanresult=null; List<User>list=DBUtil.getAllUsers(); for(Useruser:list){ if(.equals()){ returnfalse; } } Stringsql="insertintouser(uuid,name,psd,chinese_name)values(?,?,?,?)"; try{ ps=con.prepareStatement(sql); ps.setString(1,UUID.randomUUID().toString()); ps.setString(2,); ps.setString(3,u.psd); ps.setString(4,u.chineseName); result=ps.execute(); }catch(SQLExceptione){ System.out.println

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論