基于安卓平台的签到管理系统设计_第1页
基于安卓平台的签到管理系统设计_第2页
基于安卓平台的签到管理系统设计_第3页
基于安卓平台的签到管理系统设计_第4页
基于安卓平台的签到管理系统设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、本 科 毕 业 设 计(论文)题 目:基于安卓平台的签到管理系统设计学生姓名: 学 号:专业班级: 指导教师: 2017年 6月15日基于安卓平台的签到管理系统设计摘 要同中小学相比,由于教学模式的改变,高校师生之间交流时间有限,熟悉程度不够。为提升教学质量,本文设计实现一款基于安卓平台的签到管理系统,通过系统客户端与服务器通信,达到省时省力完成考勤的目的。本文系统的介绍了基于安卓平台的签到管理系统的需求分析,系统功能设计,系统数据库设计和系统测试与分析的各个过程。本次签到系统的总体设计思路是,学生使用教务系统账号,利用安卓手机进行系统登录,并在对应的课程上课前进行签到,签到信息通过网络传输给

2、后台服务器,由服务器将对应的签到信息写入数据库中;教师使用自己的工号登录系统,查询对应课程的相关出勤信息,以列表的形式呈现。本签到管理系统的开发采用了市面上流行的Android移动开发技术,服务器端采用MySQL数据库技术。系统的实现则采用了Eclipse作为开发工具,完成了系统的代码设计。关键词:安卓;签到;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 国内外研究现状11.3 论文结构1第2章 开发工具概述22.1 Android概述22.1.1 Android体系结构22.1.2 Android组件32.2 MySQ

8、L概述42.3 Android开发环境搭建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 考勤

9、统计实现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 研究背景2017年全球智能手机销量直线上升,保持着快速增长的势头,移动通信在不断发展中愈加成熟。在移动通信领域,Google公司的Android操作系统和Apple公司的IOS操作系统占据了市场主要份额。与IOS相比,Android操作系统凭借其包容的开放平台收到了广大消费者的喜爱。随着科技得不断

10、发展,智能手机价格越来越亲民化。著名的国产机品牌如小米、华为、酷派等纷纷推出千元机,使得在校大学生能够轻易拥有一部高性价比的Android手机。目前,高校在针对学生课堂考勤方面存在着许多问题。在高校中,一位老师可能需要给多个不同的班级上课,也可能一次性给很大的学生群体上课,老师与学生之间处理课堂之外基本没有任何交流,课堂教学时间弥足珍贵。传统的点名考勤费时费力,占用了大量珍贵的的课堂教学时间,考勤效率大打折扣 葛会会. 基于Android 蓝牙考勤系统的设计与实现D.东华理工大学,2016.,同时,这种考勤方式准确度不高,有很多学生通过找同学帮忙答到浑水摸鱼。1.2 国内外研究现状目前市面上有

11、不少基于移动终端开发的签到软件,例如钉钉、叮咚签到等,但是这些软件基本都是针对办公通讯的,不适用于高校签到考勤,到目前为止,市场上还没有一款专门针对大学生课堂考勤的软件。1.3 论文结构本文介绍了一个基于安卓平台的签到管理系统。本文结构如下:第1章绪论简单介绍了课题任务的研究背景、国内外研究现状以及需要完成的目标。第2章介绍了本系统开发需要用到的技术,包括安卓应用开发技术和数据库技术。第3章对本系统进行了需求分析,包括可行性分析和需求分析。第4章根据第3章的需求分析对系统进行了设计,包括系统架构设计、各功能模块的设计以及数据库的设计。第5章讲述了如何实现系统的各个功能模块。第6章讲述了对系统的

12、测试,提供了测试方法、流程及测试的结果。第2章 开发工具概述2.1 Android概述2.1.1 Android体系结构Android 邓凡平.深入理解AndroidM.机械工业出版社,2014. (韩)金泰延,(韩)宋亨周,(韩)朴知勋,等.Android架构揭秘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公司和开放手机联盟领导及开发的一种基于Linux的自由及开放源代码的操作系统,主要使用于智能手机和平板电脑。Android平台由操作系统、中间件、用户界面和应用软件组成。Android由四层体系结构组成,这四层结构分别是:应用层(Application)、应用框架层(Application Framework)、系统运行库层(Libraries)以及Linux内核层(Linux Kernel) 朱长江,杨一平. Android操作系统的安全机制研究J. 电脑知识与技术,

14、2013,(25):5628-5629.。这四层结构如图2-1所示。图2-1 Android的体系结构(1)应用层(Application)应用层是用来用户交互的。在Android应用中,应用层是用户能够看见的,用户可以对其进行操作。(2)应用框架层(Application Framework)Android应用程序的开发是基于框架和组件的,开发人员可以使用Android系统API以及android 应用框架中的各个组件。(3)系统运行库层(Libraries)Android应用程序框架之下是一套C/C+函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者 李杨,冯刚,

15、李亮,罗拥华. 基于Android的多媒体应用开发与研究J. 计算机与现代化,2011,(04):149-152.。(4)Linux内核层(Linux Kernel)Android 的核心系统服务依赖于Linux 2.6 内核,操作系统为Android提供的服务包括:1)安全性(Security)。 2)内存管理(Memory Management) 3)进程管理(Process Management) 4)网络堆栈(Network Stack)5)驱动程序模型(Driver Model)2.1.2 Android组件Android有四大组件,分别是:Activity、Service、Broa

16、dcast Reciever、Content Provider。(1)ActivityActivity是展现给用户的界面。应用程序需要能够和用户交互,这就需要一个可供用户操作的界面,在Android应用程序中,Activity就是用来实现该功能的。Activity一般是由很多组件构成的,例如TextView、Button、EditText等。Android提供了丰富的API,在开发应用时,开发人员只需要调用响应的函数就能完成相应的功能。(2)ServiceService是运行在程序后台的,用户是看不到的。与Java Web中的Service相似,Android中的Service和用户界面也是分

17、开的,Service用来处理Activity的一些操作。例如当我们退出微信时依然能够接收到消息,Service此时一直在后台运行着,但是用户是看不到的。(3)Broadcast RecieverBroadcast Reciever翻译成中文是广播接收器的意思。广播接收器要想工作首先得有广播消息,有了广播消息后才能接收。广播接收器是为了方便开发人员准备的,例如魔偶个项目需要在完成某个操作后让闹钟响,此时开发人员可在该操作完成后发出一个广播消息,闹钟接收到以后就会响。(4)Content ProviderContent Provider在Android中起到存储数据的作用。Content Prov

18、ider能够实现在多个应用间传递数据,例如手机QQ能够访问联系人,就是利用了Content Provider来实现的。2.2 MySQL概述MySQL 孙辉. MySQL查询优化的研究和改进D.华中科技大学,2007.是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MyS

19、QL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库 张杰. Android平台EPUB电子书阅读器的设计与实现D.南京大学,2013.。2.3 Android开发环境搭建常用的Android开发平台有Android Studio和Eclipse+ADT两种,本系统使用第二种方式进行开发。其中,Eclipse版本为3.9.2,ADT版本为ADT-23.0.7,编程语言使用Java语言,编译环境为jdk7。(1)下载安装JDK(2)配置JDK的变量环境(3)下载安装EclipseEcl

20、ipse的版本有多个,本系统采用Eclipse IDE for Java EE Developers这个版本。(4)下载安装Android SDK(5)安装ADT插件2.4 本章小结本章主要介绍了Android应用开发过程中需要用到的一些工具。首先讲述了Android平台的一些相关知识,接着讲述了开发过程中需要用到的数据库MySQL,最后讲述了如何搭建一个完整的Android开发环境。搭建好开发环境以后,接下来我们将讨论如何利用该平台完成本系统。第3章 系统需求分析3.1 可行性分析随着科技的高速发展,智能手机已经成为了大学生必不可少的工具,智能手机的广泛使用以及互联网的无处不在,打破了人们交

21、往,信息传输的时空限制,让资源、信息随处可取。本文基于安卓平台开发的签到管理系统能够轻松的实现课堂签到,考勤统计,有效地提高了课堂考勤的工作效率。系统客户端采用安卓开发技术,服务端采用Servlet技术实现,数据层采用MySQL管理数据。安卓系统应用是采用Java语言开发的,具备一定Java基础的开发人员可以开发相关的安卓应用,并且由于安卓平台的开源性,很多功能对应的实现代码都有现成的,代码的可重用度非常高,提高了程序开发的效率。Servlet运行于支持Java的应用服务器中 李凌,代如刚. 基于Android系统的iLibrary图书馆手机应用图书馆生态系统中移动图书馆应用初探J. 图书馆杂

22、志,2013,(01):61-65.,本系统采用tomcat作为应用服务器。从可操作性方面来说,本系统界面友好,容易操作,适用于所有会使用安卓手机的学生以及教师。3.2 需求分析3.2.1 功能需求分析通过签到管理系统,用户可以查看本学期的课程表。学生可以在对应的课程中进行签到操作,同时还可以查看自己该课程的签到记录;教师可以查看学生每周出勤的情况统计以及每个学生的全部出勤记录。本系统是面向学生和教师的。学生需使用学号和密码进行登录,教师需使用工号和密码进行登录。学生签到时,系统会根据学生签到的时间给予不同的响应,学生对每一节课只能签到一次,以免重复。系统对学生的签到时间是有要求的,学生只能在

23、该课程开始前十分钟到该课程开始后十分钟之内的时间段内进行签到,课程开始前十分钟到上课为正常签到,课程开始到上课十分钟为迟到,其余时间不能进行签到。系统在统计学生出勤情况时,会根据学生的签到时间来判断签到状态。签到状态可分为:正常签到、迟到和旷课三种。正常签到和迟到只需读取签到状态即可,旷课需判断学生有无签到记录。3.2.2 界面需求分析系统界面是用来和用户交互的,系统界面的好坏直接影响用户的使用体验,因此有好的用户界面设计显得非常有必要。目前,界面风格有着向简洁发展的趋势,界面的布局合理、色彩搭配协调决定了界面的美观。为方便不同身份的用户使用系统,本系统将不同用户的功能分别放置于不同的界面。(

24、1)学生客户端学生客户端界面包含所有适合学生完成的功能,包括:登录、课程表、个人信息、课程信息、签到记录等。(2)教师客户端相比于学生客户端,教师客户端实现了更多的功能界面,例如:查看每周学生出勤情况统计页面、每个学生的出勤记录等。3.2.3 性能需求分析评价一个系统的质量除了看其是否满足用户的功能需求外,系统的性能也有着重大关系,具体体现在:系统的响应时间、并发性、稳定性以及安全性等。系统性能好坏直接影响用户对软件的体验效果。(1)并发性。学生在进行签到时,有可能会出现多个学生同时访问系统的情况,这时需要系统能够并发处理多个用户请求,防止服务器崩溃。(2)稳定性。本系统能够提供学生查看课表的

25、功能,因此需要做到用户可随时随地使用系统,所以系统需要有非常强的稳定性。(3)安全性。目前系统对安全性方面没有太高的要求。3.3 本章小结本章主要通过对目前课堂考勤现状的分析,分析明确了基于安卓平台的签到管理系统的需求目标,从用户的角度,详细分析了系统的功能、界面、性能需求。这些工作为下一步系统设计工作提供了有力的支持。第4章 系统设计经过前面的需求分析,我们已经明白了本文需要实现完成什么功能,而在设计阶段的工作,就是考虑如何实现这些功能,也就是考虑整个系统是由哪些模块组成以及这些模块之间的相互关系。系统设计时,采用由上到下的原则进行工作。首先设计出系统的总体架构,接着一层一层深入设计,完成每

26、个功能模块。系统总体架构的设计是在系统需求分析的前提下,将整个系统划分成各个子系统,合理安排各方面相关事宜的整个过程。包括数据的存储设计、软硬件设施的配置以及整个系统实现的规划。4.1 系统总体架构基于安卓的签到管理系统充分利用移动互联网的优势,实现课堂考勤工作的网络化,使原本繁琐、低效的课堂考勤变得快捷高效,很大程度上提高了课堂教学效率。系统的总体架构如图所示。整个系统由三层体系结构构成,分别为表示层(用户界面层),业务逻辑层和数据访问层(持久层)。如图所示:(1)表示层(用户界面层)表示层为用户提供交互操作界面,由一系列与用户交互的界面组成。本系统针对不同的用户类型提供了不同的用户界面。(

27、2)业务逻辑层业务逻辑层在是三层架构中最重要的一层,处于表示层和数据访问层中间,在数据交换中起到了承上启下的作用,系统所提供的全部功能都在这一层实现。(3)数据访问层(持久层)数据访问层主要负责数据库的访问 钟萍,安占峰,温敬朋. 基于Android平台的手机图书服务系统设计J. 中国现代教育装备,2014,(15):79-81.,实现与数据库的交互。4.2 功能模块设计(1)登录模块用户输入用户名、密码和用户类型后,通过连接网络将用户名、密码以及用户类型发送到服务器,服务器根据用户类型检索对应的数据库中的用户名和密码,如果匹配成功,则把服务器端的数据通过网络传输给客户端,否则返回错误提示信息

28、给客户端。具体的实现流程如图4-1所示。图4-1 登录流程框图(2)获取课表模块用户首次登陆时,系统通过网络将用户名和用户类型发送到服务器,服务器根据用户类型和用户名检索对应的课程表。不同的用户类型在检索课程表时使用的检索方式也不同,当用户类型为学生时,需从选课表中检索studentId与用户名匹配的课程,当用户类型为教师时,则需从课程表中检索teacherId与用户名匹配的课程。用户登陆以后每次打开客户端时,系统都会自动联网从服务器端更新课程信息。具体的实现流程如图4-2所示。(3)签到模块进入系统后,学生用户可以对课程进行签到操作。学生点击签到按钮后,系统服务器端应该根据签到时间来判断学生

29、的签到状态。操作完成后系统将结果显示在签到信息界面。具体的实现流程如图4-3所示。(4)查看签到记录模块学生可通过该模块查看自己的签到记录,教师可通过该模块查看所有学生的签到记录。学生客户端通过点击按钮获取对应课程的签到记录,当用户点击按钮后,学生客户端将课程Id和学号发送给服务器,服务器查询对应的签到记录,最后返回给客户端展示出来;教师客户端首先通过服务器获取对应的选课学生名单,然后再从服务器获取对应学生的签到记录。图4-2 获取课表流程图图4-3 签到流程图(5)统计分析模块通过统计分析模块实现教师用户统计每节课的学生出勤情况以及每个学生总的出勤记录。教师客户端在课程详情页面需展示每节课的

30、学生出勤统计,包括每一节课有多少学生正常上课、多少学生迟到以及多少学生旷课,并且还可统计对应的学生名单。4.3 数据库设计4.3.1 学生信息表学生表(student_info)的属性有:学号,姓名,密码,性别,生日,电话和邮箱7个属性字段。学生通过客户端登录系统时,通过学号和密码来查询学生表,用于验证学生的登录信息,并将请求的内容通过Json返回到客户端,实现登录、查询、签到等功能。学生信息表如4-1所示。表4-1 学生信息表字段名称字段属性字段类型字段长度是否主键是否允许为空studentId学号int11是否name姓名varchar20否否password密码varchar20否否ge

31、nder性别char2否是birthdate生日date0否是phone电话char11否是email邮箱varchar20否是4.3.2 教师信息表教师表(teacher_info)的属性有:工号,姓名,密码,性别,生日,电话和邮箱7个属性字段。教师通过客户端登录系统时,通过工号和密码来查询教师表,用于验证教师的登录信息,并将请求的内容通过Json返回到客户端,实现登录、查询、统计等功能。教师信息表如表4-2所示。表4-2 教师信息表字段名称字段属性字段类型字段长度是否主键是否允许为空teacherId工号int11是否name姓名varchar20否否password密码varchar20

32、否否续表4-2字段名称字段属性字段类型字段长度是否主键是否允许为空gender性别char2否是birthdate生日date0否是phone电话char11否是email邮箱varchar20否是4.3.3 课程信息表课程信息表(course_info)的属性有:课程Id,课程名称,教室,教师工号,上课时间,开始周数,结束周数,开始节数,结束节数和课程类型10个属性字段。其中课程类型分为三种,分别为:全部、单周和双周。课程信息如表4-3所示。表4-3 课程信息表字段名称字段属性字段类型字段长度是否主键是否允许为空courseId课程Idint11是否courseName课程名称varchar

33、20否否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所

34、示。表4-4 签到记录表字段名称字段属性字段类型字段长度是否主键是否允许为空stuId学号int11是否couId课程Idint11是否signWeek签到周数int11否否signDay签到日期int11否否signindex签到节数int11否否signTime签到时间datetime0是否signState签到状态int11否否4.4 本章小结本章讲述了整个系统的设计过程,包括系统的总体结构,各个功能模块的设计以及数据库设计。系统设计完成后,接下来我们将依据系统设计目标实现系统。第5章 系统实现5.1 服务器端功能实现服务器端各个功能模块框架大体相同,在本文中以签到模块为例进行论述。服务

35、器端针对每一个功能模块都有两个类,一个是HttpServlet响应请求,另一个是数据库Manager。例如签到模块对应的两个类分别为SignInManager和SignInServlet。服务器端负责响应客户端的请求。客户端需要访问服务器获取数据时,会通过post方式发出请求。在签到模块中,当学生用户点击签到按钮时,Android客户端向服务器发送post请求,服务器接收到请求后,根据url响应对应的请求。签到模块响应后缀为sign的请求,这个在服务器Servlet中设定,代码如下:WebServlet("/sign")public class SignInServlet

36、extends HttpServlet 服务器接收到请求后,处理对应的操作,具体过程如下: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是从客户端接收到的数据。doSign就是服务器需要进行的操作,主要就是操作数据库,包括查询,新增等。为了不让代码显得很乱,所有操作数据库的代码全部都封装在SignManager中。5.2 客户

38、端功能实现5.2.1 登录功能实现登录界面采用线性布局实现,按照水平方向,本系统将登录界面分为三个部分,最顶端为文本框控件,显示“登录”,中间是登录信息部分,包含用户身份选择下拉列表、用户名输入文本框和用户密码输入文本框,最后是登录按钮。完成页面布局后,需要对页面的控件进行绑定事件监听,其中用户身份选择文本框点击后,需要显示一个下拉列表,用户可点击对应的身份进行选择,登录按钮点击后需要获取用户身份、用户名和密码文本框中的内容,系统将这些数据发送到服务器,完成用户的登录验证。因为系统需要访问网络,因此需要有访问网络的权限,在AndroidMainfest.xml中添加访问网络的权限。<us

39、es-permission android:name="android.permission.INTERNET" />用户在登录时,将获取的身份、用户名和密码发送给url为“ :8080/signature_server/login/”的网址。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();服务器接收到客户端的请求数据后,根据接收到的数据来查询对应的数据库。如果用户名和密码都正确,给客户端返回0;如果与该用户名匹配密码不正确返回1;如果没有找到对应的用户名返回2;遇到未知错误则返回-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);客户端接收到服务器返回的数据后,

47、根据返回的数据来进行相应的操作。如果返回的是0,系统跳转到主页面;如果返回的是1,使用Toast提示用户名或密码错误;如果返回的是2,使用Toast提示用户名不存在;如果返回的是1,使用Toast提示遇到了未知错误。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("用户名或密码错误!");break;case 2:show("用户名或密码错误!");break;case -1:show("用户名或密码错误!");break;default:show("登陆失败!");break;通过以上操作,客户端的登录功能就完全实现了。 5.2.2 课表功能实现作为一款课堂签到管理系统,课程表功能是必不可少的,而且友好的课程表界面非常重要。借鉴目前市面很火的超级课程表app,本系统实现了如图5-1所示的课程

49、表界面。图5-1 课程表界面界面整体采用线性布局实现,从上到下分为两部分,分别是星期导航栏和课程格子,其中课程格子界面嵌套一个水平线性布局,左侧为上课节数索引,采用ListView实现,右侧是一个帧布局,底部的分隔线是采用GridView实现的,顶部课程按钮是自定义的组件。其代码为: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;在课程展示时,需要对课程表数据进行处理,提取出当前周的课程信息。该系统在处理课程信息时,首先从服务器获取对应的课程信息,将它们先写进本地数据库,在需要展示课程表时,从本地数据库获取属于本周的课程信息,然后将这些课程信息展示在课程表中。在提取当前周课程信息时,系统需先查找出全部开始周数小于等于当前周并且结束周大于等于当前周的课程,接着还需根据课程分类进一步筛选。在本系统中,课程分为三类,分别是:奇数周、偶数周和全部周。系统经过第一轮筛选后,还需判断当前周是奇数周还是偶数周,然后根据课

55、程分类再进一步筛选。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分钟,如果当前时间不属于签

温馨提示

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

评论

0/150

提交评论