基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本 科 畢 業(yè) 設(shè) 計(jì)(論文)題 目:基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)學(xué)生姓名: 學(xué) 號(hào):專業(yè)班級(jí): 指導(dǎo)教師: 2017年 6月15日基于安卓平臺(tái)的簽到管理系統(tǒng)設(shè)計(jì)摘 要同中小學(xué)相比,由于教學(xué)模式的改變,高校師生之間交流時(shí)間有限,熟悉程度不夠。為提升教學(xué)質(zhì)量,本文設(shè)計(jì)實(shí)現(xiàn)一款基于安卓平臺(tái)的簽到管理系統(tǒng),通過系統(tǒng)客戶端與服務(wù)器通信,達(dá)到省時(shí)省力完成考勤的目的。本文系統(tǒng)的介紹了基于安卓平臺(tái)的簽到管理系統(tǒng)的需求分析,系統(tǒng)功能設(shè)計(jì),系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)和系統(tǒng)測(cè)試與分析的各個(gè)過程。本次簽到系統(tǒng)的總體設(shè)計(jì)思路是,學(xué)生使用教務(wù)系統(tǒng)賬號(hào),利用安卓手機(jī)進(jìn)行系統(tǒng)登錄,并在對(duì)應(yīng)的課程上課前進(jìn)行簽到,簽到信息通過網(wǎng)絡(luò)傳輸給

2、后臺(tái)服務(wù)器,由服務(wù)器將對(duì)應(yīng)的簽到信息寫入數(shù)據(jù)庫(kù)中;教師使用自己的工號(hào)登錄系統(tǒng),查詢對(duì)應(yīng)課程的相關(guān)出勤信息,以列表的形式呈現(xiàn)。本簽到管理系統(tǒng)的開發(fā)采用了市面上流行的Android移動(dòng)開發(fā)技術(shù),服務(wù)器端采用MySQL數(shù)據(jù)庫(kù)技術(shù)。系統(tǒng)的實(shí)現(xiàn)則采用了Eclipse作為開發(fā)工具,完成了系統(tǒng)的代碼設(shè)計(jì)。關(guān)鍵詞:安卓;簽到;MySQL;Eclipse Sign in management system design based on android AbstractCompared with primary and secondary schools, due to the change of teachi

3、ng mode, the exchange time between teachers and students is limited and the degree of familiarity is not enough. To improve the quality of teaching, this thesis designs and implements a check-in management system based on Android platform. The system can complete the attendance using less time and e

4、nergy through the communication between the system client and the server.This thesis systematically introduces four aspects of the check-in management system based on Android platform, including the requirements analysis, system function design, system database design and system testing and analysis

5、. The overall design of the sign-in system is that students login the system using their educational system account on Android mobile phone, and sign in of the corresponding course before the school attendance. Then the sign information is transmitted through the network to the background server, an

6、d the server writes the corresponding information into the database. Teachers use their own number to log in the system and query the corresponding course attendance information in the form of a list.The exploitation of this check-in management system uses the popular Android mobile exploitation tec

7、hnology. The server uses the MySQL database technology. System implement- ation uses the Eclipse as a development tool to complete the system code design.Keywords:Android;Sign in;MySQL;Eclipse 目 錄第1章 緒論11.1 研究背景11.2 國(guó)內(nèi)外研究現(xiàn)狀11.3 論文結(jié)構(gòu)1第2章 開發(fā)工具概述22.1 Android概述22.1.1 Android體系結(jié)構(gòu)22.1.2 Android組件32.2 MySQ

8、L概述42.3 Android開發(fā)環(huán)境搭建42.4 本章小結(jié)4第3章 系統(tǒng)需求分析63.1 可行性分析63.2 需求分析63.2.1 功能需求分析63.2.2 界面需求分析73.2.3 性能需求分析73.3 本章小結(jié)7第4章 系統(tǒng)設(shè)計(jì)84.1 系統(tǒng)總體架構(gòu)84.2 功能模塊設(shè)計(jì)84.3 數(shù)據(jù)庫(kù)設(shè)計(jì)114.3.1 學(xué)生信息表114.3.2 教師信息表124.3.3 課程信息表124.3.4 簽到記錄表134.4 本章小結(jié)13第5章 系統(tǒng)實(shí)現(xiàn)145.1 服務(wù)器端功能實(shí)現(xiàn)145.2 客戶端功能實(shí)現(xiàn)145.2.1 登錄功能實(shí)現(xiàn)145.2.2 課表功能實(shí)現(xiàn)185.2.3 簽到功能實(shí)現(xiàn)215.2.4 考勤

9、統(tǒng)計(jì)實(shí)現(xiàn)215.3 本章小結(jié)23第6章 系統(tǒng)測(cè)試與分析246.1 系統(tǒng)測(cè)試流程與原則246.1.1 系統(tǒng)測(cè)試流程246.1.2 系統(tǒng)測(cè)試原則246.2 測(cè)試結(jié)果分析256.2.1 登錄功能測(cè)試結(jié)果分析256.2.2 簽到功能測(cè)試結(jié)果分析256.3 本章小結(jié)26致 謝27參考文獻(xiàn)28第1章 緒論1.1 研究背景2017年全球智能手機(jī)銷量直線上升,保持著快速增長(zhǎng)的勢(shì)頭,移動(dòng)通信在不斷發(fā)展中愈加成熟。在移動(dòng)通信領(lǐng)域,Google公司的Android操作系統(tǒng)和Apple公司的IOS操作系統(tǒng)占據(jù)了市場(chǎng)主要份額。與IOS相比,Android操作系統(tǒng)憑借其包容的開放平臺(tái)收到了廣大消費(fèi)者的喜愛。隨著科技得不斷

10、發(fā)展,智能手機(jī)價(jià)格越來越親民化。著名的國(guó)產(chǎn)機(jī)品牌如小米、華為、酷派等紛紛推出千元機(jī),使得在校大學(xué)生能夠輕易擁有一部高性價(jià)比的Android手機(jī)。目前,高校在針對(duì)學(xué)生課堂考勤方面存在著許多問題。在高校中,一位老師可能需要給多個(gè)不同的班級(jí)上課,也可能一次性給很大的學(xué)生群體上課,老師與學(xué)生之間處理課堂之外基本沒有任何交流,課堂教學(xué)時(shí)間彌足珍貴。傳統(tǒng)的點(diǎn)名考勤費(fèi)時(shí)費(fèi)力,占用了大量珍貴的的課堂教學(xué)時(shí)間,考勤效率大打折扣 葛會(huì)會(huì). 基于Android 藍(lán)牙考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)D.東華理工大學(xué),2016.,同時(shí),這種考勤方式準(zhǔn)確度不高,有很多學(xué)生通過找同學(xué)幫忙答到渾水摸魚。1.2 國(guó)內(nèi)外研究現(xiàn)狀目前市面上有

11、不少基于移動(dòng)終端開發(fā)的簽到軟件,例如釘釘、叮咚簽到等,但是這些軟件基本都是針對(duì)辦公通訊的,不適用于高校簽到考勤,到目前為止,市場(chǎng)上還沒有一款專門針對(duì)大學(xué)生課堂考勤的軟件。1.3 論文結(jié)構(gòu)本文介紹了一個(gè)基于安卓平臺(tái)的簽到管理系統(tǒng)。本文結(jié)構(gòu)如下:第1章緒論簡(jiǎn)單介紹了課題任務(wù)的研究背景、國(guó)內(nèi)外研究現(xiàn)狀以及需要完成的目標(biāo)。第2章介紹了本系統(tǒng)開發(fā)需要用到的技術(shù),包括安卓應(yīng)用開發(fā)技術(shù)和數(shù)據(jù)庫(kù)技術(shù)。第3章對(duì)本系統(tǒng)進(jìn)行了需求分析,包括可行性分析和需求分析。第4章根據(jù)第3章的需求分析對(duì)系統(tǒng)進(jìn)行了設(shè)計(jì),包括系統(tǒng)架構(gòu)設(shè)計(jì)、各功能模塊的設(shè)計(jì)以及數(shù)據(jù)庫(kù)的設(shè)計(jì)。第5章講述了如何實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊。第6章講述了對(duì)系統(tǒng)的

12、測(cè)試,提供了測(cè)試方法、流程及測(cè)試的結(jié)果。第2章 開發(fā)工具概述2.1 Android概述2.1.1 Android體系結(jié)構(gòu)Android 鄧凡平.深入理解AndroidM.機(jī)械工業(yè)出版社,2014. (韓)金泰延,(韓)宋亨周,(韓)樸知?jiǎng)祝?Android架構(gòu)揭秘M.人民郵電出版社,2012. Chin E, Felt A P, Greenwood K, et al. Analyzing inter-application communication in AndroidC.Proceedings of the 9th international conference on Mobile s

13、ystems, applications, and services. ACM, 2011: 239-252.是由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)的一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于智能手機(jī)和平板電腦。Android平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Android由四層體系結(jié)構(gòu)組成,這四層結(jié)構(gòu)分別是:應(yīng)用層(Application)、應(yīng)用框架層(Application Framework)、系統(tǒng)運(yùn)行庫(kù)層(Libraries)以及Linux內(nèi)核層(Linux Kernel) 朱長(zhǎng)江,楊一平. Android操作系統(tǒng)的安全機(jī)制研究J. 電腦知識(shí)與技術(shù),

14、2013,(25):5628-5629.。這四層結(jié)構(gòu)如圖2-1所示。圖2-1 Android的體系結(jié)構(gòu)(1)應(yīng)用層(Application)應(yīng)用層是用來用戶交互的。在Android應(yīng)用中,應(yīng)用層是用戶能夠看見的,用戶可以對(duì)其進(jìn)行操作。(2)應(yīng)用框架層(Application Framework)Android應(yīng)用程序的開發(fā)是基于框架和組件的,開發(fā)人員可以使用Android系統(tǒng)API以及android 應(yīng)用框架中的各個(gè)組件。(3)系統(tǒng)運(yùn)行庫(kù)層(Libraries)Android應(yīng)用程序框架之下是一套C/C+函數(shù)庫(kù),它們服務(wù)于Android應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者 李楊,馮剛,

15、李亮,羅擁華. 基于Android的多媒體應(yīng)用開發(fā)與研究J. 計(jì)算機(jī)與現(xiàn)代化,2011,(04):149-152.。(4)Linux內(nèi)核層(Linux Kernel)Android 的核心系統(tǒng)服務(wù)依賴于Linux 2.6 內(nèi)核,操作系統(tǒng)為Android提供的服務(wù)包括:1)安全性(Security)。 2)內(nèi)存管理(Memory Management) 3)進(jìn)程管理(Process Management) 4)網(wǎng)絡(luò)堆棧(Network Stack)5)驅(qū)動(dòng)程序模型(Driver Model)2.1.2 Android組件Android有四大組件,分別是:Activity、Service、Broa

16、dcast Reciever、Content Provider。(1)ActivityActivity是展現(xiàn)給用戶的界面。應(yīng)用程序需要能夠和用戶交互,這就需要一個(gè)可供用戶操作的界面,在Android應(yīng)用程序中,Activity就是用來實(shí)現(xiàn)該功能的。Activity一般是由很多組件構(gòu)成的,例如TextView、Button、EditText等。Android提供了豐富的API,在開發(fā)應(yīng)用時(shí),開發(fā)人員只需要調(diào)用響應(yīng)的函數(shù)就能完成相應(yīng)的功能。(2)ServiceService是運(yùn)行在程序后臺(tái)的,用戶是看不到的。與Java Web中的Service相似,Android中的Service和用戶界面也是分

17、開的,Service用來處理Activity的一些操作。例如當(dāng)我們退出微信時(shí)依然能夠接收到消息,Service此時(shí)一直在后臺(tái)運(yùn)行著,但是用戶是看不到的。(3)Broadcast RecieverBroadcast Reciever翻譯成中文是廣播接收器的意思。廣播接收器要想工作首先得有廣播消息,有了廣播消息后才能接收。廣播接收器是為了方便開發(fā)人員準(zhǔn)備的,例如魔偶個(gè)項(xiàng)目需要在完成某個(gè)操作后讓鬧鐘響,此時(shí)開發(fā)人員可在該操作完成后發(fā)出一個(gè)廣播消息,鬧鐘接收到以后就會(huì)響。(4)Content ProviderContent Provider在Android中起到存儲(chǔ)數(shù)據(jù)的作用。Content Prov

18、ider能夠?qū)崿F(xiàn)在多個(gè)應(yīng)用間傳遞數(shù)據(jù),例如手機(jī)QQ能夠訪問聯(lián)系人,就是利用了Content Provider來實(shí)現(xiàn)的。2.2 MySQL概述MySQL 孫輝. MySQL查詢優(yōu)化的研究和改進(jìn)D.華中科技大學(xué),2007.是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。MySQL所使用的 SQL 語(yǔ)言是用于訪問數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MyS

19、QL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù) 張杰. Android平臺(tái)EPUB電子書閱讀器的設(shè)計(jì)與實(shí)現(xiàn)D.南京大學(xué),2013.。2.3 Android開發(fā)環(huán)境搭建常用的Android開發(fā)平臺(tái)有Android Studio和Eclipse+ADT兩種,本系統(tǒng)使用第二種方式進(jìn)行開發(fā)。其中,Eclipse版本為3.9.2,ADT版本為ADT-23.0.7,編程語(yǔ)言使用Java語(yǔ)言,編譯環(huán)境為jdk7。(1)下載安裝JDK(2)配置JDK的變量環(huán)境(3)下載安裝EclipseEcl

20、ipse的版本有多個(gè),本系統(tǒng)采用Eclipse IDE for Java EE Developers這個(gè)版本。(4)下載安裝Android SDK(5)安裝ADT插件2.4 本章小結(jié)本章主要介紹了Android應(yīng)用開發(fā)過程中需要用到的一些工具。首先講述了Android平臺(tái)的一些相關(guān)知識(shí),接著講述了開發(fā)過程中需要用到的數(shù)據(jù)庫(kù)MySQL,最后講述了如何搭建一個(gè)完整的Android開發(fā)環(huán)境。搭建好開發(fā)環(huán)境以后,接下來我們將討論如何利用該平臺(tái)完成本系統(tǒng)。第3章 系統(tǒng)需求分析3.1 可行性分析隨著科技的高速發(fā)展,智能手機(jī)已經(jīng)成為了大學(xué)生必不可少的工具,智能手機(jī)的廣泛使用以及互聯(lián)網(wǎng)的無(wú)處不在,打破了人們交

21、往,信息傳輸?shù)臅r(shí)空限制,讓資源、信息隨處可取。本文基于安卓平臺(tái)開發(fā)的簽到管理系統(tǒng)能夠輕松的實(shí)現(xiàn)課堂簽到,考勤統(tǒng)計(jì),有效地提高了課堂考勤的工作效率。系統(tǒng)客戶端采用安卓開發(fā)技術(shù),服務(wù)端采用Servlet技術(shù)實(shí)現(xiàn),數(shù)據(jù)層采用MySQL管理數(shù)據(jù)。安卓系統(tǒng)應(yīng)用是采用Java語(yǔ)言開發(fā)的,具備一定Java基礎(chǔ)的開發(fā)人員可以開發(fā)相關(guān)的安卓應(yīng)用,并且由于安卓平臺(tái)的開源性,很多功能對(duì)應(yīng)的實(shí)現(xiàn)代碼都有現(xiàn)成的,代碼的可重用度非常高,提高了程序開發(fā)的效率。Servlet運(yùn)行于支持Java的應(yīng)用服務(wù)器中 李凌,代如剛. 基于Android系統(tǒng)的iLibrary圖書館手機(jī)應(yīng)用圖書館生態(tài)系統(tǒng)中移動(dòng)圖書館應(yīng)用初探J. 圖書館雜

22、志,2013,(01):61-65.,本系統(tǒng)采用tomcat作為應(yīng)用服務(wù)器。從可操作性方面來說,本系統(tǒng)界面友好,容易操作,適用于所有會(huì)使用安卓手機(jī)的學(xué)生以及教師。3.2 需求分析3.2.1 功能需求分析通過簽到管理系統(tǒng),用戶可以查看本學(xué)期的課程表。學(xué)生可以在對(duì)應(yīng)的課程中進(jìn)行簽到操作,同時(shí)還可以查看自己該課程的簽到記錄;教師可以查看學(xué)生每周出勤的情況統(tǒng)計(jì)以及每個(gè)學(xué)生的全部出勤記錄。本系統(tǒng)是面向?qū)W生和教師的。學(xué)生需使用學(xué)號(hào)和密碼進(jìn)行登錄,教師需使用工號(hào)和密碼進(jìn)行登錄。學(xué)生簽到時(shí),系統(tǒng)會(huì)根據(jù)學(xué)生簽到的時(shí)間給予不同的響應(yīng),學(xué)生對(duì)每一節(jié)課只能簽到一次,以免重復(fù)。系統(tǒng)對(duì)學(xué)生的簽到時(shí)間是有要求的,學(xué)生只能在

23、該課程開始前十分鐘到該課程開始后十分鐘之內(nèi)的時(shí)間段內(nèi)進(jìn)行簽到,課程開始前十分鐘到上課為正常簽到,課程開始到上課十分鐘為遲到,其余時(shí)間不能進(jìn)行簽到。系統(tǒng)在統(tǒng)計(jì)學(xué)生出勤情況時(shí),會(huì)根據(jù)學(xué)生的簽到時(shí)間來判斷簽到狀態(tài)。簽到狀態(tài)可分為:正常簽到、遲到和曠課三種。正常簽到和遲到只需讀取簽到狀態(tài)即可,曠課需判斷學(xué)生有無(wú)簽到記錄。3.2.2 界面需求分析系統(tǒng)界面是用來和用戶交互的,系統(tǒng)界面的好壞直接影響用戶的使用體驗(yàn),因此有好的用戶界面設(shè)計(jì)顯得非常有必要。目前,界面風(fēng)格有著向簡(jiǎn)潔發(fā)展的趨勢(shì),界面的布局合理、色彩搭配協(xié)調(diào)決定了界面的美觀。為方便不同身份的用戶使用系統(tǒng),本系統(tǒng)將不同用戶的功能分別放置于不同的界面。(

24、1)學(xué)生客戶端學(xué)生客戶端界面包含所有適合學(xué)生完成的功能,包括:登錄、課程表、個(gè)人信息、課程信息、簽到記錄等。(2)教師客戶端相比于學(xué)生客戶端,教師客戶端實(shí)現(xiàn)了更多的功能界面,例如:查看每周學(xué)生出勤情況統(tǒng)計(jì)頁(yè)面、每個(gè)學(xué)生的出勤記錄等。3.2.3 性能需求分析評(píng)價(jià)一個(gè)系統(tǒng)的質(zhì)量除了看其是否滿足用戶的功能需求外,系統(tǒng)的性能也有著重大關(guān)系,具體體現(xiàn)在:系統(tǒng)的響應(yīng)時(shí)間、并發(fā)性、穩(wěn)定性以及安全性等。系統(tǒng)性能好壞直接影響用戶對(duì)軟件的體驗(yàn)效果。(1)并發(fā)性。學(xué)生在進(jìn)行簽到時(shí),有可能會(huì)出現(xiàn)多個(gè)學(xué)生同時(shí)訪問系統(tǒng)的情況,這時(shí)需要系統(tǒng)能夠并發(fā)處理多個(gè)用戶請(qǐng)求,防止服務(wù)器崩潰。(2)穩(wěn)定性。本系統(tǒng)能夠提供學(xué)生查看課表的

25、功能,因此需要做到用戶可隨時(shí)隨地使用系統(tǒng),所以系統(tǒng)需要有非常強(qiáng)的穩(wěn)定性。(3)安全性。目前系統(tǒng)對(duì)安全性方面沒有太高的要求。3.3 本章小結(jié)本章主要通過對(duì)目前課堂考勤現(xiàn)狀的分析,分析明確了基于安卓平臺(tái)的簽到管理系統(tǒng)的需求目標(biāo),從用戶的角度,詳細(xì)分析了系統(tǒng)的功能、界面、性能需求。這些工作為下一步系統(tǒng)設(shè)計(jì)工作提供了有力的支持。第4章 系統(tǒng)設(shè)計(jì)經(jīng)過前面的需求分析,我們已經(jīng)明白了本文需要實(shí)現(xiàn)完成什么功能,而在設(shè)計(jì)階段的工作,就是考慮如何實(shí)現(xiàn)這些功能,也就是考慮整個(gè)系統(tǒng)是由哪些模塊組成以及這些模塊之間的相互關(guān)系。系統(tǒng)設(shè)計(jì)時(shí),采用由上到下的原則進(jìn)行工作。首先設(shè)計(jì)出系統(tǒng)的總體架構(gòu),接著一層一層深入設(shè)計(jì),完成每

26、個(gè)功能模塊。系統(tǒng)總體架構(gòu)的設(shè)計(jì)是在系統(tǒng)需求分析的前提下,將整個(gè)系統(tǒng)劃分成各個(gè)子系統(tǒng),合理安排各方面相關(guān)事宜的整個(gè)過程。包括數(shù)據(jù)的存儲(chǔ)設(shè)計(jì)、軟硬件設(shè)施的配置以及整個(gè)系統(tǒng)實(shí)現(xiàn)的規(guī)劃。4.1 系統(tǒng)總體架構(gòu)基于安卓的簽到管理系統(tǒng)充分利用移動(dòng)互聯(lián)網(wǎng)的優(yōu)勢(shì),實(shí)現(xiàn)課堂考勤工作的網(wǎng)絡(luò)化,使原本繁瑣、低效的課堂考勤變得快捷高效,很大程度上提高了課堂教學(xué)效率。系統(tǒng)的總體架構(gòu)如圖所示。整個(gè)系統(tǒng)由三層體系結(jié)構(gòu)構(gòu)成,分別為表示層(用戶界面層),業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層(持久層)。如圖所示:(1)表示層(用戶界面層)表示層為用戶提供交互操作界面,由一系列與用戶交互的界面組成。本系統(tǒng)針對(duì)不同的用戶類型提供了不同的用戶界面。(

27、2)業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層在是三層架構(gòu)中最重要的一層,處于表示層和數(shù)據(jù)訪問層中間,在數(shù)據(jù)交換中起到了承上啟下的作用,系統(tǒng)所提供的全部功能都在這一層實(shí)現(xiàn)。(3)數(shù)據(jù)訪問層(持久層)數(shù)據(jù)訪問層主要負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問 鐘萍,安占峰,溫敬朋. 基于Android平臺(tái)的手機(jī)圖書服務(wù)系統(tǒng)設(shè)計(jì)J. 中國(guó)現(xiàn)代教育裝備,2014,(15):79-81.,實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互。4.2 功能模塊設(shè)計(jì)(1)登錄模塊用戶輸入用戶名、密碼和用戶類型后,通過連接網(wǎng)絡(luò)將用戶名、密碼以及用戶類型發(fā)送到服務(wù)器,服務(wù)器根據(jù)用戶類型檢索對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的用戶名和密碼,如果匹配成功,則把服務(wù)器端的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給客戶端,否則返回錯(cuò)誤提示信息

28、給客戶端。具體的實(shí)現(xiàn)流程如圖4-1所示。圖4-1 登錄流程框圖(2)獲取課表模塊用戶首次登陸時(shí),系統(tǒng)通過網(wǎng)絡(luò)將用戶名和用戶類型發(fā)送到服務(wù)器,服務(wù)器根據(jù)用戶類型和用戶名檢索對(duì)應(yīng)的課程表。不同的用戶類型在檢索課程表時(shí)使用的檢索方式也不同,當(dāng)用戶類型為學(xué)生時(shí),需從選課表中檢索studentId與用戶名匹配的課程,當(dāng)用戶類型為教師時(shí),則需從課程表中檢索teacherId與用戶名匹配的課程。用戶登陸以后每次打開客戶端時(shí),系統(tǒng)都會(huì)自動(dòng)聯(lián)網(wǎng)從服務(wù)器端更新課程信息。具體的實(shí)現(xiàn)流程如圖4-2所示。(3)簽到模塊進(jìn)入系統(tǒng)后,學(xué)生用戶可以對(duì)課程進(jìn)行簽到操作。學(xué)生點(diǎn)擊簽到按鈕后,系統(tǒng)服務(wù)器端應(yīng)該根據(jù)簽到時(shí)間來判斷學(xué)生

29、的簽到狀態(tài)。操作完成后系統(tǒng)將結(jié)果顯示在簽到信息界面。具體的實(shí)現(xiàn)流程如圖4-3所示。(4)查看簽到記錄模塊學(xué)生可通過該模塊查看自己的簽到記錄,教師可通過該模塊查看所有學(xué)生的簽到記錄。學(xué)生客戶端通過點(diǎn)擊按鈕獲取對(duì)應(yīng)課程的簽到記錄,當(dāng)用戶點(diǎn)擊按鈕后,學(xué)生客戶端將課程Id和學(xué)號(hào)發(fā)送給服務(wù)器,服務(wù)器查詢對(duì)應(yīng)的簽到記錄,最后返回給客戶端展示出來;教師客戶端首先通過服務(wù)器獲取對(duì)應(yīng)的選課學(xué)生名單,然后再?gòu)姆?wù)器獲取對(duì)應(yīng)學(xué)生的簽到記錄。圖4-2 獲取課表流程圖圖4-3 簽到流程圖(5)統(tǒng)計(jì)分析模塊通過統(tǒng)計(jì)分析模塊實(shí)現(xiàn)教師用戶統(tǒng)計(jì)每節(jié)課的學(xué)生出勤情況以及每個(gè)學(xué)生總的出勤記錄。教師客戶端在課程詳情頁(yè)面需展示每節(jié)課的

30、學(xué)生出勤統(tǒng)計(jì),包括每一節(jié)課有多少學(xué)生正常上課、多少學(xué)生遲到以及多少學(xué)生曠課,并且還可統(tǒng)計(jì)對(duì)應(yīng)的學(xué)生名單。4.3 數(shù)據(jù)庫(kù)設(shè)計(jì)4.3.1 學(xué)生信息表學(xué)生表(student_info)的屬性有:學(xué)號(hào),姓名,密碼,性別,生日,電話和郵箱7個(gè)屬性字段。學(xué)生通過客戶端登錄系統(tǒng)時(shí),通過學(xué)號(hào)和密碼來查詢學(xué)生表,用于驗(yàn)證學(xué)生的登錄信息,并將請(qǐng)求的內(nèi)容通過Json返回到客戶端,實(shí)現(xiàn)登錄、查詢、簽到等功能。學(xué)生信息表如4-1所示。表4-1 學(xué)生信息表字段名稱字段屬性字段類型字段長(zhǎng)度是否主鍵是否允許為空studentId學(xué)號(hào)int11是否name姓名varchar20否否password密碼varchar20否否ge

31、nder性別char2否是birthdate生日date0否是phone電話char11否是email郵箱varchar20否是4.3.2 教師信息表教師表(teacher_info)的屬性有:工號(hào),姓名,密碼,性別,生日,電話和郵箱7個(gè)屬性字段。教師通過客戶端登錄系統(tǒng)時(shí),通過工號(hào)和密碼來查詢教師表,用于驗(yàn)證教師的登錄信息,并將請(qǐng)求的內(nèi)容通過Json返回到客戶端,實(shí)現(xiàn)登錄、查詢、統(tǒng)計(jì)等功能。教師信息表如表4-2所示。表4-2 教師信息表字段名稱字段屬性字段類型字段長(zhǎng)度是否主鍵是否允許為空teacherId工號(hào)int11是否name姓名varchar20否否password密碼varchar20

32、否否續(xù)表4-2字段名稱字段屬性字段類型字段長(zhǎng)度是否主鍵是否允許為空gender性別char2否是birthdate生日date0否是phone電話char11否是email郵箱varchar20否是4.3.3 課程信息表課程信息表(course_info)的屬性有:課程Id,課程名稱,教室,教師工號(hào),上課時(shí)間,開始周數(shù),結(jié)束周數(shù),開始節(jié)數(shù),結(jié)束節(jié)數(shù)和課程類型10個(gè)屬性字段。其中課程類型分為三種,分別為:全部、單周和雙周。課程信息如表4-3所示。表4-3 課程信息表字段名稱字段屬性字段類型字段長(zhǎng)度是否主鍵是否允許為空courseId課程Idint11是否courseName課程名稱varchar

33、20否否classRoom教室varchar50否否teacherId教師工號(hào)int20否否dayOfWeek上課時(shí)間int11否否beginWeek開始周數(shù)int11否否endWeek結(jié)束周數(shù)int11否否beginIndex開始節(jié)數(shù)int11否否endIndex結(jié)束節(jié)數(shù)int11否否courseType課程類型int11否否4.3.4 簽到記錄表簽到記錄表(sign_info)有7個(gè)屬性,分別為:學(xué)號(hào),課程Id,簽到周數(shù),簽到日期,簽到節(jié)數(shù),簽到時(shí)間,簽到狀態(tài)。其中,簽到日期表示的是周幾簽到,簽到時(shí)間則表示簽到時(shí)的具體日期時(shí)間。查詢?cè)摫砜色@得每個(gè)學(xué)生每節(jié)課的出勤情況。簽到記錄表如表4-4所

34、示。表4-4 簽到記錄表字段名稱字段屬性字段類型字段長(zhǎng)度是否主鍵是否允許為空stuId學(xué)號(hào)int11是否couId課程Idint11是否signWeek簽到周數(shù)int11否否signDay簽到日期int11否否signindex簽到節(jié)數(shù)int11否否signTime簽到時(shí)間datetime0是否signState簽到狀態(tài)int11否否4.4 本章小結(jié)本章講述了整個(gè)系統(tǒng)的設(shè)計(jì)過程,包括系統(tǒng)的總體結(jié)構(gòu),各個(gè)功能模塊的設(shè)計(jì)以及數(shù)據(jù)庫(kù)設(shè)計(jì)。系統(tǒng)設(shè)計(jì)完成后,接下來我們將依據(jù)系統(tǒng)設(shè)計(jì)目標(biāo)實(shí)現(xiàn)系統(tǒng)。第5章 系統(tǒng)實(shí)現(xiàn)5.1 服務(wù)器端功能實(shí)現(xiàn)服務(wù)器端各個(gè)功能模塊框架大體相同,在本文中以簽到模塊為例進(jìn)行論述。服務(wù)

35、器端針對(duì)每一個(gè)功能模塊都有兩個(gè)類,一個(gè)是HttpServlet響應(yīng)請(qǐng)求,另一個(gè)是數(shù)據(jù)庫(kù)Manager。例如簽到模塊對(duì)應(yīng)的兩個(gè)類分別為SignInManager和SignInServlet。服務(wù)器端負(fù)責(zé)響應(yīng)客戶端的請(qǐng)求??蛻舳诵枰L問服務(wù)器獲取數(shù)據(jù)時(shí),會(huì)通過post方式發(fā)出請(qǐng)求。在簽到模塊中,當(dāng)學(xué)生用戶點(diǎn)擊簽到按鈕時(shí),Android客戶端向服務(wù)器發(fā)送post請(qǐng)求,服務(wù)器接收到請(qǐng)求后,根據(jù)url響應(yīng)對(duì)應(yīng)的請(qǐng)求。簽到模塊響應(yīng)后綴為sign的請(qǐng)求,這個(gè)在服務(wù)器Servlet中設(shè)定,代碼如下:WebServlet("/sign")public class SignInServlet

36、extends HttpServlet 服務(wù)器接收到請(qǐng)求后,處理對(duì)應(yīng)的操作,具體過程如下:protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException response.setContentType("text/html; charset=UTF-8");DataOutputStream dos = new DataOutputStream(response.getOutputStream();String

37、 studentId = request.getParameter("studentId");String courseId = request.getParameter("courseId");String result = doSign(studentId, courseId);dos.writeUTF(result);其中,studentId和courseId是從客戶端接收到的數(shù)據(jù)。doSign就是服務(wù)器需要進(jìn)行的操作,主要就是操作數(shù)據(jù)庫(kù),包括查詢,新增等。為了不讓代碼顯得很亂,所有操作數(shù)據(jù)庫(kù)的代碼全部都封裝在SignManager中。5.2 客戶

38、端功能實(shí)現(xiàn)5.2.1 登錄功能實(shí)現(xiàn)登錄界面采用線性布局實(shí)現(xiàn),按照水平方向,本系統(tǒng)將登錄界面分為三個(gè)部分,最頂端為文本框控件,顯示“登錄”,中間是登錄信息部分,包含用戶身份選擇下拉列表、用戶名輸入文本框和用戶密碼輸入文本框,最后是登錄按鈕。完成頁(yè)面布局后,需要對(duì)頁(yè)面的控件進(jìn)行綁定事件監(jiān)聽,其中用戶身份選擇文本框點(diǎn)擊后,需要顯示一個(gè)下拉列表,用戶可點(diǎn)擊對(duì)應(yīng)的身份進(jìn)行選擇,登錄按鈕點(diǎn)擊后需要獲取用戶身份、用戶名和密碼文本框中的內(nèi)容,系統(tǒng)將這些數(shù)據(jù)發(fā)送到服務(wù)器,完成用戶的登錄驗(yàn)證。因?yàn)橄到y(tǒng)需要訪問網(wǎng)絡(luò),因此需要有訪問網(wǎng)絡(luò)的權(quán)限,在AndroidMainfest.xml中添加訪問網(wǎng)絡(luò)的權(quán)限。<us

39、es-permission android:name="android.permission.INTERNET" />用戶在登錄時(shí),將獲取的身份、用戶名和密碼發(fā)送給url為“ :8080/signature_server/login/”的網(wǎng)址。protected void login(final String username, final String password,final String serverUrl) new Thread(new Runnable() Overridepublic void run() Http

40、Client client = new DefaultHttpClient();HttpPost httpPost = new HttpPost(serverUrl);List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("username", username);params.add(new BasicNameValuePair("password", password);try HttpResp

41、onse response = client.execute(httpPost);if (response.getStatusLine().getStatusCode() = 200) HttpEntity entity = response.getEntity();String entityString = EntityUtils.toString(entity);String jsonString = entityString.substring(entityString.indexOf("");JSONObject json = new JSONObject(json

42、String);sendMessage(MSG_LOGIN_RESULT, json); catch (ClientProtocolException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); catch (JSONException e) e.printStackTrace();).start();服務(wù)器接收到客戶端的請(qǐng)求數(shù)據(jù)后,根據(jù)接收到的數(shù)據(jù)來查詢對(duì)應(yīng)的數(shù)據(jù)庫(kù)。如果用戶名和密碼都正確,給客戶端返回0;如果與該用戶名匹配密碼不正確返回1;如果沒有找到對(duì)應(yīng)的用戶名返回2;遇到未知錯(cuò)誤則返回-1。pri

43、vate String doLogin(String username, String password) String sql = "select * from " + StudentLoginManager.TABLE_NAME+ " where " + StudentLoginManager.COLUMN_USERID + " = " + "'"+ username + "'"System.out.println("url = " + sql);Stud

44、entLoginManager slm = new StudentLoginManager();ResultSet rst = slm.query(sql);try rst.next();String pwd = rst.getString(StudentLoginManager.COLUMN_PASSWORD);if (!password.equals(pwd) resultMap.put("result_code", 1); else resultMap.put("result_code", 0);resultMap.put("userId

45、",rst.getString(StudentLoginManager.COLUMN_USERID);resultMap.put("name",rst.getString(StudentLoginManager.COLUMN_NAME);resultMap.put("gender",rst.getString(StudentLoginManager.COLUMN_GENDER);resultMap.put("birthdate",rst.getInt(StudentLoginManager.COLUMN_BIRTHDATE)

46、;resultMap.put("phone",rst.getString(StudentLoginManager.COLUMN_PHONE);resultMap.put("email",rst.getString(StudentLoginManager.COLUMN_EMAIL); catch (SQLException e) resultMap.put("result_code", 2);e.printStackTrace();return (new Gson().toJson(resultMap);客戶端接收到服務(wù)器返回的數(shù)據(jù)后,

47、根據(jù)返回的數(shù)據(jù)來進(jìn)行相應(yīng)的操作。如果返回的是0,系統(tǒng)跳轉(zhuǎn)到主頁(yè)面;如果返回的是1,使用Toast提示用戶名或密碼錯(cuò)誤;如果返回的是2,使用Toast提示用戶名不存在;如果返回的是1,使用Toast提示遇到了未知錯(cuò)誤。private void handleLoginResult(JSONObject json) int resultCode = -1;try resultCode = json.getInt("result_code"); catch (JSONException e) e.printStackTrace();switch (resultCode) case

48、0:onLoginSuccess(json);break;case 1:show("用戶名或密碼錯(cuò)誤!");break;case 2:show("用戶名或密碼錯(cuò)誤!");break;case -1:show("用戶名或密碼錯(cuò)誤!");break;default:show("登陸失??!");break;通過以上操作,客戶端的登錄功能就完全實(shí)現(xiàn)了。 5.2.2 課表功能實(shí)現(xiàn)作為一款課堂簽到管理系統(tǒng),課程表功能是必不可少的,而且友好的課程表界面非常重要。借鑒目前市面很火的超級(jí)課程表app,本系統(tǒng)實(shí)現(xiàn)了如圖5-1所示的課程

49、表界面。圖5-1 課程表界面界面整體采用線性布局實(shí)現(xiàn),從上到下分為兩部分,分別是星期導(dǎo)航欄和課程格子,其中課程格子界面嵌套一個(gè)水平線性布局,左側(cè)為上課節(jié)數(shù)索引,采用ListView實(shí)現(xiàn),右側(cè)是一個(gè)幀布局,底部的分隔線是采用GridView實(shí)現(xiàn)的,頂部課程按鈕是自定義的組件。其代碼為:public class CourseTableLayout extends ViewGroup private int itemCount;private Context mContext;private List<CourseBean> courseBeans;public CourseTableL

50、ayout(Context context) this(context, null);public CourseTableLayout(Context context, AttributeSet attrs) this(context, attrs, 0);public CourseTableLayout(Context context, AttributeSet attrs,int defStyleAttr) super(context, attrs, defStyleAttr);this.mContext = context;courseBeans = new ArrayList<&

51、gt;();Overrideprotected void onLayout(boolean c, int lt, int tp, int rt, int bm) int itemHeight = getMeasuredHeight() / itemCount;int itemWidth = getMeasuredWidth() / 7;final int count = getChildCount();for (int i = 0; i < count; i+) View child = getChildAt(i);CourseBean courseBean = courseBeans.

52、get(i);int childL = courseBean.getDayOfWeek() * itemWidth;int childT = (courseBean.getBeginIndex() - 1) * itemHeight;int childR = (courseBean.getDayOfWeek() + 1) * itemWidth;int childB = courseBean.getEndIndex() * itemHeight;child.layout(childL + 2, childT + 2, childR - 2, childB - 3);public void ad

53、dList(CourseBean courseBean) courseBeans.add(courseBean);Overridepublic void removeAllViews() super.removeAllViews();courseBeans.clear();public void addView(View child, final CourseBean courseBean) courseBeans.add(courseBean);super.addView(child);public int getItemCount() return itemCount;public voi

54、d setItemCount(int itemCount) this.itemCount = itemCount;在課程展示時(shí),需要對(duì)課程表數(shù)據(jù)進(jìn)行處理,提取出當(dāng)前周的課程信息。該系統(tǒng)在處理課程信息時(shí),首先從服務(wù)器獲取對(duì)應(yīng)的課程信息,將它們先寫進(jìn)本地?cái)?shù)據(jù)庫(kù),在需要展示課程表時(shí),從本地?cái)?shù)據(jù)庫(kù)獲取屬于本周的課程信息,然后將這些課程信息展示在課程表中。在提取當(dāng)前周課程信息時(shí),系統(tǒng)需先查找出全部開始周數(shù)小于等于當(dāng)前周并且結(jié)束周大于等于當(dāng)前周的課程,接著還需根據(jù)課程分類進(jìn)一步篩選。在本系統(tǒng)中,課程分為三類,分別是:奇數(shù)周、偶數(shù)周和全部周。系統(tǒng)經(jīng)過第一輪篩選后,還需判斷當(dāng)前周是奇數(shù)周還是偶數(shù)周,然后根據(jù)課

55、程分類再進(jìn)一步篩選。5.2.3 簽到功能實(shí)現(xiàn)學(xué)生可在課程詳情頁(yè)點(diǎn)擊簽到按鈕進(jìn)行簽到。簽到時(shí),客戶端向服務(wù)器發(fā)送簽到請(qǐng)求,將學(xué)生學(xué)號(hào)和課程Id發(fā)送給服務(wù)器,服務(wù)器根據(jù)接收到的數(shù)據(jù)進(jìn)行相應(yīng)的操作后將結(jié)果返回給客戶端。在本系統(tǒng)中,服務(wù)器會(huì)返回一個(gè)result_code給客戶端,result_code的值為-1時(shí)表示發(fā)生了未知錯(cuò)誤,當(dāng)result_code值為0時(shí)表示正常簽到,當(dāng)result_code值為1時(shí)表示已經(jīng)簽過到了,當(dāng)result_code值為2時(shí)表示遲到,當(dāng)result_code值為3時(shí)表示現(xiàn)在不是簽到時(shí)間,當(dāng)result_code值為4時(shí)表示該課程不在今天。服務(wù)器接收到請(qǐng)求后,首先計(jì)算出今天是星期幾,第幾周,然后根據(jù)這些參數(shù)判斷該課程是否為今天的課程,如果不是直接返回4,如果是今天的課程則進(jìn)行下一輪判斷。接下來系統(tǒng)會(huì)判斷當(dāng)前時(shí)間是否為簽到時(shí)間,本系統(tǒng)中簽到時(shí)間為上課前10分鐘到上課后10分鐘,如果當(dāng)前時(shí)間不屬于簽

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論