《汽车销售系统的设计与实现库存管理模块大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《汽车销售系统的设计与实现库存管理模块大学本科毕业论文.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要随着互联网技术的发展,网络技术的成熟,仅仅靠使用PC端进行互联网活动已经无法满足人们日益膨胀的需求。移动互联网在这时应运而生,我们越来越依赖与移动互联网的同时,手机也随之发展,手机并不再仅仅作为一个普通的通讯工具而出现在我们的生活中了。为了满足工作的需要,针对汽车销售系统的库存管理模块特别设计了库存管理App,有了此款App,管理人员可以方便的从移动终端随时获取实时数据。省去了繁复的表格,使人们从传统的实地查询和电话查询的繁琐步骤中解放了出来。本论文是基于iOS系统的库存管理客户端,使用ObjectiveC语言作为开发语言开发工具为Xcode5.0,其数据存储在本地的SQLite3数据库中
2、。本系统采用了C/S 结构, 采取了MVC框架进行开发,通过运用Objective-C,cocoa touch,Xcode,SQLite3数据库等软件技术和众多的第三方库完成了系统中库存管理模块的设计。1本文主要介绍汽车销售系统中的车辆管理模块的相关内容。分析了系统该部分实现的相关技术原理,可行性,介绍了车辆管理的系统实现的系统架构,并在对系统这两个模块分析后进行了相应的划分及设计。本应用主要实现了:不同人员的管理,库存的管理,出入库信息的查询等功能。关键词:Objective-C,iOS,Cocoa Touch,SQLite3,库存管理系统Abstract With the developm
3、ent of Internet technology, network technology matures, just by using the PC end Internet activities have been unable to meet the expanding needs of the people . Mobile Internet came into being at this time , we are increasingly dependent on the mobile Internet , while also developing mobile phone ,
4、 mobile phone and no longer just as a general communication tool out of our lives now . To meet the needs of their work for car sales inventory management system inventory management module specially designed App, With this section App, managers can facilitate ready access to real-time data from the
5、 mobile terminal. Eliminating the need for complicated forms , so that people freed from the traditional on-site inquiries and telephone inquiries tedious step.This thesis is based on the iOS client inventory management system , using the Objective-C language as a development language development to
6、ols for Xcode5.0, SQLite3 database stores its data in a local s . The system uses the C / S structure, take a MVC framework for development , through the use of Objective-C, cocoa touch, Xcode, SQLite3 databases and other software technologies and numerous third-party libraries to complete the desig
7、n of the system inventory management module.This paper describes the relevant content in automotive vehicle sales system management module . Analysis of the technical principles related to that part of the system implementation , feasibility, describes the system architecture of the vehicle manageme
8、nt system implementation , and after these two modules of the system analysis and design of the corresponding division . The main achievement of this application : different personnel management , inventory management, query and other functions of the storage of information .Keywords: Objective-C, i
9、OS, Cocoa Touch, SQLite3, inventory management system 目录目录31 概述11.1开发背景11.2设计目的及内容1 1.2.1设计目的1 1.2.2设计内容21.3 技术概述2 1.3.1 SQLite3简介2 1.3.2 MVC模式简介21.4硬件和软件要求3 1.4.1硬件要求3 1.4.2软件要求31.5基本环境41.6系统开发命名规则42 系统分析52.1可行性分析52.2需求分析5 2.2.1系统需求分析5 2.2.2系统功能结构5 2.2.3系统主要设计类62.3功能分析6 2.3.1用户登录6 2.3.2管理员管理7 2.3.3
10、入库管理8 2.3.3.1产品入库92.3.4出库管理9 2.3.4.1产品出库9 2.3.4.2出库单管理92.3.5产品管理10 2.3.5.1查询产品信息10 2.3.5.2添加产品信息11 2.3.5.3删除产品113.1数据库概要结构设计123.2数据库逻辑结构设计124 系统界面设计134.1系统界面设计135 主要代码155.1数据库各个表创建代码155.2部分功能代码15 5.2.2添加库存:16 5.2.3删除用户:16 5.2.4 数据库操作函数(部分代码)16 5.2.5 登录界面主要处理函数17结论19致谢20参考文献211 概述1.1开发背景随着宽带无线接入技术和移动
11、终端技术的飞速发展,人们迫切希望能够随时随地乃至在移动过程中都能方便地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。虽然,移动互联网在移动终端、接入网络、应用服务、安全与隐私保护等方面还面临着一系列的挑战,但它已经为我们的生活带来了巨大的变革。随着4G时代的开启以及移动终端设备的凸显为移动互联网的发展注入巨大的能量,移动互联网所能触及的范围越来越广,移动互联网产业必将带来前所未有的飞跃。在这样的大背景之下,移动终端应用的发展历经了由缓慢到迅猛、从粗略到专精的过程。越来越多的垂直细分领域被开发者们发掘出来,每一个领域都极大的改变了我们的生活,移动终端已经进入了我们生活的方方面面。伴着4G
12、网络的起步和移动联网设备的激增,为移动操作系统iOS下的终端持有者设计并实现应用,是具有极大的价值和发展前途的。伴随着我国国民经济的发展,汽车已经走进每个人的家中。传统的汽车销售模式略显滞后,不适应当今飞速发展的社会,为了提高效率,所以针对汽车销售行业的移动应用应运而生。实现了对销售链的便捷查询。1.2设计目的及内容1.2.1设计目的库存管理系统出入库模块即对仓库管理。物流仓库管理系统主要针对于日常库存信息的管理,它针对仓库日常发生的业务,分为两大类,即入库和出库,用户通过相应的模块,对仓库里的物品的基本情况进行操作,实现入库、出库即对库存进行查询,用户通过简单的操作即可轻松的管理仓库。库存管
13、理App是针对日常库存信息的管理,使得管理人员可以不在现场就获得最新库存信息,其主要功能是对库存的查看,和相关人员的管理。管理人员通过相应的模块,可以实现对库存物品的基本出入库操作,方便了查询和管理,更是把人们从传统的查询流程中释放出来。在iOS智能移动操作系统上开发的一款应用。抓住了国内消费者智能手机中iPhone系列手机占有率极高的鲜明特点,为消费者和管理人员提供便利的服务。以上便是开发库存管理App的目的所在。1.2.2设计内容实现库存管理模块的出入库和查询功能。入库操作就是对新入库的信息管理(包括修改和添加操作),出库操作就是主要包括仓库的修改和删除操作。超级管理员可以对其他工作人员进
14、行添加和删除操作。客服模块可以根据顾客查询该顾客的购买记录。仓库管理员可以对仓库具体条目进行修改。以上所有操作均保存在关系型数据库中。1.3 技术概述1.3.1 SQLite3简介SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。它是D.RichardHipp创建的公有领域项目。不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是链接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都存储在主机端上单一个文件中。此种
15、简洁的设计是通过写入时锁定整个数据文件而完成的1。程序库实现了多数的SQL-92标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。不进行类型检查。你可以把字符串插入到整数列中。例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。其他用户认为这是主要的缺点。多个进程或线程可以同时访问同一个数据而没有问题。可以同时平行读取同一个数据库。但同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误信息2(或者会自动重试一段时间,而这重试时间的长短是可以设置的)。程序设计者还提供了一个叫做sqlite3的独立程序
16、用来查询和管理SQLite数据库文件。SQLite的用户可以把这个程序当作如何写SQLite应用程序的示例。1.3.2 MVC模式简介MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早由Trygve Reenskaug在1978年提出 ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复
17、利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:(控制器Controller)- 负责转发请求,对请求进行处理。(视图View) - 界面设计人员进行图形界面设计。(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。MVC设计思想:MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个
18、层模型层、视图层、控制层。 MVC的优点:首先,多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。其次,控制器是自包含(self-contained)指高独立内聚的对象,与模型和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则3。例如,把数据库从MySQL
19、移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可。一旦正确地实现了控制器,不管数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的的视图将处理结果显示给用户。1.4硬件和软件要求1.4.1硬件要求本应用程序可以广泛运在 iPh
20、one,iPad,iPod运行要求如下:开发环境:Xcode5.0 + iOS SDK 。数据库连接第三方库:采用FMDB4。1.4.2软件要求操作系统:iOS5(及以上)数据库:SQLite3。开发工具:Xcode5.0。1.5基本环境以Objective-C语言为基本开发语言,通过运用集成开发环境Xcode5.0,SQL等相关知识,利用Objective-C语言的面向对象的特性及MVC设计思想,设计一个库存管理模块5,模拟一个仓库库存管理系统的出入库及查询管理模块。1.6系统开发命名规则(1)项目中命名规则项目中各个子项的命名均以其功能名称的英文组合,类名以其具体的含义命名,类名的所有单词
21、的首字母大写;类中的方法依据功能而定,且方法命名首单词的首字母小写,其他单词首字母均大写;项目中的页面命名是根据其具体含义命名的。6(2)数据库命名规则数据库名称与项目所存储内容相同,数据库中表命名规则是表名称英文意思的单词或多个单词的组合;表中字段名是相应字段的英文单词或多个单词的组合。72 系统分析2.1可行性分析当今时代,手机APP的发展趋势可谓风起云涌、数量猛增,竞争越来越激烈,盈利方向也变得扑朔迷离,在越来越凶猛的势头之下,更多高质量的手机APP应运而生。移动应用是一种便捷的方式,专家预测发现手机APP市场容量是PC市场的几十倍,这是因为手机用户的数量规模远远大于PC。在库存管理方面
22、,管理人员不可能随时在场,而PC端的查询信息繁杂,干扰信息过多,操作也不甚简单,而手机端界面设计简单大方,回馈迅速,没有过多的垃圾信息干扰,能快速完成库存的查询和管理8。未来可能提出的需求:随着用户日益增长的需求以及为了给用户带来更好的体验,将来可能需要增加更多接口来实现相应的功能,保留部分空间以便功能扩展9。2.2需求分析2.2.1系统需求分析(1)系统功能包括:产品入出库登记、确认入出库信息、保存删除入出库信息、添加修改删除产品信息。(2)系统管理员功能:添加删除用户(超级管理员权限)、查询人员信息。2.2.2系统功能结构汽车销售管理系统-库存管理模块登录人员管理入库管理出库管理产品管理库
23、存管理退出图 2 - 1 系统功能结构图2.2.3系统主要设计类数据库模块:DBManager shareManager:该类实现连接数据库,打开数据库,创建Connection连接,及关闭数据库和增、删、改、查的功能。该类设计为单例模式10。服务模块:DBManager :该接口提供现有系统中的需要的功能(相关数据库操作)函数的接口。超级管理员模块:AdminManageViewController:该类显示超级管理员管理界面。客服模块:ServiceViewController:该类用来实现客服登录并查询顾客购买记录。仓库管理员模块:WarehouseAdminViewController
24、:该类实现添加、删除库存功能。产品信息管理模块:ItemDataModel:该类表示仓库的信息。NSString * carName:该属性表示汽车名称信息。NSString * num:该属性表示库存量的信息。NSString * price:该属性表示汽车单价的信息。NSString * admin:该属性表示入库操作人员。用户信息管理模块:CustomerViewController:该类表示公司顾客信息。2.3功能分析2.3.1用户登录登录页面要求用户输入用户帐户、密码。在输入用户帐户、密码之后,系统将验证用户帐户和密码和数据库中的进行匹配查看是否正确,如果验证成功,就使用户处于登录状
25、态。否则,系统显示用户帐户或密码错误的提示信息。如下图2-2,登录。启动登录进入界面帐户类型无图 2 - 2 登录2.3.2管理员管理系统的这项功能只有超级管理员有权限执行,其他人员没有此项权限。单击“库管管理”,可以显示所有仓库管理员的相应信息。如下图2-3图 2 - 3显示管理员管理界面该模块可为仓库添加仓库管理员及客服。添加管理员需要查找需要添加成为管理员的员工的信息。如下图2-4,添加管理员.图 2 - 2 添加管理员该功能可以删除某个仓库的管理员。删除管理员需要查找需要删除的管理员的信息,查询所有员工的信息,直接点击“删除”,完成删除管理员的操作。如下图2-5,删除人员。图 2 -
26、5 删除人员2.3.3入库管理入库管理中,超级管理员和仓库管理员都有权限进行操作。2.3.3.1产品入库实现产品的入库操作。如下图2-6,产品入库。需要管理员填写入库单,包括待入库产品的各项信息及入库单的各项信息。入库时,如果没有这种产品 ,可以选择直接在数据库中添加这项产品;如果存在则在原有数量的基础上增加待入库产品的数量。主界面输入信息入库存在该产品添加新产品修改原产品否是图 2 -6 产品入库2.3.4出库管理2.3.4.1产品出库实现产品的出库操作。如下图2-7,产品出库.需要一个顾客选择车型并选择数量出库。出库时,如果没有这种产品或库存小于提取数量,提示“库存不足”;如果没有产品不存
27、在或数量不足的情况则在原有数量的基础上减少待出库产品的数量。主界面出库管理产品出库产品存在数量不足变更库存否否是是图 2 - 7产品出库2.3.4.2出库单管理实现出库产品的出库单记录操作。产品出库时,将出库信息,主要是购买客户信息保存下来,方便售后时查找。如下图2-8,出库单记录.主界面出库管理出库确认修改库存信息修改成功提交修改否否是是图 2 - 8 出库单2.3.5产品管理管理仓库中的产品信息的删除修改,包括查询产品信息、添加产品信息,删除产品信息,修改产品信息。2.3.5.1查询产品信息显示所有产品息。如下图2-9,产品信息。图 2 - 9 产品信息2.3.5.2添加产品信息向仓库中添
28、加产品。如图:图2-10,添加产品.图 2 - 10添加产品2.3.5.3删除产品删除仓库中的信息,如下图2-11,删除产品.图 2 - 11删除产品3 数据库设计3.1数据库概要结构设计本系统数据库采用SQLite3数据库,系统数据库名称为user.db。数据库中包含3张表。其他数据均用数据模型保存在数据库中,按需求获取。(1) 员工信息,包括的数据项有:员工ID、姓名、密码、帐户类型、性别、联系电话、家庭住址。(2) 产品信息,包括的数据项有:产品名称、库存、价格、入库人员、颜色、。出厂日期。(3) 出库信息,包括的数据项有: 表序号、操作员姓名、汽车型号、购买日期。3.2数据库逻辑结构设
29、计根据上述数据库的需求分析和概念结构设计,设计了名称为user.db的数据库。数据库由下面多个表格组成,各个表的命名及字段命名都是以相应的含义作为名称,各个表格的设计结果如下表所示,每个表格表示在数据库中相对应的一个表。(1)员工表,如:表3-1 员工 。表 3 - 1 员工字段名称数据类型长度Idinteger1namevarchar256passwdvarchar256typevarchar256sexvarchar256telvarchar256addressvarchar256(2) 库存信息表,如:表3-2 库存。表 3 - 2 库存字段名称数据类型长度idInteger1carNa
30、mevarchar256numInteger1priceInteger1colorvarchar256datevarchar256(3)库存变更表,如:表3-3变更表表 3 - 3 变更表字段名称数据类型长度idInteger1carNamevarchar256numVarchar256NameVarchar256datevarchar2564 系统界面设计4.1系统界面设计登陆时的界面如下图4-1,超级管理员登陆后界面如图4-2。图 4 - 1 超级管理员登录界面图 4 - 2 超级管理员登录界面系统后台共主要分为5个模块:第一部分:超级管理员的权限:查看仓库管理员信息、添加仓库管理员、删除
31、仓库管理员。第二部分:产品入库模块。第三部分:产品出库模块。 第四部分:产品管理模块,包括查看产品信息、产品添加、删除、修改产品信息。第五部分:库存信息管理模块,包括查看库存信息,添加库存信息,修改库存信息。5 主要代码5.1数据库各个表创建代码NSString * dbPath = NSHomeDirectory() stringByAppendingFormat:/Documents/user.db; _database = FMDatabase allocinitWithPath:dbPath; if (_database open) /创建人员记录表 NSString * create
32、UserSQL = create table if not exists UserInfo(name varchar(256) primary key,passwd varchar(256),type varchar(256); BOOL _isScuessed = _database executeUpdate:createUserSQL; if (!_isScuessed) NSLog(create table error:%,_database.lastErrorMessage); /创建出库记录表 NSString * createSoldSQL = create table if n
33、ot exists SoldInfo(id integer primary key autoincrement,name varchar(256),carName varchar(256),date varchar(256); if (!_database executeUpdate:createSoldSQL) NSLog(create table error:%,_database.lastErrorMessage); /创建库存记录表 NSString * createWarehouseSQL = create table if not exists WarehouseInfo(carN
34、ame varchar(256) primary key,num ingeter , price varchar(256),admin varchar(256); _isScuessed = _database executeUpdate:createWarehouseSQL; if (!_isScuessed) NSLog(create table error:%,_database.lastErrorMessage); 5.2部分功能代码5.2.1查询角色信息:NSString * selectSql = select * from UserInfo where type=? ;/根据用户
35、类型查询角色信息 FMResultSet *set = _database executeQuery:selectSql,Admin; NSMutableArray * array = NSMutableArray array; while (set next) AdminDataModel * model = AdminDataModel allocinit; model.userName = set stringForColumn:name; model.passwd = set stringForColumn:passwd; array addObject:model; model re
36、lease; return array;5.2.2添加库存:/将对应数据添加到WarehouseInfo表中,若添加失败,提示错误信息。 NSString * insertSql = insert into WarehouseInfo (carName,num,price,admin) values(?,?,?,?); if (!_database executeUpdate:insertSql,model.carName,model.num,model.price,model.admin) return _database.lastErrorMessage; elsereturn Nil;5
37、.2.3删除用户:/将对应数据添加到UserInfo表中,若添加失败,提示错误信息。 NSString * deleteSql = delete from UserInfo where name = ?; BOOL isSc = _database executeUpdate:deleteSql,name; if (!isSc) NSLog(delete:%,_database.lastErrorMessage); 5.2.4 数据库操作函数(部分代码)-(NSArray *)fetchDataWithUserType:(UserType)type;/根据角色获取信息-(void)insert
38、With:(RegisterModel *)model;/注册接口-(NSArray *)fetchItems;/获取库存信息-(void)deleteDataWithUserName:(NSString*)name;/根据姓名删除角色-(void)deleteItemWithCarName:(NSString *)carName;/根据车名删除条目-(NSString *)whoami:(NSString *)name passwd:(NSString *)passwd;/验证角色信息-(NSString *)insertItem:(ItemDataModel *)model;/插入库存信息
39、-(NSString *)updateItem:(ItemDataModel *)model;/更新库存信息-(NSString *)insertSoldItemWithBuyerName:(NSString *)name carName:(NSString *)carName date:(NSString *)date;/添加到出库表-(NSArray *)fetchSoldItems;/获取出库信息5.2.5 登录界面主要处理函数- (IBAction)LoginClicked:(id)sender NSString *type = DBManager shareManager whoam
40、i:_nameTextField.text passwd:_passwdTextField.text; UIApplication * app = UIApplication sharedApplication; AppDelegate * delegate = app.delegate; if (type isEqualToString:Admin) UIAlertView * alert= UIAlertView allocinitWithTitle:提示 message:管理员账号登陆成功 delegate:self cancelButtonTitle:确定 otherButtonTit
41、les:nil, nil; alert show; AdminManageViewController * admin = AdminManageViewController allocinit; admin.user = _nameTextField.text; delegate.loginName = _nameTextField.text; self.navigationController pushViewController:admin animated:YES; else if(type isEqualToString:Customer) UIAlertView * alert=
42、UIAlertView allocinitWithTitle:提示 message:顾客账号登陆成功 delegate:self cancelButtonTitle:确定 otherButtonTitles:nil, nil; alert show; CustomerViewController * vc = CustomerViewController allocinit; vc.user = _nameTextField.text; delegate.loginName = _nameTextField.text; self.navigationController pushViewController:vc animated:YES; else if (type isEqualToString:Service) UIAlertView * alert= UIAlertView allocinitWithTitle:提示 message:客服账号登陆成功 delegate:self cancelButtonTitle:确定 otherButtonTitles:nil, nil; alert show; ServiceViewController * svc = ServiceViewController allocinit; self.navigationControlle