求能用简单易懂的fscanf,fprintf函数让我的程序能永久保存输入的信息且下次打开仍能调用

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <process.h>
//定义汽车类型
enum ECarType
{
e_car_jc=1,
e_car_kc
};
//定义汽车类
class Car
{
private:
char mId[10]; //汽车编号
enum ECarType mType; //汽车类型
int mPriceDay; //日租价格
int mPriceMon; //月租价格
int mPriceYear; //年租价格
public:
Car(){}
Car(char* id,enum ECarType e,int d,int m,int y)
{
strcpy(mId,id);
mType = e;
mPriceDay = d;
mPriceMon = m;
mPriceYear = y;
};

char* getId(){return mId;}
enum ECarType getType(){return mType;}
int getDayprice(){return mPriceDay;}
int getMonprice(){return mPriceMon;}
int getYearprice(){return mPriceYear;}

void setId(char* p){strcpy(mId,p);}
void setType(enum ECarType e){mType = e;}
void setPrice(int d,int m,int y)
{
    mPriceDay = d;
    mPriceMon = m;    
    mPriceYear = y;
};

};

//定义租赁人信息
class Guest
{
private:
char mId[20]; //租客编号
char mName[20]; //租客姓名
char mPhone[12];//租客电话
public:
Guest(){}
Guest(char* id,char* name,char* phone)
{
strcpy(mId,id);
strcpy(mName,name);
strcpy(mPhone,phone);
}
char* getId(){return mId;}
char* getName(){return mName;}
char* getPhone(){return mPhone;}

void setId(char* id){strcpy(mId,id);}
void setName(char* name){strcpy(mName,name);}
void setPhone(char* phone){strcpy(mPhone,phone);}

};
//定义日期类
struct Date
{
int year;
int month;
int day;
};

//租赁方式:日租、月租、年租
/enum EUseType
{
e_use_day=1,
e_use_month,
e_use_year
};
/

//租赁信息
struct UseInfo
{
class Car* pCar; //汽车实例
class Guest* guest;//当前汽车租赁人
struct Date date; //租赁日期
//enum EUseType type;//租赁方式

void show()
{
    printf("车辆编号:%s\n",pCar->getId());
    if(pCar->getType() == e_car_jc)
        printf("车辆类型:轿车\n");
    else
        printf("车辆类型:客车\n");
    if(guest == 0)
    {
        printf("车辆状态:未出租\n");
    }
    else
    {
        printf("车辆状态:已出租\n");
        printf("出租日期:%d年%d月%d日\n",date.year,date.month,date.day);
    }
    
}

};

//获取当前时间
Date GetCurTime()
{
time_t timep;
struct tm *p;
Date dd;
time(&timep);
p = gmtime(&timep);
dd.year = 1900 + p->tm_year;
dd.month = 1+p->tm_mon;
dd.day = p->tm_mday;
return dd;
}
//计算两个日期间的年、月、日
void Caculate(Date start,Date end,int *year,int mon,int day)
{
int ds[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
*year = end.year - start.year;
if (end.month < start.month)
{
*year = *year -1;
*mon = end.month + 12 - start.month;
}else
{
*mon = end.month - start.month;
}

if (end.day < start.day)
{
    *mon = *mon -1;
    *day = end.day + ds[start.month] - start.day;
}else
{
    *day = end.day - start.day;
}

}

//添加汽车信息
void AddNewCar(class Car* cars[],int* nmb,struct UseInfo useinfo[],int nmbInfo)
{
int bgo = 1;
char mId[10]; //汽车编号
int type; //汽车类型
int mPriceDay; //日租价格
int mPriceMon; //月租价格
int mPriceYear; //年租价格
char ch;
class Car
pcar = 0;
while(bgo)
{
system("cls");
printf("请输入汽车编号:");
scanf("%s",mId);
printf("请输入汽车类型(1.轿车 2.客车)");
scanf("%d",&type);
printf("请输入日租价格、月租价格和年租价格,以空格分隔:");
scanf("%d %d %d",&mPriceDay,&mPriceMon,&mPriceYear);
pcar = new Car();
pcar->setId(mId);
if(type == 1)
pcar->setType(e_car_jc);
else
pcar->setType(e_car_kc);
pcar->setPrice(mPriceDay,mPriceMon,mPriceYear);

    cars[*nmb] = pcar;
    *nmb = *nmb + 1;

    //将汽车添加到租赁服务中
    useinfo[*nmbInfo].pCar = pcar;
    useinfo[*nmbInfo].guest = 0; //表示没有被租赁
    *nmbInfo = *nmbInfo + 1;



    printf("是否继续添加(y/n)?");
    while(1)
    {
        scanf(" %c",&ch);
        getchar();
        if(ch == 'y' || ch == 'Y')
            break;
        else if(ch =='n'||ch == 'N')
        {
            bgo = false;
            break;
        }
    }
}
system("pause");

}

//判断租车人是否存在,如果存在返回顾客实例指针,否则返回0
class Guest* isExist(char* id,class Guest* guest[],int nmbGuest)
{
int i;
for (i=0;i< nmbGuest;i++)
{
if(strcmp(guest[i]->getId(),id)==0)
return guest[i];
}
return 0;
}

//根据条件获取可用的车辆
class Car* getUsefullCar(struct UseInfo useinfo[],int nmbInfo,ECarType ecar,int *index)
{
int i;
for (i=0;i<nmbInfo;i++)
{
if (useinfo[i].guest == 0 && useinfo[i].pCar != 0 && useinfo[i].pCar->getType() == ecar)
{
*index = i;
return useinfo[i].pCar;
}
}
return 0;
}

//汽车租赁
void UseCar(struct UseInfo useinfo[],int nmbInfo,class Guest* guest[],int nmbGuest)
{
char name[20]={0};
char id[20]={0};
char phone[20]={0};
int type;
int mode;
Guest
gu = 0;
Car* pcar = 0;
ECarType eCar;
int index = 0;

int y,m,d;

system("cls");
printf("请输入租车人的编号:");
scanf("%s",id);
printf("请输入租车人的姓名:") ;
scanf("%s",name);
printf("请输入租车人的电话:");
scanf("%s",phone);

gu = isExist(id,guest,*nmbGuest);
if(gu == 0)
{
    gu = new Guest(id,name,phone);
    guest[*nmbGuest] = gu;
    *nmbGuest = *nmbGuest + 1;
}
//
printf("请输入租车类型:1.轿车 2.客车:");
scanf("%d",&type);
printf("请输入起租日期:");
scanf("%d %d %d",&y,&m,&d);


if(type == 1)
    eCar = e_car_jc;
else
    eCar = e_car_kc;
/*if(mode == 1)
    eUse = e_use_day;
else if(mode == 2)
    eUse = e_use_month;
else
    eUse = e_use_year;*/

pcar = getUsefullCar(useinfo,nmbInfo,eCar,&index);
if(pcar == 0)
    printf("当前已无该类型的车辆可以出租\n");
else
{
    useinfo[index].guest = gu;
    /*if(1==mode)
        useinfo[index].type = e_use_day;
    else if(2== mode)
        useinfo[index].type = e_use_month;
    else
        useinfo[index].type = e_use_year;*/
    useinfo[index].date.year = y;
    useinfo[index].date.month = m;
    useinfo[index].date.day = d;
    printf("租车成功,车辆编号:%s\n",pcar->getId());
}

system("pause");

}

//汽车信息查询
void FindCar(struct UseInfo useinfo[],int nmbInfo)
{
char id[20]={0};
int type;
int opt,i;
int isfind ;
int bgo = 1;
char ch;
while(bgo)
{
system("cls");
printf("1.根据编号查询\n");
printf("2.根据类型查询\n");
printf("3.查询已出租车辆\n");
printf("4.查询未出租车辆\n");
printf("5.显示全部车辆\n");
scanf("%d",&opt);
switch(opt)
{
case 1:
printf("请输入编号");
scanf("%s",id);
for (i=0;i<nmbInfo;i++)
{
if (strcmp(id,useinfo[i].pCar->getId()) == 0)
{
useinfo[i].show();
break;
}
}
if(i == nmbInfo)
printf("未找到编号为%s的车辆\n",id);
break;
case 2:
printf("请输入类型(1.轿车 2.客车):");
scanf("%d",&type);
isfind = 0;
for (i=0;i<nmbInfo;i++)
{
if ( useinfo[i].pCar->getType() == type)
{
useinfo[i].show();
isfind = 1;
}
}
if(0== isfind)
printf("未找到该类型的车辆\n");
break;
case 3:
isfind = 0;
for (i=0;i<nmbInfo;i++)
{
if ( useinfo[i].guest != 0)
{
useinfo[i].show();
isfind = 1;
}
}
if(0== isfind)
printf("未找到符合要求的车辆\n");
break;
case 4:
isfind = 0;
for (i=0;i<nmbInfo;i++)
{
if ( useinfo[i].guest == 0)
{
useinfo[i].show();
isfind = 1;
}
}
if(0== isfind)
printf("未找到符合要求的车辆\n");
break;
case 5:
for (i=0;i<nmbInfo;i++)
{
useinfo[i].show();
}
break;
}

    printf("是否继续查询(Y/N)?");
    while(1)
    {
        scanf(" %c",&ch);
        getchar();
        if(ch == 'y' || ch == 'Y')
            break;
        else if(ch =='n'||ch == 'N')
        {
            bgo = false;
            break;
        }
    }
}
system("pause");

}

//查询用户信息
void FindUser(struct UseInfo useinfo[],int nmbInfo,class Guest* guest[],int nmbGueset)
{
char tmp[20]={0};
int i;
int bgo = 1;
int bfind = 0;
Guest* pguest = 0;
char ch;
while(bgo)
{
system("cls");
memset(tmp,0,20);
bfind = 0;
printf("请输入需要查询的用户编号或者姓名或者电话:");
scanf("%s",tmp);
pguest = 0;
for (i=0;i<nmbGueset;i++)
{
if (strcmp(guest[i]->getId(),tmp)==0 || strcmp(guest[i]->getName(),tmp)==0 || strcmp(guest[i]->getPhone(),tmp)==0 )
{
pguest = guest[i];
}
}

    if (pguest == 0)
    {
        printf("未找到该用户\n");
    }else
    {
        printf("用户编号:%s\n",pguest->getId());
        printf("用户姓名:%s\n",pguest->getName());
        printf("用户电话:%s\n",pguest->getPhone());
        for (i=0;i<nmbInfo;i++)
        {
            if(useinfo[i].guest == pguest )
            {
                useinfo[i].show();
                break;
            }
        }
    }

    printf("是否继续查询(y/n)?");
    while(1)
    {
        scanf(" %c",&ch);
        getchar();
        if(ch == 'y' || ch == 'Y')
            break;
        else if(ch =='n'||ch == 'N')
        {
            bgo = false;
            break;
        }
    }

    
}

}

//汽车归还
void CarBack(struct UseInfo useinfo[],int nmbInfo)
{
char id[20]={0};
int i;
Date cur;
int year,mont,day;
int price = 0;
system("cls");
printf("请输入归还车辆的编号:");
scanf("%s",id);
for (i=0;i<nmbInfo;i++)
{
if (strcmp(id,useinfo[i].pCar->getId()) == 0 )
{
if(useinfo[i].guest != 0)
{
//计算应付金额
cur = GetCurTime();
Caculate(useinfo[i].date,cur,&year,&mont,&day);
printf("起租时间:%d年%d月%d天\n",useinfo[i].date.year,useinfo[i].date.month,useinfo[i].date.day);
printf("还车时间:%d年%d月%d天\n",cur.year,cur.month,cur.day);
printf("租借时长:%d年%d月%d天\n",year,mont,day);
price = year * useinfo[i].pCar->getYearprice() + mont*useinfo[i].pCar->getMonprice() + day * useinfo[i].pCar->getDayprice();
printf("应缴金额:%d\n",price);
useinfo[i].guest = 0;
}else
printf("该车辆尚未出租\n");

        break;
    }
}
if (i==nmbInfo)
{
    printf("未找到该编号的车辆\n");
}
system("pause");

}

int main()
{
struct UseInfo useinfo[50]; //保存租赁信息
int nmbZl = 0; //实际租赁信息条数
class Car* cars[50]; //保存汽车信息
int nmbCars = 0; //实际有的汽车数量
class Guest* guest[50]; //保存顾客信息
int nmbGuest = 0; //实际顾客数量
int bgo = 1; //系统运行标识
int opt;
while(bgo)
{
system("cls");
printf("----------------汽车租赁管理系统-----------------\n");
printf("| 1.录入汽车信息 |\n");
printf("| 2.汽车租赁 |\n");
printf("| 3.汽车信息查询 |\n");
printf("| 4.顾客信息查询 |\n");
printf("| 5.车辆归还 |\n");//在归还时计算费用
printf("| 0.退出系统 |\n");
printf("-------------------------------------------------\n");

    scanf("%d",&opt);
    switch(opt)
    {
    case 0:
        bgo = 0;
        break;
    case 1:
        AddNewCar(cars,&nmbCars,useinfo,&nmbZl);
        break;
    case 2:
        UseCar(useinfo,nmbZl,guest,&nmbGuest);
        break;
    case 3:
        FindCar(useinfo,nmbZl);
        break;
    case 4:
        FindUser(useinfo,nmbZl,guest,nmbGuest);
        break;
    case 5:
        CarBack(useinfo,nmbZl);
        break;
    }
}
return 0;

}

下面的评论不要看了,我代码重新改了,具体如下:
1.重写了文件保存,原来是逗号分隔,现在改为空格分隔
2.重写了文件读取,直接用fscanf函数实现,去掉了原来的解析
3.增加了修改租赁信息功能(只能修改租赁车辆的租赁时间)
代码如下:

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <process.h>
//定义汽车类型
enum ECarType
{
    e_car_jc=1,
    e_car_kc
};
//定义汽车类
class Car 
{
private:
    char mId[10];   //汽车编号
    enum ECarType mType; //汽车类型
    int mPriceDay;  //日租价格
    int mPriceMon;  //月租价格
    int mPriceYear; //年租价格
    //还可以添加颜色、品牌等等属性,这里就不加了,有兴趣自己添加就可以了
public:
    Car(){}
    Car(char* id,enum ECarType e,int d,int m,int y)
    {
        strcpy(mId,id);
        mType = e;
        mPriceDay = d;
        mPriceMon = m;
        mPriceYear = y;
    };
    char* getId(){return mId;}
    enum ECarType getType(){return mType;}
    int getDayprice(){return mPriceDay;}
    int getMonprice(){return mPriceMon;}
    int getYearprice(){return mPriceYear;}
    void setId(char* p){strcpy(mId,p);}
    void setType(enum ECarType e){mType = e;}
    void setPrice(int d,int m,int y)
    {
        mPriceDay = d;
        mPriceMon = m;    
        mPriceYear = y;
    };
};
//定义租赁人信息
class Guest 
{
private:
    char mId[20];   //租客编号
    char mName[20]; //租客姓名 
    char mPhone[12];//租客电话
public:
    Guest(){}
    Guest(char* id,char* name,char* phone)
    {
        strcpy(mId,id);
        strcpy(mName,name);
        strcpy(mPhone,phone);
    }
    char* getId(){return mId;}
    char* getName(){return mName;}
    char* getPhone(){return mPhone;}
    void setId(char* id){strcpy(mId,id);}
    void setName(char* name){strcpy(mName,name);}
    void setPhone(char* phone){strcpy(mPhone,phone);}
};
//定义日期类
struct Date 
{
    int year;
    int month;
    int day;
};

//租赁信息
struct UseInfo 
{
    class Car* pCar;   //汽车实例
    class Guest* guest;//当前汽车租赁人
    struct Date date;  //租赁日期
    
    void show()
    {
        printf("车辆编号:%s\n",pCar->getId());
        if(pCar->getType() == e_car_jc)
            printf("车辆类型:轿车\n");
        else
            printf("车辆类型:客车\n");
        if(guest == 0)
        {
            printf("车辆状态:未出租\n");
        }
        else
        {
            printf("车辆状态:已出租\n");
            printf("出租日期:%d年%d月%d日\n",date.year,date.month,date.day);
        }
    }
};
//获取当前时间
Date GetCurTime()
{
    time_t timep;
    struct tm *p;
    Date dd;
    time(&timep);
    p = gmtime(&timep);
    dd.year = 1900 + p->tm_year;
    dd.month = 1+p->tm_mon;
    dd.day = p->tm_mday;
    return dd;
}
//计算两个日期间的年、月、日
void Caculate(Date start,Date end,int *year,int *mon,int* day)
{
    int ds[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    *year = end.year - start.year;
    if (end.month < start.month)
    {
        *year = *year -1;
        *mon = end.month + 12 - start.month;
    }else
    {
        *mon = end.month - start.month;
    }
    if (end.day < start.day)
    {
        *mon = *mon -1;
        *day = end.day + ds[start.month] - start.day;
    }else
    {
        *day = end.day - start.day;
    }
}
 
 
//判断租车人是否存在,如果存在返回顾客实例指针,否则返回0
class Guest* isExist(char* id,class Guest* guest[],int nmbGuest)
{
    int i;
    for (i=0;i< nmbGuest;i++)
    {
        if(strcmp(guest[i]->getId(),id)==0)
            return guest[i];
    }
    return 0;
}
 

//读文件
void ReadFile(char* filename,class Car* cars[],int* nmb,class Guest* guests[],int *nmbguest,struct UseInfo useinfo[],int *nmbInfo)
{
    FILE* fp;
    //车辆信息
    char carId[20];
    int nCarType;
    int pyear,pmon,pday;
    //客户信息
    char guestId[20];
    char name[20];
    char phone[20];
    //租赁日期
    int year,mon,day;
 
    Car* pcar;
    Guest* pguest;
    char buf[200];
 
    if ((fp=fopen(filename,"r")) == 0)
    {
        printf("文件打开失败");
        return ;
    }
    while(!feof(fp))
    {
        memset(carId,0,20);
        memset(guestId,0,20);
        memset(name,0,20);
        memset(phone,0,20);
        memset(buf,0,200);
        
        fscanf(fp,"%s %d %d %d %d %s %s %s %d %d %d\n",carId,&nCarType,&pday,&pmon,&pyear,guestId,name,phone,&year,&mon,&day);
        if(nCarType == 1)
            pcar = new Car(carId,e_car_jc,pday,pmon,pyear);
        else
            pcar = new Car(carId,e_car_kc,pday,pmon,pyear);
 
        if(strcmp(guestId,"0") == 0)
            pguest = 0;
        else
        {
            pguest = isExist(guestId,guests,*nmbguest);
            if(pguest == 0)
            {
                pguest = new Guest(guestId,name,phone);
                guests[*nmbguest] = pguest;
                *nmbguest = *nmbguest + 1;
            }
        }
 
        cars[*nmb] = pcar;
        *nmb = *nmb +1;
 
        useinfo[*nmbInfo].pCar = pcar;
        useinfo[*nmbInfo].guest = pguest;
        useinfo[*nmbInfo].date.year = year;
        useinfo[*nmbInfo].date.month = mon;
        useinfo[*nmbInfo].date.day = day;
        *nmbInfo = *nmbInfo+1;
    }
    fclose(fp);
 
}
 
//写文件
void WriteFile(char* name,struct UseInfo useinfo[],int nmbInfo)
{
    int i;
    FILE* fp;
    if ((fp = fopen(name,"w")) == 0)
    {
        printf("文件打开失败\n");
        return;
    }
    for (i=0;i<nmbInfo;i++)
    {
        if(useinfo[i].guest != 0)
            fprintf(fp,"%s %d %d %d %d %s %s %s %d %d %d\n",useinfo[i].pCar->getId(),useinfo[i].pCar->getType(),useinfo[i].pCar->getDayprice(),
            useinfo[i].pCar->getMonprice(),useinfo->pCar->getYearprice(),useinfo[i].guest->getId(),useinfo[i].guest->getName(),
            useinfo[i].guest->getPhone(),useinfo[i].date.year,useinfo[i].date.month,useinfo[i].date.day);
        else
            fprintf(fp,"%s %d %d %d %d 0 0 0 0 0 0\n",useinfo[i].pCar->getId(),useinfo[i].pCar->getType(),useinfo[i].pCar->getDayprice(),
            useinfo[i].pCar->getMonprice(),useinfo->pCar->getYearprice());
    }
    fclose(fp);
}
 
 
 
//添加汽车信息
void AddNewCar(class Car* cars[],int* nmb,struct UseInfo useinfo[],int *nmbInfo)
{
    int bgo = 1;
    char mId[10];   //汽车编号
    int type;       //汽车类型
    int mPriceDay;  //日租价格
    int mPriceMon;  //月租价格
    int mPriceYear; //年租价格
    char ch;
    class Car* pcar = 0;
    while(bgo)
    {
        system("cls");
        printf("请输入汽车编号:");
        scanf("%s",mId);
        printf("请输入汽车类型(1.轿车 2.客车)");
        scanf("%d",&type);
        printf("请输入日租价格、月租价格和年租价格,以空格分隔:");
        scanf("%d %d %d",&mPriceDay,&mPriceMon,&mPriceYear);
        pcar = new Car();
        pcar->setId(mId);
        if(type == 1)
            pcar->setType(e_car_jc);
        else
            pcar->setType(e_car_kc);
        pcar->setPrice(mPriceDay,mPriceMon,mPriceYear);
        cars[*nmb] = pcar;
        *nmb = *nmb + 1;
        //将汽车添加到租赁服务中
        useinfo[*nmbInfo].pCar = pcar;
        useinfo[*nmbInfo].guest = 0; //表示没有被租赁
        *nmbInfo = *nmbInfo + 1;
        printf("是否继续添加(y/n)?");
        while(1)
        {
            scanf(" %c",&ch);
            getchar();
            if(ch == 'y' || ch == 'Y')
                break;
            else if(ch =='n'||ch == 'N')
            {
                bgo = false;
                break;
            }
        }
    }
    system("pause");
}
 
//根据条件获取可用的车辆
class Car* getUsefullCar(struct UseInfo useinfo[],int nmbInfo,ECarType ecar,int *index)
{
    int i;
    for (i=0;i<nmbInfo;i++)
    {
        if (useinfo[i].guest == 0 && useinfo[i].pCar != 0 && useinfo[i].pCar->getType() == ecar)
        {
            *index = i;
            return useinfo[i].pCar;
        }
    }
    return 0;
}
//汽车租赁
void UseCar(struct UseInfo useinfo[],int nmbInfo,class Guest* guest[],int *nmbGuest)
{
    char name[20]={0};
    char id[20]={0};
    char phone[20]={0};
    int type;
    int mode;
    Guest* gu = 0;
    Car* pcar = 0;
    ECarType eCar;
    //EUseType eUse;
    int index = 0;
    int y,m,d;
    system("cls");
    printf("请输入租车人的编号:");
    scanf("%s",id);
    printf("请输入租车人的姓名:") ;
    scanf("%s",name);
    printf("请输入租车人的电话:");
    scanf("%s",phone);
    gu = isExist(id,guest,*nmbGuest);
    if(gu == 0)
    {
        gu = new Guest(id,name,phone);
        guest[*nmbGuest] = gu;
        *nmbGuest = *nmbGuest + 1;
    }
    //
    printf("请输入租车类型:1.轿车 2.客车:");
    scanf("%d",&type);
    //printf("请输入租车方式:1.日租 2.月租 3.年租:");
    //scanf("%d",&mode);
    printf("请输入起租日期:");
    scanf("%d %d %d",&y,&m,&d);
    if(type == 1)
        eCar = e_car_jc;
    else
        eCar = e_car_kc;
    /*if(mode == 1)
    eUse = e_use_day;
    else if(mode == 2)
    eUse = e_use_month;
    else
    eUse = e_use_year;*/
    pcar = getUsefullCar(useinfo,nmbInfo,eCar,&index);
    if(pcar == 0)
        printf("当前已无该类型的车辆可以出租\n");
    else
    {
        useinfo[index].guest = gu;
        /*if(1==mode)
        useinfo[index].type = e_use_day;
        else if(2== mode)
        useinfo[index].type = e_use_month;
        else
        useinfo[index].type = e_use_year;*/
        useinfo[index].date.year = y;
        useinfo[index].date.month = m;
        useinfo[index].date.day = d;
        printf("租车成功,车辆编号:%s\n",pcar->getId());
    }
    system("pause");
}
//汽车信息查询
void FindCar(struct UseInfo useinfo[],int nmbInfo)
{
    char id[20]={0};
    int type;
    int opt,i;
    int isfind ;
    int bgo = 1;
    char ch;
    while(bgo)
    {
        system("cls");
        printf("1.根据编号查询\n");
        printf("2.根据类型查询\n");
        printf("3.查询已出租车辆\n");
        printf("4.查询未出租车辆\n");
        printf("5.显示全部车辆\n");
        scanf("%d",&opt);
        switch(opt)
        {
        case 1:
            printf("请输入编号");
            scanf("%s",id);
            for (i=0;i<nmbInfo;i++)
            {
                if (strcmp(id,useinfo[i].pCar->getId()) == 0)
                {
                    useinfo[i].show();
                    break;
                }
            }
            if(i == nmbInfo)
                printf("未找到编号为%s的车辆\n",id);
            break;
        case 2:
            printf("请输入类型(1.轿车 2.客车):");
            scanf("%d",&type);
            isfind = 0;
            for (i=0;i<nmbInfo;i++)
            {
                if ( useinfo[i].pCar->getType() == type)
                {
                    useinfo[i].show();
                    isfind = 1;
                }
            }
            if(0== isfind)
                printf("未找到该类型的车辆\n");
            break;
        case 3:
            isfind = 0;
            for (i=0;i<nmbInfo;i++)
            {
                if ( useinfo[i].guest != 0)
                {
                    useinfo[i].show();
                    isfind = 1;
                }
            }
            if(0== isfind)
                printf("未找到符合要求的车辆\n");
            break;
        case 4:
            isfind = 0;
            for (i=0;i<nmbInfo;i++)
            {
                if ( useinfo[i].guest == 0)
                {
                    useinfo[i].show();
                    isfind = 1;
                }
            }
            if(0== isfind)
                printf("未找到符合要求的车辆\n");
            break;
        case 5:
            for (i=0;i<nmbInfo;i++)
            {
                useinfo[i].show();
            }
            break;
        }
        printf("是否继续查询(Y/N)?");
        while(1)
        {
            scanf(" %c",&ch);
            getchar();
            if(ch == 'y' || ch == 'Y')
                break;
            else if(ch =='n'||ch == 'N')
            {
                bgo = false;
                break;
            }
        }
    }
    system("pause");
}
//查询用户信息
void FindUser(struct UseInfo useinfo[],int nmbInfo,class Guest* guest[],int nmbGueset)
{
    char tmp[20]={0};
    int i;
    int bgo = 1;
    int bfind = 0;
    Guest* pguest = 0;
    char ch;
    while(bgo)
    {
        system("cls");
        memset(tmp,0,20);
        bfind = 0;
        printf("请输入需要查询的用户编号或者姓名或者电话:");
        scanf("%s",tmp);
        pguest = 0;
        for (i=0;i<nmbGueset;i++)
        {
            if (strcmp(guest[i]->getId(),tmp)==0 || strcmp(guest[i]->getName(),tmp)==0 || strcmp(guest[i]->getPhone(),tmp)==0  )
            {
                pguest = guest[i];
            }
        }
        if (pguest == 0)
        {
            printf("未找到该用户\n");
        }else
        {
            printf("用户编号:%s\n",pguest->getId());
            printf("用户姓名:%s\n",pguest->getName());
            printf("用户电话:%s\n",pguest->getPhone());
            for (i=0;i<nmbInfo;i++)
            {
                if(useinfo[i].guest == pguest )
                {
                    useinfo[i].show();
                    break;
                }
            }
        }
        printf("是否继续查询(y/n)?");
        while(1)
        {
            scanf(" %c",&ch);
            getchar();
            if(ch == 'y' || ch == 'Y')
                break;
            else if(ch =='n'||ch == 'N')
            {
                bgo = false;
                break;
            }
        }
    }
}

//修改租赁信息
void ModZlInfo(struct UseInfo useinfo[],int nmbInfo)
{
    int i=0;
    int year,mon,day;
    char id[20]={0};
    system("cls");
    printf("请输入需要修改信息的车辆编号:");
    scanf("%s",id);
    for (i=0;i<nmbInfo;i++)
    {
        if(strcmp(id,useinfo[i].pCar->getId()) == 0)
        {
            break;
        }
    }
    if(i == nmbInfo)
        printf("没有找到该编号的车辆...\n");
    else
    {
        useinfo[i].show();
        if(useinfo[i].guest == 0)
            printf("该车辆尚未租赁,无法修改信息\n");
        else
        {
            printf("请输入需要修改的日期:");
            scanf("%d %d %d",&year,&mon,&day);
            useinfo[i].date.year = year;
            useinfo[i].date.month = mon;
            useinfo[i].date.day = day;
            printf("租赁日期修改成功!\n");
        }
        
    }
    system("pause");
}


//汽车归还
void CarBack(struct UseInfo useinfo[],int nmbInfo)
{
    char id[20]={0};
    int i;
    Date cur;
    int year,mont,day;
    int price = 0;
    system("cls");
    printf("请输入归还车辆的编号:");
    scanf("%s",id);
    for (i=0;i<nmbInfo;i++)
    {
        if (strcmp(id,useinfo[i].pCar->getId()) == 0 )
        {
            if(useinfo[i].guest != 0)
            {
                //计算应付金额
                cur = GetCurTime();
                Caculate(useinfo[i].date,cur,&year,&mont,&day);
                printf("起租时间:%d年%d月%d天\n",useinfo[i].date.year,useinfo[i].date.month,useinfo[i].date.day);
                printf("还车时间:%d年%d月%d天\n",cur.year,cur.month,cur.day);
                printf("租借时长:%d年%d月%d天\n",year,mont,day);
                price = year * useinfo[i].pCar->getYearprice() + mont*useinfo[i].pCar->getMonprice() + day * useinfo[i].pCar->getDayprice();
                printf("应缴金额:%d\n",price);
                useinfo[i].guest = 0;
            }else
                printf("该车辆尚未出租\n");
            break;
        }
    }
    if (i==nmbInfo)
    {
        printf("未找到该编号的车辆\n");
    }
    system("pause");
}
int main()
{
    struct UseInfo useinfo[50];   //保存租赁信息
    int nmbZl = 0;                //实际租赁信息条数
    class Car* cars[50];    //保存汽车信息
    int nmbCars = 0;        //实际有的汽车数量
    class Guest* guest[50]; //保存顾客信息
    int nmbGuest = 0;       //实际顾客数量
    int bgo = 1;            //系统运行标识
    int opt;
    //读取历史数据
    ReadFile("out.txt",cars,&nmbCars,guest,&nmbGuest,useinfo,&nmbZl);
    while(bgo)
    {
        system("cls");
        printf("----------------汽车租赁管理系统-----------------\n");
        printf("|    1.录入汽车信息                             |\n");
        printf("|    2.汽车租赁                                 |\n");
        printf("|    3.汽车信息查询                             |\n");
        printf("|    4.顾客信息查询                             |\n");
        printf("|    5.修改租赁信息                             |\n");//在归还时计算费用
        printf("|    6.车辆归还                                 |\n");//在归还时计算费用
        printf("|    0.退出系统                                 |\n");
        printf("-------------------------------------------------\n");
        scanf("%d",&opt);
        switch(opt)
        {
        case 0:
            WriteFile("out.txt",useinfo,nmbZl);
            bgo = 0;
            break;
        case 1:
            AddNewCar(cars,&nmbCars,useinfo,&nmbZl);
            break;
        case 2:
            UseCar(useinfo,nmbZl,guest,&nmbGuest);
            break;
        case 3:
            FindCar(useinfo,nmbZl);
            break;
        case 4:
            FindUser(useinfo,nmbZl,guest,nmbGuest);
            break;
        case 5:
            ModZlInfo(useinfo,nmbZl);
            break;
        case 6:
            CarBack(useinfo,nmbZl);
            break;
        }
    }
    return 0;
}