毕业论文-基于移动端的课程表查询软件的开发实现.docx_第1页
毕业论文-基于移动端的课程表查询软件的开发实现.docx_第2页
毕业论文-基于移动端的课程表查询软件的开发实现.docx_第3页
毕业论文-基于移动端的课程表查询软件的开发实现.docx_第4页
毕业论文-基于移动端的课程表查询软件的开发实现.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

安徽大学本科毕业论文(设计、创作)题目: 基于移动端的课程表查询软件的开发实现 学生姓名:XXX 学号: XXX 院(系): 计算机科学与技术 专业:软件工程 入学时间: 2011 年 9 月导师姓名:XXX 职称/学位:XXX 导师所在单位:安徽大学计算机科学与技术学院 完成时间: 2015 年5月基于移动端的课程表查询软件的开发实现摘 要课程表在现代的教学工作中扮演着非常重要的角色。它使学校能够合理安排教室、实验室和运动场等硬件资源,也能协调教师和学生之间的教学秩序。在大学校园中,由于学生上课采用的是自主选课的方式,所以基本上每一位学生都会有各自不同的课程表。而传统的教务系统课程表,由于一般是在PC网页端进行显示,无法满足课程表需要随时随地方便查看的使用需求。结合当下智能手机的普及以及功能强大,使用手机实现大学课程表的查看具有非常大的实用意义。本次毕业设计以安卓智能手机为运行平台,结合Java、PHP、数据库等技术,实现了一个可以在移动端查看课程表的软件程序。关键词:课程表;智能手机;移动端;安卓;数据库Inquiry Curriculum Development Software Based on Mobile TerminalsAbstractSyllabus plays a vital role in modern teaching practices. Not only does it allow educational facilities, such as classrooms, laboratories, playgrounds, etc., to be allocated in a rational way, but also it coordinates the teaching order between teachers and students. Since university students select courses and take classes in a self-directed way, their course arrangements usually vary. Therefore, university students need to check their curriculum schedules whenever and wherever it is required. However, traditional syllabuses in educational administrative systems cannot meet this situational demand because they are displayed on the PC side. Considering the current popularity and multi-function of smart phones, it is of significant importance to make university syllabuses checking available on cell phones. Based on Java, PHP, database and other techniques, this graduation project uses Android smart phone as an operating platform, attempting to develop software program through which the syllabuses are expected to be viewed on mobile terminals. Keywords: curriculum; smart phone; mobile terminal; android; database目 录1 引言11.1 研究背景11.2 研究意义11.3 软件开发的目标21.3.1 实用性21.3.2 易用性21.3.3 可重复利用21.3.4 稳定性21.3.5 美观性21.4 软件设计开发的内容22 软件开发使用的开发工具及技术简介32.1 Java32.2 JDK32.3 eclipse42.4 Android Development Tools(ADT)42.5 Mysql数据库42.6 myeclipse42.7 Axure RP42.8 软件开发及运行环境53 软件可行性分析53.1 技术可行性53.2 操作可行性53.3 经济可行性53.4 法务可行性54 软件需求分析64.1 功能需求64.1.1 教务系统学号与密码验证64.1.2 自动获取课程表数据64.1.3 显示本周的整体课程表64.1.4 切换不同周次进行查看64.1.5 查看某一课程的详细信息64.1.6 本地缓存课程表数据64.2 性能需求74.3 安全性需求75 需求分析细化75.1 软件结构E-R图75.2 软件运行状态转换图86 对需求进行验证96.1 一致性106.2 现实性106.3 完整性106.4 有效性107 软件主要功能及使用过程流程图117.1 验证学生身份117.2 自动导入教务系统课程表117.3 查看周历课程表117.4 刷新课程表信息117.5 切换周次117.6 查看某一门课程的具体信息118 编码实现128.1 网络通信128.2 账号验证与登录128.3 获取课程表的实现138.4 课程表手机端的设计实现138.4.1 周历课程表138.4.2 课程详情138.4.3 客户端界面实现139 软件实现效果149.1 登录页面149.2 周历课程表页面159.3 周次切换操作169.4 课程具体信息179.5 刷新课程表功能1810 软件功能性测试1810.1 用户登录模块1810.1.1 正常登录1810.1.2 错误登录1810.2 周历课程表功能模块1910.2.1 切换周次1910.2.2 显示课表1910.3 课程表刷新功能1910.3.1 在周历课程表界面下刷新1910.3.2 在课程详情页面中进行刷新操作1910.4 课程详情显示功能1911 结束语20主要参考文献:21致 谢221 引言1.1 研究背景从2007年,第一款革命意义的智能手机(苹果iPhone)发布以来,手机的使用方式产生了翻天覆地的变化。从以往的简单通话、短信,开始进入新的时代。智能手机经过多年的发展,存储能力、处理速度、应用场景广度和深度都产生了巨大的进步。手机已经越来越成为人们生活中不可或缺的一部分,以往很多在计算机上才能完成的任务,例如网页浏览、使用社交网络、收发邮件、基于网络的即时聊天等等,现在都可以在手机上完成。手机已经从一个简单的通讯工具慢慢变成个人的数据和信息处理中心。而大学生作为年轻的群体,好奇心强,容易接受新鲜事物,自然成为了各种智能手机的主力使用者。智能手机的普及程度从生活中不难看出,几乎每一位大学生都会选择购买和使用智能手机。而绪论中已经提及,基于移动端的课程表查询功能是大学生的刚性需求,也是大学生日常生活中的痛点。结合智能手机用户的数量,以及安卓平台在智能手机操作系统中的巨大优势,设计并开发一款可以在安卓智能手机上运行的课程表软件是大势所趋。近些年,也有不少的创业公司从这一点切入市场,包括超级课程表、课程格子等应用软件都在市场上获得了巨大的成功,并且很多公司都从课程表切入高校市场之后,依靠庞大的用户群体以及用户的高质量进行了更多商业化的扩展尝试,足以说明这一方向的发展前景是广阔的。而本毕业设计的目标,正是完成一款安卓智能手机上的课程表软件,除了能够给用户的生活提供方便之外,也能够在设计开发的过程中经历完整的软件项目开发过程,全方面巩固所学知识,为本科的大学学习画上一个圆满的句号。1.2 研究意义软件工程作为计算机大类下的一门课程,除了基础知识的学习之外,对知识的实际运用以及动手能力的培养更为重要。而由于教材的更新频率低等原因,课堂理论知识更多得仍然是介绍五年至十年周期内产生的知识和内容。而计算机以及互联网本身是一个高速发展的行业,本科学习中,更需要自己去熟悉掌握更新的知识体系。移动端的软件开发技术及知识是近几年的热门领域,产生了大量的新兴公司及就业机会。移动端的软件设计除了需要用到基本的软件工程知识外,还具有自己的一些特点:更注重用户体验的优化,更新迭代快速等。本次毕业设计便在这一背景下,使用更为快速灵活的开发方式,使得最终成果更接近于最终用户本身的需求和期待值。而在运用基础知识开发的过程中,又能对所学知识进行加强,形成更为全面的知识体系。除此之外,设计成果本身也是一个非常实用产物,能够给后来的学生带来生活上的巨大便利。于自己于他人都是一个非常有意义的选择。1.3 软件开发的目标1.3.1 实用性该软件的核心功能涉及到学生在学习过程中重要的工具课程表。并且将课程表用一种更灵活更便于携带的方式进行展示和呈现。可以实现在线同步更新,免去了人工调整课程表时的繁琐步骤。具有非常大的实用价值。1.3.2 易用性 高度普及的智能手机已经让大学生学会了基本的操作和使用方式。而该软件本身遵循精简化的原则,将核心功能最直接最明确得展示在用户面前,不需要任何的学习成本即可直接使用。在实际的使用场景中发现,几乎所有用户都可以在没有任何人指导的情况下直接完成类似软件的使用,使用过程中也没有遇到过什么困惑或者难题。所以该软件具备非常高的易用性。1.3.3 可重复利用该软件的核心功能是通过与大学教务系统进行直接对接实现数据的加载更新。而大学教务系统的更新改变频率很低,会在很长一段时间内都使用同一套技术方案不会轻易更改,因此只要教务系统本身保持不变,该软件就可以正常使用,随着学生本身的年级变化也不影响软件功能。1.3.4 稳定性该软件运行在安卓4.0+的平台上。从4.0版本开始,安卓在UI美观性,运行稳定性以及系统本身的性能上都进行了大幅度提升。并且同步更新了Linux 3.0的内核版本,可以说该版本是安卓第一次真正意义上实现了自己的设计风格。运行在这样一个成熟的平台上,加之使用的开发工具已经经过了长时间移动端开发者的验证和优化,证明了整套设计和开发方案的成熟稳定。最终的成果也需要稳定运行在测试机型(小米手机2S 安卓 5.0.2)上。达到了软件使用基本的稳定要求,完全能够满足普通用户日常生活的使用。1.3.5 美观性除了在功能上追求稳定实用易用,作为一款面向普通用户的软件,美观性也是一个很重要的方面。虽然没有进行过专业的设计方面知识的学习,但是在平时的体验过程中,也总结出了一些基本的设计常识。软件界面从功能布局、颜色搭配等方面进行了简单的优化,使其成为一款不仅可用,而且好用好看的软件。1.4 软件设计开发的内容本设计是开发一款可以在安卓智能手机上使用的课程表查询软件。可以根据用户输入的学号和教务系统密码与教务系统直接对接,通过分析教务系统的网页源码,分析出课程表相关的关键信息,包括课程名称,教师地点,讲课教师名称,上课具体时间等等。然后将处理过的信息通过服务器传送给手机端进行处理显示。并且此软件在手机端本地会产生缓存数据,用户不必每次使用都更新联网,可以进行离线使用。当用户离线使用时,可以直接显示缓存在本地的数据,达到节省流量,提高使用效率的目的。当教务系统本身的课程表产生变化时,则可以通过在手机端的刷新操作获取最新的数据进行覆盖。另外,大学中的课程存在不同周次的课程不一致的问题,例如存在单双周课程不同,某些课程提前结束等等。该软件能够根据学校的教学日历安排,同时结合手机上的日期时间,自动调整课程安排。用户也可以手动选择课程周次,提前查看未来的课程安排进行合理的学习计划。可以说,该软件满足了课程表使用时的几乎全部需求,是一款简洁实用美观的课程表软件。2 软件开发使用的开发工具及技术简介2.1 Java由于本软件是运行在安卓智能手机上,考虑到安卓操作系统的开源特性,需要适配不同厂商不同硬件配置环境的手机,故在安卓系统上运行的软件也需要满足这一基本特性。Sun公司设计Java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机上运行。为了实现这一目标,Sun公司提出了一种Java虚拟机机制。Java虚拟机是编译和运行Java程序等的各种命令和其运行环境的总称1。由于安卓是一个开源的移动端操作系统,被众多的硬件厂商所使用,所以安卓上运行的软件需要支持不同的硬件平台都可以运行。因此安卓程序的核心部分编写语言为Java。故Java技术是本次软件设计的核心技术。本科阶段最先接触也最为熟悉的语言虽然是C语言,但是Java在语法,代码结构方面与C语言具备非常多的相似点,经过选修课的学习以及自己的补充,能够用很快的速度掌握Java语言编程的基本知识。同时,由于安卓本身的发展成熟,使用Java语言进行安卓程序编写的工具和环境也已经非常普及。通过网络搜索能够很快获取相关工具。Java的易学易用、健壮性、安全性和可移植性也能够满足软件设计目标中的各项指标。2.2 JDK由于原生的windows操作系统并不能直接实现Java程序的编译运行,需要加上Java针对windows环境提供的开发工具包。JDK就是这样一款工具,主要包括编辑器、打包工具、查错工具、文档生成器,以及一个小型浏览器。该浏览器可以直接执行HTML文件中包含的Java小程序。另外一个很重要的部分是Javah,它能够实现调用Java过程的C过程,或者建立能够被Java调用的C过程的头文件。JDK的每一个版本都提供对windows和Linux两种环境的支持,本次设计在windows7操作系统下进行,所以按照windows下的环境配置规则进行配置和使用。2.3 eclipseEclipse是一套支持Android开发的集成开发环境。Eclipse本身使用Java代码开发,因此可以安装在PC,Mac,Linux等多个平台24。所以它本身的属性就很适合用于Java程序的开发。Eclipse由于本身的灵活和可扩展性,除了Java之外,还能够进行C语言,C+,PHP等多种语言的编程开发。且eclipse支持多种便捷的快捷键组合,熟悉使用之后,在编程开发过程中能够大大提高使用效率。2.4 Android Development Tools(ADT)谷歌官方为eclipse提供了用于安卓程序开发使用的工具ADT。便于开发者使用eclipse开发安卓应用程序。给eclipse提供了安卓程序的debug运行模式,便于应用程序进行调试。2.5 Mysql数据库该软件涉及到教务系统课程表数据的析取、存储以及向手机端的传输。除此之外,为了满足离线使用的要求,以及课程表本身数据在一定时间内的有效性,需要一个可靠的数据库对相关数据进行存储。Mysql数据库使用C和C+进行编写,通过了多种编译器的测试,因此保证了源代码的可移植性。并且Mysql还为多种编程语言提供了API,其中就包括Java,经过优化的SQL查询算法可以有效提高查询速度,充分利用资源达到最高的运行效率。可以有效提高整个系统运行的性能。2.6 myeclipsemyeclipse与eclipse有所不同,这是一个基于eclipse的商业化开发平台,本次使用的是最新版的myeclipse 10,最新的版本使用了最高级别的桌面和web开发技术,能够在程序本身和数据库之间进行无缝连接。另外,选择这一版本的原因还有就是该版本对于检索功能和错误查询功能更加易用,能够更高效得处理开发过程中可能出现的错误。在软件开发项目的过程中,错误发现得越早,则修复的成本越低。可以说myeclipse 10为整个开发过程节省了大量的时间,避免了很多可能在后期带来很大影响的错误出现。而对于myeclipse本身来说,本次开发只利用了它非常小的一部分性能和功能,更强大的使用方式会在以后逐步学习挖掘。2.7 Axure RPAxure RP是在软件开发项目中常见的一种生产力工具软件,其功能丰富多样,可以绘制流程图,界面设计布局以及高保真原型等等。在本次的软件设计过程中,主要使用了它的界面设计布局以及高保真原型的功能。在需求的分析阶段,为了验证需求的现实性和有效性,采用了原型软件的方式。即先使用Axure RP制作一份可以体验软件使用过程的高保真原型,让目标用户进行试用体验471。当目标用户确认原型的使用过程中不会产生疑惑,并且确保自己的需求得到全部满足时,则可以得出需求的有效性和完整性的结论。同时,在观察用户使用软件原型的过程中,也可以验证软件功能设计中的易用性和实用性。2.8 软件开发及运行环境开发环境:windows7开发语言:Java,php开发平台:eclipse,Myeclipse数据库管理系统:SQL Server 2008运行环境:安卓 5.0.23 软件可行性分析3.1 技术可行性基于移动端的课程表软件所需使用的软件开发工具和技术方案已经经过详细学习验证,而教务系统本身,由于学校本身采用的是正方软件的教务系统,可以进行仔细的研究分析与验证,保障软件与教务系统对接获取数据时不会出错。并且在如今的应用市场上已经存在类似功能的软件,所以该设计方案在技术上是可行的。3.2 操作可行性该软件的操作过程非常简单,用户可以进行的操作本身就很少,只需输入学号和教务系统密码即可获取课程表数据。在实际使用的过程中,也只需进行刷新课程表或者点击某一门课程查看详细信息的操作。因此,该软件在操作上没有问题。3.3 经济可行性该软件在开发过程中无需进行经济上的投入,使用的开发工具均为免费开源软件或者具有一定免费试用期的软件,在试用期时间范围内已经可以完成程序的开发调试。其中需要参考的资料,可以从网上搜索获取,相关书籍在图书馆可以进行免费的借阅。且软件本身仅作为毕业设计的作品进行开发,无需考虑市场以及盈利方面的问题。所以该软件的设计开发过程在经济上是可行的。3.4 法务可行性在软件的设计开发过程中,没有涉及相关专利和知识产权作品的使用。且软件本身遵循自愿使用的原则,不会向任何用户进行插件捆绑或者强制要求使用的行为,没有违反国家的相关政策和法律法规。至于用户提供教务系统密码的安全性问题,在需求分析的安全性需求中会进行说明。并且,在可能存在法务风险的问题上,已经向法律专业的同学请教过,得到的答复是软件的运行和使用过程没有涉及法律红线。因此,该软件在法律合法性上是可行的。4 软件需求分析4.1 功能需求该软件的核心功能是课程表的查询。结合日常生活中的使用和观察,以及对身边同学的询问和访谈,最终确定了的需求方向如下:4.1.1 教务系统学号与密码验证该软件不存在用户账号的注册登录等过程,用户提供学号密码即可直接与学校的教务系统进行对接,获取教务系统上该用户的课程表信息。4.1.2 自动获取课程表数据该软件无需用户手动输入任何课程信息,当使用学号密码进行登录并且通过教务系统的账号验证之后,同时保障网络状态通畅,便可以直接将教务系统的课程表数据导入到手机端进行查看。让用户以最低的使用成本达到使用本软件的目的。4.1.3 显示本周的整体课程表传统的课程表使用方式都是以课程周历的形式展示。这样做的好处是能够直观得看到一周的课程安排,以及某一天的课程时间,而且经过长时间的传统课程表使用习惯的培养,用户打开课程表时期待看到的第一个界面就是周历课程表。本软件在存有课程表数据的情况下,打开之后显示的默认界面即是周历课程表。与传统课程表不同的是,由于传统课程表只能在一张表上显示整个学期的课程安排,不能根据不同的周次,以及单双周分别显示不同的课程信息,而本软件可以根据当前的周数直接显示本周的课程安排,根据学校的教学日历变化,不会再出现忘了本周是第几周而无法直观得看到本周的具体课程安排的问题。4.1.4 切换不同周次进行查看该软件不仅能看到本周的课程,还能通过点击选择的方式切换不同的周次,用户可以提前看到之后周次的课程安排,在考试之前合理得安排复习时间等等,提供更多的便利。4.1.5 查看某一课程的详细信息由于大学的课程安排和高中不同,正常情况下,大学的行政班和教学班不一定完全一致,加之教师的时间安排不同,不同教室的硬件设备不同等等,大学的不同课程往往会在不同的教室上课。所以大学课程表除了课程名字本身,最重要的信息就是上课地点。通过在周历课程表上点击某一门课,可以进入查看这一门课程的具体信息,包括课程名称、上课地点、上课时间、讲课教师的姓名。4.1.6 本地缓存课程表数据为达到提高效率,节省流量和缩短响应时间的目的。当用户进行过登录或者刷新之后,最近一次更新的数据会被缓存在本地,直到下一次刷新之前,这一份缓存数据会直接显示在手机的课程表当中。这里存在一个特殊情况:若用户进行了刷新,而因为网络不通畅等原因刷新失败,则原来的数据不会被空白数据覆盖,依然能够显示。即覆盖数据的行为是建立在获取了最新的有效数据之后的,避免因为网络问题导致课程表数据丢失而不可用。4.2 性能需求由于手机是移动设备,体积小空间紧凑,所以无法像普通的台式PC机或者笔记本电脑一样提供持续电量和良好的散热方案。也因此,手机的处理能力依然有限。本次软件的性能需求是要求在测试机上能够正常运行,不会产生严重卡顿以及崩溃现象。软件的反应速度是用户体验最大的影响因素,因此设立标准:从触摸屏接受触控指令到软件本身完成反馈,需要在1500ms内完成。4.3 安全性需求由于该软件需要用户提供学号和教务系统密码进行使用,涉及到较为敏感的信息。因此在安全性方面,规定用户提供的教务系统密码不在服务器以任何形式进行存储,仅用于验证用户身份以及对接教务系统进行数据更新。一旦这些过程完成,密码数据会立即进行删除处理。直到下一次用户进行刷新或登录操作自主输入密码之前,不会存储用户的密码。5 需求分析细化结合需求分析阶段获得的信息,并使用流程图对功能进行梳理后,可对需求进行进一步细化,为技术实现方案的设计进行准备。5.1 软件结构E-R图本软件涉及到的实体较少,总体结构相对简单。主要实体为学生本身的个人信息,课程表中包含的信息,以及某一门详细课程所包含的信息。其中需要说明的是,周历课程表是以周为时间划分标准,当软件具备切换周次的功能时,实际上一个学生可以对应多个周历课程表。(例如一学期是18周,则该用户可以在同一时间对应18个周历课程表。)E-R图如图2所示:图1:软件整体E-R图5.2 软件运行状态转换图该软件在使用过程中,需要联网并且对接教务系统。在使用过程中涉及到不同状态之间的转化。软件本身可以看成一个基本的输入输出结构,获取用户的操作指令为输入,通过屏幕显示向用户反馈的信息即为输出。在输入与输出之间,软件系统需要对不同的指令或操作进行正确得响应,整个软件才能完成所需要的功能。该软件的状态转换图如图3所示:图2:状态转换图6 对需求进行验证需求分析的细化并不意味着需求分析阶段的结束。在最终确定需求分析的结果确定之前,需要对需求分析阶段得出的结论进行验证,以确保需求分析的成果是正确的,避免在后续阶段发现错误导致修复成本的上升和时间精力的无谓消耗。对需求进行验证,主要从以下四个方面进行:一致性,现实性,完整性和有效性470。6.1 一致性需求的一致性是指,需求分析阶段得出的各项需求,互相之间必须是一致的,不能够在任何两项需求之间产生任何矛盾。如果需求之间产生了矛盾,那么就证明整套需求就是无法正常运行的470。基于此标准,对该软件的需求分析进行验证:该软件的需求(或者说功能)整体的使用流程是一个自上到下的线性关系,在流程的中间没有产生交叉和跳转。而整个线性使用流程中,每一个步骤的结果都是下一步结果的先决条件,前一个步骤的正常完成才会去启动并且运行下一个步骤,如果在任何一个步骤产生错误(例如输入的学号密码不正确,获取课程表信息时网络中断等等),都会发出错误提示或者会自动返回上一步骤,避免了软件运行中产生的崩溃或者强退现象。所以该需求具备一致性。6.2 现实性需求的现实性是指,在现阶段下,所有的需求在硬件和软件以及技术方面都是可以实现的。虽然硬件和软件技术会随着时间的推移产生变化和发展,但是由于本次软件设计的时间相对较短,全部过程在十五周以内完成,所以在技术上不能期待产生重大突破而满足一些超前需求。在需求分析阶段中的可行性分析中,对这一验证目标已经进行了说明。开发过程中所需的硬件设施已经到位,而软件工具和相关的技术也全部准备完毕。所以该需求具备现实性。6.3 完整性需求的完整性是指,该软件能够满足目标用户对于使用该软件时产生的所有需求。该软件的目标用户是在校大学生,具体需求聚焦在移动端查看课程表这一方面。在需求分析的功能性分析阶段,采取了在这一使用场景下,用户需要满足的需求点在手机上完成教务系统课程表的查看,并且清晰地得出上课时间,上课地点,教师名称这三项重要信息。而这些需求,分别通过连接教务系统获取课程表信息,显示周历课程表信息,显示某一门课程的详细信息三种方式进行了实现。所以,该需求具备完整性。6.4 有效性需求的有效性是指必须保证需求分析阶段得出的成果能够满足用户的需求,并且是现实有效的。验证需求有效性的方式有很多种,例如提前开发出一个具备核心功能的软件版本供用户使用反馈。但是这种做法大大提高了开发的时间成本。所以本次软件设计采用的是一种更为高效的方式:使用原型制作工具(Axure RP,在第2节中有过相关介绍)制作出一份软件的高保真原型,原型可以导出为HTML文件在浏览器中打开使用,使用鼠标单击来模仿用户手指点击触摸屏的操作。将这一原型提供给目标用户试用,通过用户反馈来验证需求的有效性。通过这一步骤,结合用户给出的反馈,可以确认该需求具备有效性。7 软件主要功能及使用过程流程图根据软件的需求分析阶段功能性分析内容,确定系统具备的基础功能如下:7.1 验证学生身份用户通过提供自己的学号及教务系统密码,软件将用户提供的信息与教务系统的账号进行比对,得出学生是否可以使用该软件导入课程表的反馈结果;7.2 自动导入教务系统课程表当用户通过教务系统账号验证之后,便会自动提取该用户教务系统内的课程表信息,并且传送至用户手机端进行显示;7.3 查看周历课程表软件主界面显示本周的所有课程安排,即周历课程表;7.4 刷新课程表信息用户可以通过首页课程表的刷新按钮进行刷新操作,软件会向服务器发出一次更新请求,然后连接教务系统进行课程表的信息更新。若更新成功,则用新的课程表数据对手机端本地的数据进行覆盖;若更新不成功,则保持本地数据不变。7.5 切换周次在首页周历课程表界面中,且本地具有有效数据的情况下,用户可以自主选择不同的周次来查看。周次选择不仅可以选择之后的周次,也可以选择向前查看,即选择当前时间之前的周次数进行课程表的查看。7.6 查看某一门课程的具体信息通过在周历课程表上点击某一门课程,可以查看到该课程的具体信息:课程名称,上课地点,教师姓名。软件功能的使用流程如图1所示:图3:功能使用流程图8 编码实现8.1 网络通信在该软件的开发过程中,网络通信采用了HTTP中的POST协议。在HTTP中,存在PUT、DELETE、POST和GET四种操作。这四种操作就是对网络上资源的增删改查。分析该软件的功能操作流程和功能实现方式,课程表的获取需要告诉服务器自己有一个获取课程表信息的请求,等待服务器响应并且返回手机端的课程表需要的数据。在这样的需求背景下,使用HTTP的POST协议可以很好地完成这样的功能要求。具体的实现过程是,当手机端进行课程表的刷新,或者第一次登录之后的自动刷新动作时,手机端会向服务器发送一个POST请求,服务器接受请求之后,使用用户提供的学号和密码登录并且连接教务系统获取课程表数据,成功获取数据之后,会在服务器端对数据进行处理,然后将处理完毕的数据发送给手机端,手机端就能正常显示更新后的课程表信息了。这一过程就是HTTP协议中POST的具体运用。8.2 账号验证与登录要使用用户提供的账号密码登录教务系统获取数据,就必须将用户输入的信息传输给教务系统的用户登录信息输入模块中。在这一过程中,用户输入的信息其实可以看做一个在网络上传输的文件。这一过程中,使用到了CURL命令。CURL利用了url语法,是一个在命令行方式下工作的文件传输工具。在该软件的开发过程中,用户输入信息后,使用CURL向教务系统的登录页面提交包含登录信息的表单。此时,就是在服务端上模拟用户去登录教务系统,教务系统收到了包含登录信息的表单,也即相当于有学生登录教务系统之后,教务系统会对输入的信息进行验证,当得到验证结果之后(登录成功或者失败),教务系统网页会返回登录结果。此时,服务端再通过正则表达式对网页返回的信息进行分析,以判断是否成功登录。当登录成功之后,手机端的软件则会进入首页并且显示课程表;而登录失败,则会在登录页面显示“登录失败”,以提示用户输入的信息有误,需要重新输入。8.3 获取课程表的实现获取课程表是这一软件的核心功能。实现这一过程的前提是用户输入的账号密码通过了验证成功登录教务系统(8.2小节中提到的过程)。当服务端成功登录教务系统之后,会不断地POST表单,并且尝试获取教务系统中,用于显示课程表的页面,并获取显示课程表页面的源代码。而从教务系统课程表页面中获取的源代码,由于包含网页中的其他信息,并不能直接为手机课程表所使用。因此,在获取课程表网页的源代码后,还需要对源代码进行处理,析取需要的信息而舍弃不必要的信息。此处处理课程表网页源代码的工具依然是正则表达式。在这一阶段的使用中,预先针对课程表的有效信息制定一系列语法规则,然后用正则表达式根据这个规则去匹配源代码中符合这一规则的字符串,即可从原始的源代码中获取课程表相关的信息(上课节次,上课地点,教师名称等等)。通过获取源代码,正则表达式的处理之后,数据还不能直接给手机端使用。在手机端与服务器端,需要对数据的格式和表达形式进行统一,所以服务端对数据处理之后,还需要将处理过的原始数据打包成json格式,然后传输至手机端。手机端已经对json格式的数据处理方式进行了预先的规定,所以当收到服务端传来的json格式数据包后,通过预先设定好的规则进行处理后,就能在手机的屏幕上显示课程表的画面。通过以上的一系列处理,课程表客户端的功能就得以在手机上的实现。8.4 课程表手机端的设计实现手机课程表在手机上需要实现的效果分为两个方面:8.4.1 周历课程表在周历课程表中,需要显示一幅星期日历,并且将课程的简要信息:课程名称与上课地点填写进去。8.4.2 课程详情在课程详情信息中,由于屏幕显示面积足够大,则可以显示更多有效信息。具体包括课程名称、上课地点、教师名称以及本门课程的周次安排。(例如1至18周,1至12周单周等等)。8.4.3 客户端界面实现在客户端的界面方面,采用的是RelativeLayout。由于不同Android设备的尺寸往往是不同的。作为开发者,我们需要创建适用于不同尺寸屏幕的界面布局方式。硬编码是不可取的,因此需要其他方法来组织视图3。应用Activity的布局默认定义了两个组件:Relativelayout 和 textview。组件是组成用户界面的模块,组件可以显示文字或图像,与用户交互,甚至是不止屏幕上的其他组件。按钮、文本输入控件和选择框等都是组件27。RelativeLayout是一种相对布局,因为它的属性丰富,灵活性很大,所以是手机端开发中常用的一种页面布局方案。合理利用它的各种属性值,可以很好地满足手机课程表页面布局的要求。具体到课程表的功能方面,使用了不同的色块表示不同的课程,便于用户分辨。对于每一节课所显示的色块,需要确定其长度与具体位置。其中,色块的长度表示课程的持续时间,例如连续三节课的色块,其长度则是连续两节课长度的1.5倍,以此类推。而显示色块所在的位置则取决于上课的时间。用周一至周日形成横坐标,用第一节课至第十一节课绘制成纵坐标,形成整个周历课程表的基本框架。每一门课程的上课日期对应了框架上的横坐标,而上课具体节次对应了框架上的纵坐标,制定了这样的规则,便可以确定每一门课的色块显示的具体位置和长度。当从服务端获取到处理过的课程信息数据后,填写进对应的色块位置,便形成了周历课程表的界面效果。至于课程的详细信息,则页面布局相对简单。整体显示为一个矩形,对RelativeLayout的属性进行设置之后,即能确定矩形块在屏幕上的显示位置。矩形中的信息主要分为两部分,上半部分用较大的字体显示课程名称和讲课教师姓名的信息。下半部分则是上课的时间安排和上课地点。9 软件实现效果9.1 登录页面登录页面具有两个输入框与一个登录按钮。上方的为用户名输入框,用户名即为用户的校园卡学工号。下方为密码输入框,密码需要输入学校教务系统的密码才能够成功登录。登录页面如图4所示:图4:登录页面9.2 周历课程表页面在周历课程表中,用周历的形式显示当前周次整体的课程安排。其中横坐标为日期,分别显示星期一至星期天的横坐标,纵坐标为上课的节次,根据安大的作息时间安排,分为第一节至第十一节形成纵坐标。中间区域为课程表的主体区域,用不同的色块区分不同的课程,色块中显示课程的名称与上课地点。显示的格式为“课程名称&上课地点”。周历课程表页面如图5所示:图5:周历课程表实现效果9.3 周次切换操作用户可以在周历课程表界面选择不同的周次,点击右上角的周次按钮,即可在下方弹出选择周次的操作区域。注意图6中左右两边的对比,左侧显示的是第13周的课程,而右侧显示的是第二周的课程,其中周二的第九至第十一节“大学生就业与创业”课程,在第二周显示而第十三周不显示,即表示切换周次之后,课程表的显示结果可以根据教务系统课程表对不同课程的周次安排作出合理判断。进行周次切换操作的页面如图6所示:图6:切换周次实现效果9.4 课程具体信息在周历课程表中,点击某一门课程即可显示该门课程的详细信息,包括课程名称,教师姓名,上课周次安排 ,上课地点四样具体信息。课程详情效果如图7所示:图7:课程详情实现效果9.5 刷新课程表功能在周历课程表或者课程详情页面的右上角,有一个刷新按钮,点击刷新按钮之后,页面顶端会显示蓝色进度条,提示正在进行刷新。此时,手机端也会向服务端发送一个POST请求,服务端会连接教务系统进行课程表数据的更新。刷新课程表时的操作效果如图8所示:图8:刷新实现效果10 软件功能性测试本次测试主要针对软件本身的功能进行测试。将软件整体分为若干个功能模块或功能点,由用户本身进行针对这一功能点的操作,根据不同的输入提出正确的返回结果,并且将实际结果与其进行对照,若两者保持一致,则该功能点运行正常。测试机型与环境信息:测试机型:小米2S 32GB标准版操作系统:Android 5.0.2+MIUI 6(运行模式:ART虚拟机运行)网络环境:中国联通3G+中国电信WIFI网络10.1 用户登录模块10.1.1 正常登录用户操作:输入正确的学号和教务系统密码,点击登录按钮;正确反馈:登录成功,进入周历课程表页面;实际反馈:与正确反馈一致;10.1.2 错误登录用户操作:输入错误的学号或(与)教务系统密码,点击登录按钮;正确反馈:屏幕上弹出提示文字:“登录错误”;实际反馈:与正确反馈一致;测试结论:用户登录模块功能正常。10.2 周历课程表功能模块10.2.1 切换周次用户操作:点击周历课程表右上角周次按钮,进行不同的周次选择,从第一周至第十八周按照从前到后和从后到前的顺序分别执行一次;正确反馈:周历课程表会根据用户选择的周次对显示的内容进行调整,调整后的显示结果应与教务系统本身的课程安排保持一致;实际反馈:与正确反馈一致;10.2.2 显示课表用户操作:成功进行登录,等待手机反馈结果;正确反馈:自动显示当前周次的课程表,不同课程以不同色块进行标注,色块长度与课程时间长度在纵坐标上的对应长度保持一致,上课日期在横坐标上对应正确的日期刻度;实际反馈:与正确反馈一致;测试结论:周历课程表模块功能正常。10.3 课程表刷新功能10.3.1 在周历课程表界面下刷新用户操作:在显示周历课程表界面中,点击右上角刷新按钮正确反馈:在网络通畅情况下,课程表顶端显示蓝色动态进度条提示正在更新,更新完成后获取与教务系统当前课程安排相同的信息;在网络中断情况下,提示:“网络错误,请重试”;实际反馈:与正确反馈一致;10.3.2 在课程详情页面中进行刷新操作用户操作:在显示某一门课程详情页面下,点击右上角进行课程表刷新操作;正确反馈:在网

温馨提示

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

评论

0/150

提交评论