溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言如何實(shí)現(xiàn)單位車輛調(diào)度管理

發(fā)布時間:2022-03-15 16:47:22 來源:億速云 閱讀:136 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“C語言如何實(shí)現(xiàn)單位車輛調(diào)度管理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C語言如何實(shí)現(xiàn)單位車輛調(diào)度管理”吧!

單位車輛信息包括:車牌號、車型、載重(客)量,車牌,生產(chǎn)廠家,出廠日期,購買日期,購買單價等;車輛調(diào)度信息還應(yīng)包括:用車人,用車單位,調(diào)度人,出車車牌,出車司機(jī),出車用途,出車日期,出車時間,收車日期,收車時間及出車費(fèi)用等信息等。設(shè)計(jì)“車輛調(diào)度管理系統(tǒng)”,使之能提供以下功能:

系統(tǒng)以菜單方式工作;

車輛調(diào)度信息錄入功能(車輛調(diào)度信息用文件vehicle.txt保存);

車輛信息及車輛調(diào)度信息瀏覽功能;

車輛調(diào)度查詢和排序功能: 

車輛信息及車輛調(diào)度信息的刪除與修改等功能。

代碼如下,完全原創(chuàng),代碼功能完整?。?/p>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
 
int feature;//定義輸入的功能選項(xiàng)
char now_date[12];//定義系統(tǒng)當(dāng)前日期存儲緩沖區(qū)
SYSTEMTIME sys; //定義系統(tǒng)時間變量
 
//定義車輛數(shù)據(jù)結(jié)構(gòu)
typedef struct Vehicle
{
    char *ver_id;//定義車輛編號
    char *ver_no;//定義車輛牌號
    char *weight;//定義車輛對應(yīng)載重量
    char *ver_trand;//定義車牌
    char *factory;//定義車輛生產(chǎn)廠家
    char *outdate;//定義車輛出廠日期
    char *buydate;//定義車輛購買日期
    char *section;//定義車輛調(diào)用單位
    char *purpose;//定義車輛出車用途
    char *usedate;//定義車輛出車日期
    char *usetime;//定義車輛調(diào)度時長
    char *useprice;//定義車輛出車費(fèi)用
    char *price;//定義車輛購買單價
    char *ver_type;//定義車輛類型
    char *ver_status;//定義車輛狀態(tài)
    char *state;//定義車輛運(yùn)營狀態(tài)
    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;
 
//聲明函數(shù)
VehicleList select_vehicle(VehicleList L, char * key);//定義車輛查詢函數(shù)
VehicleList InitList(VehicleList L);//定義鏈表初始化函數(shù)
VehicleList LoadData(VehicleList L, char *filename);//定義信息讀取函數(shù)
void SaveData(VehicleList L, char *filename);//定義存儲數(shù)據(jù)函數(shù)
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);//定義車輛調(diào)度函數(shù)
void back_vehicle(VehicleList L, char * key, char *lender_name, char *lender_id);//定義車輛歸還函數(shù)
void list_all(VehicleList L);//定義車輛總覽函數(shù)
VehicleList select_vehicle(VehicleList L, char * key);//定義車輛查詢函數(shù)
VehicleList register_vehicle(VehicleList L);//定義車輛登記函數(shù)
void delete_vehicle(VehicleList L, char * key);//定義車輛刪除函數(shù)
int datecmp(char *a,char *b);//定義日期比較函數(shù)
int quit();//定義退出函數(shù)
char *getS();
 
//定義字符串輸入接口函數(shù)
char *getS()
{
    char *c;
    char s[30];
    scanf("%s",s);
    c=(char*)malloc(sizeof(char)*(strlen(s)+1));
    strcpy(c,s);
    return c;
}
 
//定義鏈表初始化函數(shù)
VehicleList InitList(VehicleList L)
{
    L=(VehicleList)malloc(sizeof(VNode));
    L->next=NULL;
    return L;
}
 
//定義比較日期大小函數(shù)
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;
}
 
//定義從文件加載數(shù)據(jù)函數(shù)
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("文件數(shù)據(jù)讀取失?。n");
    }
    else
    {
        while (!feof(fp))//將文件中數(shù)據(jù)讀取到鏈表中
        {
            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;
 
}
//定義存儲數(shù)據(jù)函數(shù)
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("*                     汽車調(diào)度程序                   *\n");
    printf("*                                         韓力毅     *\n");
    printf("******************************************************\n");
    printf("*                      1.汽車調(diào)度                    *\n");
    printf("*                      2.汽車歸還                    *\n");
    printf("*                      3.車輛總況一覽                *\n");
    printf("*                      4.車輛查詢                    *\n");
    printf("*                      5.新車登記                    *\n");
    printf("*                      6.車輛注銷                    *\n");
    printf("*                      7.退出系統(tǒng)                    *\n");
    printf("******************************************************\n");
    printf("*                      請選擇: 1-7                   *\n");
    printf("******************************************************\n");
    printf("請輸入您的選項(xiàng):");
    scanf("%d", &i);
    feature=i;
    return i;
}
 
//定義功能1--汽車調(diào)度
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*************************************本次出車費(fèi)用為200元*************************************\n");
    printf("\n****************************************可選車輛列表******************************************");
    printf("\n車輛編號   車牌號  載重量  車牌  車輛類型    車輛狀態(tài)    上次出車時間(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)//調(diào)用比較未調(diào)度時間的函數(shù)
            {
                q1=L;//獲得最長時間沒有被調(diào)度的車的節(jié)點(diǎn)指針
                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++;//計(jì)算新車數(shù)量
            q2=L;//獲得新車的節(jié)點(diǎn)指針
        }
 
        L=L->next;
    }
    L=p;
    printf("**************************************************************************\n");
    printf("請輸入車輛編號或輸入W智能篩選(輸入E返回主菜單):");
    vid = getS();
    if (strcmp("W",vid) == 0)
    {
        if(i>0)
        {
            printf("\n****************************************車輛調(diào)度結(jié)果****************************************");
            printf("\n已調(diào)出車輛:%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="出車中";//修改車輛狀態(tài)和上次出車時間
            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****************************************車輛調(diào)度結(jié)果****************************************");
            printf("\n已調(diào)出車輛:%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="出車中";//修改車輛狀態(tài)和上次出車時間
            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="出車中";//修改車輛狀態(tài)和上次出車時間
        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****************************************車輛調(diào)度結(jié)果****************************************");
        printf("\n已調(diào)出車輛:%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)//如果實(shí)際歸還時間超出預(yù)定歸還時間,提示到服務(wù)臺辦理
            {
                p->next->data.ver_status="可調(diào)出";//恢復(fù)車輛狀態(tài)及租車人信息為初始狀態(tài)
                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歸還失敗,您的車輛已超期,請到總服務(wù)臺辦理超期還車手續(xù)!\n\n");
            }
        }
        else
        {
            printf("\n租車人姓名或身份證號輸入有誤!\n\n");
        }
 
    }else{
        printf("\n沒有查詢到編號為:%s的車輛信息!\n\n",key);
    }
 
}
 
//定義功能3--車輛總況一覽
void list_all(VehicleList L)
{
    printf("\n車輛編號  車 牌 號  載重量  車 牌  生產(chǎn)廠家  出 廠 日 期  購 買 日 期  購買單價  車型  車輛狀態(tài)  車輛運(yùn)營狀態(tài)  車輛維修情況  車輛違章情況  上次出車時間  租車人姓名  計(jì)劃歸還時間\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)
    {
        //如果查找到符合條件的車輛信息,則返回這個車輛信息節(jié)點(diǎn)的指針,strcmp,字符串比較函數(shù)
        if (strcmp(key,p->next->data.ver_id) == 0 || strcmp(key,p->next->data.ver_no) == 0)
        {
            return p;//P為該車輛信息節(jié)點(diǎn)的指針
        }
        else
        {
            p=p->next;
        }
    }
    return NULL;
}
 
//定義功能5--新車登記
VehicleList register_vehicle(VehicleList L)
{
    VehicleList p,q;
    Vehicle v;//定義新增車輛結(jié)構(gòu)體
    int id=1001;//初始車輛編號起始ID
    char tmpID[5];//車輛編號格式化為字符串
    q=L;
    while (q->next != NULL)
    {
        q=q->next;//將指針調(diào)至鏈表尾部以插入新數(shù)據(jù)
    }
    //printf("請輸入車輛編號: ");
    //v.ver_id=getS();
    printf("請輸入車牌號: ");
    v.ver_no=getS();
    printf("請輸入載重量: ");
    v.weight=getS();
    printf("請輸入車牌: ");
    v.ver_trand=getS ();
    printf("請輸入生產(chǎn)廠家: ");
    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("請輸入車輛運(yùn)營狀態(tài)(正常/報廢): ");
    v.state=getS();
    printf("請輸入車輛維修情況(否/幾次): ");
    v.service=getS();
    printf("請輸入車輛違章情況(否/幾次): ");
    v.violation=getS();
    v.ver_status="可調(diào)出";
    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轉(zhuǎn)為字符串存儲到tmpID中
    }
 
    v.ver_id=(char*)malloc(sizeof(char)*(strlen(tmpID)+1));//分配內(nèi)存空間
    strcpy(v.ver_id,tmpID);//將tmpID拷貝到車輛信息結(jié)構(gòu)中
    if(select_vehicle(L,v.ver_no) == NULL)
    {
        //檢查是否已有該車牌號
        p=(VehicleList)malloc(sizeof(VNode));//創(chuàng)建新的車輛節(jié)點(diǎn)
        p->data=v;
        q->next=p;//連接新的車輛節(jié)點(diǎn)
        q=p;    //將q指針移至最后節(jié)點(diǎn)
        q->next=NULL;//將最后一個節(jié)點(diǎn)的next設(shè)為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;//將節(jié)點(diǎn)p連接到下下一個節(jié)點(diǎn),即刪除找到的節(jié)點(diǎn)
        free(q);
        printf("\n已注銷編號為%s的車輛!\n\n",key);
 
    }
    else
    {
        printf("\n沒有找到符合條件的車輛!\n\n");
    }
 
    system("pause");
}
 
//定義功能7--退出系統(tǒng)函數(shù)
int quit()
{
    char *temp;
    temp=getS();//接受用戶輸入
 
    if(strcmp("Y",temp)==0)
    {
        return 1;//返回1,為確實(shí)退出
    }
    else if(strcmp("N",temp)==0)
    {
        return 0;//返回0,則不退出,并清屏,加載主菜單
    }
    else
    {
        return 2;//返回2,說明輸入錯誤,任意鍵返回主菜單
    }
 
    return 2;//默認(rèn)返回2
 
}
 
int main()
{
    VehicleList L1,tmpL;
    char *vehicle_key,*lender_name,*lender_id,*return_time,*section,*purpose,*usedate,*useprice,*usetime;
    char *filename="vehicle.txt";//設(shè)置數(shù)據(jù)文件
    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);//每完成一個操作都保存數(shù)據(jù)到文件,默認(rèn)選擇7程序退出時才保存數(shù)據(jù)
    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("請輸入出車日期(格式Y(jié)YYY-MM-DD,如 %s): ",now_date);
            usedate = getS();
            printf("請輸入計(jì)劃歸還時間(格式Y(jié)YYY-MM-DD,如 %s): ",now_date);
            return_time = getS();
            useprice = "200";
            if (datecmp(now_date,return_time) > 0)
            {
                printf("\n歸還時間輸入錯誤,最少需要租一天,即時間應(yīng)該大于等于 %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);        //調(diào)用車輛調(diào)度函數(shù)
            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);//調(diào)用車輛歸還函數(shù)
            system("pause");
            system("cls");
            goto main_menu;
        }
 
        case 3:
        {
            list_all(L1);//調(diào)用車輛總覽函數(shù)
            system("cls");
            goto main_menu;
        }
 
        case 4:
        {
            printf("請輸入汽車編號或車牌號: ");
            vehicle_key=getS();
            tmpL=select_vehicle(L1,vehicle_key);//調(diào)用車輛查找函數(shù)
            if (tmpL != NULL)//返回不為空,說明找到了
            {
                printf("\n*****************************找到了符合條件的車輛信息****************************\n");
                printf("\n車輛編號  車 牌 號  載重量  車 牌  車 型  車輛狀態(tài)  上次出車時間  租車人姓名  計(jì)劃歸還時間\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");//按任意鍵繼續(xù)
            }
            system("cls");
            goto main_menu;
        }
 
        case 5:
        {
            L1=register_vehicle(L1);//調(diào)用車輛登記函數(shù)
            system("pause");
            system("cls");
            goto main_menu;
        }
 
        case 6:
        {
            vehicle_key = "0008";
            printf("請輸入需要注銷的車輛編號: ");
            vehicle_key=getS();
            delete_vehicle(L1,vehicle_key);//調(diào)用車輛注銷函數(shù)
            system("cls");
            goto main_menu;
        }
 
        case 7:
        {
            int temp;
            printf("您確定要退出系統(tǒng)?輸入Y確定,輸入N返回主菜單\n");
            temp = quit();
            if(1 == temp)
            {
                SaveData(L1,filename);//保存數(shù)據(jù)
                return 0;
            }
            else if(0 == temp){
                system("cls");
                goto main_menu;//如果返回真則退出,否則返回主菜單
            }
            else
            {
                printf("輸入錯誤!");
                system("pause");
            }
        }
 
        default:
        {
            system("cls");
            getchar();
            goto main_menu;//如果輸入不在1-7內(nèi),則返回主菜單
        }
 
    }
 
    return 0;
}

到此,相信大家對“C語言如何實(shí)現(xiàn)單位車輛調(diào)度管理”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI