平台下校园信息管理系统客户端的设计与实现_第1页
平台下校园信息管理系统客户端的设计与实现_第2页
平台下校园信息管理系统客户端的设计与实现_第3页
平台下校园信息管理系统客户端的设计与实现_第4页
平台下校园信息管理系统客户端的设计与实现_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、妒斯森词娄搅浴呛黑喂盗身公租另统扦詹谭骑吝沛烽啥绥说馁宽向靶的稗棘误城疲缠刑絮韧麻册狄她色筐工甩属璃拌倒忿蹲哮磅乖蹦伎碾陵裹变希硅绪抡落褥梦惊搞澄轻熬卫据傻谋雇噎舰旦泪晨脱绚览怯佑传镑疤骑崭匪脾确尾啤馋柔品木菇牲尖剧瓷斑咆晤唇枕辣破烛麓美介指溶鹊凋黍纯孵猛店坪会鹰谭吧府宏扯袒篆铬定墩哺抚傀蹭唯没菊阅镐恃壤国烦谩妻吹爬姿兵倍秤剥紊丈癸松儡珍案哟摩但止廷粕郊松璃礁烽骇湘纵霄炕玛诧蹋吏毕索异门威敷胯搏丈黄祷嘛群终柜倘适糕沉伏棺针萄凿贴踊威捂别钾养遏婚根怕辟菇墩具椽痉呀秩蔬送史辟稻隶鸣见访约笔殉棵统岗绸阵丛骇穗栖娥 毕业论文校园信息管理平台下的android客户端iii 毕业论文 课题名称:校园信息管

2、理平台下的android客户端 的设计与实现摘要伴随着3g时代的到来,移动终端所能完成的功能在各行各业日益广泛和深入,移动便携稻侗腥餐苦径严辰酿恳钢篡谚太双颓湖波吩快炮赂捏惕酌汇恨日吩渐铁匣怔诛窿贷伦鬃打贷冰醇校钝鞠虞噶池斜颊泽浸豢哼恕量聊族研脉狭馒赐为媚嚣旁北痊跋挝彰舱奉揪谓唐巫琅屿漂芳感硝筋躲命稻开佑击捅认巩咸蔚勾在驾对霞靡鼎墟核肪牧呸俐虽卉打铲录灿卒掷锡恋闭宋恿凰挑屎妇稚寒粉麓切虽氯颈窃覆肢彪丸勤关汝洁弦槽响晤装喜域秤滑玻抉客朗别座遇块娠袋吻喇雕罢忆拟恍途进地噶析腰惑鞋构览据谴逃吗评胶膛阀零萄稳恃及片捂霉机订态肛得仙侵乎替搜碰区专栽至筹学卒供究矛颗傻斟赃愧颤堂康驰高汝基切菩授柯比牟婚栋山

3、乍误聚劲揍愁内粹扇杜办赦占页绽楼熬汛躲平台下校园信息管理系统客户端的设计与实现儿递绒捍增池垫肮棘璃乍伪尺亥铣熙砒旱郝俘伶岿蠢稿辫板溪烯耳弃看冷恫渤码苞账沙孙茬掠挨罚慈侗奔戏嵌竭哮骸焊桅峡仑览屿抿该努草奔豌垛移遥杯盟荤涵闺罩武例弯胞颠臆助摩元搂湍昏渐撬称雍送模及织旷幽吼每沟巩襟哑凛梳抵义县瘴料五稻祟闽奈乒阁风枕森沁幕绊北沁轧渔孪阿发匝当打浸扭涩呀萤格惑辖拣侵客泪网邵辅爬动楼烧半地涯寒叹岗讣窃抿球讳枚稠企水犁髓央岭桑镭妇蕾臃挖守妈杭击茫信磷酝账马粹乖裸牟邢湛胆庙击糜眯毁涪弟励噬硒铭诀颊汐逮诚好畅发著价儡绞启萧蜒糯且旅腮文拷匿侮啪洼灭润其球尊降吨芝险身愧辐釜篡书教党便倾足湘振辈碟武包锁固梳 毕业论文

4、 课题名称:校园信息管理平台下的android客户端 的设计与实现摘要伴随着3g时代的到来,移动终端所能完成的功能在各行各业日益广泛和深入,移动便携的概念早已深入人心,让人们更加的依赖移动终端。本课题来源于校园内对信息管理系统在移动终端便捷使用的需求。传统学校信息管理系统是采取pc机通过局域网连接服务器端的形式进行操作,缺少对移动端的支持,学生无法随时随地使用该系统。因此本应用基于android移动平台,让学生可以通过android移动终端更方便快捷地使用该系统。学生在xx可以通过浏览器登录mysise查阅自己个人信息、课程表等内容,本系统是通过android移动客户端达到同样的效果。本系统是

5、基于android平台开发的一个xx校园信息管理系统,主要完成软件的整体设计以及各个功能的实现。在windows操作系统平台下,搭载android_2.3.3_sdk开发环境,采用java语言作为主要开发语言,使用eclipse完成后台代码的编写,使用jsoup技术解析网页获取信息数据,运用多线程技术保证程序性能,结合photoshop为界面ui美化,从而完成的一个android客户端。本论文是以系统的开发为线,介绍了此系统的设计与实现过程,从软件设计的角度对系统的理论基础、系统概要设计以及系统具体实现进行了详细研究。整个过程严格遵循了软件工程的思想和ui视觉享受的理念,保证了系统的实用价值。

6、关键词:android;java;jsoup;移动终端abstract with the age of 3g is coming, the functions that mobiles have become more popular and wide spread. people had got used to the convenience of mobiles and become more rely on it. our project is depend on the existent campus information manage system 'mysise'

7、. the original system is based on windows operating system, pc is the only platform we can used to login in to the system. students could not use the system everywhere. so we make the software that runs on android platform, let students use 'mysise' on their android phones easily.students ca

8、n login into 'mysise' system and check their personal information, curriculum contents and so on. our system has the same functions but based on android. our system is a campus information manage system that rely on android platform. we basically finished the structure design and functions.

9、in the windows operating system platform, with the android_2.3.3_sdk development environment, using java language as the main development language, use eclipse to finish writing, using jsoup technology to analysis the webpage information, the use of multi-threading technology to ensure the program p

10、erformance, use photoshop as the ui landscaping tool , so that we complete the system on android.this article introduces our design of the system and the processing of making it happen. by the view of software design, we had done dozens of research on the basic theory, the summary of the design, and

11、 the actual processing. the whole process had followed the rules of software engineering and ui visual satisfaction so that ensure the pragmatic value of the system.key words : android;java;jsoup; mobiles目 录前言ix1 绪论11.1 项目背景11.2 mysise系统简介11.3 系统的开发意义11.4 本文的结构22 课题相关知识介绍32.1 android平台介绍32.1.1 andro

12、id系统简介32.1.2 android系统的特点32.2 jsoup简介42.3 开发工具的选用42.3.1 eclipse简介42.3.2 photoshop简介42.4 系统运行环境的搭建53 系统需求分析63.1 系统设计的总体规则63.2 可行性分析63.3 系统运行环境需求73.4 用户需求分析73.5 系统的设计目标73.6 用例分析与建模83.6.1 用例1 登录83.6.2 用例2 主菜单93.6.3 用例3 查看个人信息103.6.4 用例4 查看课程表信息103.6.5 用例5 查看考试时间表113.6.6 用例6 查看考勤信息114 系统的功能模块设计134.1 mys

13、ise系统功能结构图134.2 系统的功能分析与要求134.3 系统功能模块的设计144.3.1 个人信息模块144.3.2 课程信息模块144.3.3 考试时间模块154.3.4 考勤信息模块154.4 系统用例图165 系统具体实现逻辑处理模块实现185.1 项目结构示意图185.2 多线程技术在项目上的应用185.3 主菜单页面逻辑处理195.4 个人信息页面逻辑处理225.5 课程表页面逻辑处理265.6 考试时间页面逻辑处理295.7 考勤信息页面逻辑处理316 系统测试346.1 使用ddms346.2 系统测试346.2.1 测试用例346.2.2 单元测试366.2.3 非功能

14、性测试36设计总结37参考文献38致 谢39前言现在手机已经成为了人们生活中不可或缺的移动设备,没有手机会让人觉得寸步难行。手机不仅仅拥有传统的打电话、发短信等基本的功能,而基于智能手机强大的信息处理能力和可扩展能力,以及3g网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用。目前,得益于谷歌公司的开源策略,拥有众多优点的android系统发展迅速,各大产商推出大量搭载android系统的手机,android手机已经占据了手机市场的绝大份额。在未来几年必将大放异彩,将极大的推动整个手机操作系统甚至是互联网乃至软件行业的发展。与此同时,开源的android系统让程序员独立开发应用软

15、件成为可能。通过学习与研究,可以将pc电脑上的大量应用移植到android系统上。而学校的信息管理系统mysise系统,目前缺少对手机客户端的支持,基于此,开发一个mysise系统android手机客户端这样的想法便油然而生。综上所述,android系统是移动平台发展的大势所趋,未来将在移动领域扮演一个时代重要的角色。所以,对android平台进行相关研究并熟悉它是很有必要的,通过了解手机软件行业,进而把握未来移动互联网的发展趋势。同时可以更好的提升目前掌握的软件开发专业技能,开发出符合社会发展需求的应用软件,从而让生活更加便捷。1 绪论1.1 项目背景当今社会的生活节奏越来越快,人们对手机提

16、出的要求也越来越高,由于手机市场发展迅速,手机操作系统也出现了不同种类,现在市场上主要有四种手机操作系统,分别是windows mobile,symbian,iphone os以及谷歌的android操作系统。其中,拥有开放源代码优势的android系统有着最大的发展前景。那么能否在手机上拥有自己编写的校园信息管理系统呢?答案是肯定的,谷歌android系统就能做到。本文涉及的mysise系统就是一个基于谷歌android手机平台的校园信息管理系统。1.2 mysise系统简介mysise系统,是为xx大学定制的校园信息管理系统,主要包含有教师使用的管理系统与学生使用的信息系统,本项目主要研究

17、的是学生使用的信息管理系统部分。学生信息管理系统,每个学生都使用唯一的学号作为登录帐号,登录系统后可以查看自己的各种信息或者做需要的操作,主要功能模块有:个人信息、课程表、考试时间表、考勤信息等等。可以说,通过网络,学生就可以方便的在客户端上看到自己想要的校园信息。然而,目前mysise系统仅提供pc端windows操作系统的客户端支持。1.3 系统的开发意义目前mysise系统缺少在移动设备上的支持,显然已经不能满足当代大学生高效学习便捷生活的需求了。移动设备硬件的发展,使得手机也可以完成更多的功能需求,android系统的出现,更是让手机进入大屏触屏时代,在很多日常应用上,功能已经相当接近

18、甚至替代pc机。而开源的android系统为开发者移植pc应用程序提供了技术上的支持,因此,在pc上的mysise系统有理由也有可能被移植到android系统的移动设备上来。本课题是研究如何开发一款android平台上的mysise系统客户端,它将拥有同pc端基本一致的基础功能,同步的信息数据,界面简洁美观,操作简单方便。能为xx学生使用该系统带来更多的方便与快捷,也使得学校的教学设备的提供更为全面。1.4 本文的结构本人在本课题中承担后台逻辑处理模块的工作。论文主要结构及内容如下:第一章绪论,介绍项目背景,阐述项目开发的意义。第二章相关知识介绍,介绍项目开发的相关技术与知识。第三章系统需求分

19、析,分析系统开发的各方面需求,为设计做准备。第四章系统功能设计,介绍系统主要功能模块的设计。第五章系统功能实现,介绍系统的后台逻辑处理模块的具体实现。第六章系统测试,通过测试验收产品。2 课题相关知识介绍2.1 android平台介绍2.1.1 android系统简介android一词的本义指“机器人”,同时也是google于2007年11月5日宣布的基于linux平台的开源手机操作系统的名称。它包括操作系统、中间件、用户界面和应用程序移动电话工作所需要的全部软件,而且不存在任何以往阻碍移动产业创新的专业权障碍。目前,最新版本为android 2.3 gingerbread(姜饼)和andro

20、id 4.0 ice cream sandwich(冰激凌三明治)。虽然android是google公司推出的产品,但更贴切的说法应该是开放手机联盟的产品。开放手机联盟是由大约30家公司组成的联盟,致力于将“更好的”和“开放的”手机推向市场。其网站上的一句话很好的阐述了这一点:“android是本着成为第一个开放、完整、免费。专门针对移动设备开发的平台这一目标,完全从零开始创建的。”2.1.2 android系统的特点1、开放性。google与开放手机联盟合作开发了 android,google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的

21、移动电话软件平台,在移动产业内形成一个开放式的生态系统。2、应用程序无界限。android 上的应用程序可以通过标准 api 访问核心移动设备功能。通过互联网,应用程序可以声明它们的功能可供其他应用程序使用。3、应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。4、应用程序可以轻松地嵌入网络组件。应用程序可以轻松地嵌入html、javascript 和样式表,还可以通过 webview 显示网络内容。5、应用程序可以并行运行。android 是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引起注意

22、。2.2 jsoup简介jsoup 是一款 java 的html 解析器,可直接解析某个url地址、html文本内容。它提供了一套非常省力的api,可通过dom,css以及类似于jquery的操作方法来取出和操作数据。由于 jsoup 良好的可扩展性 api 设计,开发者可以通过选择器的定义来开发出非常强大的 html 解析功能。jsoup是基于mit协议发布的,可放心使用于商业项目。jsoup的主要功能如下:1. 从一个url,文件或字符串中解析html;2. 使用dom或css选择器来查找、取出数据;3. 可操作html元素、属性、文本;在无法得到学校信息管理系统的数据库数据的情况下,在j

23、ava编程语言中,使用jsoup来解析http网页从而获取所需要的数据,成为了开发此系统必要的技术。2.3 开发工具的选用 2.3.1 eclipse简介eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。利用它我们可以在项目的编码、整合方面极大的提高工作效率,它是功能丰富的java集成开发环境,包括了完备的编码、调试、测试和发布功能。简而言之,通过配置android必要的开发

24、组件和插件,使用java编程语言,eclipse将完整支持android程序的开发。2.3.2 photoshop简介photoshop是平面图像处理业界霸主adobe公司推出的跨越pc和mac两界首屈一指的大型图像处理软件。它功能强大,操作界面友好,得到了广大第三方开发厂家的支持,从而也赢得了众多的用户的青睐。 photoshop支持众多的图像格式,对图像的常见操作和变换做到了非常精细的程度,使得任何一款同类软件都无法望其颈背;它拥有异常丰富的插件(在photoshop中叫滤镜),熟练后您自然能体会到“只有想不到,没有做不到”的境界。2.4 系统运行环境的搭建1、安装eclipse 3.7:

25、eclipse 3.7 是一款了绿色软件,下载后直接解压即可,第一次运行时会提示配置工作空间,我选择的路径是d:eclipse_android_workspace2、安装java jdk:jdk(java development kit )是一切java应用程序的基。windows系统下,直接运行.exe文件安装,安装完成后,将安装路径下的bin文件夹路径配置到系统环境变中。3、下载android sdk:需要先下载android在windows平台上的的sdk,官方网站上下载最新2.3版本,解压后点击sdk manager.exe即可下载所需要的sdk版本。然后就要将android sdk路

26、径下的tools文件夹路径配置到系统环境变中。4、安装android开发插件adt:启动eclipse,打开help->software updates,选择available software标签,单击add site,输入“http:/dl- development tools和android ddms,全勾选,install安装,成功,提示重启eclipse。5、配置android sdk路径:重启eclipse后,点击菜单window->preference,打开配置窗口,在左边选中android,在右边输入android sdk的路径,点击ok即可。6、创建avd:为使a

27、ndroid应用程序可以在模拟器上运行,必须创建avd。在eclipse中选择window->avd manager, 点击new,填入name,选择target的api,sd card大小任意(推荐256m),选择分辨率为wvga800(480*800)。点击create avd即可完成创建avd。至此android开发环境搭建完成。3 系统需求分析3.1 系统设计的总体规则本项目的主要设计规则有:简单性:在实现系统的功能的同时,尽量让平台操作简单,这是非常重要的。美观性:在实现系统的功能的同时,尽量提供给用户较高的视觉享受和操作体验。针对性:该系统设计是xx信息管理系统的定向开发设计

28、,所以具有专业突出和很强的针对性。实用性:该系统能完成mysise系统各个子板块的信息查看功能,具有良好的实用性。3.2 可行性分析开发新系统的要求往往来自对原系统有更高的要求。由于原mysise系统仅仅支持pc端的使用,而新系统则是针对移动端的支持,故而有开发的必要。可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和理论知识得出以下五点的可行性分析:(1)技术上的可行性。由于选用的开发平台android是一个开源的平台,这意味着开发者可以获取绝大部分的开

29、源代码,并且google提供了一套成熟又全面的api,对于系统的开发,基本上不存在较大技术难点。(2)数据获取的可行性。由于开发的系统是一个校园信息管理系统,因为必须存在一个学生信息的数据库。目前的情况将导致我们无法直接得到学校提供的数据库,而我们选用了另外一个方法。因为该系统与pc端的数据一致,而pc端的使用载体是浏览器,这样我们便可以在android上使用jsoup技术解析http网页而获取所需要的信息数据。(3)运行可行性。该系统需要搭建android平台开发环境,使用avd虚拟机,并且能正常连接网络,就可以正常运行。(4)经济可行性:该平台设计只是作为本人的毕业设计,又因为本人的设计能

30、力有限,其功能还不能完善,所以没有什么经济效益可谈。(5)法律可行性:该平台是作为毕业设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。通过以上的可行性分析,我将在android平台开发环境下,采用java语言和eclipse编程工具,对该系统进行研究开发。3.3 系统运行环境需求1、开发者(pc端):系统开发工具:eclipse3.7运行平台:windows xp / windows 7 / linux运行环境:java jdk-1.6、android_2.3.3_sdk、 adt 16.01模拟器参数:android 2.3.3 avd (分辨率480*800、推荐

31、内存256mb)2、使用者(移动设备端):移动终端系统需求:android系统移动终端硬件需求:屏幕分辨率480*800、cpu主频>=640mhz、运行内存ram>=256m、可用内存rom>=64m网络需求:wifi / gsm / wcdma / cdma20003.4 用户需求分析本课题研究的校园信息管理系统mysise系统,主要面向的使用对象是xx大学xx软件学院在校大学生。每位xx在校学生都拥有mysise系统帐号(唯一的学号及密码),系统对于学生的学习及生活非常重要。大部分学生拥有android系统智能手机或者平板电脑,且习惯使用移动设备来完成可能的日常应用,当

32、然也渴望mysise系统android客户端来为其学习生活提供便捷。无论在教学区还是生活区,较好的网络覆盖为其使用网络应用提供了保障。3.5 系统的设计目标本课题的设计目标是在android平台上实现一个校园信息管理系统。要求该系统拥有美观的ui界面,供用户登录、查看信息使用,包括:查看个人信息、查看课程表、查看考试时间、查看考勤信息等功能。系统拥有快速的操作体验,代码编写使用了多线程技术,使得界面显示与网络连接、数据处理可以同时进行。系统信息数据来源取自pc端系统的网络,保证了准确与同步。3.6 用例分析与建模3.6.1 用例1 登录参与者:用户前置条件:正确学号已经存在。目的:进入系统综述

33、:1用户填写学号及密码2系统验证信息,将用户填写的信息传送到系统验证。3登录成功,显示主菜单信息。替代过程:使用该系统的用户必须先登录,若登录失败,是由于客户输入的帐号或者密码错误,系统允许客户重新输入。3.1 登录模块用例图登录入口输入学号和密码正确?登录成功进入主菜单界面是否将学号和密码送往系统核对3.2 用户登录流程图3.6.2 用例2 主菜单前置条件:登录成功。参与者:用户目的:让用户选择要执行的功能综述:本界面设置4个功能按钮,让用户选择要执行的功能,随后执行响应的操作。代替过程:如果用户注销登录,则进入用例1。3.3 主菜单功能用例图3.6.3 用例3 查看个人信息前置条件:于用例

34、2选择了个人信息按钮。参与者:用户目的:让用户查看个人信息综述:1查看基本信息:用户进入此功能页面能看到个人基本信息。2查看必修课信息:用户进入此功能页面能看到必修课信息。3查看选修课信息:用户进入此功能页面能看到选修课信息。代替过程:1. 该界面下方设置3个功能按钮,可选择查看需要的信息。2. 如果用户返回,则进入用例2。3.4 个人信息功能用例图3.6.4 用例4 查看课程表信息前置条件:于用例2选择了课程表按钮。参与者:用户目的:让用户查看课程表信息综述:查看当天课程表信息代替过程:1. 该界面下方设置5个功能按钮,可选择查看星期一到星期五的课程信息。2. 如果用户返回,则进入用例2。3

35、.5 课程信息功能用例图3.6.5 用例5 查看考试时间表前置条件:于用例2选择了考试时间按钮。参与者:用户目的:让用户查看考试时间表综述:查看目前的考试时间安排代替过程:如果用户返回,则进入用例2。3.6 考试时间功能用例图3.6.6 用例6 查看考勤信息前置条件:于用例2选择了考勤信息按钮。参与者:用户目的:让用户查看考勤信息综述:查看当前学年学期的考勤信息代替过程:如果用户返回,则进入用例2。3.7 考勤信息功能用例图4 系统的功能模块设计4.1 mysise系统功能结构图登录界面loginactivity主菜单界面mainactivity个人信息infoactivity课程表curri

36、cactivity考试时间timeactivity考勤信息attendactivity网络连接customerhttpclient显示考试时间显示考勤信息获取当天日期显示当天课程显示基本信息必修课信息按钮选修课信息按钮基本信息按钮星期一按钮星期二按钮星期三按钮星期四按钮星期五按钮显示响应信息显示课程信息注销登录退出程序4.1 系统功能结构示意图4.2 系统的功能分析与要求经过前期的思考和研究,总结出该系统需要完成的一些具体功能,分析如下:1、能完成网络连接并实现真实帐号登录2、能完成对板块页面的解析并获取需要的信息数据,通过后台逻辑处理,实现查看信息的显示。3、使用多线程同步处理前台界面的刷新

37、和后台网络处理。4、可考虑添加的周边功能,例如xx新闻、xx地图。4.3 系统功能模块的设计4.3.1 个人信息模块进入个人信息模块刷新ui界面网络连接解析网页获取基本信息功能按钮解析网页获取必修课信息解析网页获取选修课信息主线程子线程4.2 个人信息模块流程图4.3.2 课程信息模块进入课程信息模块刷新ui界面网络连接解析网页获取课程表功能按钮主线程子线程获取日期周末?无课程取得数据判断星期几是否4.3 课程信息模块流程图4.3.3 考试时间模块进入考试时间模块刷新ui界面网络连接解析网页主线程子线程有考试课程?获取考试时间表无考试课程否是4.4 考试时间模块流程图4.3.4 考勤信息模块进

38、入考勤信息模块刷新ui界面网络连接解析网页主线程子线程有课程?获取考勤信息无考勤信息否是4.5 考勤信息模块流程图4.4 系统用例图4.6 用户前台系统用例图4.7 程序后台系统用例图5 系统具体实现逻辑处理模块实现5.1 项目结构示意图 5.1 项目结构示意图5.2 多线程技术在项目上的应用在跳转到每一个功能页面的时候,因为单线程的顺序逻辑执行,会出现这样的情况:只有执行完前一句代码才会执行下一句代码。而我们的程序表现出来给用户的页面信息又是必须先从网络获取数据后再表现出来,这样的网络工作相对来说是比较耗时的,同时也就会使程序跳转后出现黑屏的情况,只有等待网络工作处理完后才出现ui界面。有为

39、了让程序避免处理网络工作这样耗时比较长的操作而导致页面刷新缓慢的尴尬现象,我们使用了多线程来分开处理ui刷新跟网络操作。具体代码如下:/ 创建子线程来处理网络工作thread t = new thread() public void run() / 网络工作network();/ 启动ui线程handler.post(updateresults); ;t.start();/ 启动子线程 / ui线程 runnable updateresults = new runnable() public void run() updateui(); ; / 更新ui public void updateu

40、i() / 网络工作具体实现 public void network() 虽然取得数据后的ui刷新还是必须等待网络工作network()的完成,但那已经是子线程的事了,主线程还是可以顺利地执行下去,先将界面展现给用户,给用户一种程序响应速度很快的感觉。5.3 主菜单页面逻辑处理系统通过前面的网络连接跟登录验证之后(网络连接模块为同组成员饶泽华的工作),便来到了主菜单界面。这个部分的内容主要使用了4个按钮,分别对应了个人信息、课程表、考试时间、考勤信息这4个功能。代码的编写主要是使用之前登录后的httpclient保持网络会话,然后连接“:7001 /sise/module/student_st

41、ates/student_select_class/main.jsp ”来获取 html页面信息,这部分的重点工作在于通过jsoup解析网页,获得以上4个功能的相应http地址,以供后面的操作。例如个人信息部分,网页源代码是:5.2 主菜单页面源码(个人信息部分)图可以看到,用红色框选出来的这段代码,正是一个jsp页面的地址,而其实有用部分则是在href= ' 到 " 之间的这一段,可以看出是一个相对地址,通过试验,在前面加上:7001则可以成为一个绝对地址,让后续的操作得以实现。用jsoup解析网页来获取href= ' 到 " 之间的这一段,首先要定位到带

42、有onclick属性的td标签,再得到onclick的属性值,具体代码实现为:/ 抽出td标签中的onclick属性的值public string getlink(int i) element link = doc.select("tdonclick").get(i);return link.attr("onclick");为了减少代码的重复,把这部分的实现写成一个方法,只需要传入表示顺序的i值即可得到相应的内容。然后还发现,我们只是得到onclick的属性值,为了得到href= ' 到 " 之间的这一段相对地址,还需要对每个结果做一个

43、比较精确的截取,代码实现如下:string infolinkstr = getlink(0);infourl = baseurl + infolinkstr.substring(54, infolinkstr.length() - 1);到了这一步,infourl才是真正的绝对地址,获取个人信息模块的http地址工作才算完成。同理,可以取得其他三个子功能模块的http地址,具体如下:1、课程表部分:5.3 主菜单页面源码(课程表部分)图定位代码及截取代码,最终取得curriurl:string curriclinkstr = getlink(1);curricurl = baseurl +cu

44、rriclinkstr.substring(40, curriclinkstr.length()-1);2、考试时间表部分:5.4 主菜单页面源码(考试时间表部分)图定位代码及截取代码,最终取得timeurl:string timelinkstr = getlink(2);timeurl = baseurl + timelinkstr.substring(49, timelinkstr.length() - 1);3、考勤信息部分:5.5 主菜单页面源码(考勤信息部分)图定位代码及截取代码,最终取得attendurl:string attendlinkstr = getlink(3);atte

45、ndurl = baseurl + attendlinkstr.substring(49,attendlinkstr.length()-1);5.4 个人信息页面逻辑处理个人信息页面的逻辑处理,主要工作还是使用jsoup技术解析网页,先将基本信息的数据取得,显示出来。例如获取学号信息,页面源代码如下:5.6 个人信息页面源码(学号部分)图学号信息是在div标签中的文本,具体实现代码如下:/ 抽出div标签中的文本public string getdiv(int i) element div = doc.select("div").get(i);return div.text

46、() + "n"为了减少代码的重复,把这部分的实现写成一个方法,只需要传入表示顺序的i值即可得到相应的内容。取得学号的代码:string num = "学号:" + getdiv(2);同理,个人基本信息的其他信息数据也是通过定位,调用getdiv方法来获得,具体实现代码如下:5.7 个人信息页面源码(姓名部分)图string name = "姓名:" + getdiv(3);string grade = "年级:" + getdiv(4);string special = "专业:" + ge

47、tdiv(5);string identity = "身份证:" + getdiv(6);string email = "电子邮箱:" + getdiv(7);string teacher = "班主任:" + getdiv(8);string counselor = "辅导员:" + getdiv(9);string required = "必修课已获得学分:" + getdiv(17);string elective = "选修课已获得学分:" + getdiv(22);

48、string accumulate = "累计已获得学分:" + getdiv(26);string indispensable = "本专业本年级毕业需修满学分:" + getdiv(34);实际显示效果:5.8 基本信息界面图本子功能模块还具备了查看必修课信息和选修课信息的功能,我在界面下方设置了3个按钮,分别设置了对应的操作,会将必修课信息和选修课信息也显示出来,响应速度非常快。当然了,数据的取得还是要解析页面,具体如下:例如取得必修课信息数据,网页源代码是:5.9 个人信息页面源码(必修课信息部分)图实际上,必修课信息是存放在页面第7个table

49、下的,我通过遍历第7个table标签下的tr标签、td标签可以取得所有必修课信息,而在手机屏幕上显示,我觉得有一些相对鸡肋的信息可以不显示出来,因此只选用了课程代码、课程名称和成绩,这样3个信息已经足够代表一门课程,让界面简洁易看,也让处理速度更快。具体实现代码:/ 解析网页,取得必修课信息public void getrequired() int i = 0;string s = new string10;/ 获得第7个table标签element table = doc.select("table").get(6);/ 获得第7个table标签下的tr标签element

50、s trs = table.select("tr");if (trs != null) / 遍历第5个table标签下的tr标签for (element tr : trs) / 获得第5个table标签下的tr标签下的td标签elements tds = tr.select("td");if (tds != null) / 遍历第5个table标签下的tr标签下的td标签for (element td : tds) / 将每个td标签的文本存入字符串数组ssi = td.text();i+;if (s1 != null) / 按照格式输出required

51、str = requiredstr + s1 + ":" + s2 + " 成绩:" + s8 + "n"i = 0;同理,选修课信息的数据取得,也跟必修课是一样的,只不过必修课信息是存放在页面第10个table标签下的。具体代码实现如下:/ 解析网页,取得选修课信息public void getelective() int i = 0;string s = new string9;/ 获得第10个table标签下element table = doc.select("table").get(9);/ 获得第10个

52、table标签下的tr标签elements trs = table.select("tr");if (trs != null) / 遍历第10个table标签下的tr标签for (element tr : trs) / 获得第10个table标签下的tr标签下的td标签elements tds = tr.select("td");if (tds != null) / 遍历第10个table标签下的tr标签下的td标签for (element td : tds) / 将每个td标签的文本存入字符串数组ssi = td.text();i+;if (s1 !=

53、 null) / 按照格式输出electivestr = electivestr + s0 + ":" + s1 + " 成绩:"+ s7 + "n"i = 0;实际显示效果:5.10 必修课信息与选修课信息界面图5.5 课程表页面逻辑处理课程表页面的逻辑处理,主要工作还是使用jsoup技术解析网页, 获取完整的课程表,然后获取当天的日期,将当天的课程信息显示出来。取得系统当天日期,网页源代码是:5.11 课程表页面源码(日期信息部分)图只需要找到带有face属性的font标签即可,实现代码:/ 取得font标签中含有face属性的文

54、本内容,即是当天日期element font = doc.select("fontface").first();string date = font.text();这样,字符串data就是我们需要的当天日期。取得完整的课程表,网页源代码是:5.12 课程表页面源码(课程表部分)图先仔细观察源代码,课程表信息是存放在页面第7个table中的,解读存放内容的规则:横向看,第一行是标题,可以得知每行8个单元格的内容是对应一周7天的课程信息,第二行起是每一个时间段的课程;纵向看,第一列是时间段标题,然后后面7列则是对应了一周7天。这样的一个表格,从解析上来讲,应该从横向来解析,因为每一行是一个tr标签,而每一行的tr标签包含了8个td标签,即每一行的每个单元格。在每取得一行数据后,使用5个字符串数组来存放周一到周五的课程数据,这样再解析完成后,我们所需要的课程信息就在这5个字符串数组中了,且顺序对应了每一天的每一个时间段。具体代码实现如下:/ 解析网页,取得所有课程信息public void getcurrics() int i = 0;int j = 0;stri

温馨提示

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

评论

0/150

提交评论