




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于iOS系统校园生活app开发大 连 民 族 大 学 本 科 毕 业 设 计(论 文)基于iOS系统的校园生活app开发学 院: 机电工程学院 专 业:机械设计制造及其自动化 学 生 姓 名: 学 号: 指 导 教 师: 评 阅 教 师: 完 成 日 期: 大连民族大学摘要随着科技的迅速发展,手机成为人们日常生活不可却少的工具。现代生活丰富多彩,单纯打电话和发短信的手机已满足不了人们的生活需求,辅助生活功能强大的手机应运而生。基于iOS系统的iPhone手机具有简单易用的界面、令人叹服的功能、超强的稳定性,因其独特的设计和极佳的体验深受用户欢迎。iOS作为当前最流行的操作系统平台,自然也存在着大量的应用服务需求。近年,苹果手机在中国市场越来越大,许多人开始疯狂的追捧苹果产品。大学生便是其中的生力军之一。本课题便是基于iOS系统的校园生活app的开发,校园生活app主要是为大学生生活提供辅助。本课题使用X-code作为开发软件,用Objective-C作为开发语言。本为则是对课题研究中所运用到的技术进行介绍及对app设计过程做详细讲解。关键字:校园生活;app;iOS;Development of campus life app based on iOS systemAbstractWith the rapid development of science and technology, the mobile phone becomes a tool for peoples daily life. Modern life is rich and colorful, simple to call and send text messages can not meet the needs of peoples lives, the auxiliary living powerful mobile phone came into being. Based iPhone with IOS system has the function of simple and easy to use interface, gasp in admiration, stability, because of its unique design and excellent experience welcomed by users. IOS as the most popular operating system platform, there are a lot of natural application service needs.In recent years, Apples mobile phone market in China is getting bigger and bigger, many people began to crazy pursuit of apple products. College students is one of the main force. This topic is based on the iOS system of the campus life app development, campus life app is mainly for college students to provide assistance. This topic uses X-code as the development software, using Objective-C as the development language. This is the subject of the study of the technology used to introduce and app design process to do a detailed explanation.目录摘要2Development of campus life app based on iOS system3Abstract3目录4第1章 绪论61.1选题背景61.2 研究目的及内容61.3 开发工具介绍61.4 开发语言的介绍7第2章 校园生活app设计82.1 开发环境82.2 需求分析82.3 架构设计82.4 界面设计92.4.1 新鲜事界面设计92.4.2 课表界面设计102.4.3 学霸界面设计142.4.4 个人信息界面20第3章 应用功能说明213.1 新闻功能213.2 课表功能213.3 课堂笔记223.4 考试查询243.5 考试倒计时243.6 图书馆24第4章 软件测试254.1 测试目的264.2 测试原则264.2.1 GoodEnough264.2.2 Bug的80-20原则264.3 测试方法27总结29参考文献30致谢31第1章 绪论1.1选题背景21世纪为信息时代,人们对于信息的需求日益增加,在快节奏的生活方式中,移动终端已然成为现代人不可缺少的一部分。人们通过移动设备获取的信息越来越多,移动设备也随之变得越来智能,功能也越来越强大,拥有iOS系统的苹果设备受到全世界人们的喜爱和追捧。2014年苹果在各国的 GDP排名为42位,而2015年苹果的营收额达到2310亿美元。在2015第一季度,中国超过美国成为苹果第一大市场。iOS应用app因其简洁的界面和良好的用户交互获得广大用户的喜爱和追捧,这些app种类众多,为我们生活提供这各种帮助及娱乐,iOS应用app开发者也如雨后春笋般迅速增长。1.2 研究目的及内容作为一个即将进入社会的特殊群体,大学生的生活广受人们的关注。没有一个大学生不希望拥有一个有规划,良好的大学生生活。本课题研究设计一款能帮助大学生规划设计自己的大学生活的校园生活app。随着学习方式的改变,初入大学的大学生往往会有一段迷茫阶段。本课题研究的内容是如何从生活、学习上辅助大学生规划大学生活。本课题设计的app是基于iOS系统,使用编程语言为Object-C。通过app,大学生可以准确的掌握大学课程,考试时间。大学课堂学习知识量比较大,大学生可以使用app来做课堂笔记,从而提高学习效率。1.3 开发工具介绍本课题使用的编程工具为Xcode。Xcode前身是继承自于NeXT的Project Builder。The Xcode suite 中包含有GNU Compiler Collection的自由软件 (apple-darwin9-gcc-4.2.1、apple-darwin9-gcc-4.0.1 、GCC默认的是第三个),它不仅支持C+、 C语言、Objective-C、Fortran、Objective-C+、AppleScript、Java、Python以及Ruby, 而且还提供Carbon、Cocoa以及Java等编程模式。协力厂商更提供了 Free Pascal, GNU Pascal,C#, Perl, Ada, Haskell 和 D语言。Xcode套件后台调试工具为 GDB。Xcode只能在苹果公司的Mac系统下运行,是苹果公司为开发者开发Mac OS X,iOS提供非开源集成环境的应用软件。无论你编写程序用Java、C、C+或Objective-C,在AppleScript里编写脚本,还是试图从另一个工具中转移编码,Xcode的编译速度都非常快,而且每次操作也都很快速轻松。1.4 开发语言的介绍本课题使用的语言为Object-C。1980年代初Brad Cox和Tom Love在公司Stepstone 发明Object-C。Objective-C,一般写作ObjC或OC,是扩充C的面向对像编程语言。它主要使用的系统为Mac OS X和GNUstep这两个使用OpenStep标准的系统,它是NeXTSTEP和OpenStep中的基本语言。Objective-C是一款非常实用的语言。它是一个用C写成十分小的运行库,因此应用程序的尺寸增加很小,和大多数OO系统使用特别大的VM执行时间取代了整个系统的运作方式不一样。Objective-C写成的程序一般都不会比其原始码大很多。并且其函式库(通常指没附在软件发行本)亦和Smalltalk系统使用极 大内存来开启一个窗口的情况不同。所以,Objective-C它不仅完全兼容标准的C语言(C+对C语言的兼容不仅仅在于大部分语法上,而在ABI(Application Binary Interface)上,而且还需要使用extern C这种显式的声明来和C函数进行兼容),而且在此基础上增加了面向对象编程语言特性以及Smalltalk的消息机制。第2章 校园生活app设计2.1 开发环境操作系统:Mac OS X 11.0.4开发语言:Object-C开发平台:Xcode2.2 需求分析经济上,iOS开发的工具Xcode完全免费,它的使用简单,轻巧独特,开发过程完全足够满足需求,并且可以带来十分可观的经济效益,是低投入高回报的一项工程。在经济上完全是可行的。技术上,iOS通过Object-C语言编码、UI界面搭建和网络解析获得一系列的数据来实现自己的功能。使用现有技术就完全可以实现系统的设计。社会可行性,中国作为苹果的最大市场,拥有iOS设备的大学生不再少数。手机不离身的大学生对于一款辅助自己大学生活的app是不会抗拒的。2.3 架构设计校园生活app使用的架构模式为MVC。MVC一种软件设计典范,其全名是Model View Controller,为模型(model)视图(view)控制器(controller)的缩写。其中Model(模型)表示应用程序的核心(比如数据库的记录列表),View(视图)为显示数据部分(用户能看见的部分)。Controller(控制器)处理输入(处理用户的操作,进行页面间的跳转)。校园生活app使用UITabBar分栏控制器作为根视图,如图2.1所示。创建四个试图控制器,将他们添加到UITabBar图2.1根试图上。系统架构如图2.2所示。图2.22.4 界面设计2.4.1 新鲜事界面设计新鲜事界面主要功能事为大学生提供时事新闻。所以使用UITableView作为视图控制器。在设计界面初期,为了提高效率,先使用假数据来展示页面呈现效果如图2.3所示。图2.32.4.2 课表界面设计课表界面,顾名思义为课程表界面。我采用ViewController视图控制器。使用View作为ViewController的根视图。如图2.4所示,导航上UIBarButtonItem图2.4来实现对课表的编辑触发。触发代码如下所示:-(void)xiugai:(UIBarButtonItem *)btn if (self.scheduleTable.userInteractionEnabled = NO) self.scheduleTable.userInteractionEnabled = YES; btn.title = 保存; else self.scheduleTable.userInteractionEnabled = NO; btn.title = 编辑; 由于手机屏幕大小有限,为了显示一周的课程,我采用了UIScrollView(滚动视图),创建35个UIButton来实现每节课程的详细信息,代码如下所示。 int num = 1; for (int i =0; i5; i+) for (int j = 0; j7; j+) UIButton * btn = UIButton allocinitWithFrame:CGRectMake(0+j*60, 0+i*130, 59, 129); btn.tag =num; btn.layer.cornerRadius = 5; btn.backgroundColor = UIColor brownColor; btn.titleLabel.numberOfLines = 0; btn.titleLabel.font = UIFont systemFontOfSize:10; btn addTarget:self action:selector(onclick:) forControlEvents:UIControlEventTouchUpInside; btn setTitle:NSString stringWithFormat:%n%n%,self.scheduleAy3*(num-1),self.scheduleAy3*(num-1)+1,self.scheduleAy3*(num-1)+2 forState:UIControlStateNormal; self.scheduleTable addSubview:btn; num+; 每个UIButton拥有一个点击事件,点击UIButton进入课表编辑界面。代码下:addScheduleViewController * addSv = addScheduleViewController allocinit; Schedule * sch = Schedule allocinit; sch.object = self.scheduleAy3*(btn.tag - 1); sch.teacher = self.scheduleAy3*(btn.tag - 1)+1; sch.addr = self.scheduleAy3*(btn.tag - 1)+2; addSv.sch =sch; self.navigationController pushViewController:addSv animated:YES;课表编辑有3个UITextField用来提供用户输入课程信息。导航上UIBarButtonItem来实现对用户输入信息传到上一界面及数据持久化保存的触发。代码如下:-(void)onclick:(UIButton *)btn UITextField * object = self.view viewWithTag:1; UITextField * teacher = self.view viewWithTag:2; UITextField * addr = self.view viewWithTag:3; Schedule * schedule = Schedule allocinit; schedule.object = object.text; schedule.teacher = teacher.text; schedule.addr = addr.text; self.block(schedule); self.navigationController popViewControllerAnimated:YES; addSv.block = (Schedule * schedule) btn setTitle:NSString stringWithFormat:%n%n%,schedule.object,schedule.teacher,schedule.addr forState:UIControlStateNormal; self.scheduleAy setObject:schedule.object atIndexedSubscript:3*(btn.tag-1); self.scheduleAy setObject:schedule.teacher atIndexedSubscript:3*(btn.tag-1)+1; self.scheduleAy setObject:schedule.addr atIndexedSubscript:3*(btn.tag-1)+2; /创建轻数据库单例 NSUserDefaults * user = NSUserDefaults standardUserDefaults; user setObject:self.scheduleAy forKey:scheduleAy; user synchronize; 2.4.3 学霸界面设计学霸这个界面的主要实现功能为:课堂笔记、成绩查询及考试倒计时。和课表界面一样使用ViewController作为根视图。设计有3个UIButton给别作为课堂笔记、考试查询及考试倒计时的触发交互。课堂笔记UIButton跳转进入课堂笔记列表界面。这个界面为用户所的课堂笔记的列表,故使用UITableView作为根视图如图2.5。在导航上添加一个UIBarButtonItem来实现对课堂笔记添加页面的跳转触图2.5 图2.6发。课堂笔记编辑界面如图2.6, 其中UITextField和UITextView作为用户输入交互。UIbutton来打开用户手机相机,代码如下:/打开调用手机相机- (IBAction)openCamery:(UIButton *)sender / 判断是否否能打开相机 if(UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera) self openIamgePicKer:UIImagePickerControllerSourceTypeCamera; else if (UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary) self openIamgePicKer:UIImagePickerControllerSourceTypePhotoLibrary; -(void)openIamgePicKer:(UIImagePickerControllerSourceType)type /将打开相册相机的视图控制器初始化 self.PickerCon = UIImagePickerController allocinit; / 设置打开的是相机还是相册 self.PickerCon.sourceType = type; self.PickerCon.delegate = self; /将用户的 信息 模态的方式弹出 self presentViewController:self.PickerCon animated:YES completion:nil;/选择某个文件是,被调用-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info UIImage * selectIamge = info valueForKey:UIImagePickerControllerOriginalImage; self.imageAy addObject:selectIamge; if (self.imageAy.count 3) self.imageAy removeObjectAtIndex:0; for (int i = 0;iself.imageAy.count;i+) self.imageViewAyi setImage:self.imageAyi; /图片 试图控制器 消失 picker dismissViewControllerAnimated:YES completion:nil;3个UIImageView来显示用户拍的信息。每个UIImageView添加动画,代码如图如下:/动画添加-(void)addanimal UIView beginAnimations:nil context:nil; UIView setAnimationDuration:1; /播放次数1 UIView setAnimationRepeatCount:1; /添加点击手势-(void)addtap self.imageViewAy = self.image1,self.image2,self.image3; for (int i = 0; iself.imageViewAy count; i+) UITapGestureRecognizer * tap = UITapGestureRecognizer allocinitWithTarget:self action:selector(Oncilck:); tap.numberOfTapsRequired = 1; self.imageViewAyi addGestureRecognizer:tap; /坐标纪录 UIImageView * iv= self.imageViewAyi; CGRect rect = iv.frame; self.arrAy addObject:NSValue valueWithCGRect:rect; 在导航上添加一个UIBarButtonItem来实现用户纪录课堂笔记的持久化保存并跳转到上一个界面。成绩查询UIButton触发网络请求进行成绩查询,跳转到成绩显示界面,代码如下:- (IBAction)finderResults:(UIButton *)sender UIStoryboard * mainStoryboard = UIStoryboard storyboardWithName:Main bundle:nil; testResultTableViewController * trtvc = mainStoryboard instantiateViewControllerWithIdentifier:testResultTableViewController; self.hidesBottomBarWhenPushed = YES; self.tabBarController.tabBar.hidden=YES; self.navigationController pushViewController:trtvc animated:YES; 考试倒计时UIButton触发跳转考试倒计时列表。考试倒计时列表用UITableView作为根视图如图2.7。UIButton跳转到新建倒计时界面如图2.8。图2.7 图2.8新建倒计时界面有4个UITextField为用户提供输入,其中两个用来输入考试时间及提醒时间,在编辑事触发选择器。代码如下:-(void)textFieldDidBeginEditing:(UITextField *)textField HSDatePickerViewController * hpvc = HSDatePickerViewController allocinit; hpvc.delegate = self; if (self.selectedDate) hpvc.date = self.selectedDate; self presentViewController:hpvc animated:YES completion: if (textField.tag = 1) self.panduan = YES; ; if (textField.tag = 2) self.panduan = NO; ;#pragma mark - HSDatePickerViewControllerDelegate-(void)hsDatePickerPickedDate:(NSDate *)date NSDateFormatter * dateFormatter = NSDateFormatter new; dateFormatter.dateFormat = yyyy-MM-dd HH:mm:ss; if (self.panduan =YES) self.testTime.text = dateFormatter stringFromDate:date; ; if (self.panduan = NO) self.remindTime.text = dateFormatter stringFromDate:date; self.selectedDate = date;创一个UIbutton来保存用户输入和跳转到前一页。代码如下:- (IBAction)saveTest:(UIButton *)sender textCountdown * tct = textCountdown allocinit; tct.testObject = self.testObject.text; tct.testAdress = self.testAdress.text; tct.testTime = self.testTime.text; tct.remindTime = self.remindTime.text; NSTimeInterval time = self.selectedDate timeIntervalSinceDate:NSDate date; if(time0) tct.remainingTime = 已过期; else int days = (int)time/3600/24; tct.remainingTime =NSString stringWithFormat:%d天,days; self.block(tct); self.navigationController popViewControllerAnimated:YES; 2.4.4 个人信息界面个人信息界面,两个UIbutton,一个用来跳转到登录界面,一个用来查询用户图书馆信息及跳转到图书馆界面。第3章 应用功能说明3.1 新闻功能新闻功能,用户可以通过该界面浏览实时新闻。3.2 课表功能课表功能如图3.1。用户点击“编辑”按钮后,按钮变成“保存”按钮,此图3.1时,点击课表可进入相应时间课程编辑如图3.2。在编辑界面的3个输入框内可输入课程科目,上课地点及授课老师。点击保存按钮可以保存输入信息。图3.23.3 课堂笔记点击课堂笔记按钮可进入课堂笔记功能,如图3.3。点击“添加“按钮图3.3进入笔记添加界面如图3.4。图3.4 图3.5添加界面中上面输入框可输入笔记标题,下面输入框可输入笔记内容。点击相机图标可打开相机。相机拍摄的照片可显示在添加界面(最多显示三张)。点击界面上的照片可以放大照片,如图3.5 。再次点击则图片缩小。图3.63.4 考试查询点击“考试查询“按钮考试查询界面如图3.6 。该界面显示的是用户考试成绩。3.5 考试倒计时点击“考试倒计时”可进入倒计时界面,该界面显示用户考试时间,地点,距离天数如图3.7所示。点击“新建倒计时”按钮,可以添加新的考试如图3.8图3.7 图3.8所示。 3.6 图书馆在个人信息界面,点击“图书馆”可进入图书馆页面。该页面用户可以查看图书馆借阅详细信息如图3.9。图3.9第4章 软件测试图 4.1软件测试指的是软件在生存周期中的检查、评审和确认操作。通俗的说就是软件运行,替用户体验的过程。测试的终极目的确保最终交给用户的软件产品符合用户需求,在交付之前尽可能的将软件问题找出并解决。软件测试流程如图4.1 。4.1 测试目的本课题测试要达到的目标:第一,确保“校园生活”完成课表、课堂笔记、考试倒计时、考试查询、图书馆功能。用户并不关心开发者的技有多高,软件功能有多强大,他们所关心的是能从这些功能中获得多少信息,得到什么帮助。第二,确保“校园生活”运行稳定,尽可能的发现漏洞并解决。稳定性是软件产品质量的基本要求。一款软件不可能说没有漏洞,测试便是将漏洞尽可能多的将漏洞找出并解决的方法。4.2 测试原则4.2.1 GoodEnough对于比较复杂的软件来说zero-bug其实是一种理想,good-enough才是我们的原则。Good-enough原则就是一种权衡投入和产出比值的原则:一个不充分的测试是不负责任的表现;过分的测试则是对资源的浪费,同时也是一种不负责任的表现。测试的操作困难在于:怎么界定测试不充分的标准,测试过分的标准。当前状况唯一可用的答案是:制定最低测试通过标准及测试内容,具体问题具体分析。4.2.2 Bug的80-20原则通常情况下,在分析、设计、复审和测试过程能够发现和避免80%的Bug,而软件测试又能找出其余Bug中的15%,在用户的大范围、长时间使用后才会曝露剩余最后的5%的Bug。因为测试只能够保证尽可能多地发现错误,并无法保证能够发现所有的错误。除上述原则外,测试应该尽早和不断进行。在测试前应制定严格的测试计划,注意测试的关联性。在设计测试例子时,要充分考虑到各种情况,同时对测试除出的软件错误必须有一个确认操作。软件测试的所有测试都必须追溯到用户的需求,毕竟用户才是软件的使用者。测试过程所产生的文档应妥善保管。4.3 测试方法软件测试的步骤分为单元测试、集成测试。测试的方法分为白盒测试、黑盒测试、静态测试和动态测试。单元测试是测试中最微小的模式,它对源程序中每一个单元进行测试,检查各个模块是否正确实现规定的功能,从而发现编码中活算法中的错误,它涉及编码和详细设计的文档。这个工作做好十分困难,它必须由程序员来做,因为要完成它就需要知道内部的程序设计和编码细节知识。对于单元测试除非软件有一个设计非常好的体系结构,否则还可能需要开发测试驱动器模块或测试套具来辅助测试。集成测试是在单元测试的基础上,将所有模块按照设计要求组成一个完整的系统进行测试,确定所有模块是否能一起工作并且不发生冲突。集成测试也被称组装测试或联合测试。静态测试是指不在计算机上实际执行程序,测试程序的动态行为,通过分析或检查源程序的文法、结构、过程、接口等以证明软件的正确性。静态测试采用人工检测和计算机辅助静态分析的手段对程序进行测试,检查每一个语句的正确性和作用,测试逻辑性较强部分的逻辑是否出现错误,如排序和打地鼠模块的多个部分,观察变量的遍历和相互拼接转换,如数组越界等问题。测试的思路与编写代码的思路要有所不同。动态测试时通过运行程序发现错误,本次测试在Xcode自带模拟器执行程序进行分析,测试通过人工或程序分析来证明软件的正确性。白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。白盒法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试的测试用例有4中方法:等价类划分、边界值分析、错误推测、因果图。通过测试,“校园生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》考前冲刺测试卷讲解含答案详解(培优)
- 自动驾驶汽车环境感知部件创新创业项目商业计划书
- 采矿设备能效评估创新创业项目商业计划书
- 教师招聘之《小学教师招聘》从业资格考试真题附参考答案详解(基础题)
- 教师招聘之《小学教师招聘》考前冲刺练习必考题附答案详解
- 教师招聘之《小学教师招聘》考试综合练习附完整答案详解(典优)
- 教师招聘之《小学教师招聘》练习题库及完整答案详解(有一套)
- 2025玛纳斯县司法局招聘编制外专职人民调解员(5人)笔试备考试题及答案解析
- 节能知识培训体系课件
- 节能环保知识培训通知课件
- 材料作文点拨课件+2025-2026学年统编版语文九年级上册
- 无线wifi安装协议书
- 中国智能驾驶商业化发展白皮书(2025):平权时代智驾商业落地的破局之路
- 2026年中考语文专项复习:新闻考点+答题方法知识点 讲义(含练习题及答案)
- 小学科学新教科版二年级上册全册教案(2025秋版)
- 婚内财产协议书2025
- 2025年国家卫生健康委医药卫生科技发展研究中心招聘考试笔试试题(含答案)
- 公司注册登记培训课件
- 中华医学会肺癌临床诊疗指南2025版解读
- 2025年宿州市公安机关公开招聘警务辅助人员110名笔试备考试题及答案解析
- 新课标(水平一)体育与健康《非移动性技能》大单元教学计划及配套教案(18课时)
评论
0/150
提交评论