《基于ios的毕业跟踪管理系统教师端的研究与开发.doc》由会员分享,可在线阅读,更多相关《基于ios的毕业跟踪管理系统教师端的研究与开发.doc(41页珍藏版)》请在三一办公上搜索。
1、南 阳 理 工 学 院本科生毕业设计(论文)学院(系): 软件学院 专 业: 软件工程 学 生: 王志可 指导教师: 王豫峰 完成日期 2014 年 05 月基于ios的毕业跟踪管理系统教师端的设计与实现Design and Implementation of Graduation Tracking Management System Based on Ios(Teacher)总 计:毕业设计(论文) 38页表 格: 0个插 图: 26幅基于ios的毕业跟踪管理系统教师端的设计与实现Design and Implementation of Graduation Tracking Managem
2、ent System Based on Ios(Teacher)基于ios的毕业跟踪管理系统教师端的设计与实现摘 要 iOS作为当今最流行的手机操作系统之一,凭借其良好的系统稳定性、优质的用户体验、丰富的手机应用赢得了广大用户的喜爱,随着苹果产品在中国市场的逐步深入,校园内形成了一定规模基于iOS手持设备的用户群,与此同时这些用户都希望用手中的设备方便、快捷的完成各种事务。毕业设计是毕业过程中一个重要环节,如何方便高效地帮助师生顺利完成毕业设计成了所有师生密切关注的话题,现有传统形式的web的系统受到硬件要求、网络要求等条件限制,不能做到随时随地跟踪管理毕业设计过程。在如此情况下基于iOS设备
3、毕业跟踪管理系统就应运而生。本文提出了一个基于iOS的毕业跟踪管理教师端系统的设计与实现,文章从iOS开发特点、设计模式、数据请求技术、数据解析技术、系统设计与实现等几个方面出发,分别对该系统进行了详细的阐述。关键词 毕业设计;跟踪管理系统教师端;iOS;Cocoa框架;MVC框架;Design and Implementation of Graduation Tracking Management System Based on Ios(Teacher)Software Engineering MajorWang ZhikeAbstract: Being one of the most po
4、pular mobile operating systems, iOS has won favor of vast number of users with its system stability, high-quality user experience, and abundant apps. As the Apple products going further into the Chinese market, groups of iOS based handheld device users have formed with certain population in the camp
5、us, and meanwhile these users want to use these in-hand devices to complete a variety of works fast and conveniently. The graduation project is one important section of the graduation process, how to effective and conveniently assist the professors and students to successfully complete the graduatio
6、n project has become a topic that all professors and students concern. Currently existing traditional web system is limited by hardware, network and other conditions, which cannot track the process of the graduation completion at anytime and anywhere. Under such circumstances, the iOS based graduati
7、on tracking and managing system emerges. This article proposes the design and implement of an iOS based graduation tracking and managing system. The article explains the system in details, from aspects of: characteristics of iOS development, design patterns, data request techniques, data analyze tec
8、hniques, system design and implement.Key words: Graduation project ;Tracking Management; iOS; Cocoa Foundation; MVC framework目 录1 引言/绪论11.1 国内外研究现状11.1.1 本课题国外研究现状11.1.2 本课题国内研究现状11.2 研究背景和意义11.3研究的内容11.4论文组织形式31.5本章小结32 相关技术简介32.1 iOS开发框架32.1.1 iOS应用程序基于Foundation和UIKit框架32.1.2 UIKit框架提供创建基于触摸用户界面的
9、类42.1.3 其它框架42.2 开发语言Objective-C42.2.1 内存管理52.2.2 Objective-C的动态特性52.3 开发工具62.4 MVC设计模式72.4.1 MVC设计思想82.5系统实现关键技术92.5.1同步与异步网络请求102.5.2ASIHTTPRequest类库进行网络请求102.5.3XML解析123 系统需求分析133.1 可行性分析133.1.1 经济可行性分析133.1.2 技术可行性分析133.1.3 社会可行性分析133.1.4 操作可行性133.2 需求描述143.3 面向对象分析143.3.1 参与者用例图143.3.2 系统登录用例图1
10、43.3.3 课题管理用例图153.3.4 学生进度用例图153.3.5 个人中心用例图163.3.6 我的学生用例图163.3.7 学生成绩用例图173.3.8 软件设置用例图173.4 主要功能分析183.5 本章小结194 系统设计与实现194.1 概要设计194.2 详细设计194.2.1用户登录设计194.2.2课题管理设计204.2.3学生进度设计214.2.4个人中心设计224.2.4我的学生设计244.2.5 学生成绩设计254.2.6软件设置设计254.3系统实现264.3.1用户登录实现264.3.2课题管理实现274.3.3学生进度实现284.3.4 个人中心实现304.
11、3.4 我的学生实现324.3.5 学生成绩实现324.3.6 软件设置实现355 总结与展望36参考文献381 引言/绪论1.1 国内外研究现状1.1.1 本课题国外研究现状目前的iOS技术主要起源于美国的苹果公司,其作为苹果公司手持设备的操作系统,其良好的流畅性和友好的交互界面使得迅速风靡全球,由于国外用户对生活高效的要求使得开发者针对现实生活中的实际需求基于这门技术发展了很多管理系统,比如基于iOS公司人员管理系统、基于iOS的物流信息查看系统等等。1.1.2 本课题国内研究现状iOS作为当今最流行的手机操作系统之一,凭借其良好的系统稳定性、优质的用户体验、丰富的手机应用赢得了广大用户的
12、喜爱1,随着苹果产品在中国市场的逐步深入,校园内形成了一定规模基于iOS手持设备的用户群,与此同时这些用户都希望用手中的设备方便、快捷的完成各种事务。毕业设计是毕业过程中一个重要环节,如何方便高效地帮助师生顺利完成毕业设计成了所有师生密切关注的话题,现有传统形式的web的系统受到硬件要求、网络要求等条件限制,不能做到随时随地跟踪管理毕业设计过程。在如此情况下基于iOS设备毕业跟踪管理系统教师端就应运而生。1.2 研究背景和意义随着网络技术的快速发展,现在很多大学和社会其他部门都已经开设了网络管理,通过计算机网络实现异地文件传输和管理。随着网络技术的不断深入发展,就要求有更好、更完善的软件系统应
13、用到教育教学管理当中去,这就给软件设计人员提出了更高的设计要求。毕业设计的管理是高校管理工作中的一项重要内容。随着高等教育教学改革的不断深入,对于高校毕业设计管理的规范化、科学化、信息化已成为目前面临的重要课题。我校毕业设计跟踪管理系统,很好地解决了学生外地实习期间远程毕业设计选题、论文的上交、以及各个环节中指导老师对学生的指导和交流的问题,自投入使用以来,以其良好的实用性、稳定性、安全性得到广大师生的广泛认可。iOS作为当今最流行的手机操作系统之一,凭借其良好的系统稳定性、优质的用户体验、丰富的手机应用赢得了广大用户的喜爱,基于iOS的毕业跟踪管理系统教师端的设计和实现能帮助教师在脱离电脑的
14、情况下用苹果手机依然实现管理学生的毕业状况,查看毕业生的答辩成绩和最终成绩,并且通过发布日志和回复日志和学生进行交流。1.3研究的内容为了实现基于iOS的毕业跟踪管理系统教师端,在开发过程中存在着多视图控制、网络请求、XML解析、动态布局,内存管理等几个难点需要克服。第一个是多视图控制的问题。在iOS中窗口和视图是为iOS应用程序构造用户界面的可视组件1。窗口为内容显示提供背景平台,而视图负责绝大部分的内容描画,并负责响应用户的交互。iOS应用程序通常只有一个窗口,表示为一个UIWindow类的实例。应用程序在启动时创建这个窗口(或者从nib文件进行装载),并往窗口中加入一个或多个视图,然后将
15、它显示出来。视图在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象都要负责渲染视图矩形区域中的内容,并响应该区域中发生的触碰事件。除了显示内容和处理事件之外,视图还可以用于管理一个或多个子视图。子视图(subview)是指嵌入到另一视图对象边框内部的视图对象,而被嵌入的视图则被称为父视图或超视图(superview)。视图的这种布局方式被称为视图层次, 一个视图可以包含任意数量的子视图,通过为子视图添加子视图的方式,视图可以实现任意深度的嵌套。每个父视图都负责管理其直接的子视图,即根据需要调整它们的位置和尺寸,以及响应它们没有处理的事件。第二个是网络数据请求问题。现有毕业设计跟踪管
16、理系统并没有提供服务接口,需要添加用于iOS端的接口。关于iOS网络请求主要有同步、异步请求、GET、POST请求之分2。综合比较权衡之下,采用异步、post方法,以保证流畅的用户体验和较高的安全性,后面会有详细的实现讨论。第三是数据解析问题,数据以何种方式呈现能够方便客户端应用的展示,以何种方式存放能够满足大部分客户端应用的数据需求,这些都是要解决的问题,目前常用的主要有XML格式的数据及Json格式的数据,由于XML数据格式比较通用清晰明了,因而本文后面主要针对XML格式的数据予以讨论。在XML数据解析方面,已经有许多开源的解析组件,有些已经被证明为是行之有效的解决方案2。其中主解析XML
17、通常有两种方式:DOM 和 SAX。后面我们将针对多种XML解析组件进行讨论。针一对于iOS应用的开发,已经有相关从业者做了大量的研究及应用工作,包括数据请求包ASIHTTpRequest及XML数据解析包GDataXML、TouehxML和KissxML等3,这些工具包的开发为后续开发者提供了便捷途径,虽然说苹果提供的SDK也有相关的数据请求及数据解析的API,但是由于其封装性不高。易用性及便捷性较差等原因导致使用基本API的用户反而较少,使用开源包及组件的用户比较多,除此之外,苹果对于iOS应用的框架给出了基本框架,即MVC设计模式,这是iOS应用开发中所使用的最基本的设计模式,同时这种设
18、计模式也渗透着苹果自身的cocoa框架,是cocoa框架最基本的指导思想。手机安装第三方应受到内存大小的限制,iPhone应用亦是如此。在应用开发过程中要时刻注意内存问题,由于iOS应用的开发使用的是Objective-C语言,在ios5之前没有垃圾自动回收机制,需要开发者在开发过程中手动进行内存的分配及释放,如果分配而未释放则造成内存泄漏,如果过度释放则造成系统崩溃,在iosios5/Mac OS X 10.7开始引入ARC机制3,从此原先需要手动添加用来处理内存管理的引用计数的代码可以自动地由编译器完成了,因此iOS应用开发者需要对内存机制有较深的了解,以便更好的完成任务。1.4论文组织形
19、式本文共分为五章,各章主要内容介绍如下:第一章首先简单的介绍一下课题研究的背景和意义以及论文的内容与论文结构。第二章主要介绍iOS开发技术特点,着重讲述了iOS开发框架、开发语言、以及多视图控制相关问题,以及设计模式等。第三章主要介绍需求分析和概要设计、面向对象分析。第四章主要介绍系统的详细设计和实现过程,给出来了各个模块的实现效果和实现流程。第五章主要对ios该技术的核心知识和重点知识进行了展望和总结。1.5本章小结 本章针对该课题的国内外研究现状、研究背景和意义、论文的主要内容做了简单的介绍,在这个方向的指导下可以更加高效的完成系统的设计和编写。当我们充分的了解了类似技术在国内外的现状和当
20、今生活的实际需要之后就可以决定最终系统设计的实际开发意义和价值。为了更加方便我们的生活,提高我们生活的效率和质量,研究的价值才能得到体现。2 相关技术简介2.1 iOS开发框架框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件4。一个共享库定义的方法或函数可以被应用程序调用。iOS提供了很多可供在应用程序里调用的框架。要使用一个框架,需要将它添加到项目中之后才可以使用它。许多应用程序都使用了如 Foundation、UIKit、和Core Graphics这些框架4。每个框架对应iOS系统里的一层,每层建立在它下面层的上面。应该尽量使用上层的框架来代替
21、下面的框架。更高层次的框架是对底层框架基于对象的抽象。iOS框架是系统运行的基础,它是硬件与软件结合的纽带,是iPhone、iPad及iTouch等设备的核心,是其应得以运行的平台环境。2.1.1 iOS应用程序基于Foundation和UIKit框架开发程序时,主要使用框架就是Foundation和UIKit,因为它们包含了你需要的大部分东西。Foundation框架为所有的应用程序提供基本系统服务。应用程序,UIKit和其它的框架都是建立在Foundation框架上面的5。Foundation框架是用Object-C对Core Foundation框架里许多特性的封装。使用Foundati
22、on可以进行:创建和管理集合,比如数组和字典;访问存储在应用程序里的图片和其它资源;创建和管理字符串;提交和接收通知;创建日期和时间对象;自动发现IP网络上的设备;操作URL流;执行异步代码等操作。2.1.2 UIKit框架提供创建基于触摸用户界面的类所有的iOS应用程序都基于UIKit, UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素5。UIKit也通过管理显示在屏幕上的组件来组织复杂的项目。使用UIKit可以:构建和管理你的用户界面;捕获触摸和基于移动的事件;呈现文字和web内容;优化你的多任务程序;创建定制的用户界面元素等操作。2.1.3 其它框架Media层包含图
23、形技术、音频技术和视频技术。同过这些技术的相互结合就能够完成用户的需求,并能够给用户带来更好的多媒体体验。在上层也有相关音频视频播放的媒介,但是比较简单,如果用户有特定的需求则可以通过本层的相关技术及框架完成用户需求。Core Services层为所有的应用程序提供基础系统服务。程序有可能并不直接使用这些服务,但是它是系统很多部分赖以存在的基础。这一层比较接近底层,应用程序很少直接使用该层的服务,该层为iOS系统提供了构架基础6。Core OS层的底层功能是很多其他技术的构建基础。该层是iOS框架的最底层,应用通常不直接使用该层,但是涉及到系统安全及外设通讯等功能时必须使用该层提供的矿机。这是
24、iOS结构的最底层,它包含了系统的内核环境、驱动以及操作系统的底层接口等,它是整个架构的基础7。2.2 开发语言Objective-CObjective-C 是一种通用、高级、面向对象的编程语言6。它扩展了标准的 ANSI C 编程语言。将 Smalltalk 式的消息传递机制加入到 ANSI C 中。它是苹果的 OS X 和 iOS 操作系统,及其相关 API、Cocoa 和 Cocoa Touch 的主要编程语言。Objective-C 最初源于 NextSTEP 操作系统,之后在 OS X 和 iOS 继承下来8。目前主要支持的编译器有 GCC 和 Clang,其中 Clang 被应用于
25、 Xcode 4.0 中。由于iOS应用的快速发展,Objective-C语言使用的频率也大大增加,跃入语言排行榜上的前十。Objective-C是面向对象编程语言,它具有封装、继承、多态等面向对象语言的特性,同时它与其他语言相比更为简单,它支持单一继承、类封装、多态、接口、动态类型等特性9。Objective-C语言对动态机制的支持较为彻底,编译器为运行环境保留了很多对象自身的信息,一些需要在编译时需要确定的信息可以推迟到运行时再确定。2.2.1 内存管理 Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic ref
26、erence counting(ARC,自动引用计数),garbage collection(垃圾回收)7。iOS不支持垃圾回收;在iOS 5后增加了Automatic Reference Counting(ARC 自动引用计数)特性。ARC作为苹果新提供的技术,苹果推荐开发者使用ARC技术来管理内存10;相对来讲,手动管理内存更为高效,本文主要讲述手动管理。内存管理的目的是:1.不要释放或者覆盖还在使用的内存,这会引起程序崩溃;2.释放不再使用的内存,防止内存泄露。iOS程序的内存资源是宝贵的。MRR手动管理内存也是基于引用计数的,只是需要开发者发消息给某块内存(或者说是对象)来改变这块内存
27、的引用计数以实现内存管理(ARC技术则是编译器代替开发者完成相应的工作)。一块内存如果计数是零,也就是没有使用者(owner),那么Objective-C的运行环境会自动回收这块内存11。Objective-C的内存管理遵守下面这个简单的策略:注:本文中把引用计数加1的操作称为拥有某块对象/内存;把引用计数减1的操作称为放弃这块对象/内存。拥有对象时,你可以放心地读写或者返回对象;当对象被所有人放弃时,Objective-C的运行环境会回收这个对象。1.你拥有你创建的对象,也就是说创建的对象(使用alloc,new,copy或者mutalbeCopy等方法)的初始引用计数是1。2.给对象发送r
28、etain消息后,你拥有了这个对象。3.当你不需要使用该对象时,发送release或者autorelease消息放弃这个对象。4.不要对你不拥有的对象发送“放弃”的消息。2.2.2 Objective-C的动态特性Objective-C具有相当多的动态特性,包括动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)8。这些动态特性都是在Cocoa程序开发时非常常用的语言特性,而在这之后,OC在底层也提供了相当丰富的运行时的特性,比如枚举类属性方法、获取方法实现等等。虽然在平常的Cocoa开发中这些较底层的运行特性基本用不
29、着,但是在某些情况下如果你知道这些特性并合理加以运用的话,往往能事半功倍。1、动态类型即运行时再决定对象的类型,简单说就是id类型。id类型即通用的对象类,任何对象都可以被id指针所指,而在实际使用中,往往使用introspection来确定该对象的实际所属类。-isKindOfClass:是NSObject的方法,用意确定某个NSObject对象是否是某个类的成员。与之相似的为-isMemberOfClass:,可以用以确定某个对象是否是某个类或其子类的成员。这两个方法为典型的introspection方法。在确定对象为某类成员后,可以安全地进行强制转换,继续之后的工作。2、动态绑定基于动态
30、类型,在某个实例对象被确定后,其类型便被确定了。该对象对应的属性和响应的消息也被完全确定,这就是动态绑定9。在继续之前,需要明确Objective-C中消息的概念。由于OC的动态特性,在OC中其实很少提及函数的概念,传统的函数一般在编译时就已经把参数信息和函数实现打包到编译后的源码中了,而在OC中最常使用的是消息机制。调用一个实例的方法,所做的是向该实例的指针发送消息,实例在收到消息后,从自身的实现中寻找响应这条消息的方法。动态绑定所做的,即是在实例所属类确定后,将某些属性和相应的方法绑定到实例上。这里所指的属性和方法当然包括了原来没有在类中实现的,而是在运行时才需要的新加入的实现。在Coco
31、a层,我们一般向一个NSObject对象发送-respondsToSelector:或者-instancesRespondToSelector:等来确定对象是否可以对某个SEL做出响应,而在OC消息转发机制被触发之前,对应的类的+resolveClassMethod:和+resolveInstanceMethod:将会被调用,在此时有机会动态地向类或者实例添加新的方法,也即类的实现是可以动态绑定的11。当然也可以在任意需要的地方调用class_addMethod或者method_setImplementation(前者添加实现,后者替换实现),来完成动态绑定的需求。3、动态加载根据需求加载所需
32、要的资源,这点很容易理解,对于iOS开发来说,基本就是根据不同的机型做适配。最经典的例子就是在Retina设备上加载2x的图片,而在老一些的普通屏设备上加载原图。随着Retina iPad的推出,和之后可能的Retina Mac的出现,这个特性相信会被越来越多地使用。2.3 开发工具要开发iOS的应用程序,需要一台安装有Xcode工具和Mac OS X的电脑。Xcode是苹果提供的开发工具集、提供项目管理、代码编辑、创建执行程序、代码级调试、代码库管理和性能调节等等功能。这个工具集的核心就是Xcode程序,提供了基本的源代码开发环境。Xcode是一个集成开发环境(IDE),通过与 Cocoa
33、和 Cocoa Touch 框架紧密集成,Xcode 创建了一个具有高效产出且易于使用的开发环境。Xcode 工具箱包含出色的 Xcode IDE,并且与 Interface Builder 设计工具和 Apple LLVM 编译器进行了深度集成10。Instruments 分析工具也包含于工具包之中,另外还有其他很多提供各种支持的开发者工具。构建代码编译成为可执行文件后,可在iPhone模拟器或者真实设备上运行和调试代码。当你在Xcode中构建应用程序,你可以选择为iPhone模拟器创建,也可以选择为iPhone设备创建。模拟器提供了测试应用程序的本地环境,可以确保你的程序行为完全符合你的需
34、求。当你对程序的基本行为已经满意后,你可以告诉Xcode构建它,然后在连接到你的计算机上的iPhone和iPod touch上运行它。在设备上面运行程序提供了终极测试环境,而且Xcode可以把内建调试器植入运行在设备上的代码中。编到本地模拟器中进行运行,以确认工程是否达到预期目标,若达到预期目标则可以将工程直接链编到设备中进行运行及调试等。应用程序开发还可以使用另外一种工具,即InterfaceBuilder,它是图形界面工具,在InterfaceBuilder中有多种组件,分别与xCode中的控件相对应,用户可以直接拖动这些组件进行图形界面设计,有相关参数提供给用户用以确定组件的大小、位置、
35、颜色、透明度、响应方法等。InterfaceBuilder生成后缀为.xib的文件,常称为nib文件。nib文件中的对象需要与代码之间建立联系,对象所对应的响应事件也需要通过代码进行定制。nib文件是一种所见即所得的创建方式,能够简单明了的进行界面设计。在nib文件中对对象进行设计之后无需在代码中再进行设计,节省了编码工作。InterfaceBuilder进行设计简单明了,但是在实际开发过程中使用的概率并不高,因为nib文件不如直接编码方便,因而很多开发者选择全部编码方式。XCode能够帮助用户完成大部分编译、运行、性能分析等工作,用户只需使用这些工具对源码进行操作,避免了用户操作过程中会出现
36、的许多问题。使用XCode集成工具,可以避免用户在操作上浪费时间,从而把主要精力放在开发工作当中12。XCode还集成了iPhone和iPad的模拟器,使用XCode开发工具主要用于MacOSX系统中,在开发过程中使用与设备对应的模拟器进行运行,在应用运行正确后可以装入设备中进行运行。2.4 MVC设计模式MVC是Model-View-Control的缩写MVC模式即为模型视图控制器模式。MVC模式的应用由三个部分组成分别为模型、视图和控制器16。控制器主要负责对模型和视图的控制,模型和视图的改变只能通过控制器实现,两者不能对对方进行直接的变更操作。控制器若改变了模型的数据或者属性,则依赖于该
37、模型的视图会白动更新显示,若控制器改变了视图,则视图会从模型中获取数据进行刷新。传统的MVC设计模式如图3-1所示图21传统MVC设计模式iOS MVC设计模式如图3-2所示图22 iOS MVC设计模式其主要区别在于view和model之间的数据交换都要通过控制器来协调,view和model之间不直接进行数据交换。由图可以看出,控制器是对视图和模型进行控制,主要功能有选择要显示的视图,对模型状态进行变更,以及对应用行为的控制。视图则主要是对模型数据进行展示,并且在有更新时进行数据请求并更新,另外将用户操作发送给控制器,三者相互协调,层次分明,该模式使用方便13。下面对MVC模式设计思想、结构
38、及其优缺点进行介绍。2.4.1 MVC设计思想MVC设计模式将应用的输入、处理、输出流程进行分层次表示,每个层次负责特定的功能总共分层三个层次,分别为控制层、模型层和视图层。视图(View)是连接用户与应用的枢纽,是用户交互界面的代表,由于对于应用的规模及复杂性要求越来越高,界面的处理也更为复杂,并变得富有挑战性。一个具有规模的应用程序必然有多个不同的视图,在MVC设计模式中,对于视图的处理仅限于视图所需数据的采集和处理以及用户的请求,而不包括在视图上的业务流程的处理,在MVC设计模式中,业务流程的处理主要由模型(Model)进行实现。视图能够将用户输入的数据以及请求传送给控制器,再由控制器进
39、行控制,交由模型进行处理。模型(Model)是业务规则的制定者,主要包括业务流程及业务状态的处理。业务流程的处理被封装与模型内部,对其他层来说业务流程的处理是黑箱操作,不可见的。模型接受视图的数据请求,对其进行处理并返回最终结果,对于视图而言则是发出请求并获取请求结果,对中间的处理流程并不关心。模型层对于整个模式而言是最主要的核心。MVC是一种设计模式,并没有提供设计方法,只提供了这些模型的组织管理方法,这种方法能够使模型重构更为便捷并能够提高其可用性。它相当于提供了整体的组织结构,至于细节内容及实现方法则不予限定,这个特点使得开发者有更大的发挥空间及自由行。模型除了业务流程处理之外,另一个很
40、重要的模型则是数据模型。数据模型是指对实体对象的数据保存,将实体对象进行数据保存,能够便于视图层对数据的获取及展示,不需要每次数据请求进行数据库的操作。相较而言,数据模型中数据的返回比数据库中数据返回有更好的效率,在数据模型中对数据进行预操作处理能够提供系统效率。模型层作为MVC设计模式的核心层,在设计时应谨慎对待流程处理及数据保存并考虑到接口方法使用的便捷性,使其便于与其它层进行交互。控制器(Controller)在MVC设计模式中充当协调者角色,它主要是从用户接受请求,根据请求将模型与视图进行匹配,共同完成用户请求。控制器作为一个分发器,它的主要作用是选择合适的模型及视图,将不同的视图及模
41、型进行组合,以便完成不同的用户请求。控制器不做任何数据处理和业务流程处理,它收到用户请求后直接将请求转发给相应的模型,告诉模型需要做的操作,并选择符合要求的视图返回给用户。因而,模型与视图是多对多的关系。MVC三层结构的划分使得控制器、模型、视图得以分离,使得一个模型可以有多个视图与其对应。当用户通过某个视图的控制器改变了模型的数据后,所有依赖于这些数据的视图都能够反映这些变化,因此,当模型数据发生变化时,控制器会将变化通知所有依赖于这些数据的视图,使其进行更新显示。这种机制是模型的变化传播机制。MVC设计模式中,不同层次的划分使得各层有了更好的独立性。一个模块的变更只要保持接日不变,对其它模
42、块不会产生影响或产生极小影响,便于开发者的开发工作。2.5系统实现关键技术本软件服务端是基于我校毕业跟踪管理系统服务端,基本数据和该系统的数据一致,服务端采用ASP.NET技术实现,为方便整合以及代码重用,采用Web Service技术。Web Service接口设计以简洁、方便、安全、稳定为宗旨,采用header加密验证形式进行服务调用权限验证,以XML形式返回请求结果,提供给客户端所需要的各种数据。使用该系统在有网络的情况下,查看某个模块,系统内部通过代码就调用该模块的对应接口,然后服务端就返回对应的数据,客户端在收到数据之后就进行解析展现到视图上,这样基本的流程就完成了。其中数据处理包括
43、数据请求管理模块,数据请求模块以及数据分析模块,这两个模块是公共模块,使用单例模式实现,使用单例模式实现后,所有对该模块的调用不用创建实例,可直接通过类名进行调用。数据请求管理模块是各模块中数据请求的出口和入口,在模块需要进行数据请求时将相关参数发送至数据请求管理模块,在该模块中结合数据请求地址,并确认该请求的标识符,然后将请求地址及标识符等传递给数据请求模块,数据请求模块获得数据后将数据传送给数据请求管理模块,再由数据请求管理模块将数据分发给请求数据的模块,最后进行数据解析和使用。数据请求使用ASIHTTPRequest组件实现,它将请求按照队列的方式进行管理。利用该模块的代理函数,可以对发
44、出的请求进行监听,一旦数据返回后直接进入监听函数进行处理,该监听函数将数据转发给数据请求管理模块,再由该模块进行相关处理后进行分发。ASIHTTPRequest组件的封装性良好、方便、易用,为开发带来极大便捷性14。网络请求是基于iOS的毕业设计跟踪管理系统中一个重要的组成部分,几乎所有的数据都要从服务器获取。2.5.1同步与异步网络请求同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作17。异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行。2.5.2ASIHTTPRe
45、quest类库进行网络请求使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互15。ASIHTTPRequest功能很强大,主要特色如下:通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作;下载的数据,可存储到内存中或直接存储到磁盘中;能上传本地文件到服务端;可以方便的访问和操作请
46、求和返回的Http头信息;可以获取到上传或下载的进度信息,为应用程序提供更好的体验;支持上传或下载队列,并且可获取队列的进度信息;支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中;支持Cookie;当应用(iOS 4+)在后台运行时,请求可以继续运行;支持GZIP压缩数据;内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果;ASIWebPageRequest 可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView
47、/WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览;支持客户端证书;支持通过代理发起Http请求;支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制;支持断点续传;支持同步和异步请求。综上分析所述,在基于iOS的毕业设计跟踪管理系统的实现中,为了快速高效、安全稳定以及良好的用户体验,采用了ASIHTTPRequest库进行异步post网络请求。以下为封装的创建post请求的方法:+(ASIHTTPRequest *)getRequestFromPage:(NSString *)page atFunction:(NSString *)function withParameterDic:(NSDictionary *)ParameterDic NSMutableString *SOAPMessgae=