C语言实现车辆信息管理系统

C语言实现车辆信息管理系统

本文实例为大家分享了C语言实现车辆信息管理系统的具体代码,供大家参考,具体内容如下

车辆信息管理系统

问题描述:建立车辆信息管理系统,实现车辆信息的添加和维护管理。

系统存储数据要求:每台车辆至少需要包含以下属性,系统中保存多台车辆的信息:

车辆型号(如思域、卡罗拉、天籁等)

厂商(如广汽本田、一汽大众、东风日产等)

车型级别(如紧凑型车、中型车、SUV等)

座位数(如5座、7座等)

排量(如1.2T、1.4T、1.5T、1.6T等)

变速箱(如手动、手自一体、无级变速等)

车身颜色(白色、黑色等)

车辆价格(单位为万)

程序基本要求:

1、 要有系统菜单,选择不同选项执行不同功能。每个功能执行结束后,需返回到系统菜单,继续进行功能选择操作。

2、系统需要完成以下基本功能,每个功能的代码封装在单独的函数里:

(1) 系统初始化时,至少要有10条车辆记录信息。

(2) 录入车辆信息:录入某台车辆的基本信息,为新记录自动生成一个记录号。输入数据时要有提示语,录入结束后在屏幕上输出新增的车辆信息。

车辆信息输出格式如下:

车辆型号 厂商 车型级别 座位数 排量 变速箱 车身颜色 车辆价格
雅阁 本田 中型车 5座 1.5T 无级变速 白色 19.98万

(3) 浏览所有车辆信息:统计共有多少台车辆,并在屏幕中显示所有车辆信息。

(4) 按不同字段查询车辆信息,包括按照厂商、车型级别、车辆价格范围(输入最低价格、最高价格)

(5) 修改车辆信息:对车辆的基本信息进行修改,要求提供菜单选择某一项参数信息进行修改,而不是重新覆盖录入整条信息。

(6) 删除车辆信息:将满足条件的车辆信息删除,包括按型号、厂商删除。要求删除前,先按照型号或者厂商查找需要删除的车辆信息,如果找不到则给出对应的提示信息。

扩展要求:

(1) 实现排序功能。例如按车辆价格、座位数、排量等对车辆信息进行排序。

(2) 所有车辆信息存储在文件中。

(3) 每次打开程序,把文件中的信息导入到程序中。

(4) 可自己定义其他功能需求,并编码实现。

#include<stdio.h> #include<stdlib.h> #include<string.h> #include <conio.h>     typedef struct car Car,*cheliang;     struct car     {     char brand[20];//型号     char manufacturar[15];//产商     char degree[15];//等级     int seats;//座位数     float displacement;//排量     char biansuxiang[20];//变速箱      char color[20];//颜色     char price[30];//价格     cheliang next;     }; cheliang head,tail; /***********************************************************************  * 说明:  从data.dat中读取车辆信息保存为单链表  ***********************************************************************/ void read_cars();  /***********************************************************************  * 说明:  把车辆信息写入data.dat中  ***********************************************************************/ void write_cars(); /***********************************************************************  * 说明:  新增车辆信息  ***********************************************************************/ void add_car();//没问题 /***********************************************************************  * 说明:  把所有的车辆信息输出到电脑  ***********************************************************************/ void display_cars();//没问题 /***********************************************************************  * 说明:  修改车辆信息  ***********************************************************************/ void change(); /***********************************************************************  * 说明:  查找车辆信息  ***********************************************************************/ void find(); /***********************************************************************  * 说明:  按车辆型号来查找车辆信息  ***********************************************************************/ void find_brand(); /***********************************************************************  * 说明:  按产商来查找车辆信息  ***********************************************************************/ void find_manufacturar();//没问题 /***********************************************************************  * 说明:  按车辆等级来查找车辆信息  ***********************************************************************/ void find_degree(); /***********************************************************************  * 说明:  按车辆价格来查找车辆信息  ***********************************************************************/ void find_price(); /***********************************************************************  * 说明:  删除车辆信息  ***********************************************************************/ void delete_car(); /***********************************************************************  * 说明:  通过车辆型号来删除车辆信息  ***********************************************************************/ void delete_car_brand(); /***********************************************************************  * 说明:  通过产商来删除车辆信息  ***********************************************************************/ void delete_car_manufacturar(); int main() {     read_cars();//读取文件     int i;     while(1)     {         while(1)         {             printf("请选择相关操作:\n1.增加车辆信息\n2.浏览车辆信息\n");             printf("3.查询车辆信息\n4.修改车辆信息\n5.删除车辆信息\n6.保存数据并退出管理系统\n");             printf("请输入数字选择要实现的功能:\n");             scanf("%d",&i);             if(i>=1&&i<=6)             {                 break;             }             else             {                 printf("数字错误,请重新输入");             }         }         switch(i)         {         case 1: add_car();break;         case 2: display_cars();break;         case 3: find();break;         case 4: change();break;         case 5: delete_car();break;         case 6: write_cars();//把数据信息保存到文件里             printf("谢谢使用!\n");             exit(0);         }     }     return 0; } void read_cars() {     FILE *fp;     if (0 != fopen_s(&fp, "data.dat", "a+b"))//fopen_s方法返回值是0或非0,0代表打开成功,非0代表打开失败     {         perror("打开文件失败,原因是");//perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)         getch();         exit(1);     }     cheliang car;     head = (cheliang)malloc(sizeof(Car));     if (NULL == head)     {         printf("内存分配失败!\n");         exit(EXIT_FAILURE);     }     head->next = NULL;     tail = head;     while (1)     {         car = (cheliang)malloc(sizeof(Car));         if (fread(car, sizeof(Car), 1, fp) == 0)         {             free(car);             break;         }         car->next = NULL;         tail->next = car;         tail = car;     }     fclose(fp); } void write_cars() {     FILE *fp;     if (0 != fopen_s(&fp, "data.dat", "w+"))//打开文件     {         perror("打开文件失败,原因是");         _getch();         return;     }     cheliang car = head->next;     while (car != NULL)     {         fwrite(car, sizeof(Car), 1, fp);         car = car->next;     }     fclose(fp);//关闭文件 } void add_car() {     cheliang p,temp;     p=(cheliang)malloc(sizeof(Car));     if(p==NULL)     {         printf("内存分配失败");         exit(1);     }     printf("请输入车辆信息\n型号:");     scanf("%s",p->brand);     printf("商家:");     scanf("%s",p->manufacturar);     printf("等级:");     scanf("%s",p->degree);     printf("座位数:");     scanf("%d",&p->seats);     printf("排量:");     scanf("%f",&p->displacement);     printf("变速箱:");     scanf("%s",p->biansuxiang);     printf("颜色:");     scanf("%s",p->color);     printf("价格:");     scanf("%s",p->price);     if(NULL == head->next)     {     head->next = p;     p->next = NULL;     }     else     {     temp = head->next;//头插法     head->next = p;     p->next = temp;     }     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price); } void display_cars() {     int a=0;     cheliang p=head->next;     if(NULL == head->next)     {     printf("无车辆信息\n");     return ;     }     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     for(;p!=NULL;p=p->next)     {         a++;         printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);     }     printf("一共有%d台车辆信息",a); } void find() {     int k;     while(1)     {         printf("请选择查找方式:1.按照型号查找 2.按照产商查找 3.按照等级查找 4.按照价格查找");         printf("请选择:");         scanf("%d",&k);         if(k>=1&&k<=4){             break;         }         else{             printf("数字错误,请重新输入");         }     }     switch(k)     {     case 1: find_brand();break;     case 2: find_manufacturar();break;     case 3: find_degree();break;     case 4:find_price();break;     } } void find_brand() {     cheliang p;     p=head->next;     printf("请输入要查找的型号:");     char brand[20];     scanf("%s",brand);     int j=0;     printf("您要找的资料是:\n");     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(p!=NULL)     {         if(strcmp(p->brand,brand)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);             p=p->next;             j++;         }         else          p=p->next;     }         if(j==0)         {             printf("该系统无该产商的车辆信息");         } } void find_manufacturar() {     cheliang p;     p=head->next;     printf("请输入要查找的产商:");     char manufacturar[15];     int j=0;     scanf("%s",manufacturar);      fflush(stdin);     printf("您要找的资料是:\n");     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(p!=NULL)     {         if(strcmp(p->manufacturar,manufacturar)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);             p=p->next;             j++;         }         else          p=p->next;     }         if(j==0)         {             printf("该系统无该产商的车辆信息");         } } void find_degree() {     cheliang p;     p=head->next;     printf("请输入找要寻找的等级:");     char degree[15];     int j=0;     scanf("%s",degree);     printf("您要找的资料是:\n");      fflush(stdin);     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(p!=NULL)     {         if(strcmp(p->degree,degree)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);             p=p->next;             j++;         }         else             p=p->next;     }         if(j==0)         {             printf("该系统无该等级的车辆信息");         } } void find_price() {     cheliang p;     p=head->next;     //char price_max[30],price_min[30];     int price_max,price_min;     int j=0;     printf("请输入价格的最大值:");     scanf("%d",&price_max);      fflush(stdin);     printf("请输入价格的最小值:");     scanf("%d",&price_min);      fflush(stdin);     printf("您要找的资料是:\n");     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(p!=NULL)     {         if(atoi(p->price)>price_min && atoi(p->price)<price_max)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);             j++;         }             p=p->next;     }     if(j==0)     {         printf("该系统无该价格范围的车辆信息");     } } void change() {     cheliang q;     int i;     q=head->next;     int j=0;     printf("请输入要修改车辆的型号:\n");     char brand[20];     scanf("%s",brand);      fflush(stdin);     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(q!=NULL)     {         if(strcmp(q->brand,brand)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->brand,q->manufacturar,q->degree,q->seats,q->displacement,q->biansuxiang,q->color,q->price);             j++;             while(1){                 printf("1.改变型号 2.改变产商 3.改变等级 4.改变座位数 5.改变排量 6.改变变速箱 7.改变颜色 8.改变价格");                 printf("请输入要修改的车辆信息的类型:");                 scanf("%d",&i);                 if(i>=1&&i<=8){                     break;                 }                 else{                     printf("请输入正确的数字");                 }             }               switch(i)               {               case 1:                    printf("型号:");                    char str1[20];                    scanf("%s",str1);                    strcpy(q->brand,str1);break;               case 2:                    printf("产商:");                    char str2[15];                    scanf("%s",str2);                    strcpy(q->manufacturar,str2);break;               case 3:                      printf("等级:");                     char str3[15];                     scanf("%s",str3);                    strcpy(q->degree,str3);break;               case 4:                     printf("座位数:");                     int str4;                     scanf("%d",&str4);                    q->seats=str4;break;               case 5:                     printf("排量:");                     float str5;                     scanf("%f",&str5);                     q->displacement=str5;break;               case 6:                     printf("变速箱:");                     char str6[20];                     scanf("%s",str6);                    strcpy(q->biansuxiang,str6);break;               case 7:                     printf("颜色:");                     char str7[20];                     scanf("%s",str7);                    strcpy(q->color,str7);break;               case 8:                     printf("价格:");                     char str8[30];                     scanf("%s",str8);                    strcpy(q->price,str8);break;               }             printf("修改成功\n");             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->brand,q->manufacturar,q->degree,q->seats,q->displacement,q->biansuxiang,q->color,q->price);             q=q->next;             break;         }         else         {             q=q->next;         }     }     if(j==0)     {          printf("没找到你要的型号");     } } void delete_car() {     int i;     while(true){         printf("按什么的方式寻找车辆:1.型号 2.产商\n");         scanf("%d",&i);         if(i>=1&&i<=2){            break;         }         else{             printf("数字错误,请重新输入");         }     }     switch(i)     {     case 1: delete_car_brand();break;     case 2: delete_car_manufacturar();break;     } } void delete_car_brand() {     cheliang p,q;     int j=0;     char brand[20];     printf("请输入要删除的车辆的型号:");     scanf("%s",brand);      fflush(stdin);     //p=head;     q=head;     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(q->next!=NULL)     {         if(strcmp(q->next->brand,brand)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->next->brand,q->next->manufacturar,q->next->degree,q->next->seats,q->next->displacement,q->next->biansuxiang,q->next->color,q->next->price);             j++;             p=q->next;             q->next = q->next->next;             printf("数据删除成功!\n");             free(p);             break;         }         else          q=q->next;     }     if(j==0)     {         printf("该系统无你所要删除的车辆信息!\n");     } } void delete_car_manufacturar() {     cheliang p,q;     int j=0;     char manufacturar[15];     printf("请输入要删除的车辆的产商:");     scanf("%s",manufacturar);      fflush(stdin);     q=head;     printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n",         "车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");     while(q->next!=NULL)     {         if(strcmp(q->next->manufacturar,manufacturar)==0)         {             printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->next->brand,q->next->manufacturar,q->next->degree,q->next->seats,q->next->displacement,q->next->biansuxiang,q->next->color,q->next->price);             j++;             p=q->next;             q->next = q->next->next;             printf("数据删除成功!\n");             free(p);             break;         }         else          q=q->next;     }     if(j==0)     {         printf("该系统无你所要删除的车辆信息!\n");             exit(0);     } }

推荐阅读