基于Android教务信息管理系统_第1页
基于Android教务信息管理系统_第2页
基于Android教务信息管理系统_第3页
基于Android教务信息管理系统_第4页
基于Android教务信息管理系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

精品文档 1欢迎下载 基于基于 AndroidAndroid 教务信息管理系统教务信息管理系统 摘摘 要要 针对目前高校教务信息系统的不足 提出一种基于 Android 的教务信息查 询管理系统 它不仅可以帮助师生查询常用信息 同时系统也提供学生选课 上课提醒 等实用的辅助功能 为本校大学生使用教务系统提供便利 该系统充分利用 Android 平 台的功能特点 采用 Http 请求方式完美实现手机端和服务器数据通信 利用 jsoup 和 sax 等方法进行数据解析处理 同时也对界面进行精心的设计 增强用户的体验 关键词关键词 Android 教务信息管理系统 手机客户端 UI AcademicAcademic InformationInformation ManagementManagement SystemSystem basedbased onon AndroidAndroid AbstractAbstract For less than the current university educational information systems the Senate proposed a Android based information system which can be used not only to help students and teachers query information and the system also provides student enrollment school reminders and other useful auxiliary functions dean of the University Students use The system provides convenience The system features full advantage of the Android platform using Http request method to achieve the perfect mobile client and server data communication using jsoup and sax and other methods of data analysis processing but also on the interface carefully designed to enhance the user experience KeyKey wordswords Android Academic Information Management System Mobile client UI 精品文档 I欢迎下载 目录目录 第一章第一章 绪论绪论 1 1 1 1 课题背景 1 1 2 安卓平台简介 1 1 2 1 安卓平台特色介绍 2 1 2 2 安卓系统编程语言 2 1 3 安卓开发的现状 3 第二章第二章 系统开发环境与相关技术系统开发环境与相关技术 3 3 2 1 系统开发的环境 3 2 2 系统开发软件的简介 4 2 2 1 Eclipse 的简介 4 2 2 2 其他软件的简介 4 2 3 安卓环境的搭建 5 2 3 1 软件下载准备 5 2 3 2 JDK 安装 5 2 3 3 Android SDK 安装 5 2 3 4 ADT 安装 5 2 3 5 创建 AVD 6 2 4 系统开发编程语言的简介 6 第三章第三章 系统需求分析及概要设计系统需求分析及概要设计 8 8 3 1 系统需求 8 3 2 可行性分析 8 3 3 系统概要设计 8 3 3 1 系统的功能模块说明 8 3 3 2 系统功能结构图 9 第四章第四章 系统详细设计系统详细设计 1010 4 1 登录功能与实现 10 4 1 1 登录界面 10 4 1 2 登录按钮监听器 12 精品文档 II欢迎下载 4 1 3 新开线程 12 4 1 4 提交验证信息 13 4 1 5 Activity 响应判断 13 4 2 程序主页面实现 14 4 2 1 主界面的头部菜单栏 14 4 2 2 页面跳转 15 4 2 3 通过 WebView 显示信息 18 4 3 选课功能实现 19 4 3 1 页面设计 20 4 3 2 开辟新线程 21 4 3 3 用 handler 更新 UI 22 4 3 4 用户点击事件 22 4 4 公共类 23 4 4 1 XML 文件解析 23 4 4 2 下载服务器返回数据 25 4 4 3 保存用户状态 25 4 4 4 HTML 文件解析 27 第五章第五章 总结总结 2929 参考文献参考文献 3131 精品文档 1欢迎下载1欢迎下载 第一章第一章 绪论绪论 1 11 1 课题背景课题背景 当今社会是信息社会 人们无论何时 无论何地都是在与信息打交道 您阅读的 报纸是信息 看到的广告是信息 电视传播的是信息 上网浏览的是信息 当代人简 直生活在 信息海洋 中 这么多的信息哪些是有用的 哪些是无用的 人们在信息 丰富的社会中 难免会忘记一些重要信息 有时会掉一个寻呼机 有时会掉一个电话 本或笔记本什么的 这些 信息载体 也许包含着重要的个人信息 如何将这些有用 的信息存储起来避免忘记或丢失 如何对这些有用信息进行有序地组织 管理以资对 生活决策提供帮助 这正是信息管理软件要解决的问题 进入 21 世纪以来 无所不在的计算将打破传统意义上的计算机概念 使用更方便 移动更容易 功能更多样化的各种具有计算机功能的设备大量出现 并且在需要时 可以随时通过无线方式连接到移动数据通信网络中 以便高效地交换信息和获得各种 服务 这种设备人们称之为无线设备 移动设备最根本的特征是移动性 即能够利用 无线电波 微波或红外线等传输介质允许通信中的设备在一定范围内自由移动 其位 置不受束缚 从而实现通信双方至少有一方在移动中进行信息传输和交换的目的 移 动设备从产生到现在的历史并不长 然而其发展速度却远远超出人们的预料 现如今 移动设备大行其道 全球有超过十亿部移动电话正在被使用 并且这个 数目正在逐渐增加 在除美国之外的每个发达国家 拥有手机的人数比拥有计算机的 人数更多 而目前 随着移动设备越来越普及及移动硬件的提升 移动设备的功能越来越完 善 移动设备的系统平台也日渐火热起来 目前国内最常见的移动开发平台有 Symbian iPhone Windows Phone 以及 Android 如今国内外都有非常多的 Android 系统的用户 自从 2011 年第一季度 Android 在全球份额首次超过 Symbian 跃居全 球第一 截止 2012 年 2 月据 Android 占据全球智能手机操作系统市场 52 5 的份额 中国市场占有率为 68 4 1 考虑到如今手机系统的发展现状 以及 Android 平台系统自身所拥有的优势 因 此 基于安卓平台开发一款手机应用软件具有较大的意义和可行性 1 21 2 安卓平台简介安卓平台简介 Android 一词的本义指 机器人 同时也是 Google 于 2007 年 11 月 5 日宣布的基 于 Linux 平台的开源手机操作系统的名称 该平台由操作系统 中间件 用户界面和 应用软件组成 号称是首个为移动终端打造的真正开放和完整的移动软件 目前 最 精品文档 2欢迎下载2欢迎下载 新版本为 Android 4 0 Ice Cream Sandwich 冰激凌三明治 以及还在测试中的 Android 5 0Jelly Bean 果冻豆 1 2 11 2 1 安卓平台特色介绍安卓平台特色介绍 1 开放性 在优势方面 Android 平台首先就是其开放性 开放的平台允许任何移动终端厂商 加入到 Android 联盟中来 显著的开放性可以使其拥有更多的开发者 随着用户和应 用的日益丰富 一个崭新的平台也将很快走向成熟 开发性对于 Android 的发展而言 有利于积累人气 这里的人气包括消费者和厂商 而对于消费者来讲 最大的受益正 是丰富的软件资源 开放的平台也会带来更大竞争 如此一来 消费者将可以用更低 的价位购得心仪的手机 2 挣脱运营商的束缚 在过去很长的一段时间 特别是在欧美地区 手机应用往往受到运营商制约 使 用什么功能接入什么网络 几乎都受到运营商的控制 自从 iPhone 上市 用户可以更 加方便地连接网络 运营商的制约减少 随着 EDGE HSDPA 这些 2G 至 3G 移动网络的 逐步过渡和提升 手机随意接入网络已不是运营商口中的笑谈 3 丰富的硬件选择 这一点还是与 Android 平台的开放性相关 由于 Android 的开放性 众多的厂商 会推出千奇百怪 功能特色各具的多种产品 功能上的差异和特色 却不会影响到数 据同步 甚至软件的兼容 好比你从诺基亚 Symbian 风格手机一下改用苹果 iPhone 同时还可将 Symbian 中优秀的软件带到 iPhone 上使用 联系人等资料更是可以方便地 转移 4 不受任何限制的开发商 Android 平台提供给第三方开发商一个十分宽泛 自由的环境 因此不会受到各种 条条框框的阻扰 可想而知 会有多少新颖别致的软件会诞生 但也有其两面性 血 腥 暴力 情色方面的程序和游戏如何控制正是留给 Android 难题之一 1 2 21 2 2 安卓系统编程语言安卓系统编程语言 在 Android 中 开发者可以使用 Java 作为编程语言来开发应用程序 也可以通过 NDK 使用 C C 作为编程语言来开发应用程序 也可使用 SL4A 来使用其他各种脚本语 言进行编程 如 python lua tcl php 等等 还有其他诸如 Qt qt for android Mono mono for android 等一些著名编程框架也开始支持 Android 编程 甚至通过 MonoDroid 开发者还可以使用 C 作为编程语言来开发应用程序 另外 谷 精品文档 3欢迎下载3欢迎下载 歌还在 2009 年特别发布了针对初学者的 Android Simple 语言 该语言类似 Basic 语 言 而在网页编程语言方面 JavaScript ajax HTML5 jquery sencha dojo mobl PhoneGap 等等都已经支持 Android 开发 在 Android 系统底层方面 Android 使用 C C 作为开发语言 而 Android 应用层 的开发 基本上全部是采用 Java 开发 但和我们一般互联网上应用的 JAVA 还是有些 区别的 此 JAVA 是 google 自己做的一套实现来实现 和 SUN 的底层是不太一样的 不过对开发应用区别不大 1 31 3 安卓开发的现状安卓开发的现状 目前国内的 Android 开发还是主要以应用开发为主 主要分成 3 类 为企业开发 应用 开发通用应用 放到 Android Market 或者其他 App Market 销售 以及游戏开 发 放到 Android Market 或者其他 App Market 销售 第一类开发者一般身处规模较大的公司 这些公司主要为自有品牌或者其他品牌 设计手机或者平板电脑的总体方案 除了根据需求对系统进行定制外 更多的工作在 于为这些系统编写定制的应用 第二类开发者 一般处于创业型公司或者是独立开发者 他们的盈利方式主要是 2 种 为国外公司进行外包开发 或者通过 Google 的移动广告 AdMob 通过广告点 击分成 而理论上的通过付费下载的形式来盈利的 现在国内鲜见成功者 第三类开发者 目前和第二类开发者类似 下图是开发者提交的应用和游戏的数 目所占的比例图 从中也可以看出应用开发数目远超游戏开发 图 1 1 开发者提交应用和游戏比例图 精品文档 4欢迎下载4欢迎下载 第二章第二章 系统开发环境与相关技术系统开发环境与相关技术 2 12 1 系统开发的环境系统开发的环境 Android 的上层应用程序是用 Java 语言开发 同时还需要基于 Dalvik 虚拟机 所以 Google 公司推荐使用主流的 Java 继承开发环境 Eclipse 只有 Eclipse 还不够 因为是使用 Java 语言进行开发 还应该有由 SUN 公司提供的 Java SDK 其中包括 JRE Java Runtime Environment 此外 Android 的应用程序开发和 Java 开发有较 大区别的 所以还需要有 Google 提供的 Android SDK 同时 还需要在 Eclipse 安装 ADT 为 Android 开发提供开发工具的升级或者变更 是 Eclipse 下开发工具的升级 下载的工具 简言之 需要以下软件 才能搭建 Android 开发环境 从而进行 Android 应用程序的开发 1 Eclipse 2 JDK 3 Android SDK 4 ADT Android Development Tools 2 22 2 系统开发软件的简介系统开发软件的简介 2 2 12 2 1 EclipseEclipse 的简介的简介 Eclipse 是一个开放源代码的 基于 Java 的可扩展开发平台 就其本身而言 它 只是一个框架和一组服务 用于通过插件组件构建开发环境 幸运的是 Eclipse 附 带了一个标准的插件集 包括 Java 开发工具 Java Development Kit JDK 虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境 IDE 来使用 但 Eclipse 的目标却不仅限于此 Eclipse 还包括插件开发环境 Plug in Development Environment PDE 这个组件主要针对希望扩展 Eclipse 的软件开发人员 因为它 允许他们构建与 Eclipse 环境无缝集成的工具 由于 Eclipse 中的每样东西都是插 件 对于给 Eclipse 提供插件 以及给用户提供一致和统一的集成开发环境而言 所 有工具开发人员都具有同等的发挥场所 这种平等和一致性并不仅限于 Java 开发工具 尽管 Eclipse 是使用 Java 语言 开发的 但它的用途并不限于 Java 语言 例如 支持诸如 C C 和 COBOL 等编程 语言的插件已经可用 或预计将会推出 Eclipse 框架还可用来作为与软件开发无关的 其他应用程序类型的基础 比如内容管理系统 精品文档 5欢迎下载5欢迎下载 2 2 22 2 2 其他软件的简介其他软件的简介 1 JDK JDK Java Development Kit 是 Sun Microsystems 针对 Java 开发员的产品 自从 Java 推出以来 JDK 已经成为使用最广泛的 Java SDK JDK 是整个 Java 的核心 包括 了 Java 运行环境 Java 工具和 Java 基础的类库 JDK 是学好 Java 的第一步 而专门 运行在 x86 平台的 Jrocket 在服务端运行效率也要比 Sun JDK 好很多 从 SUN 的 JDK5 0 开始 提供了泛型等非常实用的功能 其版本也不断更新 运行效率得到了非常 大的提高 2 Android SDK SDK software development kit 软件开发工具包 被软件开发工程师用于为 特定的软件包 软件框架 硬件平台 操作系统等建立应用软件的开发工具的集合 因此 Android SDK 指的既是 Android 专属的软件开发工具包 3 ADT Android Development Tools 目前 Android 开发所用的开发工具是 Eclipse 在 Eclipse 编译 IDE 环境中 安装 ADT 为 Android 开发提供开发工具的升级或者变更 简单理解为在 Eclipse 下开发工 具的升级下载工具 2 32 3 安卓环境的搭建安卓环境的搭建 2 3 12 3 1 软件下载准备软件下载准备 分别下载 JDK Eclipse Android SDK 并首先解压 Eclipse 完成安装 2 3 22 3 2 JDKJDK 安装安装 首先按提示完成 SDK 安装 然后设置环境变量 非必须 1 我的电脑 属性 高级 环境变量 系统变量中添加以下环境变量 2 JAVA HOME 值为 E Android Java jdk1 6 0 21 我所安装 JDK 的目录 3 CLASSPATH 值 JAVA HOME lib tools jar JAVA HOME lib dt jar JAVA HOME bin 4 Path 在开始追加 JAVA HOME bin 安装完成之后 检查 JDK 是否安装成功 打开 cmd 窗口 输入 java version 查 看 JDK 的版本信息 出现下面的画面表示安装成功了 如图 2 1 精品文档 6欢迎下载6欢迎下载 图 2 1 安卓环境设置 JDK 效果测试图 2 3 32 3 3 AndroidAndroid SDKSDK 安装安装 下载完成后解压到任意路径运行 SDK Setup exe 点击 Available Packages 选 择希望安装的 SDK 及其文档或者其它包 按需点击下面选项 开始下载安装所选包 在用户变量中新建 PATH 值为 Android SDK 中的 tools 绝对路径 本机为 D AndroidDevelop android sdk windows tools 完成按 确定 后 重新启动计算机 重启计算机以后 进入 cmd 命令窗口 检 查 SDK 是不是安装成功 运行 android h 出现参数选择 表明安装成功 2 3 42 3 4 ADTADT 安装安装 打开 Eclipse 进入菜单中的 Help Install New Software 点击 Add 按钮 弹出对话框要求输入 Name 和 Location Name 自己随便取 Location 输入 http dl 确定返回后 在 work with 后的下拉列表中选择我们刚才添加的 ADT 点击下面出 现的 Developer Tools 展开它会有 Android DDMS 和 Android Development Tool 勾 选他们 然后按步骤完成 完成之后 选择 Window Preferences 在左边的面板选择 Android 然后在右侧点击 Browse 并选中 SDK 路径 本机为 E Android android sdk windows 点击 Apply 配置完成 2 3 52 3 5 创建创建 AVDAVD 为使 Android 应用程序可以在模拟器上运行 必须创建 AVD 1 在 Eclipse 中 选择 Windows Android SDK and AVD Manager 2 点击左侧面板的 Virtual Devices 再右侧点击 New 精品文档 7欢迎下载7欢迎下载 3 填入 Name 选择 Target 的 API SD Card 大小任意 Skin 随便选 Hardware 目前保持默认值 4 点击 Create AVD 即可完成创建 AVD 综上一切完成后安卓环境搭建完成 2 42 4 系统开发编程语言的简介系统开发编程语言的简介 Java 是一种简单的 跨平台的 面向对象的 分布式的 解释的 健壮的安全的 结构的中立的 可移植的 性能很优异的多线程的 动态的语言 Java 编程语言的风格十分接近 C C 语言 Java 是一个纯的面向对象的程序设 计语言 它继承了 C 语言面向对象技术的核心 Java 舍弃了 C 语言中容易引起 错误的指针 以引用取代 运算符重载 operator overloading 多重继承 以接 口取代 等特性 增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空 间 使得程序员不用再为内存管理而担忧 在 Java SE 1 5 版本中 Java 又引入了 泛型编程 Generic Programming 类型安全的枚举 不定长参数和自动装 拆箱等语 言特性 Java 不同于一般的编译执行计算机语言和解释执行计算机语言 它首先将 源代码编译成二进制字节码 bytecode 然后依赖各种不同平台上的虚拟机来解释执 行字节码 从而实现了 一次编译 到处执行 的跨平台特性 不过 每次的编译执 行需要消耗一定的时间 这同时也在一定程度上降低了 Java 程序的运行效率 但在 J2SE 1 4 2 发布后 Java 的执行速度有了大幅提升 与传统程序不同 Sun 公司在 推出 Java 之际就将其作为一种开放的技术 全球数以万计的 Java 开发公司被要求 所设计的 Java 软件必须相互兼容 Java 语言靠群体的力量而非公司的力量 是 Sun 公司的口号之一 并获得了广大软件开发商的认同 这与微软公司所倡导的注重 精英和封闭式的模式完全不同 Sun 公司对 Java 编程语言的解释是 Java 编程语 言是个简单 面向对象 分布式 解释性 健壮 安全与系统无关 可移植 高性能 多线程和动态的语言 Java 平台是基于 Java 语言的平台 Java 的特点 1 平台无关性 平台无关性是指 Java 能运行于不同的平台 Java 引进虚拟机 原理 并运行于虚 拟机 实现不同平台的 Java 接口之间 使用 Java 编写的程序能在世界范围内共享 Java 的数据类型与 机器无关 Java 虚拟机 Java Virtual Machine 是建立在硬件 和操作系统之上 实现 Java 二进制代码的解释执行功能 提供于不同平台的接口的 2 安全性 Java 的编程类似 C 学习过 C 的读者将很快掌握 Java 的精髓 Java 舍弃了 C 的指针对存储器地址的直接操作 程序运行时 内存由操作系统分配 这样可以避 精品文档 8欢迎下载8欢迎下载 免病毒通过指针侵入系统 Java 对程序提供了安全管理器 防止程序的非法访问 3 面向对象 Java 吸取了 C 面向对象的概念 将数据封装于类中 利用类的优点 实现了程 序的简洁性和便于维护性 类的封装性 继承性等有关对象的特性 使程序代码只需 一次编译 然后通过上述特性反复利用 程序员只需把主要精力用在类和接口的设计 和应用上 Java 提供了众多的一般对象的类 通过继承即可使用父类的方法 在 Java 中 类的继承关系是单一的非多重的 一个子类只有一个父类 子类的父类又有一个 父类 Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形 根类为 Object 类 Object 类功能强大 经常会使用到它及其它派生的子类 4 分布式 Java 建立在扩展 TCP IP 网络平台上 库函数提供了用 HTTP 和 FTP 协议传送和接 受信息的方法 这使得程序员使用网络上的文件和使用本机文件一样容易 5 健壮性 Java 致力于检查程序在编译和运行时的错误 类型检查帮助检查出许多开发早期 出现的错误 Java 自己操纵内存减少了内存出错的可能性 Java 还实现了真数组 避 免了覆盖数据的可能 这些功能特征大大提高了开发 Java 应用程序的周期 并且 Java 还提供了 Null 指针检测 数组边界检测 异常出口 Byte code 校验等功能 6 解释型 我们知道 C C 等语言 都是针对 CPU 芯片进行编译 生成机器代码 该代码的运 行就和特定的 CPU 有关 Java 不像 C 或 C 它不针对 CPU 芯片进行编译 而是把程 序编译成称为字节码的一种 中间代码 字节码是很接近机器码的文件 可以在提供 了 java 虚拟机 JVM 的任何系统上被解释执行 7 动态 JAVA 程序的基本组成单元就是类 有些类是自己编写的 有些是从类库中引入的 而类又是运行时动态装载的 这就使得 Java 可以在分部环境中动态的维护程序及分类 而不像 C 那样 没档期类库升级以后 如果想让程序具有新类库提供的功能 就需要 修改程序 重新编译 第三章第三章 系统需求分析及概要设计系统需求分析及概要设计 3 13 1 系统需求系统需求 该系统是一个基于学校选课系统针对学生的手机客户端 它是为本软件的持有者 提供对选课系统的一些功能进行基本操作 它包括成绩查询 课表查询 本学期所选 精品文档 9欢迎下载9欢迎下载 课程查询 学籍查询 考试信息查询 修改密码 选课等操作 本软件为在校学生方便快捷的使用学校选课系统提供一种途径 3 23 2 可行性分析可行性分析 通过对学校选课系统整体研究分析 本学校选课系统不提供对外接口 所以不能 独立存在 只能依附于选课系统 jsp 页面 通过对选课系统 http 请求处理研究发现 只要提供正确参数 系统后台 servlet 会返回相应 Xml 或 Html 页面 通过对返回数据 的处理 基本可以实现上述功能 3 33 3 系统概要设计系统概要设计 3 3 13 3 1 系统的功能模块说明系统的功能模块说明 1 登录模块 作为系统启动后第一个界面 其中包括用户名密码输入 其中用 户名为学生学号 登录成功后自动保存用户名与密码 有利于提高用户体验 最后提 供服务器验证信息返回提示 如果验证通过提示后跳转页面 如果失败则提示重新登 录 2 系统主界面 用户登录后跳转到此界面 该界面用标签方式同时加载 3 个页 面在手机 用户可通过下方按钮选择当前需要的界面 提高手机屏幕所显示信息量 于软件运行速度 3 数据解析模块 用于处理服务器返回数据 4 数据下载模块 利用 HTTP 请求接收返回数据 3 3 23 3 2 系统功能结构图系统功能结构图 在程序设计分析的基础上 结合实际情况 得出本程序的功能模块结构图 在结 构图中包括了功能模块的表示及其中部分功能的实现原理 1 总体设计 首先是一个总的功能模块的结构图 其中包括了系统设计时的总体功能概括 如 图 3 1 图 3 1 整体功能示意 选课系统 课表查询课程查询成绩查询学籍查询选课修改密码 精品文档 10欢迎下载10欢迎下载 2 系统流程图 跟据需求 程序流程如下 用户登录后加载主框架 通过框架加载常用查询页面 与服务器授权才能使用的查询页面 如选课 选课查询 考试查询等 整体流程如图 3 2 图 3 2 软件流程 3 登录模块设计 登录模块由于要在网络上取验证数据 所耗时间不确定 为不使主界面在验证时 出现假死现象 所以必须新开线程 和 UI 所在线程分离 实现异步登录 具体流程如 图 3 3 学生选课系统 登录 主界面 常用查询授权查询关于 退出 课表查询 课程查询 成绩查询 学籍信息 修改密码 选课 考试信息查询 学生选课系统 登录 生成 URL 判断登录状态 HttpDownloader 返回 XML 验证数据 解析 XML 数据 返回验证数据 UI 线程新开线程 登录成功并跳转 0 1 精品文档 11欢迎下载11欢迎下载 图 3 3 登录数据流程 第四章第四章 系统详细设计系统详细设计 4 14 1 登录功能与实现登录功能与实现 4 1 14 1 1 登录界面登录界面 本界面采用线性布局 LinearLayout 将标签 文本框 按钮 选项框组织排列 值 得注意的是这里的用户名输入框使用了 AutoCompleteTextView 控件而不是普通的 EditText 这样做是为了使程序可以使用保存下的用户名密码 并且在开始输入时可 以提示用户 这样做可以减少用户重复输入 有助提高软件可操作性 首先建立好 Android 工程 在工程下的 res layout 下建立一个名为 Login 的空 xml 文件 然后按照设计将布局完成 结果如下图 4 1 所示 精品文档 12欢迎下载12欢迎下载 图 4 1 登录界面 然后在工程 src 目录下所对应 Activity 中创建控件 并用 findViewById 方法 得到所创建的控件 ID 并转换成相应控件 实现代码如下 cardNumAuto AutoCompleteTextView findViewById R id cardNumAuto passwordET EditText findViewById R id passwordET logBT Button findViewById R id logBT sp this getSharedPreferences passwordFile MODE PRIVATE savePasswordCB CheckBox findViewById R id savePasswordCB savePasswordCB setChecked true cardNumAuto setThreshold 1 passwordET setInputType InputType TYPE CLASS TEXT InputType TYPE TEXT VARIATION PASSWORD 其中 savePassword 为多选框 只有这个值为 true 时才会保存密码 当用户登录 过之后 下次登录会在输入第一个字符时开始提示用户 用户名密码保存使用 SharedPreferences Android 自带的微型数据存储类 SharedPreferences 保存数据 其背后是用 xml 文件存放数据 文件存放在 data data shared prefs 目录下 其中数据数据适配器实现代码如下 new TextWatcher public void onTextChanged CharSequence s int start int before int count String allUserName new String sp getAll size allUserName sp getAll keySet toArray new String 0 ArrayAdapter adapter new ArrayAdapter Login Activity this android R layout simple dropdown item 1line allUserName cardNumAuto setAdapter adapter public void beforeTextChanged CharSequence s int start int count int after public void afterTextChanged Editable s passwordET setText sp getString cardNumAuto getText toString 4 1 24 1 2 登录按钮监听器登录按钮监听器 当用户名密码输入完成点击登录将会执行登录操作 所以 必须给登录按钮添加 监听器 用来监听点击事件 具体流程为 得到用户输入的用户名和密码 并新开线 程 并在用提示框通知用户现在正在验证用户信息 具体实现代码如下 logBT setOnClickListener new OnClickListener public void onClick View v cardNumStr cardNumAuto getText toString passwordStr passwordET getText toString mDialog new ProgressDialog Login Activity this mDialog setIcon DEFAULT KEYS DISABLE 精品文档 13欢迎下载13欢迎下载 mDialog setTitle 登陆 mDialog setMessage 正在登陆服务器 请稍后 mDialog show Thread loginThread new Thread new LoginThread loginThread start 4 1 34 1 3 新开线程新开线程 监听器绑定之后 在用户点击登录按钮时将会新开一个线程 所有验证中的操作 全部在新线程中执行 新开线程主要用于发送 http 请求并接收验证信息 之后通知页面显示登录结果实 现代码如下所示 class LoginThread implements Runnable public void run String username cardNumAuto getText toString String password passwordET getText toString ArrayList userStr loginServer username password Message msg handler obtainMessage if userStr get 0 equals 0 msg what 1 handler sendMessage msg else if savePasswordCB isChecked 登陆成功才保存密码 sp edit putString cardNumStr passwordStr commit msg what 0 handler sendMessage msg 新开线程又包含几项对数据的处理工作 以及对返回处理结果 并对当前页面的 一些操作 4 1 44 1 4 提交验证信息提交验证信息 handler 为接收返回验证信息并在界面显示登录结果 鉴于本学校服务器返回验证 信息为一 XML 文件 解析后用泛型 ArrayList 存储 其中第一条为用户名密码验证信 息 返回 1 为验证不通过 返回 0 为通过 并附加一些用户基本数据作为之后操作参 数 其中 http 请求的 URL 与数据处理实现代码如下 private ArrayList loginServer String username String password ArrayList userStr null String userName username String passWord password String path 127 0 0 1 8080 webdu loginservlet action 1 精品文档 14欢迎下载14欢迎下载 path path replaceAll s HttpDownloader httpdownloader new HttpDownloader String json new String httpdownloader download path try userStr Method xmlParse json catch Exception e return userStr 由于在 Android 中 在输入完成后自动添加上一个空格 但 http 请求 URL 中 服 务器接收时没有控制 所以在这里得对生成的 URL 进行处理 path path replaceAll s 为去掉字符串中所有空格 该方法返回一个 ArrayList 这个 ArrayList 是可变长数组 为方便返回数据的可 操作性 4 1 54 1 5 ActivityActivity 响应判断响应判断 将服务器返回的数据解析后 我们就知道了这次登录操作中到底有没有通过服务 器验证 但是在新线程中下载解析后的数据我们无法直接在 Activity 中使用 所以当 前 Activity 必须在新线程执行结束前处于等待状态 并且随时准备响应 新开线程与 Activity 不处于同一线程 不能直接对 Activity 进行操作 所以这里必须有一个 Handler 来接受新线程发送的数据 并用此数据配合主线程更新 Activity 前面的新开线程中 我们判断了服务器返回值是否为 0 并为一个状态量设置了值 这个值就是 Handler 所接受的值 通过新线程的值来控制 UI 更新 实现代码如下 Handler handler new Handler public void handleMessage Message msg switch msg what case 0 mDialog cancel Toast makeText getApplicationContext 登录成功 Toast LENGTH SHORT show Intent intent new Intent intent setClass Login Activity this Main Bootom Tab class startActivity intent finish break case 1 mDialog cancel Toast makeText getApplicationContext 账户或密码错误 Toast LENGTH SHORT show break 这是一个内部类 写在在 Activity 中 如果新线程返回 msg what 0 则关闭 Activity 中的对话框 并提示登录成功 然后跳转到程序主页面 并将登录页面销毁 如果不为 0 则提示用户账户或密码错误 精品文档 15欢迎下载15欢迎下载 4 24 2 程序主页面实现程序主页面实现 4 2 14 2 1 主界面的头部菜单栏主界面的头部菜单栏 用户登录通过服务器验证后界面将跳转到 Main bootom Tab 页面 此页面知识一 个框架 通过这个 Activity 可以同时加载多个页面 增加屏幕可显示信息量 在页面 底部放置一个菜单栏 用户可以通过点击此菜单栏来实现页面之间的切换 制作这个头部菜单栏是为了提升软件的可操作性 用的是 TabHost RadioGroup 相 结合的方法来制作这个部分的 菜单栏的底部位置是通过 TabHost 这个布局来实现的 然后是 LinearLayout 的线性布局来布置内容 内部的选项卡是通过 TabWiget 来实现 在工程下的 res layout 下建立一个名为 main 的空 xml 文件 然后在这个文件里 按照思路来添加布局代码 主界面的菜单选项使用 RadioGroup 来建立 在这里的布局中 RadioGroup 里容纳 4 个 RadioButton 而 RadioButton 是单选按钮 在这种情况下就只有也只能有一个 RadioButton 能被选择 并且在开始时默认了第一个按钮被选中 其中 RadioButton 的 实现方式是在设置了内部的文字 然后再按钮的顶部上添加上图片 实现的代码如下 从上述代码可以看到 在菜单的每个选项卡样式都是调用了 style 上的 main tab bottom 来实现样式的 而 main tab bottom 的背景 background 的值是 drawable btn bg btn bg 不是一个简单的背景图片 而是一个 xml 文件 通过这个 文件可以实现菜单选项卡切换时的背景切换的效果 使得这个菜单栏更加的美观 代 码是使用了安卓的 selector 来实现 在这里是通过不停的条件来判断使用哪一个 item 的 里面包括了几个属性值 如是否获得焦点 是否响应事件 是否点击三个条件 实施的代码如下 精品文档 16欢迎下载16欢迎下载 制定完主页面布局后 在 src com manage activity 下的 MainPage 文件中 OnCreate OnCreate 方法是用来初始化 Activity 实例对象的 中调用布局 到现在为 止顶部菜单栏的布局已经基本完成 但现在里面所对应的内容还是空的 所以就需要 在这里给 tabHost 中添加 tab 内容 以第一格的 tab 为例 先是通过 Intent 的方式新 建个 mDate 用来实现页面的跳转的方法 然后动态用 tabHost 来通过 addTab 的方法 添加对应 TabSpec 的值和各个属性 最后在添加 RadioGroup 的选择操作函数 这里是通过 switch 来完成对应按钮的功 能的实现 在每个 case 项中通过 tabHost setCurrentTabByTag 来给与特定的值实现 页面上的跳转 最终的效果如图 4 1 图 4 2 主页界面头部菜单 4 2 24 2 2 页面跳转页面跳转 在 Main bootom Tab 中添加两个页面 里面添加系统的功能选项 第一个为 MainActivity 第二个为 ChoiseCourse 实现效果如下图所示 精品文档 17欢迎下载17欢迎下载 图 4 3 系统主界面 其中每一个选项是一个自定义的 RelativeLayout 定义样式为 在主类当中通过 results RelativeLayout findViewById R id results 方法 直接得到一个对象 然后对象上绑定监听器 results setOnClickListener new gotoActivity 通过判断所点击的对象的 ID 将 Intent 中添加标志 最后用 Intent 对象启动新 Activity 具体实现代码如下 class gotoActivity implements OnClickListener public void onClick View v Intent intent new Intent intent setClass MainActivity this resInformation class if v getId R id results intent putExtra mark 1 else if v getId R id course intent putExtra mark 2 else if v getId R id schedule intent putExtra mark 3 else if v getId R id status System out println 第四个页面 waterlevenow logn intent putExtra mark 4 else if v getId R id examinfi System out println 第五个页面 waterlevenow logn intent putExtra mark 5 else return 精品文档 19欢迎下载19欢迎下载 MainActivity this startActivity intent 新启动的 Activity 被启动后 去除 Intent 中传入的键值对 通过标志信息的判 断 来选择所需要发送的 URL 由前期分析的到 学校教务系统只能通过 http 请求发送接收数据 从系统整体结 构分析 加个连接池类可以增加系统的可扩展性与可管理性 整个连接池类只作为字 符串的返回与修饰 在这里不做介绍 4 2 34 2 3 通过通过 WebViewWebView 显示信息显示信息 在 Android 手机中内置了一款高性能 webkit 内核浏览器 在 SDK 中封装为一个叫 做 WebView 组件 WebKit 是 Mac OS X v10 3 及以上版本所包含的软件框架 同时 WebKit 也是 M

温馨提示

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

评论

0/150

提交评论