用oc去解决简单的汽车租借问题

对于车辆租借问题,首先要有的就是确定 车辆的基本属性有哪些,有借出去就得能添加,再这,要清楚解决这个问题需要创建多少个类。

下面我们一步一步来分析:基本上的框架就是字典包含字典包含数组包含字典

       如果你管理一个租车公司的话,得有一个车辆的类,定义为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 ( @" 没找到 " );

到这里,一个车辆的租借系统就差不多完成了,然后在完善一下就可以了。

猜你喜欢

转载自blog.csdn.net/ikceo1211/article/details/49632695