基于Java的課程簽到APP設(shè)計(jì)_第1頁
基于Java的課程簽到APP設(shè)計(jì)_第2頁
基于Java的課程簽到APP設(shè)計(jì)_第3頁
基于Java的課程簽到APP設(shè)計(jì)_第4頁
基于Java的課程簽到APP設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

II目錄TOC\o"1-3"\h\u4389摘要 I29724Abstract II5968第一章緒論 1108641.1課題研究背景以及研究意義 1133211.2國內(nèi)外研究現(xiàn)狀 1252791.2.1國內(nèi)研究現(xiàn)狀 1304121.2.2國外研究現(xiàn)狀 246201.3本課題研究內(nèi)容 321058第二章系統(tǒng)相關(guān)技術(shù)與分析 4212922.1Java編程語言概述 4259832.2AndroidStudio開發(fā)環(huán)境介紹 487742.3SQLite數(shù)據(jù)庫簡介 6143042.4需求分析 6239852.5本章小結(jié) 86413第三章系統(tǒng)方案設(shè)計(jì) 9323823.1系統(tǒng)總體架構(gòu)設(shè)計(jì) 9281113.2數(shù)據(jù)庫設(shè)計(jì) 9200613.2.1概念結(jié)構(gòu)設(shè)計(jì) 9145583.2.1數(shù)據(jù)表設(shè)計(jì) 11199203.3后端設(shè)計(jì) 12263193.4前端設(shè)計(jì) 12216963.5本章小結(jié) 1324270第四章系統(tǒng)實(shí)現(xiàn) 1422914.1后端實(shí)現(xiàn) 1596724.1.1用戶登錄注冊功能實(shí)現(xiàn) 15248184.1.2賬戶管理功能實(shí)現(xiàn) 1741344.1.3課表管理功能實(shí)現(xiàn) 21244164.1.4簽到管理功能實(shí)現(xiàn) 2177734.1.5管理員功能實(shí)現(xiàn) 22209514.2前端實(shí)現(xiàn) 23171004.2.1登錄注冊界面實(shí)現(xiàn) 23306474.2.2賬戶管理界面實(shí)現(xiàn) 249634.2.3課表管理及課表信息展示實(shí)現(xiàn) 27226884.2.4考勤管理及信息展示實(shí)現(xiàn) 29170784.2.5管理員操作實(shí)現(xiàn) 2939354.3數(shù)據(jù)庫操作實(shí)現(xiàn) 31311884.4本章小結(jié) 3213717第五章系統(tǒng)測試 3329805.1功能測試 33157255.2本章小結(jié) 3523647結(jié)論 3612818參考文獻(xiàn) 38緒論1.1課題研究背景以及研究意義在當(dāng)今這個經(jīng)濟(jì)高速發(fā)展的社會背景下,信息技術(shù)也隨之飛速發(fā)展,智能手機(jī)也在不斷地普及,移動互聯(lián)網(wǎng)已經(jīng)在不知不覺中成為了人們生活中不可或缺的一部分。在日常生活中,移動互聯(lián)網(wǎng)為人們提供了豐富的娛樂選擇,也讓人們獲得信息更為便捷,人們可以通過社交媒體和通訊工具就可以做到足不出戶就了解到自己想要知道的各種實(shí)時信息,與他人進(jìn)行實(shí)時聯(lián)系和跨地域溝通交流。移動互聯(lián)網(wǎng)技術(shù)的崛起為教育行業(yè)帶來了革命性的變化,并且為教學(xué)質(zhì)量和學(xué)生管理提供了更為高效和便捷的服務(wù)。在傳統(tǒng)的課堂上,老師們大多使用紙質(zhì)記錄和口頭點(diǎn)名來進(jìn)行課堂簽到從而確保學(xué)生的出勤率,但是這種方式不僅效率不高,且會占用一定的課堂時間,容易造假和數(shù)據(jù)不易統(tǒng)計(jì)。如果學(xué)生人數(shù)較多,該方式更顯繁瑣,增加老師和學(xué)生的上課負(fù)擔(dān)。因此開發(fā)一款針對學(xué)校需求而設(shè)計(jì)出的基于移動互聯(lián)網(wǎng)的課程簽到APP,無論是對提高學(xué)校的教學(xué)管理,還是對減輕老師的教學(xué)負(fù)擔(dān)和增強(qiáng)學(xué)生的學(xué)習(xí)體驗(yàn)都有著非常重要的意義。此外,教育是一個民族的最根本的事業(yè),隨著國家對教育事業(yè)的推進(jìn),教育也逐漸信息化?,F(xiàn)在越來越多的學(xué)校開始探索有關(guān)智慧校園的建設(shè),類似于超新學(xué)習(xí)通,騰訊課堂和中國大學(xué)MOOC這種教學(xué)平臺,它們都提供了豐富的學(xué)習(xí)資源和教學(xué)工具。智慧校園是以物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等技術(shù)為基礎(chǔ),實(shí)現(xiàn)校園教學(xué)、管理、服務(wù)全面智能化、信息化的新型校園環(huán)境。其中課程簽到作為智慧校園建設(shè)的重要組成部分,課程簽到的信息化水平會直接影響教學(xué)管理的質(zhì)量和效率,所以本課題的研究是符合當(dāng)下教育信息化的發(fā)展趨勢的。本課題的研究目的和意義在于通過開發(fā)一款課程簽到APP來推動移動互聯(lián)網(wǎng)技術(shù)在在教育領(lǐng)域的應(yīng)用發(fā)展,探索課程簽到系統(tǒng)的性能和穩(wěn)定性,提升教學(xué)管理效率和學(xué)生學(xué)習(xí)體驗(yàn)。為教育信息化的進(jìn)程注入新的活力,推動教育事業(yè)的持續(xù)健康發(fā)展。1.2國內(nèi)外研究現(xiàn)狀1.2.1國內(nèi)研究現(xiàn)狀在國家對教育事業(yè)的大力推動下,課程簽到APP作為移動技術(shù)在教育領(lǐng)域中的重要體現(xiàn),近年來在國內(nèi)外都受到了廣泛的關(guān)注與研究。課程簽到APP不僅提高了課堂考勤的效率,還能通過對考勤數(shù)據(jù)的分析來為教學(xué)管理提供極大的便利。當(dāng)今國內(nèi),課程簽到APP已經(jīng)進(jìn)入持續(xù)優(yōu)化與創(chuàng)新的階段,越來越多的教育機(jī)構(gòu)與團(tuán)隊(duì)開始關(guān)注用戶體驗(yàn)、數(shù)據(jù)安全和功能拓展方面的問題,通過不斷地迭代和升級來提升系統(tǒng)的穩(wěn)定性和實(shí)用性。甚至有一些團(tuán)隊(duì)開始探索將課堂簽到APP與其他教育信息化工具進(jìn)行集成,以提供更加全面、高效的教學(xué)管理解決方案?,F(xiàn)如今大部分高校都有屬于自己的智慧校園軟件,但都是使用超星學(xué)習(xí)通和智慧樹等課程軟件來進(jìn)行課堂學(xué)習(xí)和教學(xué)考試,通過兩者的結(jié)合來達(dá)到更好的教學(xué)效果。超新學(xué)習(xí)通移動課堂互動系統(tǒng)如圖1-1所示:圖1-1超星學(xué)習(xí)通移動課堂互動系統(tǒng)雖然國內(nèi)課堂簽到APP在不斷完善中,但是仍然存在一些問題,例如數(shù)據(jù)安全問題和用戶體驗(yàn)問題。前者涉及大量的學(xué)生信息,該如何確保數(shù)據(jù)的安全性和隱私性?后者涉及到操作界面不太友好,用起來不方便,亦或者說因?yàn)榫W(wǎng)絡(luò)延遲造成簽到失敗的問題,都需要進(jìn)一步優(yōu)化和完善。1.2.2國外研究現(xiàn)狀在國外,關(guān)于課程簽到APP的研究同樣取得了顯著的進(jìn)展。國外研究者們相對于國內(nèi)更加注重課堂考勤APP在學(xué)生學(xué)習(xí)過程中的作用和影響。他們通過實(shí)證研究探討了課堂考勤APP對學(xué)生學(xué)習(xí)態(tài)度、出勤率以及學(xué)習(xí)成績等方面的影響。在學(xué)習(xí)過程中,學(xué)習(xí)者扮演著核心的角色,他們的態(tài)度對于移動學(xué)習(xí)的應(yīng)用和普及起到了決定性的作用。研究人員伊爾宛及其團(tuán)隊(duì)REF_Ref31559\r\h[1]通過發(fā)放調(diào)查問卷的形式,對某理工學(xué)院機(jī)械專業(yè)領(lǐng)域的30名學(xué)生進(jìn)行了調(diào)查。通過分析所得數(shù)據(jù),包括平均數(shù)、標(biāo)準(zhǔn)偏差和百分比等指標(biāo),研究結(jié)果顯示學(xué)生們對移動學(xué)習(xí)持有相當(dāng)積極的態(tài)度。同時也有人對教師對移動學(xué)習(xí)的認(rèn)可度研究。胡賽因REF_Ref31559\r\h[2]隨機(jī)對144名教師進(jìn)行了調(diào)查,目的是為了探究未來英語老師如何運(yùn)用移動技術(shù)進(jìn)行自我學(xué)習(xí)和課堂教學(xué)。調(diào)查結(jié)果顯示,盡管面臨一些挑戰(zhàn),但幾乎所有調(diào)查對象都表達(dá)了在未來英語課程中使用移動設(shè)備教學(xué)的愿望。無論是用于個人學(xué)習(xí)還是課堂教學(xué),教師們普遍對移動學(xué)習(xí)持有正面態(tài)度。此外,國外研究者還關(guān)注課堂考勤APP與其他教育技術(shù)的整合,以實(shí)現(xiàn)教育教學(xué)的創(chuàng)新與發(fā)展。但同樣的也存在著一些問題和挑戰(zhàn),例如,如何確保考勤數(shù)據(jù)的準(zhǔn)確性和可靠性、如何保護(hù)學(xué)生的隱私和數(shù)據(jù)安全、如何提升教師和學(xué)生對課堂考勤APP的接受度和使用意愿等。面對這些問題,國外研究者們正積極探索有效的解決方案和策略。1.3本課題研究內(nèi)容本文主要介紹基于Java的課程簽到APP的設(shè)計(jì)與實(shí)現(xiàn),研究內(nèi)容主要分為以下五個部分:第一部分是本文的緒論部分,主要介紹課程簽到APP的研究背景和研究意義,以及國內(nèi)外現(xiàn)階段的研究成果。分析其在功能和用戶體驗(yàn)等方面存在的不足,然后明確本課題的研究目標(biāo)和方向。第二部分是對AndroidStudio開發(fā)環(huán)境和語言的簡單介紹,隨后對課程簽到APP進(jìn)行需求分析,其中包括功能需求和性能要求等,并根據(jù)這些需求設(shè)定出明確的目標(biāo)和要求。根據(jù)課程簽到APP的用戶登錄信息、學(xué)生簽到、教師管理簽到、考勤數(shù)據(jù)統(tǒng)計(jì)和課表查詢等功能來設(shè)計(jì)系統(tǒng)的架構(gòu)和模塊劃分等功能。第三部分是利用前面對需求分析使用相關(guān)技術(shù)和系統(tǒng)框架來進(jìn)行設(shè)計(jì)該系統(tǒng)。該系統(tǒng)分為前端和后端兩部分,前端主要負(fù)責(zé)用戶界面的展示和交互,后端則采用目前主流的Java開發(fā)語言保證項(xiàng)目開發(fā)的邊界性和高效性REF_Ref31559\r\h[3],并通過Sqlite數(shù)據(jù)庫來進(jìn)行邏輯處理和數(shù)據(jù)存儲。第四部分是關(guān)于對課程簽到APP的具體實(shí)現(xiàn)。其中包括后端用戶登錄、課表管理、簽到管理等功能的實(shí)現(xiàn)和前端數(shù)據(jù)展示和交互流程等。第五部分是對所設(shè)計(jì)的課程簽到APP進(jìn)行全面的測試,其中包含基本功能和數(shù)據(jù)庫的功能測試和壓力測試。系統(tǒng)相關(guān)技術(shù)與分析2.1Java編程語言概述Java編程語言是一種面向?qū)ο笮?、簡潔性、分布式處理能力、平臺無關(guān)性以及多線程與動態(tài)性等核心的編程語言,其設(shè)計(jì)理念在于摒棄了一些C++中復(fù)雜且難以掌握的概念,比如指針和繼承操作,并兼具強(qiáng)大的功能和易用性。Java語言有三大核心原則:封裝、繼承和多臺性。憑借著三大核心原則實(shí)現(xiàn)了對象的構(gòu)建和交互,保證了數(shù)據(jù)的完整性和代碼的重要性。這些特性讓Java不局限于桌面應(yīng)用和Web應(yīng)用,還包括分布式系統(tǒng)和嵌入式系統(tǒng)等多個領(lǐng)域。還有,Java語言的平臺無關(guān)性能讓其在不同的操作系統(tǒng)上無縫運(yùn)行,極大便利了全球的編程者。這是因?yàn)閖ava虛擬機(jī)(JVM)的引入,使得Java程序能在任何安裝了JVM的平臺上運(yùn)行。當(dāng)編輯并運(yùn)行一個Java程序時,需要同時涉及到四個方面:Java編程語言、Java類文件格式、Java虛擬機(jī)、Java應(yīng)用程序接口。首先使用文字編輯軟件(例如記事本、寫字板、UltraEdit等)或集成開發(fā)環(huán)境(Eclipse、MyEclipse等)在源文件中定義不同的類,然后通過調(diào)用類(這些類實(shí)現(xiàn)了JavaAPI)中的方法來訪問資源系統(tǒng),再把源文件編譯生成一種二進(jìn)制中間碼,存儲在class文件中,然后再通過運(yùn)行與操作系統(tǒng)平臺環(huán)境相對應(yīng)的虛擬機(jī)來運(yùn)行class文件,執(zhí)行編譯產(chǎn)生的字節(jié)碼,調(diào)用class文件中實(shí)現(xiàn)的方法來滿足程序的JavaAPI調(diào)用。Java的工作原理如圖2-1所示:圖2-1Java的工作原理回顧Java的發(fā)展歷程,自1991年SunMicrosystems公司的JamesGosling開始設(shè)計(jì)Java語言以來,Java憑借其強(qiáng)大的功能和易用性逐漸發(fā)展成為全球最流行的編程語言之一。2.2AndroidStudio開發(fā)環(huán)境介紹Android是一款以Linux為基礎(chǔ)的開源操作系統(tǒng),并以自由性和開放性聞名。Android的架構(gòu)層次分明,從上層到下層依次為應(yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行層和Linux內(nèi)核層,這樣的架構(gòu)讓其內(nèi)部機(jī)制非常清晰和易于理解。Google自主研發(fā)并開源的這款A(yù)ndroid系統(tǒng)已經(jīng)運(yùn)用到各個領(lǐng)域中。還有就是它的開發(fā)環(huán)境靈活多變,不再局限于單個開發(fā)環(huán)境,且不受到各種限制。進(jìn)而全球的開發(fā)者們可以根據(jù)自身的喜好或者需求來進(jìn)行自由地修改開放的源代碼,從而開發(fā)各種實(shí)用且具創(chuàng)新性的手機(jī)應(yīng)用程序。同時Android兼具出色的圖形顯示能力和用戶友好的界面設(shè)計(jì),這讓用戶的體驗(yàn)更加舒適和流暢。Android開發(fā)一般使用這兩種集成開發(fā)環(huán)境,分別是基于IntelliJIDEA的AndroidStudio+SDK+JDK+Genymotion和Eclipse+ADT+JDK+SDK。前者是當(dāng)前Android開發(fā)使用較多的開發(fā)環(huán)境,也是當(dāng)前的主流。該開發(fā)環(huán)境近年來經(jīng)歷了一場革命性的變革。其中,基于IntelliJIDEA的AndroidStudio自2013年谷歌I/O大會發(fā)布以來,用其強(qiáng)大的功能和易用性贏得了開發(fā)者的廣泛認(rèn)可。如今,AndroidStudio已經(jīng)更新至3.6.1版本(截至2020年3月),并且支持NDK開發(fā),為開發(fā)者提供了更全面的解決方案。隨著其功能的不斷完善和優(yōu)化,它已逐漸取代了曾經(jīng)備受歡迎的EclipseADT,成為新一代Android開發(fā)工具的首選。.后者Eclipse是一種Java開發(fā)工具,基于Eclipse可以搭建用于Android開發(fā)的環(huán)境。Eclipse+JavaSDK(JDK)組成了基礎(chǔ)的Java集成開發(fā)環(huán)境,ADT作為插件為Eclipse提供Android開發(fā)的支持,再整合AndroidSDK后組成Android開發(fā)環(huán)境。對于多數(shù)Java開發(fā)者來說,Eclipse是開發(fā)的不二之選。但是隨著Android開發(fā)領(lǐng)域的演進(jìn),Eclipse已經(jīng)慢慢地退出這個舞臺。早在多年前Google就對外宣布將停止對Eclipse的ADT開發(fā)工具的所有支持,這個消息預(yù)示著Eclipse的落幕和Studio的崛起。Google終止對EclipseAndroid工具的開發(fā)和支持,這意味著ADT插件的終結(jié),和預(yù)示包括Ant構(gòu)建系統(tǒng)、DDMS、Traceview等一系列性能監(jiān)控工具的消失的結(jié)局。眾多開發(fā)者為了能夠與時俱進(jìn)和確保高效的Android應(yīng)用開發(fā),紛紛選擇遷移到AndroidStudio這一更加現(xiàn)代化且功能強(qiáng)大的開發(fā)環(huán)境中。Eclipse開發(fā)環(huán)境架構(gòu)圖如圖2-2所示:圖2-2Eclipse開發(fā)環(huán)境架構(gòu)圖AndroidStudio作為新一代的Android開發(fā)工具,相比較于Eclipse擁有許多顯著的特點(diǎn)。前者集成了代碼編輯、構(gòu)建、調(diào)試與性能分析等優(yōu)點(diǎn),讓開發(fā)者能夠在一個統(tǒng)一的、舒適的環(huán)境中高效完成開發(fā)工作。它的智能代碼提示與自動補(bǔ)全功能一定程度上提高了開發(fā)員的編碼效率,還降低了代碼編寫錯誤的可能性。其內(nèi)置的Gradle構(gòu)建系統(tǒng)為項(xiàng)目管理和依賴關(guān)系提供了極大的便利和靈活性。ApplyChange功能可以將代碼和資源更改推送給正在運(yùn)行的應(yīng)用,而無需重啟應(yīng)用,這意味著開發(fā)人員可以運(yùn)用UI設(shè)計(jì)工具進(jìn)行實(shí)時預(yù)覽,能夠更加直觀地進(jìn)行界面開發(fā)。還有,AndroidStudio原生支持版本控制系統(tǒng),并且擁有豐富的插件資源,進(jìn)一步增強(qiáng)了Android開發(fā)的拓展性和實(shí)用性。2.3SQLite數(shù)據(jù)庫簡介SQLite數(shù)據(jù)庫是一款輕量級的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是為嵌入式應(yīng)用而設(shè)計(jì)的。它集成了完整的ACID事務(wù)性,保證了數(shù)據(jù)的一致性、安全性和持久性。它具有出色的跨平臺性,能夠在多種操作系統(tǒng)上運(yùn)行,其中有Windows、Linux、Unix、OSX以及操作系統(tǒng)如Android和IOS等,這也是為什么它能與Java一樣被廣泛運(yùn)用。雖然SQLite不支持復(fù)雜的SQL語法,但它提供的SQL命令完全足夠用戶的基本數(shù)據(jù)管理需求。SQLite以其開源、自包容、零配置、無服務(wù)器的特性而著稱。它是一個零配置的數(shù)據(jù)庫,這意味著與其他數(shù)據(jù)庫不一樣,不需要在系統(tǒng)中配置。無需復(fù)雜的安裝過程,只需要將它的二進(jìn)制文件放置在適合的位置,即可輕松創(chuàng)建、連接和使用數(shù)據(jù)庫。其數(shù)據(jù)庫文件結(jié)構(gòu)緊湊、高效且可靠,能夠支持高達(dá)2TB的數(shù)據(jù)庫大小。每個數(shù)據(jù)庫文件都以B-Tree的數(shù)據(jù)結(jié)構(gòu)形式存儲在磁盤上,確保了數(shù)據(jù)的快速訪問和高效管理,SQLite引擎不是一個獨(dú)立的進(jìn)程,可以按應(yīng)用程序需求進(jìn)行靜態(tài)或動態(tài)連接。SQLite直接訪問其存儲文件。同時,SQLite是一個增長最快的數(shù)據(jù)庫引擎,這個增長是指在普及方面的增長,與它的尺寸大小無關(guān),這已經(jīng)證明了它的便捷性和易用性。SQLite源代碼不受版權(quán)限制。SQLite在事務(wù)處理中采用了數(shù)據(jù)庫級的獨(dú)占性和共享鎖機(jī)制,簡單來說就是在同一段時間內(nèi)只有一個進(jìn)程可以被寫入數(shù)據(jù),但是多個進(jìn)程可以同時讀取數(shù)據(jù)。就是這樣的設(shè)計(jì)使得它能夠在并發(fā)訪問場景下仍然能夠保持?jǐn)?shù)據(jù)的完整性和一致性。它特別適合嵌入式系統(tǒng)和需要輕量級數(shù)據(jù)庫解決方案的場景,為開發(fā)者提供了便捷和高效的數(shù)據(jù)管理方式。2.4需求分析本次課題中,需求分析是要明確移動應(yīng)用系統(tǒng)的核心功能、用戶角色、操作流程和數(shù)據(jù)交互等方面的需求,為后續(xù)的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)提供明確的指導(dǎo)。在課程簽到APP中,明確了系統(tǒng)的主要功能包括用戶登錄注冊、簽到管理、賬戶管理以及課表的管理等。系統(tǒng)功能模塊如圖2-3所示。圖2-3課程簽到APP系統(tǒng)功能模塊圖在登錄注冊功能中,系統(tǒng)需要確保用戶能夠安全地訪問系統(tǒng)并管理個人賬戶。而簽到管理功能則要求系統(tǒng)能記錄用戶的簽到信息,以便后續(xù)的數(shù)據(jù)統(tǒng)計(jì)和分析。賬戶管理功能也是并不可少的,它允許用戶編輯,查看個人信息和修改賬號密碼。而課表管理能為用戶提供較為便捷的課程查看和編輯方式,提高了用戶的體驗(yàn)。在系統(tǒng)的用戶角色和權(quán)限的問題中。普通用戶是系統(tǒng)的主要使用群體,也就是學(xué)生,他們能夠進(jìn)行登錄、管理個人賬戶、簽到和查看課表。然后比普通用戶擁有更高權(quán)限的就是老師了,用戶需要進(jìn)行教師驗(yàn)證來提升權(quán)限,老師不但擁有普通用戶的權(quán)限,還能夠進(jìn)行課表設(shè)置和管理簽到。而管理員則扮演著更加重要的角色,不僅可以執(zhí)行老師的權(quán)限,還擁有用戶管理和教師驗(yàn)證管理等高級權(quán)限,以便對整個系統(tǒng)進(jìn)行監(jiān)控和維護(hù)。權(quán)限分配如圖2-4所示:圖2-4權(quán)限分配圖然后就是系統(tǒng)的操作流程。用戶注冊登錄時,系統(tǒng)需要驗(yàn)證身份信息的正確性;用戶進(jìn)行賬戶管理時,系統(tǒng)需要存儲并修改用戶數(shù)據(jù)。用戶查看課表時,需要輸入相關(guān)課程的關(guān)鍵字即可顯示相應(yīng)的課程安排;而管理員和老師分別在進(jìn)行用戶管理、課表設(shè)置等操作時,系統(tǒng)需要確保數(shù)據(jù)的準(zhǔn)確性和一致性。用戶簽到時,需要選擇對應(yīng)的課程進(jìn)行簽到,系統(tǒng)需要負(fù)責(zé)記錄和更新簽到信息;操作流程如圖2-5所示:圖2-5用戶操作流程圖最后就是有關(guān)系統(tǒng)的性能和可用性。開發(fā)出的系統(tǒng)應(yīng)該能保證快速相應(yīng)和穩(wěn)定運(yùn)行,以滿足大量用戶同時使用的需求。同時系統(tǒng)還要較高的可用性,提供直觀的用戶界面和友好的交互流程。2.5本章小結(jié)本章對移動應(yīng)用系統(tǒng)的相關(guān)技術(shù)、SQLite數(shù)據(jù)庫與需求分析進(jìn)行了詳細(xì)的介紹和分析,為后續(xù)的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)奠定堅(jiān)實(shí)基礎(chǔ)。在后續(xù)的章節(jié)里我將依托本章所述的技術(shù)基礎(chǔ)與需求分析展開系統(tǒng)的精細(xì)化設(shè)計(jì)與開發(fā)工作。通過將這些技術(shù)和需求緊密結(jié)合,最終構(gòu)建一個功能完備、性能穩(wěn)定且用戶體驗(yàn)良好的移動應(yīng)用系統(tǒng)。系統(tǒng)方案設(shè)計(jì)3.1系統(tǒng)總體架構(gòu)設(shè)計(jì)本系統(tǒng)采用單機(jī)應(yīng)用的架構(gòu)模式,設(shè)計(jì)理念為給用戶提供便捷、高效的簽到服務(wù)。系統(tǒng)架構(gòu)基于客戶端-本地?cái)?shù)據(jù)庫的模式,所有的數(shù)據(jù)都保存在移動設(shè)備的本地SQLite數(shù)據(jù)庫中,保證了數(shù)據(jù)的獨(dú)立性和安全性。系統(tǒng)在架構(gòu)層面可以劃分為前端展示層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層這三個主要部分,以實(shí)現(xiàn)代碼的模塊化和層次化。前端展示層負(fù)責(zé)呈現(xiàn)出用戶界面、數(shù)據(jù)交互和展示;業(yè)務(wù)邏輯層則負(fù)責(zé)處理用戶的請求,執(zhí)行相關(guān)的業(yè)務(wù)操作;數(shù)據(jù)存儲層負(fù)責(zé)數(shù)據(jù)的存儲和訪問,保證數(shù)據(jù)的完整性和唯一性。架構(gòu)層如圖3-1所示:圖3-1架構(gòu)層前端展示層把數(shù)據(jù)傳輸給業(yè)務(wù)邏輯層進(jìn)行處理,業(yè)務(wù)邏輯層再把處理后的數(shù)據(jù)存儲到數(shù)據(jù)存儲層,然后前端展示層再從數(shù)據(jù)存儲層中讀取數(shù)據(jù)展示。3.2數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫作為系統(tǒng)設(shè)計(jì)的關(guān)鍵環(huán)節(jié),用來進(jìn)行數(shù)據(jù)的存儲和訪問,這也是業(yè)務(wù)邏輯的基礎(chǔ)。在本方案中選擇SQLite作為數(shù)據(jù)庫管理系統(tǒng),需要設(shè)計(jì)合理的數(shù)據(jù)表結(jié)構(gòu)來存儲用戶信息、課程信息和簽到信息。數(shù)據(jù)庫設(shè)計(jì)就像是高樓大廈的基石,如果設(shè)計(jì)不合理,對后面的系統(tǒng)開發(fā)會有著極大的隱患,比如后期的系統(tǒng)維護(hù)、功能變更或者功能擴(kuò)充時會引起很多的問題,甚至需要重新設(shè)計(jì),重頭再來。3.2.1概念結(jié)構(gòu)設(shè)計(jì)根據(jù)前面的需求分析可以得出實(shí)體屬性圖。用戶實(shí)體屬性圖如圖3-2所示:圖3-2用戶實(shí)體屬性圖賬戶實(shí)體屬性圖如圖3-3所示:圖3-3賬戶管理屬性圖課程實(shí)體屬性圖如圖3-4所示:圖3-4課程實(shí)體屬性圖簽到實(shí)體屬性圖如圖3-5所示:圖3-5簽到實(shí)體屬性圖ER模型是數(shù)據(jù)庫設(shè)計(jì)中的一種圖形化表示方法,我們能夠通過它來理解和組織數(shù)據(jù)。該模型主要由實(shí)體、屬性、關(guān)系、鍵、域和約束這些部分組成。實(shí)體:類似于生活中的各類東西,比如人、事件和物品。在數(shù)據(jù)庫中每個實(shí)體都對應(yīng)一個表格。屬性:是實(shí)體的特征,就好比人的姓名、物品的顏色。其中又可以劃分為直接屬性和派生屬性,前者是直接描述實(shí)體的基本屬性,后者是通過計(jì)算得出的。關(guān)系:就是字面意思,用來描述不同實(shí)體間的聯(lián)系。鍵:類似人的身份證,唯一識別一個實(shí)體。在數(shù)據(jù)庫中,這個鍵用來保證每條數(shù)據(jù)都是唯一的。域:屬性的取值范圍。約束:設(shè)置規(guī)則來限制,保證數(shù)據(jù)的唯一性和一致性。ER模型能通過這些簡單的概念,幫我們清晰地表達(dá)數(shù)據(jù)地邏輯結(jié)構(gòu),讓數(shù)據(jù)庫的應(yīng)用和開發(fā)變得更加容易。3.2.1數(shù)據(jù)表設(shè)計(jì)本系統(tǒng)選擇SQLite數(shù)據(jù)庫作為存儲數(shù)據(jù)的方法,建立數(shù)據(jù)庫databases,并且建立數(shù)據(jù)表。表3-1用戶表user的結(jié)構(gòu)屬性數(shù)據(jù)類型說明IdInt主鍵自增IdacuString賬號pwdString密碼表3-2個人資料表Configation的結(jié)構(gòu)屬性數(shù)據(jù)類型說明studentIdInt主鍵自增IduserAcuString唯一標(biāo)識符-賬號usernameString用戶名nameString姓名class1String班級connectionString聯(lián)系方式表3-3課程表courses的結(jié)構(gòu)屬性數(shù)據(jù)類型說明IdInt主鍵自增IdtimeString課程時間teacher_nameString教師名cou'rse_nameString課程名dateString日期表3-4教師驗(yàn)證表account的結(jié)構(gòu)屬性數(shù)據(jù)類型說明IdInt主鍵自增IduserAcuString唯一標(biāo)識符-賬號account_typeString是否教師表3-5時間表time的結(jié)構(gòu)屬性數(shù)據(jù)類型說明course_idString唯一標(biāo)識符-課程Idis_attendance_startedboolean判斷是否開始簽到attendance_codeString簽到碼表3-6考勤表attendance的結(jié)構(gòu)屬性數(shù)據(jù)類型說明IdInt主鍵自增Idcourse_idInt唯一標(biāo)識符-課程Iduser_nameString用戶姓名check_in_timeDate簽到時間is_presentBoolean考勤狀態(tài)3.3后端設(shè)計(jì)在本章中,主要介紹了系統(tǒng)的方案設(shè)計(jì),明確了系統(tǒng)的總體架構(gòu)設(shè)計(jì)、數(shù)據(jù)表結(jié)構(gòu)、前端和后端設(shè)計(jì)。后端設(shè)計(jì)采用Android應(yīng)用開發(fā)中常用的Java語言,并使用Studio提供的AppCompatActivity類來創(chuàng)建Activity。3.4前端設(shè)計(jì)前端用戶界面設(shè)計(jì)共四個界面:主頁、課表查詢、課表、我。界面如圖3-6所示:圖3-6界面首頁是標(biāo)題頁,課表查詢界面是輸入課表的關(guān)鍵字搜索課程信息,課程界面包括課程管理和簽到管理功能,最后在我界面中實(shí)現(xiàn)賬戶管理功能。3.5本章小結(jié)在本章中,主要介紹了系統(tǒng)的方案設(shè)計(jì),明確了系統(tǒng)的總體架構(gòu)設(shè)計(jì)、數(shù)據(jù)表結(jié)構(gòu)、前端和后端設(shè)計(jì)。系統(tǒng)實(shí)現(xiàn)在AndroidStudio的實(shí)際開發(fā)中我們主要會依賴于五類文件來構(gòu)建我們的應(yīng)用程序,其中分別是XML布局文件、Activity類文件、Java或者Kotlin代碼文件、資源文件和配置文件。Android項(xiàng)目結(jié)構(gòu)如圖4-1所示:圖4-1Android項(xiàng)目結(jié)構(gòu)XML布局文件:該文件通常建立在res/layout目錄下面,用于定義應(yīng)用程序的用戶界面。使用XML語法定義界面元素,例如按鈕、文本框和圖像等這些元素的布局和屬性。開發(fā)者可以按照自己的需求來設(shè)置控件的大小、位置、顏色等屬性來創(chuàng)建出各種界面,讓用戶體驗(yàn)更加流暢。Activity類文件:Activity是Android應(yīng)用程序的基本組件,主要用來處理用戶界面的邏輯業(yè)務(wù)。它們通常以Java或者Kotlin類文件的形式存在,且繼承自AppCompatActivity或其他Activity基類。開發(fā)者一般在這些類文件中編寫代碼來響應(yīng)用戶界面的操作,比如點(diǎn)擊事件的響應(yīng),通過按鈕的監(jiān)聽器來確認(rèn)該按鈕是否被點(diǎn)擊。當(dāng)然也可以重寫控制界面元素,與后端服務(wù)進(jìn)行交互。Java或者Kotlin代碼文件:這些文件與Activity類文件共同構(gòu)成了應(yīng)用程序的核心邏輯。這類文件通常包含處理數(shù)據(jù)、網(wǎng)絡(luò)處理、業(yè)務(wù)邏輯等功能的類和方法。資源文件:AndroidStudio會提供豐富的資源文件,其中包含字符串、圖片、顏色、樣式等,通常都存儲在res目錄下。如果對這些資源文件都不滿意,可以到網(wǎng)絡(luò)上導(dǎo)入自己喜歡的文件到該目錄下,然后在XML布局文件和Java或者Kotlin代碼文件中調(diào)用,從而讓界面更加美觀和具有創(chuàng)新性。配置文件:在AndroidManifest.xml文件中聲明應(yīng)用程序的基本信息和權(quán)限。基本信息指的是package中暴露的組件像activity,serveice等,他們各自的實(shí)現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。權(quán)限問題例如打開攝像頭和連接網(wǎng)絡(luò)等,如果不在改文件中寫入相應(yīng)的權(quán)限,就會無法執(zhí)行相應(yīng)的操作。build.gradle文件用于配置項(xiàng)目的構(gòu)建選項(xiàng)和依賴關(guān)系。在這些文件中,XML文件和Activity類文件有著緊密的聯(lián)系。每個XML文件有著對應(yīng)的一個Activity類文件,XML布局文件定義了界面的外觀和結(jié)構(gòu),而Activity類文件負(fù)責(zé)控制這些界面的行為。4.1后端實(shí)現(xiàn)后端是系統(tǒng)設(shè)計(jì)的核心部分,負(fù)責(zé)處理業(yè)務(wù)邏輯、數(shù)據(jù)存儲和數(shù)據(jù)交互功能。在后端開發(fā)中采用Java語言進(jìn)行開發(fā),利用AndroidStudio提供的工具進(jìn)行編碼。4.1.1用戶登錄注冊功能實(shí)現(xiàn)登錄注冊功能在每個系統(tǒng)里都是基礎(chǔ)功能,用戶要進(jìn)入系統(tǒng)都要先創(chuàng)建一個賬號。在后端代碼里用Oncreate方法找到需要的視圖控件,并將它們賦值給相應(yīng)的變量。onCreate方法如圖4-2所示:圖4-2onCreate方法用setContentView方法來加載對應(yīng)的XML布局文件,并將其渲染到活動中。在上圖中加載了login界面,就是登錄界面。然后分別對控件進(jìn)行視圖關(guān)聯(lián),例如login_register_btn就是關(guān)聯(lián)了login界面的注冊按鈕,login_acu就是關(guān)聯(lián)了login界面的賬號輸入文本框。用戶通過點(diǎn)擊登錄按鈕,前端界面就會執(zhí)行相應(yīng)的邏輯功能,例如跳轉(zhuǎn)界面。如果要執(zhí)行這一功能,首先得用監(jiān)聽器對按鈕進(jìn)行監(jiān)聽,確定該按鈕被點(diǎn)擊了才能執(zhí)行相應(yīng)的邏輯功能。這就要用到setOnClickListener方法來對按鈕進(jìn)行監(jiān)聽,setOnClickListener方法如圖4-3所示:圖4-3setOnClickListener方法以登陸按鈕為例,通過setOnClickListener方法對登陸按鈕進(jìn)行監(jiān)聽。如果監(jiān)聽到了該按鈕被點(diǎn)擊,就會從前端的賬號和密碼這兩個文本框中獲取用戶輸入的信息,之后用checkLogin方法把賬號和密碼傳入到數(shù)據(jù)庫中執(zhí)行相應(yīng)的操作來驗(yàn)證該賬號和密碼。如果賬號和密碼都正確,就會獲取該用戶的賬號并且啟動MainAcitvity界面,并將login_status設(shè)置為ture,然后把login_status的狀態(tài)和user_acu傳遞給MainActiviy。如果密碼不正確就會顯示錯誤信息提示。checkLogin和getUserAcu方法如圖4-4所示:圖4-4checkLogin和getUserAcu方法注冊界面使用的方法也類似,通過對注冊按鈕的監(jiān)聽進(jìn)行用戶的注冊操作。在用戶點(diǎn)擊注冊按鈕后會從前端的賬號和密碼輸入框中獲取數(shù)據(jù)并把這兩個數(shù)據(jù)傳入到數(shù)據(jù)庫中進(jìn)行插入操作。注冊成功即返回提示“注冊成功”,否則提示“注冊失敗”或者“賬號已存在”。注冊事件如圖4-5所示:圖4-5注冊事件4.1.2賬戶管理功能實(shí)現(xiàn)賬戶管理功能包括填寫個人信息、修改密碼、切換賬號和教師驗(yàn)證。在個人資料界面中,填寫完信息點(diǎn)擊確認(rèn)按鈕提交數(shù)據(jù)。個人資料插入部分代碼如圖4-6所示:圖4-6個人資料插入部分代碼后端會檢查所有文本框是否都被填寫,不然會返回提示“請?zhí)顚懰行畔ⅰ薄V挥刑顚懲晁行畔⒅蟛艜褦?shù)據(jù)上傳到數(shù)據(jù)庫中進(jìn)行相應(yīng)的操作。同時用getIntent方法從MeFragment類中,也就是“我”界面中獲取該用戶的賬號來關(guān)聯(lián)這些數(shù)據(jù)。每個賬號都有對應(yīng)的個人資料。而“我”界面中的user_acu來自于MainActivity類獲取從登陸界面中傳遞過來的數(shù)據(jù)。數(shù)據(jù)傳遞代碼如圖4-7所示:圖4-7數(shù)據(jù)傳遞代碼用intent方法來接收bundle方法傳遞的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)對user_acu的數(shù)據(jù)傳遞。數(shù)據(jù)傳遞流程如圖4-8所示。圖4-8數(shù)據(jù)傳遞流程圖通過intent方法和bundle方法來把userAcu傳遞到各個界面。因?yàn)槲疫x定用戶的賬號user'Acu為唯一標(biāo)識符,通過這個參數(shù)來把這個賬號里的其他信息關(guān)聯(lián)起來,這樣數(shù)據(jù)就不會顯得很亂。在修改密碼界面中,用戶點(diǎn)擊修改按鈕就會把數(shù)據(jù)上傳到數(shù)據(jù)庫中進(jìn)行相應(yīng)的邏輯操作。關(guān)鍵代碼如圖4-9所示:圖4-9關(guān)鍵代碼后端首先會對所有文本框中的數(shù)據(jù)進(jìn)行讀取,判斷是否所有信息都被填寫,沒有則提示“請?zhí)顚懲暾畔ⅰ?,有則進(jìn)行isCaptchaValid方法的判定。讀取系統(tǒng)生成的驗(yàn)證碼是否跟用戶輸入的驗(yàn)證碼相同,相同即可對賬號、舊密碼和新密碼這個三個參數(shù)進(jìn)行讀取,然后用checkCredentials方法判定。checkCredentials方法就是把賬號和舊密碼進(jìn)行數(shù)據(jù)庫檢索,正確即進(jìn)行密碼修改的操作,沒有就返回錯誤。驗(yàn)證碼部分代碼如圖4-10所示:圖4-10驗(yàn)證碼部分代碼用戶通過點(diǎn)擊切換賬號來觸發(fā)點(diǎn)擊事件,即顯示切換賬號的對話框。顯示賬號的代碼如下圖4-11所示:圖4-11顯示賬號的代碼用showSwitchAccountDialog方法來從數(shù)據(jù)庫中讀取賬號列表,并把這些列表存儲在數(shù)組中,顯示在對話框中。然后讀取用戶點(diǎn)擊的那個賬號,再調(diào)用switchAccount方法來進(jìn)行賬號的切換。下圖4-12是switchAccount方法的部分代碼:圖4-12switchAccount方法在方法中調(diào)用userDataHelper的getUserAcu方法來校驗(yàn)該賬號是否存在,存在則用saveUserAcu方法更新賬號信息。最后就是教師驗(yàn)證功能,用戶通過點(diǎn)擊教師驗(yàn)證,然后出發(fā)點(diǎn)擊事件,會彈出一個提示框讓輸入教師驗(yàn)證碼。教師驗(yàn)證代碼如圖4-13所示:圖4-13教師驗(yàn)證代碼在上圖中我用setInputType方法來設(shè)置輸入類型只能為整數(shù)。我在后端代碼中寫死了教師驗(yàn)證的驗(yàn)證碼為“123”,這個方法并不怎么好,安全系數(shù)不高,以后有機(jī)會我會進(jìn)行改進(jìn)。驗(yàn)證通過后會把userAcu和account_type這兩個參數(shù)上傳到數(shù)據(jù)庫進(jìn)行相應(yīng)的操作。4.1.3課表管理功能實(shí)現(xiàn)課表管理功能包括添加、修改、刪除課表和查詢功能。這些功能就是基礎(chǔ)的數(shù)據(jù)庫增刪查改。但是這里涉及到權(quán)限的問題,就是在進(jìn)行這些數(shù)據(jù)庫操作之前會先校驗(yàn)該用戶是否是教師。驗(yàn)證是否教師代碼如圖4-14所示:圖4-14驗(yàn)證是否教師的代碼圖通過獲取當(dāng)前賬號的userAcu傳輸?shù)綌?shù)據(jù)庫查詢該用戶是否教師。4.1.4簽到管理功能實(shí)現(xiàn)簽到管理功能包括教師開始簽到、結(jié)束簽到、用戶填寫簽到碼簽到,顯示簽到信息和更改簽到信息。這部分的關(guān)鍵在于教師開始簽到時會生成簽到碼,學(xué)生需要輸入簽到碼才能進(jìn)行簽到。生成簽到碼代碼如圖4-15所示:圖4-15生成簽到碼代碼這部分的功能與前面修改密碼界面的驗(yàn)證碼部分功能相似,但是又有部分不同。因?yàn)樵摵灥酱a生成和填寫不是在同一個界面,所以需要進(jìn)行簽到碼的傳遞,這里選擇把該課程id,開始簽到的狀態(tài)和該簽到碼上傳到數(shù)據(jù)庫中進(jìn)行操作。這樣學(xué)生在簽到界面填寫簽到碼時首先會先校驗(yàn)開始簽到的狀態(tài),然后再進(jìn)行對學(xué)生輸入的簽到碼進(jìn)行驗(yàn)證。4.1.5管理員功能實(shí)現(xiàn)管理員可以進(jìn)行用戶賬號管理、修改教師驗(yàn)證、課程管理和簽到管理。這里提下用戶賬號管理和補(bǔ)簽功能,其他功能實(shí)現(xiàn)邏輯都與前面提到的功能相類似。用戶賬號管理的部分代碼如圖4-16所示:圖4-16用戶賬號管理的部分代碼用相應(yīng)的DataHelper類時數(shù)據(jù)訪問幫助類,就是執(zhí)行相應(yīng)的數(shù)據(jù)庫操作。用getAllData方法獲取所有用戶數(shù)據(jù),然后存儲到userList列表中。再創(chuàng)建ArrayList來存儲用戶信息的字符串表示,并通過循環(huán)將每個用戶的信息添加到ArrayList中。同時遍歷這個列表每個用戶是否是教師,是則列表項(xiàng)會多一個“教師”標(biāo)簽。補(bǔ)簽功能部分代碼如圖4-17所示:圖4-17補(bǔ)簽功能部分代碼通過獲取點(diǎn)擊列表位置所在的數(shù)據(jù),在用split方法分割字符串,以提取用戶名,而不需要從數(shù)據(jù)庫中重新獲取用戶名。如果點(diǎn)擊列表位置所在的字符串包含“已簽到”,則會返回提示已簽到。如果包含“未簽到”即可用showDialogForAttendance方法對該用戶進(jìn)行補(bǔ)簽操作。4.2前端實(shí)現(xiàn)4.2.1登錄注冊界面實(shí)現(xiàn)用戶打開軟件首先是登錄界面,如果有賬號則輸入賬號登錄,沒有則先跳轉(zhuǎn)注冊界面注冊賬號之后再進(jìn)行登錄。登錄和注冊視圖如圖4-18、4-19所示:圖4-18登陸視圖圖4-19注冊視圖要實(shí)現(xiàn)上圖中的視圖布置要先在對應(yīng)的xml文件中對相應(yīng)的控件進(jìn)行定義和設(shè)置。如登錄界面中用EditText來分別定義賬號和密碼這兩個文本框,用來輸入賬號和密碼。然后通過點(diǎn)擊登錄或者按鈕來進(jìn)行相應(yīng)的邏輯操作跳轉(zhuǎn)界面,注冊界面也類似。當(dāng)然這僅僅是不夠的,為了能夠在后端中準(zhǔn)確標(biāo)識和引用相應(yīng)的控件就需要設(shè)置屬性id,id是用于唯一標(biāo)識和引用XML文件中的某個元素或者屬性。其中關(guān)鍵的代碼如圖4-20所示:圖4-20關(guān)鍵代碼這里為稍微為其中經(jīng)常用到的屬性講解一下。layout_width

layout_height:定義視圖控件的寬度和高度。wrap_content是指控件會根據(jù)內(nèi)容自動調(diào)整大小,match_parent是指控件會填滿其父容器的整個寬度和高度。id:是指給控件設(shè)置一個唯一標(biāo)識符,類似于數(shù)據(jù)表中的列名,以至于能夠在后端代碼中引用相應(yīng)的控件。hint:給文本框設(shè)置提示文本,就如“登錄-賬號”,讓用戶知道這里該輸入什么數(shù)據(jù)。inputType:指的是文本框能接受哪種類型的數(shù)據(jù)輸入。text:指的是控件的顯示的文本。就好比登錄按鈕顯示的文本是“登錄”,這樣可以讓用戶知道該控件是有什么用處。ems:指定編輯框EditText的期望寬度,以“em”單位表示。一個“em”通常等于字體的高度。layout_marginTop:設(shè)置視圖控件的上邊距。4.2.2賬戶管理界面實(shí)現(xiàn)用戶成功登錄后進(jìn)入到軟件的主界面,在底部的導(dǎo)航欄中切換到“我”界面,該界面為賬戶管理界面。其中有個人信息的填寫,修改密碼、切換賬號、教師驗(yàn)證和退出登錄功能。賬戶管理界面如圖4-21所示:圖4-21賬戶管理界面從圖片中可以看到,最底下有個底部導(dǎo)航欄。其中有四個界面:首頁、課表查詢、課表、我。每一個選項(xiàng)都由外部容器RelativeLayout以及兩個ImageView和一個TextView元素組成。RelativeLayout相當(dāng)于一個小界面,包裹著里面的元素形成一個獨(dú)立的結(jié)構(gòu)。第一個ImageView顯示的是最左邊的圖標(biāo),然后是TextView文本框顯示文字,第二個ImageView顯示的是最右邊的向右箭頭圖標(biāo)。通過對RelativeLayout設(shè)置clickable="true"屬性,意思為對該容器設(shè)置可點(diǎn)擊的屬性,作用相當(dāng)于按鈕,即點(diǎn)擊后會觸發(fā)相應(yīng)的邏輯功能。用戶需要填寫完個人信息后才能進(jìn)行后面的操作,因?yàn)楹竺娴牟僮鞫际桥c用戶的姓名有關(guān)。就例如歡迎語,用戶在第一次登錄賬號時是不會有歡迎語的,在資料里填寫完個人資料后再返回賬戶管理界面就會出現(xiàn)“你好,+姓名”的歡迎語。用戶通過點(diǎn)擊資料,就會跳轉(zhuǎn)到填寫個人資料的界面。個人資料界面如圖4-22所示:圖4-22個人資料界面在個人資料界面中,用戶需要在相應(yīng)的文本框中填寫用戶名、姓名和學(xué)號等信息。填寫后點(diǎn)擊右上角的“確定”按鈕就可以把數(shù)據(jù)提交到后端中進(jìn)行處理,點(diǎn)擊左邊的紅框部分即可返回到“我”界面。當(dāng)用戶想要修改密碼時就可以點(diǎn)擊修改密碼進(jìn)而跳轉(zhuǎn)到相應(yīng)的界面進(jìn)行操作。如圖4-23示:圖4-23修改密碼界面從圖片可以看到,用戶如果想要修改密碼就需要輸入當(dāng)前登錄的賬號和密碼,然后輸入想要修改的新密碼,之后輸入隨機(jī)生成的驗(yàn)證碼然后點(diǎn)擊修改密碼。如果輸入的驗(yàn)證碼與系統(tǒng)給的驗(yàn)證碼不一樣就會顯示驗(yàn)證碼錯誤?;蛘哒f賬號和舊密碼其中有一個數(shù)據(jù)和數(shù)據(jù)庫中的信息對不上都會返回錯誤。只有當(dāng)所有的數(shù)據(jù)都正確后就會把數(shù)據(jù)提交到后端處理并返回修改成功,最后會退出到登錄界面重新進(jìn)行登錄操作。用戶點(diǎn)擊切換賬號后會顯示一個提示框,然后提示框里面會給出標(biāo)題“選擇賬號”并列出已經(jīng)登錄過的賬號的賬號名。用戶只需要點(diǎn)擊相應(yīng)的賬號名即可進(jìn)行賬號切換,如圖4-24所示:圖4-24賬號切換圖管理賬號最后一個功能就是教師驗(yàn)證,這個功能是比較重要的。點(diǎn)擊教師驗(yàn)證后彈出提示框,標(biāo)題是“教師驗(yàn)證”,輸入教師驗(yàn)證碼正確即可以實(shí)施教師的權(quán)限,錯誤即顯示驗(yàn)證錯誤。教師驗(yàn)證如圖4-25所示:圖4-25教師驗(yàn)證圖在輸入信息點(diǎn)擊確定后會把該數(shù)據(jù)與后端的數(shù)據(jù)進(jìn)行比對,正確即通過,錯誤即顯示失敗。后面的大部分功能都需要教師才能實(shí)現(xiàn),例如課程管理和簽到管理。普通用戶都是沒有權(quán)限去操作的。4.2.3課表管理及課表信息展示實(shí)現(xiàn)用戶在填寫完個人信息并且進(jìn)行教師驗(yàn)證后即可在底部導(dǎo)航欄中切換到課表界面。如圖4-26所示:圖4-26課表管理界面教師通過點(diǎn)擊想要添加課表的日期,然后點(diǎn)擊右上角的加號按鈕進(jìn)行對課程的添加,課程信息在添加之后就會顯示到當(dāng)日日期的課表列表上。課表信息添加如圖4-27所示:圖4-27課程添加視圖當(dāng)用戶填寫完課程信息并點(diǎn)擊確定時就會把課程信息插入并顯示到外面的課表列表上。但是需要教師才有課表添加的權(quán)限,不然的話會返回提示信息顯示權(quán)限不夠。教師要對課程信息進(jìn)行修改或者刪除,只需要點(diǎn)擊列表上的信息即可彈出相應(yīng)的選項(xiàng)來進(jìn)行課程管理。如圖4-28所示:圖4-28課程管理視圖教師點(diǎn)擊課程信息時會彈出標(biāo)題為“課程信息”的提示框,其中有四個按鈕,分別時考勤,考勤查詢,修改和刪除。教師想要對課程信息修改即可點(diǎn)擊修改按鈕對象相關(guān)的課程信息進(jìn)行修改然后提交數(shù)據(jù)即可,點(diǎn)擊刪除按鈕即可實(shí)現(xiàn)對該課程的刪除。用戶點(diǎn)擊底部導(dǎo)航欄的第二個界面就是課表查詢界面,如圖4-29所示:圖4-29課表查詢界面用戶在搜索欄中輸入課程名字的關(guān)鍵字即可自動檢索數(shù)據(jù)庫中的具有相同關(guān)鍵字的課程并顯示其信息到列表上。其中相比較于課表界面上的課程信息更多了個課程日期,這樣用戶就更能直觀地知道該課程在哪一天,然后在日期表上點(diǎn)擊相應(yīng)的日期即可找到該課程。4.2.4考勤管理及信息展示實(shí)現(xiàn)考勤正常按照流程應(yīng)該是教師開始簽到→學(xué)生開始簽到→教師結(jié)束簽到。在簽到的時候時需要判定教師是否開始簽到,是則可以進(jìn)行考勤,不是則顯示不在考勤時間。所以我按照該流程設(shè)計(jì)了考勤查詢的界面。考勤界面如圖4-30所示:圖4-30考勤界面教師通過點(diǎn)擊右上角的加號按鈕進(jìn)行開始簽到,點(diǎn)擊減號按鈕結(jié)束簽到。但同樣的,開始簽到也需要教師才能進(jìn)行操作,普通用戶也就是學(xué)生是沒有權(quán)限進(jìn)行操作的。教師在點(diǎn)擊加號按鈕后會顯示一個簽到碼,學(xué)生需要在簽到界面中輸入簽到碼進(jìn)行簽到或者點(diǎn)擊請假。這樣學(xué)生的考勤信息就分別被列到簽到列表和請假列表里??记诮缑婧秃灥酱a界面如圖4-31、4-32所示:圖4-31考勤界面圖4-32簽到碼界面教師可以通過點(diǎn)擊用戶在考勤列表里的信息進(jìn)行修改考勤信息。比如點(diǎn)擊簽到列表下的“曾小賢”會顯示是否要更改考勤狀態(tài),反之請假列表也是一樣。修改考勤如圖4-33所示:圖4-33修改考勤圖4.2.5管理員操作實(shí)現(xiàn)通過點(diǎn)擊注冊界面的管理員按鈕并輸入管理員秘密就可以登入管理員界面。管理員擁有全部的權(quán)限,即在教師權(quán)限的基礎(chǔ)上增加。管理員界面和用戶管理界面如圖4-34、4-35所示:圖4-34管理員界面圖4-35用戶管理界面在管理員界面中可以看到用戶的賬號、密碼和是否是教師。如果該賬號已經(jīng)進(jìn)行了教師驗(yàn)證就會把教師二字添加到該賬號信息的最后面,如果沒有進(jìn)行教師驗(yàn)證則顯示賬號和密碼。管理員也可以通過對列表信息點(diǎn)擊進(jìn)行用戶管理,對用戶賬號刪除、修改密碼或者修改教師驗(yàn)證狀態(tài)(修改權(quán)限)。管理員的課表查詢界面和前面提到的課表查詢界面并無二樣。通過課表按鈕進(jìn)行界面的跳轉(zhuǎn),進(jìn)入到管理員-課程表界面。這里的課表界面與前面提到的課表界面也是大相徑庭,管理員可以行使教師的權(quán)限來進(jìn)行對課表的增刪查改。有不同的地方在于考勤界面和考勤查詢界面的顯示不同??记诮缑婧涂记诓樵兘缑嫒鐖D4-36、4-37所示:圖4-36考勤界面圖4-37考勤查詢界面管理員的考勤界面是對用戶的補(bǔ)簽,可以看到該節(jié)課所有用戶的考勤狀態(tài),未簽到即可點(diǎn)擊列表信息進(jìn)行對用戶簽到或者請假,但是已經(jīng)簽到的用戶是操作不了的。而在考勤查詢界面則會只顯示已經(jīng)有考勤信息的用戶,然后也可以通過點(diǎn)擊列表信息進(jìn)行對考勤狀態(tài)的修改。4.3數(shù)據(jù)庫操作實(shí)現(xiàn)這是我所用到的關(guān)于數(shù)據(jù)庫的類。其中有user(用戶)表、course(課程)表、configation(個人資料)表、sex(性別)表、time(時間)表、Attendance(考勤)表和Account(教師驗(yàn)證)表。使用的具體類如圖4-38所示:圖4-38具體類每個數(shù)據(jù)表都會由一個mode類和Datahelper類控制,例如User類和UserDatahelper類。User類是一個模型類,它代表了一個用戶的數(shù)據(jù)結(jié)構(gòu),用來封裝用戶數(shù)據(jù),創(chuàng)建和表示用戶對象的。UserDataHelper類是個輔助類,是數(shù)據(jù)庫操作的接口,用來處理與用戶數(shù)據(jù)庫交互的邏輯。它們共同工作,以確保用戶數(shù)據(jù)的安全性和一致性。為了實(shí)現(xiàn)數(shù)據(jù)庫操作,需要創(chuàng)建數(shù)據(jù)庫連接,再建立一個sql對象用于執(zhí)行SQL語句。數(shù)據(jù)表建立如圖4-39所示:圖4-39數(shù)據(jù)表建立首先創(chuàng)建數(shù)據(jù)庫databases,然后通過onCreate方法進(jìn)行user表的創(chuàng)建。數(shù)據(jù)表建立后就可以對其進(jìn)行數(shù)據(jù)操作,添加、查詢、修改和刪除。完成提交數(shù)據(jù)庫操作后關(guān)閉sql和數(shù)據(jù)庫連接。增刪查改操作如圖4-40所示:圖4-40增刪查改其他數(shù)據(jù)表操作所用到的代碼邏輯也都大相徑庭,所以這里也就不再進(jìn)行說明。4.4本章小結(jié)在本章節(jié)中詳細(xì)介紹了系統(tǒng)的具體實(shí)現(xiàn)過程,其中包括后端實(shí)現(xiàn)、前端實(shí)現(xiàn)和數(shù)據(jù)庫操作實(shí)現(xiàn)。并且成功實(shí)現(xiàn)了用戶登陸注冊、個人賬戶管理、課程管理和簽到管理功能,并通過前端界面提供了友好的用戶交互體驗(yàn)。第五章系統(tǒng)測試本科畢業(yè)設(shè)計(jì)(論文)系統(tǒng)測試系統(tǒng)測試[10]是軟件最后交付的重要質(zhì)量保證步驟。其是在軟件開發(fā)的生命周期中,對整個軟件體系進(jìn)行的全面性評估,是為了確保系統(tǒng)是否符合既定的需求和標(biāo)準(zhǔn),以及是否能在實(shí)際運(yùn)行中能夠展現(xiàn)出預(yù)期的功能、性能和可靠性。簡單來說,測試就是探查該軟件是否有什么“暗病”。測試要求如圖5-1所示:圖5-1測試要求5.1功能測試功能測試是系統(tǒng)測試的核心,主要驗(yàn)證系統(tǒng)的功能是否正確地、成功地實(shí)現(xiàn),找出需求不同的地方,提出更加完善的方案。軟件測試方法主要分為三大類,白盒測試、黑盒測試和灰盒測試。黑盒測試:是將軟件視為一個“黑盒”,測試人員不需要關(guān)系內(nèi)部具體實(shí)現(xiàn),也就是不需要了解內(nèi)部的邏輯結(jié)構(gòu),而是直接通過運(yùn)行測試軟件是否能夠?qū)崿F(xiàn)相應(yīng)的功能。即通過輸入不同的測試數(shù)據(jù)來觀察輸出,來驗(yàn)證功能是否能按照預(yù)期工作。這測試方法側(cè)重于軟件的端到端行為,主要確保軟件能滿足用戶需求。白盒測試:這個則與黑盒測試相反,測試人員需要了解軟件的內(nèi)部工作原理,比如后端代碼結(jié)構(gòu)、算法和內(nèi)部的數(shù)據(jù)流。通過檢查代碼覆蓋率、分支執(zhí)行等情況,該方法主要確保軟件的內(nèi)部邏輯正確,常用于開發(fā)過程中的單元測試和集成測試?;液袦y試:灰盒則結(jié)合了白盒和黑盒測試的特點(diǎn)。測試人員需要關(guān)注軟件的功能性,也要保證內(nèi)部的邏輯和結(jié)構(gòu)正常。該方法一般在軟件的測試階段使用,是為了保證軟件在實(shí)際使用中表現(xiàn)能夠符合預(yù)期,也沒有內(nèi)部的代碼錯誤。這里采用黑盒測試方法,測試重點(diǎn)是系統(tǒng)的輸入和輸出,以及它們之間的關(guān)系。功能測試表如表5-1所示。表5-1功能測試表項(xiàng)目名稱基于Java的課程簽到APP測試環(huán)境硬件:手機(jī)一部,PC機(jī)一臺操作系統(tǒng):window1064位Android10.0版本軟件:AndroidStudio作者李安測試時間2024.3.25測試編號測試對象測試步驟預(yù)期結(jié)果實(shí)際結(jié)果1用戶注冊新用戶產(chǎn)生新用戶一致2用戶輸入賬號和密碼進(jìn)入系統(tǒng)一致3用戶選擇“查詢課表界面”跳轉(zhuǎn)到“查詢課表”界面一致4用戶選擇“我”界面跳轉(zhuǎn)到“我”界面一致5用戶選擇“課表”界面跳轉(zhuǎn)到“課表”界面一致6用戶填寫個人信息后返回“我”界面“我”界面顯示“你好,+姓名”一致7用戶修改密碼返回修改成功并跳轉(zhuǎn)到登陸界面一致8用戶切換賬號顯示“你好,+相應(yīng)賬號的姓名”一致9用戶查詢課表顯示相應(yīng)的課表一致10用戶輸入簽到碼簽到顯示簽到成功一致11用戶教師未開始簽到點(diǎn)擊簽到顯示不在簽到時間一致12用戶進(jìn)行教師驗(yàn)證顯示驗(yàn)證成功一致13教師進(jìn)行課程添加列表顯示添加的課程信息一致14教師進(jìn)行課程修改列表顯示修改后的課程信息一致15教師進(jìn)行課程刪除課程信息消失一致16教師點(diǎn)擊開始簽到顯示簽到碼一致17教師點(diǎn)擊結(jié)束簽到顯示簽到失敗一致18教師修改考勤學(xué)生的狀態(tài)考勤學(xué)生狀態(tài)被修改一致19管理員查詢所有用戶顯示所有用戶信息一致20管理員刪除或者修改用戶賬號修改或刪除成功一致21管理員修改用戶權(quán)限顯示修改成功一致22管理員管理課程信息顯示管理成功一致23管理員查詢用戶指定課程簽到信息顯示成功一致24管理員給用戶進(jìn)行補(bǔ)簽顯示已簽到一致25管理員給用戶修改簽到信息顯示修改成功一致從上表可以看到,該系統(tǒng)分別針對用戶、教師、管理員的不同功能進(jìn)行了測試。測試結(jié)果顯示,所有測試用例都達(dá)到了預(yù)期效果,也就是各項(xiàng)功能的的一致性得到了保證。5.2本章小結(jié)該系統(tǒng)已經(jīng)實(shí)現(xiàn)了所需的基本功能,并在限定范圍內(nèi)進(jìn)行了進(jìn)一步的完善。目前系統(tǒng)的運(yùn)行狀況良好,但仍有一些方面需要進(jìn)行改進(jìn)。例如實(shí)現(xiàn)聯(lián)網(wǎng)功能、后臺操作系統(tǒng)等。結(jié)論通過歷時數(shù)月的研究與實(shí)踐,終于成功設(shè)計(jì)與實(shí)現(xiàn)了一個基于Java的課程簽到App。該系統(tǒng)成功實(shí)現(xiàn)了用戶登陸注冊、賬號管理、課程管理和簽到管理功能,并采用SQLite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲。同時進(jìn)行了一些測試保證系統(tǒng)能正常運(yùn)行,給用戶提供了一個較為友好的操作環(huán)境。與傳統(tǒng)的字紙簽到相比,該系統(tǒng)可以自動進(jìn)行數(shù)據(jù)的錄入和數(shù)據(jù)的展示,減輕了人工工作的負(fù)擔(dān),降低了錯誤率。同時該系統(tǒng)集成了用戶登陸、簽到管理、賬戶管理和課程管理等多個功能模塊,實(shí)現(xiàn)了信息的集中管理和高效運(yùn)作。在本次畢業(yè)設(shè)

溫馨提示

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

最新文檔

評論

0/150

提交評論