还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
毕业论文课题名称校园信息管理平台下的Android客户端的设计与实现摘要 伴随着3G时代的到来,移动终端所能完成的功能在各行各业日益广泛和深入,移动便携的概念早已深入人心,让人们更加的依赖移动终端本课题来源于校园内对信息管理系统在移动终端便捷使用的需求传统学校信息管理系统是采取PC机通过局域网连接服务器端的形式进行操作,缺少对移动端的支持,学生无法随时随地使用该系统因此本应用基于Android移动平台,让学生可以通过Android移动终端更方便快捷地使用该系统学生在XX可以通过浏览器登录Mysise查阅自己个人信息、课程表等内容,本系统是通过Android移动客户端达到同样的效果本系统是基于Android平台开发的一个XX校园信息管理系统,主要完成软件的整体设计以及各个功能的实现在Windows操作系统平台下,搭载Android_
2.
3.3_SDK开发环境,采用JAVA语言作为主要开发语言,使用Eclipse完成后台代码的编写,使用JSoup技术解析网页获取信息数据,运用多线程技术保证程序性能,结合Photoshop为界面UI美化,从而完成的一个Android客户端本论文是以系统的开发为线,介绍了此系统的设计与实现过程,从软件设计的角度对系统的理论基础、系统概要设计以及系统具体实现进行了详细研究整个过程严格遵循了软件工程的思想和UI视觉享受的理念,保证了系统的实用价值关键词 Android;Java;JSoup;移动终端AbstractWiththeageof3Giscomingthefunctionsthatmobileshavebecomemorepopularandwidespread.Peoplehadgotusedtotheconvenienceofmobilesandbecomemorerelyonit.OurprojectisdependontheexistentcampusinformationmanagesystemMySise.TheoriginalsystemisbasedonWindowsoperatingsystemPCistheonlyplatformwecanusedtologinintothesystem.Studentscouldnotusethesystemeverywhere.SowemakethesoftwarethatrunsonAndroidplatformletstudentsuseMySiseontheirAndroidPhoneseasily.StudentscanloginintoMySisesystemandchecktheirpersonalinformationcurriculumcontentsandsoon.OursystemhasthesamefunctionsbutbasedonAndroid.OursystemisacampusinformationmanagesystemthatrelyonAndroidplatform.Webasicallyfinishedthestructuredesignandfunctions.IntheWindowsoperatingsystemplatformwiththeAndroid_
2.
3.3_SDKdevelopmentenvironmentusingJAVAlanguageasthemaindevelopmentlanguageuseEclipsetofinishwritingusingJSouptechnologytoanalysisthewebpageinformationtheuseofmulti-threadingtechnologytoensuretheprogramperformanceusePhotoshopastheUIlandscapingtoolsothatwecompletethesystemonAndroid.Thisarticleintroducesourdesignofthesystemandtheprocessingofmakingithappen.Bytheviewofsoftwaredesignwehaddonedozensofresearchonthebasictheorythesummaryofthedesignandtheactualprocessing.ThewholeprocesshadfollowedtherulesofsoftwareengineeringandUIvisualsatisfactionsothatensurethepragmaticvalueofthesystem.KeyWords Android;Java;JSoup;Mobiles目录TOC\o1-3\h\z\u前 言IX1绪论
11.1项目背景
11.2Mysise系统简介
11.3系统的开发意义
11.4本文的结构22课题相关知识介绍
32.1Android平台介绍
32.
1.1Android系统简介
32.
1.2Android系统的特点
32.2JSoup简介
42.3开发工具的选用
42.
3.1Eclipse简介
42.
3.2Photoshop简介
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.1Mysise系统功能结构图
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使用DDMS
346.2系统测试
346.
2.1测试用例
346.
2.2单元测试
366.
2.3非功能性测试36设计总结37参考文献38致谢39前 言现在手机已经成为了人们生活中不可或缺的移动设备,没有手机会让人觉得寸步难行手机不仅仅拥有传统的打电话、发短信等基本的功能,而基于智能手机强大的信息处理能力和可扩展能力,以及3G网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用目前,得益于谷歌公司的开源策略,拥有众多优点的Android系统发展迅速,各大产商推出大量搭载Android系统的手机,Android手机已经占据了手机市场的绝大份额在未来几年必将大放异彩,将极大的推动整个手机操作系统甚至是互联网乃至软件行业的发展与此同时,开源的Android系统让程序员独立开发应用软件成为可能通过学习与研究,可以将PC电脑上的大量应用移植到Android系统上而学校的信息管理系统——Mysise系统,目前缺少对手机客户端的支持,基于此,开发一个Mysise系统Android手机客户端这样的想法便油然而生综上所述,Android系统是移动平台发展的大势所趋,未来将在移动领域扮演一个时代重要的角色所以,对Android平台进行相关研究并熟悉它是很有必要的,通过了解手机软件行业,进而把握未来移动互联网的发展趋势同时可以更好的提升目前掌握的软件开发专业技能,开发出符合社会发展需求的应用软件,从而让生活更加便捷1绪论
1.1项目背景当今社会的生活节奏越来越快,人们对手机提出的要求也越来越高,由于手机市场发展迅速,手机操作系统也出现了不同种类,现在市场上主要有四种手机操作系统,分别是Windowsmobile,Symbian,Iphoneos以及谷歌的Android操作系统其中,拥有开放源代码优势的Android系统有着最大的发展前景那么能否在手机上拥有自己编写的校园信息管理系统呢?答案是肯定的,谷歌Android系统就能做到本文涉及的Mysise系统就是一个基于谷歌Android手机平台的校园信息管理系统
1.2Mysise系统简介Mysise系统,是为XX大学定制的校园信息管理系统,主要包含有教师使用的管理系统与学生使用的信息系统,本项目主要研究的是学生使用的信息管理系统部分学生信息管理系统,每个学生都使用唯一的学号作为登录帐号,登录系统后可以查看自己的各种信息或者做需要的操作,主要功能模块有个人信息、课程表、考试时间表、考勤信息……等等可以说,通过网络,学生就可以方便的在客户端上看到自己想要的校园信息然而,目前Mysise系统仅提供PC端Windows操作系统的客户端支持
1.3系统的开发意义目前Mysise系统缺少在移动设备上的支持,显然已经不能满足当代大学生高效学习便捷生活的需求了移动设备硬件的发展,使得手机也可以完成更多的功能需求,Android系统的出现,更是让手机进入大屏触屏时代,在很多日常应用上,功能已经相当接近甚至替代PC机而开源的Android系统为开发者移植PC应用程序提供了技术上的支持,因此,在PC上的Mysise系统有理由也有可能被移植到Android系统的移动设备上来本课题是研究如何开发一款Android平台上的Mysise系统客户端,它将拥有同PC端基本一致的基础功能,同步的信息数据,界面简洁美观,操作简单方便能为XX学生使用该系统带来更多的方便与快捷,也使得学校的教学设备的提供更为全面
1.4本文的结构本人在本课题中承担后台逻辑处理模块的工作论文主要结构及内容如下第一章绪论,介绍项目背景,阐述项目开发的意义第二章相关知识介绍,介绍项目开发的相关技术与知识第三章系统需求分析,分析系统开发的各方面需求,为设计做准备第四章系统功能设计,介绍系统主要功能模块的设计第五章系统功能实现,介绍系统的后台逻辑处理模块的具体实现第六章系统测试,通过测试验收产品2课题相关知识介绍
2.1Android平台介绍
2.
1.1Android系统简介Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称它包括操作系统、中间件、用户界面和应用程序——移动电话工作所需要的全部软件,而且不存在任何以往阻碍移动产业创新的专业权障碍目前,最新版本为Android
2.3Gingerbread(姜饼)和Android
4.0IceCreamSandwich(冰激凌三明治)虽然Android是Google公司推出的产品,但更贴切的说法应该是开放手机联盟的产品开放手机联盟是由大约30家公司组成的联盟,致力于将“更好的”和“开放的”手机推向市场其网站上的一句话很好的阐述了这一点“Android是本着成为第一个开放、完整、免费专门针对移动设备开发的平台这一目标,完全从零开始创建的”
2.
1.2Android系统的特点
1、开放性Google与开放手机联盟合作开发了Android,Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统
2、应用程序无界限Android上的应用程序可以通过标准API访问核心移动设备功能通过互联网,应用程序可以声明它们的功能可供其他应用程序使用
3、应用程序是在平等的条件下创建的移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件
4、应用程序可以轻松地嵌入网络组件应用程序可以轻松地嵌入HTML、JavaScript和样式表,还可以通过WebView显示网络内容
5、应用程序可以并行运行Android是一种完整的多任务环境,应用程序可以在其中并行运行在后台运行时,应用程序可以生成通知以引起注意
2.2JSoup简介JSoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据由于JSoup良好的可扩展性API设计,开发者可以通过选择器的定义来开发出非常强大的HTML解析功能JSoup是基于MIT协议发布的,可放心使用于商业项目JSoup的主要功能如下
1.从一个URL,文件或字符串中解析HTML;
2.使用DOM或CSS选择器来查找、取出数据;
3.可操作HTML元素、属性、文本;在无法得到学校信息管理系统的数据库数据的情况下,在JAVA编程语言中,使用JSoup来解析http网页从而获取所需要的数据,成为了开发此系统必要的技术
2.3开发工具的选用
2.
3.1Eclipse简介Eclipse是一个开放源代码的、基于Java的可扩展开发平台就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)利用它我们可以在项目的编码、整合方面极大的提高工作效率,它是功能丰富的Java集成开发环境,包括了完备的编码、调试、测试和发布功能简而言之,通过配置Android必要的开发组件和插件,使用Java编程语言,Eclipse将完整支持Android程序的开发
2.
3.2Photoshop简介Photoshop是平面图像处理业界霸主Adobe公司推出的跨越PC和MAC两界首屈一指的大型图像处理软件它功能强大,操作界面友好,得到了广大第三方开发厂家的支持,从而也赢得了众多的用户的青睐Photoshop支持众多的图像格式,对图像的常见操作和变换做到了非常精细的程度,使得任何一款同类软件都无法望其颈背;它拥有异常丰富的插件在Photoshop中叫滤镜,熟练后您自然能体会到“只有想不到,没有做不到”的境界
2.4系统运行环境的搭建
1、安装Eclipse
3.7Eclipse
3.7是一款了绿色软件,下载后直接解压即可,第一次运行时会提示配置工作空间,我选择的路径是D:\Eclipse_Android_Workspace
2、安装JavaJDK JDKJavaDevelopmentKit是一切Java应用程序的基Windows系统下,直接运行.exe文件安装,安装完成后,将安装路径下的bin文件夹路径配置到系统环境变中
3、下载AndroidSDK需要先下载Android在Windows平台上的的SDK,官方网站上下载最新
2.3版本,解压后点击SDKManager.exe即可下载所需要的SDK版本然后就要将AndroidSDK路径下的tools文件夹路径配置到系统环境变中
4、安装Android开发插件ADT启动Eclipse,打开Help-SoftwareUpdates,选择AvailableSoftware标签,单击AddSite…,输入“http://dl-ssl.google.com/android/eclipse/”然后就能看到可安装的插件,看到有AndroidDevelopmentTools和AndroidDDMS,全勾选,install安装,成功,提示重启Eclipse
5、配置AndroidSDK路径重启Eclipse后,点击菜单Window-Preference,打开配置窗口,在左边选中Android,在右边输入AndroidSDK的路径,点击OK即可
6、创建AVD为使Android应用程序可以在模拟器上运行,必须创建AVD在Eclipse中选择Window-AVDManager点击new,填入Name,选择Target的API,SDCard大小任意(推荐256M),选择分辨率为WVGA800(480*800)点击CreateAVD即可完成创建AVD至此Android开发环境搭建完成3系统需求分析
3.1系统设计的总体规则本项目的主要设计规则有简单性在实现系统的功能的同时,尽量让平台操作简单,这是非常重要的美观性在实现系统的功能的同时,尽量提供给用户较高的视觉享受和操作体验针对性该系统设计是XX信息管理系统的定向开发设计,所以具有专业突出和很强的针对性实用性该系统能完成Mysise系统各个子板块的信息查看功能,具有良好的实用性
3.2可行性分析开发新系统的要求往往来自对原系统有更高的要求由于原Mysise系统仅仅支持PC端的使用,而新系统则是针对移动端的支持,故而有开发的必要可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和理论知识得出以下五点的可行性分析
(1)技术上的可行性由于选用的开发平台Android是一个开源的平台,这意味着开发者可以获取绝大部分的开源代码,并且Google提供了一套成熟又全面的API,对于系统的开发,基本上不存在较大技术难点
(2)数据获取的可行性由于开发的系统是一个校园信息管理系统,因为必须存在一个学生信息的数据库目前的情况将导致我们无法直接得到学校提供的数据库,而我们选用了另外一个方法因为该系统与PC端的数据一致,而PC端的使用载体是浏览器,这样我们便可以在Android上使用JSoup技术解析HTTP网页而获取所需要的信息数据
(3)运行可行性该系统需要搭建Android平台开发环境,使用AVD虚拟机,并且能正常连接网络,就可以正常运行
(4)经济可行性该平台设计只是作为本人的毕业设计,又因为本人的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈
(5)法律可行性该平台是作为毕业设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的通过以上的可行性分析,我将在Android平台开发环境下,采用Java语言和Eclipse编程工具,对该系统进行研究开发
3.3系统运行环境需求
1、开发者(PC端)系统开发工具Eclipse
3.7运行平台WindowsXP/Windows7/Linux运行环境Javajdk-
1.
6、Android_
2.
3.3_SDK、ADT
16.01模拟器参数Android
2.
3.3AVD(分辨率480*
800、推荐内存256MB)
2、使用者(移动设备端)移动终端系统需求Android系统移动终端硬件需求屏幕分辨率480*
800、CPU主频=640MHz、运行内存RAM=256M、可用内存ROM=64M网络需求WIFI/GSM/WCDMA/CDMA
20003.4用户需求分析本课题研究的校园信息管理系统——Mysise系统,主要面向的使用对象是XX大学XX软件学院在校大学生每位XX在校学生都拥有Mysise系统帐号(唯一的学号及密码),系统对于学生的学习及生活非常重要大部分学生拥有Android系统智能手机或者平板电脑,且习惯使用移动设备来完成可能的日常应用,当然也渴望Mysise系统Android客户端来为其学习生活提供便捷无论在教学区还是生活区,较好的网络覆盖为其使用网络应用提供了保障
3.5系统的设计目标本课题的设计目标是在Android平台上实现一个校园信息管理系统要求该系统拥有美观的UI界面,供用户登录、查看信息使用,包括查看个人信息、查看课程表、查看考试时间、查看考勤信息等功能系统拥有快速的操作体验,代码编写使用了多线程技术,使得界面显示与网络连接、数据处理可以同时进行系统信息数据来源取自PC端系统的网络,保证了准确与同步
3.6用例分析与建模
3.
6.1用例1登录参与者用户前置条件正确学号已经存在目的进入系统综述1.用户填写学号及密码2.系统验证信息,将用户填写的信息传送到系统验证3.登录成功,显示主菜单信息替代过程使用该系统的用户必须先登录,若登录失败,是由于客户输入的帐号或者密码错误,系统允许客户重新输入
3.1登录模块用例图
3.2用户登录流程图
3.
6.2用例2主菜单前置条件登录成功参与者用户目的让用户选择要执行的功能综述本界面设置4个功能按钮,让用户选择要执行的功能,随后执行响应的操作代替过程如果用户注销登录,则进入用例
13.3主菜单功能用例图
3.
6.3用例3查看个人信息前置条件于用例2选择了个人信息按钮参与者用户目的让用户查看个人信息综述1.查看基本信息用户进入此功能页面能看到个人基本信息2.查看必修课信息用户进入此功能页面能看到必修课信息3.查看选修课信息用户进入此功能页面能看到选修课信息代替过程
1.该界面下方设置3个功能按钮,可选择查看需要的信息
2.如果用户返回,则进入用例
23.4个人信息功能用例图
3.
6.4用例4查看课程表信息前置条件于用例2选择了课程表按钮参与者用户目的让用户查看课程表信息综述查看当天课程表信息代替过程
1.该界面下方设置5个功能按钮,可选择查看星期一到星期五的课程信息
2.如果用户返回,则进入用例
23.5课程信息功能用例图
3.
6.5用例5查看考试时间表前置条件于用例2选择了考试时间按钮参与者用户目的让用户查看考试时间表综述查看目前的考试时间安排代替过程如果用户返回,则进入用例
23.6考试时间功能用例图
3.
6.6用例6查看考勤信息前置条件于用例2选择了考勤信息按钮参与者用户目的让用户查看考勤信息综述查看当前学年学期的考勤信息代替过程如果用户返回,则进入用例
23.7考勤信息功能用例图4系统的功能模块设计
4.1Mysise系统功能结构图
4.1系统功能结构示意图
4.2系统的功能分析与要求经过前期的思考和研究,总结出该系统需要完成的一些具体功能,分析如下
1、能完成网络连接并实现真实帐号登录
2、能完成对板块页面的解析并获取需要的信息数据,通过后台逻辑处理,实现查看信息的显示
3、使用多线程同步处理前台界面的刷新和后台网络处理
4、可考虑添加的周边功能,例如XX新闻、XX地图
4.3系统功能模块的设计
4.
3.1个人信息模块
4.2个人信息模块流程图
4.
3.2课程信息模块
4.3课程信息模块流程图
4.
3.3考试时间模块
4.4考试时间模块流程图
4.
3.4考勤信息模块
4.5考勤信息模块流程图
4.4系统用例图
4.6用户前台系统用例图
4.7程序后台系统用例图5系统具体实现—逻辑处理模块实现
5.1项目结构示意图
5.1项目结构示意图
5.2多线程技术在项目上的应用在跳转到每一个功能页面的时候,因为单线程的顺序逻辑执行,会出现这样的情况只有执行完前一句代码才会执行下一句代码而我们的程序表现出来给用户的页面信息又是必须先从网络获取数据后再表现出来,这样的网络工作相对来说是比较耗时的,同时也就会使程序跳转后出现黑屏的情况,只有等待网络工作处理完后才出现UI界面有为了让程序避免处理网络工作这样耗时比较长的操作而导致页面刷新缓慢的尴尬现象,我们使用了多线程来分开处理UI刷新跟网络操作具体代码如下//创建子线程来处理网络工作Threadt=newThread{publicvoidrun{//网络工作netWork;//启动UI线程handler.postupdateResults;}};t.start;//启动子线程//UI线程RunnableupdateResults=newRunnable{publicvoidrun{updateUI;}};//更新UIpublicvoidupdateUI{……}//网络工作具体实现publicvoidnetWork{……}虽然取得数据后的UI刷新还是必须等待网络工作netWork的完成,但那已经是子线程的事了,主线程还是可以顺利地执行下去,先将界面展现给用户,给用户一种程序响应速度很快的感觉
5.3主菜单页面逻辑处理系统通过前面的网络连接跟登录验证之后(网络连接模块为同组成员饶泽华的工作),便来到了主菜单界面这个部分的内容主要使用了4个按钮,分别对应了个人信息、课程表、考试时间、考勤信息这4个功能代码的编写主要是使用之前登录后的HttpClient保持网络会话,然后连接“http://class.sise.com.cn:7001/sise/module/student_states/student_select_class/main.jsp”来获取html页面信息,这部分的重点工作在于通过JSoup解析网页,获得以上4个功能的相应http地址,以供后面的操作例如个人信息部分,网页源代码是
5.2主菜单页面源码(个人信息部分)图可以看到,用红色框选出来的这段代码,正是一个jsp页面的地址,而其实有用部分则是在href=到之间的这一段,可以看出是一个相对地址,通过试验,在前面加上http://class.sise.com.cn:7001则可以成为一个绝对地址,让后续的操作得以实现用JSoup解析网页来获取href=到之间的这一段,首先要定位到带有onclick属性的td标签,再得到onclick的属性值,具体代码实现为//抽出td标签中的onclick属性的值publicStringgetLinkinti{Elementlink=doc.selecttd[onclick].geti;returnlink.attronclick;}为了减少代码的重复,把这部分的实现写成一个方法,只需要传入表示顺序的i值即可得到相应的内容然后还发现,我们只是得到onclick的属性值,为了得到href=到之间的这一段相对地址,还需要对每个结果做一个比较精确的截取,代码实现如下StringinfoLinkStr=getLink0;infoUrl=baseUrl+infoLinkStr.substring54infoLinkStr.length-1;到了这一步,infoUrl才是真正的绝对地址,获取个人信息模块的HTTP地址工作才算完成同理,可以取得其他三个子功能模块的HTTP地址,具体如下
1、课程表部分
5.3主菜单页面源码(课程表部分)图定位代码及截取代码,最终取得curriUrl StringcurricLinkStr=getLink1;curricUrl=baseUrl+curricLinkStr.substring40curricLinkStr.length-1;
2、考试时间表部分
5.4主菜单页面源码(考试时间表部分)图定位代码及截取代码,最终取得timeUrl StringtimeLinkStr=getLink2;timeUrl=baseUrl+timeLinkStr.substring49timeLinkStr.length-1;
3、考勤信息部分
5.5主菜单页面源码(考勤信息部分)图定位代码及截取代码,最终取得attendUrl StringattendLinkStr=getLink3;attendUrl=baseUrl+attendLinkStr.substring49attendLinkStr.length-1;
5.4个人信息页面逻辑处理个人信息页面的逻辑处理,主要工作还是使用JSoup技术解析网页,先将基本信息的数据取得,显示出来例如获取学号信息,页面源代码如下
5.6个人信息页面源码(学号部分)图学号信息是在div标签中的文本,具体实现代码如下//抽出div标签中的文本publicStringgetDivinti{Elementdiv=doc.selectdiv.geti;returndiv.text+\n;}为了减少代码的重复,把这部分的实现写成一个方法,只需要传入表示顺序的i值即可得到相应的内容取得学号的代码Stringnum=学号+getDiv2;同理,个人基本信息的其他信息数据也是通过定位,调用getDiv方法来获得,具体实现代码如下
5.7个人信息页面源码(姓名部分)图Stringname=姓名+getDiv3;Stringgrade=年级+getDiv4;Stringspecial=专业+getDiv5;Stringidentity=身份证+getDiv6;Stringemail=电子邮箱+getDiv7;Stringteacher=班主任+getDiv8;Stringcounselor=辅导员+getDiv9;Stringrequired=必修课已获得学分+getDiv17;Stringelective=选修课已获得学分+getDiv22;Stringaccumulate=累计已获得学分+getDiv26;Stringindispensable=本专业本年级毕业需修满学分+getDiv34;实际显示效果
5.8基本信息界面图本子功能模块还具备了查看必修课信息和选修课信息的功能,我在界面下方设置了3个按钮,分别设置了对应的操作,会将必修课信息和选修课信息也显示出来,响应速度非常快当然了,数据的取得还是要解析页面,具体如下例如取得必修课信息数据,网页源代码是
5.9个人信息页面源码(必修课信息部分)图实际上,必修课信息是存放在页面第7个table下的,我通过遍历第7个table标签下的tr标签、td标签可以取得所有必修课信息,而在手机屏幕上显示,我觉得有一些相对鸡肋的信息可以不显示出来,因此只选用了课程代码、课程名称和成绩,这样3个信息已经足够代表一门课程,让界面简洁易看,也让处理速度更快具体实现代码//解析网页,取得必修课信息publicvoidgetRequired{inti=0;Strings[]=newString
[10];//获得第7个table标签Elementtable=doc.selecttable.get6;//获得第7个table标签下的tr标签Elementstrs=table.selecttr;iftrs!=null{//遍历第5个table标签下的tr标签forElementtr:trs{//获得第5个table标签下的tr标签下的td标签Elementstds=tr.selecttd;iftds!=null{//遍历第5个table标签下的tr标签下的td标签forElementtd:tds{//将每个td标签的文本存入字符串数组ss[i]=td.text;i++;}ifs
[1]!=null{//按照格式输出requiredStr=requiredStr+s
[1]++s
[2]+[成绩+s
[8]+]\n;}i=0;}}}}同理,选修课信息的数据取得,也跟必修课是一样的,只不过必修课信息是存放在页面第10个table标签下的具体代码实现如下//解析网页,取得选修课信息publicvoidgetElective{inti=0;Strings[]=newString
[9];//获得第10个table标签下Elementtable=doc.selecttable.get9;//获得第10个table标签下的tr标签Elementstrs=table.selecttr;iftrs!=null{//遍历第10个table标签下的tr标签forElementtr:trs{//获得第10个table标签下的tr标签下的td标签Elementstds=tr.selecttd;iftds!=null{//遍历第10个table标签下的tr标签下的td标签forElementtd:tds{//将每个td标签的文本存入字符串数组ss[i]=td.text;i++;}ifs
[1]!=null{//按照格式输出electiveStr=electiveStr+s
[0]++s
[1]+[成绩+s
[7]+]\n;}i=0;}}}}实际显示效果
5.10必修课信息与选修课信息界面图
5.5课程表页面逻辑处理课程表页面的逻辑处理,主要工作还是使用JSoup技术解析网页,获取完整的课程表,然后获取当天的日期,将当天的课程信息显示出来取得系统当天日期,网页源代码是
5.11课程表页面源码(日期信息部分)图只需要找到带有face属性的font标签即可,实现代码//取得font标签中含有face属性的文本内容,即是当天日期Elementfont=doc.selectfont[face].first;Stringdate=font.text;这样,字符串data就是我们需要的当天日期取得完整的课程表,网页源代码是
5.12课程表页面源码(课程表部分)图先仔细观察源代码,课程表信息是存放在页面第7个table中的,解读存放内容的规则横向看,第一行是标题,可以得知每行8个单元格的内容是对应一周7天的课程信息,第二行起是每一个时间段的课程;纵向看,第一列是时间段标题,然后后面7列则是对应了一周7天这样的一个表格,从解析上来讲,应该从横向来解析,因为每一行是一个tr标签,而每一行的tr标签包含了8个td标签,即每一行的每个单元格在每取得一行数据后,使用5个字符串数组来存放周一到周五的课程数据,这样再解析完成后,我们所需要的课程信息就在这5个字符串数组中了,且顺序对应了每一天的每一个时间段具体代码实现如下//解析网页,取得所有课程信息publicvoidgetCurrics{inti=0;intj=0;Strings[]=newString
[8];//获得第7个table标签Elementtable=doc.selecttable.get6;//获得第7个table标签下的tr标签Elementstrs=table.selecttr;iftrs!=null{//遍历第7个table标签下的tr标签forElementtr:trs{//获得第7个table标签下的tr标签下的td标签Elementstds=tr.selecttd;iftds!=null{forElementtd:tds{//将每个td标签的文本存入字符串数组ss[i]=td.text;i++;}i=0;monday[j]=s
[1];//表格每一行的第2格内容存入monday字符串数组tuesday[j]=s
[2];//表格每一行的第3格内容存入tuesday字符串数组wednesday[j]=s
[3];//表格每一行的第4格内容存入wednesday字符串数组thursday[j]=s
[4];//表格每一行的第5格内容存入thursday字符串数组friday[j]=s
[5];//表格每一行的第6格内容存入friday字符串数组j++;}}}}跳转页面的最初会显示当天对应的课程,当然了,如果是周末则会显示无课程随后在界面下方设置了5个按钮,分别对应了星期一到星期五,可供用户查看一周的课程,点击则会显示相应内容,响应速度非常快实际显示效果
5.13课程表界面图
5.6考试时间页面逻辑处理考试时间表页面的逻辑处理,主要工作还是使用JSoup技术解析网页,获取完整考试时间信息,显示出来这个页面稍微有些特殊,因为当不存在考试时间的时候,是没有那个存放考试时间信息的表格的,这样,我们就必须先来一个判断,当存在第5个table标签的时候,第5个table就是存放考试时间信息的表格,而如果不然,则是系统还没给出考试时间表而对于这个表格的解析,也是比较简单,每一行代表了一个考试课程的信息,将每一个单元格的内容取出,就能组合成我们需要表现出来的考试信息具体代码实现如下Strings[]=newString
[8];inti=0;Elementstables=doc.selecttable;//当有科目的考试时间存在时iftables.size=5{//获得第5个table标签Elementtable=doc.selecttable.get4;//获得第5个table标签下的tr标签Elementstrs=table.selecttr;iftrs!=null{//遍历第5个table标签下的tr标签forElementtr:trs{//获得第5个table标签下的tr标签下的td标签Elementstds=tr.selecttd;iftds!=null{//遍历第5个table标签下的tr标签下的td标签forElementtd:tds{//将每个td标签的文本存入字符串数组ss[i]=td.text;i++;}ifs
[0]!=null{//按照格式输出textViewStr=textViewStr+课程代码+s
[0]+\n课程名称+s
[1]+\n考试日期+s
[2]+\n考试时间+s
[3]+\n考场名称+s
[5]+\n考试座位+s
[6]+\n\n;}i=0;}}}}else{textViewStr=目前没有需要考试的科目!;}实际显示效果
5.14考试时间界面图
5.7考勤信息页面逻辑处理考勤信息页面的逻辑处理,主要工作还是使用JSoup技术解析网页,获取完整考勤信息,显示出来这个页面与考试时间表页面类似,也会出现没有考勤的情况,当用户该学期没有课程的情况下将不存在考勤信息取得完整的考勤信息,网页源代码是
5.15考勤信息页面源码图当存在第7个table的时候,遍历第7个table下的tr标签、td标签,从而取得考勤信息具体代码实现如下//获得第7个table标签Elementtable=doc.selecttable.get6;//获得第7个table标签下的tr标签Elementstrs=table.selecttr;Strings[]=newString
[3];inti=0;iftrs!=null{//遍历第7个table标签下的tr标签forElementtr:trs{//获得第7个table标签下的tr标签下的td标签Elementstds=tr.selecttd;iftds!=null{//遍历第7个table标签下的tr标签下的td标签forElementtd:tds{//将每个td标签的文本存入字符串数组ss[i]=td.text;i++;}ifs
[0]!=null{//按照格式输出textViewStr=textViewStr+课程编号+s
[0]+\n课程名称+s
[1]+\n详细信息+s
[2]+\n\n;}i=0;}}}iftextViewStr.contains课程信息{textViewStr=本学年学期暂无课程信息!;}实际显示效果
5.16考勤信息界面图6系统测试
6.1使用DDMS在Eclipse中,带有DDMS可视化调试界面,我们使用DDMS中的LogCat来捕捉程序运行中的信息例如
1、网络连接时,连接是否成功,使用多少时间,发送接收多少数据包
2、一旦程序有任何不安全警告或者是运行错误,都会被LogCat捕捉,并且精确的告知是何出错信息,在程序那个类的第几行,行遍我们差错
3、我们还可以自定义捕捉信息,比如捕捉带有System.out的程序语句,这样我们在程序中安插的System.out语句将全部被捕捉,有助于我们查找系统没有发现的逻辑错误,可以精确到每一行是否被执行
6.1DDMS-LogCat调试图
6.2系统测试
6.
2.1测试用例我们使用了不同的操作路径来进行的覆盖测试
1、错误的学号登录,测试系统的登录功能是否正常
2、错误的密码登录,测试系统的登录功能是否正常
3、正确的登录,测试系统的登录功能是否正常
4、帐号登录,注销登录,再使用另外一个帐号登录,测试注销是否成功
5、使用多个不同帐号登录,选择查看各个板块信息,测试系统的功能是否正常
6.2登录失败图
6.3登录成功图
6.
2.2单元测试单元测试是对软件设计的最小单元——模块进行正确性检验的测试工作,主要测试各个功能模块在语法、格式和逻辑上的错误结果通过测试
6.
2.3非功能性测试这一部分我们主要测试系统的性能,因为系统涉及网络的处理,可能会消耗比较长时间,这对用户的操作体验会有较大影响一开始,Activity的单线程运行,虽然保证了程序的顺序正常,但是界面的刷新会等待网络处理的结束,这让UI的交互显得非常迟钝响应速度视网络处理工作大小而定,1秒到4秒不等对此我决定改用多线程同步处理界面的刷新跟后台的网络处理,测试证明,平均每个界面跳转只需要200毫秒左右,这才能真正带给用户快捷的感觉
6.4请求响应时间图123设计总结虽然在课程的学习中了解软件工程开发的一般过程,但要真正从头开始开发软件,却不是书本知识就能帮我们解决的本次毕业设计使我的知识水平和解决实际问题的能力上有了较大的提高,使我深刻体会到要把所学知识转变为现实中的应用,会碰上各种各样的难题通过对学校Mysise系统Android客户端的设计和实践,进一步体会了软件开发过程中的特点,加深了对软件工程理论的理解,基本掌握了Android平台移动开发技术回顾系统的设计和实现,由于时间、周围环境条件和自身基础等各种主客观因素制约,作品仅完成了XX校园信息管理系统中比较基础的几个功能,同时系统还存在一些小问题,例如异常处理能力不够可以说,系统还有很大的改进完善空间,后续的工作还需要付出更大的努力众所周知,毕业设计是我们完成大学四年全部课程后的最重要的实践环节设计,也是最复杂的,最综合的一次专业设计,它是以我们四年来所学的专业理论知识为基础,结合以往所做过的各种实践经验所完成在这次毕业设计过程中,提高了我们自身的设计能力以及理论结合与实践的能力,为以后参加工作后可以尽快满足用人单位的需求打下良好基础,这次的设计令我收获颇丰参考文献
[1]Android
2.3应用开发实战.北京:机械工业出版社,
2011.6
[2]DevDiv移动开发社区.移动开发全平台解决方案.北京:海洋出版社,
2011.8
[3]eoeandroid开发者社区.EoeAndroid特刊.北京:电子工业出版社,2010
[4]JAVA编程思想.北京:机械工业出版社,
2007.6
[5]刁成嘉.UML系统建模与分析设计.北京:机械工业出版社,
2007.7
[6]景怀宇.Photoshop实用教程.北京:人民邮电出版社
2010.4
[7]李刚.疯狂Android讲义.北京:电子工业出版社,
2011.7
[8]罗杰.Android应用开发.北京:人民邮电出版社,
2010.9
[9]斯塔克.使用HTML、CSS和JavaScript开发Android程序.北京:电子工业出版社,
2011.5
[10]余志龙.GoogleAndroidSDK开发范例大全第二版.北京:人民邮电出版社,
2010.6
[11]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,
2010.1
[12]周陟.UI进化论---移动设备人机交互界面设计.北京:清华大学出版社,
2010.1致谢在论文完成之际,我首先要向我的指导老师——XXX老师表示最真挚的谢意在论文写作期间,以及在之前研究与项目开发过程中,XXX老师多次询问研究进展,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励虽然历时不长,但是XXX老师严谨的治学作风、认真的工作态度和勤奋的工作精神深深地影响着我,使我受益匪浅感谢大学四年来每一位教过我的老师,正是因为你们的无私帮助,才让我在学习上和生活上少走弯路,我的大学生活也因你们而更加精彩完整即使毕业离开校园,我也始终不会忘记老师们的孜孜教诲,这些都是我一生的财富我还要感谢我的同组伙伴,完成网络连接模块的XXX和完成UI界面美化的XXX,正是有你们在我身边并肩作战,全靠大家同心合力,互相支持和鼓励,我们这个项目才能得以完成登录入口输入学号和密码正确?登录成功进入主菜单界面是否将学号和密码送往系统核对登录界面LoginActivity主菜单界面MainActivity个人信息InfoActivity课程表CurricActivity考试时间TimeActivity考勤信息AttendActivity网络连接CustomerHttpClient显示考试时间显示考勤信息获取当天日期显示当天课程显示基本信息必修课信息按钮选修课信息按钮基本信息按钮星期一按钮星期二按钮星期三按钮星期四按钮星期五按钮显示响应信息显示课程信息注销登录退出程序进入个人信息模块刷新UI界面网络连接解析网页获取基本信息功能按钮解析网页获取必修课信息解析网页获取选修课信息主线程子线程进入课程信息模块刷新UI界面网络连接解析网页获取课程表功能按钮主线程子线程获取日期周末?无课程取得数据判断星期几是否进入考试时间模块刷新UI界面网络连接解析网页主线程子线程有考试课程?获取考试时间表无考试课程否是进入考勤信息模块刷新UI界面网络连接解析网页主线程子线程有课程?获取考勤信息无考勤信息否是。