基于Java的课程签到APP设计_第1页
基于Java的课程签到APP设计_第2页
基于Java的课程签到APP设计_第3页
基于Java的课程签到APP设计_第4页
基于Java的课程签到APP设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

II目录TOC\o"1-3"\h\u4389摘要 I29724Abstract II5968第一章绪论 1108641.1课题研究背景以及研究意义 1133211.2国内外研究现状 1252791.2.1国内研究现状 1304121.2.2国外研究现状 246201.3本课题研究内容 321058第二章系统相关技术与分析 4212922.1Java编程语言概述 4259832.2AndroidStudio开发环境介绍 487742.3SQLite数据库简介 6143042.4需求分析 6239852.5本章小结 86413第三章系统方案设计 9323823.1系统总体架构设计 9281113.2数据库设计 9200613.2.1概念结构设计 9145583.2.1数据表设计 11199203.3后端设计 12263193.4前端设计 12216963.5本章小结 1324270第四章系统实现 1422914.1后端实现 1596724.1.1用户登录注册功能实现 15248184.1.2账户管理功能实现 1741344.1.3课表管理功能实现 21244164.1.4签到管理功能实现 2177734.1.5管理员功能实现 22209514.2前端实现 23171004.2.1登录注册界面实现 23306474.2.2账户管理界面实现 249634.2.3课表管理及课表信息展示实现 27226884.2.4考勤管理及信息展示实现 29170784.2.5管理员操作实现 2939354.3数据库操作实现 31311884.4本章小结 3213717第五章系统测试 3329805.1功能测试 33157255.2本章小结 3523647结论 3612818参考文献 38绪论1.1课题研究背景以及研究意义在当今这个经济高速发展的社会背景下,信息技术也随之飞速发展,智能手机也在不断地普及,移动互联网已经在不知不觉中成为了人们生活中不可或缺的一部分。在日常生活中,移动互联网为人们提供了丰富的娱乐选择,也让人们获得信息更为便捷,人们可以通过社交媒体和通讯工具就可以做到足不出户就了解到自己想要知道的各种实时信息,与他人进行实时联系和跨地域沟通交流。移动互联网技术的崛起为教育行业带来了革命性的变化,并且为教学质量和学生管理提供了更为高效和便捷的服务。在传统的课堂上,老师们大多使用纸质记录和口头点名来进行课堂签到从而确保学生的出勤率,但是这种方式不仅效率不高,且会占用一定的课堂时间,容易造假和数据不易统计。如果学生人数较多,该方式更显繁琐,增加老师和学生的上课负担。因此开发一款针对学校需求而设计出的基于移动互联网的课程签到APP,无论是对提高学校的教学管理,还是对减轻老师的教学负担和增强学生的学习体验都有着非常重要的意义。此外,教育是一个民族的最根本的事业,随着国家对教育事业的推进,教育也逐渐信息化。现在越来越多的学校开始探索有关智慧校园的建设,类似于超新学习通,腾讯课堂和中国大学MOOC这种教学平台,它们都提供了丰富的学习资源和教学工具。智慧校园是以物联网、云计算、大数据等技术为基础,实现校园教学、管理、服务全面智能化、信息化的新型校园环境。其中课程签到作为智慧校园建设的重要组成部分,课程签到的信息化水平会直接影响教学管理的质量和效率,所以本课题的研究是符合当下教育信息化的发展趋势的。本课题的研究目的和意义在于通过开发一款课程签到APP来推动移动互联网技术在在教育领域的应用发展,探索课程签到系统的性能和稳定性,提升教学管理效率和学生学习体验。为教育信息化的进程注入新的活力,推动教育事业的持续健康发展。1.2国内外研究现状1.2.1国内研究现状在国家对教育事业的大力推动下,课程签到APP作为移动技术在教育领域中的重要体现,近年来在国内外都受到了广泛的关注与研究。课程签到APP不仅提高了课堂考勤的效率,还能通过对考勤数据的分析来为教学管理提供极大的便利。当今国内,课程签到APP已经进入持续优化与创新的阶段,越来越多的教育机构与团队开始关注用户体验、数据安全和功能拓展方面的问题,通过不断地迭代和升级来提升系统的稳定性和实用性。甚至有一些团队开始探索将课堂签到APP与其他教育信息化工具进行集成,以提供更加全面、高效的教学管理解决方案。现如今大部分高校都有属于自己的智慧校园软件,但都是使用超星学习通和智慧树等课程软件来进行课堂学习和教学考试,通过两者的结合来达到更好的教学效果。超新学习通移动课堂互动系统如图1-1所示:图1-1超星学习通移动课堂互动系统虽然国内课堂签到APP在不断完善中,但是仍然存在一些问题,例如数据安全问题和用户体验问题。前者涉及大量的学生信息,该如何确保数据的安全性和隐私性?后者涉及到操作界面不太友好,用起来不方便,亦或者说因为网络延迟造成签到失败的问题,都需要进一步优化和完善。1.2.2国外研究现状在国外,关于课程签到APP的研究同样取得了显著的进展。国外研究者们相对于国内更加注重课堂考勤APP在学生学习过程中的作用和影响。他们通过实证研究探讨了课堂考勤APP对学生学习态度、出勤率以及学习成绩等方面的影响。在学习过程中,学习者扮演着核心的角色,他们的态度对于移动学习的应用和普及起到了决定性的作用。研究人员伊尔宛及其团队REF_Ref31559\r\h[1]通过发放调查问卷的形式,对某理工学院机械专业领域的30名学生进行了调查。通过分析所得数据,包括平均数、标准偏差和百分比等指标,研究结果显示学生们对移动学习持有相当积极的态度。同时也有人对教师对移动学习的认可度研究。胡赛因REF_Ref31559\r\h[2]随机对144名教师进行了调查,目的是为了探究未来英语老师如何运用移动技术进行自我学习和课堂教学。调查结果显示,尽管面临一些挑战,但几乎所有调查对象都表达了在未来英语课程中使用移动设备教学的愿望。无论是用于个人学习还是课堂教学,教师们普遍对移动学习持有正面态度。此外,国外研究者还关注课堂考勤APP与其他教育技术的整合,以实现教育教学的创新与发展。但同样的也存在着一些问题和挑战,例如,如何确保考勤数据的准确性和可靠性、如何保护学生的隐私和数据安全、如何提升教师和学生对课堂考勤APP的接受度和使用意愿等。面对这些问题,国外研究者们正积极探索有效的解决方案和策略。1.3本课题研究内容本文主要介绍基于Java的课程签到APP的设计与实现,研究内容主要分为以下五个部分:第一部分是本文的绪论部分,主要介绍课程签到APP的研究背景和研究意义,以及国内外现阶段的研究成果。分析其在功能和用户体验等方面存在的不足,然后明确本课题的研究目标和方向。第二部分是对AndroidStudio开发环境和语言的简单介绍,随后对课程签到APP进行需求分析,其中包括功能需求和性能要求等,并根据这些需求设定出明确的目标和要求。根据课程签到APP的用户登录信息、学生签到、教师管理签到、考勤数据统计和课表查询等功能来设计系统的架构和模块划分等功能。第三部分是利用前面对需求分析使用相关技术和系统框架来进行设计该系统。该系统分为前端和后端两部分,前端主要负责用户界面的展示和交互,后端则采用目前主流的Java开发语言保证项目开发的边界性和高效性REF_Ref31559\r\h[3],并通过Sqlite数据库来进行逻辑处理和数据存储。第四部分是关于对课程签到APP的具体实现。其中包括后端用户登录、课表管理、签到管理等功能的实现和前端数据展示和交互流程等。第五部分是对所设计的课程签到APP进行全面的测试,其中包含基本功能和数据库的功能测试和压力测试。系统相关技术与分析2.1Java编程语言概述Java编程语言是一种面向对象性、简洁性、分布式处理能力、平台无关性以及多线程与动态性等核心的编程语言,其设计理念在于摒弃了一些C++中复杂且难以掌握的概念,比如指针和继承操作,并兼具强大的功能和易用性。Java语言有三大核心原则:封装、继承和多台性。凭借着三大核心原则实现了对象的构建和交互,保证了数据的完整性和代码的重要性。这些特性让Java不局限于桌面应用和Web应用,还包括分布式系统和嵌入式系统等多个领域。还有,Java语言的平台无关性能让其在不同的操作系统上无缝运行,极大便利了全球的编程者。这是因为java虚拟机(JVM)的引入,使得Java程序能在任何安装了JVM的平台上运行。当编辑并运行一个Java程序时,需要同时涉及到四个方面:Java编程语言、Java类文件格式、Java虚拟机、Java应用程序接口。首先使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在源文件中定义不同的类,然后通过调用类(这些类实现了JavaAPI)中的方法来访问资源系统,再把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的JavaAPI调用。Java的工作原理如图2-1所示:图2-1Java的工作原理回顾Java的发展历程,自1991年SunMicrosystems公司的JamesGosling开始设计Java语言以来,Java凭借其强大的功能和易用性逐渐发展成为全球最流行的编程语言之一。2.2AndroidStudio开发环境介绍Android是一款以Linux为基础的开源操作系统,并以自由性和开放性闻名。Android的架构层次分明,从上层到下层依次为应用层、应用框架层、系统运行层和Linux内核层,这样的架构让其内部机制非常清晰和易于理解。Google自主研发并开源的这款Android系统已经运用到各个领域中。还有就是它的开发环境灵活多变,不再局限于单个开发环境,且不受到各种限制。进而全球的开发者们可以根据自身的喜好或者需求来进行自由地修改开放的源代码,从而开发各种实用且具创新性的手机应用程序。同时Android兼具出色的图形显示能力和用户友好的界面设计,这让用户的体验更加舒适和流畅。Android开发一般使用这两种集成开发环境,分别是基于IntelliJIDEA的AndroidStudio+SDK+JDK+Genymotion和Eclipse+ADT+JDK+SDK。前者是当前Android开发使用较多的开发环境,也是当前的主流。该开发环境近年来经历了一场革命性的变革。其中,基于IntelliJIDEA的AndroidStudio自2013年谷歌I/O大会发布以来,用其强大的功能和易用性赢得了开发者的广泛认可。如今,AndroidStudio已经更新至3.6.1版本(截至2020年3月),并且支持NDK开发,为开发者提供了更全面的解决方案。随着其功能的不断完善和优化,它已逐渐取代了曾经备受欢迎的EclipseADT,成为新一代Android开发工具的首选。.后者Eclipse是一种Java开发工具,基于Eclipse可以搭建用于Android开发的环境。Eclipse+JavaSDK(JDK)组成了基础的Java集成开发环境,ADT作为插件为Eclipse提供Android开发的支持,再整合AndroidSDK后组成Android开发环境。对于多数Java开发者来说,Eclipse是开发的不二之选。但是随着Android开发领域的演进,Eclipse已经慢慢地退出这个舞台。早在多年前Google就对外宣布将停止对Eclipse的ADT开发工具的所有支持,这个消息预示着Eclipse的落幕和Studio的崛起。Google终止对EclipseAndroid工具的开发和支持,这意味着ADT插件的终结,和预示包括Ant构建系统、DDMS、Traceview等一系列性能监控工具的消失的结局。众多开发者为了能够与时俱进和确保高效的Android应用开发,纷纷选择迁移到AndroidStudio这一更加现代化且功能强大的开发环境中。Eclipse开发环境架构图如图2-2所示:图2-2Eclipse开发环境架构图AndroidStudio作为新一代的Android开发工具,相比较于Eclipse拥有许多显著的特点。前者集成了代码编辑、构建、调试与性能分析等优点,让开发者能够在一个统一的、舒适的环境中高效完成开发工作。它的智能代码提示与自动补全功能一定程度上提高了开发员的编码效率,还降低了代码编写错误的可能性。其内置的Gradle构建系统为项目管理和依赖关系提供了极大的便利和灵活性。ApplyChange功能可以将代码和资源更改推送给正在运行的应用,而无需重启应用,这意味着开发人员可以运用UI设计工具进行实时预览,能够更加直观地进行界面开发。还有,AndroidStudio原生支持版本控制系统,并且拥有丰富的插件资源,进一步增强了Android开发的拓展性和实用性。2.3SQLite数据库简介SQLite数据库是一款轻量级的关系型数据库管理系统,是为嵌入式应用而设计的。它集成了完整的ACID事务性,保证了数据的一致性、安全性和持久性。它具有出色的跨平台性,能够在多种操作系统上运行,其中有Windows、Linux、Unix、OSX以及操作系统如Android和IOS等,这也是为什么它能与Java一样被广泛运用。虽然SQLite不支持复杂的SQL语法,但它提供的SQL命令完全足够用户的基本数据管理需求。SQLite以其开源、自包容、零配置、无服务器的特性而著称。它是一个零配置的数据库,这意味着与其他数据库不一样,不需要在系统中配置。无需复杂的安装过程,只需要将它的二进制文件放置在适合的位置,即可轻松创建、连接和使用数据库。其数据库文件结构紧凑、高效且可靠,能够支持高达2TB的数据库大小。每个数据库文件都以B-Tree的数据结构形式存储在磁盘上,确保了数据的快速访问和高效管理,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite直接访问其存储文件。同时,SQLite是一个增长最快的数据库引擎,这个增长是指在普及方面的增长,与它的尺寸大小无关,这已经证明了它的便捷性和易用性。SQLite源代码不受版权限制。SQLite在事务处理中采用了数据库级的独占性和共享锁机制,简单来说就是在同一段时间内只有一个进程可以被写入数据,但是多个进程可以同时读取数据。就是这样的设计使得它能够在并发访问场景下仍然能够保持数据的完整性和一致性。它特别适合嵌入式系统和需要轻量级数据库解决方案的场景,为开发者提供了便捷和高效的数据管理方式。2.4需求分析本次课题中,需求分析是要明确移动应用系统的核心功能、用户角色、操作流程和数据交互等方面的需求,为后续的系统设计和实现提供明确的指导。在课程签到APP中,明确了系统的主要功能包括用户登录注册、签到管理、账户管理以及课表的管理等。系统功能模块如图2-3所示。图2-3课程签到APP系统功能模块图在登录注册功能中,系统需要确保用户能够安全地访问系统并管理个人账户。而签到管理功能则要求系统能记录用户的签到信息,以便后续的数据统计和分析。账户管理功能也是并不可少的,它允许用户编辑,查看个人信息和修改账号密码。而课表管理能为用户提供较为便捷的课程查看和编辑方式,提高了用户的体验。在系统的用户角色和权限的问题中。普通用户是系统的主要使用群体,也就是学生,他们能够进行登录、管理个人账户、签到和查看课表。然后比普通用户拥有更高权限的就是老师了,用户需要进行教师验证来提升权限,老师不但拥有普通用户的权限,还能够进行课表设置和管理签到。而管理员则扮演着更加重要的角色,不仅可以执行老师的权限,还拥有用户管理和教师验证管理等高级权限,以便对整个系统进行监控和维护。权限分配如图2-4所示:图2-4权限分配图然后就是系统的操作流程。用户注册登录时,系统需要验证身份信息的正确性;用户进行账户管理时,系统需要存储并修改用户数据。用户查看课表时,需要输入相关课程的关键字即可显示相应的课程安排;而管理员和老师分别在进行用户管理、课表设置等操作时,系统需要确保数据的准确性和一致性。用户签到时,需要选择对应的课程进行签到,系统需要负责记录和更新签到信息;操作流程如图2-5所示:图2-5用户操作流程图最后就是有关系统的性能和可用性。开发出的系统应该能保证快速相应和稳定运行,以满足大量用户同时使用的需求。同时系统还要较高的可用性,提供直观的用户界面和友好的交互流程。2.5本章小结本章对移动应用系统的相关技术、SQLite数据库与需求分析进行了详细的介绍和分析,为后续的系统设计和实现奠定坚实基础。在后续的章节里我将依托本章所述的技术基础与需求分析展开系统的精细化设计与开发工作。通过将这些技术和需求紧密结合,最终构建一个功能完备、性能稳定且用户体验良好的移动应用系统。系统方案设计3.1系统总体架构设计本系统采用单机应用的架构模式,设计理念为给用户提供便捷、高效的签到服务。系统架构基于客户端-本地数据库的模式,所有的数据都保存在移动设备的本地SQLite数据库中,保证了数据的独立性和安全性。系统在架构层面可以划分为前端展示层、业务逻辑层和数据存储层这三个主要部分,以实现代码的模块化和层次化。前端展示层负责呈现出用户界面、数据交互和展示;业务逻辑层则负责处理用户的请求,执行相关的业务操作;数据存储层负责数据的存储和访问,保证数据的完整性和唯一性。架构层如图3-1所示:图3-1架构层前端展示层把数据传输给业务逻辑层进行处理,业务逻辑层再把处理后的数据存储到数据存储层,然后前端展示层再从数据存储层中读取数据展示。3.2数据库设计数据库作为系统设计的关键环节,用来进行数据的存储和访问,这也是业务逻辑的基础。在本方案中选择SQLite作为数据库管理系统,需要设计合理的数据表结构来存储用户信息、课程信息和签到信息。数据库设计就像是高楼大厦的基石,如果设计不合理,对后面的系统开发会有着极大的隐患,比如后期的系统维护、功能变更或者功能扩充时会引起很多的问题,甚至需要重新设计,重头再来。3.2.1概念结构设计根据前面的需求分析可以得出实体属性图。用户实体属性图如图3-2所示:图3-2用户实体属性图账户实体属性图如图3-3所示:图3-3账户管理属性图课程实体属性图如图3-4所示:图3-4课程实体属性图签到实体属性图如图3-5所示:图3-5签到实体属性图ER模型是数据库设计中的一种图形化表示方法,我们能够通过它来理解和组织数据。该模型主要由实体、属性、关系、键、域和约束这些部分组成。实体:类似于生活中的各类东西,比如人、事件和物品。在数据库中每个实体都对应一个表格。属性:是实体的特征,就好比人的姓名、物品的颜色。其中又可以划分为直接属性和派生属性,前者是直接描述实体的基本属性,后者是通过计算得出的。关系:就是字面意思,用来描述不同实体间的联系。键:类似人的身份证,唯一识别一个实体。在数据库中,这个键用来保证每条数据都是唯一的。域:属性的取值范围。约束:设置规则来限制,保证数据的唯一性和一致性。ER模型能通过这些简单的概念,帮我们清晰地表达数据地逻辑结构,让数据库的应用和开发变得更加容易。3.2.1数据表设计本系统选择SQLite数据库作为存储数据的方法,建立数据库databases,并且建立数据表。表3-1用户表user的结构属性数据类型说明IdInt主键自增IdacuString账号pwdString密码表3-2个人资料表Configation的结构属性数据类型说明studentIdInt主键自增IduserAcuString唯一标识符-账号usernameString用户名nameString姓名class1String班级connectionString联系方式表3-3课程表courses的结构属性数据类型说明IdInt主键自增IdtimeString课程时间teacher_nameString教师名cou'rse_nameString课程名dateString日期表3-4教师验证表account的结构属性数据类型说明IdInt主键自增IduserAcuString唯一标识符-账号account_typeString是否教师表3-5时间表time的结构属性数据类型说明course_idString唯一标识符-课程Idis_attendance_startedboolean判断是否开始签到attendance_codeString签到码表3-6考勤表attendance的结构属性数据类型说明IdInt主键自增Idcourse_idInt唯一标识符-课程Iduser_nameString用户姓名check_in_timeDate签到时间is_presentBoolean考勤状态3.3后端设计在本章中,主要介绍了系统的方案设计,明确了系统的总体架构设计、数据表结构、前端和后端设计。后端设计采用Android应用开发中常用的Java语言,并使用Studio提供的AppCompatActivity类来创建Activity。3.4前端设计前端用户界面设计共四个界面:主页、课表查询、课表、我。界面如图3-6所示:图3-6界面首页是标题页,课表查询界面是输入课表的关键字搜索课程信息,课程界面包括课程管理和签到管理功能,最后在我界面中实现账户管理功能。3.5本章小结在本章中,主要介绍了系统的方案设计,明确了系统的总体架构设计、数据表结构、前端和后端设计。系统实现在AndroidStudio的实际开发中我们主要会依赖于五类文件来构建我们的应用程序,其中分别是XML布局文件、Activity类文件、Java或者Kotlin代码文件、资源文件和配置文件。Android项目结构如图4-1所示:图4-1Android项目结构XML布局文件:该文件通常建立在res/layout目录下面,用于定义应用程序的用户界面。使用XML语法定义界面元素,例如按钮、文本框和图像等这些元素的布局和属性。开发者可以按照自己的需求来设置控件的大小、位置、颜色等属性来创建出各种界面,让用户体验更加流畅。Activity类文件:Activity是Android应用程序的基本组件,主要用来处理用户界面的逻辑业务。它们通常以Java或者Kotlin类文件的形式存在,且继承自AppCompatActivity或其他Activity基类。开发者一般在这些类文件中编写代码来响应用户界面的操作,比如点击事件的响应,通过按钮的监听器来确认该按钮是否被点击。当然也可以重写控制界面元素,与后端服务进行交互。Java或者Kotlin代码文件:这些文件与Activity类文件共同构成了应用程序的核心逻辑。这类文件通常包含处理数据、网络处理、业务逻辑等功能的类和方法。资源文件:AndroidStudio会提供丰富的资源文件,其中包含字符串、图片、颜色、样式等,通常都存储在res目录下。如果对这些资源文件都不满意,可以到网络上导入自己喜欢的文件到该目录下,然后在XML布局文件和Java或者Kotlin代码文件中调用,从而让界面更加美观和具有创新性。配置文件:在AndroidManifest.xml文件中声明应用程序的基本信息和权限。基本信息指的是package中暴露的组件像activity,serveice等,他们各自的实现类,各种能被处理的数据和启动位置。权限问题例如打开摄像头和连接网络等,如果不在改文件中写入相应的权限,就会无法执行相应的操作。build.gradle文件用于配置项目的构建选项和依赖关系。在这些文件中,XML文件和Activity类文件有着紧密的联系。每个XML文件有着对应的一个Activity类文件,XML布局文件定义了界面的外观和结构,而Activity类文件负责控制这些界面的行为。4.1后端实现后端是系统设计的核心部分,负责处理业务逻辑、数据存储和数据交互功能。在后端开发中采用Java语言进行开发,利用AndroidStudio提供的工具进行编码。4.1.1用户登录注册功能实现登录注册功能在每个系统里都是基础功能,用户要进入系统都要先创建一个账号。在后端代码里用Oncreate方法找到需要的视图控件,并将它们赋值给相应的变量。onCreate方法如图4-2所示:图4-2onCreate方法用setContentView方法来加载对应的XML布局文件,并将其渲染到活动中。在上图中加载了login界面,就是登录界面。然后分别对控件进行视图关联,例如login_register_btn就是关联了login界面的注册按钮,login_acu就是关联了login界面的账号输入文本框。用户通过点击登录按钮,前端界面就会执行相应的逻辑功能,例如跳转界面。如果要执行这一功能,首先得用监听器对按钮进行监听,确定该按钮被点击了才能执行相应的逻辑功能。这就要用到setOnClickListener方法来对按钮进行监听,setOnClickListener方法如图4-3所示:图4-3setOnClickListener方法以登陆按钮为例,通过setOnClickListener方法对登陆按钮进行监听。如果监听到了该按钮被点击,就会从前端的账号和密码这两个文本框中获取用户输入的信息,之后用checkLogin方法把账号和密码传入到数据库中执行相应的操作来验证该账号和密码。如果账号和密码都正确,就会获取该用户的账号并且启动MainAcitvity界面,并将login_status设置为ture,然后把login_status的状态和user_acu传递给MainActiviy。如果密码不正确就会显示错误信息提示。checkLogin和getUserAcu方法如图4-4所示:图4-4checkLogin和getUserAcu方法注册界面使用的方法也类似,通过对注册按钮的监听进行用户的注册操作。在用户点击注册按钮后会从前端的账号和密码输入框中获取数据并把这两个数据传入到数据库中进行插入操作。注册成功即返回提示“注册成功”,否则提示“注册失败”或者“账号已存在”。注册事件如图4-5所示:图4-5注册事件4.1.2账户管理功能实现账户管理功能包括填写个人信息、修改密码、切换账号和教师验证。在个人资料界面中,填写完信息点击确认按钮提交数据。个人资料插入部分代码如图4-6所示:图4-6个人资料插入部分代码后端会检查所有文本框是否都被填写,不然会返回提示“请填写所有信息”。只有填写完所有信息之后才会把数据上传到数据库中进行相应的操作。同时用getIntent方法从MeFragment类中,也就是“我”界面中获取该用户的账号来关联这些数据。每个账号都有对应的个人资料。而“我”界面中的user_acu来自于MainActivity类获取从登陆界面中传递过来的数据。数据传递代码如图4-7所示:图4-7数据传递代码用intent方法来接收bundle方法传递的数据,进而实现对user_acu的数据传递。数据传递流程如图4-8所示。图4-8数据传递流程图通过intent方法和bundle方法来把userAcu传递到各个界面。因为我选定用户的账号user'Acu为唯一标识符,通过这个参数来把这个账号里的其他信息关联起来,这样数据就不会显得很乱。在修改密码界面中,用户点击修改按钮就会把数据上传到数据库中进行相应的逻辑操作。关键代码如图4-9所示:图4-9关键代码后端首先会对所有文本框中的数据进行读取,判断是否所有信息都被填写,没有则提示“请填写完整信息”,有则进行isCaptchaValid方法的判定。读取系统生成的验证码是否跟用户输入的验证码相同,相同即可对账号、旧密码和新密码这个三个参数进行读取,然后用checkCredentials方法判定。checkCredentials方法就是把账号和旧密码进行数据库检索,正确即进行密码修改的操作,没有就返回错误。验证码部分代码如图4-10所示:图4-10验证码部分代码用户通过点击切换账号来触发点击事件,即显示切换账号的对话框。显示账号的代码如下图4-11所示:图4-11显示账号的代码用showSwitchAccountDialog方法来从数据库中读取账号列表,并把这些列表存储在数组中,显示在对话框中。然后读取用户点击的那个账号,再调用switchAccount方法来进行账号的切换。下图4-12是switchAccount方法的部分代码:图4-12switchAccount方法在方法中调用userDataHelper的getUserAcu方法来校验该账号是否存在,存在则用saveUserAcu方法更新账号信息。最后就是教师验证功能,用户通过点击教师验证,然后出发点击事件,会弹出一个提示框让输入教师验证码。教师验证代码如图4-13所示:图4-13教师验证代码在上图中我用setInputType方法来设置输入类型只能为整数。我在后端代码中写死了教师验证的验证码为“123”,这个方法并不怎么好,安全系数不高,以后有机会我会进行改进。验证通过后会把userAcu和account_type这两个参数上传到数据库进行相应的操作。4.1.3课表管理功能实现课表管理功能包括添加、修改、删除课表和查询功能。这些功能就是基础的数据库增删查改。但是这里涉及到权限的问题,就是在进行这些数据库操作之前会先校验该用户是否是教师。验证是否教师代码如图4-14所示:图4-14验证是否教师的代码图通过获取当前账号的userAcu传输到数据库查询该用户是否教师。4.1.4签到管理功能实现签到管理功能包括教师开始签到、结束签到、用户填写签到码签到,显示签到信息和更改签到信息。这部分的关键在于教师开始签到时会生成签到码,学生需要输入签到码才能进行签到。生成签到码代码如图4-15所示:图4-15生成签到码代码这部分的功能与前面修改密码界面的验证码部分功能相似,但是又有部分不同。因为该签到码生成和填写不是在同一个界面,所以需要进行签到码的传递,这里选择把该课程id,开始签到的状态和该签到码上传到数据库中进行操作。这样学生在签到界面填写签到码时首先会先校验开始签到的状态,然后再进行对学生输入的签到码进行验证。4.1.5管理员功能实现管理员可以进行用户账号管理、修改教师验证、课程管理和签到管理。这里提下用户账号管理和补签功能,其他功能实现逻辑都与前面提到的功能相类似。用户账号管理的部分代码如图4-16所示:图4-16用户账号管理的部分代码用相应的DataHelper类时数据访问帮助类,就是执行相应的数据库操作。用getAllData方法获取所有用户数据,然后存储到userList列表中。再创建ArrayList来存储用户信息的字符串表示,并通过循环将每个用户的信息添加到ArrayList中。同时遍历这个列表每个用户是否是教师,是则列表项会多一个“教师”标签。补签功能部分代码如图4-17所示:图4-17补签功能部分代码通过获取点击列表位置所在的数据,在用split方法分割字符串,以提取用户名,而不需要从数据库中重新获取用户名。如果点击列表位置所在的字符串包含“已签到”,则会返回提示已签到。如果包含“未签到”即可用showDialogForAttendance方法对该用户进行补签操作。4.2前端实现4.2.1登录注册界面实现用户打开软件首先是登录界面,如果有账号则输入账号登录,没有则先跳转注册界面注册账号之后再进行登录。登录和注册视图如图4-18、4-19所示:图4-18登陆视图图4-19注册视图要实现上图中的视图布置要先在对应的xml文件中对相应的控件进行定义和设置。如登录界面中用EditText来分别定义账号和密码这两个文本框,用来输入账号和密码。然后通过点击登录或者按钮来进行相应的逻辑操作跳转界面,注册界面也类似。当然这仅仅是不够的,为了能够在后端中准确标识和引用相应的控件就需要设置属性id,id是用于唯一标识和引用XML文件中的某个元素或者属性。其中关键的代码如图4-20所示:图4-20关键代码这里为稍微为其中经常用到的属性讲解一下。layout_width

layout_height:定义视图控件的宽度和高度。wrap_content是指控件会根据内容自动调整大小,match_parent是指控件会填满其父容器的整个宽度和高度。id:是指给控件设置一个唯一标识符,类似于数据表中的列名,以至于能够在后端代码中引用相应的控件。hint:给文本框设置提示文本,就如“登录-账号”,让用户知道这里该输入什么数据。inputType:指的是文本框能接受哪种类型的数据输入。text:指的是控件的显示的文本。就好比登录按钮显示的文本是“登录”,这样可以让用户知道该控件是有什么用处。ems:指定编辑框EditText的期望宽度,以“em”单位表示。一个“em”通常等于字体的高度。layout_marginTop:设置视图控件的上边距。4.2.2账户管理界面实现用户成功登录后进入到软件的主界面,在底部的导航栏中切换到“我”界面,该界面为账户管理界面。其中有个人信息的填写,修改密码、切换账号、教师验证和退出登录功能。账户管理界面如图4-21所示:图4-21账户管理界面从图片中可以看到,最底下有个底部导航栏。其中有四个界面:首页、课表查询、课表、我。每一个选项都由外部容器RelativeLayout以及两个ImageView和一个TextView元素组成。RelativeLayout相当于一个小界面,包裹着里面的元素形成一个独立的结构。第一个ImageView显示的是最左边的图标,然后是TextView文本框显示文字,第二个ImageView显示的是最右边的向右箭头图标。通过对RelativeLayout设置clickable="true"属性,意思为对该容器设置可点击的属性,作用相当于按钮,即点击后会触发相应的逻辑功能。用户需要填写完个人信息后才能进行后面的操作,因为后面的操作都是与用户的姓名有关。就例如欢迎语,用户在第一次登录账号时是不会有欢迎语的,在资料里填写完个人资料后再返回账户管理界面就会出现“你好,+姓名”的欢迎语。用户通过点击资料,就会跳转到填写个人资料的界面。个人资料界面如图4-22所示:图4-22个人资料界面在个人资料界面中,用户需要在相应的文本框中填写用户名、姓名和学号等信息。填写后点击右上角的“确定”按钮就可以把数据提交到后端中进行处理,点击左边的红框部分即可返回到“我”界面。当用户想要修改密码时就可以点击修改密码进而跳转到相应的界面进行操作。如图4-23示:图4-23修改密码界面从图片可以看到,用户如果想要修改密码就需要输入当前登录的账号和密码,然后输入想要修改的新密码,之后输入随机生成的验证码然后点击修改密码。如果输入的验证码与系统给的验证码不一样就会显示验证码错误。或者说账号和旧密码其中有一个数据和数据库中的信息对不上都会返回错误。只有当所有的数据都正确后就会把数据提交到后端处理并返回修改成功,最后会退出到登录界面重新进行登录操作。用户点击切换账号后会显示一个提示框,然后提示框里面会给出标题“选择账号”并列出已经登录过的账号的账号名。用户只需要点击相应的账号名即可进行账号切换,如图4-24所示:图4-24账号切换图管理账号最后一个功能就是教师验证,这个功能是比较重要的。点击教师验证后弹出提示框,标题是“教师验证”,输入教师验证码正确即可以实施教师的权限,错误即显示验证错误。教师验证如图4-25所示:图4-25教师验证图在输入信息点击确定后会把该数据与后端的数据进行比对,正确即通过,错误即显示失败。后面的大部分功能都需要教师才能实现,例如课程管理和签到管理。普通用户都是没有权限去操作的。4.2.3课表管理及课表信息展示实现用户在填写完个人信息并且进行教师验证后即可在底部导航栏中切换到课表界面。如图4-26所示:图4-26课表管理界面教师通过点击想要添加课表的日期,然后点击右上角的加号按钮进行对课程的添加,课程信息在添加之后就会显示到当日日期的课表列表上。课表信息添加如图4-27所示:图4-27课程添加视图当用户填写完课程信息并点击确定时就会把课程信息插入并显示到外面的课表列表上。但是需要教师才有课表添加的权限,不然的话会返回提示信息显示权限不够。教师要对课程信息进行修改或者删除,只需要点击列表上的信息即可弹出相应的选项来进行课程管理。如图4-28所示:图4-28课程管理视图教师点击课程信息时会弹出标题为“课程信息”的提示框,其中有四个按钮,分别时考勤,考勤查询,修改和删除。教师想要对课程信息修改即可点击修改按钮对象相关的课程信息进行修改然后提交数据即可,点击删除按钮即可实现对该课程的删除。用户点击底部导航栏的第二个界面就是课表查询界面,如图4-29所示:图4-29课表查询界面用户在搜索栏中输入课程名字的关键字即可自动检索数据库中的具有相同关键字的课程并显示其信息到列表上。其中相比较于课表界面上的课程信息更多了个课程日期,这样用户就更能直观地知道该课程在哪一天,然后在日期表上点击相应的日期即可找到该课程。4.2.4考勤管理及信息展示实现考勤正常按照流程应该是教师开始签到→学生开始签到→教师结束签到。在签到的时候时需要判定教师是否开始签到,是则可以进行考勤,不是则显示不在考勤时间。所以我按照该流程设计了考勤查询的界面。考勤界面如图4-30所示:图4-30考勤界面教师通过点击右上角的加号按钮进行开始签到,点击减号按钮结束签到。但同样的,开始签到也需要教师才能进行操作,普通用户也就是学生是没有权限进行操作的。教师在点击加号按钮后会显示一个签到码,学生需要在签到界面中输入签到码进行签到或者点击请假。这样学生的考勤信息就分别被列到签到列表和请假列表里。考勤界面和签到码界面如图4-31、4-32所示:图4-31考勤界面图4-32签到码界面教师可以通过点击用户在考勤列表里的信息进行修改考勤信息。比如点击签到列表下的“曾小贤”会显示是否要更改考勤状态,反之请假列表也是一样。修改考勤如图4-33所示:图4-33修改考勤图4.2.5管理员操作实现通过点击注册界面的管理员按钮并输入管理员秘密就可以登入管理员界面。管理员拥有全部的权限,即在教师权限的基础上增加。管理员界面和用户管理界面如图4-34、4-35所示:图4-34管理员界面图4-35用户管理界面在管理员界面中可以看到用户的账号、密码和是否是教师。如果该账号已经进行了教师验证就会把教师二字添加到该账号信息的最后面,如果没有进行教师验证则显示账号和密码。管理员也可以通过对列表信息点击进行用户管理,对用户账号删除、修改密码或者修改教师验证状态(修改权限)。管理员的课表查询界面和前面提到的课表查询界面并无二样。通过课表按钮进行界面的跳转,进入到管理员-课程表界面。这里的课表界面与前面提到的课表界面也是大相径庭,管理员可以行使教师的权限来进行对课表的增删查改。有不同的地方在于考勤界面和考勤查询界面的显示不同。考勤界面和考勤查询界面如图4-36、4-37所示:图4-36考勤界面图4-37考勤查询界面管理员的考勤界面是对用户的补签,可以看到该节课所有用户的考勤状态,未签到即可点击列表信息进行对用户签到或者请假,但是已经签到的用户是操作不了的。而在考勤查询界面则会只显示已经有考勤信息的用户,然后也可以通过点击列表信息进行对考勤状态的修改。4.3数据库操作实现这是我所用到的关于数据库的类。其中有user(用户)表、course(课程)表、configation(个人资料)表、sex(性别)表、time(时间)表、Attendance(考勤)表和Account(教师验证)表。使用的具体类如图4-38所示:图4-38具体类每个数据表都会由一个mode类和Datahelper类控制,例如User类和UserDatahelper类。User类是一个模型类,它代表了一个用户的数据结构,用来封装用户数据,创建和表示用户对象的。UserDataHelper类是个辅助类,是数据库操作的接口,用来处理与用户数据库交互的逻辑。它们共同工作,以确保用户数据的安全性和一致性。为了实现数据库操作,需要创建数据库连接,再建立一个sql对象用于执行SQL语句。数据表建立如图4-39所示:图4-39数据表建立首先创建数据库databases,然后通过onCreate方法进行user表的创建。数据表建立后就可以对其进行数据操作,添加、查询、修改和删除。完成提交数据库操作后关闭sql和数据库连接。增删查改操作如图4-40所示:图4-40增删查改其他数据表操作所用到的代码逻辑也都大相径庭,所以这里也就不再进行说明。4.4本章小结在本章节中详细介绍了系统的具体实现过程,其中包括后端实现、前端实现和数据库操作实现。并且成功实现了用户登陆注册、个人账户管理、课程管理和签到管理功能,并通过前端界面提供了友好的用户交互体验。第五章系统测试本科毕业设计(论文)系统测试系统测试[10]是软件最后交付的重要质量保证步骤。其是在软件开发的生命周期中,对整个软件体系进行的全面性评估,是为了确保系统是否符合既定的需求和标准,以及是否能在实际运行中能够展现出预期的功能、性能和可靠性。简单来说,测试就是探查该软件是否有什么“暗病”。测试要求如图5-1所示:图5-1测试要求5.1功能测试功能测试是系统测试的核心,主要验证系统的功能是否正确地、成功地实现,找出需求不同的地方,提出更加完善的方案。软件测试方法主要分为三大类,白盒测试、黑盒测试和灰盒测试。黑盒测试:是将软件视为一个“黑盒”,测试人员不需要关系内部具体实现,也就是不需要了解内部的逻辑结构,而是直接通过运行测试软件是否能够实现相应的功能。即通过输入不同的测试数据来观察输出,来验证功能是否能按照预期工作。这测试方法侧重于软件的端到端行为,主要确保软件能满足用户需求。白盒测试:这个则与黑盒测试相反,测试人员需要了解软件的内部工作原理,比如后端代码结构、算法和内部的数据流。通过检查代码覆盖率、分支执行等情况,该方法主要确保软件的内部逻辑正确,常用于开发过程中的单元测试和集成测试。灰盒测试:灰盒则结合了白盒和黑盒测试的特点。测试人员需要关注软件的功能性,也要保证内部的逻辑和结构正常。该方法一般在软件的测试阶段使用,是为了保证软件在实际使用中表现能够符合预期,也没有内部的代码错误。这里采用黑盒测试方法,测试重点是系统的输入和输出,以及它们之间的关系。功能测试表如表5-1所示。表5-1功能测试表项目名称基于Java的课程签到APP测试环境硬件:手机一部,PC机一台操作系统:window1064位Android10.0版本软件:AndroidStudio作者李安测试时间2024.3.25测试编号测试对象测试步骤预期结果实际结果1用户注册新用户产生新用户一致2用户输入账号和密码进入系统一致3用户选择“查询课表界面”跳转到“查询课表”界面一致4用户选择“我”界面跳转到“我”界面一致5用户选择“课表”界面跳转到“课表”界面一致6用户填写个人信息后返回“我”界面“我”界面显示“你好,+姓名”一致7用户修改密码返回修改成功并跳转到登陆界面一致8用户切换账号显示“你好,+相应账号的姓名”一致9用户查询课表显示相应的课表一致10用户输入签到码签到显示签到成功一致11用户教师未开始签到点击签到显示不在签到时间一致12用户进行教师验证显示验证成功一致13教师进行课程添加列表显示添加的课程信息一致14教师进行课程修改列表显示修改后的课程信息一致15教师进行课程删除课程信息消失一致16教师点击开始签到显示签到码一致17教师点击结束签到显示签到失败一致18教师修改考勤学生的状态考勤学生状态被修改一致19管理员查询所有用户显示所有用户信息一致20管理员删除或者修改用户账号修改或删除成功一致21管理员修改用户权限显示修改成功一致22管理员管理课程信息显示管理成功一致23管理员查询用户指定课程签到信息显示成功一致24管理员给用户进行补签显示已签到一致25管理员给用户修改签到信息显示修改成功一致从上表可以看到,该系统分别针对用户、教师、管理员的不同功能进行了测试。测试结果显示,所有测试用例都达到了预期效果,也就是各项功能的的一致性得到了保证。5.2本章小结该系统已经实现了所需的基本功能,并在限定范围内进行了进一步的完善。目前系统的运行状况良好,但仍有一些方面需要进行改进。例如实现联网功能、后台操作系统等。结论通过历时数月的研究与实践,终于成功设计与实现了一个基于Java的课程签到App。该系统成功实现了用户登陆注册、账号管理、课程管理和签到管理功能,并采用SQLite数据库进行数据存储。同时进行了一些测试保证系统能正常运行,给用户提供了一个较为友好的操作环境。与传统的字纸签到相比,该系统可以自动进行数据的录入和数据的展示,减轻了人工工作的负担,降低了错误率。同时该系统集成了用户登陆、签到管理、账户管理和课程管理等多个功能模块,实现了信息的集中管理和高效运作。在本次毕业设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论