苏州市职业大学
实习(实训)报告
名称 UDecide 常用随机选择器
20##年 1 月 7 日至 2013 年 1 月 12日共 一 周
院 系 计算机工程系
班 级 11软件测试
姓 名
系 主 任 李金祥
教研室主任 叶 良
指导教师 郝允辉马志明
陈小英 朱敏
目 录
目 录.................................................................................................................................... 0
一、题目说明............................................................................................................................ 1
1.1程序开发背景............................................................................................................... 1
二、总体设计............................................................................................................................ 1
2.1系统开发平台:........................................................................................................... 1
2.2系统流程图:............................................................................................................... 2
2.3功能结构图:............................................................................................................... 2
三、详细说明............................................................................................................................ 3
3.1系统实施....................................................................................................................... 3
四、遇到的问题和解决方法.................................................................................................... 7
五、实训总结.......................................................................................................................... 10
六、参考文献.......................................................................................................................... 11
附录(源程序代码).............................................................................................................. 11
一、 题目说明
本次实训是为期一周的苹果实训。实训基地在我校的苹果机房,共有4位指导老师。实训的目的在于让我们更熟悉、了解苹果产品,并在此基础上,使用自己所学的知识来开发一个小型手机应用软件。以此来让我们把所学知识应用于实际开发项目中,把理论知识与实践相结合。此外,让我们在实训过程中,养成团队协作的习惯。
生活需要决策,有时是艰难的决定。但是现在我们可以利用我们的手机让他们做出艰难的决定,
该小软件的特点:
*随机性强
*各个事件的概率都相同
1.1程序开发背景
苹果的所有应用程序都需要使用MAC OS上的开发工具xCode进行开发,这就要求苹果程序开发者要有一台苹果电脑。购买xCode开发工具。注册开发者账户并激活发布权限(每年99美金)。这些就是基础投资。不过,这些对于大学生们来说,却使不用考虑的,因为现在苹果公司与很多大学院校合作,只要大学生们加入ios大学生开发者计划,就可以免费获得开发者账户。如果开发的是网络功能的应用根据情况可能需要租用或购买服务器。
当开发者开发好苹果上的应用,可以在自己的设备上进行测试。测试好了。就进行发布评审。苹果公司会给开发者进行年龄限制的评级。类似软件评审(同类软件太多,你的没有新意,就不发布你的应用)。和开发者协商定价(还是开发商有定价权,但是有上限的),详细测试后会进行发布上线。
苹果的软件商店是个受管理的软件发布平台。大部分软件都不是苹果公司制作的。苹果公司主要做的是操作系统和开发工具。大部分应用都是第三方开发的。第三方有大牌软件公司也有软件开发爱好者。所有在线销售的软件和苹果公司三七分成(苹果公司拿取三成)。
二、总体设计
2.1.系统开发平台:
系统使用中文版设计;系统开发的平台是苹果iOS。苹果iOS是由苹果公司开发的手持设备操作系统。苹果公司最早于20##年1月9日的Macworld大会上公布这个系统, iOS与苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS,直到20##年6月7日WWDC大会上宣布改名为iOS。
Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X的应用程序。不管你用 C、C++、 Objective-C或 Java编写程序,在 AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快。每次操作都很快速和轻松。Xcode 4 允许你开发基于iOS的iPad、iPhone、iPod Touch 设备应用程序,只要开发者有Mac OS X Snow Leopard 10.6.2 以上版本 Mac OS 操作系统,便可安装ios sdk,如果开发者有iOS设备,便可让Xcode把应用程序部署到你的iOS设备上,不然,开发者还可以使用iPhone仿真器进行调试。Xcode提供了友好而方便的应用程序开发环境,这样开发者就可以开发出好的iOS应用程序了。
Objective-C是iOS的开发语言。Objective-C是C语言的升级版。 对初学者来说,Objective-C存在了很多令人费解的写法,实际上他们是非常优雅的。有C语言基础的程序员在专业老师的指导下,用1个月的时间就可以完全掌握Objective-C这门编程语言了。
Core Location是Mac OS X中其中一个软件框架。它主要用来存储应用程序在iOS 2.0检测设备的位置。它作为iPhone软件路线图在20##年3月6日开发者大会上宣布,并成为了iPhone的软件开发包的一部分。
2.2.功能结构图:
图1 流程模块图
三、详细说明
3.1 系统实施
代码:
- (IBAction)abcd {
int rNumber = rand() % 4;
switch (rNumber) {
case 0:
result.text = @"A";
break;
case 1:
result.text = @"B";
break;
case 2:
result.text = @"C";
break;
case 3:
result.text = @"D";
break;
default:
break;
}
}
此段代码所实现的功能为:使按钮“A/B/C/D”能够实现其功能—随机生成A、B、C、D中的一个并显示出来。只要按下此按钮,系统将调用随机数生成器函数rand()生成一个随机的整数并整除4取余,然后结合switch语句,结果会为A/B/C/D中随机的一个,用来实现按钮的功能,将最终结果显示出来,实现后的界面如图2所示:
图2 运行结果
代码:
- (IBAction)leftCenterRight {
int rNumber = rand() % 3;
switch (rNumber) {
case 0:
result.text = @"Left";
break;
case 1:
result.text = @"Center";
break;
case 2:
result.text = @"Right";
break;
default:
break;
}
}
此段代码所实现的功能为:使按钮“Left/Center/Right”能够实现其功能—随机生成Left、Center、Right中的一个并显示出来。一旦按下此按钮,系统将调用随机数生成器函数rand()生成一个随机的整数并整除3取余,然后结合switch语句,结果会为Left/Center/Right中随机的一个,用来实现按钮的功能,将最终结果显示出来,实现后的界面如图3所示:
图3 运行结果
代码:
- (IBAction)oneToHundred {
int rNumber = rand() % 100;
result.text = [[NSString alloc] initWithFormat:@"%d",rNumber];
}
此段代码所实现的功能为:使按钮“1-100”能够实现其功能—随机生成1-100之间的一个整数并显示出来。若按下该按钮,系统会调用随机数生成器函数rand(),随机生成一个1-100之间的整数,实现后的界面如图4所示:
图4 运行结果
四、遇到的问题和解决方法
1.代码 int retVal = UIApplicationMain(argc, argv, nil, nil); 出现错误,致使运行后屏幕上什么也没有,如下图所示:
图5 运行后的屏幕
为了找出错误,我一遍一遍的做,但都没有成功,我们组也没有一个人做出来,最终,只能请教老师了,老师看了看,帮我们重新新建了一个,重新演示了一遍。看完了老师的演示,我终于知道了错误所在。我们的按钮没有与文件关联,关联之后,错误就消失了。
2.运行后,屏幕上本来应该显示10个按钮,但是只有8个按钮,有两个不见了。如图所示:
图6 错误截图
为了解决这个问题,我们组成员一起寻找错误,将代码看了一遍,发现并没有错误,最终,知道了错误应该在图上,我们有仔细将图检查,在与运行后的屏幕对比,后来发现可能屏幕上的按钮有重复,将后面的按钮覆盖住了,然后我们开始调整按钮的位置,一次又一次的调整、调试之后,手机屏幕上的按钮终于能够正常显示了。
五、实训总结
在我的心目中,苹果是一个传奇。这次实训中,有幸接触了我心目中的那个传奇—苹果电脑。早就听说苹果很好,接触之后才发现,果然名不虚传啊!人机交互界面是那么的漂亮,不仅如此,操作系统的稳定性也是那么好。它有着昂贵的价格,从它身上,我相信了“一份价格一分货”那句话。
这次实训很成功,首先,我要感谢指导我的四位老师,没有你们的帮助,我的实训不可能这么顺利的完成的。这周,您们辛苦了!
通过此次短暂的课程设计,我深有感触。从一开始的构思再到今天写下这份总结。期间时间虽短但是也学到了不少的知识。在实训中,设计手机小软件时发现有很多错误,有的时候要解决一个错误反反复复会花上很多时间。在做的过程中,会有很多意想不到的错误,其中有的错误到最后解决的时候却是发现犯得很幼稚,不过这样的错误多了,在不知不觉中对一些命令知识分外的熟悉了起来,并且自身的排错能力也得到很大的提高。设计过程中的一些很小的问题,虽然不明显,却可以影响到整个软件运作,可见,再小的错误都不能有,我们要有一颗细心与耐心。这样一个小小的手机应用软件,却是通过一次次的搭建、修改之后的结果,真是令人感慨万千。
实习过程中,我发现平时学习的知识与实践环节所用到的有一定的差距,往往我觉得自己掌握的很好或者自认为熟练的技术却在此次实践环节中往往出问题,书本上的知识只提供方法的借鉴,实践中自己必须摸索出适合具体工作的方法,这一切都离不开钻研精神与勤学好问的精神。在人与人相处过程中我收获更大,首先要谦虚谨慎,不能自以为是,认为自己懂得很多,而仅仅埋头苦干,而不向他人请教,工作不但是实践与应用的过程,同时也是学习的过程,我们必须加强与他人的沟通学习,以便获得与他人的交流。
这次课程设计的时间很紧迫,再加上各方面的经验不足,遇到很多问题,但我通过网上查询、咨询同学与老师去解决了那些问题。总的来说,这次课程设计对我很有帮助,让我获益匪浅,使我对苹果产品有了更进一步的了解,在这方面的知识有了不小的提高。
六、参考文献
[1] 刘铭?iPhone程序开发基础教程?电子工业出版社?20##-07
[2] Dave Mark,Jack Nutting,Jeff LaMarche, 毛姝雯?iOS5基础教程/移动开发系列/图灵程序设计丛书 ?人民邮电出版社?20##-09
附录(源程序代码)
ViewController.m:
//
// ViewController.m
// test2
//
// Created by stu24 on 13-1-8.
// Copyright (c) 20##年 stu24. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (IBAction)abcd {
int rNumber = rand() % 4;
switch (rNumber) {
case 0:
result.text = @"A";
break;
case 1:
result.text = @"B";
break;
case 2:
result.text = @"C";
break;
case 3:
result.text = @"D";
break;
default:
break;
}
}
- (IBAction)agreeDisagree {
int rNumber = rand() % 2;
switch (rNumber) {
case 0:
result.text = @"Agree";
break;
case 1:
result.text = @"Disagree";
break;
default:
break;
}
}
- (IBAction)headsTails {
int rNumber = rand() % 4;
switch (rNumber) {
case 0:
result.text = @"Heads";
break;
case 1:
result.text = @"Tails";
break;
default:
break;
}
}
- (IBAction)leftCenterRight {
int rNumber = rand() % 3;
switch (rNumber) {
case 0:
result.text = @"Left";
break;
case 1:
result.text = @"Center";
break;
case 2:
result.text = @"Right";
break;
default:
break;
}
}
- (IBAction)lottery {
int rNumber = rand() % 3;
switch (rNumber) {
case 0:
result.text = @"Buy";
break;
case 1:
result.text = @"Sell";
break;
case 2:
result.text = @"Hold";
break;
default:
break;
}
}
- (IBAction)oneToHundred {
int rNumber = rand() % 100;
result.text = [[NSString alloc] initWithFormat:@"%d", rNumber];
}
- (IBAction)positiveNegative {
int rNumber = rand() % 2;
switch (rNumber) {
case 0:
result.text = @"Positive";
break;
case 1:
result.text = @"Negative";
break;
default:
break;
}
}
- (IBAction)russianRoulette {
int rNumber = rand() % 6;
switch (rNumber) {
case 0:
result.text = @"BANG!!!";
break;
default:
result.text = @"Click...";
break;
}
}
- (IBAction)trueFalse {
int rNumber = rand() % 2;
switch (rNumber) {
case 0:
result.text = @"True";
break;
case 1:
result.text = @"False";
break;
default:
break;
}
}
- (IBAction)yesNo {
int rNumber = rand() % 2;
switch (rNumber) {
case 0:
result.text = @"Yes";
break;
case 1:
result.text = @"No";
break;
default:
break;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
ViewController.h:
//
// ViewController.h
// test2
//
// Created by stu24 on 13-1-8.
// Copyright (c) 20##年 stu24. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{
IBOutlet UILabel *result;
}
- (IBAction)abcd;
- (IBAction)agreeDisagree;
- (IBAction)headsTails;
- (IBAction)leftCenterRight;
- (IBAction)lottery;
- (IBAction)oneToHundred;
- (IBAction)positiveNegative;
- (IBAction)russianRoulette;
- (IBAction)trueFalse;
- (IBAction)yesNo;
@end