毕业设计(论文)-基于Android的上课点名系统的设计与实现.doc_第1页
毕业设计(论文)-基于Android的上课点名系统的设计与实现.doc_第2页
毕业设计(论文)-基于Android的上课点名系统的设计与实现.doc_第3页
毕业设计(论文)-基于Android的上课点名系统的设计与实现.doc_第4页
毕业设计(论文)-基于Android的上课点名系统的设计与实现.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

基于android的上课点名系统的设计与实现摘要 传统的课堂点名费时费力,而且容易造成疏漏。现在上课老师点名的方式还很传统,在占用大量时间的同时还令人反感,以文本形式进行签到数据的管理效率低下。而随着物质水平的提高和移动通信水平的发展,几乎人人都有了自己的手机,手机成为了人们生活中必不可少的工具。在这个互联网高度发展的时代,google公司旗下的android手机平台以其人性化的界面以及独特的操作体验在短时间内占领了移动通信市场。随着android平台的普及和使用,android手机应用关注度越来越高。android开发技术是当今的一个热门技术,涉及到手机通讯、手机游戏、日常应用等各个方面。如今利用android手机解决日常问题的条件也趋于成熟,于是用基于android手机的课堂点名系统来点名以及进行智能的签到数据统计必定是将来课堂点名签到的一个趋势。本文阐述了软件的功能需求、界面需求及性能需求。介绍了android系统架构及开发平台,根据系统的特性进行软件架构设计,引入了二维码技术,完整实现了一款实用的上课签到系统。随着手机硬件的不断发展和android系统的更新升级,本签到软件还有更多功能扩展的空间和技术研究的方向。该系统采用android sdk,eclipse作为开发工具。关键词:android;签到系统;二维码摘要iabstractii1绪论11.1课题背景11.2点名系统的发展11.3本文主要工作22 android系统简介32.1 android系统概述32.2 android系统架构42.3 android开发环境配置62.4 android程序开发92.4.1 程序开发组件92.4.2 程序界面开发122.5 android系统数据存储方式143 sqlite数据库143.1 sqlite主要语法153.1.1 结构新建153.1.2 结构删除153.1.3 数据操作153.1.4 事务处理163.2 sqlite内置函数163.3 sqlite常用操作173.3.1 数据库文件的打开和关闭173.3.2 数据库文件的查询184签到系统的设计与实现214.1 数据库设计224.2 功能设计224.3 系统运行截图285 结论与展望29参考文献31致谢311绪论1.1课题背景 随着社会的发展,经济水平的提高,手机越来越普及。据工信部统计数据,2014年一月底中国移动通讯用户达12.35亿,其中4.19亿(33.94%)为3g用户,8.38亿(67.80%)为移动互联网接入用户。同时伴随着移动互联网技术的发展,手机的功能也变得越来越丰富。从原来只具有简单通信功能的非智能手机到现在具有手机操作系统,除通话功能以外,还集上网、聊天、炒股、收发邮件等功能于一身的智能手机系统。基于android平台应用程序的开发就更加具有市场价值智能手机具有五大特点:具有开放的操作系统,可以自由安装第三方应用,使系统功能得到无限扩展;具有无线接入互联网的能力,即在gsm网络中需要支持gprs,在cdma网络中支持cdma 1x或3g网络;具有pda的功能,包括pim(个人信息管理)、多媒体应用、浏览网页、日程记事等;功能强大,扩展性强,第三方支持多;人性化,可以根据个人需要扩展及其功能。传统的课堂签到费时费力,而且容易造成疏漏。现在上课老师点名的方式还很传统,在占用大量时间的同时还令人反感,以文本形式进行签到数据的管理效率低下。而随着物质水平的提高和移动通信水平的发展,几乎人人都有了自己的手机,手机成为了人们生活中必不可少的工具。在这个互联网高度发展的时代,google公司旗下的android手机平台以其人性化的界面以及独特的操作体验在短时间内占领了移动通信市场。随着android平台的普及和使用,android手机应用关注度越来越高。android开发技术是当今的一个热门技术,涉及到手机通讯、手机游戏、日常应用等各个方面。如今利用android手机解决日常问题的条件也趋于成熟,于是用基于android手机的课堂点名系统来点名以及进行智能的签到数据统计必定是将来课堂点名签到的一个趋势。1.2点名系统的发展 点名是现代企事业管理的基础,也是衡量企事业管理水平的重要标志。随着电子芯片的高度集成化,点名系统的功能也变得越来越完善和强大,而且越来越容易操作。以下是点名系统的发展过程: 1) 人工签到的方式:在信息技术还没有被广泛运用的时候,日常点名管理工作主要依靠大量的人力来完成; 2) 单一的键盘输入密码方式:常常会有因忘记密码而被拒之门外尴尬的事发生;3) 接触卡式点名系统:例如:磁码卡,它是把磁质贴在塑料卡片上制成的,磁卡可以改写,应用方便,其缺点是易消磁,易磨损;铁码卡,这种卡片中间用特殊的金属线排列编码,采用金属烧磁原理制成,不易被复制,铁码卡可有效地防磁、防水、防尘、是安全性较高的一种卡,但仍然可能会因为卡片被消磁或弄脏,而将使用人员拒之门外;4) 感应卡(非接触式 ic 卡):卡片采用了先进的半导体制造技术和信息安全技术,利用电子回路及感应线圈在读卡器本身产生的特殊振荡频率,当卡片进入读卡器能量范围时产生共振,感应电流使电子回路发射信号到读卡器,经读卡器将接收的信号转换成卡片资料,送到控制器对比。它具有以下突出特点:存储量大,从几字节到几兆字节;体积小,重量轻,携带方便,抗干扰能力强;安全性高,存储器本身具有控制密码,若非法解密,卡片会自毁;能脱机方式使用,对网络的要求不高,故投资较小;寿命长,读写次数大于 10 万次;数据保存时间长达 10 年以上。 以上几种点名系统都存在着一个共同的缺点,即不能从根本上杜绝密码遗失、盗用、破解或冒名顶替等现象的出现。 5) 生物识别系统:生物识别以生物技术为基础,以信息技术为手段,将两大高新技术交汇融合为一体。生物识别技术是利用人体生物特征进行身份认证的一种技术。生物特征是指惟一的、可测量或可自动识别的生理特征或行为特征。生理特征多为先天性的,如指纹、眼睛虹膜、脸像、静脉等;行为特征则多为后天性的,如笔迹、步态等。与传统的身份鉴别手段相比,基于生物特征的身份鉴别技术具有以下优点:不会遗忘或丢失;防伪性能好,不易伪造或被盗;随身携带,随时随地可用。 由于生物识别技术特有的这些优点,很快受到人们的普遍欢迎,得到了迅速地发展。1.3本文主要工作 本文首先介绍了android操作系统的四层架构及基于android系统的应用程序开发方法,还介绍了二维码技术。接下来以签到系统的研发过程为例,详细阐述了开发android系统应用程序的具体过程。本文一共分为五章: 第一章是绪论,主要叙述了签到系统的应用背景以及研究现状进行介绍。 第二章对android系统以及android开发进行了系统地介绍。 第三章对android开发使用的数据库sqlite数据库进行了详细的介绍。 第四章主要介绍了签到系统的功能模块和系统的设计与实现以及对系统的测试。 第五章对本文的研究内容进行了总结及对未来的发展进行了展望。最后是参考文献和致谢。2 android系统简介2.1 android系统概述 android一词本意是指“机器人”,是google公司推出的开源手机操作系统作为google移动互联网战略的重要组成部分,android操作系统借助于google这个强大的推手和开放手机联盟的支持,由默默无闻变得备受瞩目,各种各样基于android系统的设备相继问世。虽然android系统从推出到现在不过短短几年时间,但作为移动终端设备操作系统中的重量级一员,它的影响力越来越大,吸引了越来越多的开发者、设备生产商和软件开发商等加入。作为一个推出不久的移动终端开发平台,为何会有如此强大的发展潜力和如此迅猛的发展速度,每个人都会有自己的答案。总结起来,可能包括以下几点: 1)系统的开源性和免费性:android系统是一个对第三方软件完全开放的平台,开发者在编写android应用程序时具有更大的自由度。2)移动互联网的发展:android采用webkit浏览器引擎,与其它系统相比,更强调搜索功能,界面更强大,是一种融入全部web应用的互联网络平台。3)相关厂商的大力支持:从组建开放手机联盟开始,google一直向服务提供商、芯片厂商和手机销售商提供android平台的技术支持,帮助他们开发出更好的android设备。凡事都具有两面性,作为一个如此受欢迎的系统也不例外。android系统也有自身的一些缺点,具体如下:1)技术需要进一步完善:每个系统都不是完美的,android也不例外,系统自身的一些bug需要进一步完善。尤其是android系统作为一个开源的系统,面临的攻击会比其它封闭系统要多,这是android系统要持续发展所必须解决的一个重要问题。2)开放手机联盟模式的挑战:android由开放手机联盟开发、维护和完善,这种模式,是否会对android未来的发展、定位起到阻碍作用,这些都不能下定论。3)其他技术的竞争:微软因为拥有pc操作系统市场最大的占有率,在未来手机与电脑互相联动并实现无缝对接方面windows mobile相比android具有先天优势,此外,即使在智能终端自身的操作系统上,ios系统也是android的一个劲敌。这些都给android系统的进一步发展带来了巨大挑战,如果能很好的解决这些问题,也将会进一步促进系统的发展。2.2 android系统架构android系统采用了软件栈的设计结构,从上到下由四层组成,分别是linux内核层、中间层、应用程序框架(application framework)和应用层(applications)。如图2-1所示。图2-1 android系统架构下面对每层进行具体的描述: (一)linux内核:android系统的内核在linux2.6内核的基础上进行了相应的裁剪和改进,继承了linux内核安全性、内存管理、进程管理、网络协议栈和驱动模型等。linux内核同时也为硬件和软件之间提供了衔接,屏蔽了下层硬件的具体细节来为上层提供服务。 (二)android函数库:android包含一个能被不同组件使用的c/c+库,这些库通过android应用程序框架来为上层应用程序提供服务,下面是一些常用的核心库: 1)libc:系统c库,从bsd发展而来的标准c函数库,是专门为基于嵌入式linux设备所定制的。 2)媒体库:基于packetvideo opencore,支持多种常用的音频、视频格式回访和录制,同时支持静态图像文件。 3)surface manager:管理显示子系统,为多个应用程序提供2d和3d图层的无缝融合。 4)sgl:底层的2d图形引擎。 5)3d libraries:基于opergl esi.oapi实现,可以使用硬件3d加速或高度优化的软件3d加速。 6)rreetype:位图和矢量字体显示。 7)sqlite:一个对所有应用程序可用的、功能强大的轻量级关系型数据库引擎。 (三)android运行时:android运行时环境由一个核心库(core libraries)和一个d alvik虚拟机组成,核心库为上层应用程序编程提供了java语言核心库的大多数功能。dalvik虚拟机是一个不同于其他标准虚拟机的虚拟系统,采用寄存器架构,能在一个设备中同时高效运行多个程序。它基于linux内核的一些功能,如多线程机制和内存管理机制等。dalvik虚拟机可以运行android程序,这些程序需要使用dx工具转换成.dex类型的可执行文件,该格式文件在大小方面往往比同样的.class文件压缩成的.jar文件更小,可以降低对内存的要求。 (四)应用程序框架:包含编写核心应用所使用的api接口,开发者可以使用这些接口来编写自己的应用程序,该程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块,同时还可以使用其他程序发布的功能块(但是要遵循安全限制)。每个应用都会包括一系列的服务和系统,具体如下: 1)丰富而又可扩展的视图:构建应用程序时可以将这些视图进行各种组合来形成各式各样的应用程序界面。常用的视图包括:列表、网格、文本框、按钮和内嵌的浏览器等。 2)内容提供器:提供数据共享的途径,如联系人数据库。 3)资源管理器:管理非代码资源,如字符串、图片和布局文件等并提供这些资源的访问方式。 4)通知管理器:帮助应用程序在状态栏中显示各自的提示信息,如收到短信 5)活动管理器:管理应用程序的生命周期,还提供导航或回退功能等。 (五)应用程序:包括电话、短信、口历、地图、浏览器、通讯录等核心应用程序。2.3 android开发环境配置 由于java语言具有强大的功能和与平台无关的特性,并且还具备强制类型安全,因此google选择使用java语言来开发android系统下的应用程序。 eclipse是一个开放源代码的、基于java的且具有良好扩展性的开发平台。eclipse本身只是一个框架和一组服务,但是通过加入插件可以构建针对不同语言的开发环境,目前支持的主要开发语言有java和c/c+。基于以上优点选择使用eclipse来搭建android程序的开发环境并详细介绍环境的配置过程。搭建android开发环境有以下五个主要步骤:下载并安装jdk;下载并安装eclipse;下载android sdk;下载并安装adt插件;配置android avd。 1)下载并安装jdk; jdk是java se development kit的简写,其中包括了java运行环境、java开发工具和一些java核心类库等。在安装eclipse之前,必须先下载和安装jdk。 jdk是由sun公司开发,因此要下载最新的jdk,只要登录sun公司的官网,选择适合自己电脑的版本下载并按照提示安装即可,如图2-2所示。图2-2 下载安装jdk jdk安装完成后,还得配置相应的环境变量才能使用。环境变量的配置分为两部分,一是java home变量的配置,二是classpath变量的配置,这两者的配置方法类似。2)下载并安装eclipse;进入http://downloads/页面,选择合适的eclipse版本下载,如图2-3所示。安装时注意选择合适的安装路径。图2-3 下载安装eclipse 3)下载android sdk;android sdk是android专用的软件开发包工具,包括程序开发中用到的函数库、编译程序等资源,是开发android程序必备的工具之一。sdk的下载网址是http:/developer.a/sdk/index.html,下载后,不用安装,只要解压到适当的位置并在eclipse中进行设置即可使用。具体设置方法是在eclipse界面上选择window-preference-android,然后在sdk location框中选择sdk的解压路径,点击apply按钮,最后单击ok完成。如图2-4。图2-4 加载android sdk4)下载并安装adt插件; adt是为方便android应用而开发的插件,包含一系列强大的扩展功能,可以方便、快捷的创建、运行和调试android程序。安装adt的步骤如下:首先,打开elicpse,选择windows-preference-help-software updates然后选择available software接着选择add sites,在弹出的地址框中输入http://android/eclipse/,然后单击ok。在出现的列表中确保http://android/eclipse/选项被选中,然后单击install按钮,最后安照提示步骤即可完成安装。5)配置android avd。 在android sdk1.5版本以后的开发中,必须至少创建一个avd来模拟一套虚拟设备运行android应用程序。创建avd有两种方式,一种是命令行方式,另一种是在eclipse中创建,无论哪种方式,系统都会在默认文件路径下自动创建一个android文件夹来保存与avd有关的配置信息。这里只介绍在eclipse中创建avd的方法,步骤如下:打开eclipse,单机android小机器人打开android sdk and avd manager;点击左侧面板的virtual devices,再点击右侧的new;填入name,选择target的api, sd card大小任意;点击create avd即可完成avd的创建。如图2-5。图2-5 配置avd2.4 android程序开发2.4.1 程序开发组件 一个android应用程序通常由以下五个组件中的任意多个组成:活动(activity )、意图(intent )、服务(service)、广播接收器(broadcast receiver)和内容提供器(content provider)。 activity负责应用程序的界面显示;intent负责不同组件之间的交互;service在后台运行,负责执行程序中比较费时的任务;而content provider为不同的应用程序之间提供了一种数据共享方式。其中activity组件是每个应用程序所必须用到的,因为任何一个应用程序都必须具备与用户交互的界面。 (一)activity:最基本的应用程序组件,通常表示为一个单独的屏幕。每个activity都是通过继承来被实现为一个单独的活动类,一个应用程序通常由多个activity组成,每个activity都具有自己的生命周期。android系统中通过一个被称为activity栈的东西来管理各个activity之间的关系,当有新的activity启动时,它被置于栈顶,之前的activity被保留在栈中,不再出现在前台,直到当前的activity退出为止。打开前一个 activity可以通过回退来实现。activity的生命周期如图2-6所示,主要有以下4种状态,分别是:1)活动状态,此时activity处于栈顶位置并可以与用户交互,具有可见性。2)暂停状态,此时的activity失去了焦点,但是依然保持可见状态(非全屏或是透明)并保存所有的信息,在内存过低时可能被“销毁”。3)停止状态,此时的activity由于被其他activity所遮挡而处于不可见状态,但是依然会保存所有的信息,在系统内存过低时会被“销毁”。4)结束状态,此时的activity已经被从内存中销毁,下一次启动时需要重置之前被保存的状态。图2-6 activity的生命周期 从上图可以看出,activity有以下三个循环过程:1)一个activity的生命周期从oncreate(bundle)开始,到ondestroy()结束,在oncreate()中会设置所有的状态和资源,在ondestroy()中回收这些资源,例如一个activity中由于存在比较耗时的任务,会重新开启一个后台线程,这个线程可以在oncreate()中创建,在ondestroy()中停止。2)在onstart()到onstop()之间,activity处于生命周期的前两个状态,此时无论该activity是否能与用户交互,都具有可见性,可以保存相关的信息。3)从onresume()开始到onpause()结束,activity处于活动状态,可以实现和用户的交互。activity可以经常在resumed和paused状态之间切换,如当一个新的intent被发送时。activity的整个生命周期由以下几个函数定义,其中每个函数都可以重载。 public class activity extends applicationcontext protected void oncreate(bundle savedlnstancestate); protected void onstart(); protected void onresume(); protected void onpause(); protected void onstop(); protected void ondestroy(); (二)service:没有可视化的用户界面,在后台运行,通常用来完成比较耗时的工作,并且可以与其它程序进行交互。最典型的service应用是在后台播放音乐或是从网络上下载数据。有两种不同的方式可以来启动一个service,第一种方式是通过调用context.startservice()来启动,调用context.stopservice()来结束,这种方式无论调用了多少次startservice()方法,都只需要调用一次stopservice()方法来停止服务。第二种方式是建立一个到服务对象的链接,通过调用这个链接来获得服务。这个链接通过context.bindservice()方法建立,并通过调用context.unbindservice()方法来关闭。多个用户可以绑定至同一个服务提供对象。一个service也具有一定的生命周期,如图2-7所示。图2-7 service的生命周期 从上图可以看出,service主要有以下两个循环过程: 1)完整的生命周期:从oncreate()开始到ondestroy()结束,在oncreate()函数中完成初始化,在ondestroy()函数中释放所有的资源。例如一个音乐播放程序,可以在oncreate()中创建音乐播放线程,在ondestroy()中终止这个线程。 2)活跃的生命周期:从onstart()开始,在这个函数中处理传递给startservice()的intent对象。例如对于一个音乐播放程序,会在intent中找到需要播放的音乐曲目。(三)broadcastreceiver:用来接收广播信息,并给出相应的处理结果。这些广播信息也许来自于系统自身,如电池电量低、拍摄照片、来电话或短信等;也许来自应用程序,比如下载完成时发送通知来告知用户。每个应用程序拥有的广播接收器没有限制,并且可以对任意感兴趣的通知进行响应,广播接收器也不具有用户界面。广播接收器的生命周期很短,只有在广播消息抵达接收器并且接收器中的onreceive()函数被调用时处于活跃状态,一旦onreceive()函数返回后,广播接收器就处于失活状态。(四)intent:协助前面提到的三种组件完成通信过程,一个intent由动作(action)、数据(data)、分类(category)、类型(type)、组件(component)和扩展信息(extra)等内容组成,系统根据intent中所携带的不同描述信息来决定将此intent交给哪个组件以及该组件获得intent后要采取的动作。 (五)content provider:为应用程序之间共享数据提供了一个统一的接口并隐藏了具体的数据来源,android系统中为一些常见的应用(如联系人、音乐、图像等)定义了相应的content provider,调用者通过相应的uri来对数据进行访问。通常content provider将一个应用程序的数据封装,并向需要使用该数据的其他应用程序赋予权限,这样就可以使得数据在多个程序之间共享。需要注意的是,content provider是基于权限控制的,这种做法可以提高数据的安全性。2.4.2 程序界面开发 android系统为开发者提供了丰富的可视化界面设计组件,包括菜单、对话框、按钮、文本框等,其中最主要的界面元素包括以下三类。 1)视图组件(view:是基类android.view.view的一个实例,用来存储屏幕上特定矩形内的布局和内容属性,由视图又衍生出了一个子类widgets(窗体控件),用来处理屏幕区域的测量和绘制,常用的widget包括text, edittext, button,checkbox和scrollview等。2)视图容器(viewgroup:是基类android.view.viewgroup的一个实例,用来承载和管理一组下层的视图和其他视图组,通常称为view的容器。3)布局管理:android使用布局管理器来管理应用程序中各用户界面的组件,这样做的好处是可以避免因手机分辨率、尺寸等的差异导致编写的应用程序无法移植,因为布局管理器能根据运行平台调整组件的大小。所有的布局管理器都是viewgroup的子类,图2-8表示布局管理器中各类的关系。图2-8 android布局管理器的类图 1)linearlayout(线性布局):该布局中元素之间成线性排列,常用的布局有水平布局和垂直布局。 2)relativelayout(相对布局):该布局中元素之间根据相对位置排列,即在指定一个元素位置时往往会以它的父元素或其它元素的位置作为参照,来决定当前元素的位置,这种布局方式相对随意,没有规律性,但必须保证在使用之前其参照物己经存在。 3)absolutelayout(绝对布局):该布局中元素之间根据坐标排列,即将整个手机划分成坐标系,通过指定坐标系中的两个偏移量来决定元素的位置。 4)framelayout(帧布局):该布局为每个加入的组件都创建了一个空白区域(一帧),这些帧会根据gravity属性自动对齐,这样会形成组件叠加的效果。 5)tablelayout(表格布局):该布局中元素之间的排列由表格决定,表格的行和列通过添加tablerow或其他组件来控制,通常加入一个tablerow或是一个组件都代表一行,表格的宽度取决于父容器的宽度,这种布局只是实现方式与表格类似,但元素之间并没有实际的分界线。android中提供了两种方式来利用上面的组件设计布局,一是在xml布局文件中通过设置xml属性进行控制,二是在java程序中通过调用函数进行控制,也可以将这两种方法组合起来使用。android推荐使用xml布局文件的方式来控制用户界面的显示,这样做不仅简单明了,还可以将视图控制逻辑从代码中剥离出来,放入一个单独的文件中进行控制,更好的体现了mvc原则。2.5 android系统数据存储方式 android系统一共提供了四种数据存储方式,分别是sharedpreferences(通过键值二元组存储简单数据)、文件(存储较大规模的数据)、sqlite数据库(存储结构化数据)和contentprovider(用于应用程序之间的数据共享),下面详细介绍每一种方式的具体使用方法和使用场合。1) sharedpreferences:用键/键值形式的二元组来存储数据,支持的数据类型有boolean, string, float, long和integer,通常用来存储默认值、实例变量、ui状态和用户设置等。每个应用程序context均有一个sharedpreferences对象,通过getsharedpreferences()函数来获取该对象,通过getboolean(), getfloat()和getint()等函数读取该对象中存储的数据,这些函数一共有两个参数,第一个参数为键/键值对中的键,第二个参数为指定键对应的键值,如果该键值不存在则以默认的函数返回值代替。修改sharedpreferences对象中的内容需要用到putboolean() ,putfloat()和putint()等函数,并且在修改完后还要调用commit()函数,否则修改无效。2)文件操作:android上层应用程序是用java语言编写的,在java的i/o包中提供了大量的文件读写函数,如java.io.bufferedreader, java.io.fileinputstream, java.io.fileoutputstream等,android对这些函数都有良好的支持,除此之外,android还提供了openfileinput和openfileoutput这两个函数用来简化对文件的读写操作,与java i/o包中的函数所不同的是,这两个函数只能操作当前应用程序所在目录的文件。3)sqlite数据库:sqlite是一种开源的、与底层无关的,轻量级的数据库,最大支持2048gb的数据存储,与其它大多数sql数据库不同的是,sqlite没有独立的服务进程。sqlite中的数据库文件是跨平台的,可以在32位和64位系统之间,甚至big-endian和little-endian两种不同的架构之间自由的拷贝数据,sqlite数据库被用在大量的消费类电子产品中。sqlite数据库具有以下特点:1)无需配置:直接解压可执行文件即可运行。2)没有服务进程:不需要提交到服务器处理后再返回结果。3)单个数据文件:将用户数据存储在一个文件中。4)数据文件可跨平台移植:不受操作系统位数和架构的限制。5)紧凑:不需要系统提供太大的资源,占用不到1m的内存空间就可运行。6)事务性:采用独立事物处理机制,遵守acid (atomicity, consistency,isolation, durability)原则。使用数据库的独占性和共享锁处理事务,这样既允许多个进程并发读取数据库中的数据,又能保证最多只有一个进程写数据,可以有效地防止读脏数据、不可重复读、丢失修改等异常的发生。 3 基于android平台的教学点名软件设计3.1 需求分析 需求分析的任务是调查应用领域,对应用领域中各种应用的信息要求和操作要求进行详细分析,形成需求分析说明书。需求分析的目标是给出应用领域中的数据项、数据项之间的关系和数据操作任务的详细定义,为数据库的概念设计、逻辑设计和物理设计奠定坚实的基础,为优化数据库的逻辑结构和物理结构提供可靠依据。3.1.1 点名系统的主要特点和要求 本点名系统主要是针对学校点名而研发的。学校点名不同于普通的企业单位点名。其特点是体系庞大,班级众多,上课时间各不相同。而且有时会由于临时原因调课,而且在非上课时间学生的流动性比较大,容易在非上课时间或由非点名对象对点名造成干扰。由于学生的出勤情况是和期末的成绩挂钩,因此点名记录的时效性比较长。任课教师需要随时了解自己的课程学生的出勤情况,同时管理人员也要能快速够统计学生们的出勤情况,为了让学生们能够改正不规范的学习态度,要及时给予学生们缺勤的警告和处理。 学校点名系统的主要要求就是能够考察记录学生的上课出勤、旷课、早退、请假的情况。首先点名系统应具有区间划分功能,能够准确的划分上课班次、时间从而对不同的课时进行点名;其次是不能占用上课时间对学生进行点名,为了提高效率节约时间,对点名的速度也是由要求的;然后就是能对学生进行准确识别,杜绝代点名现象;由于非正常出勤在时间上有一定的相似度,因此点名系统必须能区分学生的旷课、迟到、早退、请假情况,遇到学生请假的情况,教师可以在系统中提前输入请假信息不予点名,或者如果请假学生己经被记录为缺勤,老师可以视具体情况更改出勤信息,同样,如果遇到节假口或者特殊事件造成的集体缺勤、迟到或者早退的情况,系统管理员能在事前或者事后进行记录修改;在非点名时间不记录任何点名输入,以排除非点名时间的输入对点名的干扰,同时要求能分辨出数据库中不存在的指纹,排除非点名对象对点名的干扰;保存以往点名记录,可供管理员查询,任课教师可查询本人课程学生以往的出勤情况,被点名的学生可以查询本人以往的点名情况。 技术方面的难点在于,由于高校非固定教室的教学模式,造成需要在各个上课点前,服务器将给定教室内上课学生的指纹在课前分发到各教室,点名后又需要将点名情况传回服务器,通信要求、并发要求、及异常处理问题。3.1.2 设计目标及原则 1)系统设计目标 学生上下课方便直观地扫描二维码进行点名;简捷处理请假、审核,节口设置等相关事项;如实反映每个人的点名情况,杜绝舞弊;管理员可随时查询点名记录与课表档案;管理员可方便地统计、打印或导出点名统计结果;经济合理的运营成本。 2)系统设计原则 先进性:采用当前先进的技术和成熟稳定的设备; 安全性:数据的安全性与课表资料的安全性; 实用性:合理的配置,合适的功能使整个系统运行稳定、可靠并且成本最省; 方便性:功能完善,软件操作清晰简单; 可扩展性及易维护性原则:系统在容量和功能上考虑了用广将来的需求增长,可以随意地增加新的设备或新的系统,并保证使用的一致性; 开放性:为保证其他设备的协同运行,同时考虑到投资者的长远利益,本系统必须是开放系统,并结合相关的国际标准或工业标准执行。3.1.3 系统体系结构分析 管理信息系统的平台体系结构发展历史从单机单用户发展到文件/服务器(f/s)模式,再到客户机/服务器(c/s)模式和浏览器/服务器(b/s)模式。 在本系统中,结合实际使用情况,采用c/s和b/s结合的体系结构,以数据库为服务器端,其它均为客户端。数据库服务器主要为点名资料,点名数据的存取提供服务。web服务器为请假管理、点名数据的查询输出提供服务。需要对数据库进行频繁操作例如添加、修改资料的人员使用c/s客户端,这样客户端功能比较强、安全系数也高。查询模块中则使用b/s,客户端进行数据的查询,这样客户端比较灵活,有ie浏览器,就可以通过网络查询每个人的点名情况,可以不受环境限制。如此处理,可充分发挥各种模式的优越性,避免了b/s结构在响应速度等方面的缺点以及c/s结构在维护和灵活性等方面的缺点。3.2 功能模块设计 经过分析,本点名系统各模块的功能简述如下: 基本信息设置模块:该模块主要用于系统基础信息设置,包括部门结构、学生或教师、班次、排班、点名规则、请假类型、法定节假口等信息。具体包括以下子模块。 1)部门结构 该部分主要是指教学单位的组织结构,用于增加、修改、删除单位的部门,对部门的人员进行设置,可以按树形结构录入。 2)学生和教师信息 该部分主要提供用户注册功能,包括学生和教师,并将注册用户信息保存在对应数据库的数据表中。 3)班次信息 该部分的班次信息是指教学单位实际的班次信息,即学校作息时间。 4)排班信息 该部分主要是指每个学生的课程表、或每个教师的上课表。 5)点名规则 点名规则中包含系统一系列的规定,迟到、早退的处理规定等。 系统管理:这是一个后台管理模块,只有管理员才能使用它。系统管理中有以下子模块: 1)数据管理 数据管理包括系统数据初始化、数据库备份、数据库恢复等批量操作,以及基本数据的添加、删除、修改和查询等操作。 2)二维码管理 二维码管理是由管理员向数据库服务器添加、删除、修改学生/教师基本信息,由服务器自动生成二维码并下发等管理。 3)点名管理 点名管理包括学生/教师点名、点名结果处理、点名统计等功能。 4)用户管理 管理员对学生/教师的权限进行动态设置。 5)系统设置 系统设置包括数据库服务器地址设置、点名时间段设置、系统时间设置等。 查询:该部分是系统结构的核心部分,用于点名结果的查询和点名报表的打印输出。包括以下子模块: 1)点名信息查询 该部分主要查询学生/教师出勤的情况,可单个查询,也可以以部门为单位查询集体出勤结果。 2)异常点名查询 该模块主要用来对学生病/请假、缺签到/退、集体点名异常等一些异常点名进行处理。学生病假、请假时,都没有点名记录,为了准确统计点名情况,并在报表中对病假、请假信息进行统计,必须对这些信息进行详细的登记。缺签到/退处理是对一些特殊情况下没有点名的记录,但又不能在报表中表现出来时进行人为修正。集体点名异常也是对于一些特殊的点名记录进行修正。 3)当前点名查询 该部分用于查询学生当前时间的出勤情况,结合学生的班次设置,可以统计出当前时间的学生出勤情况。可按个人查询,也可以以部门为单位查询。 4)点名报表管理 该部分用于输出系统的点名结果。 系统维护,该模块主要对系统数据进行维护处理,分为以下子模块: 1)管理员设置 该部分主要用于设置系统管理员及其操作密码。管理员权限分为“完全权限”和“普通权限”。完全权限拥有所有的权限,“普通权限”只有查询及部分功能设置权限。 2)清除过期数据 该部分主要用来清除系统过期不用的数据,即对点名记录中过期不再使用的记录进行删除。在删除之前可选择是否备份数据。 3)导入点名数据 该部分用来导入其它点名机器上的点名数据,对于单位有多个点名点的系统,可以将各分点名点的数据集中进行统计管理。用到整个数据库。该功能同时还可用于数据的恢复。 4)导出点名数据 该部分用来将点名机器上的数据导出,对于单位有多个点名点的系统,可以通过此功能将各分点名点的数据导出,汇总到一个集中点进行统计管理,同时可用此功能来进行系统数据备份。用到整个数据库。 5)初始化系统 初始化系统是对整个系统所有登录的数据进行清零处理,回到系统初始安装的情况。用到整个数据库。3.3 数据库设计 数据库的设计是与系统的开发过程紧密相连的。数据库设计是管理信息系统设计的核心。数据库设计是在一个给定的应用环境下,构造最优的数据模式、建立起数据库,使之能有效地存储数据,同时构造出应用系统以支持各种应用的信息处理需求。 3.3.1 概念设计 概念设计是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特点,忽略其本质的细节。它独立于机器以及特定的dbms,是系统中各用户共同关心的数据结构。 根据数据库的设计流程,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。本数据库设计规划出的实体有:学生信息实体、教师信息实体、班次信息实体、点名信息实体等。 学生信息实体e-r图如图3-1所示。图3-1 学生实体e-r图 教师信息实体e-r图如图3-2所示。图3-2 教师实体e-r图 班次信息实体e-r图如图3-3所示。图3-3 班次实体e-r图 点名信息实体e-r图如图3-4所示。图3-4 点名信息实体e-r图3.3.2 逻辑结构设计 逻辑结构设计的任务是将概念结构(即e-r图)转换为与选用的dbms所支持的数据模型相符的逻辑数据模型,并进行优化。根据前面分析得到的e-r图,结合mysql的特点进行修正,得到了如下的主要关系数据表。表3-1 学生信息表stutable名称字段名数据类型是否主码是否非空学号stunumberintegeryesno学生姓名stunametextnono性别stusextextno班级代码classidintegernono密码passwordtextno二维码eidtextnono表3-2 教师信息表teatable名称字段名数据类型是否主码是否非空教师代码teanumberintegeryesno教师姓名teanametextnono性别teasextextno角色代码roleidintegernono密码passwordtextno备注describetextno表3-3 班次信息表名称字段名数据类型是否主码是否非空班级代码classidintegeryesno班级名称classnametextnono备注describetextno表3-4 点名信息表名称字段名数据类型是否主码是否非空点名表iddmidintegeryesno学号stunumbertextnono教师代码teanumbertextnono班级代码classidintegernono点名时间dmtimetimenono日期dmdatedatenono4签到系统的设计与实现4.1 数据库设计 本系统涉及到签到数据的统计处理等,因此需要进行数据库设计。本系统共设计了两张数据库表,分别是签到信息表qiandaotable和名单信息表mingdantable。见表4-1、4-2所示。表4-1 签到信息表qiandaotableidintegerprimary keydatetextnot null xuehaotextnot null nametextnot null 表4-2 名单信息表mingdantableidintegerprimary keyxuehaotextnot null nam

温馨提示

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

评论

0/150

提交评论