基于Android平台课堂点名系统的设计与实现

2014-01-21 00:53弋改珍袁岚清
电子设计工程 2014年22期
关键词:考勤调用应用程序

弋改珍,江 萧,袁岚清

(咸阳师范学院 信息工程学院,陕西 咸阳 712000)

近年来,随着移动通信,特别是基于Android平台移动终端的飞速发展,无线网络高速接入Internet已成为现实,移动用户可以方便快捷地享受到Internet提供的服务,使得移动终端成为互联网的终端,同时也使得基于Android平台的移动终端应用越来越广泛。

文中基于软件工程的思想,采用Eclipse作为开发平台,以SQLite为数据库管理系统,在Android平台上设计开发了课堂点名系统,该系统提供录入学生信息、查询、点名、统计等功能,可以方便教师进行课堂点名,提高课堂考勤的效率。

1 Android应用的构成和工作机制

Android 应用程序是由 Activity、Intent Receiver、Service、ContentProvider4部分组成,但并不是每一个Android应用程序都必须由这4部分组成。在应用程序中使用时,需要在配置文件Android应用程序中所必需的,用于定义应用程序的组件、组件的功能以及必要条件等[1]。Android应用的构成和工作流程图如图1所示。

图1 Android的构成和工作机制Fig.1 Structure and work principle of Android

在Android中,每个界面使用一个由基类Activity派生的Activity子类实现,每个Activity子类都是独立的。Activity类可以显示View控件组成的用户接口,并对事件做出响应。Android在实现多界面显示时,将历史显示屏幕存储在堆栈数据结构中,返回时可以逐级返回[2]。

多界面之间的切换调用Android的专有类Intent,Intent数据结构中最重要的部分是Action和Action对应的数据。典型的Action有:MAIN、VIEW、PICK、EDIT等,对应的数据以URI形式表示[3]。使用Intent Filter描述如何处理Action、如何表示Action 的 URI。 Intent Filter定义在 AndroidManifest.xml中[4]。

从一个界面切换到另一个界面调用startActivity()方法。通过解析各种Intent,就可以简单地从一个屏幕切换到另一个屏幕。向前导航时,活动将会调用startActivity()方法,然后系统会在所有安装的应用程序定义的Intent Filter中查找,找到最匹配的Intent对应的Activity。新的Activity接收到Intent的通知后,立即开始运行。

Broadcast Receiver[5]使应用程序对外部事件做出响应。Broadcast Receiver只能通过 Notification Manager来通知用户。它既可以在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册。各种应用通过调用Context.sendBroadcast()方法将它们自己的Intent receiver广播给其他应用程序。

Service[5]类似于Windows系统中的Windows服务,是一种没有界面的应用程序,具有较长的生命周期。通过调用Context.bindService()方法,连接到一个服务上,当连接到一个服务之后,还可以通过服务提供的接口与它进行通信;通过调用Context.startservive()来启动一个服务,从而使该服务可以在后台运行。

Content Provider[6]是对外提供的数据接口,类似于普通的Web应用的一个Web Service接口,按照标准开放出一个接口,供其他应用获取数据。Content Provider类实现了一组标准的方法,从而使得其他的应用程序能够保存或读取此Content Provider的各种数据类型。

2 点名系统功能模块图

点名系统主要用于教师在课堂中进行学生考勤管理、考勤数据存储、学生信息考勤查询等。使用该系统可以提高教师课堂考勤的效率。具体实现功能如下:

1)系统主界面:提供图形化的菜单功能。

2)学生信息管理:包括学生编号、学生姓名、学生性别、学生性别能属性,提供学生信息的添加、修改、删除功能。

3)学生点名管理:包括点名时间、学生信息、考勤情况等。

4)数据查询:提供按时间段和按照学生姓名查询学生的考勤信息。

系统功能结构图如图2所示。

图2 系统功能结构图Fig.2 The system function structure diagram

3 数据库设计

点名系统的数据使用SQLite进行数据库管理[7]。SQLite是开源的、嵌入式数据库管理系统。SQLite可以完成数据库管理所需要的创建数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据以及查询表中的数据。也可以使用SQLite提供的SQL特征,完成简单的数据统计分析功能。

Android应用程序访问数据库的接口是SQLiteOpen-Helper类,使用这个类可以完成对数据库的操作。在设计过程中,从SQLiteOpenHelper派生自己的子类DBHelper。创建数据库时使用SQLiteOpenHelper的onCreate()方法,升级数据库时使用onOpgrade()方法。

点名系统中DBHelper.java(数据库操作类)的实现过程:

1)创建数据库是实例化SQLiteDatabase的一个对象:

privateSQLiteDatabasedb;

2)创建数据库及其表:

public void onCreate(SQLiteDatabasedb){

this.db=db;

db.execSQL(CREATE_TBL1);

db.execSQL(CREATE_TBL2);

}

3)给数据库表中插入数据:首先调用getWritableDatabase()方法将数据库设置可写,然后调用数据库的内部方法insert将Activity中输入的值添加到数据库表中。

public void insert1(ContentValues values){

SQLiteDatabasedb=getWritableDatabase();

db.insert(TBL_NAME1,null,values);

db.close();

}

4)调用数据库内部的rawQuery()方法,使用SQLite中的Cursor从指定的表或者按照条件创建查询:

public Cursor query3(String name){

SQLiteDatabasedb=getWritableDatabase();

Cursor c=db.rawQuery("Select rid as_id,name,date,statue from records where name='"+name+"'",null);

return c;

}

5)删除数据调用 SQLiteDatabase中内部方法delete(),修改表中的数据时调用update()方法。

4 详细设计与实现

4.1 界面设计

点名系统中的界面包括:

AddStudentActivity.java:添加学生界面,用来添加学生信息

AlterRecordActivity.java:更改记录界面,用来更改记录信息

AlterStudentActivity.java:更改学生信息界面,用来更改学生信息

CallActivity.java:学生点名界面,用来在线点名

RollCallActivity.java:程序主运行界面

QueryActivity.java:数据查询界面,用来进行数据查询

StudentInfoActivity:学生信息管理主界面

Android开发采用MVC模式,使用Android中的Activity进行界面开发,主界面的布局信息存放在/layout/main.xml文件中。实现主界面时,从Activity类中派生RollCallActivity子类,使用setContentView(R.layout.main);将布局文件加载到主界面并显示其内容,使用map0.put("ItemImage",R.drawable.a1);给主界面上添加图标,map0.put("ItemText","学生信息理");添加文字。

为界面上的图标和文字创建Activity转换是的监听器设置:

1)创建一个 intent类

Intent intent=new Intent();

2)设置Activity跳转的关联:

intent.setClass(RollCallActivity.this,StudentInfoActivity.class);

主界面设计流程如图3所示。

图3 界面设计流程图Fig.3 Flow diagram of interface design

4.2 学生信息的录入

1)学生信息中“性别”字段值的录入

为了便于“性别”字段的录入,实例化一个ArrayAdapter对象,调用setDropDownViewResource()方法产生一个下拉列表,调用ArrayAdapter的add()方法输入下拉列表的值,最后调用setAdapter()方法将输入的值添加到下拉列表中。

2)将输入的字段值保存到数据库表中

实例化一个名为btnSave的按钮,当一条记录录入结束后,单击该按钮将录入的记录保存在数据库表中。在学生信息录入过程中,如果某个字段的值为空,则使用Android中的消息机制,调用Setmessage()方法提示重新输入。如果字段值不为空,则实例化一个ContentValues对象,然后调用put()方法,让ContentValue存储键值对,最后调用数据库的insert()方法将录入的信息存入数据库中。设计过程如图4所示。

图4 录入学生信息流程Fig.4 Flow diagram of inputting student information

4.3 点名模块

系统自动生成点名的时间,通过选择学生列表,并设置出席状态为:出席、迟到、旷课、病假、事假等类别,保存学生的出勤情况,供日后查询。

在点名界面CallActivity中,使用Date()获取系统时间,设置点名的时间;点名时,将学生到课情况设置为“出席”、“迟到”、“旷课”、“病假”、“事假”5 种状态。 用 ArrayAdapter对象实现,状态信息使用下拉列表显示。这样,点名时,教师在提供的下拉列表中选择学生的当前状态,实现过程与录入学生信息中的“性别”字段值的方法类似。

将学生的ID、姓名、点名时间、状态信息保存在数据库表中。

4.4 数据查询模块

调用SQLite数据库的 getReadableDatabase()方法,设置数据库为读方式,用下面的语句实现按照日期进行查询:

db.rawQuery ("Select rid as_id,name,date,statue from records where date between'"+d1+"'and'"+d2+"'",null);

按照姓名进行查询:

db.rawQuery ("Select rid as_id,name,date,statue from records where name='"+name+"'",null);

5 结论

本文以Eclipse为开发平台,利用Android嵌入的SQLite数据库管理系统,设计开发了课堂点名系统。该系统实现了系统主界面、学生信息管理(包括信息的录入、增加、删除、修改)、点名(包括设置学生到课状态)和按照条件查询功能。本系统实现的功能具备了教师在课堂使用的特点,操作方便、简洁。点名系统存在的问题是没有考虑到教师随机抽查点名的情况。这也是该系统需要进一步完善的功能。

[1]XXX.基于Android的课堂签到系统[D].南京:中南大学,2013.

[2]施金兰.基于Android平台的网络共享研究与实现 [D].上海:华东师范大学,2011.

[3]Android应用开发帮助文档[EB/OL].[2013-06-15]http://wenku.baidu.com/linkurlXwz4bMjStWGzGPLBoWqTHKSo2BvfM iDaoToXxz1zbtmMYpXOpGo9-3WAa4IMusk7Z4q.

[4]张岩龙.基于嵌入式系统的802.11b无线网络安全研究及应用[D].成都:电子科技大学,2005.

[5]Android developers[EB/OL].[2013:05-15].http://developer.android.com/guide/components/fundamentals.html.

[6]Android project[EB/OL].[2013-05-20].http://source.android.com/.

[7]周艺环,任伟,张旭,等.电子式互感器异常报文数据库设计[J].陕西电力,2014(5):65-68.ZHOU Yi-huan,REN Wei,ZHANG Xu,et al.Electronic transformer exception message database design[J].Shaanxi Electric Power,2014(5):65-68.

猜你喜欢
考勤调用应用程序
核电项目物项调用管理的应用研究
删除Win10中自带的应用程序
基于人脸识别技术的考勤应用研究
智能人脸识别考勤系统
浅谈电子考勤的优势及简介
LabWindows/CVI下基于ActiveX技术的Excel调用
谷歌禁止加密货币应用程序
便携式指纹考勤信息管理系统设计
基于系统调用的恶意软件检测技术研究
利用RFC技术实现SAP系统接口通信