版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-3"\h\u18932摘要 261Abstract 428031引言 5288152ios系统的简介与发展 6172012.1简介 6171092.2发展 660163开发环境与实现技术 7123323.1开发环境 7117223.1.1IPhone以及IPhoneOS 7314813.1.2Xcode与InterfaceBuilder 8108833.1.3CoreData 10233143.2实现技术 11160163.2.1ObjectiveC介绍 11236903.2.2WebServices相关 12290394软件需求分析 13198944.1业务流程分析 13291004.2特性需求分析 13323434.3数据流分析 14178904.4功能需求分析 14248455软件设计 15191605.1软件总体结构设计 15270145.2软件各大模块设计 1639655.2.1进货模块设计 1653825.2.2销售模块设计 16260635.2.3收支查询模块设计 16143905.2.4资金管理模块设计 16307065.2.5库存管理模块设计 17174976软件实现 18273936.1进货功能的实现 1918906.2销售功能的实现 2195666.3收支查询功能的实现 23177916.4资金管理功能的实现 24155006.5库存管理功能的实现 25163926.6用户管理功能的实现 26283787总结 287425致谢 2928520参考文献 30摘要随着手机的普及,在生活中人们经常提到苹果手机,看到苹果手机的广告,也有很多人拿着苹果手机,那么谁知道苹果手机为什么这么受迎呢,它有什么强大的功能呢,我们能不能在苹果手机上设计一个软件呢?本文基于IOS平台进销存的设计与实现进行了研究。简单介绍了IPhone手机背景以及IPhone手机软件开发环境、开发语言和运行环境,阐述了选择IPhone作为开发平台的原因,分析了基于IOS平台的进销存软件的市场需求以及开发的可行性,然后对进销存软件进行需求分析和系统设计,探讨了进销存软件的开发方法和实现技术。本软件客户端开发基于MacOS下的Xcode平台,运行于IPhone手机平台,使用Object-C作为客户端的开发语言,Coredata作为数据管理工具。本文详细阐述了经销存软件开发的目的、设计思想,完成了对该系统各功能模块的实现。关键词:IPhone;进销存软件;Xcode;Object-C;MacOSAbstractWiththepopularityofcellphone,inreallifepeopleoftenmentionapplemobilephone,seeapplemobileadvertising,alsohavealotofpeoplewithaapplemobilephone,sowhoknowsapplemobilephone?Whysopopular,ithasthefunctionofthepowerful?Canwedesignaapponanapplemobilephone?DesignandimplementationofPSS(Purchase,salesandstore)softwarebasedontheIPhonewasstudiedinthepaper.IntroducebackgroundofIPhonemobilephonessimplely,introducedevelopmentenvironment,developmentlanguageandtheoperationenvironmentofIPhonemobilephonesoftware.ExpoundstheresaonwhychooseIPhoneasdevelopmentplatform.AnalysisthemarketrequirementanddevelopmentfeasibilityofPSSsoftwarebasedontheIPhone,thenanalysisdemandofsalesmanagementsoftwareanddesignsalesmanagementsoftware.ExplorethePSSsoftwaredevelopmentmethodsandtechniques.ThissystembasedontheMacOSclientdevelopmentplatform,operationXcodeundertheIPhoneinmobileplatform.UseObject-Casaclientdevelopmentoflanguage.AnduseCoredataasatoolfordatamanagement.ThepaperexpoundspurposeanddesignthoughtofPSSsoftware,completetheimplementationofthefunctionalmodules.Keywords:IPhone;PSSSoftware;Xcode;Object-C;MacOS1引言世界在发展,社会在进步,在信息化时代的今天,人们对于手机有了进一步的了解与应用。随着科技的发展,智能手机已经成为了今天手机市场的主流产品,现在大部分的人都在用智能手机。智能手机的发展势不可挡。现在常用的智能手机系统有:苹果ios智能系统、安卓智能系统、塞班智能系统、软智能手机系统、黑莓智能系统等等。毫无疑问,手机的智能化是手机的一场革命。互联网应用的发展和3G网络的成熟,3G智能手机成为最重要的终端载体,吸引了越来越多消费者利用智能手机网上冲浪、收发电子邮件、看电影、打游戏、视频对话等。智能手机让人们的生活变得越来越便捷,这就使得智能手机成为了消费者追捧的对象。2005年,苹果公司以“Purple2”为代号开发iPhone。2007年11月,iPhone获《时代》杂志选为“2007年度最佳发明”。2008年6月9日,苹果于全球开发者大会2008(WorldwideDeveloperConference2008)上发表新一代的iPhone–iPhone3G及iPhone2.0固件,有8GB容量(黑色)和16G容量(黑白两色)等两种选择。2008年7月11日,全球22个国家及地区率先发售iPhone3G。从该款手机开始,iPhone系列开始支持WCDMA标准(3GPP)。2009年6月8日,苹果在全球开发者大会2009上宣布了新一代的iPhone3GS,其于6月19日开始发售。2010年6月7日,苹果于全球开发者大会2010上发表新一代的iPhone4,有16GB以及32GB两种容量,并有黑白两色可以选择。6月24日,黑色iPhone4在美国、法国、德国、英国、日*本五个国家率先上市,随后扩展至全球。而白色iPhone4由于工艺问题迟迟未能上市,但至4/28已经开始贩售于全球多国。2011年1月11日,Verizon联合苹果举行发布会,发表了第一款基于CDMA(3GPP2)标准的iPhone4,2011年2月在美国发售。该款手机不兼容GSM与WCDMA标准。2011年10月4日,苹果公司在美国加州古柏迪诺的总部举办“Let’stalkiPhone”,发表iPhone4S。2012年9月13日,苹果公司在美国旧金山芳草地艺术中心正式发布新一代产品iPhone5。苹果ios系统作为高端机的智能系统截止至2013年3月,根据Canalys的数据显示,iOS已经占据了全球智能手机系统市场份额的18%,并在逐渐的增加。2ios系统的简介与发展2.1简介苹果iOS是由苹果公司开发的手持设备操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPodtouch、iPad以及AppleTV等苹果产品上。iOS与苹果的MacOSX操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。原本这个系统名为iPhoneOS,直到2010年6月7日WWDC大会上宣布改名为iOS。iPhone和iPad提供的用户体验令人难忘,它非常直观,即使是新手,在没有用户手册的情况下也能够使用,这样的技术实在罕见。12.2发展iOS最早于2007年1月9日的苹果Macworld展览会上公布,随后于同年的6月发布的第一版iOS操作系统,当初的名称为“iPhonerunsOSX”。最初,由于没有人了解“iPhonerunsOSX”的潜在价值和发展前景,导致没有一家软件公司、没有一个软件开发者给“iPhonerunsOSX”开发软件或者提供软件支持。于是,苹果公司时任CEO斯蒂夫.乔布斯说服各大软件公司以及开发者可以先搭建低成本的网络应用程序(WEBAPP)来使得它们能像iPhone的本地化程序一样来测试“iPhonerunsOSX”平台2。2007年10月17日,苹果公司发布了第一个本地化IPhone应用程序开发包(SDK),并且计划在2月发送到每个开发者以及开发商手中。2008年3月6日,苹果发布了第一个测试版开发包,并且将“iPhonerunsOSX”改名为”iPhoneOS“。2008年9月,苹果公司将iPodtouch的系统也换成了”iPhoneOS“。2010年2月27日,苹果公司发布iPad,iPad同样搭载了”iPhoneOS”。这年,苹果公司重新设计了“iPhoneOS”的系统结构和自带程序。2010年6月,苹果公司将“iPhoneOS”改名为“iOS”,同时还获得了思科iOS的名称授权。2010年第四季度,苹果公司的iOS占据了全球智能手机操作系统26%的市场份额。2011年10月4日,苹果公司宣布iOS平台的应用程序已经突破50万个。2012年2月,应用总量达到552,247个,其中游戏应用最多,达到95,324个,比重为17.26%;书籍类以60,604个排在第二,比重为10.97%;娱乐应用排在第三,总量为56,998个,比重为10.32%。3开发环境与实现技术3.1开发环境3.1.1IPhone以及IPhoneOSIPhone由苹果公司(Apple,Inc.)首席执行官史蒂夫·乔布斯在2007年1月9日举行的Macworld宣布推出,2007年6月29日在美国上市,将创新的移动电话、可触摸宽屏iPod以及具有桌面级电子邮件、网页浏览、搜索和地图功能的突破性因特网\o"通信"通信设备这三种产品完美地融为一体。IPhone引入了基于大型多触点显示屏和领先性新\o"软件"软件的全新用户界面,让用户用手指即可控制IPhone。IPhone还开创了移动设备软件尖端功能的新纪元,重新定义了移动电话的功能。IPhoneOS由两部分组成:\o"操作系统"操作系统和能在IPhone和iPodtouch设备上运行原生程序的技术3。由于IPhone是为移动终端而开发,所以要解决的用户需求就与MacOSX有些不同,尽管在底层的实现上IPhone与MacOSX共享了一些底层技术。如果你是一名Mac开发人员,你可以在IPhoneOS发现很多熟悉的技术,同时也会注意到IPhoneOS的独有之处,比如多触点接口(Multi-Touchinterface)和加速器(accelerometer)4。IPhone手机中有很多新鲜的技术是需要我们学习的,比如多触点技术以及控制感应器的技术。如图2.1为IPhone和iPodTouch。图2.1IPhone和iPodTouch在SDK发布之前,第三方的程序是不能在IPhone上运行的。随着SDK的发布,IPhone的爱好者便可以开发在IPhone上运行的应用程序了。IPhoneSDK包含了所需的资料和工具,使用这些工具可以开发、测试、运行、调试和调优程序以适合IPhoneOS5。XcodeIDE已经更新到支持IPhoneOS的开发。除了提供代码的基本编辑、编译和调试环境,当在IPhone或者iPodtouch设备上调试你的程序,Xcode还提供了运行点(launchingpoint)功能。不知道这是怎样一个功能,估计就是在实际设备上设置断点,并可以看到运行的log信息。同时,Xcode还可以在IPhone模拟器中运行程序,模拟器就是指在Macintosh电脑上模拟基本的IPhoneOS环境的平台6。模拟器对于学习IPhone的编程流程和语言是相当方便的。苹果公司证实IPhone会执行(除去不需要元件的)最佳化OSX操作系统,并占用8GB或16GBflash\o"内存"内存中的700MB空间,可以执行内建及未来由苹果提供的应用程式。苹果并未说明麦金塔和IPhone两者的操作系统(OSX)间的实质差异,惟IPhone使用的处理器是ARM,与桌上型麦金塔使用的x86或PowerPC处理器不同,所以两者使用的OSX版本也不相容7。第三方应用程式目前仅能透过Safari在控制环境中执行,完整应用程式目前仅能来自苹果。苹果公司对于更新IPhone操作系统倾向提供一种更为流畅、类似于WindowsUpdate,MacOSX和iPod的更新方式,和其他移动电话比较起来有更吸引顾客的优势。3.1.2Xcode与InterfaceBuilder在IPhone手机软件的开发过程中主要使用这两个程序:Xcode和InterfaceBuilder。而在这些IDE内部,gcc作为编译器来编译代码,gdb来调试8。Xcode是Apple自己开发的,只运行在MacOSX平台下的IDE。如果你想真正了解MacOSX平台上的开发,就应该了解它。当然,MacOSX实现了POSIX,固然也支持传统的UNIX编程环境;Eclipse等Java开发工具也有MacOSX版。不过这些,你在Linux或者Windows平台也能体验到。Xcode也并不神秘,Apple并没有自己特有的编译器(尽管Mac上的Gcc是经苹果修改过的版本),创建项目的时候,Xcode还是会生成并执行一条条的Gcc和ld的命令。所以如果你有足够的UNIX经验(并且知道到哪里找需要用的Framework),完全可以在命令行编译一个完整的Cocoa应用程序。其实Xcode提供了很多功能,使你无论在创建项目、设计、修改代码还是编译等各个环节都能收益,恐怕你很难找到一个不使用它的理由。事实上,自从MacOS10.4引入了UniversalBinary的概念以后,Xcode几乎成为了大多数Mac开发者的唯一选择9。Xcode是免费的,只要你有一台Mac,随机带的安装盘里就有Xcode,升级是免费的(不过如果使用的是MacOS10.5以前版本的OS,你将不能运行Xcode3.0或以上的版本)。不管你用C、C++、Objective-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现Xcode编译速度极快。每次操作都很快速和轻松。Xcode2.0的虚拟模型和设计功能让你可以更轻松的开发和维护应用程序。只需选择应用程序中想要编写的部分,然后模型和设计系统将自动创建分类图表,不仅可以显示编码,还可以让你进行浏览。MacOSXCoreDataAPI帮你的应用程序创建数据结构。更棒的是,它还自动提供撤消、重做和保存功能,无需编写任何编码10。Xcode整合的AppleReferenceLibrary为所有的苹果电脑公司开发者文件提供一个单独的搜索和显示界面,这些文件包括来自苹果电脑公司网站的在线文件,以及存放在你电脑上的文件。新的参考资料库甚至可以帮你将定期更新资料下载到你的电脑,保持文件的最新状态。Xcode将帮你快速找到最新的答案。Xcode2.0的核心部分是苹果电脑公司下一代业界标准的gcc编译器gcc4.0。新的编译器利用许多先进的最优化技术帮你从现存编码中获得更多性能。从超级计算世界借鉴来的自动向量化(Auto-vectorization)技术可以帮助你释放每台PowerPCG4和G5系统中速度引擎的能量,而不需要编写向量化编码。其他的最优化工具则支持反馈定向的最优化,以及隐藏模块分析。借助MacOSXTiger中的新64位支持,Xcode将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。Xcode将为你提供工具来建立并调试适合PowerPCG5和MacOSXTiger的64位应用程序,还可以让你创建包含32位和64位执行能力的FatBinaries。众所周知,在构建中引进多重处理器可以提高速度,Xcode能帮你实现这个明显的结论。利用支持Rendezvous的分布式构建功能,可以轻易地把编译工作量分散到闲置的电脑上来寄放构建,或者更好是在单独的电脑上开发一个专门的Xserve构建寄放区,快速处理那些耗时的任务。苹果电脑公司的MacOSX综合开发环境Xcode为各种类型的MacOSX软件项目提供项目编辑、搜索和浏览,文件编辑,项目构建和调试设备等功能。Xcode可用来辅助开发应用程序、工具、架构、数据库、嵌入包、核心扩展和设备驱动程序。Xcode支持开发人员使用C、C++、ObjectiveC、AppleScript和Java。Xcode能够和MacOSX里众多其它的工具协作,例如综合用户界面结构应用程序;编译器如gcc、javac和jikes;还有调试工具如gdb。另外,你可以用AppleScriptStudio组增加一个Aqua界面到系统和应用程序脚本、命令行工具、以及网络应用程序中。以上三者无论如何都能在任何平台组合成最强大的脚本环境。调试全屏幕应用程序(比如游戏)具有很大的挑战性。将调试窗口放在什么位置呢?有了Xcode2.0的绘图远程调试,所有强大的Xcode调试功能(例如数据格式程序、Fix、Continue)都可以在远程机器上用来调试应用程序。利用与远程调试阶段的加密连接,Xcode可以保证你的数据安全。2007年10月17日,史提夫·贾伯斯在一封张贴于苹果公司网页上的公开信上宣布软件开发工具包。它将在2008年2月提供给第三方开发商。软件开发工具包于2008年3月6日发布,并允许开发人员开发IPhone和iPodtouch的应用程序,并对其进行测试,名为“IPhone手机模拟器”。然而,只有在付出了IPhone手机开发计划的费用后,应用程序才能发布。自从Xcode3.1发布以后,Xcode就成为了IPhone软件开发工具包的开发环境11。InterfaceBuilder是一个GUI构建工具,通过它你可以创建窗口布局并且把各个组件添加到窗口中,InterfaceBuilder使程序员能方便的创建各种对象并编辑它们的属性,这些对象多数是用户界面元件,比如按钮和文本输入框,但是也可以是你自定义的对象。为了生成GUI,InterfaceBuilder并不是必需的,实际上MacOSX下所有的用户界面元素都可以使用代码直接生成;但InterfaceBuilder能够使开发者简单快捷的开发出符合MacOSXhuman-interfaceguidelines的GUI。通常你只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了。InterfaceBuilder使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。3.1.3CoreDataCoreData是\o"MacOSX"MacOSX中\o"Cocoa"Cocoa
\o"API"API的一部分,首次在\o"MacOSXv10.4"MacOSX10.4
Tiger与\o"IOS"iOS
3.0系统中出现。它允许按照\o"实体-属性-值模型(页面不存在)"实体-属性-值模型组织数据,并以\o"XML"XML,\o"二进制文件"二进制文件或\o"SQLite"SQLite数据文件的格式将其\o"串行化"串行化。CoreData允许用户使用代表实体和实体间关系的高层对象来操作数据。它也可以管理串行化的数据,提供\o"对象生存期(页面不存在)"对象生存期管理与\o"Objectgraph(页面不存在)"objectgraph管理,包括存储。CoreData直接与\o"SQLite"SQLite交互,避免开发者使用原本的\o"SQL"SQL语句。就像\o"Cocoa绑定(页面不存在)"Cocoa绑定在\o"模型-视图-控制器"模型-视图-控制器设计中做了很多控制器的工作一样,CoreData做了很多数据模型的工作。它的主要任务是负责数据更改的管理,串行化到磁盘,最小化内存占用,以及查询数据。CoreData使用包括实体和实体间关系,以及查找符合某些条件的实体的请求等内容的高层数据模型描述数据。开发者可以在纯对象层上查找与管理这些数据,二不必担心存储和查找的实现细节。\o"InterfaceBuilder"InterfaceBuilder中的控制器对象可以直接获取与管理实体,若与Cocoa绑定结合,则可以在不写自定义代码的情况下让用户界面显示、修改与管理数据模型中的大部分内容12。CoreData可以将数据存储为XML,二进制文件或SQLite文件。在\o"MacOSXv10.5"MacOSX10.5
Leopard及以后的版本中,开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式。每种方法都有其优缺点,例如XML的可读性,SQLite的节约空间等。CoreData的这一方面类似于原始的\o"EnterpriseObjectsFramework(页面不存在)"EnterpriseObjectsFramework(EOF)系统,但EOF中开发者可以使用相对简洁的查询方式,而在CoreData中,只能使用一个语法类似SQL子集的查询语言,称为\o"Predicate(页面不存在)"Predicate。CoreData是标准化的,可以自由的读写Xcode数据模型文件(通常是.xcdatamodel文件)。与EOF不同,CoreData目前没有设计多用户或多线程访问模式。模型迁移通常也需要代码,若其它开发者依赖于某个数据模型,则该数据模型的设计者可能在模型发生改变时需要与新数据模型一起提供版本转换代码。3.2实现技术3.2.1ObjectiveC介绍Objective-C2.0是MacOSX系统和iPhone平台下的标准程序设计语言。主要是因为MacOSX技术源自NextStep的OpenStep操作系统,因为OPENSTEP的软件架构(framework)都是用Objetive-C写成,所以MacOSX上的开发最佳语言自然也就是Objective-C了13。Object-C是由BradCox在80年代初在第一个纯面向对象语言Smalltalk基础上写成。后来他创立了StepStone公司从事Objective-C的推广。1988年,SteveJobs的NextStep采用Objective-C作为开发语言,1992年GNUgcc编译器中包含了对Objective-C的支持(gnu-objcruntime),DennisGlating写了第一个run-time。RichardStallman第二个,最近的是KrestenKrabThorup在丹麦读大学时写的,他后来到NextStep工作。目前,Objective-C是MacOSX的首要开发语言,也是GNUstep在Linux和其它平台上的开发语言。Objective-C是ANSIC的超集,扩展了C语言使它具备面向对象设计的能力,如类,消息和继承。Objective-C程序中可以利用现有的C语言代码,使其利用现有的软件架构。这也是为甚莫Objective-C过去多年间能够成为一种流行的用户界面开发语言而且至今没有消亡,因为一方面用它可以实现底层系统编程,另一方面可以支持利用动态架构进行开发。Objective-C和C++的比较(1)单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。(2)动态:Objective-C是动态定型(dynamicalytyped)所以它的类库比C++要容易操作。Objective-C在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类14。C++跟从面向对象编程里的Simula67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula67学派更安全,因为大部分错误可以在编译时查出。而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr67那里就无法通过。3.2.2WebServices相关WebServices是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.WebService可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务15。4软件需求分析4.1业务流程分析在软件需求分析中,当要对如见的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关业务流程的资料组织在一起作进一步的流程分析。业务流程分析可以帮助我们更好地了解此项业务的具体处理过程,发现和处理进销存软件工作中的错误和疏漏,修改和改进进销存软件中不合理的部分,优化业务处理流程。通过对进销存软件的需求分析,确定了进销存软件各个模块的业务流。整个软件各个模块的业务流如图4-1所示。图4-1系统业务流图4.2特性需求分析本软件基于IOS系统,客户端运行在IPhone手机上,开发必须基于MacOS下的Xcode开发环境。4.3数据流分析用户进入系统,进入功能列表界面,可使用的功能模块有进货模块,销售模块,收支查询模块,资金管理模块,库存管理模块,用户管理模块,选择具体功能模块进入。进入各个模块后,从数据库里取出对应的数据显示在界面上,编辑数据时再将新的数据写入数据库里的对应数据里。4.4功能需求分析在这个过程中销售员需要掌握货物的销售,库存状况,资金的动态以及产品详细信息等等。进销存软件的系统需求如下:(1)进货:管理进货相关信息。(2)销售:管理销售相关信息。(3)收支查询:管理收支。(4)资金管理:管理资金流向。(5)库存管理:管理库存信息。(6)用户管理:管理用户信息。5软件设计软件设计是软件开发过程中重要阶段。在这一阶段中,要根据前一阶段软件分析的结果,在已经获得的需求分析基础上,进行系统设计。软件设计包括两个方面,首先是总体结构的设计,其次是具体物理模型的设计。软件设计的主要目的就是为下一阶段的系统实现(如编程、调试、试运行等)制定蓝图。软件设计阶段主要任务就是在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾划出新系统的详细设计方案。本阶段的主要任务是设计进销存软件的程序结构,并确定程序组成模块,以及各模块之间的关系。5.1软件总体结构设计客户通过IPhone手机上的客户端进入软件,可以选择相应的六大功能,选择具体功能进入以后,从数据库提取对应数据显示在其界面上,用户可查询到所需资料,也可对其进行相应的操作,编辑数据后会把新的数据保存到数据库里。用户单击Home键退出系统。如图5.1图5.1系统主要功能图进货模块:进货以及查询进货记录。销售模块:销售以及查询销售记录。收支查询模块:查询收入和支出的详细情况。资金管理模块:查询资金流动方向。库存管理模块:查询产品的库存以及产品相信信息。用户管理模块:查询用户信息及其修改。5.2软件各大模块设计本系统如图所示,主要实现以下一些功能,如图5.2:图5.2系统功能模块图5.2.1进货模块设计当用户进入进货功能模块以后,如果是新商品,可以添加新商品,如果商品存在,可以直接选择进货,或者手动输入商品的名称进货。同时,还可以查询所有商品的进货记录。5.2.2销售模块设计当用户进入销售功能模块以后,可以直接选择库存里的商品,然后输入数量销售,或者手动输入商品的名称销售。同时,还可以查询所有库存商品的销售记录。5.2.3收支查询模块设计当用户进入收支查询功能模块以后,可以看到当天的收入与支出,并且可以查询其详情,收入与支出分别来自何处。另外,也可以点击查询日期选择用户想知道的日期来查询当天的具体情况。5.2.4资金管理模块设计当用户进入资金管理功能模块以后,可以看到目前的资金总数。当资金不够时,可以往里投入资金,当资金充裕时,也可以提取资金。另外也可以查询投入或者提取的详情。5.2.5库存管理模块设计当用户进入库存管理功能模块以后,是一个列表,列表会列出当前的库存,下面会写出商品进价,售价,数量等信息。也可以点击编辑按钮来修改商品的属性。5.2.6用户管理模块设计当用户进入库存管理功能模块以后,可以看到当前账户信息,也可以对其信息进行修改。另外可以退出当前账号。6软件实现在实际的系统开发中存在多种开发方法,如结构化方法、原型化方法、面向对象方法等等。结构化方法也可称为面向功能的软件开发方法或面向数据流的软件开发方法,首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后用结构化编程(SP)进行程序设计。原型化方法一般由以下四个阶段组成:(1)确定用户需求,(2)开发原始模型,(3)征求用户对原始模型的改进意见,(4)修改原型。原型化方法比较适用于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不复杂时采用该方法是比较好的。面向对象方法是当前计算机业界中最流行的方法,包括面向对象分析(00A),面向对象设计(OOD)、面向对象编程(OOP)。这是一种以对象建模为基础,自底向上和自顶向下相接合的方法。面向对象技术在需求分析、可靠性和可维护性这三个软件开发的关键环节和质量指标上有了实质性的突破,基本解决了这些方面存在的严重问题。采用面向对象的语言编写程序,更接近于现实世界,并符合人类的思维习惯,从而使应用程序具有更高的可读性、易维护性以及可扩充性。客户打开IPhone手机中的客户端软件后,进入客户端软件的主界面,即登录界面如图6.1。图6.1用户登录界面当登录成功以后即进入主界面,上方显示当前总资金。中间有六个按钮,即六大功能模块,如图6.2。图6.2主界面6.1进货功能的实现 用户点击主界面的进货按钮后进入进货界面,如果进货的商品不存在,可以选择添加新商品如图6.3,如果货物存在可以直接选择如图6.4,点击一个产品后进入另一个界面如图6.5输入数量点击确定即可进货,另外也可以查询记录,如图6.6。图6.3添加新商品图6.4选择进货商品图6.5进货商品图6.6进货记录6.2销售功能的实现用户点击主界面的销售按钮后进入销售界面如图6.7,点击一个产品后进入另一个界面如图6.8输入数量点击确定即可销售,另外也可以查询记录,如图6.9。图6.7选择销售商品图6.8销售商品图6.9销售记录6.3收支查询功能的实现用户点击主界面的收支查询按钮后进入收支查询界面如图6.10,点击收入或者支出后面的详情可以查询其详细信息投入6.11,点击中间选择日期按钮会弹出选择框可以选择你想要查询的日期如图6.12。图6.10收支查询图6.11收入详情图6.12选择日期6.4资金管理功能的实现用户点击主界面的资金管理按钮后进入资金管理界面如图6.13,点击右上方的详情按钮,可以查询投入和提取的详细信息如图6.14。图6.13资金管理图6.14投入详情6.5库存管理功能的实现用户点击主界面的库存管理按钮后进入库存管理界面如图6.15,将会看到列表列出来当前的库存,点击商品进去可以编辑商品属性如图6.16.图6.15库存列表图6.16修改商品属性6.6用户管理功能的实现用户点击主界面的用户管理按钮后进入用户管理界面如图6.17,会显示当前账户,点击修改密码按钮即可修改密码如图6.18。图6.17用户管理图6.18修改密码7总结本软件采用了面向对象的开发方法,X-code作为开发工具,使用MVC构件模式,开发过程中用到了Object-C语言,CoreData作为数据库.本软件采用了较新的开发平台与开发语言,利用单利模式构架出九宫格模式的框架,软件简单易用,但软件也有一些不足之处,由于本人还未得到苹果开发者账号,不能进行真机调试,只能在模拟器上运行,致使扫描的功能未能完善,是一大遗憾,在以后申请到苹果账号后一定要将其完善改善,并将其上传至苹果商店。该软件也迎合了当下手机智能化、网络化的趋势,为将智能手机的开发提供了一个新的设计思路。随着3G技术、云计算等技术的进一步完善,基于智能手机开发具有广阔的开发前景。致谢参考文献1CarloChung.Objective-C编程之道.北京:人民邮电出版社,2011年11月2Kochan,S.G.Objective-C2.0程序设计.北京:机械工业出版社,2009年9月3GaryBennett.Objective-C初学者指南.北京:人民有点出版社,2012年10月4DavaMark.iPhone开发基础教程.北京:人民邮电出版社,2009年4月5JoneRay.iPhone开发入门经典.北京:人民邮电出版社,2011年11月6AdamPreble.苹果开发之Cocoa编程.北京:机械工业出版社,2012年8月7DanPilone.深入浅出iPhone开发.南京:东南大学出版社,2010年6月8金福生.iOS应用程序开发方法与实践.北京:人民有点出版社,2012年7月9DavaMark.iOS5基础教程.北京:人民邮电出版社,2012年9月10Beklin.iPhone&iPad高级编程.北京:清华大学出版社,2012年1月11杨宏焱.企业级iOS应用开发实战.北京:机械工业出版社,2013年2月12JoneRay.iOS应用开发入门经典.北京:人民邮电出版社,2012年7月13GrahamLee.测试驱动的iOS开发.北京:机械工业出版社,2012年11月14Makzan.HTML5游戏开发实战.北京:机械工业出版社,2012年7月15Harrington,J.iOS4实战:iphone与ipad应用开发.北京:人民邮电出版社,2012年4月附录:@implementationUIViewController(UIViewControllerRedirectExtensions)-(void)redirectModule:(NSString*)m{[[AcModulesharedModule]setModule:m];UIViewController*viewController;if([misEqualToString:@"main"]){viewController=[[MainViewControlleralloc]initWithNibName:@"MainViewController"bundle:nil];}else{NSString*storyboardName=[mstringByAppendingString:@"Storyboard"];UIStoryboard*sb=[UIStoryboardstoryboardWithName:storyboardNamebundle:nil];viewController=[sbinstantiateInitialViewController];}[[[[UIApplicationsharedApplication]delegate]window]setRootViewController:viewController];}-(void)redirectBack{[selfredirectModule:[[AcModulesharedModule]previousModule]];}+(AcModule*)sharedModule{if(!sharedModule){sharedModule=[[superallocWithZone:NULL]init];}returnsharedModule;}+(id)allocWithZone:(NSZone*)zone{return[selfsharedModule];}-(id)init{if(sharedModule){returnsharedModule;}self=[superinit];if(self){}returnself;}-(id)retain{returnself;}-(void)release{}-(NSUInteger)retainCount{returnNSUIntegerMax;}-(void)setModule:(NSString*)module{[previousModulerelease];[moduleretain];previousModule=currentModule;currentModule=module;}-(NSString*)previousModule{returnpreviousModule;}-(NSString*)currentModule{returncurrentModule;}-(void)viewDidLoad{[superviewDidLoad];//Doanyadditionalsetupafterloadingtheviewfromitsnib.UIImage*titleImage=[UIImageimageNamed:@"title.png"];[self.mainBarsetBackgroundImage:titleImageforBarMetrics:UIBarMetricsDefault];AppDelegate*delegate=(AppDelegate*)[[UIApplicationsharedApplication]delegate];self.managedObjectContext=[delegatemanagedObjectContext];}-(void)viewWillAppear:(BOOL)animated{NSFetchRequest*request=[[NSFetchRequestalloc]init];NSEntityDescription*entity=[NSEntityDescriptionentityForName:@"Money"inManagedObjectContext:managedObjectContext];[requestsetEntity:entity];//SorttheresultsNSSortDescriptor*sortDescriptor=[[NSSortDescriptoralloc]initWithKey:@"creationDate"ascending:NO];NSArray*sortDescriptors=[[NSArrayalloc]initWithObjects:sortDescriptor,nil];[requestsetSortDescriptors:sortDescriptors];//ExecutetherequestNSError*error;NSMutableArray*mutableFetchResults=[[managedObjectContextexecuteFetchRequest:requesterror:&error]mutableCopy];if(mutableFetchResults==nil){NSLog(@"Errorfetchingresult%@",[errordescription]);}[selfsetArrMoney:mutableFetchResults];floataddMoney=0,plusMoney=0;for(inti=arrMoney.count-1;i>=0;i--){self.money=[arrMoneyobjectAtIndex:i];addMoney+=[self.money.incomefloatValue];plusMoney+=[self.money.payfloatValue];}labelAllMoney.text=[NSStringstringWithFormat:@"%.2f",[self.money.allMoneyfloatValue]];labelPay.text=[NSStringstringWithFormat:@"%.2f",plusMoney];labelEarning.text=[NSStringstringWithFormat:@"%.2f",addMoney];}-(void)viewDidLoad{[superviewDidLoad];AppDelegate*delegate=(AppDelegate*)[[UIApplicationsharedApplication]delegate];self.managedObjectContext=[delegatemanagedObjectContext];self.navigationItem.rightBarButtonItem=self.editButtonItem; NSMutableArray*_arrGoods=[[NSMutableArrayalloc]init]; self.arrGoods=_arrGoods;}-(void)viewWillAppear:(BOOL)animated{NSFetchRequest*request=[[NSFetchRequestalloc]init];NSEntityDescription*entity=[NSEntityDescriptionentityForName:@"StockGoods"inManagedObjectContext:managedObjectContext];[requestsetEntity:entity];//SorttheresultsNSSortDescriptor*sortDescriptor=[[NSSortDescriptoralloc]initWithKey:@"goodsDate"ascending:NO];NSArray*sortDescriptors=[[NSArrayalloc]initWithObjects:sortDescriptor,nil];[requestsetSortDescriptors:sortDescriptors];//ExecutetherequestNSError*error;NSMutableArray*mutableFetchResults=[[managedObjectContextexecuteFetchRequest:requesterror:&error]mutableCopy];if(mutableFetchResults==nil){NSLog(@"Errorfetchingresult%@",[errordescription]);}[selfsetArrGoods:mutableFetchResults]; [self.tableViewreloadData];}-(void)didReceiveMemoryWarning{[superdidReceiveMemoryWarning];//Disposeofanyresourcesthatcanberecreated.}-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{return(interfaceOrientation==UIInterfaceOrientationPortrait);}#pragmamark-Tableviewdatasource-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView{#warningPotentiallyincompletemethodimplementation.//Returnthenumberofsections.return1;}-(NSInteger)tableView:(UITableView*)tableViewnumberOfRowsInSection:(NSInteger)section{#warningIncompletemethodimplementation.//Returnthenumberofrowsinthesection.returnself.arrGoods.count;}-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSDateFormatter*dateFormatter=nil;if(dateFormatter==nil){dateFormatter=[[NSDateFormatteralloc]init];[dateFormattersetTimeStyle:NSDateFormatterMediumStyle];[dateFormattersetDateStyle:NSDateFormatterMediumStyle];}MyCell*cell=[MyCellcellForTableView:tableViewfromNib:[MyCellnib]];StockGoods*goo=[self.arrGoodsobjectAtIndex:indexPath.row];cell.labelTitle.text=[googoodsName];cell.labelTitle.textColor=[UIColorbrownColor]; cell.labelText.text=[NSStringstringWithFormat:@"进价:%.2f数量:%i",[[googoodsBid]floatValue],[[googoodsCount]intValue]];cell.labelDate.text=[dateFormatterstringFromDate:[googoodsDate]];cell.labelDate.textColor=[UIColorgrayColor]; //cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;[tableViewsetSeparatorColor:[UIColorlightGrayColor]];returncell;}-(void)viewDidLoad{[superviewDidLoad];//Doanyadditionalsetupafterloadingtheviewfromitsnib.labelGoodsName.text=;AppDelegate*delegate=(AppDelegate*)[[UIApplicationsharedApplication]delegate];self.managedObjectContext=[delegatemanagedObjectContext];labelGoodsCount.text=[NSStringstringWithFormat:@"%i",[good.countintValue]];labelGoodsBid.text=[NSStringstringWithFormat:@"%.2f",[good.bidfloatValue]];}-(void)viewWillAppear:(BOOL)animated{NSFetchRequest*request=[[NSFetchRequestalloc]init];NSEntityDescription*entity=[NSEntityDescriptionentityForName:@"Money"inManagedObjectContext:managedObjectContext];[requestsetEntity:entity];//SorttheresultsNSSortDescriptor*sortDescriptor=[[NSSortDescriptoralloc]initWithKey:@"creationDate"ascending:NO];NSArray*sortDescriptors=[[NSArrayalloc]initWithObjects:sortDescriptor,nil];[requestsetSortDescriptors:sortDescriptors];//ExecutetherequestNSError*error;NSMutableArray*mutableFetchResults=[[managedObjectContextexecuteFetchRequest:requesterror:&error]mutableCopy];if(mutableFetchResults==nil){NSLog(@"Errorfetchingresult%@",[errordescription]);}[selfsetArrMoney:mutableFetchResults];for(inti=arrMoney.count-1;i>=0;i--){self.money=[arrMoneyobjectAtIndex:i];}labelMoney.text=[NSStringstringWithFormat:@"%.2f",[self.money.allMoneyfloatValue]];intn=[self.money.allMoneyfloatValue]/[good.bidintValue];labelTishi.text=[NSStringstringWithFormat:@"提示:最多进货数量为%i",n];}-(void)didReceiveMemoryWarning{[superdidReceiveMemoryWarning];//Disposeofanyresourcesthatcanberecreated.}-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{return(interfaceOrientation==UIInterfaceOrientationPortrait);}-(IBAction)btnOk:(id)sender{Money*mMoney=(Money*)[NSEntityDescriptioninsertNewObjectForEntityForName:@"Money"inManagedObjectContext:managedObjectContext];StockGoods*stockGoods=(StockGoods*)[NSEntityDescriptioninsertNewObjectForEntityForName:@"StockGoods"inManagedObjectContext:managedObjectContext];[stockGoodssetGoodsBid:self.good.bid];[stockGoodssetGoodsName:];[stockGoodssetGoodsCount:[NSNumbernumberWithInt:[TextGoodsCount.textintValue]]];[stockGoodssetGoodsMoney:[NSNumbernumberWithFloat:[TextGoodsCount.textintValue]*[good.bidfloatValue]]];[stockGoodssetGoodsDate:[NSDatedate]];intcou=[good.countintValue]+[TextGoodsCount.textintValue];floatplusMoney=[TextGoodsCount.textintValue]*[good.bidfloatValue];floatmyMoney=[self.money.allMoneyfloatValue]-plusMoney;if(myMoney<0){UIAlertView*altView=[[UIAlertViewalloc]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食用油购销合同模板版
- 电池批发购销合同
- 绿植维护安装合同
- 垫资还款协议范本
- 2024解除、终止劳动合同协议书
- 冲突管理与处理技巧培训考核试卷
- 信息系统的数字金融与金融科技考核试卷
- 光学仪器的激光晶体技术原理与应用考核试卷
- 橡胶制品行业生态循环经济考核试卷
- 消防挂靠协议合同模板
- 小学课外阅读案例分析
- 土木工程案例分析
- 《煤矿重大危险源评估报告》
- 特种设备使用单位日管控、周排查、月调度示范表
- 香文化与养生智慧树知到期末考试答案章节答案2024年浙江农林大学
- 人教版六年级数学上册《全册》完整版课件
- 航空氦(HE)光泵磁力仪项目综合评估报告
- 幼儿园食品安全日管控、周排查、月调度制度
- 马渭丽《月光下的中国》
- 专题38事件的相互独立性条件概率与全概率公式(理科)(教师版)
- 陶行知与乡村教育智慧树知到期末考试答案2024年
评论
0/150
提交评论