通过本系统可以进行对车辆信息的增、删、改、查。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef struct{int carnum; // 车牌号char carmodel[20]; //车型char name[10]; //车主姓名int mileage; //总里程int time; //购买日期}Car;typedef struct LNodeCar car;struct LNode *next;}LNode,*LinkList;Status MallocList_car(LinkList &L){L = (LinkList)malloc(sizeof(LNode));if(!L) exit(OVERFLOW);return OK;}Status InitList_car(LinkList &L) // 创建原始车辆信息{ FILE *fp;fp = fopen("car.txt","r");MallocList_car(L);L->next=NULL;LinkList tail = L;LinkList p;while(!feof(fp))MallocList_car(p);{fscanf(fp,"%d%s%s%d%d",&p->car.carnum,&p->car.carmodel,&p->,&p-> eage,&p->car.time);p->next = NULL;tail->next = p;tail = p;}fclose(fp);return OK;}Status ListLength_car(LinkList L) //车辆数量{LinkList P;int length=0;P=L->next;while(P){length++;P=P->next;}return length;Status ListInsert_car(LinkList L) //增加车辆信息{FILE *fp;fp = fopen("car.txt","w");LinkList p = L;int j = 0;while(j < ListLength_car(L)){p=p->next;j++;}LinkList S;MallocList_car(S);printf(" 请依次输入新增车辆的车牌号、车型、车主姓名、总里程、购买日期\n");scanf("%d%s%s%d%d",&S->car.carnum,&S->car.carmodel,&S->,&S->e age,&S->car.time);p->next = S;S->next = NULL;p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->car.m ileage,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;}Status ListDelete_car(LinkList L) //删除车辆信息{printf(" 请输入你要删除的车辆的车牌号:");int i;scanf("%d",&i);FILE *fp;fp = fopen("car.txt","w");LinkList p,q;p=L;while(p){if (p->next->car.carnum == i) break;p=p->next;}if(!(p)) return ERROR;q=p->next;p->next=q->next;free(q);p = L;p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->eag e,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;Status Visit_car(Car car) // 输出函数{printf("%d %s %s %d %d",car.carnum,car.carmodel,,eage,car.time);printf("\n");return OK;}Status ListTraverse_car(LinkList L,Status Visit_car(Car)){LinkList P;P=L->next;printf(" 车牌号车型车主姓名总里程购买时间\n");while(P != NULL){Visit_car(P->car);P=P->next;}printf("\n");return OK;}Status NumSortList_car(LinkList L) {//按车牌号排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (e1.carnum > e2.carnum) {p->car = e2;p->next->car = e1;}p = p->next;}}}Status NameSortList_car(LinkList L) {//按车主姓名排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (strcmp(,)) {p->car = e2;p->next->car = e1;}p = p->next;}}}Status TimeSortList_car(LinkList L) {//按购买日期排序int i, j;Car e1, e2;int length = ListLength_car(L);LinkList p;for(i = 0; i < length - 1; i++) {p = L->next;for(j = 0; j < length - 1 -i; j++) {e1 = p->car;e2 = p->next->car;if (e1.time>e2.time) {p->car = e2; p->next->car = e1;}p = p->next;}}}Status NumInquire_car(LinkList L){printf(" 请输入你要查询的车辆的车牌号:int num;scanf("%d",&num); //按车牌号查询车辆信息");LinkList p = L;p = p->next;printf(" 查询信息如下:\n");while(p){if(p->car.carnum == num){Visit_car(p->car);}p = p->next;}return OK;}Status NameInquire_car(LinkList L) //按车主姓名查询车辆信息{printf(" 请输入你要查询的车辆的车主姓名:");char name[20];scanf("%s",name);LinkList p = L;p = p->next;printf(" 查询信息如下:\n"); while(p){if(!strcmp(name,p->)){Visit_car(p->car);}p = p->next;}return OK;}Status TimeInquire_car(LinkList L) // 按购买日期区间查询车辆信息{printf(" 请输入你要查询的购买区间(中间以空格隔开,左边小日期,右边大日期例如20190503 20190603 ):");int a , b;scanf("%d%d",&a,&b);LinkList p = L;p = p->next;printf(" 查询信息如下:\n");if(p->car.time>=a&&p->car.time<=b)while(p){Visit_car(p->car);}p = p->next;}return OK;}Status ListModify_car(LinkList L) //修改员工记录{printf(" 请输入你要修改的车辆的车牌号:"); FILE *fp;fp = fopen("car.txt","w");int i;scanf("%d",&i);LinkList p;p=L->next;while(p)if (p->car.carnum == i) break;p=p->next;}if(!(p)) return ERROR;\n");printf(" 请依次输入修改的车辆的车牌号、车型、车主姓名、总里程、购买日期scanf("%d%s%s%d%d",&p->car.carnum,&p->car.carmodel,&p->,&p->eage,&p->car.time);p = L->next;while(p){fprintf(fp,"%d %s %s %d %d",p->car.carnum,p->car.carmodel,p->,p->eage,p->car.time);fprintf(fp,"\n");p = p->next;}fclose(fp);return OK;}Status DestroyList_car(LinkList L)// 销毁链表{LinkList p;while(L){p = L->next;free(L);L = p;}return OK;}int main(){LinkList L;InitList_car(L);while(1){printf("职工信息管理系统**\n\n");printf(" 1. 增加车辆信息\n");printf(" 2. 删除车辆信息\n"); printf(" 3. 修改车辆信息\n"); printf(" 4. 显示所有车辆信息\n"); printf(" 5. 排序功能\n");printf(" 6. 查询功能\n");printf(" 0. 退出\n\n\n\n"); ListTraverse_car(L,Visit_car);printf("\n 请输入您选择功能的编号:");int choice;scanf("%d",&choice);switch(choice){case 1:ListInsert_car(L);printf(" 增加车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 2:ListDelete_car(L);printf(" 删除车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 3:ListModify_car(L);printf(" 修改车辆信息后如下:\n");ListTraverse_car(L,Visit_car);break;case 4:printf(" 所有车辆信息如下:\n");ListTraverse_car(L,Visit_car);break;case 5:int m;printf(" 请输入你需要的排序方式的序号(1. 按车牌号 2.按购买日期3.按车主姓名):") ;scanf("%d",&m);switch(m){case 1:NumSortList_car(L);ListTraverse_car(L,Visit_car);break;case 2:TimeSortList_car(L);ListTraverse_car(L,Visit_car);break;case 3:NameSortList_car(L);ListTraverse_car(L,Visit_car);break;}break;case 6:int n;printf(" 请输入你需要查询的方式的序号(1. 按车牌号 2.按购买日期3.按车主姓名):");scanf("%d",&n);switch(n){case 1:NumInquire_car(L);break;case 2:TimeInquire_car(L);break;case 3:NameInquire_car(L);break;}break;case 0:exit(0);}printf("\n\n 按任意键返回!\n");getchar();getchar();}DestroyList_car(L);return OK;}。