您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于Android的课程管理系统

基于Android的课程管理系统

来源:意榕旅游网
 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

摘要

近年来移动智能终端已成为人们获取信息的重要来源,同时市场上已出现了一大批基于移动设备的优秀软件,这极大方便了人们的生活。

本系统基于Android平台为学生用户群体设计一款新的课程管理软件。实现了每日视图、周视图、上课提醒、上课期间响铃模式切换、单双周(默认全部)等基本功能,另外还提供了当前周设计、签到记录设计、考试提醒、签到与成绩统计分析、分享等功能,以更好地满足用户对一款课程表应用需求。

关键词:Android;课程表;SQLite

I

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

Abstract

In recent years, the smart mobile terminal has become an important source of information for people. While, it’s has a large number of excellent software for mobile devices on the App Market, it greatly facilitated people's quality of life.

The system is also based on the Android platform for student’s community to design a new course management software. It has implement the basic functions, such as the day view, week view, class remind, auto change the ringing mode during class and the single and double weeks (default setting is all weeks). In addition, it also provides some new functions, such as the current week function, sign class records, exam reminder, analysis the score with the attend records and share information to other App what you want. In order to better meets the requirements of a user on a course management App.

Keywords: Android; Timetable; SQLite

//英文翻译很糟,

//本毕业设计是Android的课程管理应用,有兴趣的学弟学妹们,需要的话可以联系QQ:2893031974。实现的功能任务书里面都写好了,没有发布主要是没时间去维护,市场上的Timetable已经足够好了。

//售价:400,需要的联系。非诚勿扰。 //另,代码近1万行。

II

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

目录

1 引言 ...........................................................................................................................................1 2 系统分析 ...................................................................................................................................3 2.1 系统实现目标 ....................................................................................................................3 2.2 系统运行环境 ....................................................................................................................3 2.3 实现思路和方法 ................................................................................................................4 2.4 系统开发环境 ....................................................................................................................4

2.4.1 后台数据库 ...................................................................................................... 5 2.4.2 开发平台 ......................................................................................................... 5 2.4.3 系统开发环境 .................................................................................................. 5

2.5 数据流图 ............................................................................................................................6 3 总体设计 ...................................................................................................................................8 3.1 系统总体设计描述.............................................................................................................8 3.2 系统模块图 ........................................................................................................................8

3.2.1 系统总体结构 .................................................................................................. 8 3.2.2 系统模块描述 ................................................................................................ 10

3.3 数据库总体设计 .............................................................................................................. 10

3.3.1 数据库设计介绍 ............................................................................................ 10 3.3.2 E-R图 ............................................................................................................. 11 3.3.3 数据库表设计 ................................................................................................ 12

4 详细设计和系统实现 .............................................................................................................. 15 4.1 详细设计和系统实现 ....................................................................................................... 15 4.2 功能模块的设计和实现 ................................................................................................... 15

4.2.1 课程数据增、删、改模块............................................................................. 16 4.2.2 课程数据显示视图模块 ................................................................................ 17 4.2.3 数据库读写模块 ............................................................................................ 18 4.2.4 系统设置模块 ................................................................................................ 18

I

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

4.2.5 系统中其他功能的实现 ................................................................................ 19

5 评估测试 ................................................................................................................................. 21 5.1 测试环境 .......................................................................................................................... 21 5.2 测试计划 .......................................................................................................................... 21

5.2.1 交互测试 ....................................................................................................... 21 5.2.2 功能测试 ....................................................................................................... 22

5.3 测试结果与评价 .............................................................................................................. 25 6 结束语 ..................................................................................................................................... 26 参考文献 ..................................................................................................................................... 27 致谢 ............................................................................................................................................ 28 附录(部分程序源代码) .......................................................................................................... 29

II

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

1 引言

在这个信息化的时代,手机已经成为我们日常生活中不可缺少的获得信息的渠道。随着科技的发展,手机也越来越智能化,所以我们的依赖性也越来越大,越来越离不开这些给我们提供日常信息的工具。手机也已不再仅仅是简单的人与人通话的工具,而是在很大程度上成为了我们获取信息的一个更好的渠道。所以,开发一款好的手机软件是相当必要的。

Android是Google在2005年收购的一款基于Linux内核为触摸屏设计的半开源智能手机操作系统,主要应用与移动设备,Google成立了Open Handset Alliance(OHA,开放手机设备联盟)。Android系统最初由Andy Rubin开发制作,成立的OHA用来共同研发改良Android系统,随后,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。如今Android操作系统被扩展到了平板电脑以及其他领域。从2009年4月30号官方发布1.5 Cupcake版本后Android更新的速度飞快,到了2010年12月7号发布了Android 2.3 Gingerbread,其用户量已经爆发式的增长,每年的激活设备量不断的增加,而且当时的Android Market中的应用数量也在飞快增长,给开发者带来了一个潜力很大的平台。再到2011年10月19号,Android 4.0 Ice Cream Sandwich发布,Google带来了全新的UI界面,相对于2.3是个很大的跨越。 Android 4.0后Google同样是以很快的速度发布了Android 4.1 Jelly Bean 和Android 4.2,截至本文撰写时,Android最新版是Android 4.2.2。如今的Android相对于2009年第一版本已经是很成熟的平台了,本系统之所以选择了Android一方面是由于上述原因另一方面则是考虑到Android的普及化,Android设备在价格上较iOS设备低廉。

由于大学教学不同于以往小学、初高中时期,采取的是选课制,在规定所修的课程内,选择你喜欢老师的课程,这种自由的选课制度对于初入大学的同学们来说,是新颖的,也是体现自由、选择自己感兴趣的课程学习,这无疑给大家更大的激情去学习,同时选课制在当今网络如此发达、人的自由意思的环境下是不可阻挡的趋势。 除了选课制带来的好处外,选课制对同学们来说也是一种负担,由于上课的时间、地点、课程信息的问题,导致安排自由时间的复杂度增加,给同学们带来了一定的不便利因素。所以针对大学生的课程表应用应运而生,它们拥有众多本不属于课程表应有的功能,国内在这块市场中不止一家公司,他们都希望成立自己的社交平台;国外则不然,他们的课程表应用只干份内的事,对于这点我很是赞同他们的看法。但也不代表否定了国内市场上众多的课程表类应用,因为他们是商业公司,需要盈利来满足自己公司的运营,这是可以理解的。由于国内课程表应用太过臃肿,以及国外应用并

共 40 页 第 1 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

不是很符合中国的大学生,出于这两点,我想做一款解决这两个矛盾的课程表,也就是自己的毕业设计课题。

在中国,大学生是一个庞大又有活力的群里,而平时需要安排自己的时间的需求是很明显的,所以针对大学生的课程表应用便是我的设计目标。目前移动端课程管理类应用已经很多已经趋向于饱和了,而且大多包含社交功能。这样的好处是有的,基本能覆盖一大部分学生的需求。但是在我自己的调研中发现并不是每个学生都愿意让这种应用有太多的功能,甚至可以说与其他应用重复的功能,

第一, 移动端大家已经装了不下2款LBS社交网络应用了,而且都出自大公司之手,例如说“微信”,这个出自腾讯公司的移动LBS社交软件,几乎每个有智能手机的用户都会安装并且应用的频率很高,而且各个群体都有,不会仅限于学生这一个单一的群体;

第二, 并不是每个学生都喜欢每种软件都具有社交功能,尤其是对隐私问题很关注的学生,这就导致一个严重的问题,用户量上不去,用户量上不去也就意味着在课程表系统中做社交功能就没多大意义了,这是个互相制约的问题,具有社交功能导致用户量下降,不具备社交功能又满足不了小部分学生的需求;

第三, 从社会来看,基于课堂的社交更会导致一部分学生上课注意力下降,特别是自制力差的学生;

第四, 课堂的社交更是一种弱关系,而像QQ,微信则属于强关系,这样的社交平台具有的好处是用户黏性强。弱关系社交都想要从弱关系转至强关系,大多数采用例如读取手机通讯录找到同在这个平台的朋友,但是读取通讯录是个很敏感的隐私的问题,这个对于注重隐私的用户是相当敏感的,而基于课堂的社交更加是一个弱关系,因为其针对的群体的特殊性,决定了用户规模不会超出全国大学生总数的范畴,同时每年都会有毕业生,这些毕业生也不会再是其用户了,而每年入校的新生在同类产品如此多的情况下选择某一款课程表应用可能性也会大大减小。

基于这几点,其中最重要的是针对学生的调研,可以很清楚的在众多产品中定位自己的系统功能设计。

共 40 页 第 2 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

2 系统分析

2.1 系统实现目标

目标1:既然作为一款课程表类app,自然是需要课程的基本管理即增、删、改、查,其中“增”的方式是手动添加;删除录入的信息,但是在数据库中不是真正的删除,作为一个字段的标记式删除,首先这么设计的原因是系统不会处理过多数据,这也让Undo Bar的实现成为可能;“改”提供了对录入信息的修改;“查”在系统的各处都有体现,从数据库拉取数据,提供各种信息的显示。

目标2:上课提醒、以及上课自动切换震动模式。可以让学生在上课前知道下一节是什么课,上课切换震动也是为学生提供便利防止上课铃声响打断老师的讲课思路。

目标3:课程总表,对一星期的课表一目了然,同时可以直接在总表中创建课程,还有快速判断时间的设计。

目标4:签到统计,每周每次课的签到信息,集中显示以了解自己的上课情况,对自身做出监督。

目标5:考试提醒,对考试的设定以及提醒功能。

目标6:考试成绩与签到的分析柱状图,提供一个图谱用来了解自己上课情况与成绩的关系。

目标7:分享,将上课、签到、成绩信息分享到其他应用程序。

2.2 系统运行环境

“课程管理系统”是基于移动平台,如今的移动领域有Apple的iOS,Google的Android,以及Microsoft的Windows Phone 三大平台,其中Android的市场份额在三大平台中是最大的,因为Android的框架结构中处于顶层的是应用开发层,且是基于Java语言的开发。本“课程管理系统”故采用Android平台为广大的大学生提供一个课程管理的解决方案。

为了设计更好的用户体验,系统采用Android 4.1.2的SDK开发,这直接导致的是低于此版本的Android是无法使用本应用的,因为应用到了4.0所特有的特性。

共 40 页 第 3 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

系统运行环境:平台Android,SDK版本4.0+。

2.3 实现思路和方法

系统的实现思路:首先由用户手动录入本学期所选的课程,课程的信息包括课程的基本信息例如科目、教学楼、教室号、课程周数(从第几周到第几周),将这些基本信息存储入数据库后,系统对这些数据进行处理,分析其上课周数对比当前周用来判断本周是否有课,再决定已何种方式给用户提示,再分析上课的时间并读取用户设置提醒的时间设定课程提醒启动的时间。整个系统的实现也是传统的MVC设计模式,所谓MVC,也即Model、View、Controller,如图2.3.1所示,

图2.1 MVC设计模式图

其中Model用户保存上下文信息、View用于显示、而Controller则是用于处理用交互。交互只到Controller,显示更新只通过View进行。本系统同样也是基于这套设计模式分为几大模块,UI模块、I/O模块、Service模块、控制模块四大模块。UI模块负责系统内所有界面的更新,I/O模块负责读写数据库,Service模块则是负责控制手机的响铃即上课提醒,以及手机的响铃模式即震动。

2.4 系统开发环境

Android的应用层软件的开发是基于Java的,故开发环境选择的是Eclipse,开发Android需要安装Google提供的ADT插件,虽然Google在2013的I/O大会上发布了自己的基于idea的开发工具Android Studio 0.1 Preview版本,但是在本人已经开发完90%之后才发布,故继续使用Eclipse,Android的SDK使用版本是4.1.2,另外JDK版本是1.6 。

共 40 页 第 4 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

2.4.1 后台数据库

SQLite简介: SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。需要做的仅仅是把它正确的编译到你的程序。SQLite具有零配置、可移植、Compactness、简单、灵活、可靠的特点。

图2.2 SQLite数据库结构图

SQLite架构:SQLite采用了模块的设计,它有三个子系统,包括八个独立的模块构成。因此移动平台的数据库解决方案大多是采用SQLite,能够满足开发者的一般数据的存储需求。

2.4.2 开发平台

开发平台:Android

2.4.3 系统开发环境

开发环境:Windows 7 + Eclipse + Android SDK + ADT

共 40 页 第 5 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

2.5 数据流图

数据流图是结构化系统分析的工具。数据流程有四种基本符号:外部项、数据流、处理逻辑(加工)、数据元素和数据存储。本系统数据流总图,表示了系统基本的数据流程。为表达稍为复杂的实际问题需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。先把整个数据处理过程暂且看成一个加工,它的输入数据和输出数据实际上反映了系统与外界环境的接口。这就是分层数据图的顶层,也称作总体图。本系统中数据库的读写接口作为一大重点,连接着数据库、输入和输出,如图2.3所示。

图2.3 系统总体图

共 40 页 第 6 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

下面对数据的加工做进一步的细化。本课程管理系统的数据处理,根据功能上包括4个子系统,分别为数据输入/数据子系统、数据查询子系统、数据统计子系统、设置子系统。根据进一步的细化分析,我们可以画出表示这几个子系统的数据流,即课程管理系统的零级图,如2.4所示。

图2.4 系统零级图

共 40 页 第 7 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

3 总体设计

3.1 系统总体设计描述

系统的设计阶段的需要解决的问题是构建整个项目的大体框架,因为如果自己没有一个明确的框架,那么代码写到后面的话也就是越来越乱,剪不断理还乱的结果了。所以说设计的阶段很重要,例如建房子需要先把图纸画好,就算是动工也是先打好框架。同样软件工程也是一门工程学,所以同样需要对要设计的系统“画”一个设计的框架。

总体设计是软件开发人员根据软件需求说明书的要求,运用结构化程序设计思想,将软件自上而下逐层分解成多个软件模块,直到分解成每一个模块只具有单一的功能,能用一个或几个程序实现的树形结构为止。总体设计阶段还要定义个模块的数据传递关系,数据的存储关系,输入输出格式,已经对运行环境的要求。

经过需求分析阶段的工作,课程管理系统所需要完成的功能即需要做什么已经了然于心了,现在就是设计整个系统的工作了。

总体设计过程可分为两个主要阶段:功能设计,根据大学生们对课程管理的需求做出相应的功能上的决策,结合网上调研跟线下的调查决定设计这个应用的相应功能;结构设计,确定整个软件的结构,由哪些子类别所组成。其中功能设计是在需求分析的基础上进行的,这里的“功能”其实是泛指,例如软件所要实现的功能,还包括系统设计时候的数据处理,实现功能的算法。而结构设计,是将整个系统按照不同的功能和层次划分为一个个相对简单而独立的模块,每个模块实现系统的某一项具体功能,自顶向下,逐步细化,这样增加了软件的可复用性,且对于代码的结构则更加清晰明了,阅读起来也更加的有条理。

3.2 系统模块图

3.2.1 系统总体结构

模块层次图,是描述软件层次特性的工具,描述某个模块负责管理控制哪些模块以及上下级模块或者是统计模块之间的数据传递关系,能够清楚的表明系统的结构,并可用来粗略的估计系统的规模。优点也是显而易见的,能够很清楚的表达系统结构,保证思路清晰,缺点是只能粗略的表达而不能表达整个系统的逻辑。

根据需求分析得到的数据流图,由用户的需要以及完善系统所添加的一些功能得

共 40 页 第 8 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

到系统的模块层次图。系统主要实现数据录入(添加课程)、数据查询(显示课程的各种信息)、数据统计(签到统计等)以及数据分析(与成绩的关联对比分析)。见图3.1。

图3.1总体模块图

其中数据显示是一个稍微复杂些的模块,数据处理包括数据的增、删、改、已经保存和系统数据库表数据维护,数据增加包括了上课科目信息的录入、教学楼的录入、上课课程信息的录入还有考试信息的录入,把课程显示进行进一步细化得到图3.2。

图3.2 显示模块细化

共 40 页 第 9 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

3.2.2 系统模块描述

系统模块描述: 1) 课表管理系统

功能:用于协调管理整个系统; 2) 数据库读写模块

功能:统一系统的读写数据库操作; 3) 数据显示视图模块

功能:将数据按照不同的展示要求呈现给用; 4) 系统设置模块

功能:设置系统的偏好信息,如上下课时间、一学期周数、当前周等; 5) 数据的增、删、改模块

功能:用户添加、修改或是删除教学楼、科目、课程和考试的条目; 6) 其他

功能:用于便捷处理的工具类,例如计算当前周、分享模块等。

3.3 数据库总体设计

3.3.1 数据库设计介绍

数据库是指自描述的完整记录的集合。数据库除了包含用户的源数据外,还包含关于它本身结构的描述。另外,数据库还包含用来表示数据之间的关系和提高数据库应用的性能的索引。最后,数据库还包含关于使用数据库的应用程序的数据。 本系统为课程管理,即管理学生一个学期内的所有课程。正如我们所知道的,一节课它有上课的课程名、老师、上课的地点、时间等这些基本属性。而这些基本属性中课程名与老师可以作为一个单独表存在,即科目表。某一科目所有的基本属性有两个科目名和教师,而上课地点与时间并不能作为科目表中的字段,因为某一科目在一周中可能有多节课而且在不同的时间段。而上课的地点即教学楼信息同样可以作为单独的一张表,减少了课程表中的重复。

共 40 页 第 10 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

3.3.2 E-R图

概念模型是对信息世界建模,所以概念模型能够方便、准确地表示出信息世界中的常用概念。概念模型的表示方法很多,其中最为著名最为常用的是P.P.S.Chen于1976年提出的实体-联系方法(Entity-Relationship Approach)。该方法用E-R图来描述现实世界的概念模型,E-R方法也称E-R模型。E-R图由实体、实体的属性以及实体之间的关系三部分组成,实体是具有相同的性质并且彼此之间可以相互区分的现实世界对象的集合;属性是实体所具有的特征,它是描述实体或者关系的性质的数据项,实体之间的关系通过直线连接。

在本课程管理系统中,主要有以下实体:科目、教学楼、课程、考试。科目的属性有_id、科目名、教师名,未包含开课以及结课的周数,因为这个并不是固定的,且其中ID是自增长而且是唯一编号;教学楼的属性有_id与教学楼名称;课程实体包含的属性相对来说多一些,主要有星期几、第几节、科目ID、上课周数、教学楼ID、教室号码、备注、签到信息、颜色、提前提醒时间等;考试的属性有引用的科目ID(这个ID只有被课程引用才会出现在考试表中)、考试的具体时间、考试的教学楼、考试的教室号、考试最后的分数和科目的总分、颜色、考试提醒。

图3.3 数据库E-R图

如图3.3所示,图中实体的属性只选取重要的属性。每一个课程包含了教学楼实

共 40 页 第 11 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

体、科目实体还有自身的属性(只列举重要的),每个被课程表引用的科目都会产生一个课程测试的实体,它也包含了教学楼等属性。这样设计的优点有利于扩展系统的功能,例如我可以给课程实体和课程测试实体添加属性成为当前系统的规模。同时给查询数据库也带来了诸多方便,只需在查询的时候增加新增的属性即可。

3.3.3 数据库表设计

一共设计了4张表,分别是:

1) 教学楼表(教学楼的ID, 教学楼名);

2) 科目表(科目的ID, 科目名, 科目的昵称, 教授老师名);

3) 课程表(课程的ID, 星期几, 第几节课, 科目的ID, 上课周, 教学楼ID, 教室号, 签到标记, 颜色代码, 提前提醒时间, 删除与否); 4) 考试表(考试课程的ID, 科目ID, 考试时间, 教学楼ID, 教室号, 考试得分, 总分, 得分与否标记, 颜色代码, 提前提醒时间, 删除与否);

用这四张表来存储所有需要用到的信息,具体内容如下表格:

表3.1 教学楼表(t_

buildings)

字段 _id building 数据类型 integer text

是否主键 true false 说明 教学楼的ID 教学楼的名字 表3.2 科目表(t_courses)

字段 _id course nick 数据类型 integer integer text 是否主键 true false false 说明 科目的ID 科目的名字 科目的昵称 共 40 页 第 12 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

teacher text false 授课老师名 表3.3展示了课程表的一些说明,在数据库系统中这是最重要的一张表,所有的系统功能都围绕这个实现。其中color与json字段作为预留字段,本系统中暂不实现其功能。

表3.3 课程表(t_curriculunms)

字段 _id dayOfWeek onClass 数据类型 integer integer integer 是否主键 true false false 说明 课程的ID 星期几 一天中的第几节课 科目的ID 上课的周 教学楼的ID 上课的教室号 备注信息 签到信息 课程显示的颜色 课程是否被删除 提醒提前的分钟数 预留字段,用于同courseId weeks buildingId roomNum remark sign color deleted remind integer integer integer text text integer integer text integer false false false false false false false false false json text false 共 40 页 第 13 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

表3.4 考试表(t_exams)

字段 _id courseId date 数据类型 integer integer integer 是否主键 true false false 说明 考试课程的ID 科目的ID 考试时间(具体到分) buildingId roomNum scores totalScores sign integer text integer integer text false false false false false 教学楼的ID 上课的教室号 课程的得分 课程的总分 是否填入分数标记 color integer false 考试课程显示的颜色 课程是否被删除 提醒提前的分钟数 预留字段,用于同步 deleted remind text integer false false json text false

共 40 页 第 14 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

4 详细设计和系统实现

4.1 详细设计和系统实现

详细设计阶段的目标:确定应该怎么样实现系统,给出软件模块结构中各个模块内部过程描述。该阶段是用程序设计语言来描述所要完成系统的功能,即代码实现的一个设计过程。详细设计阶段要确定模块的算法以及数据结构,其任务是设计出系统的蓝图,这样就可以在后期系统的实现中根据详细设计中的蓝图很合理的设计每一个模块。其中需要遵循的几个原则:模块的逻辑描述要清晰易读,正确可靠;设计出的处理过程应该尽可能的简单易懂;选择恰当的描述工具来描述各个模块的算法。 系统实现即编码阶段。编码就是指将软件详细设计的说明书用程序设计语言翻译出来的代码。软件的设计开发过程,最后就是通过编码对功能的实现。运用软件功能方法设计软件,主要是为了提高软件质量,软件质量在很大程度上取决于设计的质量,同时编码的好坏也是影响软件质量的十分重要的因素。另外,编码质量的好坏,也直接影响了软件测试和软件维护工作的进行。但是系统实现是在系统设计的基础上的,基本上定下了系统设计,就基本上定下了系统实现。

4.2 功能模块的设计和实现

本章介绍本系统的各个模块的设计和实现。

首先在Eclipse中配置好ADT和Android SDK等开发环境然后新建一个Android项目,项目名为Timetable,Android项目中的AndroidManifest.xml文件中配置本软件需要使用的权限。在Android中权限是通过配置文件中声明来向系统请求权限,安装时会将软件所请求的权限显示出并要求用户授权。

在本系统中,所需要的权限有:CHANGE_CONFIGURATION,VIBRATE,WRITE_EXTERNAL_STORAGE以及WAKE_LOCK四项权限。

Android开发中用户界面和代码是分开的,我们可以在layout布局中布局好界面,然后再来写代码,几个重要的布局以及本设计所涉及到的布局如LinearLayout、RelativeLayout、GridLayout。

课程管理软件主要功能有: 1) 显示当天的课程;

共 40 页 第 15 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

2) 显示本周的课程; 3) 显示考试的课程;

4) 分析考试分数与签到信息以图表的方式显示给用户; 5) 显示当前周;

6) 上课提醒、切换响铃模式; 7) 考试提醒;

8) 分享到其他应用程序。

4.2.1 课程数据增、删、改模块

打开“课程表”进入到dayView模式之后,在软件的ActionBar上有三个功能按钮,分别是切换view、显示当前周、添加课程,点按“view”下拉菜单可切换显示模式,分别有日视图、周视图、统计视图(考试系统),点按“当前周”按钮弹出Toast显示当前是第几周并定位到今天,点按“添加课程”按钮可进入添加课程模式,也即课程数据的录入模块。

首先要想添加课程,则需要先在设置页面中选择“教学楼”以及“科目”来添加本学期所有科目名称以及上课地点的基本信息,设置完这些基本信息后在“添加课程”Activity中就可以添加相应的课程。

进入添加课程后,其中星期几选项是根据用户点击“添加课程”时Page所在星期几自动判断,减少了用户的输入操作,整个添加课程需要用户输入的数据有:教室号、备注信息,其他如科目、教学楼、上课周、上课时间、提醒时间使用下拉菜单帮助用户快速输入,科目与教学楼的数据需要先在设置界面手动添加。点按左上角的保持按钮即可保存输入课程信息到t_curriculums表中。

在“添加课程”的Activity中,ActionBar具有三个按钮,分别是返回上层、放弃、保存,符合Android Design的设计标准,用户很快即可上手。

在dayView视图中,每一个item代表一个课程项,长按课程项会弹出Context Menu,也即上下文菜单,再选择所需要的操作。长按事件在触屏手机的应用很常见,把一些不常用到的功能放在上下文菜单中是符合Android Design的设计,让用户以最少的触摸操作完成需要做的事,这种设计与哈夫曼树也是符合的。如图4.2所示

在长按课程项后弹出了Context Menu,且以Contextual Action Mode显示,这也是

共 40 页 第 16 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

个很合理的设计,避免了弹出对话框占用屏幕空间,将需要用到的选项在ActionBar中显示,其中有3项,分别是详细信息(属于数据查询模块)、编辑、删除。编辑界面同添加界面布局是一样的,唯独自动将所有原本存储在数据库的该课程信息自动填充在每个下拉菜单与输入框中,用户只需修改需要的项再点按“保存”即可完成“编辑”操作。修改成功后会通过一个短暂的Toast提示用户操作成功与否。

删除课程功能在Context Menu的右上角,点按“删除”即可删除选中的课程项,但是在数据库中并没有真正的删除,数据库中使用到上面提供的一个deleted字段标记该课程项是否被删除,这样的好处是可撤销删除操作。在点按删除后项目会从列表中删除,同时会自动弹出一个自定义的Toast,点按所示的撤销即可撤销用户的删除操作。

4.2.2 课程数据显示视图模块

数据的显示即数据查询,在整个系统中几乎是到处可见,整个系统有dayView即日视图、weekView即周视图、staView即统计视图。每一个view都需要显示必须的信息,在日视图中需要显示当天的课程,左右滑动可以看到一周7天的课程,但是每一处的信息显示都需要根据具体的模式相应的来显示出课程信息。例如在日视图中把一天的课程按照上课的顺序列出来,其中每项是一个list item,这是一个自定义的item,显示了一些必要的信息,如上课时间(第几节,具体时间)、上课地点、课程名、教师名,这些都是必要的信息,同时课程名的字体较大,因为课程名是最主要的,其他一些必要信息以相对较小的字体显示,这些都是相对比较次要的。软件还会自动判断该课程在本周中是否有课,有课则是正常显示,无课则采用灰色跟叉号显示,其实现将在4.2.6节中阐述。

数据库中的t_curriculums表的字段很多,表示其录入的信息也相对较多,需要查看这些具体详细的信息的话可以点击每项具体的课程,在弹出的对话框中,标题栏显示课程名+教师名,然后上课的时间、地点、上课周、备注、签到信息都显示在这个对话框中。

在周视图中,由于手机屏幕大小的限制,显示的信息有课程昵称(这个也是为课程总表而设计)、上课地点的信息,周视图中具有判断当前时间的功能,整个表格相当对一个时间轴,过去的时间用灰色显示,未来的时间以白色色块显示,同时点击小方块可以查看或者是添加课程,大大方便了用户通览一周的课程。

签到视图周同样有查询操作,会将所有课程列出,用小方块来表示每一周,签到周将会以打勾的小方块表示,无课周将会以带叉的小方块显示(这里的列表会显示每一个在t_curriculums中的记录,即若是一科目一周中有4节课,在这里就会显示4条该课程的签到信息),点击其中任何一条就会提示是否添加考试,添加考试后所有属

共 40 页 第 17 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

于该科目的课程记录就会合并为一条记录在“考试”Page中显示。在“考试”Page中点击某一项后弹出对话框提示输入分数以及课程总分信息,然后该科目记录标记为结课并显示在“已结课”Page中,经过了一学期的使用以及最终结课,这样每次课的签到信息则与成绩就有了分析价值,这将在4.2.3节中讨论。

4.2.3 数据库读写模块

数据库的读写采用标准的DAO(Data Access Object)即数据访问对象的设计,为整个系统提供接口用来访问数据库。在系统中每一个数据库对象都提供了一个DAO接口。同时配合DTO(Data Transfer Object)即数据传输对象用于在ListView中显示数据。

4.2.4 系统设置模块

系统设置,如本学期周数、当前周、一天课程数、一节课时间、课间休息时间以及每节课的上下课时间,这些都需要用户根据自身情况进行设置。在Android中系统提供了一个继承自Activity的类为PreferenceActivity,该类提供简当的生成系统设置菜单的功能,会自动将控件的状态保存至SharePreferences文件中,这些设置信息以键值对的形式保存,在系统的其他地方同样可以很方便的从SP文件中获取设置信息。

在本系统中,有如下设置项:

1) 学期周数(allweek),用于表示一学期的周数;

2) 开学日期(fristdayyear, fristdaymonth, fristday),这是根据用户设置当前周,然后通过计算得到开学日期所在周的第一天(本系统中周日代表一周的第一天)。这样就可以在任何情况下根据开学日期来计算得到当前周的值; 3) 一节课时间(classlastmin),表示一节课的持续时间,单位分钟; 4) 课间休息时间(classbreakmin),表示默认的课间的休息时间,单位分钟,这两项的作用在后面阐述;

5) 上课时间(classtime+id),其中id表示第几节课,在设置Activity中,在设置了第一节课的上课时间后会根据每节课时间跟课间休息时间自动设置所有节课的上下课时间,单位分钟(将小时换算成分钟); 6) 自动静音(automute),为boolean类型,用于设置是否开启上课静音的功能;

共 40 页 第 18 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

7) 上课前通知(Notification),同样为boolean类型,用于设置是否在上课前发送Notification通知;

8) 静音模式(mutemode),设置手机响铃模式为静音或者是震动。

这些设置会被保存在SP文件中,很方便的保存和读取。用于系统的各项功能,如显示课程起至时刻,是否上课前通知等。

4.2.5 系统中其他功能的实现

上课周的实现

系统中每节课会有一个上课周范围以及单双周功能,比如第4周到第16周,在系统中的实现是通过二进制位来实现的。创建一个WeeksModel的对象,包含开始周和结束周,同时创建几个常量:

public static final int FLAG_ALL = 0x80000000; public static final int ALL = 0xffffffff;

其中FLAG_ALL是全部周的标志,ALL则是计算上课周数的掩码。我们将WeeksModel的对象转换为int数据并存储在数据库中用到了如下算法: int weeks = 0 | (field & ((0xffffffff << (start - 1)) & (0xffffffff >>> (32 - end)))); weeks |= flagField;

其中field表示单、双、全部周的标志,这样就得到了一个int类型用于表示上课周的数据,其实也就是16进制的10进制表示,在16进制表示中每一位代表是否上课,判断某一周是否有课,用到了如下算法: (weeks & (1 << (curweek - 1))) != 0;

其中curweek表示当前是第几周,返回的boolean类型表示该周是否有课。 签到的实现

我们可以看到数据库的t_curriculums表中的签到同样也是只有一个字段,表示每一周签到与否同样是通过与上节类似的算法实现: (weeks & 1 << (curweek - 1)) | sign; 其中sign表示的是签到字段。 总课表的实现

首先,在总课表下如按常规做法,其工作量很大,若按一天11个课时,那么一周就有77节课时,总课表中使用GridView来显示一周的课程,常规做法下加载完所有77个item所需耗时大概在1500ms~2500ms的范围,而且考虑到手机屏高度

共 40 页 第 19 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

不够,故需要滚动以显示更多课程,这样在滚动过程中再进行从数据库加载操作对手机来说负担是很大的,而且会产生明显的卡顿现象。

为了解决常规做法带来的极为不友好的用户体验,我采用预加载以及配合异步加载来实现总课表的功能,在软件刚开始运行时候异步加载所有的课程并存放在缓存中,这样从缓存读取跟从数据库相比效率提高了很多,也不存在卡顿现象。 提醒以及响铃模式切换的实现

使用系统的AlarmManager来进行定时,系统中有三个服务进程,分别是CheckService、ClassAlertService、AudioModeService,CheckService的作用分别是检查一天中需要提醒的课程,如需提醒使用AlarmManager来设置一个定时Intent,该Intent用于启动ClassAlertService或者是AudioModeService这会提交给系统处理,系统在时间到时会启动对应的Intent,这样ClassAlertService或者是AudioModeService被启动然后执行相应的功能,其中ClassAlertService是发送一个Notification通知,通知内容为下节课名称以及上课时间地点等信息,AudioModeService是用来切换手机的响铃模式,在切换响铃模式完成后同样会通过AlarmManager来定时再次启动AudioModeService来将手机的响铃模式在下课后切换到原来的模式。这里涉及到的Service都会在执行自己的功能后自动结束掉。 签到记录与成绩分析的实现

在成绩分析的Activity中会有一个柱形坐标图,横坐标表示第几周,纵坐标表示一周内签到次数的信息,所以在这里若是用户每次都签到的话,坐标图会呈现一条水平线的样式,否则样式可能就多变,当然这只是一个粗略的表示,可以方便用户快速浏览,若是需要更详细的信息,可以在下方看到一周内每节课的签到信息。 分享到其他应用程序的实现

分享采用Android的标准的分享机制,所有提供了分享接口的应用都会存在于应用分享的对话框中,本系统支持将上课信息分享、总课表分享、以及签到与成绩分析分享。这三种分享有纯文字分享和文字与截图的分享。

共 40 页 第 20 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

5 评估测试

5.1 测试环境

为了获得更好的体验,测试在Android 4.0 + 系统上进行。 手机型号:Google Nexus 4; 系统版本:Android 4.2.2;

5.2 测试计划

5.2.1 交互测试

“日视图”交互

在Android Launcher界面中,点击“课程表”应用名称,进入应用。默认显示的是当天的课程,即日视图,左右滑动可以查看一周中每一天的课程。在顶部的ActionBar分为两个部分,分别是Spinner和MenuItem,Spinner用于在视图中的切换,而MenuItem有两个,一个是用于显示当前周的Item,另一个则是用于添加课程的Item。在主界面中点击手机Menu键会弹出另外的两个MenuItem,将不常用的选项放入“更多”中。

在我们点击每个课程Item后会弹出一个Dialog,其中标题栏显示“课程名”+“教师名”,Dialog的内容是课程的详细信息。Dialog中有“分享”和“打卡”两项操作,分别是用来将课程信息分享到其他应用程序和课程签到。同时,这两项操作只有在系统时间处于该课程上课时间段时才会生效。

在长按课程item项后,会进入选择模式,可以对选中的课程进行“编辑”、“删除”和“查看详细信息”三项操作。“编辑”选项可以编辑选中的课程,“删除”选项则可以删除选中的课程。我们测试删除课程的交互,在我们点击删除后可以发现,底部出现有Android应用很广泛的UNDO BAR,提供撤销操作。我们可以看到点击撤销已经被删除的课程会恢复到课程列表中。

测试结果:符合一般交互设计理念。

共 40 页 第 21 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

“周视图”交互

我们可以点击ActionBar中的spinner选择显示的视图,在点击后出现有“每日课程”、“总课表”以及“签到记录”三个item,每一个item是一个视图,分别是“日视图”、“周视图”以及“统计视图”,我们可以选择“总课表”item进入“周视图”。“周视图”中显示一周所有的课程,点击item后可以查看课程或是添加课程,根据item是否有课自动做出判断。

测试结果:符合一般交互设计理念。 “统计视图”交互

我们进入“统计视图”可以看到,设有3个Page,分为“未结课”表示所有未考试的课程,该Page中显示一周中所有课程以及签到记录信息、“正在考试”表示对应课程的考试信息,若某科目一周中有多次课在此处依然只会显示出一条记录、“已结课”表示已经结课的课程需要提供考试分数信息,在“已结课”Page中可以点击查看详细的图表统计信息。

测试结果:符合一般交互设计理念。

5.2.2 功能测试

“课程管理系统”的功能在2.1节中已有概述。在功能测试章节中,我们对在2.1

中阐述的每一项功能做测试,看功能是否已经实现。图5.1 添加课程页面 图5.2 课程添加成功提示

课程添加功能测试(当前是第16周)

测试用例目的:测试系统的添加课程功能;

测试用例执行步骤:在“添加课程”Activity添加某个课程(数据结构,星期二,逸夫楼,401,第1周,第一节,提醒提前20分钟)。点击添加后会弹出一个Toast提示用户成功添加课程,可以继续添加也可以返回到日视图。继续添加一个课程(计算机组成原理,星期二,南教,308,第4周~第18周,第2节,提醒提前10分钟)。 预期结果:在星期二的Page中新增了二个课程项并且其中“数据结构”显示为灰色,表示本日无该课程,因为其只有1周的课程,且当前不是第一周。另外“计算机组成原理”显示正常,因为当前是在4~18周的范围内。点击课程项后弹出的Dialog显示详细信息与添加课程时相符。

共 40 页 第 22 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

实际结果:符合预期。 课程删除功能测试

测试用例目的:测试系统的删除课程功能;

测试用例执行步骤:在日视图的课程列表中长按某个Item,在打开上下文菜单后,点击ActionBar也就是上下文菜单中的“删除”,观察结果,然后再点击弹出的Toast中的“撤销”,再观察结果。 预期结果:点击删除后,被选中的课程项在课程列表中消失,且弹出一个Toast即Undo Bar,点击其中的“撤销”后,刚才被删除的课程项又出现在课程列表中。

实际结果:符合预期。 课程修改功能测试

测试用例目的:测试系统的修改课程功能;

测试用例执行步骤:同样在日视图的课程列表长按某个Item后在弹出的上下文菜单中点击“修改”,进入到“修改课程”Activity,布局与“添加课程”Activity类似,选择修改其中的属性设置,点击保存。

预期结果:在进入“修改课程”Activity中,课程的属性自动填充了各个控件,选择修改某几项属性保存后,回到课程列表中可以看到刚才选择修改的课程已经成功被修改了。

实际结果:符合预期。 上课提醒以及切换震动功能测试

测试目的:测试系统的上课提醒以及响铃模式自动切换功能;

测试用例执行步骤:为了测试方便,我们将上课时间设置到当前时候之后几分钟,我们可以在设置页面中设置上下课时间,将周二第10节课设置为提前5分钟提醒,以及上课响铃模式的切换。我们同样可以在SharePreferences文件(以下简称SP文件)中查看设置。在SP文件中我们可以看到设置的mutemode以及automute等项目与界面中是统一的。第10节课的上课时间是13:25,同时我们将提醒设置为提前5分钟,即13:20分会触发Notification。

共 40 页 第 23 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

预期结果:在13:20分会触发Notification,在13:25分会自动将手机的响铃模式根据设置调成震动。而且可以从手机任务栏中看到已经有一个震动的标志,表示震动模式切换成功。

实际结果:符合预期。 课程总表功能测试

测试目的:测试课程总表功能显示是否完整,以及滑动是否流畅。

测试用例执行步骤:我们在打开“课程表”后,点击切换View的Spinner,选择“总课表”,数清一共的课程数与在“日视图”中是否一致,以及上下滑动GridView查看是否有卡顿现象。测试点击空白Item和有课的Item。

预期结果:在“周视图”下,显示的是课程昵称与上课地点,显示正常,课程数与“日视图”一致,上下滑动很流畅。点击空白Item会弹出“添加课程”Activity,点击有课的Item弹出课程详细信息Dialog。

实际结果:符合预期。 课程签到功能测试

测试目的:测试课程签到功能是否可用。

测试用例执行步骤:当前时间为2013-06-13 10:30,这个时间是在上第三节课,在“日视图”下的课程列表中显示第一节与第三节有课,点击第一节课的Item,在弹出的课程详细信息Dialog中点击“打卡”,然后再点击第三节课的Item并执行同样的操作。可以继续把时间换到更前,比如第17周,再进行此操作。

预期结果:点击第一节课的“打卡”会弹出Toast提示“请在课程时间范围内执行此操作”,表示当前不能执行签到操作,点击第三节课的“打卡”会弹出Toast提示“签到成功”,因为此时处于第三节课的课程时间范围内。然后再查看签到记录可以看到用户的签到继续信息。

实际结果:符合预期。 签到统计功能测试

测试目的:测试系统的签到统计功能是否可用。

共 40 页 第 24 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

测试用例执行步骤: 我们选取“计算机组成原理”作为测试对象,该课程一周内共有4节课,我们在“签到记录”Fragment中选择“计算机组成原理”,在弹出的Dialog中点击“确定”,进入了“添加考试”Activity,设置好考试的地点时间和提醒后,点击保存即可添加考试,在“考试”Page中我们可以看到刚才添加的“计算机组成原理”,假设现在考试结束了,我们继续点击该项输入考试得分与总分,然后在“已结课”Page中可以看到“计算机组成原理”的简略信息,点击后进入详细的Activity。

预期结果: 在详细的Activity中我们可以看到用图表表示的签到统计信息,可以看到若是每周每节课都签到,则柱状图会以水平且高的柱状Bar来显示,若是“三天打鱼两天晒网”的用户,签到信息不全则柱状图会以起伏的柱状Bar显示。在下方的ListView中显示一周的4次课具体的签到记录信息。

实际结果: 符合预期。 分享测试

测试目的:测试系统的课程分享以及签到与成绩分享功能。

测试用例执行步骤: 在点击课程项弹出的Dialog中点击“分享”,以及在图表展示签到记录的Activity中点击ActionBar中的分享按钮。

预期结果: 均会弹出Android标准的分享Dialog,可以选择需要分享到的其他应用程序,在课程项的Dialog中的分享只是分享文字信息,在图表Activity中会分享文字以及截屏。

实际结果: 符合预期。

5.3 测试结果与评价

经过一系列系统测试,对于本应用程序有了全方位的评价。首先,所期望的功能都已经得到了实现;其他,系统运行很流畅,没有出现卡顿或是Forced Close的情况;再次,系统的交互设计也是很适用的;最后,系统的资源占用也是非常小,Service也不会恶意在后台运行。综上,本次系统的设计是成功的。

共 40 页 第 25 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

6 结束语

在定下这个毕设题后,我考虑良久,在经过多方调研,包括调查学弟学妹、在网络上发帖问答,其中知乎上的一篇文章让我顿时醍醐灌顶。确实,课程表类应用的市场已经饱和,但是其同质化,试图通过学生这个庞大的群体创造其社交网络的想法是行不通的,因为用户群体的特殊性,导致每年必然会有一大批毕业生的用户流失,同时每年的新生开学必然也会导致一部分用户流向其他的社交网络中,用户群体决定了其构造成长期活跃的用户群体是不可能的。

在通过调研后,我把重点放在调查用户需求上,哪些是其需要的功能,哪些是多余的。在本次的毕业设计中学到了用户的观点很重要,而不能完全凭自己的想法,这样做出来的系统虽说可能很酷,但是并不实用。

在书写完设计书后,开始了编码工作,通过了两个多月的编码、调试、发布beta版收集用户回馈以及体验其他的课程表类应用后;终于,功能完全实现,后期在细节上做出了诸多的努力,如何把交互设计的更加自然,更加的让用户更容易上手成为了我的下一个目标。

在这个漫长过程中,重要的不是项目,而是过程。可能某个bug困扰了整天然后在网络上得到了帮助解决bug的喜悦。其中值得一提的是stackoverflow.com 这个网站,这是一个编程的问答网站,众多高手齐聚一起帮助解决问题。在我的编码过程中遇到的问题基本上可以在其上找到解答。

最后,Android是一个新兴平台,值得学习的地方是非常多的,移动端相对于PC端的小屏使得开发者更应该去合理的利用狭小的空间做出应用的功能。这也是我在整个毕业设计中体会最深刻的。

共 40 页 第 26 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

参考文献

[1] Android开发文档.Android Developers.https://developer.android.com,2013-01 [2] 李刚.疯狂Android讲义.北京:电子工业出版社,2011-06 [3] Mark Murphy. Beginning Android. New York :Apress, 2010-03

[4] Ian Sommerville. Software Engineering (9th Edition). 北京:机械工业出版社, 2011-06

[5] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.设计模式:可复用面向对象软件的基础. 北京:机械工业出版社, 2000-09

[6] [美] 霍斯特曼 / [美] 科奈尔.Java核心技术:卷Ⅰ.北京:机械工业出版社, 2008-05

[7] 萨师煊, 王珊.数据库系统概论(第3版) [M]. 北京: 高等教育出版社, 2000-02

[8] Pressman Roger S. Software Engineering: A Practitioner’s Approach (5th Edition) [M]. New York: McGraw-Hill, 2001-11

[9] Laudon Kenneth C, Traver Carol G. Management Information Systems (12th Edition) [M]. New Jersey: Prentice Hall, 2011-01

[10] 邓凡平.深入理解Android:卷Ⅰ.北京:机械工业出版社,2011-09 [11] 高亮.基于Android的日历提醒软件的设计与实现.中原工学院学报,2011(6):63-66

共 40 页 第 27 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

致谢

共 40 页 第 28 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

工业大学 毕业设计(论文)说明书

附录(部分程序源代码)

共 40 页 第 29 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务