您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用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); } }
以上是“如何使用C語言實現車輛信息管理系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。