欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年03月15日 19:25:21   作者:凡人的世界  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)單位車輛調(diào)度管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)單位車輛調(diào)度管理的具體代碼,供大家參考,具體內(nèi)容如下

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

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

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

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

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

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

代碼如下,完全原創(chuàng),代碼功能完整??!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
?
int feature;//定義輸入的功能選項(xiàng)
char now_date[12];//定義系統(tǒng)當(dāng)前日期存儲(chǔ)緩沖區(qū)
SYSTEMTIME sys; //定義系統(tǒng)時(shí)間變量
?
//定義車輛數(shù)據(jù)結(jié)構(gòu)
typedef struct Vehicle
{
? ? char *ver_id;//定義車輛編號(hào)
? ? char *ver_no;//定義車輛牌號(hào)
? ? char *weight;//定義車輛對(duì)應(yīng)載重量
? ? char *ver_trand;//定義車牌
? ? char *factory;//定義車輛生產(chǎn)廠家
? ? char *outdate;//定義車輛出廠日期
? ? char *buydate;//定義車輛購(gòu)買日期
? ? char *section;//定義車輛調(diào)用單位
? ? char *purpose;//定義車輛出車用途
? ? char *usedate;//定義車輛出車日期
? ? char *usetime;//定義車輛調(diào)度時(shí)長(zhǎng)
? ? char *useprice;//定義車輛出車費(fèi)用
? ? char *price;//定義車輛購(gòu)買單價(jià)
? ? char *ver_type;//定義車輛類型
? ? char *ver_status;//定義車輛狀態(tài)
? ? char *state;//定義車輛運(yùn)營(yíng)狀態(tài)
? ? char *service;//定義車輛維修情況
? ? char *violation;//定義車輛違章情況
? ? char *ver_last_date;//定義車輛歸還日期
? ? char *lender_name;//定義租車人姓名
? ? char *lender_id;//定義租車人身份證號(hào)碼
? ? char *return_time;//定義歸還時(shí)間
}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);//定義存儲(chǔ)數(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;
?
}
//定義存儲(chǔ)數(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("* ? ? ? ? ? ? ? ? ? ? ?請(qǐng)選擇: 1-7 ? ? ? ? ? ? ? ? ? *\n");
? ? printf("******************************************************\n");
? ? printf("請(qǐng)輸入您的選項(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請(qǐng)選擇您需要的車型(A.大型車 B.中型車 C.小型車 E.返回主菜單 請(qǐng)輸入大寫字母!):");
? ? vtype = getS();
? ? if (strcmp("E",vtype) == 0) return 0;//如果輸入E,返回主菜單
? ? printf("\n*************************************本次出車費(fèi)用為200元*************************************\n");
? ? printf("\n****************************************可選車輛列表******************************************");
? ? printf("\n車輛編號(hào) ? 車牌號(hào) ?載重量 ?車牌 ?車輛類型 ? ?車輛狀態(tài) ? ?上次出車時(shí)間(DDYYMM)\n");
? ? while (L->next != NULL)
? ? {//顯示符合條件的在庫(kù)車輛信息
? ? ? ? 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í)間的函數(shù)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? q1=L;//獲得最長(zhǎng)時(shí)間沒(méi)有被調(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("請(qǐng)輸入車輛編號(hào)或輸入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)和上次出車時(shí)間
? ? ? ? ? ? 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)和上次出車時(shí)間
? ? ? ? ? ? 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)和上次出車時(shí)間
? ? ? ? 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("輸入錯(cuò)誤,請(qǐng)返回!\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)//姓名和身份證號(hào)輸入正確才可還車
? ? ? ? {
? ? ? ? ? ? if (datecmp(now_date,p->next->data.return_time) < 1)//如果實(shí)際歸還時(shí)間超出預(yù)定歸還時(shí)間,提示到服務(wù)臺(tái)辦理
? ? ? ? ? ? {
? ? ? ? ? ? ? ? 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歸還失敗,您的車輛已超期,請(qǐng)到總服務(wù)臺(tái)辦理超期還車手續(xù)!\n\n");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? printf("\n租車人姓名或身份證號(hào)輸入有誤!\n\n");
? ? ? ? }
?
? ? }else{
? ? ? ? printf("\n沒(méi)有查詢到編號(hào)為:%s的車輛信息!\n\n",key);
? ? }
?
}
?
//定義功能3--車輛總況一覽
void list_all(VehicleList L)
{
? ? printf("\n車輛編號(hào) ?車 牌 號(hào) ?載重量 ?車 牌 ?生產(chǎn)廠家 ?出 廠 日 期 ?購(gòu) 買 日 期 ?購(gòu)買單價(jià) ?車型 ?車輛狀態(tài) ?車輛運(yùn)營(yíng)狀態(tài) ?車輛維修情況 ?車輛違章情況 ?上次出車時(shí)間 ?租車人姓名 ?計(jì)劃歸還時(shí)間\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)
? ? {
? ? ? ? //如果查找到符合條件的車輛信息,則返回這個(gè)車輛信息節(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;//初始車輛編號(hào)起始ID
? ? char tmpID[5];//車輛編號(hào)格式化為字符串
? ? q=L;
? ? while (q->next != NULL)
? ? {
? ? ? ? q=q->next;//將指針調(diào)至鏈表尾部以插入新數(shù)據(jù)
? ? }
? ? //printf("請(qǐng)輸入車輛編號(hào): ");
? ? //v.ver_id=getS();
? ? printf("請(qǐng)輸入車牌號(hào): ");
? ? v.ver_no=getS();
? ? printf("請(qǐng)輸入載重量: ");
? ? v.weight=getS();
? ? printf("請(qǐng)輸入車牌: ");
? ? v.ver_trand=getS ();
? ? printf("請(qǐng)輸入生產(chǎn)廠家: ");
? ? v.factory=getS();
? ? printf("請(qǐng)輸入出廠日期:(格式,如2012-02-22) ");
? ? v.outdate=getS();
? ? printf("請(qǐng)輸入購(gòu)買日期:(格式,如2012-02-22) ");
? ? v.buydate=getS();
? ? printf("請(qǐng)輸入購(gòu)買單價(jià): ");
? ? v.price=getS();
? ? printf("請(qǐng)選擇車輛類型(A/B/C): ");
? ? v.ver_type=getS();
? ? printf("請(qǐng)輸入車輛運(yùn)營(yíng)狀態(tài)(正常/報(bào)廢): ");
? ? v.state=getS();
? ? printf("請(qǐng)輸入車輛維修情況(否/幾次): ");
? ? v.service=getS();
? ? printf("請(qǐng)輸入車輛違章情況(否/幾次): ");
? ? 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 ? ? ? ");
? ? //自動(dòng)生成車輛編號(hào)
? ? sprintf(tmpID, "%d", id);
? ? while(select_vehicle(L,tmpID) != NULL)
? ? {
? ? ? ? id++;
? ? ? ? sprintf(tmpID, "%d", id);//將id轉(zhuǎn)為字符串存儲(chǔ)到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)
? ? {
? ? ? ? //檢查是否已有該車牌號(hào)
? ? ? ? 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;//將最后一個(gè)節(jié)點(diǎn)的next設(shè)為NULL
? ? ? ? printf("\n成功登記牌號(hào)為:%s的車輛,車輛編號(hào)為:%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連接到下下一個(gè)節(jié)點(diǎn),即刪除找到的節(jié)點(diǎn)
? ? ? ? free(q);
? ? ? ? printf("\n已注銷編號(hào)為%s的車輛!\n\n",key);
?
? ? }
? ? else
? ? {
? ? ? ? printf("\n沒(méi)有找到符合條件的車輛!\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,說(shuō)明輸入錯(cuò)誤,任意鍵返回主菜單
? ? }
?
? ? 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);//每完成一個(gè)操作都保存數(shù)據(jù)到文件,默認(rèn)選擇7程序退出時(shí)才保存數(shù)據(jù)
? ? main_menu();//加載主菜單
? ? switch (feature)
? ? {
? ? ? ? case 1:
? ? ? ? {
? ? ? ? ? ? int i;
? ? ? ? ? ? printf("請(qǐng)輸入租車人姓名: ");
? ? ? ? ? ? lender_name = getS();
? ? ? ? ? ? printf("請(qǐng)輸入租車人身份證號(hào): ");
? ? ? ? ? ? lender_id = getS();
? ? ? ? ? ? printf("請(qǐng)輸入用車單位: ");
? ? ? ? ? ? section = getS();
? ? ? ? ? ? printf("請(qǐng)輸入出車用途: ");
? ? ? ? ? ? purpose = getS();
? ? ? ? ? ? printf("請(qǐng)輸入出車時(shí)長(zhǎng)(格式N天): ");
? ? ? ? ? ? usetime = getS();
? ? ? ? ? ? printf("請(qǐng)輸入出車日期(格式Y(jié)YYY-MM-DD,如 %s): ",now_date);
? ? ? ? ? ? usedate = getS();
? ? ? ? ? ? printf("請(qǐng)輸入計(jì)劃歸還時(shí)間(格式Y(jié)YYY-MM-DD,如 %s): ",now_date);
? ? ? ? ? ? return_time = getS();
? ? ? ? ? ? useprice = "200";
? ? ? ? ? ? if (datecmp(now_date,return_time) > 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\n歸還時(shí)間輸入錯(cuò)誤,最少需要租一天,即時(shí)間應(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("請(qǐng)輸入汽車編號(hào): ");
? ? ? ? ? ? vehicle_key = getS();
? ? ? ? ? ? printf("請(qǐng)輸入租車人姓名: ");
? ? ? ? ? ? lender_name = getS();
? ? ? ? ? ? printf("請(qǐng)輸入租車人身份證號(hào): ");
? ? ? ? ? ? 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("請(qǐng)輸入汽車編號(hào)或車牌號(hào): ");
? ? ? ? ? ? vehicle_key=getS();
? ? ? ? ? ? tmpL=select_vehicle(L1,vehicle_key);//調(diào)用車輛查找函數(shù)
? ? ? ? ? ? if (tmpL != NULL)//返回不為空,說(shuō)明找到了
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\n*****************************找到了符合條件的車輛信息****************************\n");
? ? ? ? ? ? ? ? printf("\n車輛編號(hào) ?車 牌 號(hào) ?載重量 ?車 牌 ?車 型 ?車輛狀態(tài) ?上次出車時(shí)間 ?租車人姓名 ?計(jì)劃歸還時(shí)間\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沒(méi)有找到符合條件的車輛信息!\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("請(qǐng)輸入需要注銷的車輛編號(hào): ");
? ? ? ? ? ? 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("輸入錯(cuò)誤!");
? ? ? ? ? ? ? ? system("pause");
? ? ? ? ? ? }
? ? ? ? }
?
? ? ? ? default:
? ? ? ? {
? ? ? ? ? ? system("cls");
? ? ? ? ? ? getchar();
? ? ? ? ? ? goto main_menu;//如果輸入不在1-7內(nèi),則返回主菜單
? ? ? ? }
?
? ? }
?
? ? return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • opencv實(shí)現(xiàn)圖像顏色空間轉(zhuǎn)換

    opencv實(shí)現(xiàn)圖像顏色空間轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)圖像顏色空間轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C語(yǔ)言內(nèi)存泄漏常見情況及解決方案詳解

    C語(yǔ)言內(nèi)存泄漏常見情況及解決方案詳解

    這篇文章主要為大家介紹了C語(yǔ)言內(nèi)存泄漏常見情況及解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C語(yǔ)言實(shí)現(xiàn)24點(diǎn)問(wèn)題詳解

    C語(yǔ)言實(shí)現(xiàn)24點(diǎn)問(wèn)題詳解

    24點(diǎn)問(wèn)題就是在屏幕上輸入1?10范圍內(nèi)的4個(gè)整數(shù)(可以有重復(fù)),對(duì)它們進(jìn)行加、減、乘、除四則運(yùn)算后(可以任意的加括號(hào)限定計(jì)算的優(yōu)先級(jí)),尋找計(jì)算結(jié)果等于24的表達(dá)式。本文將通過(guò)C語(yǔ)言實(shí)現(xiàn)24點(diǎn)問(wèn)題的求解,需要的可以參考一下
    2021-12-12
  • 詳解C語(yǔ)言-二級(jí)指針三種內(nèi)存模型

    詳解C語(yǔ)言-二級(jí)指針三種內(nèi)存模型

    這篇文章主要介紹了詳解C語(yǔ)言-二級(jí)指針三種內(nèi)存模型的相關(guān)知識(shí),文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C語(yǔ)言通過(guò)gets和gets_s分別實(shí)現(xiàn)讀取含空格的字符串

    C語(yǔ)言通過(guò)gets和gets_s分別實(shí)現(xiàn)讀取含空格的字符串

    在遇到包含空格的字符串輸入時(shí)該如何讀取呢?如果使用scanf以%s格式去讀取輸入的字符串,遇到空格就讀取結(jié)束了,顯然這樣是讀取不了的。本文就將介紹兩個(gè)可以對(duì)含空格字符串讀取的庫(kù)函數(shù)------gets和gets_s函數(shù),感興趣的可以了解一下
    2021-12-12
  • c++實(shí)現(xiàn)發(fā)送http請(qǐng)求通過(guò)get方式獲取網(wǎng)頁(yè)源代碼

    c++實(shí)現(xiàn)發(fā)送http請(qǐng)求通過(guò)get方式獲取網(wǎng)頁(yè)源代碼

    這篇文章主要介紹了c++實(shí)現(xiàn)發(fā)送http請(qǐng)求,通過(guò)get方式獲取網(wǎng)頁(yè)源代碼的示例,需要的朋友可以參考下
    2014-02-02
  • C語(yǔ)言深入講解動(dòng)態(tài)內(nèi)存分配函數(shù)的使用

    C語(yǔ)言深入講解動(dòng)態(tài)內(nèi)存分配函數(shù)的使用

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)內(nèi)存分配,C語(yǔ)言內(nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free、柔性數(shù)組等,下面這篇文章帶大家了解一下
    2022-05-05
  • C語(yǔ)言之malloc動(dòng)態(tài)分配內(nèi)存和free釋放

    C語(yǔ)言之malloc動(dòng)態(tài)分配內(nèi)存和free釋放

    這篇文章主要介紹了C語(yǔ)言之malloc動(dòng)態(tài)分配內(nèi)存和free釋放,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C++利用Opencv實(shí)現(xiàn)多個(gè)圓形檢測(cè)

    C++利用Opencv實(shí)現(xiàn)多個(gè)圓形檢測(cè)

    霍夫圓檢測(cè)是opencv中用來(lái)檢測(cè)圓的重要算法,簡(jiǎn)單的說(shuō),霍夫圓檢測(cè)就是對(duì)圖像中的弧線做切線,再在切點(diǎn)位置做切線的垂線,然后看這些垂線能交于一點(diǎn)的個(gè)數(shù),這個(gè)在方法中是自己設(shè)定的
    2022-08-08
  • c語(yǔ)言階乘之和問(wèn)題示例詳解

    c語(yǔ)言階乘之和問(wèn)題示例詳解

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言階乘之和問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論