




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计〔论文〕题目:基于安卓平台的签到管理系统设计学生姓名:学号:专业班级:指导教师:2021年6月15日基于安卓平台的签到管理系统设计摘要同中小学相比,由于教学模式的改变,高校师生之间交流时间有限,熟悉程度不够。为提升教学质量,本文设计实现一款基于安卓平台的签到管理系统,通过系统客户端与效劳器通信,到达省时省力完成考勤的目的。本文系统的介绍了基于安卓平台的签到管理系统的需求分析,系统功能设计,系统数据库设计和系统测试与分析的各个过程。本次签到系统的总体设计思路是,学生使用教务系统账号,利用安卓进行系统登录,并在对应的课程上课前进行签到,签到信息通过网络传输给后台效劳器,由效劳器将对应的签到信息写入数据库中;教师使用自己的工号登录系统,查询对应课程的相关出勤信息,以列表的形式呈现。本签到管理系统的开发采用了市面上流行的Android移动开发技术,效劳器端采用MySQL数据库技术。系统的实现那么采用了Eclipse作为开发工具,完成了系统的代码设计。关键词:安卓;签到;MySQL;Eclipse
SigninmanagementsystemdesignbasedonandroidAbstractComparedwithprimaryandsecondaryschools,duetothechangeofteachingmode,theexchangetimebetweenteachersandstudentsislimitedandthedegreeoffamiliarityisnotenough.Toimprovethequalityofteaching,thisthesisdesignsandimplementsacheck-inmanagementsystembasedonAndroidplatform.Thesystemcancompletetheattendanceusinglesstimeandenergythroughthecommunicationbetweenthesystemclientandtheserver.Thisthesissystematicallyintroducesfouraspectsofthecheck-inmanagementsystembasedonAndroidplatform,includingtherequirementsanalysis,systemfunctiondesign,systemdatabasedesignandsystemtestingandanalysis.Theoveralldesignofthesign-insystemisthatstudentsloginthesystemusingtheireducationalsystemaccountonAndroidmobilephone,andsigninofthecorrespondingcoursebeforetheschoolattendance.Thenthesigninformationistransmittedthroughthenetworktothebackgroundserver,andtheserverwritesthecorrespondinginformationintothedatabase.Teachersusetheirownnumbertologinthesystemandquerythecorrespondingcourseattendanceinformationintheformofalist.Theexploitationofthischeck-inmanagementsystemusesthepopularAndroidmobileexploitationtechnology.TheserverusestheMySQLdatabasetechnology.Systemimplement-ationusestheEclipseasadevelopmenttooltocompletethesystemcodedesign.Keywords:Android;Signin;MySQL;Eclipse
目录第1章绪论 11.1研究背景 11.2国内外研究现状 11.3论文结构 1第2章开发工具概述 22.1Android概述 22.1.1Android体系结构 22.1.2Android组件 32.2MySQL概述 42.3Android开发环境搭建 42.4本章小结 4第3章系统需求分析 63.1可行性分析 63.2需求分析 63.2.1功能需求分析 63.2.2界面需求分析 73.2.3性能需求分析 73.3本章小结 7第4章系统设计 84.1系统总体架构 84.2功能模块设计 84.3数据库设计 114.3.1学生信息表 114.3.2教师信息表 124.3.3课程信息表 124.3.4签到记录表 134.4本章小结 13第5章系统实现 145.1效劳器端功能实现 145.2客户端功能实现 145.2.1登录功能实现 145.2.2课表功能实现 185.2.3签到功能实现 215.2.4考勤统计实现 215.3本章小结 23第6章系统测试与分析 246.1系统测试流程与原那么 246.1.1系统测试流程 246.1.2系统测试原那么 246.2测试结果分析 256.2.1登录功能测试结果分析 256.2.2签到功能测试结果分析 256.3本章小结 26致谢 27参考文献 28第1章绪论1.1研究背景 2021年全球智能销量直线上升,保持着快速增长的势头,移动通信在不断开展中愈加成熟。在移动通信领域,Google公司的Android操作系统和Apple公司的IOS操作系统占据了市场主要份额。与IOS相比,Android操作系统凭借其包容的开放平台收到了广阔消费者的喜爱。 随着科技得不断开展,智能价格越来越亲民化。著名的国产机品牌如小米、华为、酷派等纷纷推出千元机,使得在校大学生能够轻易拥有一部高性价比的Android。目前,高校在针对学生课堂考勤方面存在着许多问题。在高校中,一位老师可能需要给多个不同的班级上课,也可能一次性给很大的学生群体上课,老师与学生之间处理课堂之外根本没有任何交流,课堂教学时间弥足珍贵。传统的点名考勤费时费力,占用了大量珍贵的的课堂教学时间,考勤效率大打折扣[[]葛会会.基于Android蓝牙考勤系统的设计与实现[D].东华理工大学,2021.],同时[]葛会会.基于Android蓝牙考勤系统的设计与实现[D].东华理工大学,2021.1.2国内外研究现状 目前市面上有不少基于移动终端开发的签到软件,例如钉钉、叮咚签到等,但是这些软件根本都是针对办公通讯的,不适用于高校签到考勤,到目前为止,市场上还没有一款专门针对大学生课堂考勤的软件。1.3论文结构 本文介绍了一个基于安卓平台的签到管理系统。本文结构如下: 第1章绪论简单介绍了课题任务的研究背景、国内外研究现状以及需要完成的目标。 第2章介绍了本系统开发需要用到的技术,包括安卓应用开发技术和数据库技术。 第3章对本系统进行了需求分析,包括可行性分析和需求分析。 第4章根据第3章的需求分析对系统进行了设计,包括系统架构设计、各功能模块的设计以及数据库的设计。 第5章讲述了如何实现系统的各个功能模块。 第6章讲述了对系统的测试,提供了测试方法、流程及测试的结果。第2章开发工具概述2.1Android概述2.1.1Android体系结构Android[[]邓凡平.深入理解Android[M].机械工业出版社,2021.][[]〔韩〕金泰延,〔韩〕宋亨周,〔韩〕朴知勋,等.Android架构揭秘[M].人民邮电出版社,2021.][[]ChinE,FeltAP,GreenwoodK,etal.Analyzinginter-applicationcommunicationinAndroid[C].Proceedingsofthe9thinternationalconferenceonMobilesystems,applications,andservices.ACM,2021:239-252.][]邓凡平.深入理解Android[M].机械工业出版社,2021.[]〔韩〕金泰延,〔韩〕宋亨周,〔韩〕朴知勋,等.Android架构揭秘[M].人民邮电出版社,2021.[]ChinE,FeltAP,GreenwoodK,etal.Analyzinginter-applicationcommunicationinAndroid[C].Proceedingsofthe9thinternationalconferenceonMobilesystems,applications,andservices.ACM,2021:239-252.Android由四层体系结构组成,这四层结构分别是:应用层〔Application〕、应用框架层〔ApplicationFramework〕、系统运行库层〔Libraries〕以及Linux内核层〔LinuxKernel〕[[]朱长江,杨一平.Android操作系统的平安机制研究[J].电脑知识与技术[]朱长江,杨一平.Android操作系统的平安机制研究[J].电脑知识与技术,2021,(25):5628-5629.图2-1Android的体系结构〔1〕应用层〔Application〕应用层是用来用户交互的。在Android应用中,应用层是用户能够看见的,用户可以对其进行操作。〔2〕应用框架层〔ApplicationFramework〕Android应用程序的开发是基于框架和组件的,开发人员可以使用Android系统API以及android应用框架中的各个组件。〔3〕系统运行库层〔Libraries〕Android应用程序框架之下是一套C/C++函数库,它们效劳于Android应用程序组件,其功能通过组件间接提供应开发者[[][]李杨,冯刚,李亮,罗拥华.基于Android的多媒体应用开发与研究[J].计算机与现代化,2021,(04):149-152.〔4〕Linux内核层〔LinuxKernel〕Android的核心系统效劳依赖于Linux2.6内核,操作系统为Android提供的效劳包括:1〕平安性(Security)。2〕内存管理(MemoryManagement)3〕进程管理(ProcessManagement)4〕网络堆栈(NetworkStack)5〕驱动程序模型(DriverModel)2.1.2Android组件Android有四大组件,分别是:Activity、Service、BroadcastReciever、ContentProvider。〔1〕ActivityActivity是展现给用户的界面。应用程序需要能够和用户交互,这就需要一个可供用户操作的界面,在Android应用程序中,Activity就是用来实现该功能的。Activity一般是由很多组件构成的,例如TextView、Button、EditText等。Android提供了丰富的API,在开发应用时,开发人员只需要调用响应的函数就能完成相应的功能。〔2〕ServiceService是运行在程序后台的,用户是看不到的。与JavaWeb中的Service相似,Android中的Service和用户界面也是分开的,Service用来处理Activity的一些操作。例如当我们退出微信时依然能够接收到消息,Service此时一直在后台运行着,但是用户是看不到的。〔3〕BroadcastRecieverBroadcastReciever翻译成中文是播送接收器的意思。播送接收器要想工作首先得有播送消息,有了播送消息后才能接收。播送接收器是为了方便开发人员准备的,例如魔偶个工程需要在完成某个操作后让闹钟响,此时开发人员可在该操作完成后发出一个播送消息,闹钟接收到以后就会响。〔4〕ContentProviderContentProvider在Android中起到存储数据的作用。ContentProvider能够实现在多个应用间传递数据,例如QQ能够访问联系人,就是利用了ContentProvider来实现的。2.2MySQL概述 MySQL[[]孙辉.MySQL查询优化的研究和改良[D].华中科技大学,2007.]是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有本钱低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库[[]孙辉.MySQL查询优化的研究和改良[D].华中科技大学,2007.[]张杰.Android平台EPUB电子书阅读器的设计与实现[D].南京大学,2021.2.3Android开发环境搭建 常用的Android开发平台有AndroidStudio和Eclipse+ADT两种,本系统使用第二种方式进行开发。其中,Eclipse版本为3.9.2,ADT版本为ADT-23.0.7,编程语言使用Java语言,编译环境为jdk7。〔1〕下载安装JDK〔2〕配置JDK的变量环境〔3〕下载安装EclipseEclipse的版本有多个,本系统采用EclipseIDEforJavaEEDevelopers这个版本。〔4〕下载安装AndroidSDK〔5〕安装ADT插件2.4本章小结 本章主要介绍了Android应用开发过程中需要用到的一些工具。首先讲述了Android平台的一些相关知识,接着讲述了开发过程中需要用到的数据库MySQL,最后讲述了如何搭建一个完整的Android开发环境。搭建好开发环境以后,接下来我们将讨论如何利用该平台完本钱系统。第3章系统需求分析3.1可行性分析随着科技的高速开展,智能已经成为了大学生必不可少的工具,智能的广泛使用以及互联网的无处不在,打破了人们交往,信息传输的时空限制,让资源、信息随处可取。本文基于安卓平台开发的签到管理系统能够轻松的实现课堂签到,考勤统计,有效地提高了课堂考勤的工作效率。系统客户端采用安卓开发技术,效劳端采用Servlet技术实现,数据层采用MySQL管理数据。安卓系统应用是采用Java语言开发的,具备一定Java根底的开发人员可以开发相关的安卓应用,并且由于安卓平台的开源性,很多功能对应的实现代码都有现成的,代码的可重用度非常高,提高了程序开发的效率。Servlet运行于支持Java的应用效劳器中[[]李凌,代如刚.基于Android系统的iLibrary图书馆应用——图书馆生态系统中移动图书馆应用初探[J].图书馆杂志,2021,(01):61-65.[]李凌,代如刚.基于Android系统的iLibrary图书馆应用——图书馆生态系统中移动图书馆应用初探[J].图书馆杂志,2021,(01):61-65.从可操作性方面来说,本系统界面友好,容易操作,适用于所有会使用安卓的学生以及教师。3.2需求分析3.2.1功能需求分析通过签到管理系统,用户可以查看本学期的课程表。学生可以在对应的课程中进行签到操作,同时还可以查看自己该课程的签到记录;教师可以查看学生每周出勤的情况统计以及每个学生的全部出勤记录。本系统是面向学生和教师的。学生需使用学号和密码进行登录,教师需使用工号和密码进行登录。学生签到时,系统会根据学生签到的时间给予不同的响应,学生对每一节课只能签到一次,以免重复。系统对学生的签到时间是有要求的,学生只能在该课程开始前十分钟到该课程开始后十分钟之内的时间段内进行签到,课程开始前十分钟到上课为正常签到,课程开始到上课十分钟为迟到,其余时间不能进行签到。系统在统计学生出勤情况时,会根据学生的签到时间来判断签到状态。签到状态可分为:正常签到、迟到和旷课三种。正常签到和迟到只需读取签到状态即可,旷课需判断学生有无签到记录。3.2.2界面需求分析 系统界面是用来和用户交互的,系统界面的好坏直接影响用户的使用体验,因此有好的用户界面设计显得非常有必要。目前,界面风格有着向简洁开展的趋势,界面的布局合理、色彩搭配协调决定了界面的美观。为方便不同身份的用户使用系统,本系统将不同用户的功能分别放置于不同的界面。〔1〕学生客户端学生客户端界面包含所有适合学生完成的功能,包括:登录、课程表、个人信息、课程信息、签到记录等。〔2〕教师客户端相比于学生客户端,教师客户端实现了更多的功能界面,例如:查看每周学生出勤情况统计页面、每个学生的出勤记录等。3.2.3性能需求分析 评价一个系统的质量除了看其是否满足用户的功能需求外,系统的性能也有着重大关系,具体表达在:系统的响应时间、并发性、稳定性以及平安性等。系统性能好坏直接影响用户对软件的体验效果。〔1〕并发性。学生在进行签到时,有可能会出现多个学生同时访问系统的情况,这时需要系统能够并发处理多个用户请求,防止效劳器崩溃。〔2〕稳定性。本系统能够提供学生查看课表的功能,因此需要做到用户可随时随地使用系统,所以系统需要有非常强的稳定性。〔3〕平安性。目前系统对平安性方面没有太高的要求。3.3本章小结 本章主要通过对目前课堂考勤现状的分析,分析明确了基于安卓平台的签到管理系统的需求目标,从用户的角度,详细分析了系统的功能、界面、性能需求。这些工作为下一步系统设计工作提供了有力的支持。第4章系统设计经过前面的需求分析,我们已经明白了本文需要实现完成什么功能,而在设计阶段的工作,就是考虑如何实现这些功能,也就是考虑整个系统是由哪些模块组成以及这些模块之间的相互关系。系统设计时,采用由上到下的原那么进行工作。首先设计出系统的总体架构,接着一层一层深入设计,完成每个功能模块。系统总体架构的设计是在系统需求分析的前提下,将整个系统划分成各个子系统,合理安排各方面相关事宜的整个过程。包括数据的存储设计、软硬件设施的配置以及整个系统实现的规划。4.1系统总体架构基于安卓的签到管理系统充分利用移动互联网的优势,实现课堂考勤工作的网络化,使原本繁琐、低效的课堂考勤变得快捷高效,很大程度上提高了课堂教学效率。系统的总体架构如下图。整个系统由三层体系结构构成,分别为表示层〔用户界面层〕,业务逻辑层和数据访问层〔持久层〕。如下图:〔1〕表示层〔用户界面层〕表示层为用户提供交互操作界面,由一系列与用户交互的界面组成。本系统针对不同的用户类型提供了不同的用户界面。〔2〕业务逻辑层业务逻辑层在是三层架构中最重要的一层,处于表示层和数据访问层中间,在数据交换中起到了承上启下的作用,系统所提供的全部功能都在这一层实现。〔3〕数据访问层〔持久层〕数据访问层主要负责数据库的访问[[]钟萍,安占峰,温敬朋.基于Android平台的图书效劳系统设计[J].中国现代教育装备,2021,(15):79-81.[]钟萍,安占峰,温敬朋.基于Android平台的图书效劳系统设计[J].中国现代教育装备,2021,(15):79-81.4.2功能模块设计〔1〕登录模块 用户输入用户名、密码和用户类型后,通过连接网络将用户名、密码以及用户类型发送到效劳器,效劳器根据用户类型检索对应的数据库中的用户名和密码,如果匹配成功,那么把效劳器端的数据通过网络传输给客户端,否那么返回错误提示信息给客户端。具体的实现流程如图4-1所示。图4-1登录流程框图〔2〕获取课表模块用户首次登陆时,系统通过网络将用户名和用户类型发送到效劳器,效劳器根据用户类型和用户名检索对应的课程表。不同的用户类型在检索课程表时使用的检索方式也不同,当用户类型为学生时,需从选课表中检索studentId与用户名匹配的课程,当用户类型为教师时,那么需从课程表中检索teacherId与用户名匹配的课程。用户登陆以后每次翻开客户端时,系统都会自动联网从效劳器端更新课程信息。具体的实现流程如图4-2所示。〔3〕签到模块进入系统后,学生用户可以对课程进行签到操作。学生点击签到按钮后,系统效劳器端应该根据签到时间来判断学生的签到状态。操作完成后系统将结果显示在签到信息界面。具体的实现流程如图4-3所示。〔4〕查看签到记录模块 学生可通过该模块查看自己的签到记录,教师可通过该模块查看所有学生的签到记录。学生客户端通过点击按钮获取对应课程的签到记录,当用户点击按钮后,学生客户端将课程Id和学号发送给效劳器,效劳器查询对应的签到记录,最后返回给客户端展示出来;教师客户端首先通过效劳器获取对应的选课学生名单,然后再从效劳器获取对应学生的签到记录。图4-2获取课表流程图图4-3签到流程图〔5〕统计分析模块 通过统计分析模块实现教师用户统计每节课的学生出勤情况以及每个学生总的出勤记录。教师客户端在课程详情页面需展示每节课的学生出勤统计,包括每一节课有多少学生正常上课、多少学生迟到以及多少学生旷课,并且还可统计对应的学生名单。4.3数据库设计4.3.1学生信息表学生表〔student_info〕的属性有:学号,姓名,密码,性别,生日,和邮箱7个属性字段。学生通过客户端登录系统时,通过学号和密码来查询学生表,用于验证学生的登录信息,并将请求的内容通过Json返回到客户端,实现登录、查询、签到等功能。学生信息表如4-1所示。表4-1学生信息表字段名称字段属性字段类型字段长度是否主键是否允许为空studentId学号int11是否name姓名varchar20否否password密码varchar20否否gender性别char2否是birthdate生日date0否是phonechar11否是email邮箱varchar20否是4.3.2教师信息表教师表〔teacher_info〕的属性有:工号,姓名,密码,性别,生日,和邮箱7个属性字段。教师通过客户端登录系统时,通过工号和密码来查询教师表,用于验证教师的登录信息,并将请求的内容通过Json返回到客户端,实现登录、查询、统计等功能。教师信息表如表4-2所示。表4-2教师信息表字段名称字段属性字段类型字段长度是否主键是否允许为空teacherId工号int11是否name姓名varchar20否否password密码varchar20否否续表4-2字段名称字段属性字段类型字段长度是否主键是否允许为空gender性别char2否是birthdate生日date0否是phonechar11否是email邮箱varchar20否是4.3.3课程信息表课程信息表〔course_info〕的属性有:课程Id,课程名称,教室,教师工号,上课时间,开始周数,结束周数,开始节数,结束节数和课程类型10个属性字段。其中课程类型分为三种,分别为:全部、单周和双周。课程信息如表4-3所示。表4-3课程信息表字段名称字段属性字段类型字段长度是否主键是否允许为空courseId课程Idint11是否courseName课程名称varchar20否否classRoom教室varchar50否否teacherId教师工号int20否否dayOfWeek上课时间int11否否beginWeek开始周数int11否否endWeek结束周数int11否否beginIndex开始节数int11否否endIndex结束节数int11否否courseType课程类型int11否否4.3.4签到记录表签到记录表〔sign_info〕有7个属性,分别为:学号,课程Id,签到周数,签到日期,签到节数,签到时间,签到状态。其中,签到日期表示的是周几签到,签到时间那么表示签到时的具体日期时间。查询该表可获得每个学生每节课的出勤情况。签到记录表如表4-4所示。表4-4签到记录表字段名称字段属性字段类型字段长度是否主键是否允许为空stuId学号int11是否couId课程Idint11是否signWeek签到周数int11否否signDay签到日期int11否否signindex签到节数int11否否signTime签到时间datetime0是否signState签到状态int11否否4.4本章小结 本章讲述了整个系统的设计过程,包括系统的总体结构,各个功能模块的设计以及数据库设计。系统设计完成后,接下来我们将依据系统设计目标实现系统。第5章系统实现5.1效劳器端功能实现 效劳器端各个功能模块框架大体相同,在本文中以签到模块为例进行论述。效劳器端针对每一个功能模块都有两个类,一个是Servlet响应请求,另一个是数据库Manager。例如签到模块对应的两个类分别为SignInManager和SignInServlet。 效劳器端负责响应客户端的请求。客户端需要访问效劳器获取数据时,会通过post方式发出请求。在签到模块中,当学生用户点击签到按钮时,Android客户端向效劳器发送post请求,效劳器接收到请求后,根据url响应对应的请求。签到模块响应后缀为sign的请求,这个在效劳器Servlet中设定,代码如下: @WebServlet("/sign")publicclassSignInServletextendsServlet{}效劳器接收到请求后,处理对应的操作,具体过程如下: protectedvoiddoPost(ServletRequestrequest, ServletResponseresponse)throwsServletException,IOException{ response.setContentType("text/html;charset=UTF-8"); DataOutputStreamdos=newDataOutputStream(response.getOutputStream()); StringstudentId=request.getParameter("studentId"); StringcourseId=request.getParameter("courseId"); Stringresult=doSign(studentId,courseId); dos.writeUTF(result); } 其中,studentId和courseId是从客户端接收到的数据。doSign就是效劳器需要进行的操作,主要就是操作数据库,包括查询,新增等。为了不让代码显得很乱,所有操作数据库的代码全部都封装在SignManager中。5.2客户端功能实现5.2.1登录功能实现登录界面采用线性布局实现,按照水平方向,本系统将登录界面分为三个局部,最顶端为文本框控件,显示“登录〞,中间是登录信息局部,包含用户身份选择下拉列表、用户名输入文本框和用户密码输入文本框,最后是登录按钮。完成页面布局后,需要对页面的控件进行绑定事件监听,其中用户身份选择文本框点击后,需要显示一个下拉列表,用户可点击对应的身份进行选择,登录按钮点击后需要获取用户身份、用户名和密码文本框中的内容,系统将这些数据发送到效劳器,完成用户的登录验证。因为系统需要访问网络,因此需要有访问网络的权限,在AndroidMainfest.xml中添加访问网络的权限。<uses-permissionandroid:name="android.permission.INTERNET"/>用户在登录时,将获取的身份、用户名和密码发送给url为“://:8080/signature_server/login/〞的网址。protectedvoidlogin(finalStringusername,finalStringpassword,finalStringserverUrl){ newThread(newRunnable(){ @Override publicvoidrun(){ Clientclient=newDefaultClient(); PostPost=newPost(serverUrl); List<NameValuePair>params=newArrayList<NameValuePair>(); params.add(newBasicNameValuePair("username",username)); params.add(newBasicNameValuePair("password",password)); try{ Responseresponse=client.execute(Post); if(response.getStatusLine().getStatusCode()==200){ Entityentity=response.getEntity(); StringentityString=EntityUtils.toString(entity); StringjsonString=entityString.substring(entityString .indexOf("{")); JSONObjectjson=newJSONObject(jsonString); sendMessage(MSG_LOGIN_RESULT,json); } }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(JSONExceptione){ e.printStackTrace(); } } }).start(); }效劳器接收到客户端的请求数据后,根据接收到的数据来查询对应的数据库。如果用户名和密码都正确,给客户端返回0;如果与该用户名匹配密码不正确返回1;如果没有找到对应的用户名返回2;遇到未知错误那么返回-1。privateStringdoLogin(Stringusername,Stringpassword){ Stringsql="select*from"+StudentLoginManager.TABLE_NAME +"where"+StudentLoginManager.COLUMN_USERID+"="+"'" +username+"'"; System.out.println("url="+sql); StudentLoginManagerslm=newStudentLoginManager(); ResultSetrst=slm.query(sql); try{ rst.next(); Stringpwd=rst.getString(StudentLoginManager.COLUMN_PASSWORD); if(!password.equals(pwd)){ resultMap.put("result_code",1); }else{ resultMap.put("result_code",0); resultMap.put("userId", 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)); resultMap.put("phone", rst.getString(StudentLoginManager.COLUMN_PHONE)); resultMap.put("email", rst.getString(StudentLoginManager.COLUMN_EMAIL)); } }catch(SQLExceptione){ resultMap.put("result_code",2); e.printStackTrace(); } return(newGson()).toJson(resultMap); }客户端接收到效劳器返回的数据后,根据返回的数据来进行相应的操作。如果返回的是0,系统跳转到主页面;如果返回的是1,使用Toast提示用户名或密码错误;如果返回的是2,使用Toast提示用户名不存在;如果返回的是1,使用Toast提示遇到了未知错误。privatevoidhandleLoginResult(JSONObjectjson){ intresultCode=-1; try{ resultCode=json.getInt("result_code"); }catch(JSONExceptione){ e.printStackTrace(); } switch(resultCode){ case0: onLoginSuccess(json); break; case1: show("用户名或密码错误!"); break; case2: show("用户名或密码错误!"); break; case-1: show("用户名或密码错误!"); break; default: show("登陆失败!"); break; } }通过以上操作,客户端的登录功能就完全实现了。5.2.2课表功能实现作为一款课堂签到管理系统,课程表功能是必不可少的,而且友好的课程表界面非常重要。借鉴目前市面很火的超级课程表app,本系统实现了如图5-1所示的课程表界面。图5-1课程表界面界面整体采用线性布局实现,从上到下分为两局部,分别是星期导航栏和课程格子,其中课程格子界面嵌套一个水平线性布局,左侧为上课节数索引,采用ListView实现,右侧是一个帧布局,底部的分隔线是采用GridView实现的,顶部课程按钮是自定义的组件。其代码为:publicclassCourseTableLayoutextendsViewGroup{ privateintitemCount; privateContextmContext; privateList<CourseBean>courseBeans; publicCourseTableLayout(Contextcontext){ this(context,null); } publicCourseTableLayout(Contextcontext,AttributeSetattrs){ this(context,attrs,0); } publicCourseTableLayout(Contextcontext,AttributeSetattrs,intdefStyleAttr){ super(context,attrs,defStyleAttr); this.mContext=context; courseBeans=newArrayList<>(); } @Override protectedvoidonLayout(booleanc,intlt,inttp,intrt,intbm){ intitemHeight=getMeasuredHeight()/itemCount; intitemWidth=getMeasuredWidth()/7;finalintcount=getChildCount(); for(inti=0;i<count;i++){ Viewchild=getChildAt(i); CourseBeancourseBean=courseBeans.get(i); intchildL=courseBean.getDayOfWeek()*itemWidth; intchildT=(courseBean.getBeginIndex()-1)*itemHeight; intchildR=(courseBean.getDayOfWeek()+1)*itemWidth; intchildB=courseBean.getEndIndex()*itemHeight; child.layout(childL+2,childT+2,childR-2,childB-3); } } publicvoidaddList(CourseBeancourseBean){ courseBeans.add(courseBean); } @Override publicvoidremoveAllViews(){ super.removeAllViews(); courseBeans.clear(); } publicvoidaddView(Viewchild,finalCourseBeancourseBean){ courseBeans.add(courseBean); super.addView(child); } publicintgetItemCount(){ returnitemCount; } publicvoidsetItemCount(intitemCount){ this.itemCount=itemCount; }}在课程展示时,需要对课程表数据进行处理,提取出当前周的课程信息。该系统在处理课程信息时,首先从效劳器获取对应的课程信息,将它们先写进本地数据库,在需要展示课程表时,从本地数据库获取属于本周的课程信息,然后将这些课程信息展示在课程表中。在提取当前周课程信息时,系统需先查找出全部开始周数小于等于当前周并且结束周大于等于当前周的课程,接着还需根据课程分类进一步筛选。在本系统中,课程分为三类,分别是:奇数周、偶数周和全部周。系统经过第一轮筛选后,还需判断当前周是奇数周还是偶数周,然后根据课程分类再进一步筛选。5.2.3签到功能实现学生可在课程详情页点击签到按钮进行签到。签到时,客户端向效劳器发送签到请求,将学生学号和课程Id发送给效劳器,效劳器根据接收到的数据进行相应的操作后将结果返回给客户端。在本系统中,效劳器会返回一个result_code给客户端,result_code的值为-1时表示发生了未知错误,当result_code值为0时表示正常签到,当result_code值为1时表示已经签过到了,当result_code值为2时表示迟到,当result_code值为3时表示现在不是签到时间,当result_code值为4时表示该课程不在今天。效劳器接收到请求后,首先计算出今天是星期几,第几周,然后根据这些参数判断该课程是否为今天的课程,如果不是直接返回4,如果是今天的课程那么进行下一轮判断。接下来系统会判断当前时间是否为签到时间,本系统中签到时间为上课前10分钟到上课后10分钟,如果当前时间不属于签到时间直接返回3,否那么进行下一轮判断。判断进行到这里,已经确定了现在是可以进行签到操作的,接着该判断该课程是否已经签到过,防止重复签到。判断该课程是否签到过,需要根据学生学号、课程Id、星期几和第几周这几个参数在签到表中查找记录。具体表达为:有签到记录,说明已经签到过了,学生不需再进行签到,此时效劳器返回1给客户端,否那么接下来进行签到操作。签到时系统会根据当前时间判断是否迟到,上课前10分钟签到为正常签到,上课后十分钟签到那么属于迟到。签到成功后,系统会向签到表中写入一条记录,用于统计签到记录。5.2.4考勤统计实现 考勤统计分为学生版和教师版,学生版中用户可通过点击课程详情页面上方的统计按钮查看该课程签到记录,教师版中用户也可通过点击课程详情页面上方的统计按钮查看每个学生的全部签到记录,同时在课程详情页面下方还有一个展示每节课学生签到详情的列表,该列表展示了每节课正常签到人数、迟到人数以及旷课人数,并且点击该列表还可查看具体名单。 当查看某个学生对某个课程签到记录时,用户客户端向效劳器发送查看请求,将学生学号和课程Id发送给效劳器,效劳器根据接收到的学号和课程Id进行查找相对应的签到记录。当效劳器接收到请求时,首先计算该课程到目前为止需要签到几次,然后根据条件查找每一次的签到记录,有记录那么写入对应的签到状态〔正常签到、迟到〕,无记录那么为旷课。查找完成后,效劳器将查找结果放入Map中返回给客户端,客户端将返回的数据处理后计算出正常签到次数、迟到次数和旷课次数,同时将这些签到记录以列表的形式展现出来。for(inti=0;i<json.length();i++){try{ JSONObjectstatistics=newJSONObject(json.getString(i+"")); if(statistics.getString("result").equals("正常签到")){ normalCount++; }elseif(statistics.getString("result").equals("迟到")){ lateCount++; }elseif(statistics.getString("result").equals("未签到")){ truantCount++; } records.add(statistics.getString("result")); }catch(JSONExceptione){ e.printStackTrace(); }}当查看每节课学生签到详情时,用户客户端向效劳器发送查看请求,将课程Id发送给效劳器,效劳器接根据接收到的课程Id查找签到详情。当效劳器接收到请求时,首先根据课程Id查找出一共有多少学生选取了该课程,然后再查找出每一次正常签到人数以及迟到人数,最后用总的人数减去正常签到人数和迟到人数即可得到旷课人数。查找完成后,效劳器将每一节课的查找结果放入Map中返回给客户端,客户端将返回的数据处理后以列表的形式将每一节课的签到详情展示出来。for(inti=0;i<json.length();i++){try{ Map<String,Integer>statisticsMap=newHashMap<>(); JSONObjectstatistics=newJSONObject(json.getString(i+"")); statisticsMap.put("normalCount",statistics.getInt("normalCount")); statisticsMap.put("lateCount",statistics.getInt("lateCount")); statisticsMap.put("truantCount",statistics.getInt("truantCount")); statisticses.add(statisticsMap); }catch(JSONExceptione){ e.printStac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湘潭理工学院《新能源汽车》2023-2024学年第二学期期末试卷
- 山东省安丘市重点名校2025届初三总复习质量调查(一)数学试题试卷含解析
- 江苏省兴化市顾庄区三校2025年初三下学期3月质量检测试题数学试题试卷含解析
- 华侨大学《信息内容安全》2023-2024学年第二学期期末试卷
- 聊城大学东昌学院《中国传统文化与中医》2023-2024学年第一学期期末试卷
- 武汉设计工程学院《BM5D项目管理》2023-2024学年第二学期期末试卷
- 云南省保山市施甸县2025届初三下学期两校期中联考数学试题含解析
- 泉州市晋江市2024-2025学年三年级数学第二学期期末检测试题含解析
- 浙江中医药大学滨江学院《物理化学实验》2023-2024学年第二学期期末试卷
- 江西旅游商贸职业学院《食品微生物检验技术实验》2023-2024学年第二学期期末试卷
- (高清版)DB11∕T1191.3-2024实验室危险化学品安全管理要求 第3部分:科研单位
- 中小学生心理健康教育的研究与实践进展
- 大一劳动教育课
- 种子轮融资合同协议范本
- 湖南省2024年对口升学考试计算机综合真题试卷
- 2025年兴安职业技术学院单招职业技能测试题库新版
- 小学生保险课件
- 7.3 重力(课件)2024-2025学年人教版八年级物理下册
- 2025年河南省高职单招计算机类职业技能测试题库及答案(供参考)
- 大学生美容院创业计划书
- 气管切开拔管指征及护理
评论
0/150
提交评论