当前位置:主页 > 软件编程 > C代码 >

C语言实现单位车辆调度管理

时间:2022-08-07 08:58:54 | 栏目:C代码 | 点击:

本文实例为大家分享了C语言实现单位车辆调度管理的具体代码,供大家参考,具体内容如下

单位车辆信息包括:车牌号、车型、载重(客)量,车牌,生产厂家,出厂日期,购买日期,购买单价等;车辆调度信息还应包括:用车人,用车单位,调度人,出车车牌,出车司机,出车用途,出车日期,出车时间,收车日期,收车时间及出车费用等信息等。设计“车辆调度管理系统”,使之能提供以下功能:

系统以菜单方式工作;

车辆调度信息录入功能(车辆调度信息用文件vehicle.txt保存);

车辆信息及车辆调度信息浏览功能;

车辆调度查询和排序功能: 

车辆信息及车辆调度信息的删除与修改等功能。

代码如下,完全原创,代码功能完整!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
 
int feature;//定义输入的功能选项
char now_date[12];//定义系统当前日期存储缓冲区
SYSTEMTIME sys; //定义系统时间变量
 
//定义车辆数据结构
typedef struct Vehicle
{
    char *ver_id;//定义车辆编号
    char *ver_no;//定义车辆牌号
    char *weight;//定义车辆对应载重量
    char *ver_trand;//定义车牌
    char *factory;//定义车辆生产厂家
    char *outdate;//定义车辆出厂日期
    char *buydate;//定义车辆购买日期
    char *section;//定义车辆调用单位
    char *purpose;//定义车辆出车用途
    char *usedate;//定义车辆出车日期
    char *usetime;//定义车辆调度时长
    char *useprice;//定义车辆出车费用
    char *price;//定义车辆购买单价
    char *ver_type;//定义车辆类型
    char *ver_status;//定义车辆状态
    char *state;//定义车辆运营状态
    char *service;//定义车辆维修情况
    char *violation;//定义车辆违章情况
    char *ver_last_date;//定义车辆归还日期
    char *lender_name;//定义租车人姓名
    char *lender_id;//定义租车人身份证号码
    char *return_time;//定义归还时间
}Vehicle,*VData;
 
//定义车辆链表
typedef struct VNode
{
    Vehicle data;
    struct VNode *next;
}VNode,*VehicleList;
 
//声明函数
VehicleList select_vehicle(VehicleList L, char * key);//定义车辆查询函数
VehicleList InitList(VehicleList L);//定义链表初始化函数
VehicleList LoadData(VehicleList L, char *filename);//定义信息读取函数
void SaveData(VehicleList L, char *filename);//定义存储数据函数
int main_menu();//定义主菜单
int dispatch(VehicleList L, char *lender_name, char *lender_id, char *return_time, char *section,char *purpose,
             char *usedate,char *useprice,char *usetime);//定义车辆调度函数
void back_vehicle(VehicleList L, char * key, char *lender_name, char *lender_id);//定义车辆归还函数
void list_all(VehicleList L);//定义车辆总览函数
VehicleList select_vehicle(VehicleList L, char * key);//定义车辆查询函数
VehicleList register_vehicle(VehicleList L);//定义车辆登记函数
void delete_vehicle(VehicleList L, char * key);//定义车辆删除函数
int datecmp(char *a,char *b);//定义日期比较函数
int quit();//定义退出函数
char *getS();
 
//定义字符串输入接口函数
char *getS()
{
    char *c;
    char s[30];
    scanf("%s",s);
    c=(char*)malloc(sizeof(char)*(strlen(s)+1));
    strcpy(c,s);
    return c;
}
 
//定义链表初始化函数
VehicleList InitList(VehicleList L)
{
    L=(VehicleList)malloc(sizeof(VNode));
    L->next=NULL;
    return L;
}
 
//定义比较日期大小函数
int datecmp(char *a,char *b)
{
    int i;
    for(i=0;i<11;i++)
    {
        if(a[i]>b[i])
            return 1;
        else if(a[i]==b[i])
            continue;
        else
            return -1;
 
    }
    return 0;
}
 
//定义从文件加载数据函数
VehicleList LoadData(VehicleList L,char *filename)
{
    VehicleList p,q;
    //Vehicle v,v2,v3;
    Vehicle vdata;
    FILE *fp;//定义文件指针
    char ver_id[20],ver_no[20],weight[20],ver_trand[20],factory[20],outdate[20];
    char buydate[20],price[20],ver_type[20],ver_status[20],ver_date[20],usetime[20];
    char section[20],purpose[20],usedate[20],useprice[20];
    char state[20],service[20],violation[20];
    char lender_name[20],lender_id[20],return_time[20];
    q=L;
    if((fp = fopen(filename,"r+")) == NULL)
    {
        printf("文件数据读取失败!\n");
    }
    else
    {
        while (!feof(fp))//将文件中数据读取到链表中
        {
            fscanf(fp,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\r\n",
                   ver_id,ver_no,weight,ver_trand,factory,outdate,buydate,price,ver_type,ver_status,
                   ver_date,purpose,usedate,usetime,useprice,state,service,violation,
                   lender_name,lender_id,return_time);
            vdata.ver_id=(char*)malloc(sizeof(char)*(strlen(ver_id)+1));
            vdata.ver_no=(char*)malloc(sizeof(char)*(strlen(ver_no)+1));
            vdata.weight=(char*)malloc(sizeof(char)*(strlen(weight)+1));
            vdata.ver_trand=(char*)malloc(sizeof(char)*(strlen(ver_trand)+1));
            vdata.factory=(char*)malloc(sizeof(char)*(strlen(factory)+1));
            vdata.outdate=(char*)malloc(sizeof(char)*(strlen(outdate)+1));
            vdata.buydate=(char*)malloc(sizeof(char)*(strlen(buydate)+1));
            vdata.price=(char*)malloc(sizeof(char)*(strlen(price)+1));
            //vdata.section=(char*)malloc(sizeof(char)*(strlen(section)+1));
            vdata.purpose=(char*)malloc(sizeof(char)*(strlen(purpose)+1));
            vdata.usedate=(char*)malloc(sizeof(char)*(strlen(usedate)+1));
            vdata.usetime=(char*)malloc(sizeof(char)*(strlen(usetime)+1));
            vdata.useprice=(char*)malloc(sizeof(char)*(strlen(useprice)+1));
            vdata.ver_type=(char*)malloc(sizeof(char)*(strlen(ver_type)+1));
            vdata.state=(char*)malloc(sizeof(char)*(strlen(state)+1));
            vdata.service=(char*)malloc(sizeof(char)*(strlen(service)+1));
            vdata.violation=(char*)malloc(sizeof(char)*(strlen(violation)+1));
            vdata.ver_status=(char*)malloc(sizeof(char)*(strlen(ver_status)+1));
            vdata.ver_last_date=(char*)malloc(sizeof(char)*(strlen(ver_date)+1));
            vdata.lender_name=(char*)malloc(sizeof(char)*(strlen(lender_name)+1));
            vdata.lender_id=(char*)malloc(sizeof(char)*(strlen(lender_id)+1));
            vdata.return_time=(char*)malloc(sizeof(char)*(strlen(return_time)+1));
            strcpy(vdata.ver_id,ver_id);
            strcpy(vdata.ver_no,ver_no);
            strcpy(vdata.weight,weight);
            strcpy(vdata.ver_trand,ver_trand);
            strcpy(vdata.factory,factory);
            strcpy(vdata.outdate,outdate);
            strcpy(vdata.buydate,buydate);
            strcpy(vdata.price,price);
            strcpy(vdata.purpose,purpose);
            strcpy(vdata.usedate,usedate);
            strcpy(vdata.usetime,usetime);
            strcpy(vdata.useprice,useprice);
            strcpy(vdata.ver_type,ver_type);
            strcpy(vdata.ver_status,ver_status);
            strcpy(vdata.state,state);
            strcpy(vdata.service,service);
            strcpy(vdata.violation,violation);
            strcpy(vdata.ver_last_date,ver_date);
            strcpy(vdata.lender_name,lender_name);
            strcpy(vdata.lender_id,lender_id);
            strcpy(vdata.return_time,return_time);
            p=(VehicleList)malloc(sizeof(VNode));
            p->data=vdata;
            q->next=p;
            q=p;
        }
        fclose(fp);
    }
    q->next=NULL;
    return L;
 
}
//定义存储数据函数
void SaveData(VehicleList L, char *filename)
{
    VehicleList p;
    FILE *fp;//定义文件指针
    p=L;
 
    if((fp = fopen(filename,"w+")) == NULL)
    {
        printf("文件写入失败!\n");
    }
    else
    {
        while (p->next != NULL)
        {
            fprintf(fp,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\r\n",p->next->data.ver_id,
                    p->next->data.ver_no,p->next->data.weight,p->next->data.ver_trand,p->next->data.factory,
                    p->next->data.outdate,p->next->data.buydate,p->next->data.price,
                    p->next->data.usedate,p->next->data.useprice,
                    p->next->data.ver_type,p->next->data.ver_status,p->next->data.usetime,
                    p->next->data.state,p->next->data.service,p->next->data.violation,
                    p->next->data.ver_last_date,p->next->data.lender_name,
                    p->next->data.lender_id,p->next->data.return_time);
            p=p->next;
        }
    }
 
    fclose(fp);
 
}
 
 
//定义主菜单
int main_menu()
{
    int i;
    printf("******************************************************\n");
    printf("*                     汽车调度程序                   *\n");
    printf("*                                         韩力毅     *\n");
    printf("******************************************************\n");
    printf("*                      1.汽车调度                    *\n");
    printf("*                      2.汽车归还                    *\n");
    printf("*                      3.车辆总况一览                *\n");
    printf("*                      4.车辆查询                    *\n");
    printf("*                      5.新车登记                    *\n");
    printf("*                      6.车辆注销                    *\n");
    printf("*                      7.退出系统                    *\n");
    printf("******************************************************\n");
    printf("*                      请选择: 1-7                   *\n");
    printf("******************************************************\n");
    printf("请输入您的选项:");
    scanf("%d", &i);
    feature=i;
    return i;
}
 
//定义功能1--汽车调度
int dispatch(VehicleList L, char *lender_name, char *lender_id, char *return_time, char *section,char *purpose,
             char *usedate,char *useprice,char *usetime)
{
    char *vtype,*vid;//车型
    VehicleList p,q1,q2;
    char tmpdate[20];
    int i=0;
    p=L;
    q1=L;
    q2=L;
    strcpy(tmpdate,now_date);
    printf("\n请选择您需要的车型(A.大型车 B.中型车 C.小型车 E.返回主菜单 请输入大写字母!):");
    vtype = getS();
    if (strcmp("E",vtype) == 0) return 0;//如果输入E,返回主菜单
    printf("\n*************************************本次出车费用为200元*************************************\n");
    printf("\n****************************************可选车辆列表******************************************");
    printf("\n车辆编号   车牌号  载重量  车牌  车辆类型    车辆状态    上次出车时间(DDYYMM)\n");
    while (L->next != NULL)
    {//显示符合条件的在库车辆信息
        if (strcmp("出车中",L->next->data.ver_status) !=0 && strcmp(vtype,L->next->data.ver_type) ==0)
        {
            if(datecmp(tmpdate,L->next->data.ver_last_date) > -1)//调用比较未调度时间的函数
            {
                q1=L;//获得最长时间没有被调度的车的节点指针
                strcpy(tmpdate,q1->next->data.ver_last_date);
            }
 
            printf("%6s %10s %-10s %3s %8s %13s %15s\n",
                   L->next->data.ver_id,L->next->data.ver_no,L->next->data.weight,L->next->data.ver_trand,L->next->data.ver_type,
                   L->next->data.ver_status,L->next->data.ver_last_date);
        }
        if (strcmp("NEW",L->next->data.ver_last_date) ==0 && strcmp(vtype,L->next->data.ver_type) ==0)
        {
            i++;//计算新车数量
            q2=L;//获得新车的节点指针
        }
 
        L=L->next;
    }
    L=p;
    printf("**************************************************************************\n");
    printf("请输入车辆编号或输入W智能筛选(输入E返回主菜单):");
    vid = getS();
    if (strcmp("W",vid) == 0)
    {
        if(i>0)
        {
            printf("\n****************************************车辆调度结果****************************************");
            printf("\n已调出车辆:%s,载重量:%s,车牌:%s,出车日期:%s\n",q2->next->data.ver_id,q2->next->data.weight,q2->next->data.ver_trand,now_date);
            printf("**********************************************************************************************\n");
            q2->next->data.ver_status="出车中";//修改车辆状态和上次出车时间
            q2->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));
            strcpy(q2->next->data.ver_last_date,now_date);
            strcpy(q2->next->data.lender_name,lender_name);
            strcpy(q2->next->data.lender_id,lender_id);
            strcpy(q2->next->data.return_time,return_time);
            strcpy(q2->next->data.section,section);
            strcpy(q2->next->data.purpose,purpose);
            strcpy(q2->next->data.usedate,usedate);
            strcpy(q2->next->data.useprice,useprice);
            strcpy(q2->next->data.usetime,usetime);
            return 1;
 
        }
        else
        {
            printf("\n****************************************车辆调度结果****************************************");
            printf("\n已调出车辆:%s,载重量:%s,车牌:%s,出车日期:%s\n",q1->next->data.ver_id,q1->next->data.weight,q1->next->data.ver_trand,now_date);
            printf("**********************************************************************************************\n");
            q1->next->data.ver_status="出车中";//修改车辆状态和上次出车时间
            q1->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));
            strcpy(q1->next->data.ver_last_date,now_date);
            strcpy(q1->next->data.lender_name,lender_name);
            strcpy(q1->next->data.lender_id,lender_id);
            strcpy(q1->next->data.return_time,return_time);
            strcpy(q2->next->data.section,section);
            strcpy(q2->next->data.purpose,purpose);
            strcpy(q2->next->data.usedate,usedate);
            strcpy(q2->next->data.useprice,useprice);
            strcpy(q2->next->data.usetime,usetime);
            return 1;
 
        }
 
    }
    else if ((p=select_vehicle(L,vid)) != NULL)
    {
        p->next->data.ver_status="出车中";//修改车辆状态和上次出车时间
        p->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));
        strcpy(p->next->data.ver_last_date,now_date);
        strcpy(p->next->data.lender_name,lender_name);
        strcpy(p->next->data.lender_id,lender_id);
        strcpy(p->next->data.return_time,return_time);
        strcpy(q2->next->data.section,section);
        strcpy(q2->next->data.purpose,purpose);
        strcpy(q2->next->data.usedate,usedate);
        strcpy(q2->next->data.useprice,useprice);
        strcpy(q2->next->data.usetime,usetime);
        printf("\n****************************************车辆调度结果****************************************");
        printf("\n已调出车辆:%s,载重量:%s,车牌:%s,出车日期:%s\n",p->next->data.ver_id,p->next->data.weight,p->next->data.ver_trand,now_date);
        printf("**********************************************************************************************\n");
        return 1;
    }
    else if (strcmp("E",vid) == 0)
    {
        return 0;
    }
    else
    {
        printf("输入错误,请返回!\n");
        return 4;
    }
    return 4;
}
 
//定义功能2--汽车归还
void back_vehicle(VehicleList L, char * key, char *lender_name,
                  char *lender_id)
{
    VehicleList p;
    if ((p=select_vehicle(L,key)) != NULL)
    {
        if (strcmp(lender_name,p->next->data.lender_name) == 0 &&
            strcmp(lender_id,p->next->data.lender_id) == 0)//姓名和身份证号输入正确才可还车
        {
            if (datecmp(now_date,p->next->data.return_time) < 1)//如果实际归还时间超出预定归还时间,提示到服务台办理
            {
                p->next->data.ver_status="可调出";//恢复车辆状态及租车人信息为初始状态
                p->next->data.lender_name="N/A";
                p->next->data.lender_id="N/A";
                p->next->data.return_time="N/A";
                printf("\n汽车归还成功!\n\n");
            }
            else
            {
                printf("\n归还失败,您的车辆已超期,请到总服务台办理超期还车手续!\n\n");
            }
        }
        else
        {
            printf("\n租车人姓名或身份证号输入有误!\n\n");
        }
 
    }else{
        printf("\n没有查询到编号为:%s的车辆信息!\n\n",key);
    }
 
}
 
//定义功能3--车辆总况一览
void list_all(VehicleList L)
{
    printf("\n车辆编号  车 牌 号  载重量  车 牌  生产厂家  出 厂 日 期  购 买 日 期  购买单价  车型  车辆状态  车辆运营状态  车辆维修情况  车辆违章情况  上次出车时间  租车人姓名  计划归还时间\n");
    while (L->next != NULL)
    {
        //显示所有已登记车辆信息
        //if(strcmp("出车中",L->next->data.ver_status) !=0)
        printf("%6s %10s %6s %8s %9s %11s %12s %9s %4s %10s %10s %12s %13s %13s %18s %14s\n",
               L->next->data.ver_id,L->next->data.ver_no,L->next->data.weight,
               L->next->data.ver_trand,L->next->data.factory,
               L->next->data.outdate,L->next->data.buydate,L->next->data.price,
               L->next->data.ver_type,L->next->data.ver_status,L->next->data.state,
               L->next->data.service,L->next->data.violation,L->next->data.ver_last_date,
               L->next->data.lender_name,L->next->data.return_time);
        L=L->next;
    }
    printf("\n");
    system("pause");
}
 
//定义功能4--车辆查询
VehicleList select_vehicle(VehicleList L, char * key)
{
    VehicleList p;
    p=L;
    while (p->next != NULL)
    {
        //如果查找到符合条件的车辆信息,则返回这个车辆信息节点的指针,strcmp,字符串比较函数
        if (strcmp(key,p->next->data.ver_id) == 0 || strcmp(key,p->next->data.ver_no) == 0)
        {
            return p;//P为该车辆信息节点的指针
        }
        else
        {
            p=p->next;
        }
    }
    return NULL;
}
 
//定义功能5--新车登记
VehicleList register_vehicle(VehicleList L)
{
    VehicleList p,q;
    Vehicle v;//定义新增车辆结构体
    int id=1001;//初始车辆编号起始ID
    char tmpID[5];//车辆编号格式化为字符串
    q=L;
    while (q->next != NULL)
    {
        q=q->next;//将指针调至链表尾部以插入新数据
    }
    //printf("请输入车辆编号: ");
    //v.ver_id=getS();
    printf("请输入车牌号: ");
    v.ver_no=getS();
    printf("请输入载重量: ");
    v.weight=getS();
    printf("请输入车牌: ");
    v.ver_trand=getS ();
    printf("请输入生产厂家: ");
    v.factory=getS();
    printf("请输入出厂日期:(格式,如2012-02-22) ");
    v.outdate=getS();
    printf("请输入购买日期:(格式,如2012-02-22) ");
    v.buydate=getS();
    printf("请输入购买单价: ");
    v.price=getS();
    printf("请选择车辆类型(A/B/C): ");
    v.ver_type=getS();
    printf("请输入车辆运营状态(正常/报废): ");
    v.state=getS();
    printf("请输入车辆维修情况(否/几次): ");
    v.service=getS();
    printf("请输入车辆违章情况(否/几次): ");
    v.violation=getS();
    v.ver_status="可调出";
    v.ver_last_date="NEW";
    v.lender_name=(char*)malloc(10);
    strcpy(v.lender_name, "N/A       ");
    v.lender_id=(char*)malloc(10);
    strcpy(v.lender_id, "N/A       ");
    v.return_time=(char*)malloc(10);
    strcpy(v.return_time, "N/A       ");
    v.section=(char*)malloc(10);
    strcpy(v.section,"N/A       ");
    v.purpose=(char*)malloc(10);
    strcpy(v.purpose,"N/A       ");
    v.usedate=(char*)malloc(10);
    strcpy(v.usedate,"N/A       ");
    v.useprice=(char*)malloc(10);
    strcpy(v.useprice,"N/A       ");
    v.usetime=(char*)malloc(10);
    strcpy(v.usetime,"N/A       ");
    //自动生成车辆编号
    sprintf(tmpID, "%d", id);
    while(select_vehicle(L,tmpID) != NULL)
    {
        id++;
        sprintf(tmpID, "%d", id);//将id转为字符串存储到tmpID中
    }
 
    v.ver_id=(char*)malloc(sizeof(char)*(strlen(tmpID)+1));//分配内存空间
    strcpy(v.ver_id,tmpID);//将tmpID拷贝到车辆信息结构中
    if(select_vehicle(L,v.ver_no) == NULL)
    {
        //检查是否已有该车牌号
        p=(VehicleList)malloc(sizeof(VNode));//创建新的车辆节点
        p->data=v;
        q->next=p;//连接新的车辆节点
        q=p;    //将q指针移至最后节点
        q->next=NULL;//将最后一个节点的next设为NULL
        printf("\n成功登记牌号为:%s的车辆,车辆编号为:%s!\n\n",v.ver_no,v.ver_id);
    }
    else
    {
        printf("\n已存在该车辆!\n\n");
    }
    return L;
}
 
//定义功能6--车辆注销
void delete_vehicle(VehicleList L, char * key)
{
    VehicleList p,q;
    p=L;
 
    if ((p=select_vehicle(L,key)) != NULL)
    {
        q=p->next;
        p->next=q->next;//将节点p连接到下下一个节点,即删除找到的节点
        free(q);
        printf("\n已注销编号为%s的车辆!\n\n",key);
 
    }
    else
    {
        printf("\n没有找到符合条件的车辆!\n\n");
    }
 
    system("pause");
}
 
//定义功能7--退出系统函数
int quit()
{
    char *temp;
    temp=getS();//接受用户输入
 
    if(strcmp("Y",temp)==0)
    {
        return 1;//返回1,为确实退出
    }
    else if(strcmp("N",temp)==0)
    {
        return 0;//返回0,则不退出,并清屏,加载主菜单
    }
    else
    {
        return 2;//返回2,说明输入错误,任意键返回主菜单
    }
 
    return 2;//默认返回2
 
}
 
int main()
{
    VehicleList L1,tmpL;
    char *vehicle_key,*lender_name,*lender_id,*return_time,*section,*purpose,*usedate,*useprice,*usetime;
    char *filename="vehicle.txt";//设置数据文件
    GetLocalTime(&sys);
    sprintf(now_date,"%4d-%02d-%02d",sys.wYear,sys.wMonth,sys.wDay);
 
    L1=(VehicleList)malloc(sizeof(VNode));
    L1=InitList(L1);
    L1=LoadData(L1,"vehicle.txt");
 
    main_menu:
    //SaveData(L1,filename);//每完成一个操作都保存数据到文件,默认选择7程序退出时才保存数据
    main_menu();//加载主菜单
    switch (feature)
    {
        case 1:
        {
            int i;
            printf("请输入租车人姓名: ");
            lender_name = getS();
            printf("请输入租车人身份证号: ");
            lender_id = getS();
            printf("请输入用车单位: ");
            section = getS();
            printf("请输入出车用途: ");
            purpose = getS();
            printf("请输入出车时长(格式N天): ");
            usetime = getS();
            printf("请输入出车日期(格式YYYY-MM-DD,如 %s): ",now_date);
            usedate = getS();
            printf("请输入计划归还时间(格式YYYY-MM-DD,如 %s): ",now_date);
            return_time = getS();
            useprice = "200";
            if (datecmp(now_date,return_time) > 0)
            {
                printf("\n归还时间输入错误,最少需要租一天,即时间应该大于等于 %s\n\n",now_date);
                system("pause");
                system("cls");
                goto main_menu;
            }
            i=dispatch(L1,lender_name,lender_id,return_time,section,purpose,usedate,useprice,usetime);        //调用车辆调度函数
            if (i==0)
            {
                system("cls");
                goto main_menu;
            }
            else
            {
                system("pause");
                system("cls");
                goto main_menu;
            }
        }
 
        case 2:
        {
            printf("请输入汽车编号: ");
            vehicle_key = getS();
            printf("请输入租车人姓名: ");
            lender_name = getS();
            printf("请输入租车人身份证号: ");
            lender_id = getS();
            back_vehicle(L1,vehicle_key,lender_name,lender_id);//调用车辆归还函数
            system("pause");
            system("cls");
            goto main_menu;
        }
 
        case 3:
        {
            list_all(L1);//调用车辆总览函数
            system("cls");
            goto main_menu;
        }
 
        case 4:
        {
            printf("请输入汽车编号或车牌号: ");
            vehicle_key=getS();
            tmpL=select_vehicle(L1,vehicle_key);//调用车辆查找函数
            if (tmpL != NULL)//返回不为空,说明找到了
            {
                printf("\n*****************************找到了符合条件的车辆信息****************************\n");
                printf("\n车辆编号  车 牌 号  载重量  车 牌  车 型  车辆状态  上次出车时间  租车人姓名  计划归还时间\n");
                printf("\n%6s %10s %6s %8s %4s %10s %10s %18s %14s\n",
                       tmpL->next->data.ver_id,tmpL->next->data.ver_no,tmpL->next->data.weight,tmpL->next->data.ver_trand,
                       tmpL->next->data.ver_type,tmpL->next->data.ver_status,
                       tmpL->next->data.ver_last_date,tmpL->next->data.lender_name,
                       tmpL->next->data.return_time);
                system("pause");
            }
            else
            {
                printf("\n\n没有找到符合条件的车辆信息!\n\n");
                system("pause");//按任意键继续
            }
            system("cls");
            goto main_menu;
        }
 
        case 5:
        {
            L1=register_vehicle(L1);//调用车辆登记函数
            system("pause");
            system("cls");
            goto main_menu;
        }
 
        case 6:
        {
            vehicle_key = "0008";
            printf("请输入需要注销的车辆编号: ");
            vehicle_key=getS();
            delete_vehicle(L1,vehicle_key);//调用车辆注销函数
            system("cls");
            goto main_menu;
        }
 
        case 7:
        {
            int temp;
            printf("您确定要退出系统?输入Y确定,输入N返回主菜单\n");
            temp = quit();
            if(1 == temp)
            {
                SaveData(L1,filename);//保存数据
                return 0;
            }
            else if(0 == temp){
                system("cls");
                goto main_menu;//如果返回真则退出,否则返回主菜单
            }
            else
            {
                printf("输入错误!");
                system("pause");
            }
        }
 
        default:
        {
            system("cls");
            getchar();
            goto main_menu;//如果输入不在1-7内,则返回主菜单
        }
 
    }
 
    return 0;
}

您可能感兴趣的文章:

相关文章