基于android的课堂签到系统_第1页
基于android的课堂签到系统_第2页
基于android的课堂签到系统_第3页
基于android的课堂签到系统_第4页
基于android的课堂签到系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、 本科毕业论文(设计)题 目 基于android的课堂签到系统 学生姓名 xxx 指导教师 xx 学 院 信息科学与工程学院 专业班级 计算机科学与技术0908班 完成时间 2013年5月 摘 要在大学课堂中,签到问题一直困扰着老师和同学们。传统课堂签到的手段大多是老师根据花名册点名或者让学生自行签到。现今课堂上的学生数量大,老师需要花费很多时间点名,大大影响了教学质量。让学生自行签名虽然比较节省时间,但却无法解决学生代签的问题,学生代签会使得签到的结果不能准确反映实际的出勤情况。另外,传统的签到方式将产生大量的签到数据,对这些数据的管理与分析给老师们增加不少的负担。针对传统课堂签到产生的种种

2、问题,本文介绍了一个基于android(安卓)系统平台的课堂签到系统,系统通过蓝牙连接技术实现数据通信。签到系统不仅方便课堂签到,而且所得签到数据能准确反映出学生出勤情况,系统还提供了对于签到数据的管理功能,方便老师对签到的结果进行统计、分析。关键词 android系统,课堂签到,蓝牙 abstractin the university classrooms, questions of attendance registration is troubling our teachers and students. the traditional way of registration is te

3、achers roll call or making students sign in the roster by themself. nowadays, there are many students in one classroom, teachers will spend lots of time on singing names, greatly influences the teaching quality. let students sign in by themselves though save time, it cant reflect actual attendance b

4、ecause students will cheat. in addition, the traditional way in attendance will produce large amount of data, makes teachers spend lots of time to manage these data.against the questions which caused by the traditional classroom registration, this paper introduces a classroom registration system bas

5、ed on android, used bluetooth to achieve data transmission. this system achieves convenient register in classroom, and the attendance data can accurately reflect the students' attendance, the system also provides functions to manage data for the teacher.keywords android, classroom register, blue

6、tooth目录摘 要iabstractii第一章 绪论11.1 课题背景11.2 课题任务11.3 发展现状21.4 论文结构2第二章 相关技术及背景介绍32.1 系统介绍与开发环境搭建32.1.1 android系统简介32.1.2 android的平台特性32.1.3 android系统架构42.1.4 android应用程序开发组件52.1.5 android开发平台的搭建62.2 蓝牙技术简介62.2.1 蓝牙技术的起源与发展历程62.2.2 蓝牙技术的特点72.2.3 android蓝牙开发包(android.bluetooth)72.3 socket与io流82.3.1 网络套接字

7、(socket)82.3.2 输入输出流(io流)82.4 sqlite数据库8第三章 系统需求分析与概要设计93.1 系统功能需求93.1.1 学生模块需求分析93.1.2 教师模块需求分析103.2 系统总体结构设计103.3 系统基本功能模块设计113.3.1 教师端功能模块设计113.3.2 学生端功能模块设计113.3.3数据库的初始化设计123.4 数据库模块设计123.5 系统安全性分析133.6 系统设计的重点难点13第四章 系统详细设计154.1 基于蓝牙的连接功能154.1.1 签到系统基于蓝牙连接技术154.1.2 数据传输154.2 数据库设计174.2.1 学生记录的

8、插入184.2.2 学生记录的更新194.2.3 学生记录的查询194.3 界面设计204.3.1 主界面设计204.3.2 界面更新22第五章 系统测试235.1 测试环境与测试目标235.1.1 测试环境235.1.2 测试目标235.2 测试流程245.3.1 数据库管理功能测试245.3.2 签到功能测试255.3.3 查询功能测试27第六章 总结与展望29参考文献31致谢32第一章 绪论1.1 课题背景当今最热门的手机系统平台无疑是android,android一词的含义是“机器人”,android的图标是一个绿色的机器人。在竞争日益残酷的移动终端领域,这个“绿机器人”凭借着自身的独

9、特的特性获得了大多数用户的青睐,使得android在近几年的发展快速而又稳定。google公司在2007年推出了一款基于linux的开源手机操作系统,取名android(也就是安卓)。该系统的设计让人为之亮眼。android平台的设计采用了linux系统的框架,包含了操作系统、中间件、应用软件和用户界面1。google声称android系统是一个完全开放的移动终端平台。随着物质水平的提高和移动通讯行业的发展,几乎人人都有一部属于自己的手机,手机成为了人们生活中必不可少的工具。在这个互联网高度发展的时代,google的android以其人性化的界面和独树一帜的性能优势在相当短的时间内占领了智能移

10、动设备的市场份额。随着android平台的快速普及和使用,android手机应用的关注度越来越高。android开发技术是当今一个相当热门的技术,涉及到手机通讯、手机游戏、常用应用等方面。现今利用身边的android手机解决日常问题的条件也趋于成熟,手机在日常生活的应用称为了一大焦点。传统的课堂签到费时费力而且容易产生疏漏,上课老师点名的形式很古老、相当占用课堂时间同时令人反感,以文本的形式进行签到数据的管理效率低下。本文介绍一款基于android手机平台下蓝牙通讯的课堂签到应用程序。android系统是现今最热门的智能手机系统,基于android系统的应用程序的开发技术已相当成熟。如今的蓝牙

11、技术发展得已经非常成熟,蓝牙设备的普及率高,几乎每台android手机都搭载了蓝牙功能。蓝牙的通讯范围、传输速度等特性很适合进行课堂签到的要求。利用已经普及的android手机进行课堂签到能更快速更准确得进行课堂签到。课堂签到是大学生活的一个常见问题,本课题的提出是为解决师生的签到问题。1.2 课题任务本课题的任务是设计并实现一款能在手机终端运行的系统,该系统基于android开发技术,能在android平台下流畅地运行并实现帮助课堂上的教师学生方便进行签到的功能。系统可以帮助教师对当时学生的出勤情况进行准确的统计,统计的数据能直观地反映出当时课堂学生的出勤情况。系统可以帮助学生利用手中的手机

12、终端方便快捷地进行签到,学生使用手机发送个人信息到教师的手机服务器端从而实现学生自身的签到。设计的签到系统要实现在签到的时段内教师的无操作,教师无需具体操作只需对签到结果进行查看管理即可。设计的系统的目标不仅是可以提高点名的效率节约课堂时间,同时可以避免代签等不良现象保证签到的安全性,使得对于课堂签到的考评更显公平性。1.3 发展现状相比于symbian的日落西山,以及苹果的封闭、windows phone的前途未卜,android无疑代表了当前行业发展的主流趋势:开放平台取代了封闭平台。让参与者均能通过自己的努力而获益。经过这几年的发展,android已经发展成了一个平台、一个生态

13、体系。现在android在移动领域已经得到了广泛的应用。目前国内的android开发主要以应用开发为主,主要分成3类:为企业开发应用、开发通用应用(在android market或者其他app market销售)以及游戏开发。第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种:为国外公司进行外包开发,或者通过google的移动广告(admob)通过广告点击分成。而理论上的通过付费下

14、载的形式来盈利的,现在国内鲜见成功者。第三类开发者,目前和第二类开发者类似。1.4 论文结构本篇论文介绍了一个基于android的课堂签到系统。本篇论文结构如下:第1章 绪论简单介绍了这个课题任务的背景和课堂说要达到的目标。第2章 介绍了本系统开发所用到的技术,包括android应用开发技术及android背景、蓝牙技术、基本网络通信和数据库。第3章 对本系统进行了需求分析,根据系统需求分析对系统进行简单的设计。第4章 对系统进行深入的研究对系统进行详细的设计来实现系统功能,并提供了部分核心代码。第5章 对体统进行了测试,提供了测试方法、流程及测试的结果。第6章 本人对于本课程设计的结果分析和

15、对本签到系统的展望,并指出一些还能改进的部分。论文最后列出了本篇论文所引用到了的参考文献和致谢词。第二章 相关技术及背景介绍2.1 系统介绍与开发环境搭建2.1.1 android系统简介有着“android之父”之称的的安迪·鲁宾创办了一家名为android科技公司(android.inc)的公司,该公司主要是开发一个名为android的系统2。之后google公司吞并了android.inc 公司,但是google并没有停下对android的开发和运营。android系统的开发是基于linux内核,由linux操作系统衍生出来的针对移动设备的开源操作系统3。android操作系统

16、使用开放免费代码许可证,一切代码都是公开免费4。采用了可细分成三个层面的软件堆(software stack,又称为软件叠层)架构,底层以linux kernel为基础。随着android的发展而android又有开源的特性,之后android不再是由google一家独立开发。然后出现了由google公司宣布组建的开放手机联盟(open handset alliance),该联盟包括手机制造商、手机芯片和移动运营商组成,支持并共同开发android这个开放源代码的移动系统5。2.1.2 android的平台特性(1)开放性说起android系统平台,第一反应就是“开源”和“开放”,androi

17、d系统开源是指所有人都能获得android的源代码,并对android的源代码进行修改。开放性是android系统平台最大的亮点,显著的开放性使得android拥有众多的技术开发者。不仅是个人开发者,众多的移动终端厂商也加入到了android发展联盟中。android拥有如此众多的用户、应用开发者、硬件设备提供商促进了这个富有朝气的系统平台的快速发展,在不久的将来将越来越趋于成熟。android的快速发展是由于其开放性是毋庸置疑的,系统的开放性增加了系统自由度使得系统更为人性化,人性化的特性更容易吸引消费者和厂商。开放性对于消费者来讲,最大的收益是丰富的应用软件资源。开放性给android会带

18、来更强的生命力和活力。如此一来,android的发展就更为健康6。 (2)丰富的机型选择android手机摆脱了之前手机机型单一的境地。可供选择的机型不再像苹果那样只有一种,不需要忍受nokia手机那种永远不变的风格。android可供选择的机型外形各式各样,功能丰富。android有着多种多样的机型选择很大程度和android的开放性有关。(3)个性的diyandroid系统为用户提供了很大的可操作性空间,android用户可以定制自己喜欢的用户界面,选择方便实用的常用软件,用户可以方便地对系统进行升级,甚至自己配置属于自己的android系统6。(4)google应用的支持google对于

19、android的支持是android得以快速地发展的重要因素,google对android进行开发并提供一些基本的应用服务。使得android可以无缝地使用常用的google应用服务,如gmail、google map等。2.1.3 android系统架构android结构分为四层,分别是应用层、应用框架层、系统运行库层和linux内核层7。 图2.1 android架构(1)应用层android应用层中的应用程序是运行在dalvik虚拟机上,这些应用程序由java语言编译而成。android系统有一个核心应用集合,包含联系人、地图、拨号、短信等常用应用。(2)应用程序框架层android作为

20、一个完全开放的平台,开发者可以开发多种多样的应用程序。开发者能够自由访问核心应用程序所使用的框架api。这样的体系主要是为了简化了组件的重用,使用其他应用的设计框架便于应用程序的开发,但是开发者必须遵守应用程序架构的原则。每一个应用程序简单讲就是一组服务和系统,其包含有:视图(view)、content provider、资源管理器(resource manager)、notification manager、activity manager。(3)库和系统运行库android库有c/c+库和系统运行库,android的开发者们可以通过android应用程序框架来使用系统提供的组件。andro

21、id核心库有:系统c库、界面管理、3d库、sqlite、媒体库、freetype、sgl以及libwebcore。android运行库包含一个核心库的集合,android的每一个应用程序都是运行在dalvik虚拟机上。dalvik只支持.ded文件格式,.ded格式适合内存小、处理器速度受限的系统。(4)linux内核android 系统服务以linux特有的内核系统服务为基础,如基于权限的安全规则、优越的进程管理和内存管理、广泛认可的驱动模型和网络协议。linux kernel作为软硬件之间的抽象层,在对上层提供服务时隐藏了下层的硬件细节。2.1.4 android应用程序开发组件(1)ac

22、tivity简单讲,activity 是android应用程序与用户进行人机交互的界面。activity的功能就是把应用程序以直观的界面呈现给用户,所有用户能见到的都可以可称之为activity。(2)broadcast receiverandroid系统的每一个事件都会产生一个信息并在系统中进行广播,这个信息也就是broadcast。broadcast receiver会接收它感兴趣的广播并触发一些行为。(3)serviceservice运行在android系统后台,service与activity可以说是同级。但是service与activity有很大的不同,activity是androi

23、d应用为用户提供可视的界面,而service是运行在后台对于用户来说不可见无界面的服务。 (4)content providercontent provider 是android开发重要的组件之一,是应用程序之间共享数据的唯一方法,content provider 主要是存储并检索应用程序的数据并向其他应用程序提供访问该程序数据的接口。2.1.5 android开发平台的搭建本系统基于android的应用层开发,需要进行android平台的搭建。计算机的操作系统是微软的windows 系统。下面是windows操作系统下搭建android开发平台的步骤:第一步:android应用开发以java

24、为基础,所以首先开发环境需要配置jdk,jdk是整个java的核心,包括了java运行环境、java工具和java基础类库。安装完jdk工具包后设置系统的环境变量java_home、classpath和path。第二步:安装配置google提供的针对于android的开发工具包software development kit(sdk)。android sdk 指的是google提供的针对于android开发的软件开发工具包。进行android开发android sdk的配置是必需的。第三步:下载安装eclipse作为本次android系统开发的ide(integrated developmen

25、t environment,集成开发环境),eclipse 是一款针对于java开发的开源可拓展开发环境,eclipse的开发效率高方便本次系统设计。第四步: 安装google提供的针对于eclipse开发环境的android开发插件adt(android development tools)。第五步:创建avd(android virtual device,android虚拟设备),方便了android的开发,开发的android项目可以在avd上进行调试,预览项目在真实android平台下的实际效果。每个avd上可以配置多个虚拟android设备包括手机和平板电脑。系统开发所需的andro

26、id开发平台搭建完成。2.2 蓝牙技术简介蓝牙(bluetooth)是一种无线电通信技术,蓝牙设备的通讯距离较短大概在十米左右。能在多种终端设备之间以无线信号波的形式进行通信。蓝牙技术通过终端间的配对连接简化了设备之间的通信,避免了繁杂的操作加快了数据的传输效率。2.2.1 蓝牙技术的起源与发展历程蓝牙是以古老的北欧国王blåtand的名字而命名的(blå蓝、tand牙)。随着蓝牙的发展,蓝牙很快成为面向无线局域网(wpan)的应用标准,蓝牙技术的出现是以因特网为代表的数据通信和移动通信技术高速发展的结果8。当今是一个快速发展的信息社会,实现信息全球化的基础硬件设备已初步搭

27、建完成。在这个网络高度发达的信息社会,每个用户、每台信息设备终端无论时间、地点都能方便快捷地接入网络,蓝牙技术的出现就是为了实现这一目的。它面向短距离通信网络,是一种随时随地处处可见的无线网络串连起在脚下范围的各种信息设备。蓝牙技术从最开始的只应用于高端产品,到现在普及到智能手机,个人电脑,平板电脑,等移动互联设备。蓝牙的发展速度越来越快,伴随着蓝牙硬件成本的下降,蓝牙应用技术也趋于成熟,当前蓝牙产品的市场从第二阶段过渡到了高速发展的第三阶段,刚刚出现的第三代移动互联技术将为蓝牙创造更多的发展机遇9。蓝牙技术最开始由爱立信公司的无线通信部门于1994年着手研究,蓝牙最开始的设计目的是通过点对点

28、的连接进行短距无线传输,但蓝牙的发展受限于蓝牙设备高昂的成本和极低的蓝牙覆盖率,造成了蓝牙的研究落后发展赶不上之后出现的wi-fi技术。之后随着手机行业的发展nokia、motorola、ericsson等手机制造公司的快速崛起,蓝牙相继登录高端手机平台。蓝牙市场得以复苏,蓝牙的发展走上快速发展的道路。由于蓝牙小巧的外形和较低的产品成本,蓝牙技术已被广泛采用在消费者或移动设备10。2001-2005年间,每年蓝牙设备的出货量都翻一番,2005年蓝牙设备的出货量突破了4亿,而且之后几年凭借着持续的增长率,到2009年蓝牙需求量增长到9.12亿个,年增率超过140%。2.2.2 蓝牙技术的特点蓝牙

29、技术有八大特点:1.全球适用,蓝牙频段范围为2.4ghz的ism2.同时可传输语音和数据,采用电路交换和分组交换技术,支持异步传输数据3.可建立临时性的对等连接,实现一对多连接方式4.具有很好的抗干扰能力5.蓝牙模块小,便于集成6.功率低7.开放的接口标准8.成本低11本论文设计就是依据蓝牙的诸多特点开展的,特别是在对等连接以及抗干扰能力和开放的接口标准。在android手机大占手机市场份额的环境下,android手机的蓝牙开发拥有非常广阔的前景。2.2.3 android蓝牙开发包(android.bluetooth)android自带的bluetooth包中有8个类,而本次主要使用到的类主

30、要有 bluetoothadapter(蓝牙适配器类),用来建立蓝牙连接的bluetoothdevice(蓝牙设备类),用于创建服务器套接字的bluetoothservicesocket(蓝牙服务器套接字),还有bluttoothsocket(客户端套接字类)12。2.3 socket与io流2.3.1 网络套接字(socket)socket我们通常称为“套接字”,是一个用于描述ip地址和端口的通信链句柄。在通信开发中,socket可以实现各种的网络协议。socket是网络中两个相互通信的应用程序实现的套接字,socket将网络中所谓的客户端/服务器端连接起来。客户端请求和服务器的相应请求是s

31、ocket两个标准动作。在网络操作中会发现,socket是一个特殊的i/o。socket增加了端口的概念。常见的socket有2种:流式socket和数据报式socket。流式socket是面向连接的socket,实现了面向连接的tcp协议;数据报式socket是一种无连接的socket,实现了无连接的udp协议。本系统socket应用程序通过socket接口来进行发送和接收数据,socket的创建打开了连个手机终端的连接,数据像流水一样在手机间进行传输。serversocket实现了服务器端的socket,创建这个类可以监听来自其他客户端socket的请求。2.3.2 输入输出流(io流)说

32、到输入输出流,学习java的肯定都很熟悉数据的输入和输出流。输入输出流用来传输用户发送的文字及其他数据。只要socket连接到服务器的serversocket,这时就可以用输入输出流进行服务器与客户端之间的数据通信。2.4 sqlite数据库sqlite一个android自带的数据库,这个数据库体积小所需要的内存小,该数据库主要针对于嵌入式开发,非常适合用来进行android项目开发,适合存储数据量小的表格、图片等数据。sqlite是在嵌入式开发中很受欢迎的一款轻量级数据库引擎,sqlite支持基本sql 语句。特别的是,运行sqlite不需要占用很大的内存资源就能达到非常好的执行效果。同时s

33、qlite是开源的,任何人只要到sqlite官网就能下载并使用它。由于sqlite的特性不少开源项目((mozilla, php, python)的数据库都选用了sqlite数据库。sql 编译器、附件、后端以及内核这4个组件构成了完整的sqlite数据库。这个数据库遵守了关系数据库管理系统的4个基本特性:一致性(consistency)、持久性(durability)、独立性(isolation)以及不可分割性(unbreak)。sqlite符合基本数据库的要求,能方便对数据库中的数据进行基本管理。sqlite在android开发中主要使用sqliteopenhelper这个辅助类来实现对数

34、据库的基本操作,利用sqliteopenhelper这个类可对数据库进行新增、查找、更新、删除的操作。第三章 系统需求分析与概要设计3.1 系统功能需求本签到系统是以android技术为核心,以蓝牙通讯技术为手段,将教师与学生的android手机连接成为一个有机整体进行手机间的通信从而实现签到的应用程序。数据库技术实现了本系统对于签到数据的管理。3.1.1 学生模块需求分析学生客户端模块应该能完的功能包括登录签到功能和签到情况查询功能。(1)课堂签到分析学生端(客户端)点击签到把自己的个人信息(如姓名、学号)通过蓝牙发送到教师端(服务器),服务器对接收的数据进行处理与数据库中的数据进行匹配,若

35、学号和密码匹配,则将签到结果回馈到学生手机端让学生获悉签到成功,不匹配则返回未能签到信息提示重新签到。图3.1 签到功能(2)签到情况查询系统的签到查询功能让学生查询自己的签到情况,学生可以在服务器开启的情况下查看自己的签到情况。如下图,学生端向服务器端发送个人信息查询命令对签到情况查询。图3.2 学生查询功能3.1.2 教师模块需求分析教师端模块的功能应该有管理学生信息数据库、收集签到信息和签到情况查询。(1)数据库管理实现学生端的签到,教师端主要是开启签到线程和对签到结果数据进行管理。系统目标是单个教师对于所有学生进行管理,所以系统首要的目标是教师的便捷操作,教师只需开启签到功能,在签到结

36、束后对签到结果进行管理即可。学生信息的管理设计到学生信息初始化的问题,一个教师所拥有的学生可能很多,而每个学生的信息可能很繁杂。系统应该方便教师进行学生信息数据的初始化。(2)收集签到信息教师端开启签到功能要求开启签到等待服务,教师端可以在自定的时间段开启签到功能中实现老师对于签到时间的限制。教师端接收到学生发送过来的信息,在数据库中进行比对。身份确认后把学生签到完成的信息存储在教师端的数据库中。(3)签到情况查询教师可以对数据库中学生的签到情况进行查询,查询后系统反馈给教师所查询的信息。3.2 系统总体结构设计系统的核心功能是进行手机间的数据传输、数据存储。手机间通过蓝牙连接技术创建数据连接

37、进行手机间的信息通信。课堂签到这个行为关系到数据传输,可以看成学生端(客户端)向教师端(服务器端)传输信息,信息包含个人信息进行必要的学生身份确认来确保课堂签到的安全性防止代签、乱签等等行为。教师端在接收到学生端的信息,在学生数据库中对比信息确认信息为本人发送,则更新教师端的签到信息,实现学生的课堂签到。在签到完成时教师端向学生端发送确认信息,使得学生得知自己已经完成本次的签到。一个完整的签到流程完成。教师端的学生信息存储涉及到数据的本地存储。任课老师可以直接管理学生信息数据库,能直接对数据库中的学生记录进行添加、修改、查询、删除操作。对于签到信息教师无权限进行直接的管理。得到学生请求签到的数

38、据系统会自动对签到信息进行更新。这也从另一方面体现了该签到系统的签到安全性。学生端与教师端的蓝牙连接未断开时,学生可以请求查询学生的签到信息。教师端在获得学生端请求后进行信息的本地获取,之后信息发送的学生端进行显示。在一系列操作结束后学生端与教师端断开连接。3.3 系统基本功能模块设计3.3.1 教师端功能模块设计(1)学生信息数据的本地存储数据存储在android系统开发中一项很重要的技术,在android系统开发中常见的4种数据存储方式有sharedpreferences存储数据、文件存储数据、contentprovider存储数据和sqlite数据库存储数据13。本签到系统采用了第4中数

39、据存储方式,也就是采用sqlite数据库进行数据存储。教师端的学生个人信息以表的形式(表stu)存储在sqlite数据库中。教师可对操作stu表的数据。系统采用基本的sql语句(如:insert、select、delete等 )来管理学生信息。学生信息是签到系统的核心信息,涉及到处理学生签到请求、查询请求时的信息响应。(2)监听签到请求蓝牙技术,蓝牙属于短距离无线通信比较适合课堂签到,所以本系统采用蓝牙技术进行数据传输。当要进行签到时,教师端和学生端都开启蓝牙。学生端创建一个bluetoothsocket向教师器端请求连接,教师端创建bluetoothserversocket监听bluetoo

40、thsocket的连接请求。当连接成功时,学生端向输出流中写入数据(个人信息),学生端向教师端发送数据。教师端读取输入流(也就是学生端的输出流)中的数据。一个完整的通信流程完成。教师端对比学生端发送的信息和本地数据库中学生的个人信息。若一致,服务器端系统更新学生签到的数据。教师端发送签到确认信息给学生端,签到完成。需要说明的是动态显示签到记录,就必须要用到android的消息处理机制(handler)。当有消息需要传递,或者做显示时候,通过消息处理机制实时的显示相关信息(3)响应查询请求和响应签到请求相似,在利用蓝牙技术完成手机间的连接后,学生端的bluetoothsocket发送作为查询请求

41、的数据,该数据包含查询的学生个人信息。教师端bluetoothserversocket接收到数据,教师端的系统根据接受的数据查询学生信息库,查询的结果反馈给学生端。3.3.2 学生端功能模块设计学生端向服务器请求签到并接收签到结果。学生端打开蓝牙设备获得蓝牙适配器bluetoothadapter,bluetoothadapter是android蓝牙开发中的核心类,学生端通过bluetoothadapter实例化一个bluetoothsocket并向服务器端的bluetoothserversocket请求连接。取得连接后学生端发送个人信息,服务器端处理请求信息后发送签到结果到学生端,学生端采用h

42、andler机制显示所查询的签到结果。3.3.3数据库的初始化设计为减少老师的工作量,系统不仅提供手工初始化学生信息,还提供了另一种方式进行初始化学生数据。教师端学生数据可以以服务器/客户端的模式进行初始化,教师端开启初始化服务的线程,学生请求连接教师端,学生手动输入并发送个人信息(姓名、手机蓝牙mac地址、学号),教师端把接收的数据写入数据库中完成学生数据库表的初始化。图3.3 教师端数据初始化3.4 数据库模块设计必须先说明的是数据库只存储在服务器端(教师端),只有教师端有权对数据库进行管理。学生端不存在学生个人信息的数据库,学生端无法发送请求对教师端的数据库进行增加、修改、删除操作。考虑

43、到系统的大小,系统使用的是轻量级的嵌入式sqlite数据库,使用sqlite数据库最大的好处就是存储少量数据。系统中只需要一个数据库,数据库中只需要一个表,学生表(表stu)如下:表3.1 学生信息表stu字段名idnummacnameissignsum数据类型 integertexttexttextintegerinteger约束主键not nullnot nullnot null默认为0not null字段名id是表stu的主键,约束条件不为空且随着记录的增加自动增长。字段名num表示学生的标识(这里为学号),num为字符串类型约束条件不为空。字段名mac表示学生手机的蓝牙mac地址,ma

44、c为字符串类型约束条件不为空。字段名name表示学生姓名,name为字符串类型约束条件不为空。字段名issign表示当前的本次签到学生是否签到,issign为integer类型只取0和1,默认值为0表示未签到,值1表示已经签到。字段名sum表示学生的签到总次数,sum为integer类型约束条件不为空。3.5 系统安全性分析尽管学生、老师的手机各式各样、手机牌子各不相同,但是前提是手机必须搭载android操作系统。在设计方面,设计的系统要考虑到兼容性以确保系统能在多种主流android版本顺利运行,必须考虑采用成熟的技术,在系统设计的各个方面都尽量减少故障的发生,以确保系统能实现基本功能。在

45、进行程序的初步设计的时候应该考虑到系统的可拓展性和可维护性,确保设计的系统足够健壮也能在日后完善系统。从学生签到安全性来说,签到系统不仅能够实现学生准确成功签到,更要考虑签到过程中的安全问题,其中的安全问题涉及到学生随意签到、学生代替、学生迟到未在限定时间签到与及学生信息泄露问题等。在学生随意签到的安全性问题上,系统要求在上课前,任课老师可以自由设定签到的时间段,学生用户只能根据在已经设定的签到时间进行签到,待确认才能完成签到。在迟到问题上,系统要求签到用户必须在上课时间规定的时间段内进行签到,否则签到无效。学生签到过程要求学生利用自身手机进行签到,签到确认的时候会对学生签到的手机进行确认以确

46、保是本人签到避免了学生代签。学生端无法对学生信息数据进行直接的操作所以不必担心学生信息泄露的问题。3.6 系统设计的重点难点(1)对于系统实现教师的签到无操作实现教师签到无操作。教师只要点击启动签到监听就无需操作。教师端的蓝牙需要实现一对多的连接,对于手机来说同时要同时处理大量的操作时负担不过来的。解决方案是教师端与学生端实现一对一的连接,在签到结束后学生端与教师端断开连接,教师端再监听另一个学生端的连接请求,然后再完成教师端与学生端的一对一的连接,以此方法实现所有学生端的签到。(2)对于签到的安全性保证教师端开启一次签到监听学生端只能签到一次,多次签到无法增加总的签到次数。为解决这个问题所以

47、出现了issign这个字段名。issign(是否已签到)默认0,表示未签到,当学生签到后值变成1,当issign为1时sum(总签到次数)增加1。当该学生再次签到时,因为issign的值为1,sum值不再增加,从而阻止了学生多次签到。安全性还涉及到学生代签到问题,因为学生信息和手机是挂钩的。一个手机的mac地址是唯一的,一个mac地址绑定一个学生。签到的时候学生端发送本地的蓝牙地址进行签到,所以代签的情况是不会出现的。第四章 系统详细设计本章主要阐述课堂签到系统中签到统实现过程,包括蓝牙连接、数据传输、数据库管理的实现过程以及和用户界面的详细设计。4.1 基于蓝牙的连接功能4.1.1 签到系统

48、基于蓝牙连接技术android对于蓝牙的操作,系统需要先取得蓝牙的操作权限。在androidmanifest.xml文件中增加权限声明。<uses-permission android:name="android.permission.bluetooth" />15打开蓝牙然后建立蓝牙连接,本系统的蓝牙连接使用c/s模式(服务器/客户端模式),服务器打开蓝牙创建bluetoothserversocket阻塞等待连接,客户端启动蓝牙搜索功能搜索服务器,然后客户端socket请求连接,服务器接受连接,连接完成。图4.1 server/client模式结构图4.1.2

49、 数据传输本系统传输的数据是文本信息,在蓝牙连接进行通信需要使用的io流。使用io流来进行数据传输,为同步数据传输需要创建线程16。图4.2 数据传输模式图核心代码如下:/创建bluetoothserversocket服务器端的第一步,由教师端先获得bluetoothadapter并实例化一个bluetoothserversocket。mbluetoothadapter = bluetoothadapter.getdefaultadapter();mserversocket=mbluetoothadapter.listenusingrfcommwithservicerecord(string

50、name,uuid uuid);/服务器端线程阻塞监听学生端socket的连接请求socket = mserversocket.accept();/服务器对输入流中的数据进行读取trymyinputstream = socket.getinputstream();catch (ioexception ex) ex.printstacktrace();if( (bytes = myinputstream.read(buffer) > 0 ) byte buf = new bytebytes;for(int i=0; i<bytes; i+)buf = bufferi;string s

51、 = new string(bufa);/客户端通过服务器的唯一uuid获得与服务器的连接bluetoothsocket socket=device. createrfcommsockettoservicerecord(uuid); socket.connect();/由getinputstream()、getoutputstream()方法获取socket输入输出流。mminputstream = socket.getinputstream();mmoutputstream = socket.moutputstream ();/当签到结束bluesocket和blueserversocket

52、调用close()方法关闭蓝牙连接。socket.close();/客户端发送消息private void sendmessage(string msg) if (socket = null) return;try outputstream os = socket.getoutputstream(); os.write(msg.getbytes(); catch (ioexception ex) ex.printstacktrace();4.2 数据库设计sqlite给android开发提供了访问数据库的接口,就是sqliteopenhelper类,所有对sqlite数据库的操作都是通过这个类

53、实现的。要实现对sqlite数据库的操作需要继承sqliteopenhelper这个工具类。sqliteopenhelper中核心的方法有oncreate()和onupgrade()。sqliteopenhelper中的oncreate()和onupgrade()是回调函数,当创建数据库的时候会调用oncreate()这个方法。onupgrade()方法是用来升级数据库。继承sqliteopenhelper的类必须实现构造方法。public class mydatabasehelper extends sqliteopenhelper public mydatabasehelper (cont

54、ext context, string name, cursorfactory factory,int version) super(context, name, factory, version); public void oncreate(sqlitedatabase db) string sql = "create table stu (id integer primary key autoincrement, num text ,mac text, name text,sign integer ,count integer)"db.execsql(sql); pub

55、lic void onupgrade(sqlitedatabase db, int oldversion, int newversion) / todo auto-generated method stubthis(context, name, factory, version+1); mydatabasehelper继承sqliteopenhelper 并覆写oncreate()方法,当调用oncreate()时执行sql语句create table stu (id integer primary key autoincrement, num text ,mac text, name tex

56、t,sign integer ,count integer)/生成前面提到的stu表,用来存储学生个人信息以及签到信息。mydatabasehelper = new mydatabasehelper (getapplicationcontext(), "stu");db = mydatabasehelper.getwritabledatabase();mydatabasehelper继承sqliteopenhelper并覆写其中的oncreate()和onupdata()方法,调用mydatabasehelper的getwritabledatabase()或者getreadbledatabase()方法可获得一个可写或者可读的数据库句柄,当要获取一个数据库而该数据库还未创建就创建这个数据库,若已存在则打开这个数据库。4.2.1 学生记录的插入/向数据库中插入数据需要用到contentvalues类,首先实例化一个contentvalues对象。contentvalues cv = new contentvalues();/调用cv.put(key, value)方法contentva

温馨提示

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

评论

0/150

提交评论