用oc去解决简单的汽车租借问题
2015-11-04 07:57
369 查看
对于车辆租借问题,首先要有的就是确定 车辆的基本属性有哪些,有借出去就得能添加,再这,要清楚解决这个问题需要创建多少个类。
下面我们一步一步来分析:基本上的框架就是字典包含字典包含数组包含字典
如果你管理一个租车公司的话,得有一个车辆的类,定义为car,在car里面创建一个对象就为*_car,再者肯定对车辆的好坏分几个类。
1.假设我们把车辆一共分为三个类,分别是:A类,也就是好车;B类代表中等车,C类代表低等车,那么我们就得先创建三个类:bigger,middle,lower.
2.就得为车增加属性了,我是定义了车的品种,型号,车牌号,租金。代码如下:
@property(nonatomic,strong)NSString *brand;
@property(nonatomic,strong)NSString *model;
@property(nonatomic,strong)NSString *carID;
@property(nonatomic,strong)NSNumber *price;
3.自定义一下init函数;
-(instancetype)initWithBrand:(NSString *)b andModel:(NSString *)m andID:(NSString *)i andPrice:(NSNumber *)p
{
self=[super init];
if (self) {
_brand=b;
_model=m;
_carID=i;
_price=p;
}
return self;
}
3.既然创建完了类,就得声明你要干什么了。首先是添加一个车:
-(void)addCarWithType:(NSString *)t;//声明一个方法(t为车的品种)
然后去实现这个方法:
获取所有的车
NSMutableDictionary *file_dic=[NSMutableDictionary dictionaryWithContentsOfFile:File_Path_Car];。
NSDictionary *type_dic=[file_dic valueForKey:t];
得到某个分类下面的所有的车:
NSMutableDictionary *m_type_dic=[NSMutableDictionarydictionaryWithDictionary:type_dic];
获取所有的品牌:
NSArray *key_array=[m_type_dic allKeys];
1).判断要添加的车在数据库里面是不是存在:循环找相同品牌,找到后进入for循环进行车牌判断,没有的话for循环结束后增加把查找的车添加进数据库。
for (int i=0;
i<key_array.count; i++) {
NSString *key=[key_array objectAtIndex:i];
查找相同品牌的所有车牌号
if ([key isEqualToString:_car.brand])
{
NSArray *cars_array = [m_type_dic valueForKey:key];
2). 判断车牌号码
for (int j=0; j<cars_array.count; j++) {
NSDictionary *car_dic=[cars_arrayobjectAtIndex:j];
if ([[car_dic valueForKey:@"id"]isEqualToString:_car.carID])
{
NSLog(@"%@存在了",_car.carID);
return;
}
}
for循环结束了,意味着没有这个车牌号,可以添加这款车
NSMutableArray *m_cars_array=[NSMutableArray arrayWithArray:cars_array];
NSDictionary *add_dic=[NSDictionary dictionaryWithObjects:@[_car.model,_car.carID,_car.price]forKeys:@[@"model",@"id",@"price"]];
[m_cars_array addObject:add_dic];
[m_type_dic setObject:m_cars_array forKey:key];
[file_dic setObject:m_type_dic forKey:t];
BOOL isOk = [file_dic writeToFile:File_Path_Caratomically:YES];
if (isOk) {
NSLog(@"添加%@成功",_car.model);
}
return;
}
}
到这里,如果没有进入大的for1 循环,就证明没有这个品种的车,直接添加品种以及车牌号
NSDictionary *add_dic=[NSDictionarydictionaryWithObjects:@[_car.model,_car.carID,_car.price]forKeys:@[@"model",@"id",@"price"]];
NSArray *add_array=[NSArray arrayWithObject:add_dic];
[m_type_dic setObject:add_array forKey:_car.brand];
[file_dic setObject:m_type_dic forKey:t];
BOOL isOk=[file_dic writeToFile:File_Path_Caratomically:YES];
if (isOk) {
NSLog(@"添加%@成功",_car.model);
}
}
4.到这里就代表增加的代码我们已经写完了,然后定义一个车的品种,型号以及租金,让这个车去调用以上的方法就可以添加了,当然,你也可以直接在这个类里直接调用,代码如下:
_car=car;
if ([car isKindOfClass:[Bigger class]]) {
[self addCarWithType:@"A"];
}
else if ([car isKindOfClass:[Middle class]])
{
[self addCarWithType:@"B"];
}
else
{
[self addCarWithType:@"C"];
}
}
5.如何去删除已经借出去的车:
1).首先确定一个你要借出去的车的车牌号,调用已经添加完了的文件
声明一个方法
-(void)borrowCarToPeople:(NSString *)cID
调用已经添加完成的文件
NSLog(@"您要租赁%@",cID);
NSMutableDictionary *file_dic=[NSMutableDictionary dictionaryWithContentsOfFile:File_Path_Car];
取出车的所有分类
NSArray *keys = [file_dic allKeys];
for (int i=0; i<keys.count; i++) {
NSString *key = [keys objectAtIndex:i];//A B C
NSDictionary *type_dic = [file_dic valueForKey:key];
NSMutableDictionary *m_type_dic=[NSMutableDictionary dictionaryWithDictionary:type_dic];
然后是所有的品牌,某一款品牌
NSArray *key_array = [m_type_dic allKeys];
for (int j=0; j<key_array.count; j++) {
NSString *car_key=[key_array objectAtIndex:j];//audi,benz
NSArray *car_array=[m_type_dic valueForKey:car_key];
NSMutableArray *m_car_array=[NSMutableArrayarrayWithArray:car_array];
利用车牌号去找到这辆车,比较车牌号是不是跟你需要的车牌号一样,找到了之后借走
for (int k=0;
k<m_car_array.count; k++) {
NSDictionary *end_dic=[m_car_array objectAtIndex:k];
BOOL isEqual = [[end_dicvalueForKey:@"id"]isEqualToString:cID];
if (isEqual) {
NSLog(@"找到了");
[m_car_array removeObject:end_dic];
如果借走了这辆车之后这个品种没有了,直接删除这个品种
if (m_car_array.count==0) {
[m_type_dic removeObjectForKey:car_key];
}
else{
[m_type_dic setObject:m_car_arrayforKey:car_key];
}
[file_dic setObject:m_type_dic forKey:key];
BOOL isOK = [file_dic writeToFile:File_Path_Car atomically:YES];
if (isOK) {
NSLog(@"租赁成功");
}
return;
}
}
}
}
如果数据库里面没有的话直接说明没有找到
NSLog(@"没找到");
到这里,一个车辆的租借系统就差不多完成了,然后在完善一下就可以了。
下面我们一步一步来分析:基本上的框架就是字典包含字典包含数组包含字典
如果你管理一个租车公司的话,得有一个车辆的类,定义为car,在car里面创建一个对象就为*_car,再者肯定对车辆的好坏分几个类。
1.假设我们把车辆一共分为三个类,分别是:A类,也就是好车;B类代表中等车,C类代表低等车,那么我们就得先创建三个类:bigger,middle,lower.
2.就得为车增加属性了,我是定义了车的品种,型号,车牌号,租金。代码如下:
@property(nonatomic,strong)NSString *brand;
@property(nonatomic,strong)NSString *model;
@property(nonatomic,strong)NSString *carID;
@property(nonatomic,strong)NSNumber *price;
3.自定义一下init函数;
-(instancetype)initWithBrand:(NSString *)b andModel:(NSString *)m andID:(NSString *)i andPrice:(NSNumber *)p
{
self=[super init];
if (self) {
_brand=b;
_model=m;
_carID=i;
_price=p;
}
return self;
}
3.既然创建完了类,就得声明你要干什么了。首先是添加一个车:
-(void)addCarWithType:(NSString *)t;//声明一个方法(t为车的品种)
然后去实现这个方法:
获取所有的车
NSMutableDictionary *file_dic=[NSMutableDictionary dictionaryWithContentsOfFile:File_Path_Car];。
NSDictionary *type_dic=[file_dic valueForKey:t];
得到某个分类下面的所有的车:
NSMutableDictionary *m_type_dic=[NSMutableDictionarydictionaryWithDictionary:type_dic];
获取所有的品牌:
NSArray *key_array=[m_type_dic allKeys];
1).判断要添加的车在数据库里面是不是存在:循环找相同品牌,找到后进入for循环进行车牌判断,没有的话for循环结束后增加把查找的车添加进数据库。
for (int i=0;
i<key_array.count; i++) {
NSString *key=[key_array objectAtIndex:i];
查找相同品牌的所有车牌号
if ([key isEqualToString:_car.brand])
{
NSArray *cars_array = [m_type_dic valueForKey:key];
2). 判断车牌号码
for (int j=0; j<cars_array.count; j++) {
NSDictionary *car_dic=[cars_arrayobjectAtIndex:j];
if ([[car_dic valueForKey:@"id"]isEqualToString:_car.carID])
{
NSLog(@"%@存在了",_car.carID);
return;
}
}
for循环结束了,意味着没有这个车牌号,可以添加这款车
NSMutableArray *m_cars_array=[NSMutableArray arrayWithArray:cars_array];
NSDictionary *add_dic=[NSDictionary dictionaryWithObjects:@[_car.model,_car.carID,_car.price]forKeys:@[@"model",@"id",@"price"]];
[m_cars_array addObject:add_dic];
[m_type_dic setObject:m_cars_array forKey:key];
[file_dic setObject:m_type_dic forKey:t];
BOOL isOk = [file_dic writeToFile:File_Path_Caratomically:YES];
if (isOk) {
NSLog(@"添加%@成功",_car.model);
}
return;
}
}
到这里,如果没有进入大的for1 循环,就证明没有这个品种的车,直接添加品种以及车牌号
NSDictionary *add_dic=[NSDictionarydictionaryWithObjects:@[_car.model,_car.carID,_car.price]forKeys:@[@"model",@"id",@"price"]];
NSArray *add_array=[NSArray arrayWithObject:add_dic];
[m_type_dic setObject:add_array forKey:_car.brand];
[file_dic setObject:m_type_dic forKey:t];
BOOL isOk=[file_dic writeToFile:File_Path_Caratomically:YES];
if (isOk) {
NSLog(@"添加%@成功",_car.model);
}
}
4.到这里就代表增加的代码我们已经写完了,然后定义一个车的品种,型号以及租金,让这个车去调用以上的方法就可以添加了,当然,你也可以直接在这个类里直接调用,代码如下:
_car=car;
if ([car isKindOfClass:[Bigger class]]) {
[self addCarWithType:@"A"];
}
else if ([car isKindOfClass:[Middle class]])
{
[self addCarWithType:@"B"];
}
else
{
[self addCarWithType:@"C"];
}
}
5.如何去删除已经借出去的车:
1).首先确定一个你要借出去的车的车牌号,调用已经添加完了的文件
声明一个方法
-(void)borrowCarToPeople:(NSString *)cID
调用已经添加完成的文件
NSLog(@"您要租赁%@",cID);
NSMutableDictionary *file_dic=[NSMutableDictionary dictionaryWithContentsOfFile:File_Path_Car];
取出车的所有分类
NSArray *keys = [file_dic allKeys];
for (int i=0; i<keys.count; i++) {
NSString *key = [keys objectAtIndex:i];//A B C
NSDictionary *type_dic = [file_dic valueForKey:key];
NSMutableDictionary *m_type_dic=[NSMutableDictionary dictionaryWithDictionary:type_dic];
然后是所有的品牌,某一款品牌
NSArray *key_array = [m_type_dic allKeys];
for (int j=0; j<key_array.count; j++) {
NSString *car_key=[key_array objectAtIndex:j];//audi,benz
NSArray *car_array=[m_type_dic valueForKey:car_key];
NSMutableArray *m_car_array=[NSMutableArrayarrayWithArray:car_array];
利用车牌号去找到这辆车,比较车牌号是不是跟你需要的车牌号一样,找到了之后借走
for (int k=0;
k<m_car_array.count; k++) {
NSDictionary *end_dic=[m_car_array objectAtIndex:k];
BOOL isEqual = [[end_dicvalueForKey:@"id"]isEqualToString:cID];
if (isEqual) {
NSLog(@"找到了");
[m_car_array removeObject:end_dic];
如果借走了这辆车之后这个品种没有了,直接删除这个品种
if (m_car_array.count==0) {
[m_type_dic removeObjectForKey:car_key];
}
else{
[m_type_dic setObject:m_car_arrayforKey:car_key];
}
[file_dic setObject:m_type_dic forKey:key];
BOOL isOK = [file_dic writeToFile:File_Path_Car atomically:YES];
if (isOK) {
NSLog(@"租赁成功");
}
return;
}
}
}
}
如果数据库里面没有的话直接说明没有找到
NSLog(@"没找到");
到这里,一个车辆的租借系统就差不多完成了,然后在完善一下就可以了。
相关文章推荐
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- 简单介绍不用库(框架)自己写ajax
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记
- Flex中最好的MVC框架Mate框架
- JavaScript 异步调用框架 (Part 4 - 链式调用)
- JavaScript 异步调用框架 (Part 2 - 用例设计)
- 为什么使用框架 使用框架的优缺点
- JavaScript 异步调用框架 (Part 3 - 代码实现)
- js刷新框架子页面的七种方法代码