当前位置:首页 >> 互联网 >>

基于Android的移动在线学习系统的设计与实现


基于Android的移动在线学习系统的 设计与实现

作者姓名 领 域

赵林 计算机技术 工程硕士

学校导师姓名、职称 黄健斌 教授 企业导师姓名、职称 聂彦龙 高工 提交学位论文日期 2014 年 12 月

申请学位类别

学校代码 分 类 号

10701 TP311

学 号 秘 密

1203121807 公 开

西安电子科技大学

硕士学位论文

基于 Android 的移动在线学习系统的 设计与实现

作者姓名:赵林 领 域:计算机技术

学位类别:工程硕士 学校导师姓名、职称:黄健斌教授 企业导师姓名、职称:聂彦龙高工 提交日期:2014 年 12 月

Design and Implementation of Mobile Online Learning System Based on Android

A thesis submitted to XIDIAN UNIVERSITY in partial fulfillment of the requirements for the degree of Master in Computer Science and Technology

By Zhao Lin Supervisor: Huang Jianbin Nie Yanlong December 2014

西安电子科技大学 学位论文独创性(或创新性)声明
秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下 进行的研究工作及取得的研究成果。 尽我所知, 除了文中特别加以标注和致谢中所罗列的内容 以外, 论文中不包含其他人已经发表或撰写过的研究成果; 也不包含为获得西安电子科技大学 或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡 献均已在论文中作了明确的说明并表示了谢意。 学位论文若有不实之处,本人承担一切法律责任。

本人签名:



期:

西安电子科技大学 关于论文使用授权的说明
本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属于西安电子科技大学。学校有权 保留送交论文的复印件,允许查阅、借阅论文;学校可以公布论文的全部或部分 内容,允许采用影印、缩印或其它复制手段保存论文。同时本人保证,获得学位 后结合学位论文研究成果撰写的文章,署名单位为西安电子科技大学。 保密的学位论文在
本人签名:

年解密后适用本授权书。
导师签名:



期:



期:

摘要

摘要
近年来,随着互联网的流行与发展,人们的生活方式产生了巨大的改变,在线 学习系统也成为人们日常学习的一种重要方式。另一方面,移动互联网的发展,使 人们对互联网的使用习惯产生了重大的改变,移动互联网的使用率不断提高。 本文针对已有的在线学习平台进行的深入的研究,在分析了现有在线学习平 台的基础上, 主要研究了在 Android 平台上构建一个移动的在线学习系统,在传统 课程学习网站的基础上建立起一个基于无线移动设备的在线学习系统,该系统依 托于社区,将在线学习和社区结合起来,这可以加强学生与老师之间的联系,建立 起学生与学生之间的联系,加强在线学习的互动性。用户可以浏览课程,查看课程 的详细信息,并选择关注的课程和进行学习的课程。在选择课程之后,用户可以针 对一门课程进行打分与评价,并分享自己的评论。该系统提供问答功能,用户与用 户之间可以进行交流与讨论, 以达到更好的学习效果。 文中首先从在线移动学习系 统中学生用户和教师用户的实际需求出发, 结合移动社交网络的特点, 提出了对该 系统具体的需求分析。之后,根据需求和该系统的特点采用 C/S 结构对系统进行 构建,客户端采用 MVC 的设计模式,分别介绍和分析了服务器和客户端中各个模 块之间的功能和关系, 并对数据库进行了设计。 然后重点介绍了客户端中各个模块 与功能的设计与实现。最后,对系统进行了测试,确保了系统的稳定性、安全性和 可行性。 本文采用软件工程的思想对系统进行研究设计,最终实现了稳定、高效、可靠 的移动在线学习系统。
关键词: 移动互联网, 在线学习, 社区, Android, C/S, MVC 论文类型:应用软件技术

I

西安电子科技大学硕士学位论文

II

ABSTRUCT

ABSTRUCT
In recent years, with the development of Internet, it makes a big different to the life for people, and studying online becomes an important mean to learn for people. On the other hand, as the mobile Internet becoming popular, it makes the style of using Internet for people change, and the use rates of mobile Internet improves continually. This paper makes a deep research on existing online learning platform. Based on analyzing the online learning platform, this paper researches on building a mobile online learning system for Android. It builds an online learning system for wireless devices based on classical ones for web site. The system is based on community, and makes online learning socialization. It can enhance the relation between students and teachers. It also enhance the relation between student and student, which can improve interactivity in online learning. The user can explore all the courses, views the detail information of courses, chooses courses, follows interest courses and learns courses. After the user chooses one course, he can rate and commit a comment for the course. The user can also share the comment to others. The system provides the function of question and answer. The user can communicate with others, which can achieve better results. Firstly we discuss the requirement of online learning system for the users of student and teachers. Then combined with the characteristics of social network, we propose the requirements of the mobile online learning system. Then according to the requirement and characteristic of the system, we build this system with C/S architecture, and the client is built with MVC design pattern. Then we introduce and analyze each module and function of the server and client, and we design the database. Then we focus on the server and the client in the design and implementation of the each modules and features. At last, we test this system, including server and client, for ensuring the security and stability of the system and the feasibility. This paper adopts the thought of the system software engineering to make a research and design. Finally we realize a stable, efficient and reliable mobile online learning system.
Key Words: Mobile Network, Mobile Learning, Communicate, Android, C/S, MVC Type of Dissertation: Application Software Technology
III

西安电子科技大学硕士学位论文

IV

插图索引

插图索引
图 2.1 Android 软件层次结构 ........................................................................................ 5 图 2.2 Android 传统应用程序框架 ................................................................................ 6 图 2.3 HTTP 请求和返回数据的过程 ............................................................................. 7 图 3.1 学生用户用例图 ................................................................................................. 12 图 3.2 教师用户用例图 ................................................................................................. 18 图 4.1 系统体系结构图 ................................................................................................. 23 图 4.2 数据库 E-R 图 .................................................................................................... 24 图 4.3 服务器主要模块结构图 ..................................................................................... 31 图 4.4 MVC 结构图....................................................................................................... 32 图 4.5 客户端类图 ......................................................................................................... 33 图 5.1 Activity 与 Fragment 关系图 ............................................................................. 37 图 5.2 ViewPager 示意图 .............................................................................................. 39 图 5.3 注册流程图 ......................................................................................................... 40 图 5.4 登录流程图 ......................................................................................................... 41 图 5.5 MainActivity 与各个 Fragment 的关系图 ......................................................... 42 图 5.6 查看课程排名的流程图 ..................................................................................... 42 图 5.7 查看课程信息流程图 ......................................................................................... 43 图 5.8 查看关注课程流程图 ......................................................................................... 43 图 5.9 查看关注课程流程图 ......................................................................................... 44 图 5.10 查看课程排名的流程图 ................................................................................... 45 图 5.11 查看消息的流程图 ........................................................................................... 45 图 5.12 搜索课程的流程图 ........................................................................................... 46 图 6.1 系统注册界面 ..................................................................................................... 48 图 6.2 系统登录界面 ..................................................................................................... 48 图 6.3 主界面图 ............................................................................................................. 49 图 6.4 课程排行界面 ..................................................................................................... 49 图 6.5 课程信息界面 ..................................................................................................... 50 图 6.6 关注课程界面 ..................................................................................................... 50 图 6.7 我的课程界面 ..................................................................................................... 51 图 6.8 社区界面 ............................................................................................................. 51 图 6.9 消息界面 ............................................................................................................. 52
V

西安电子科技大学硕士学位论文

图 6.10 搜索结果界面................................................................................................... 52 图 6.11 服务器性能测试结果 ........................................................................................ 54

VI

表格索引

表格索引
表 3.1 注册用例详细描述 ............................................................................................. 13 表 3.2 登录用例详细描述 ............................................................................................. 13 表 3.3 查看课程用例详细描述 ..................................................................................... 14 表 3.4 查看推荐课程的用例描述 ................................................................................. 14 表 3.5 查看课程的用例描述 ......................................................................................... 14 表 3.6 查看课程评论的用例描述 ................................................................................. 15 表 3.7 添加课程的用例描述 ......................................................................................... 15 表 3.8 关注课程的用例描述 ......................................................................................... 15 表 3.9 删除课程的用例描述 ......................................................................................... 16 表 3.10 删除关注课程的用例描述 ............................................................................... 16 表 3.11 查看消息的用例描述 ....................................................................................... 16 表 3.12 查找课程的用例描述 ....................................................................................... 17 表 3.13 评论课程的用例描述 ....................................................................................... 17 表 3.14 提问的用例描述 ............................................................................................... 17 表 3.15 回答问题的用例描述 ....................................................................................... 18 表 3.16 注册新用户的用例描述 ................................................................................... 19 表 3.17 教师用户登录用例描述 ................................................................................... 19 表 3.18 教师用户新建课程用例描述 ........................................................................... 19 表 3.19 教师用户查看课程信息用例描述 ................................................................... 20 表 3.20 教师用户查看选课学生用例描述 ................................................................... 20 表 3.21 教师用户评论的用例描述 ............................................................................... 20 表 3.22 教师用户回答问题的用例描述 ....................................................................... 21 表 4.1 学生信息表 ......................................................................................................... 25 表 4.2 选课计划表 ......................................................................................................... 25 表 4.3 日程信息表 ......................................................................................................... 26 表 4.4 教师和学生关系表 ............................................................................................. 26 表 4.5 学院信息表 ......................................................................................................... 26 表 4.6 学生关注课程表 ................................................................................................. 26 表 4.7 教师信息表 ......................................................................................................... 27 表 4.8 开课信息表 ......................................................................................................... 27 表 4.9 课程信息表 ......................................................................................................... 28
VII

西安电子科技大学硕士学位论文

表 4.10 课程得分表....................................................................................................... 28 表 4.11 消息表 ............................................................................................................... 28 表 4.12 课程打分表....................................................................................................... 29 表 4.13 课程评论表....................................................................................................... 29 表 4.14 问题表............................................................................................................... 29 表 4.15 回答问题表....................................................................................................... 30 表 4.16 学期信息表....................................................................................................... 30 表 4.17 教材信息表....................................................................................................... 30 表 6.1 登录功能的等价类 ............................................................................................. 53 表 6.2 登录功能的测试用例 ......................................................................................... 53 表 6.3 注册功能的等价类 ............................................................................................. 53 表 6.4 注册功能的测试用例 ......................................................................................... 53

VIII

缩略语对照表

缩略语对照
缩略语 MOOC VM ART XML ADT MVC JDBC 英文全称 Massive, Open, Online, Course Virtual Machine Android Runtime Extensible Markup Language Android Development Toolkit Model View Controller Java Data Base Connectivity 中文对照 大规模网络开放课程 虚拟机 Android 运行时 可扩展标记语言 Android 开发工具 模型、视图和控制器 Java 数据库连接器

IX

西安电子科技大学硕士学位论文

X

目录

目录
摘要 ................................................................................................................................... I ABSTRUCT .................................................................................................................. III 插图索引 .......................................................................................................................... V 表格索引 ....................................................................................................................... VII 缩略语对照 .....................................................................................................................IX 第一章 绪论 ..................................................................................................................... 1 1.1 项目背景 ............................................................................................................. 1 1.2 国内外研究现状 ................................................................................................. 2 1.3 项目研究目标 ..................................................................................................... 3 1.4 项目研究内容 ..................................................................................................... 3 第二章 相关理论与工具................................................................................................. 5 2.1 Android 介绍 ........................................................................................................ 5 2.1.1 Android 简介 .............................................................................................. 5 2.1.2 Android 程序解析 ...................................................................................... 6 2.2 数据请求与响应 ................................................................................................. 7 2.2.1 HTTP GET 和 POST 请求 ........................................................................ 7 2.2.2 XML 数据格式 .......................................................................................... 7 2.3 其它技术 ............................................................................................................. 8 2.3.1 数据传输安全 ........................................................................................... 8 2.3.2 数据压缩 ................................................................................................... 8 2.4 开发平台介绍 ..................................................................................................... 8 2.5 本章小结 ............................................................................................................. 9 第三章 需求分析........................................................................................................... 11 3.1 功能需求 ........................................................................................................... 11 3.1.1 需求描述 ................................................................................................. 11 3.1.2 用例描述 ................................................................................................. 12 3.2 性能需求 ........................................................................................................... 21 3.2.1 响应时间需求 ......................................................................................... 21 3.2.2 稳定性需求 ............................................................................................. 21 3.3 系统开发原则 ................................................................................................... 21 3.4 本章小结 ........................................................................................................... 22
XI

西安电子科技大学硕士学位论文

第四章 系统设计........................................................................................................... 23 4.1 系统总体设计................................................................................................... 23 4.2 数据库设计....................................................................................................... 23 4.2.1 数据库结构设计 ..................................................................................... 23 4.2.2 数据库设计 ............................................................................................. 24 4.3 服务器设计....................................................................................................... 30 4.4 客户端设计....................................................................................................... 32 4.5 本章小结........................................................................................................... 33 第五章 系统实现........................................................................................................... 35 5.1 服务器实现....................................................................................................... 35 5.2 客户端实现....................................................................................................... 35 5.2.1 客户端中用到的技术和方法 .................................................................. 35 5.2.2 客户端具体实现 ..................................................................................... 40 5.3 本章小结........................................................................................................... 46 第六章 系统测试........................................................................................................... 47 6.1 测试环境........................................................................................................... 47 6.1.1 硬件环境 ................................................................................................. 47 6.1.2 软件环境 ................................................................................................. 47 6.2 系统界面测试................................................................................................... 47 6.2.1 系统界面测试 ......................................................................................... 47 6.2.1 黑盒测试 ................................................................................................. 52 6.3 性能测试........................................................................................................... 54 6.3.1 客户端性能测试 ..................................................................................... 54 6.3.2 服务器性能测试 ..................................................................................... 54 6.4 本章小结........................................................................................................... 55 第七章 总结与展望....................................................................................................... 57 7.1 本文总结........................................................................................................... 57 7.2 系统不足与改进方案 ....................................................................................... 57 7.2.1 系统存在的不足 ..................................................................................... 57 7.2.2 系统的改进方案 ..................................................................................... 58 参考文献......................................................................................................................... 59 致谢................................................................................................................................. 63 作者简介......................................................................................................................... 65

XII

第一章 绪论

第一章 绪论
1.1 项目背景
近年来,随着智能手机的不断发展,移动互联网[1]的使用率不断提升。人们可 以通过移动终端快速、方便的在虚拟世界中进行交流沟通,即时的分享状态、图片 或者视频, 用户可以通过移动互联网完成传统互联的所实现的功能, 把每个用户连 结在一个无形的移动互联网中。 随着互联网的发展,在互联网上出现了在线学习,在线学习的出现推动了 MOOC[2]的诞生。MOOC 是 Massive(大规模的) 、Open(开放的) 、Online(在线 的)和 Course(课程)四个单词首字母的组合,意思是大规模的网络开放课程, MOOC 是由许多学习者分享的学习资料组合建立起来的[3]。MOOC 逐渐成为在职 用户或非全日制学生的一种学习方式,这些用户可以利用业余时间进行在线学习。 MOOC 是一个新兴的学习形式,它可以给非学生用户带来学习的机会。MOOC 的 课程与学校中的类似,开设 MOOC 的学校对用户的学分一般没有强制的要求,当 用户完成一定限度的学分之后,一些学校也会给用户颁发结业证书[4]。 MOOC 起源于开放教育资源运动和学习连接主义的思潮[5], 近年来, 已有大量 MOOC 或与之类似的项目上线,例如斯坦福大学的 Coursera、安德森-霍洛维茨投 资的 Udacity,和网易公开课等。MOOC 有两大特点[6]:第一是开放共享,MOOC 的用户不一定是在校的学生, 对学分和学位没有硬性要求, 用户也不必缴纳学费, 对于每一个学生都是平等开放的,让大家共享;第二是可扩展性,一般的传统课程 是由教师带领有限数量的学生进行学习, 有时由于学生众多, 导致每个学生分配的 学习资源非常有限。但在 MOOC 里的课堂是针对的是不确定的参与者,每个学生 都可以自主的选择学习科目,并利用资源达到高效利用教学资源的目的[7]。 同时, 移动设备的发展也在推动移动互联网的发展, 而移动互联网的发展推动 了另一个新兴事物—移动学习(Mobile Learning)[8]。移动学习可以让用户移动设 备进行学习,没有时间和地点的限制,让用户获取想要获得内容,并且提供了学习 者和授课者之间的交流的功能,除此之外移动学习包含以下几个特点[9]。第一是普 遍适用性,随着智能移动设备快速发展和迅速普及,加上移动带宽的飞速提升,用 户可以通过移动终端随时随地的接入互联网[10]; 第二是易用性, 和电脑相比, 使用 移动设备更加方便用户操作, 比如触摸式的输入, 这比电脑上的键盘输入容易学习 得多, 移动设备的语音交互功能也可以为在线学习提供一个新的方式, 提升学习效 率[11]。 同时手机上应用程序启动方便, 通过几个简单的操作就可以完成用户所需要 的功能; 第三是便携性, 在很多场合, 移动终端成了惟一的选择, 用户可以在卧室、
1

西安电子科技大学硕士学位论文

地铁或图书馆等地方,通过移动终端接入互联网,将这些地方变为课堂,随时随地 都可以学习[12]。正是因为以上几个特点,网络移动化学习正在逐步的进入每一个 人的生活之中。

1.2 国内外研究现状
随着互联网的发展和普及, 国内外出现了网络化学习平台, 为用户提供了网络 学习环境。很多高校将学习视频和资料共享在网络上,供用户自由观看和下载,进 一步推动了网络学习。 又加之移动网络的发展和普及, 人们可以通过移动网络或者 WIFI 轻松的接入互联网,并利用空闲时间进行学习,移动的网络学习也在潜移默 化的改变人们对学习的方法[13]。 2001 年,美国大学麻省理工学院(MIT)推出了开放课程系统[14],学校提供 的基于网络的免费教学资源, 这样做不仅可以提升自身的教学质量, 还可以供所有 的用户免费使用。到目前为止,MIT 已有五百多门免费的课程,包括 MIT 的三十 三个学科和全部五个学院, 相关课程提供课件给用户, 这样可以给双语教学的教师 提供较好的参考资料, 使学校能够站在一个更高的起点上进行课程建设, 提高教学 水平。 MIT 提供了所有课程的教程大纲、 课程安排和讲课记录等内容, 同时还提供 许多课程的视频、音频和课件等资源的链接,供用户免费下载。 斯坦福大学也推出了开放课程系统 Coursera[15],它是由斯坦福大学的计算机 科学教授吴恩达和达芙妮?科勒简历的在线学习网站。Coursera 与多家大学合作, 给用户提供免费的在线课程。Coursera 与其它几所大学建立合作关系,有来自 196 国家的超过 190 万人用户, 其中有超过一半来自海外。 Coursera 的首批合作院校包 括了美国众多名校,包括密歇根大学、斯坦福大学、普林斯顿大学和宾夕法尼亚大 学等。 2007 年,三名斯坦福大学学生创办选课网站 CourseRank[16],该网站帮助在校 学生挑选课程。在该网站中,学生可以获取往年选课的信息,可以自由的对某个已 选课程进行评价和打分,还可以提出问题。此外学生可以通过该系统选课,系统会 生成相应的课程表。另一方面,老师可以轻松的管理自己所带的课程,并回答学生 的提问。 目前有超过 95%的斯坦福大学学生都用 CourseRank 进行选课。 除此之外, 一些美国和加拿大的其它学校也在使用 CourseRank,杜克大学、如伯克利大学和 康奈尔大学等。 2010 年 11 月,网易推出公开课平台网易公开课,第一批上线的课程有一千多 集, 其中约有五分之一的学习视频配有中文字幕。 用户可以在线免费观看世界名校 带来的公开课课程,内容涵盖人文、社会、艺术和金融等众多领域,为用户提供了 一个在线学习外国名校课程的平台。 随着互联网的日益发展,学习和网络也必将成为学习的一种新的趋势[17],加
2

第一章 绪论

之移动平台的不断发展, 移动平台的网络化学习也将进一步走进人们的生活。 各大 网络化学习平台为用户提供了大量免费的学习资料,用户也可以很轻松的获得希 望得到的知识, 并得到可以和在世界著名高校中得到同样的授课内容, 并且有着不 受时间空间的限制、 学习内容个性化和学习费用低等诸多优点, 移动网络化学习也 将会成为一种重要的课堂学习外的学习方式[18]。

1.3 项目研究目标
本项目的研究目标是建立一个基于 Android 的移动学习系统。 在分析现有的在 线学习平台的基础上,建立一个可以选课、评价、学习一体的,依托社区建立的移 动在线学习平台。 该项目将网络移动化学习与社区相结合,将选课、课程评价、课程统计和课程 学习进行了进一步的整合,将几个独立的部分融合在一起,给课程评价、打分以及 对课程进行提问, 建立一个以用户评论为核心的移动在线学习辅助平台。 用户可以 通过手机客户端在任意时间、 任意地点进行在线的课程学习, 充分利用零碎的时间, 没有时间和空间的限制。 学生可以对每门课程进行评价和打分, 并且支持在线提问, 可以提高学生的学习效率。

1.4 项目研究内容
本文主要研究基于 Android 的选课评价系统, 通过对已有的在线学习系统的分 析,建立一个移动的在线学习系统,用户可以对课程进行评价和打分,还可以进行 讨论,依托于社区,完善在线学习的功能。本文主要分为以下几个章节。 第一章主要叙述了研究背景、研究目标及研究内容。 第二章主要介绍了 Android 应用的结构, 讨论了客户端与服务器见的通信协议 和方法,最后介绍本系统的开发平台和开发环境。 第三章提出了该系统的需求分析, 描述该系统的功能需求、 性能需求和系统开 发的原则。 第四章在需求分析的基础上, 具体讨论了该系统的设计。 具体分析了数据库、 服务器和客户端的设计方法,着重对客户端的实现进行了介绍。 第五章中根据系统设计对系统的客户端和服务器进行了实现。 第六章对系统的界面进行了测试,并采用黑盒测试对系统的部分功能进行了 测试。 第七章对本文做了总结,指出了系统存在的不足并提出了改进方案。

3

西安电子科技大学硕士学位论文

4

第二章 相关理论与工具

第二章 相关理论与工具
在本章,主要对 Android 框架、应用结构和在该系统中使用到的理论及工具进 行简要的描述和介绍,为以后的开发奠定基础。

2.1 Android 介绍
2.1.1 Android 简介
Android 是一种基于 Linux 的开源的操作系统[19],为了能让 Linux 在移动设备 上良好的运行,Google 对 Linux 系统进行了修改和扩展。Android 中使用了 Bionic 代替了 libc,它是 libc 的改良版本,对原有库进行了优化。Android 中的网页浏览 器使用了开源的 Webkit,图像引擎采用 Skia 引擎,配合 OpenGL ES(OpenGL for Embedded Systems) ,提供对 2D 和 3D 图形的内置支持。Android 上层的应用程序 大多采用 Java 进行开发, 将程序编译成特定的虚拟机代码, 然后运行在 Android 特 定的虚拟机中。Android 软件层次结构图如图 2.1 所示。
应用程序 Android内建程序、第三方应用程序 应用程序框架 电话管理、定位管理、提醒、窗口、资源管理等 库 图形、多媒体、数据库、Webkit Android运行库 Dalvik虚拟机

Linux内核 电源管理、文件系统、驱动、进程等

图 2.1 Android 软件层次结构

Android 程序运行时,在传统模式下的应用程序,Java 字节码会被实时的转换 为 Dalvik dex-code(Dalvik Executable Code) ,然后通过 Android 中的 Dalvik 虚拟 机(Dalvik VM)来运行。每个 Android 应用程序都在独立的虚拟机中,每一个虚 拟机都是 Linux 中的一个进程,这个进程由 Linux 内核控制,每一个进程都有独立 的内存空间和生命周期。而在新推出的 ART(Android Runtime)环境中,Android 的 应用在安装的时候,会根据不同 CPU 的平台,将应用中的虚拟机代码编译成本地 代码,之后直接运行在内核智商,无需在虚拟机中运行,这样可以提高 Android 的 运行效率。Android 传统的应用程序框架如图 2.2 所示。
5

西安电子科技大学硕士学位论文
Linux内核 Linux进程 Dalvik虚拟机 Android应用程序

图 2.2 Android 传统应用程序框架

此外,Android 还具有如下特点。 ? ? ? ? 开放性: Android 不仅包含操作系统底层的基本框架、 驱动和硬件抽象层, 还包括用户界面和基本的应用程序,如短信和相机等。 平等性:在 Android 系统中,不论是核心应用还是第三方应用,都拥有相 同的优先级, 任何第三方应用都可以替代原有的应用, 不会影响系统运行。 无界限性:在 Android 中,一个程序不仅可以调用系统的 API 以实现系统 提供的功能,同时它还可以被其它的程序所调用,为其它应提供服务。 快捷性:Android 中自带了大量的 API,这些 API 都提供给开发人员,为 快速开发提供基础。

2.1.2 Android 程序解析
Android 应用程序中主要由四个基本模块构造而成[20]: Activity, Intent, Content Provider 和 Service。下面对这四个部分进行介绍。 (1)Activity Activity 是 Android 中最基本的模块,在一个应用程序中,一个 Activity 就是 一个界面,Activity 类将会显示各个空间组成的接口,并对事件做出响应。 (2)Intent Android 中要实现不同 Activity 之间的切换就需要使用 Intent 类, Intent 包含动 作和动作对应的数据,它还可以用于描述应用的功能。 (3)Content Provider Android 应用可以把需要存储的数据保存在文件或数据库当中,当数据与其它 应用共享时就可以使用 Content Provider。Content Provider 提供了接口,供其它方 法调用数据。 (4)Service Service 就是服务,它有很长的生命周期,可以运行在后台并为前台的应用提 供服务。Service 启动后会保持后台运行,直到程序结束这个 Service。
6

第二章 相关理论与工具

2.2 数据请求与响应
在网络应用程序中, 客户端一般采用 HTTP 请求向服务器发送数据, 然后服务 器会根据请求内容返回请求的信息;返回数据的类型一般为 XML 或 JSON,在本 系统中采用 XML 数据格式。 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种建立在 TCP 协议 上的应用层协议[21],在互联网上有比较广泛的使用。HTTP 请求分为 POST 请求和 GET 请求, 它们用于网络传输时发送变量和参数组成的键值对。 每个 HTTP 中 GET 和 POST 请求都由一系列 HTTP 请求头组成,这些请求头描述了客户端向服务器 发送的数据格式及内容。服务器响应则是包含了 HTTP 应答头和应答数据,如果 请求成功则返回应答,如果不成功会返回相应的错误代码。HTTP 请求与应答的过 程如图 2.3 所示。
查找 HTTP请求

数 据 库
返回数据

服 务 器
数据

客 户 端

图 2.3 HTTP 请求和返回数据的过程

2.2.1 HTTP GET 和 POST 请求
HTTP GET 以使用 MIME 类型的 urlencoded 文本格式传递参数[22], Urlencoding 是一种字符编码,用来保证传输的数据符合规定的结构。当发送 GET 请求时,需 要把要发送的参数和内容连接在 URL 之后,通过问号连接,如果含有多个参数, 需要使用“&”符号分隔开。在浏览器中发送 GET 请求时,URL 会显示在浏览器 中的地址栏上,一些敏感或者保密数据会直接显示出来。另一方面,由于部分浏览 器中 URL 的长度是受限的,所以传递的参数的长度也会受到限制。 在 POST 请求中被提交的数据是放在 HTTP 包的包体中[22], 这样就无需在 URL 中添加参数,这些请求操作对于普通的用户是不可见的,POST 可以发送的数据量 也更大,它还支持的字符集更大,无需对传输的参数进行格式转换。

2.2.2 XML 数据格式
XML (Extensible Markup Language) 是可扩展标记语言[23]的缩写, 它可以用来 标记数据和定义数据类型,用户可以对 XML 进行自定义。它非常适合网络传输, 提供统一的方法来描述和交换数据, 而这些数据是独立于应用程的, Java 也提供了 相应的 API 来解析 XML,它有以下几个特点。 ? ? ? 可扩展性:XML 是一种文本标记语言,可以根据用户需求进行扩展。 传输性:XML 是用来传输数据的,而不是用来显示数据。 自定义:XML 没有规定的标签,用户在使用时可以进行设置。
7

西安电子科技大学硕士学位论文

XML 拥有标准通用标记语言的结构化功能,这样就使得用户可以根据不同的 场景和需求定义自己的文档类型的格式与结构,增加了灵活性。

2.3 其它技术
2.3.1 数据传输安全
MD5(Message-Digest Algorithm 5)是用于确保信息传输完整一致的算法[24], 也可以用作加密算法,它是在互联网中使用比较广泛的加密算法之一。 MD5 可以用于该系统的登录认证,在该系统中将用户注册时使用的密码经过 MD5 加密储存在数据库中,当用户登录的时候,客户端会把用户输入的密码进行 MD5 加密,之后再去和保存在数据库中的 MD5 值进行比较,来确认用户的密码 是否正确。 数据库中存储的也不是用户真实的密码, 而是通过 MD5 加密后的内容, 系统无法获取用户的真实数据。这样在不知道用户明文密码的情况下就可以验证 用户的合法性,这样可以防止在传输的过程中登录验证的数据被截获导致明文密 码泄露。即使经过 MD5 加密后的密码被截获,在现有条件下想要解码需要极高的 代价,从而基本上可以保证用户数据在传输时的安全。

2.3.2 数据压缩
在互联网上传输数据需要考虑到数据的格式、 编码以及容量。 在该项目中数据 是以字符串的方式传输的,因此可以对数据进行压缩,以压缩数据的体积,进而使 数据的传输速度加快并且可以节省用户的流量,在移动设备上有重大的意义。 目前在互联网上使用较为广泛的压缩格式为 gzip[25],它原本是 Linux 中的压 缩软件,通过 gzip 将字符串压缩后再进行发送可以有效的减小数据的体积。当客 户端向服务器发起请求时,服务器会先从数据库中读取数据,将数据以 XML 的格 式编码, 再将编码好的数据通过 gzip 压缩, 最后再把压缩好的数据传输给客户端, 这样可以使原有数据量减小,加快传输,提升用户体验。

2.4 开发平台介绍
本项目的开发分为服务器端和客户端, 分别基于 Android 和 J2EE, 分别使用的 开发环境如下。 服务器采用 Eclipse 作为开发工具,配合 Maven 插件对依赖包进行管理,服务 器采用 Tomcat,数据库采用 MySQL,采用 Git 进行版本控制,服务器在 Linux 环 境下运行。 客户端采用 Android Studio 作为开发工具,使用 Gradle 进行构建和依赖包管 理,配合 ADT(Android Development Toolkit)进行开发,采用 Git 进行版本控制, 客户端运行在 Android4.4 系统之上。
8

第二章 相关理论与工具

2.5 本章小结
本章主要介绍了开发该项目所用到的理论、工具及开发平台。首先介绍 Android 的基本结构和 Android 应用的重要组件,然后介绍了 Android 应用与服务 器的数据请求方式, 之后介绍了服务器和客户端用到的具体技术, 最后介绍了该项 目的开发平台及开发环境,为后面的系统设计与实现奠定了基础。

9

西安电子科技大学硕士学位论文

10

第三章 需求分析

第三章 需求分析
3.1 功能需求
功能需求是根据用户需求所提出对软件功能上的需求, 描述了开发人员在该软 件中需要实现功能, 这些需求可以让用户完成基本的操作, 从而满足用户的业务需 求。下面根据用户的需求对该系统进行需求描述。

3.1.1 需求描述
根据该系统的需求,系统的角色中包含学生和教师
[26]

。学生用户是该系统的

主要用户之一,学生可以完成选课、评价和打分等功能。教师用户主要完成课程的 开设、问题解答和管理学生等功能。为了建立一个以课程、评论和打分为核心的系 统,用户需求都应该是以课程为核心的,主要功能都是围绕课程展开。下面就主要 对学生和教师用户的需求进行描述。 学生用户是该系统的主要用户, 学生的可以在该系统中完成对课程的操作, 学 生用户主要的需求如下。 (1)注册:未注册的用户可以使用邮箱注册新用户,如果有些未被注册则注册 成功,否则会注册失败。 (2)登录:用户可以使用已注册的邮箱和密码在客户端登录系统,如果登录成 功将跳转到主界面,否则将提示登录失败。 (3)查看课程:用户可以查看课程的详细信息,其中包括课程的基本信息和选 课分布等内容。 (4)查看推荐课程:查看系统推荐的课程,推荐内容包括按课程评分排行、选 课人数排行和平均成绩排行 (5)查看课程信息:用户在选择一门课程之后可以查看这门课的详细信息,包 括课程基本信息、课程打分等内容。 (6)查看课程评论:用户可以选择一门课查看其他用户对该课程的评论。 (7)添加课程:用户可以将一门未选择过的课程添加到选课列表中。 (8)关注课程:用户可以将一门没有关注的课程添加到关注列表,该课程可以 是用户已选的课程。 (9)删除课程:用户可以从选课列表中删除一门课程。 (10)取消关注:用户可以从关注课程列表中删除一门已经关注的课程。 (11)查看消息:查看系统向用户发送的消息和其他用户发送的站内信, 。 (12)查找课程:根据课程编号或者关键字查找课程,并将所有符合条件的课 程显示在列表中。
11

西安电子科技大学硕士学位论文

(13)评论课程:用户可以针对一门选择过的课程进行评论并打分。 (14)提问:用户可以针对一门课程进行提问。 (15)回答问题:用户可以针对其他用户提出的问题进行答复。 教师在该系统中主要完成对课程的操作和对学生的管理,教师的主要需求描述 如下。 (1)注册:未注册的教师用户可以使用工号注册新用户,如果有些未被注册则 注册成功,否则会注册失败。 (2)登录:用户可以使用注册的工号和密码在客户端登录系统。 (3)新建课程:教师用户可以向可选课程中添加一门新的课程。 (4)查看课程信息:选择一门课程之后可以查看这门课的详细信息 (5)查看选课学生:查看选定一门课的学生,包括选课学生人数、选择院系分 布等内容 (6)回答问题:教师用户可以针对一门课程回答学生用户提出的问题。

3.1.2 用例描述
根据对学生用户的需求分析,学生用户用例[27]包括注册、登录、查看课程、查 看推荐课程、查看课程信息、查看课程评论、添加课程、关注课程、删除课程、查 看消息、查找课程、评论课程、提问和回答问题等功能,学生用户用例图如图 3.1 所示。

图 3.1 学生用户用例图

在学生用户需求和用例图的基础之上, 对学生用户中的各个用例进行详细描述。
12

第三章 需求分析

每个用例的详细描述包含了该用例的执行者、 用例具体的内容、 执行该用例的前置 条件、 后置条件、 用例场景和执行规则, 这几个部分可以描述一个用例发生的条件、 内容和结果, 可以通过用例描述分析每一个需求的具体场景。 下面将具体分析学生 用户每一个用例的详细情况。 (1)注册 使用该系统必须拥有账号和密码,因此新用户第一次使用时必须使用学号完 成注册新用户,并且提交相关个人信息,在系统确认成功之后才能登录系统。如果 用户注册成功,则会返回登录界面;如果注册失败,则会显示错误信息具描述如表 3.1 所示。
表 3.1 注册用例详细描述 执行者 用例描述 前置条件 后置条件 学生用户 用户使用邮箱注册新账户 用户下载、安装并启动客户端 用户注册成功 1.用户点击登录界面上的注册按钮 用例场景 2.客户端显示要输入的注册信息 3.用户输入注册信息 4.系统检测注册信息,注册成功后返回登录界面 规则 用户输入错误后系统提示用户重新输入

(2)登录 用户完成注册后, 使用已经注册好的账号和密码进行登录, 如果用户登录成功, 则会跳转到主界面; 如果用户登录失败, 则会显示错误信息。 具体用例描述如表 3.2 所示。
表 3.2 登录用例详细描述 执行者 用例描述 前置条件 后置条件 学生用户 用户使用已有账户进行登录 用户已经注册 登录成功后进入主界面 1.用户输入登录信息,并点击登录按钮 用例场景 2.系统检测登录信息 3.如果登录成功,客户端跳转到主界面 4.如果登录失败,提示用户重新输入 规则 账号或密码错误时提醒用户重新输入

(3)查看课程 用户在登录成功之后可以查看详细的课程信息及课程介绍,如果查看请求发 送成功,则会显示具体的课程;如果查看请求失败,则返回错误信息。具体用例描 述如表 3.3 所示。

13

西安电子科技大学硕士学位论文 表 3.3 查看课程用例详细描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户查看课程 用户已经登录 显示课程的详细信息 1.用户点击课程按钮 2.如果获取课程信息成功,则用户查看课程成功 3.如果获取课程信息失败,则显示错误信息 无

(4)查看推荐课程 系统会根据每一门课程的打分高低、评论数和平均得分等作为排名依据为学 生用户提供课程推荐, 用户在登录成功之后可以查看系统推荐的课程列表, 具体的 用例描述如表 3.4 所示。
表 3.4 查看推荐课程的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户查看推荐课程 用户已登录 用户查看推荐课程列表成功 1.用户点击课程推荐按钮 2.如果有相应的课程推荐,则显示推荐课程 3.如果没有相应的课程推荐,则显示无推荐课程 无

(5)查看课程信息 学生用户可以查看一门课程的详细信息,用户在选择一门课程之后可以查看 这门课的详细信息。如果该课程有详细信息则显示,否则就不显示详细内容。具体 的用例描述如表 3.5 所示。
表 3.5 查看课程的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户查看课程详细信息 用户已登录 用户查看课程详细信息成功 1.用户点击一门课程 2.如果该课程有详细信息,则显示课程的详细内容 3.如果该课程没有详细信息,则显示暂无详细信息 无

(6)查看课程评论 学生用户可以查看一门课程的课程评论, 如果该课程有其他用户的评论, 则显 示;如果该课程没有其他用户的评论,就不显示该课程的评论,具体的用例描述如 表 3.6 所示。
14

第三章 需求分析 表 3.6 查看课程评论的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户查看一门课程的评论信息 用户已登录 用户查看课程评论成功 1.用户点击评论按钮 2.如果该课程有用户评论,则显示评论内容 3.如果该课程没有用户评论,则显示暂无评论 无

(7)添加课程 学生用户可以在该系统中进行选课管理,用户可以将一门课程添加到选课列 表中, 如果添加成功则显示成功, 如果添加失败则提示用户选课失败具体的用例描 述如表 3.7 所示。
表 3.7 添加课程的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户将一门课程添加到选课列表 用户已登录 用户添加课程成功 1.用户点击添加课程按钮 2.如果添加成功,则显示课程添加成功 3.如果添加失败,则显示课程添加失败 无

(8)关注课程 学生用户可以在该系统中对关注的课程进行管理,用户可以将一门课程加入 到关注列表中,保持对该课程的关注,如果添加成功则显示成功,如果添加失败在 显示失败具体的用例描述如表 3.8 所示。
表 3.8 关注课程的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户将一门课程添加到课程关注列表 用户已登录 用户添加课程关注成功 1.用户点击添加课程按钮 2.如果添加成功,则显示关注课程成功 3.如果添加失败,则显示关注课程失败 无

(9)删除课程 学生用户可以从已选课程列表中删除一门已选的课程,如果删除成功则显示 成功, 如果删除成功则显示失败就显示删除失败并返回错误信息。 具体的用例描述 如表 3.9 所示。
15

西安电子科技大学硕士学位论文 表 3.9 删除课程的用例描述 执行者 用例描述 前置条件 后置条件 学生用户 学生用户从已选课程中删除一门课 用户已登录并且选择了该课程 用户删除课程成功 1.用户长按课程列表中的一门课程,弹出对话框 用例场景 2.如果点击删除,则删除该课程 3.如果点击取消,则取消删除该课程 4.如果删除成功,则显示删除课程成功,否则显示删除课程失败 规则 无

(10)取消关注 用户可以从课程关注列表中取消关注一门已关注的课程,如果取消关注成功 则显示成功,否则显示取消关注失败具体的用例描述如表 3.10 所示。
表 3.10 删除关注课程的用例描述 执行者 用例描述 前置条件 后置条件 学生用户 学生用户从关注课程中删除一门课 用户已登录并且关注了该课程 用户取消关注课程成功 1.用户长按关注课程列表中的一门课程,弹出对话框 用例场景 2.如果点击删除,则取消关注该课程 3.如果点击取消,则放弃取消关注该课程 4.如果取消关注成功,则显示成功,否则显示失败 规则 无

(11)查看消息 学生用户在登录后可以查看系统或其他用户发送的消息,包括站内信和短消 息。如果接受成功则显示消息的具体内容,否则不显示消息的内容。具体的用例描 述如表 3.11 所示。
表 3.11 查看消息的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户查看站内信或系统通知 用户已登录 用户查看站内信或系统通知成功 1.用户点击站内信按钮 2.如果有站内信或者系统通知,则显示内容 3.如果没有站内信或者系统通知,则显示暂无通知 无

(12)查找课程 学生用户可以根据一门课程的课程编号或课程编号的一部分对该课程进行查 找,如果查找成功则显示相关课程的列表,否则显示没有相应的课程。具体的用例 描述如表 3.12 所示。
16

第三章 需求分析 表 3.12 查找课程的用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 学生用户 学生用户通过课程编号查找课程 用户已登录 用户查找相应的课程成功 1.用户点击查找按钮,并输入要查找的课程编号 2.如果查找的相应课程,则显示查找内容 3.如果没有查找到相关课程,则显示无查找内容 用户必须输入课程编号或编号开头的数字

(13)评论课程 学生用户可以对课程进行评论, 用户选择一门课程之后, 用户可以针对一门选 择过课程进行评论并打分。 如果评论成功则返回评论列表, 如果评论失败则显示失 败信息。具体的用例描述如表 3.13 所示。
表 3.13 评论课程的用例描述 执行者 用例描述 前置条件 后置条件 学生用户 学生用户针对一门选择过课程进行评论并打分 用户已登录并选择了该课程 评论课程成功 1.用户选择一门已选择的课程,点击评论按钮 用例场景 2.输入评论的内容 3.如果评论成功,则返回评论列表 4.如果评论失败,则显示评论失败 规则 评论字数不能大于 140 个字

(14)提问 学生用户可以针对一门已经选择的课程进行提问,如果用户提问成功则返回 问题列表, 如果用户提问失败否则显示提问失败并返回错误信息。 具体的用例描述 如表 3.14 所示。
表 3.14 提问的用例描述 执行者 用例描述 前置条件 后置条件 学生用户 学生用户对一门已选择的课程进行评论 用户已登录并且选择了该课程 用户提问成功 1.用户选择一门已选择的课程,点击提问按钮 用例场景 2.输入要提问的内容 3.如果提问成功,则返回问题列表 4.如果提问失败,则显示提问失败 规则 提问的字数不能超过 140 个字

(15)回答问题 学生用户可以针对其他用户提出的问题进行答复,如果用户回答成功则返回 回答列表, 如果用户回答失败则显示回答失败并返回错误信息。 具体的用例描述如
17

西安电子科技大学硕士学位论文

表 3.15 所示。
表 3.15 回答问题的用例描述 执行者 用例描述 前置条件 后置条件 学生用户 学生用户对一门已选择的课程的问题进行回答 用户已登录并且选择了该课程 用户回答问题成功 1.用户选择一门已选择的课程的问题,点击回答按钮 用例场景 2.输入要回答的内容 3.如果回答成功,则返回问题列表 4.如果回答失败,则显示提问失败 规则 回答的字数不能超过 140 个字

下面使用相同的方法对教师用户的用例进行分析。根据对教师用户的需求分 析,教师用户用例包括注册、登录、新建课程、查看课程信息、查看选课学生和回 答问题等,教师用户用例图如图 3.2 所示。

图 3.2 教师用户用例图

根据对教师需求的描述和教师用户的用例图, 下面对教师用户的各个用例进行 详细描述。 (1)注册 未注册教师的在使用系统之前必须进行注册, 因此新教师用户第一次使用时必 须使用工号完成注册新用户, 并且提交相关个人信息, 在系统确认成功之后才能登 录系统,具体的用例描述如表 3.16 所示。

18

第三章 需求分析 表 3.16 注册新用户的用例描述 执行者 用例描述 前置条件 后置条件 教师用户 教师用户使用工号注册新账户 用户下载、安装并启动客户端 用户注册成功 1.用户点击登录界面上的注册按钮 用例场景 2.客户端显示要输入的注册信息 3.用户输入注册信息 4.系统检测注册信息,注册成功后返回登录界面 规则 用户输入错误后系统提示用户重新输入

(2)登录 教师用户可以使用注册的工号和密码在客户端登录系统, 如果登录成功则进入 主界面,如果登录失败则返回登录界面,提示用户重新登录。具体的用例描述如表 3.17 所示。
表 3.17 教师用户登录用例描述 执行者 用例描述 前置条件 后置条件 教师用户 用户使用已有账户进行登录 用户已经注册 登录成功后进入主界面 1.用户输入登录信息,并点击登录按钮 用例场景 2.系统检测登录信息 3.如果登录成功,客户端跳转到主界面 4.如果登录失败,提示用户重新输入 规则 账号或密码错误时提醒用户重新输入

(3)新建课程 教师用户向课程列表中添加一门新的课程,如果添加成功则返回课程列表,否 则显示添加失败。具体的用例描述如表 3.18 所示。
表 3.18 教师用户新建课程用例描述 执行者 用例描述 前置条件 后置条件 教师用户 教师用户向可选课程中添加一门新的课程 用户已登录 用户添加课程成功 1.用户点击添加课程按钮 用例场景 2.用户输入课程今本信息,点击确定 3.如果添加成功,则显示课程添加成功 4.如果添加失败,则显示课程添加失败 规则 无

(4)查看课程信息 教师用户选择可以查看自己所带课程的详细信息, 如果查看成功则显示课程信 息, 如果查看失败, 则显示查看失败并返回错误信息。 具体的用例描述如表 3.19 所
19

西安电子科技大学硕士学位论文

示。
表 3.19 教师用户查看课程信息用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 教师用户 教师用户查看课程详细信息 用户已登录 用户查看课程详细信息成功 1.用户点击一门课程 2.如果该课程有详细信息,则显示课程的详细内容 3.如果该课程没有详细信息,则显示暂无详细信息 无

(5)查看选课学生 教师用户可以查看自己所带课程的选课学生, 如果查看成功则显示选课学生的 名单,否则显示查找失败。具体用例描述如表 3.20 所示。
表 3.20 教师用户查看选课学生用例描述 执行者 用例描述 前置条件 后置条件 用例场景 规则 教师用户 教师用户查看选课学生 用户已登录 用户查看课程选课学生成功 1.用户点击一门课程 2.如果该课程有选课学生,则显示课程的选课学生 3.如果该课程没有选课学生,则显示暂无详细信息 教师用户只能查看自己开设课程选择学生

(6)评论 教师用户可以针对自己所带的课程进行评论回复, 如果回复成功则返回问题列 表,如果回复失败则显示失败。具体的用例描述如表 3.21 所示。
表 3.21 教师用户评论的用例描述 执行者 用例描述 前置条件 后置条件 教师用户 教师用户针对一门所代的课程进行评论并打分 用户已登录并选择了该课程 评论课程成功 1.用户选择一门已选择的课程,点击评论按钮 用例场景 2.输入评论的内容 3.如果评论成功,则返回评论列表 4.如果评论失败,则显示评论失败 规则 评论字数不能超过 140 个字

(7)回答问题 教师用户针对一门课程回答学生用户提出的问题, 如果回答成功则分会问题列 表,否则显示失败。具体的用例描述如表 3.22 所示。

20

第三章 需求分析 表 3.22 教师用户回答问题的用例描述 执行者 用例描述 前置条件 后置条件 教师用户 教师用户对一门已选择的课程的问题进行回答 用户已登录 用户回答问题成功 1.用户选择一门已选择的课程的问题,点击回答按钮 用例场景 2.输入要回答的内容 3.如果回答成功,则返回问题列表 4.如果回答失败,则显示发送答案失败 规则 回答的字数不能超过 140 个字

3.2 性能需求
3.2.1 响应时间需求
在服务器端,服务器应当有较快的响应速度,对数据库查询的效率足够高;客 户端运行在手机端,应当考虑手机的性能,使手机端有较快的启动和响应时间;在 网络传输中应尽量保证数据的完成性、正确性和可靠性,采用安全性较高、数据量 较小的传输方式。因此,对系统的响应时间要求如下[28]。 (1)客户端启动时间小于 3 秒 (2)服务器响应时间小于 5 秒 (3)数据库查询时间小于 2 秒

3.2.2 稳定性需求
在系统中, 一方面应该保证数据传输的稳定性和正确性, 另一方面要保证服务 器数据读取的正确性,所以对该系统的稳定性有以下需求。 (1)服务器有效工作时间要求大于 99% (2)数据正确性大于 99% (3)网络数据传输的正确率与完整性大于 99%

3.3 系统开发原则
根据软件工程的规范和系统需求的要求及特点,系统开发时必须遵循以下原 则。 实用性原则:需求满足最基本的功能需求,界面要求简洁、直观和易于使用。 高性能原则:客户端在运行时要保证流程、稳定、速度快和消耗资源小,在低 配置的手机上也要做到能够流畅运行。 数据安全性原则: 数据传输和储存的过程中需要保证数据的安全, 防止用户信 息泄露。 美观化设计原则:在满足实用性条件的前提下,界面设计要做到美观大方,符 合手机用户的操作习惯,并且符合 Android Design 的设计规范。
21

西安电子科技大学硕士学位论文

统一性原则: 系统中编写的代码的类名、 变量名和方法名等有统一的命名格式, 数据库名称有统一的前缀。 系统可扩展性原则: 在满足现有需求的基础之上, 为将来可能扩展的功能预留 接口,使系统有扩展性。

3.4 本章小结
本章主要对该项目进行了需求分析, 列出了项目的功能需求与非功能需求, 分 析了项目中不同角色的用例, 并分别对学生用户、 教师用户和管理员的用例进行了 详细分析与说明,为后续的系统设计做准备。

22

第四章 系统设计

第四章 系统设计
4.1 系统总体设计
该系统由客户端和服务器两个部分组成,系统的体系结构采用 C/S 结构[29], 即 Client/Server(客户端/服务器)结构。C/S 结构通过将任务合理分配到客户端和 服务器端,这样可以减少服务器端的开销。在该系统中,总体分为三个部分:客户 端、应用服务器和数据库服务器。 客户端主要是完成接收用户操作,向服务器发送用户请求和接收处理服务器 返回的数据等功能; 应用服务器用来接收用户发送的请求, 对请求进行处理并向数 据库服务器发送查询请求, 之后将查询的数据进行处理返回给客户端; 数据库服务 器主要完成数据的查询、添加、删除和修改等功能,完成应用服务器发送的查询请 求并返回查询数据。该系统的体系结构图如图 4.1 所示。
客户端

请求

返回数据

应用服务器

查询

读取数据

数据库服务器

图 4.1 系统体系结构图

4.2 数据库设计
4.2.1 数据库结构设计
在该系统中,需要用数据库储存用户信息,需要使用实体 - 关系图( EntityRelation Diagram,E-R 图)进行数据库设计[30],它提供了表示实体型、属性和联系 的方法,用来描述现实世界的概念模型。 实体间之间的联系分为一对一、 一对多和多对多等三种。 一对一是指实体间关 系是一对一,如课程编号和课程,一个课程编号指的就是一个课程,而一个课程只 能有一个课程编号; 一对多的联系是指第一个关系实体中从属于第二个实体, 而第 二个实体包括第一个实体, 例如导师和学生就是一对多关系, 一个学生只属于一个
23

西安电子科技大学硕士学位论文

导师,一个导师可以带多个学生;多对多的联系是指实体间的关系是多对多的,如 教师和课程就是多对多关系, 一个导师可以带多门课程, 一个课程也可以由多个教 师带。该系统数据库的 E-R 图如图 4.2 所示。
拥有

1

教师

教材 n
拥有

学院 1 1

n

拥有 拥有

n

学生

1

拥有

1 n

问题

n

拥有

1 1

1

n 课程 1 包含 n
1

拥有 n n

关注课程

拥有

包含

选课计划

n

开课 1 1 拥有 1

回答

学期

拥有

拥有

n
评论

n 课程得分

n 课程打分

图 4.2 数据库 E-R 图

4.2.2 数据库设计
根据 4.2.1 节中对数据库各个实体和实体间的关系的设计,在服务器的数据库 中创建的各表的名称和功能如下。 (1)学生信息表 在学生信息表中包含学生最基本的信息,包括学生 ID、学院 ID、学生类型、 账户名、密码、学生姓名、专业、账户创建时间、电子邮箱地址、昵称、导师、入 学年份、毕业年份等信息,其中学生 ID 为主键。另外学生 ID 是由系统分配的一 个 ID,学院 ID 表示所在学院,学生类型表示不同阶段的学生,分别为本科生和研 究生,账户 ID 为学生的学好,毕业时间限制账号的有效期。具体字段的名称、数
24

第四章 系统设计

据类型和说明如表 4.1 所示。
字段名称 StudentID DepartmentID type passwd AccountStatus SUNetID name Email majorid nickname createTime QQ GraduationDate InstructorId entranceYear 数据类型 int int int varchar int varchar varchar varchar int varchar timestamp int int int int 表 4.1 学生信息表 字段大小 主键 11 11 11 255 11 255 255 255 11 11 11 11 11 11 11 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 说明 学生 ID 学院 ID 学生类型 密码 账户状态 账户 ID 学生姓名 电子邮箱 专业 ID 昵称 账户创建时间 QQ 毕业时间 导师 ID 入学年份

(2)选课计划表 选课计划表中包含了每个学生选择课程的信息,包括选课计划 ID、学生 ID、 学期 ID、选课学分、课程所在学年、成绩、课程类型、和是否免修等信息,其中 选课计划 ID 为主键。另外课程所在学年表示所选课程开课的学年,课程类型表示 课程种类,分为必修课、任选课和限选课,是否选修表示用户选择了一门课程是否 可以免修。具体字段的名称、数据类型和说明如表 4.2 所示。
表 4.2 选课计划表 字段名称 StudentPlanID StudentID TermId Units AcademicYear Grade Type CourseSectionID Exempt 数据类型 int int int int int int int int int 字段大小 11 11 11 11 11 11 11 11 11 主键 是 否 否 否 否 否 否 否 否 说明 学生选课计划的 ID 学生 ID 学期 ID 学分 学年 成绩 课程类型 一门课程开课的 ID 是否免修

(3)日程表 日程表中包括日程 ID、 提前提醒时间、 周数、 日程类型、 日程描述、 开始时间、 提醒频率、学生 ID 和一周中的天数等信息,其中日程 ID 为主键,由系统自动分 配。 另外提前提醒时间表示该日程需要提前多久提醒用户, 周数表示一学期中的第 几周,日程类型表示日程的种类,开始时间表示提醒开始的时间,频率表示提醒发
25

西安电子科技大学硕士学位论文

送的次数。具体字段的名称、数据类型和说明如表 4.3 所示
表 4.3 日程信息表 字段名称 ScheduleID ForwardTime Week Type TermID Description StartHour Frequency StudentID DayOfWeek 数据类型 int int int int int varchar int int int int 字段大小 11 11 11 11 11 255 11 11 11 11 主键 是 否 否 否 否 否 否 否 否 否 说明 日程 ID 提前提醒时间 周数 日程类型 学期 ID 日程描述 开始时间 频率 学生 ID 一周中的天数

(4)教师学生关系表 教师学生关系表包含教师 ID 和学生 ID,表示学生和教师之间的关系,该表没 有主键。具体字段的名称、数据类型和说明如表 4.4 所示。
表 4.4 教师和学生关系表 字段名称 InstuctorID StudentID 数据类型 int int 字段大小 11 11 主键 否 否 说明 教师 ID 学生 ID

(5)学院信息表 学院信息表包括学院 ID、学院名称和标签等信息,其中学院 ID 为主键。具体 字段的名称、数据类型和说明如表 4.5 所示
表 4.5 学院信息表 字段名称 DepartmentID Name 数据类型 int varchar 字段大小 11 25 主键 是 否 说明 学院 ID 学院名称

(6)关注课程表 关注课程表中包含了关注 ID、学生 ID 和开课 ID 等信息,其中,关注 ID 为主 键,是系统自动分配的 ID。具体字段的名称、数据类型和说明如表 4.6 所示。
表 4.6 学生关注课程表 字段名称 StudentInterestID StudentID CourseSectionID 数据类型 int int int 字段大小 11 11 11 主键 是 否 否 说明 学生关注课程列表 ID 学生 ID 一门课程开课的 ID

(7)教师信息表 教师信息表包括用户头像、 教师研究方向、 教师 ID、 战壕、 姓名、 电话、 地址、 电子邮箱、登录密码、QQ 号、性别、昵称、学院、职称、账号建立时间和账号状 态等信息,其中教师 ID 为主键,由系统自动分配。具体字段的名称、数据类型和
26

第四章 系统设计

说明如表 4.7 所示。
表 4.7 教师信息表 字段名称 Photo field InstructorID SunetID Name Telephone Address Email Passwd QQ Sex NickName DepartmentID Title1 Title2 CtreateTime AccountStatus 数据类型 varchar text int varchar varchar varchar varchar varchar varchar varchar int varchar int varchar varchar timestamp int 字段大小 1024 255 11 255 1024 255 1024 255 255 20 1 128 11 128 128 Date 4 主键 否 否 是 否 否 否 否 是 否 否 否 否 否 否 否 否 否 说明 头像路径 研究方向 教师 ID 账号 姓名 电话 地址 电子邮箱 登录密码 QQ 号码 性别 昵称 学院 ID 职称 1 职称 2 账号建立时间 账户状态

(8)开课信息表 开课信息表表示已有课程的开课信息,包括教师 ID、上课周数、开课 ID、课 程 ID、学期 ID、上课地点、上课时间、平均成绩和平均打分,其中开课 ID 为主 键,由系统自动分配。具体字段的名称、数据类型和说明如表 4.8 所示。
表 4.8 开课信息表 字段名称 InstructorID week CourseSectionsID CourseID TermID Location SectionID ClassID ClassWeekTime AvgGrade AvgRate 数据类型 int varchar int int int int int int varchar int double 字段大小 11 255 11 11 11 1024 11 11 32 11 主键 否 否 是 否 否 否 否 否 否 否 说明 教师 ID 上课周数 一门课程开课的 ID 课程 ID 学期 ID 上课地点 开课 ID 班级 ID 上课时间 平均成绩 平均打分

(9)课程信息表 课程信息表记录了每门课程的详细信息,包括课程类型、是否可以选修、课程 编号、课程 ID、学院编号、课程名称、课程描述、学分、课程主页地址、平均打 分和平均成绩等信息,其中课程 ID 为主键,由系统自动分配。另外课程类型表示
27

西安电子科技大学硕士学位论文

课程的种类,包括必修课、任选课和限选课,是否选修表示该课程是否可以选修, 平均打分表示用户对这门课的打分, 平均成绩表示该课的考试平均成绩。 具体字段 的名称、数据类型和说明如表 4.9 所示。
表 4.9 课程信息表 字段名称 Type IsExemption ClassNum CourseID DepartmentID DepartmentNumber Title Description Units WebsiteUrl AvgRating AvgGrade 数据类型 int int int int int int varchar text float varchar double int 字段大小 3 1 3 11 11 11 255 1024 2 主键 否 否 否 是 否 否 否 否 否 否 否 否 说明 课程类型 是否选修 课程编号 课程 ID 学院 ID 学院编号 课程名称 课程描述 课程学分 课程相关网址 平均打分 平均成绩

(10)课程得分表 课程得分记录一门课的得分状况,主要包括打分人数、课程 ID、教师 ID、成 绩和学期 ID, 其中不包含主键。 具体字段的名称、 数据类型和说明如表 4.10 所示。
表 4.10 课程得分表 字段名称 GradeCount CourseID InstructorID Grade TermID 数据类型 int int int int int 字段大小 11 11 11 3 11 主键 否 否 否 否 否 说明 打分次数 课程 ID 教师 ID 成绩 学期 ID

(11)消息表 在该表中记录了系统消息及站内信的信息,包括消息 ID、学生 ID、消息内容 和发送时间等,其中消息 ID 为主键,油系统自动生成。具体字段的名称、数据类 型和说明如表 4.11 所示。
表 4.11 消息表 字段名称 MessageID StudentID Message Sent 数据类型 int int varchar timestamp 字段大小 11 11 1024 主键 是 否 否 否 说明 消息 ID 学生 ID 消息内容 发送时间

(12)课程打分表 课程打分表记录了每一门课学生打分的情况,其中包括打分 ID、学生 ID、详 细打分、开课 ID、课程评分和评论 ID,其中打分 ID 为主键,由系统自动分配。
28

第四章 系统设计

具体字段的名称、数据类型和说明如表 4.12 所示。
表 4.12 课程打分表 字段名称 RateID StudentID RateContent CourseSectionID SectionRate CommentID 数据类型 int int varchar int double int 字段大小 11 11 512 11 11 主键 是 否 否 否 否 否 说明 打分 ID 学生 ID 详细打分 开课 ID 课程评分 评论 ID

(13)评论表 评论表记录每一门课程的评论内容,其中包括学期 ID、评论 ID、评论内容、 评论时间、评论学生 ID、评论教师 ID、课程 ID、评分和课程得分。具体字段的名 称、数据类型和说明如表 4.13 所示。
表 4.13 课程评论表 字段名称 TermID CommentID Text Date StudentID InstuctorID CourseID Rating Grade 数据类型 int int longtext timestamp int int int int int 字段大小 11 11 11 11 11 11 11 主键 否 是 否 否 否 否 否 否 否 说明 学期 ID 评论 ID 评论内容 评论时间 学生 ID 教师 ID 课程 ID 评分 课程得分

(14)问题表 该表中记录了学生提问的信息,包括问题 ID、提问学生的 ID、教师 ID、用户 昵称、提问内容和提问时间等,其中问题 ID 为主键,由系统自动分配。具体字段 的名称、数据类型和说明如表 4.14 所示。
表 4.14 问题表 字段名称 QuestionID StudentID InstructorID UserAlias Text Date 数据类型 int int int varchar text date 字段大小 11 11 11 255 主键 是 否 否 否 否 否 说明 问题 ID 提问学生 ID 教师 ID 用户昵称 提问内容 提问时间

(15)回答问题表 该表中记录了回答问题的信息, 包括了问题 ID、 回答 ID、 回答内容、 学生 ID、 教师 ID、用户昵称和回答时间等,其中回答 ID 为主键。具体字段的名称、数据类 型和说明如表 4.15 所示。
29

西安电子科技大学硕士学位论文 表 4.15 回答问题表 字段名称 AnswerID QuestionID Text StudentID InstructorID UserAlias Date 数据类型 int int text int int varchar timestamp 字段大小 11 11 11 11 255 主键 是 否 否 否 否 否 否 说明 问题 ID 回答 ID 回答内容 学生 ID 教师 ID 用户昵称 回答时间

(16)学期信息表 该表中记录每个学期的具体信息,包括学期 ID、学年、学期开始时间、学期结 束时间和学期名称等,其中学期 ID 为主键,由系统自动分配。具体字段的名称、 数据类型和说明如表 4.16 所示。
表 4.16 学期信息表 字段名称 TermId AcademicYear StartDate EndDate Name 数据类型 int int date date varchar 字段大小 11 11 255 主键 是 否 否 否 否 说明 学期 ID 学年 开始日期 结束日期 学期名称

(17)教材表 该表中记录了每门课程所使用教材的信息,其中包括教师 ID、学生 ID、课程 ID、教科书 ID、教科书类型、添加时间和教材名称,其中教科书 ID 为主键,由系 统自动分配。具体字段的名称、数据类型和说明如表 4.17 所示。
表 4.17 教材信息表 字段名称 InstructorID StudentID CourseID BookID BookType Created BookName 数据类型 int int int int varchar int varchar 字段大小 11 11 11 11 255 11 11 主键 否 否 否 否 否 否 否 说明 教师 ID 学生 ID 课程 ID 教科书 ID 教科书类型 建立时间 教材名称

4.3 服务器设计
服务器实现主要以应用服务器为主, 服务器端主要完成响应客户端的请求, 根 据客户端不同的请求类型, 将数据库划分为各个不同的模块, 以实现特定的功能。 服务器主要模块结构图如图 4.3 所示。

30

第四章 系统设计

服务器

注 册

登 录

查 看 主 页

查 看 课 程 排 行

查 看 课 程 信 息

查 看 已 选 课 程

查 看 关 注 课 程

提 问

站 内 信

按 评 分 排 行

按 评 论 数 排 行

按 平 均 分 排 行

添 加 课 程

关 注 课 程

添 加 评 论

删 除 已 选 课 程

删 除 关 注 课 程

添 加 回 复

查 看 站 内 信

删 除 站 内 信

图 4.3 服务器主要模块结构图

服务器中的每一个模块都与需求相对应, 该系统是以课程和评论为核心的, 因 此大部分功能与课程的操作和课程评论有关,下面对每个模块进行详细介绍。 (1)注册模块 该模块主要完成新用户注册, 当客户端发送注册请求后接收用户注册信息, 检 验注册信息是否有误或者账号是否已经注册,最后完成相应的请求并返回执行结 果。 (2)登录验证模块 该模块主要完成用户登录的验证, 检验用户名和密码是否正确, 并返回相应的 执行结果。 (3)查看主页模块 该模块主要完成手机端主页界面信息的处理,当客户端发送访问主页请求的 时候,该模块需要从数据库中读取并验证相应的数据,并将数据以 XML 文件格式 发送给客户端。 (4)查看课程排行模块 该模块主要完成课程排行中课程数据的处理与发送,当客户端发送查看课程 排行的请求时, 该模块需要根据客户端发送的课程排行的类型参数, 从数据库中读 出该课程的信息,并将数据以 XML 文件格式发送给客户端。 (5)查看课程信息模块 该模块主要完成课程信息的处理与发送,当客户端发送查看课程信息的请求
31

西安电子科技大学硕士学位论文

时,该模块需要从数据库中读出该课程的信息,并将数据以 XML 文件格式发送给 客户端。 (6)查看已选课程模块 该模块主要完成已选课程列表的处理与发送,当客户端发送查看用户的已选 课程的请求时, 该模块首先需要验证用户信息是否合法, 之后会从数据库中读出该 用户已选课程的信息,并将数据以 XML 文件格式发送给客户端。 (7)查看关注课程模块 该模块主要完成已关注程列表的处理与发送,当客户端发送查看用户的已关 注课程的请求时, 该模块首先需要验证用户信息是否合法, 之后会从数据库中读出 该用户已关注课程的信息,并将数据以 XML 文件格式发送给客户端。 (8)问答模块 该模块主要完成用户对课程的问答信息的处理与发送,当客户端发送提问或 者回答问题的请求时, 该模块会验证发送信息是否合法有效, 内容是否符合要求, 并验证发送请求的用户信息,验证完成后会进行相关处理,并返回执行结果。 (9)消息模块 该模块主要完成系统内部用户之间的信息发送, 当用户发送消息时, 该模块需 要处理消息并把消息转发给接收消息的用户。

4.4 客户端设计
为了使该程序有良好的动态性, 简化后续对程序的修改和扩展, 并且使程序某 一部分的重复利用成为可能,通过对复杂度的简化,使程序结构更加直观,因此在 该项目中采用 MVC 设计模式[31]。
状态查询 模型 (Model) 状态改变

通知改变

视图选择 视图 (View) 用户请求 控制器 (Controller)

图 4.4 MVC 结构图

MVC 全名是 Model View Controller,是模型(Model) 、视图(View)和控制 器(Controller)的缩写,是一种软件的设计模式。MVC 是将系统的业务逻辑、数 据和界面显示分离的设计模式, 将业务逻辑聚集到一个部件里面, 在为用户界面修
32

第四章 系统设计

改或添加新的模块时,不需要重新编写业务逻辑。MVC 用于映射传统的输入、处 理和输出功能在一个逻辑的图形化用户界面的结构中,它的结构图如图 4.4 所示。 在 MVC 的设计模式当中, 模型用于封装与应用程序的业务逻辑相关的数据以 及对数据的处理方法,视图能够实现数据有目的的显示。在 Android 应用的设计之 中同样可以采用 MVC 的设计模式,结构与以上描述的 MVC 基本相同,但具体实 现有所区别。在 Android 中视图一般采用 XML 文件进行界面的描述,或者使用 JavaScript 和 HTML 的方式作为 View 层,而控制器则由 Activity 来实现。对数据 库的操作和对网络访问等都应该在模型中进行处理。以此为设计该客户端的要求, 以 MVC 为设计模式进行客户端的架构,设计该客户端的类图如图 4.5 所示。
CommentList SectionActivity AnswerActivity HomeComment InterestFragment InterestList CourseList Comment

QuestionActivity

CourseFragment

Course HomeQueston

HomeCourse Question

HomeFragment AppContext MainActivity QuestionList RegistActivity CommunityFragment AnswerList

Answer

HomeAnswer SearchActivity RankFragment SectionRank Section

MessageFragment

UserProfileFragment

User

UserInfo

图 4.5 客户端类图

根据 MVC 的结构,将客户端的设计分为这三个模块。Activity 是控制视图和 数据的组建,因此 Activity 是 Controller;Fragmant 包含界面中的各个组件,因此 Fragment 是 View; 而每一个具体的对象拥有读取数据的功能, 因此它们作为 Model。 以此三个部分即构成了 MVC 中的三个部分。

4.5 本章小结
本章对系统各个功能模块进行了详细讨论,提出了系统的架构,根据需求分析 针对各个模块进行了数据库进行了设计,并对项目的服务器和客户端提出了详细 的设计,在下一章详细介绍项目的实现。
33

西安电子科技大学硕士学位论文

34

第五章 系统实现

第五章 系统实现
5.1 服务器实现
在服务器中主要完成数据的接收, 处理数据和返回数据等功能, 主要用到了以 下技术。 (1)Servlet Servlet 是可以运行在服务器上运行的完整程序[32],它通常用于执行客户端发 送的请求,完成服务器的相应。Servlet 通过对服务器和数据库的访问为用户进行 数据处理,实现请求答复,这些通常是使用公共网关接口(CGI,Common Gateway Interface) 应用程序完成的。 Servlet 是由 Java 实现的, 运行在 Java 应用服务器上, 可以快速的执行并处理客户端发送的请求。 同时它是一个轻量级的程序, 每个请求 都运行在一个线程之中, 当有新的请求时无需创建单独的进程, 可以降低服务器处 理请求的开销。 (2)JDBC JDBC(Java Data Base Connectivity)是用于执行 SQL 语句的 Java API[33],它 是由 Java 编写而成的,为访问关系数据库提供统一的访问接口。项目在使用关系 数据库时, 直接采用 JDBC 就可以完成应用对数据库的访问与操作, 简化了数据库 操作的流程和步骤,提高了开发效率。

5.2 客户端实现
5.2.1 客户端中用到的技术和方法
该系统的客户端基于 Android 平台, 因此需要使用 Android 平台的特性以及接 口,下面对该系统中使用到 Android 中的技术进行介绍。 (1)不同 Activity 之间的跳转实现 两个不同 Activity 之间的跳转由 Intent 完成,Activity1 向 Activity2 跳转时的 代码如下。 Intent intent = new Intent(); intent.setClass(Activity1.this, Activity2.class); startActivity(intent); 在跳转的时候还可以参数, 通过调用 putExtra()方法来实现。 除此之外, 在 Activity2 结 束 的 时 候 也 能 向 Activity1 返 回 结 果 , 需 要 在 Activity2 中 添 加 setResult(RESULT_CODE),并在 Activity1 中添加 onActivityResult()方法即可以实 现。
35

西安电子科技大学硕士学位论文

(2)事件监听 在 Android 应用触发事件时,必须对其进行监听,才能进行正确的事件处理, 下面就是客户端中使用到的几个监听方法。 ? ? ? ? ? OnClickListener():它可以对按钮和图片按钮进行监听,当按钮被点击时执 行相应的操作,需要对每一个按钮进行监听。 OnItemClickListener():它可以对列表控件进行监听,当某个元素被点击时 可以执行相应的操作,需要对列表控件进行监听。 OnItemLongClickListener():它对可以列表控件进行监听,当用户长时间按 下某个元素时可以执行相应的操作,需要对列表控件进行监听。 setSingleChoiceItems(): 它可以对单选单项选择控件进行监听, 判断用户选 择的时哪一项,需要对单项选择组进行监听。 setOnCheckedChangeListener():它可以对多选控件进行监听,用来确定用 户是否选择了某一项,需要对每一个选项进行监听。 (3)HTTP POST 请求实现 在 GET 方法请求时,所有的参数会全部被转换为 URL 的格式,当传递中文参 数时会造成很多问题, 所以当有中文参数需要传递时使用 POST 方法。 这里直接使 用 Apache 提供的 HttpClient,它是对 java.net 中的类进行了封装和抽象,更适合在 Android 上开发互联网应用。 在本项目中主要会使用以下几个接口进行 HTTP 请求。 ? ? ? 下 HttpCLient httpClient = new DefaultHttpClient(); 接下来构建一个 POST 请求 HttpPost httpRequest = new HttpPost(httpUrl); 其中的 httpUrl 是预先设定的地址。然后使用 NameValuePair 来保存要传递的参 数,这里使用 BasicNameValuePair,用 add()方法将参数添加到 NamePair 中,代 码如下 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair(param, post_param)); 其中的 param 是传递的参数,post_parm 是传递的内容。最后使用 HttpResponse 获得连接响应,代码如下
36

DefaultHttpClient:它是默认的 HTTP 客户端 HttpResponse:它是一个 HTTP 连接响应,当执行一个 HTTP 连接后,可以 通过 HttpResponse 获得一些响应信息。 HttpPost:设置请求为 POST 方法。

下面是建立一个 HTTP POST 请求的方法。首先创建一个 HTTP 连接,代码如

第五章 系统实现

HttpResponse httpResponse = httpClient.execute(httpRequest); If(httpResponse.getStatusLine().getStatusCode == HttpStatus.SC_OK) { //连接成功 } 这样一个完整的 HTTP POST 的连接就建立完成了。 (4)SimpleAdapter 实现自定义布局的实现 SimpleAdapter 是 Android 中定义一个简单的适配器,可以将数据和定义好的 XML 布局文件关联起来,它具有很强的定制性。它可以将 ListView 中的最小结构 定义成任意布局,它的构造函数如下
SimpleAdapter(Context c, List<?extends Map<String, ?>>data,int resource,String[] from,int[] to)

这个构造函数中有五个参数, c 表示这个适配器所在的 Activity, data 表示要显 示在这个适配器中的数据, resource 表示定义这个适配器的 xml 布局文件, from 和 to 分别为在适配器中各部分的名字和布局文件中与之对应的控件 ID。 (5)Fragment 和 Activity Android 中的 Fragment 可以作为 Activity 中的模块,这个模块可以有独立的布 局,有独立的生命周期,单独处理输入输出,在 Activity 运行的时候可以动态的加 载或者移除 Fragment, 可以把 Fragment 设计成可以在多个 Activity 中复用的模块, Fragment 的生命周期由 Activity 控制。 Fragment 和 Activity 的关系图如图 5.1 所示。

Activity

Fragment

Fragment

Fragment

图 5.1 Activity 与 Fragment 关系图

(6)XML 解析 在 Android 中,常见的 XML 解析器有 SAX 解析器、DOM 解析器和 PULL 解 析器,在该系统中主要使用 PULL 解析器实现。 。 PULL 解析器基于事件的模式,在 PULL 解析过程中,用户需要自己获取产生 的事件然后做相应的操作来执行的代码。XML 的 PULL 解析器速度快、使用简单
37

西安电子科技大学硕士学位论文

并且对 XML 文件解析速度快,非常适合在 Android 等移动设备中使用。 (7)Android 中的异步 在网络访问中主要分为同步模式和异步模式。 同步执行模式是各种操作按顺序 执行,而异步执行模式是指各个操作在执行时的顺序并不一定按顺序。在 Android 应用中,在进行网络访问、数据处理时会消耗较长时间,如果将这些操作放在主线 程中会导致应用长时间无响应,造成程序 ANR(Applacation No Response)导致程 序崩溃,因此在耗时操作时应该使用异步操作来实现。 在 Android 中,异步的实现方式主要分为两种,一种是使用 Handler 处理多线 程,另一种是直接使用 Android 中的 AsyncTask。Handler 是一种一种异步回调机 制,可以在完成一个很长时间的任务后做出相应的通知。Handler 在主线程中,通 过调用 handleMessage 方法来接收消息并进行处理。而 AsyncTask 是由 Android 提 供的处理异步消息的方法它将任务在主线程之外运行,而回调方法是在主线程中 执行,简化了异步调用的过程。Handler 可以自定义线程处理的过程,功能更加完 善,而 AsyncTask 更加轻量级,适用于简单的异步处理。 (8)本地数据存储 在 Android 中,本地储存的方法有 SharedPreferences、数据库、ContentProvider 和文件等,在该项目中主要使用 SharedPreferences 进行数据储存。 SharedPreference 是一个轻量级的数据存储方式, 它主要用来保存一些应用的设 置、 登录信息和配置等。 它是一种以 XML 文件格式来存储 key-value 键值对数据, 其存储位置在/data/data/<包名>/shared_prefs 目录下。S 在该系统中没有涉及到大规模的数据存储和查找,因此采用更简洁和效率更高 的 SharedPreferences。 (9)缓存技术 在 Android 应用中使用缓存可以减少客户端请求数据的次数和数据量,这样可 以减轻服务器的压力,而且可以从本地数据直接读取,加快程序的运行速度。在 Android 的应用中,并不是需要实时更新的,而且由于网络速度和流量的限制,与 服务器的数据交互是能少则少,这样用户体验才更好,采用缓存,可以进一步大大 缓解数据交互的压力。使用缓存的有以下几个优点。 ? ? 减小服务器的压力。因为缓存可以将一部分数据储存在客户端,减少了客 户端与服务器的请求次数,减小了服务器对数据的处理的压力。 提升客户端的响应。 利用缓存技术, 客户端可以将常用数据缓存在客户端, 在下一次调用的时候不必要再从服务器进行读取,避免了多次请求所带来 的时间消耗,提升客户端响应。 ? 提升客户端的稳定性。客户端在发起请求后服务器会返回数据,但由于网
38

第五章 系统实现

络情况的复杂性不一定每次都能返回正确的数据,如果客户端可以将常用 数据验证正确之后进行缓存,下次再调用的时候就一定可以保证数据的正 确性,提升应用的稳定性。 ? 为离线浏览提供了技术支持。在 Android 应用中,不能保证用户是实时联 网的,为了能让用户在没有网络的情况下使用应用,应用可以将部分数 据进行缓存,以便用户查看。 (10)ViewPager ViewPager 是 Android 中的一个组件, 实现多个页面左右滚动的效果。 ViewPager 是一个容器,容器内可以放多个子 View 以实现页面左右滑动的效果。要使用该组 件,必须引入 Google 提供的 android-support-v13.jar。在该项目中,每一个页面都 是由一个 Fragment 构成,原理图如图 5.2 所示。
ViewPage

Page

Page

Page

图 5.2 ViewPager 示意图

(11)下拉刷新 在该项目使用 Android 提供的下拉刷新 pullToRefresh,该控件实现了通过下拉 实现对整个界面的刷新,在该项目中主要实现对列表的刷新。要使用该组件,必须 引入 Google 提供的 android-support-v13.jar。 (12)Android 中与 JavaScript 的交互 在 Android 中, 可以使用 HTML 和 Javascript 进行界面的编写, 在通过 WebView 进行显示,为了使 Web 界面可以与原生界面进行交互,就需要 Android 中 Java 与 Javascript 进行交互。 Android 中提供了一系列的 API 来完成二者之间的交互, 具体 步骤如下。 ? ? 用 WebView 来显示 HTML 代码,需要通过调用 WebVIew 来显示 HTML 内容。 允许 WebView 执行,setJavaScriptEnabled(true)。
39

西安电子科技大学硕士学位论文

? ?

获取到 HTML 文件, 通过调用 webView.loadUrl()方法来调用所要显示的网 页 添加一个对象, 让 Javascript 可以访问该对象的方法, 该对象中也可以调用 Javascript 中的方法 webView.addJavascriptInterface(new Test(), "test")。

这样就可以在 Android 中调用 Javascript, 提高原生应用的灵活性, 使用 Javascript 中的库来实现 Android 应用中某些实现起来比较复杂的界面,提升开发效率,也提 高易用性。

5.2.2 客户端具体实现
(1)登录界面的实现 当用户第一次使用该软件是需要进行注册,进入注册界面后,用户需要输入注 册信息, 之后客户端会生成一个预览信息, 用户确定信息正确之后点击注册即可进 行注册。 接下来客户端会向服务器端发送注册请求, 服务器会对注册信息进行确认, 如果当前用户使用的邮箱、 学号和 QQ 号等信息没有被注册过, 服务器会返回注册 成功的消息,完成用户注册;如果用户的信息有误或者部分信息已被注册过,服务 器会返回一个错误消息, 用户需要重新输入注册信息。 注册的流程图如图 5.3 所示。
开始

输入进本信息

输入学籍信息

信息预览

输入是否合法 是 注册



开始

图 5.3 注册流程图

在该界面中, 用户每一组注册信息是包含在一个 Fragment 当中的, 有 ViewPager 实现翻页效果。用户需要输入用户名、两次相同的密码和邮箱,需要四个编辑框和 一个按钮。 用户输入的用户名和密码可以是任意字符的搭配, 而输入邮箱时则必须 符 合 电 子 邮 箱 的 格 式 , 这 里 就 必 须 将 编 辑 框 的 inputType 属 性 设 为 textWebEmailAddress,这样客户端就能自动检测用户输入的电子邮箱格式是否合
40

第五章 系统实现

法。 输入完成后, 点击确定按钮, 客户端会向服务器发送注册请求, 如果发送成功, 服务器会返回代表注册成功编码,客户端会跳转回登录界面。 (2)登录界面的实现 如果用户已经有用户名和密码,用户可以直接登录。进入登录界面,用户首先 需要输入邮箱和密码, 点击登录按钮之后客户端向服务器进行验证请求。 如果信息 验证成功,客户端将会跳转到主界面;如果验证失败,则需要重新登录。流程图如 图 5.4 所示。 在主界面设计中采用相对布局,其中有两个输入框分别用来输入邮箱和密码, 一个按钮设置为登录按钮,在 ActionBar 中有一个注册按钮用来跳转到注册页面, 帮助用户。
开始

输入用户名和密码

验证登录

否 验证是否正确 是 跳转到主界面

结束

图 5.4 登录流程图

用户输入完邮箱和密码后点击登录按钮, 客户端会向服务器发送一个 POST 请 求,如果用户的邮箱和密码正确,客户端就用 Intent()方法跳转到主界面。登录成 功后, 客户端会将用户名和密码储存在一个 xml 文件中。 这里使用了 Android 中的 Shared Preference, 它用一个键值对的形式来储存数据, 是一个轻量级的储存机制, 只能储存基本数据类型。通过 getPreference()方法来获得 Preference 对象,通过 SharedPreferences.Editor editor = sp.edit()取得编辑对象, 然后用 editor.put()方法添加 数据,最后使用 commit()方法保存这些数据。每个在程序被安装时 Android 系统目 录的/data/data 中会产生一个文件夹,如果应用使用了 Preference,在该文件夹下会 生成一个 shared_prefs,这个 xml 就保存在其中。注册按钮是放在 ActionBar 中最 右边的,是菜单的一部分,用过 OnItemClickListener()方法监听,点击之后就能跳 转到注册页面。 (3)主界面的实现 主界面采用标准的 Android 中的 Holo 规范,由左侧的抽屉菜单、标题栏和主
41

西安电子科技大学硕士学位论文

页面构成。左侧的抽屉菜单包含了各个自选项,有个人主页、首页、我的课程、课 程排行、关注的课程、社区和消息等组成,当用户选择一项时即可以跳转到相应的 界面。 在跳转到不同的界面时,会动态生成相应的 Fragment,跳转到其它界面时改 Fragment 会自动销毁,防止内存占用过多。主界面 Activity 和 Fragment 的结构关 系图如图 5.5 所示。 在主界面中默认显示的是推荐课程列表、 最新评论的课程列表和最新提问的课 程列表,每个列表都是可以下拉刷新的。这三个部分放在一个 ViewPager 中,实现 左右滑动的功能。列表的每一个小项都设有 OnItemClickListener()监听,当点击每 门课程时,就会跳转的相应课程的详细信息界面。
HomeFragment

CourseFragment

InterestFragment

MainActivity

MessageFragment

RankFragment

UserProfileFragment

CommunityFragment

图 5.5 MainActivity 与各个 Fragment 的关系图

(4)课程排名界面的实现 在课程排名页面中,客户端会根据用户查询分类的不同发起不同的查询请求。
开始

发送请求 是 否

请求成功

返回课程排行

返回错误信息

结束

图 5.6 查看课程排名的流程图

(5)课程详细信息的实现
42

第五章 系统实现

在课程详细信息界面中, 客户端会根据选择的课程编号向服务器发送一个查看 课程信息请求。如果发送成功,服务器会返回相应的课程信息,客户端会对数据进 行解析并以列表的形式显示; 如果发送失败或者没有课程信息, 客户端会显示提示 信息。查看课程信息流程图 5.7 所示。
开始

发送请求 是 否

请求成功

返回课程信息

返回错误信息

结束

图 5.7 查看课程信息流程图

在该页面中,用户可以查看该课程的成绩分布状况,显示每一门课程在某个区 段内的人数。这里使用原生 Android 进行开发比较复杂,考虑到简易性和灵活性, 这里采用 HTML 和 Javascript 进行开发。 (6)关注课程界面的实现 在关注的课程页面中,客户端会向服务器发起查询请求。如果发送成功,服务 器会返回相应的关注课程, 客户端会对数据进行解析并以列表的形式显示; 如果发 送失败或者没有关注的课程, 服务器会返回相应的提示信息, 用户可以下拉列表进
开始

发送请求 是

请求成功

返回关注课程

返回错误信息

结束

图 5.8 查看关注课程流程图

行刷新,即重新发送请求。当用户点击列表中的课程时,会跳转的相应的课程界面
43

西安电子科技大学硕士学位论文

并显示详细的 课程信息。查看课程排名的流程图如图 5.8 所示。 当用户进入该界面时,客户端会向服务器发送一个异步请求,服务器会返回相 应的 XML 数据,客户端经过解析显示在关注课程列表中。这个列表通过一个 OnItemClickListener()方法监听, 当用户点击某个课程时, 会触发事件, 程序会通过 Intent() 方 法 跳 转 到 课 程 详 细 信 息 的 界 面 。 同 时 这 个 列 表 也 由 一 个 OnItemLongClickListener()方法监听, 当用户长时间按下关注列表中的一门课程时, 会触发 Android 中长时按下的事件, 会弹出一个转发对话框,用户可以选择是否取 消关注该课程。 (7)我的课程界面的实现 在我的课程页面中,客户端会向服务器发起查询请求。如果发送成功,服务器 会返回相应的已选课程, 客户端会对数据进行解析并以列表的形式显示; 如果发送 失败或者没有已选的课程, 服务器会返回相应的提示信息, 用户可以下拉列表进行 刷新,即重新发送请求。当用户点击列表中的课程时,会跳转的相应的课程界面并 显示详细的课程信息。查看课程排名的流程图如图 5.9 所示。 当用户进入该界面时, 客户端会向服务器发送一个异步请求, 服务器会返回相 应的 XML 数据,客户端经过解析显示在关注课程列表中。这个列表通过一个 OnItemClickListener()方法监听, 当用户点击某条状态时, 会触发事件, 程序会通过 Intent() 方 法 跳 转 到 课 程 详 细 信 息 的 界 面 。 同 时 这 个 列 表 也 由 一 个 OnItemLongClickListener()方法监听,当用户长时间按下某一门已选择的课程时, 会触发 Android 中长时按下的事件, 会弹出一个转发对话框,用户可以选择是否从 已选课程中删除该课程。
开始

发送请求 是 否

请求成功

返回我的课程

返回错误信息

结束

图 5.9 查看关注课程流程图

44

第五章 系统实现

(8)社区界面的实现 在社区页面中,分为我的提问、最新提问和最新回答,进入不同界面后客户端 会向服务器发送相应的请求,如果请求成功服务器会返回相应的 XML 数据,客户 端经过解析显示在列表中。如果请求失败,则会返回错误信息。查看社区界面的流 程图如图 5.10 所示。
开始

发送请求

获取信息 是 否

有信息

显示问题或回答

不显示

结束

图 5.10 查看课程排名的流程图

点击我的提问列表中的问题,客户端会跳转到回答列表,显示其他用户对该问 题的回答。点击最新提问和最新回答,会跳转的对应问题的回答列表,用户可以添 加新的答案。在这三个列表中,都是通过一个 OnItemClickListener()方法监听,当 用户点击了列表中的某一项时,会跳转到相应的界面。 (9)消息提醒页面的实现 在消息提醒页面中,客户端会向服务器发起查询请求。如果发送成功,服务器 会返回相应的消息, 客户端会对数据进行解析并以列表的形式显示; 如果发送失败
开始

发送请求

获取信息 是 否

已读

不显示

显示

结束

图 5.11 查看消息的流程图
45

西安电子科技大学硕士学位论文

或者没有新的消息, 服务器会返回相应的提示信息, 用户可以下拉列表进行刷新, 即重新发送请求。查看消息的流程图如图 5.11 所示。 当用户进入该界面时,客户端会向服务器发送一个异步请求,服务器会返回相 应 的 XML 数 据 , 客 户 端 经 过 解 析 显 示 在 消 息 列 表 中 。 这 个 列 表 通 过 一 个 OnItemClickListener()方法监听, 当用户点击某条状态时, 会将该消息设为已读, 在 下次读取时就不会显示该消息。 (10)搜索及搜索结果界面的实现 如果用户需要查找课程,可以点击 ActionBar 中的搜索按钮,用户首先输入要 查找课程的编号, 然后向服务器提交查询请求, 之后客户端会跳转到查找结果的页 面。如果查询成功就返回查找到的课程;如果查找失败会返回错误代码,客户端将 错误代码转变为错误信息。搜索课程的流程图如图 5.12 所示。
开始

输入查询内容

发送请求


查询成功 是 显示课程列表

结束

图 5.12 搜索课程的流程图

用户在查找框中输入要查找的课程编号后, 用 getText()方法获取用户输入的内 容,然后点击查找按钮,客户端就会通过异步的方式向服务器提交请求,如果发送 成功服务器会以 XML 格式的数据返回结果,解析数据,把要用的数据存放到一个 list 中,然后通过 listView.setAdapter()方法显示在这个列表中。这个列表又由一个 OnItemClickListener()方法监听,用户点击某个用户后会跳转到相应的课程页面。

5.3 本章小结
本章介绍了如何实现系统功能,主要针对客户端进行了介绍,首先介绍了开发 过程中需要使用的技术和方法, 再此基础之上, 对客户端各个模块的开发进行了详 细的介绍,完成了系统的实现。在下一章中,将介绍系统测试。

46

第六章 系统测试

第六章 系统测试
6.1 测试环境
为了验证软件是否满足用户的需求和检验系统是否存在问题, 所以需要对该系 统进行测试[34]。通过系统测试可以确保系统的实施满足需求设计阶段提出的要求 和目标,还可以检测系统功能是否正确完整的实现。 该系统采用 C/S 架构, 可以将最后交付的服务器端代码和数据库代码发布到服 务器上, 将客户端安装到 Android 手机上进行一系列测试, 该系统的测试环境如下。

6.1.1 硬件环境
(1)客户端 CPU:Snapdragon MSM8260 运行内存:1GB 储存空间:32GB 网络:WIFI (2)服务器 CPU:Intel E6600 3.06GHz 内存:4GB 硬盘:500GB

6.1.2 软件环境
(1)客户端 系统:Android 4.1.2 (2)服务器 系统:Ubuntu 12.04 服务器:Apache Tomcat 7 数据库:MySQL 5.5.23

6.2 系统界面测试
6.2.1 系统界面测试
界面是用户与系统功能直接交互的部分, 界面的正常显示、 完整以及是否友好 决定了用户的使用感受。 友好的操作界面可以引导用户进行想要的操作, 完成既定 的功能。通过对系统界面进行测试来验证用户与系统是否可以进行良好的交互与 操作,界面测试的目是为了检验该系统在用户界面上的完整性, 用于确定系统界 面可以向用户提供良好的使用体验。
47

西安电子科技大学硕士学位论文

(1)注册界面测试 注册界面为用户提供了注册的入口, 用户需要填写详细的个人信息, 包括学号、 姓名、昵称、QQ、密码、学生类型、学院、专业、班级、入学时间和毕业时间等。 注册界面如图 6.1 所示。

图 6.1 系统注册界面

(2)登录界面测试 登录界面实现用户登录的功能,包括学号和密码的输入框,上方显示用户的头 像右上角显示注册按钮,可以跳转到界面。登录界面如图 6.2 所示。

图 6.2 系统登录界面
48

第六章 系统测试

(3)主界面测试 主界面是应用的总入口,显示课程推荐等内容,左侧的抽屉菜单可以进入其他 界面,主页上默认显示评分最高的课程。主界面如图 6.3 所示。

图 6.3 主界面图

(4)课程排行界面测试 课程排行页面显示课程的排名,分为按评分、按评论数和按平均成绩等排名, 每门课程显示在列表中,显示课程的部分信息,通过向下滑动刷新列表,左右滑动 切换页面。课程排行界面如图 6.4 所示。

图 6.4 课程排行界面

(5)课程信息界面测试
49

西安电子科技大学硕士学位论文

课程详细信息界面显示一门课程的详细信息和评论, 在该界面还可以添加和关 注课程, 点击成绩详细分布还可以显示该课程的成绩分布状况。 课程详细信息界面 如图 6.5 所示。

图 6.5 课程信息界面

(6)关注课程界面测试 关注课程界面显示用户关注的课程列表,每门课程显示在列表中,显示课程的 部分信息。关注课程界面如图 6.6 所示。

图 6.6 关注课程界面

(7)我的课程界面测试 我的课程界面显示用户选择的课程列表,每门课程显示在列表中,显示课程的
50

第六章 系统测试

部分信息。我的课程界面如图 6.7 所示。

图 6.7 我的课程界面

(8)社区界面测试 社区界面显示用课程的最新提问、用户提问和问题回答等内容,通过左右滑动 可以进行切换。社区界面如图 6.8 所示。

图 6.8 社区界面

(9)消息界面测试 消息界面显示用户收到的系统信息或者站内信,未读的站内信显示在列表中。 消息界面程界面如图 6.9 所示。
51

西安电子科技大学硕士学位论文

图 6.9 消息界面

(10)搜索结果界面 用户可以通过搜索按钮进行课程搜索,输入课程编号后可以显示搜索结果,每 门课程显示在列表中,显示课程的部分信息。搜索结果界面如图 6.10 所示。

图 6.10 搜索结果界面

6.2.1 黑盒测试
本节在搭建好测试平台上, 对该系统进行黑盒测试[34], 在以下测试中使用黑盒 测试中的等价划分类的方法对系统进行测试。等价类划分法[35]是一种经典的黑盒 测试方法,它将程序所有可能的输入的有效数据和无效数据划分成若干个等价类, 然后从每个部分中选取具有代表性的数据当作测试用例,并对这些用例进行合理
52

第六章 系统测试

的分类, 这些测试用例会被分为有效等价类和无效等价类, 从两方面进行测试以保 证测试用例具有完整性和代表性, 其中有效等价类指的是一组有效的输入, 无效等 价类指的是一组无效输入。 根据有效等价类和无效等价类划分的方法和划分规则, 采用等价类划分法以登 录和注册两个个功能为例对系统进行测试。 (1)登录 登录过程中需要输入用户的邮箱和密码,登录使用的邮箱必须有效,并且密码 与之匹配,登录功能的等价类如表 6.1 所示。
表 6.1 登录功能的等价类 输入 邮箱 密码 有效等价类 已注册邮箱 和注册邮箱匹配的密码 编号 1 2 无效等价类 邮箱格式不正确 邮箱未注册 密码不正确 编号 3 4 5

在划分等价类的基础上, 分别对登录功能中的有效等价类和无效等价类编写用 例进行测试,表 6.2 中描述了登录功能的测试用例和覆盖等价类的编号。
表 6.2 登录功能的测试用例 测试用例 邮箱与密码正确 用户邮箱未注册 用户输入密码与邮箱不匹配 用户输入邮箱格式不正确 预期结果 登录成功 登录失败 登录失败 登录失败 覆盖的有效等价类 1,2 3 4 5

在登录功能的测试用例中,覆盖的有效等价类覆盖了所有等价类的编号,说明 了测试用例的完备性,测试结果也与预期的结果相同。 (2)注册 注册过程中需要输入用户的邮箱和密码,登录使用的邮箱必须有效,并且密码 与之匹配,登录功能的等价类如表 6.3 所示。
表 6.3 注册功能的等价类 输入 信息 有效等价类 未注册信息 编号 1 无效等价类 信息完整正确 注册信息有误 编号 2 3

在划分等价类的基础上, 分别对登录功能中的有效等价类和无效等价类编写用 例进行测试,表 6.4 中描述了登录功能的测试用例和覆盖等价类的编号。
表 6.4 注册功能的测试用例 测试用例 信息未被注册 信息已注册 预期结果 注册成功 注册失败 覆盖的有效等价类 1,2 3

在注册功能的测试用例中,覆盖的有效等价类覆盖了所有等价类的编号,说明 了测试用例的完备性,测试结果也与预期的结果相同。
53

西安电子科技大学硕士学位论文

6.3 性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来 对系统的各项性能指标进行测试, 性能测试分为负载测试和压力测试。 负载测试用 来确定在高载荷下系统的稳定性,压力测试是通过确定一个系统的瓶颈或者不能 接受的性能点, 来获得系统能提供的最大服务级别的测试。 下面分别对客户端和服 务器进行性能测试。

6.3.1 客户端性能测试
客户端的性能测试采用 Android SDK 自带的压力测试工具 Monkey 进行测试。 Monkey 可以运行在模拟器里或实际设备中向系统发送伪随机的用户事件流 (如按 键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行压力测试。 Monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。 利用 Monkey 对客户端进行自动化测试,指定测试应用为 com.taokeba,随机 重复生成事件 500 次,在命令行中输入 adb shell monkey –p com.taokeba –v 500。 经过该测试, 客户端未出现任何错误和崩溃的情况, 表明客户端有良好的健壮 性和较高的性能。

6.3.2 服务器性能测试
服务器的性能测试采用 ApacheBench,它可以针对 url 进行连续的发送请求, 并可以模拟出并发的请求,因此可以使用该工具对服务器进行性能测试。利用 ApacheBench 对服务器进行并发测试, 测试设计为进行 100 次请求, 每次并发次数 为 100,测试结果如图 6.11 所示。

图 6.11 服务器性能测试结果

从测试结果中可以看到,测试共耗时 0.192 秒,所有访问都请求成功,每次访 问耗时 192 毫秒。从测试结果中可以看到,服务器可以满足一定范围内并发的需 求,该系统可以达到预计的性能需求。
54

第六章 系统测试

6.4 本章小结
本章主要对系统的界面和功能进行了详细的测试, 通过对系统进行了充分的功 能测试,达到本系统在需求分析中提出的功能需求和肺功能需求,与预期相符。

55

西安电子科技大学硕士学位论文

56

第七章 总结与展望

第七章 总结与展望
7.1 本文总结
随着无线通信技术的发展, 移动学习平台的优点不断展现出来。 与基于 web 的 学习平台相比, 移动学习平台突出了移动终端便利的优势。 本文在分析了现有在线 学习平台的基础上,主要研究了在 Android 平台上构建一个移动的在线学习系统, 在传统课程学习网站的基础上建立起一个基于无线移动设备的在线学习系统,依 托于社区,将在线学习的过程社会化,加强学生与老师之间的联系,建立起学生与 学生之间的联系,加强在线学习的互动性。该论文完成了以下内容。 首先, 该系统中完成了 Android 客户端。 客户端实现了注册、 登录系统、 选课、 关注课程、查看课程、评论、提问和回答问题等基本功能,通过客户端可以为用户 提供良好的体验和服务。 其次,完成了服务器端的设计与实现。服务器端完成了对客户端数据的处理与 反馈,建立了一个稳定、高效、安全和扩展性较强的服务器,为用户使用客户端的 打下基础。 最后,该系统与现有网站相结合,完成数据的统一,将移动端与网站相连接, 提升用户的体验。 论文是从需求分析、系统设计、系统实现及系统测试等几个方面进行的分析和 研究。需求分析是通过分析系统中学生、教师的角色的用例确定系统需求。系统设 计首先对系统的总体架构进行了总体设计,根据之前的需求分析确定系统主要功 能,进而对系统的功能进行设计,完成了数据库、服务器和客户端的设计。在系统 实现章节中,详细讨论系统各个功能模块实现。最后,对系统进行测试,用来检验 系统的正确性和可用性。

7.2 系统不足与改进方案
7.2.1 系统存在的不足
该系统基于移动平台, 将在线学习与移动平台相结合, 同时使在线学习社交化, 丰富学习内容,基本达到了该系统的设计目标,但是还存在以下几个问题。 首先,在客户端中使用了大量的异步请求,异步请求时基于多线程实现的,因 此在异步请求数据时会开启多个线程, 占用系统为客户端分配的空间与资源, 有可 能降低客户端的性能。 其次,系统采用的数据库为了保证系统的正确性,存在一定的数据冗余,需要 进一步优化,提高系统的响应速度。
57

西安电子科技大学硕士学位论文

再次,在该系统中社交功能相对较弱,只完成了选课评价的社区化,与传统的 社区区别不大,与真实的社交网络还有一定的差距。

7.2.2 系统的改进方案
根据以上分析的系统中的不足,本系统可以进行如下改进。 首先, 在客户端请求数据时减少异步请求的次数和数量, 进一步合理优化界面 及请求数据的方式,将可能合并的异步请求合并成一个请求,减小资源的消耗,提 升客户端的性能。 其次,对数据库进行精简和优化,在保障系统正常运行的前提下,去掉冗余数 据。并根据现有情况,简化数据库结构,将内容重复都高并且相关程度大的数据库 进行合并,使数据库查询更快、更稳定。 最后,要进一步加强系统的社交化,在系统中建立一个社交网络,提高用户之 间的紧密程度,将真正的社交网络融入到系统中。

58

参考文献

参考文献
[1] Haewoon Kwak, Changhyun Lee, Hosung Park, Sue Moon. What is Twitter, a Social Network or a News Media[C]. WWW 2010. New York: ACM, 2010: 591-600. [2] Andreas Holzinger, Alexander Nischelwitzer, Matthias Meisenberger. Mobile Phones as a Challenge for m-Learning: Examples for Mobile Interactive Learning Objects[C]. Proceedings of the 3rd Int’l Conf. on Pervasive Computing and Communications Workshops. 2005: 307 - 311. [3] Jenny Mackness, Sui Fai John Mak, Roy Williams. The Ideals and Reality of Participating in a MOOC[C]. Proceedings of the 7th International Conference on Networked Learning, 2010: 266-274. [4] Sui Fai John Mak, Roy Williams, Jenny Mackness. Blogs and Forums as Communication and Learning Tools in a MOOC[C]. Proceedings of the 7th International Conference on Networked Learning. 2010: 275-285. [5] Bruff, D., D. Fisher, K. McEwen, B. Smith. Wrapping a MOOC: Student Perceptions of an Experiment In Blended Learning, Journal of Online Learning and Teaching[J]. MERLOT Journal of Online Learning and Teaching, 2013, Vol. 9, No. 2. [6] Meister, J. How MOOCs Will Revolutionize Corporate Learning And Development[J]. Forbes. 2013. [7] Dianne H.B. Welsh, Mariana Dragusin. The New Generation of Massive Open Online Course (MOOCs) and Entrepreneurship Education, Small Business[J] Institute Journal. 2013. Vol 9, No 1. [8] Kristine Peters. m-Learning: Positioning educators for a mobile, connected future. Mobile Learning, 2009[J].IRRODL, 2007, Vol8. [9] Cormier, Dave Siemens, George. The Open Course: Through the Open Door--Open Courses as Research, Learning, and Engagement[J]. EDUCAUSE Review. 2010, v45 n4 p30-32, 34-36, 38-39. [10] J Mackness, S Mak, R Williams. The Ideals and Reality of Participating in a MOOC[C]. Networked Learning Conference, 2010. [11] T.C.Liu, H.Y.Wang, J.K.Liang, et al. Wireless and mobile technologies to enhance teaching and learning[J]. Journal of Computer of Assisted Learning, 2013, 19, 371-382. [12] Gustavo Zurita. Miguel Nussbaum. A constructivist mobile learning environment supported by a wireless handheld network[J]. Journal of Computer Assisted Learning, 20, 235–243. [13] Benjamin Bercovitz, Filip Kaliszan, Georgia Koutrika, et al. Social Sites Research Through CourseRank[C]. SIGMOD Record. December 2009. Vol. 38, No. 4. [14] Steven R, Miyagawa, Shigeru, OpenCourseWare: A Case Study in Institutional Decision Making[J]. Lerman, Academe, 2002, 23-27.
59

西安电子科技大学硕士学位论文 [15] Douglas C. Schmidt and Zach McCormick, Producing and Delivering a Coursera MOOC on Pattern-Oriented Software Architecture for Concurrent and Networked Software[J], SPLASH ’13, 2013. [16] Filip Kaliszan, Georgia Koutrika, Henry Liou. CourseRank: A Social System for Course Planning[C]. SIGMOD '09. 2009: 1107-1110. [17] Adomavicius, G. ,Tuzhilin, E. Toward the next generation of recommender systems: A survey of the state-of-the-art and possible extensions[C]. IEEE TKDE 17. 2005:734–749. [18] Georgia Koutrika, Benjamin Bercovitz, Filip Kaliszan, et al. CourseRank: A ClosedCommunity Social System Through the Magnifying Glass[C]. Proceedings of the Third International ICWSM Conference. 2009: 98-105. [19] Satya Komatineni, Dave Maclean, Sayed Hashimi. Pro Android 3[M]. Apress. 2010. [20] 金泰延. Android 框架揭秘[M]. 北京: 人民邮电出版社, 2012: 112-115. [21] William Stalling, Data and computer communications[M], Pearson Custom Publishing; 9th Revised edition. [22] David Gourley, Brian Totty, Marjorie Sayer, Sailu Reddy et al. HTTP 权威指南[M]. 北京:人 民邮电出版社, 2012:71-72. [23] Brett D.Mclaugblin, Justin Edelson. Java 与 XML[M]. 北京: 中国电力出版社, 2011: 12-15. [24] William Sallings. 密码编码学与网络安全:原理与实践(第 5 版)[M]. 北京: 电子工业出版 社, 2012: 125-127. [25] Richard Blum, Christine Bresnahan. Linux 命令行与 shell 脚本编程大全[M]. 北京: 人民邮 电出版社, 2013: 96-97. [26] Shari Lawrence Pfleeger, Joanne M. Atlee. Software Engineering: Theory and Practice[M]. Third Edition, WileyBlackwell. 2008. [27] Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified Modeling Language User Edition. Second Edition [M]. Addison-Wesley Object Technology Series. 2006. 103~113. [28] 周绍景, 唐艳, 邱发林. 浅谈软件需求分析方法[J]. 科技信息, 2007: 37-119. [29] 肖, 加兰. 软件体系结构[M]. 北京: 清华大学出版社, 2007: 276-178. [30] Abranham Silberschartz, Henry F. Korth, S. Sudarshan. Database System Concepts. Fifth Edtion[J]. McGraw-Hill Science/Engineering/Math. 2006: 132~162. [31] 弗里曼. Head First 设计模式[M]. 南京: 东南大学出版社, 2005: 325-326. [32] Bryan Basham, Kathy Sierra, Bert Bates. Head First Servlets and JSP[M]. 北京:中国电力出版 社, 2010: 12-35. [33] Reese, George. Database Programming with JDBC and Java[M], USA: O'Reilly Media, 2000: 32-35.
60

参考文献 [34] 朱少民. 软件测试方法和技术(第 2 版)[M]. 北京: 华大学出版社, 2011: 75-76. [35] 佩腾. 软件测试[M]. 北京: 机械工业出版社. 第 1 版. 2006: 210-215.

61

西安电子科技大学硕士学位论文

62

致谢

致谢
时光荏苒,研究生的学习生活即将结束,在这收获的季节里,我即将踏上新的 征程。这三年中,在老师、朋友和家人的关怀和帮助下,我有许多收获。 感谢我的导师黄健斌老师,他治学严谨,视野广阔,为我营造了一种良好的学术氛 围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明 确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许 多待人接物与为人处世的道理。 感谢大学这三年曾经给我上过课的老师,他们不仅给我传授了知识,还教给我 许多做人的道理; 感谢这四年帮助过我的同学和朋友, 每次遇到困难都是他们在鼓 励我,是他们给了我前进的动力。感谢我的父母和家人,是他们一直在默默的支持 着我。 衷心感谢实验室的各位同学,与他们的交流探讨使我受益颇多。在紧张地生活 和学习中, 大家相互帮助共同学习结下了深厚的友情, 与他们共同创造出和谐融洽 的工作学习气氛给我研究生期间的学习生活留下了难忘的印象。 最后,感谢在百忙之中抽出时间阅读并给予指正的所有论文评阅老师。

63

西安电子科技大学硕士学位论文

64

作者简介

作者简介
1.基本情况 男,陕西西安人,1989 年 12 月出生,西安电子科技大学计算机学院计算机技术 专业 2012 级硕士研究生。 2.教育背景 2008 年 9 月~2012 年 6 月,就读于西安电子科技大学软件学院软件工程专业,获 工学学士学位 2012 年 9 月至今,就读于西安电子科技大学计算机学院计算机技术硕士研究生 3.在学期间的研究成果 黄健斌, 赵林. "地理位置相关的移动社交软件 V1.0",软件著作权登记号: 2012SR137625, 登记日期:2012.06.

65


相关文章:
基于Android的移动在线学习系统的设计与实现.pdf
基于Android的移动在线学习系统的设计与实现 - 基于Android的移动在线学习系统的 设计与实现 作者姓名 领域 赵林 计算机技术 工程硕士 学校导师姓名、职称 黄健斌 教授...
基于Android移动学习系统的设计与实现.pdf
基于Android移动学习系统的设计与实现 - 论文题目 基于 Android 移动学习系统的设计与实现 工程硕士 梁国成 宁宁 副教授 专业学位类别 学号作者姓名指导...
基于Android的在线学习系统的设计与实现.doc
基于Android的在线学习系统的设计与实现 - 龙源期刊网 http://www.qikan.com.cn 基于 Android 的在线学习系统的设计与实现 作者:刘世贵 来源:《中国高新技...
基于Android的移动学习平台的设计与实现_论文.pdf
基于Android的移动学习平台的设计与实现 - 信息 技术 ? 163 ? 基于 Android 的移动学 习平 台的设 计 与实现 杜文军 孙斌 ( 东北 ...
基于Android的移动学习平台的设计与开发.doc
基于Android 的移动学习平台的设计与开发 摘要:针对现代大学生长时间使用手机的现状,文章因 势利导,利用 Java 技术设计研发了一款基于 Android 系统的 App 移动学习...
基于Android平台的移动学习系统的设计与实现.doc
基于Android平台的移动学习系统的设计与实现 - 龙源期刊网 http://www.qikan.com.cn 基于 Android 平台的移动学习系统的设计与 实现 作者:李向东 杨昕 来...
基于Android的英语语法移动学习系统设计与实现.pdf
基于Android的英语语法移动学习系统设计与实现_互联网_IT/计算机_专业资料。Android的英语语法移动学习系统 2013 年第 8 期 023204 2475 ( 2013 ) 08文章编号: ...
基于Android的移动课堂学习系统设计与实现_图文.pdf
基于Android的移动课堂学习系统设计与实现 - 互联网技术和移动通信技术的高
基于Android平台的移动在线测试系统设计与实现_论文.pdf
基于Android平台的移动在线测试系统设计与实现_互联网_IT/计算机_专业资料。第3 ...经过使 用, 系统 运行 良好 。 关键词 中 图分 类号 移动 学习 服务器 ...
基于Android的移动学习系统的设计与实现.pdf
基于Android的移动学习系统的设计与实现 - 移动学习是借助于移动计算设备能够无论何时、无论何地的进行自我知识充电的方式,用于移动学习的移动计算设备必须能高效的...
基于Android的移动学习平台设计与实现_图文.pdf
基于Android的移动学习平台设计与实现 - 当今社会,知识更新速度极快,传统的学习模式由于受到空间和时间的限制,已经无法满足人们对学习的需求。为了迎合和满足学习者...
基于Android的移动学习APP的设计与实现.doc
基于Android的移动学习APP的设计与实现 - 龙源期刊网 http://www.qikan.com.cn 基于 Android 的移动学习 APP 的设计与实 现 作者:周利亚 籍凯 来...
基于Android平台的移动学习系统的设计与实现_论文.pdf
基于Android平台的移动学习系统的设计与实现 - ? 24 ? Computer Era No.4 2014 基于A ndroid 平台...
基于Andriod的移动学习系统的设计与实现_图文.pdf
基于Andriod的移动学习系统的设计与实现 - 随着信息技术的发展,移动智能终端设备在人们的生活中扮演着越来越重要的角色。教育学习与移动设备相结合,产生了一种新型的...
基于Android的移动教学系统的设计与实现.pdf
基于Android的移动教学系统的设计与实现 - 移动教学作为一种教学辅助方式能够有效地补充传统的课堂教学,使得学生更好地利用零散的课余时间,从而为学生创造随时随地学习...
基于Android平台的干部移动学习系统的设计与实现_论文.pdf
委党校干部在线学 习管 理科, 湛江 524032) 摘要 : 为满足学员干部 的移 动学 习需求. 设计实现一个 基于 Android平台的干部移动学习 系统 , 分析系统总体...
基于Android的移动学习交流平台的设计与实现_图文.pdf
基于Android的移动学习交流平台的设计与实现 - 随着移动互联网技术的不断发展,智能手机的不断普及,现在越来越多的人通过手机等智能设备来进行学习和交流。为了满足...
基于Android系统的移动学习平台研究与实现_图文.pdf
基于Android系统的移动学习平台研究与实现 - 伴随着移动互联网技术和移动终
基于Android 的在线考试系统的设计与实现_图文.doc
基于Android 的在线考试系统的设计与实现 - 龙源期刊网 http://www.qikan.com.cn 基于 Android 的在线考试系统的设计与实现 作者:胡剑锋 来源:《电脑知识...
基于android的考试系统设计与实现.doc
本文结合 android 手机等移动设备在高 校的快速普及,从便于在校学生考试、学习基本理论知识的角度考虑,设计了一套基于 android 平台的考试系统。该系统基于 Android ...
更多相关标签: