汽车租赁管理系统

①使用结构体数组输入至少5辆汽车信息

  (注意车辆状态最终存放到文件中,下次打开直接读取)

②车辆租借界面

根据车辆的状态显示不同的提示给用户

#include <stdio.h>
void menu()   //建立系统菜单
{
    printf("\n\t\t\t欢迎租赁本公司的车辆\n\n");
    printf("\t\t\t1.查询所有车辆\n\n");
    printf("\t\t\t2.归还以租赁车辆\n\n");
    printf("\t\t\t3.租借现有车辆\n\n");
    printf("\t\t\t0.退出租赁系统\n\n");
}

//建立存放信息的结构体
struct node
{
    int num,doing;
    char carname[10],carnum[10],money[10],day[10],daymoney[10],;
}INF[5];

//输入车辆信息
void input(struct node inf[5])
{
    int i;
    FILE  *fp;   //定义文件指针
    printf("\t\t\t租赁汽车公司系统\n\n");
    printf("请输入汽车信息\n\n");
    printf("0:以租出车辆   1:未租出车辆\n\n");
    printf("|编号  |车型  |车牌号  |押金  |限制天数  |日租价  |当前状态\n");
    printf("-----------------------------------------------------------\n");
    if((fp = fopen("E:\\ABC.txt","wb")) == NULL)
    {
        printf("Cannot open file !\n");
        return;
    }
    for(i = 0;i < 5;i++)
    {
        scanf("%d %s %s %s %s %s %d",&inf[i].num,inf[i].carname,inf[i].carnum,inf[i].money,inf[i].day,inf[i].daymoney,&inf[i].doing);
    }
    fwrite(inf,sizeof(struct node),5,fp);
    rewind(fp);
}
//读取信息
int Read()
{
    FILE  *fp;
     if((fp = fopen("E:\\ABC.txt","rb")) == NULL)
    {
        return -1;
    }else
    {
        fread(INF,sizeof(struct node),5,fp);
        return 1;
    }

}
//查询车辆信息功能
void putout(struct node inf[5])
{
    int i;
    printf("\n\n                        库存车辆信息总览\n\n\n");
    printf("   |编号  |车型    |车牌号    |押金  |限制天数  |日租价  |当前状态\n");
    printf("   ----------------------------------------------------------------\n");
     for(i = 0;i < 5;i++)
    {
       printf("   %d     %s   %s    %s      %s       %s      ",inf[i].num,inf[i].carname,inf[i].carnum,inf[i].money,inf[i].day,inf[i].daymoney);
        if(INF[i].doing == 1)
            printf("未租出\n");
        else
            printf("以租出\n");
    }
    printf("\n\n");
}
//归还已租车辆函数
void Return(int iNum)
{
    if(INF[iNum].doing == 1)
    {
        printf("\n该车未出租\n\n");
    }else
    {
        INF[iNum].doing = 1;
        printf("   |编号  |车型    |车牌号    |押金  |限制天数  |日租价  |当前状态\n");
        printf("   ----------------------------------------------------------------\n");
        printf("   %d     %s   %s    %s      %s       %s      ",INF[iNum].num,INF[iNum].carname,INF[iNum].carnum,INF[iNum].money,INF[iNum].day,INF[iNum].daymoney);
        printf("未租出\n\n");
        printf("操纵成功…………\n");
    }

}
//租借车辆函数
void borrow(int iNum)
{
    if(INF[iNum].doing == 0)
    {
        printf("\n该车已被租借\n");
    }else
    {
        INF[iNum].doing = 0;
        printf("   |编号  |车型    |车牌号    |押金  |限制天数  |日租价  |当前状态\n");
        printf("   ----------------------------------------------------------------\n");
        printf("   %d     %s   %s    %s      %s       %s      ",INF[iNum].num,INF[iNum].carname,INF[iNum].carnum,INF[iNum].money,INF[iNum].day,INF[iNum].daymoney);
        printf("以租出\n\n");
        printf("操纵成功…………\n");
    }

}
int main()
{
    int choose = 0;
    int fist;
    fist = Read();
/*此处为本程序中重要的部分,
  通过fist来判断是否是第一次登录,如果是
第一次登录,则调用input函数,建立一个新文件,
如果是是第>1次登录,则直接读出文件内容
*/
    if(fist == -1) 
    {
        printf("这是您第一次登录系统\n");
        input(INF);
        Read();
    }
    while(1)
    {
        menu();
        int inum;
        printf("\t\t\t请输入您所需的服务编号: ");
        scanf("%d",&choose);
        if(choose == 1)  //查询所有车辆函数
        {
            putout(INF);

        }else if(choose == 2)  //归还租赁车辆
        {
            printf("请输入归还车辆编号: ");
            scanf("%d",&inum);
            Return(inum);

        }else if(choose == 3)  //租借现有车辆
        {
            printf("请输入租借车辆编号: ");
            scanf("%d",&inum);
            borrow(inum);

        }else if(choose == 0)  //退出租赁系统
        {
             printf("\n\n\t\t\t欢迎下次再来\n");
             break;
        }
    }
    return 0;
}



本程序缺陷:只能输入五组汽车的信息,不能输入>5组的信息。

用到知识:

      1.结构体
      2.文件

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值