日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

C语言课程设计-车辆信息管理系统

發(fā)布時間:2023/12/31 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言课程设计-车辆信息管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C語言課程設(shè)計-車輛信息管理系統(tǒng)

這個是我學(xué)編程以來寫的第一個管理系統(tǒng),現(xiàn)在回來看,當(dāng)時寫的代碼還是很青澀的,寫得不好大家輕點(diǎn)噴!!!

題目描述:
建立車輛信息管理系統(tǒng),實(shí)現(xiàn)車輛信息的添加和維護(hù)管理。
系統(tǒng)存儲數(shù)據(jù)要求:
每臺車輛至少需要包含以下屬性,系統(tǒng)中保存多臺車輛的信息:
? 車輛型號(如思域、卡羅拉、天籟等)
? 廠商(如廣汽本田、一汽大眾、東風(fēng)日產(chǎn)等)
? 車型級別(如緊湊型車、中型車、SUV等)
? 座位數(shù)(如5座、7座等)
? 排量(如1.2T、1.4T、1.5T、1.6T等)
? 變速箱(如手動、手自一體、無級變速等)
? 車身顏色(白色、黑色等)
? 車輛價格(單位為萬)

程序基本要求:
1、 要有系統(tǒng)菜單,選擇不同選項(xiàng)執(zhí)行不同功能。每個功能執(zhí)行結(jié)束后,需返回到系統(tǒng)菜單,繼續(xù)進(jìn)行功能選擇操作。
2、系統(tǒng)需要完成以下基本功能,每個功能的代碼封裝在單獨(dú)的函數(shù)里:
(1) 系統(tǒng)初始化時,至少要有10條車輛記錄信息。
(2) 錄入車輛信息:錄入某臺車輛的基本信息,為新記錄自動生成一個記錄號。輸入數(shù)據(jù)時要有提示語,錄入結(jié)束后在屏幕上輸出新增的車輛信息。
車輛信息輸出格式如下:

車輛型號廠商車型級別座位數(shù)排量變速箱車身顏色車輛價格
雅閣本田中型車5座1.5T無級變速白色19.98萬

(3) 瀏覽所有車輛信息:統(tǒng)計共有多少臺車輛,并在屏幕中顯示所有車輛信息。
(4) 按不同字段查詢車輛信息,包括按照廠商、車型級別、車輛價格范圍(輸入最低價格、最高價格)
(5) 修改車輛信息:對車輛的基本信息進(jìn)行修改,要求提供菜單選擇某一項(xiàng)參數(shù)信息進(jìn)行修改,而不是重新覆蓋錄入整條信息。
(6) 刪除車輛信息:將滿足條件的車輛信息刪除,包括按型號、廠商刪除。要求刪除前,先按照型號或者廠商查找需要刪除的車輛信息,如果找不到則給出對應(yīng)的提示信息。

擴(kuò)展要求:
(1) 實(shí)現(xiàn)排序功能。例如按車輛價格、座位數(shù)、排量等對車輛信息進(jìn)行排序。
(2) 所有車輛信息存儲在文件中。
(3) 每次打開程序,把文件中的信息導(dǎo)入到程序中。
(4) 可自己定義其他功能需求,并編碼實(shí)現(xiàn)

編寫這個系統(tǒng)時我總結(jié)了一個思路,方便我編寫代碼和防止浪費(fèi)不必要的時間。
開發(fā)平臺:Dev-C++ 5.11

接下來,按照步驟一步一步地實(shí)現(xiàn)…

步驟一:分析功能需求

問題的分析與總結(jié)是最重要的,只要把功能需求分析清楚,接下來編寫代碼的思路就會很清晰。

首先從題目來看我們要實(shí)現(xiàn)的功能有:1.錄入車輛信息功能2.瀏覽車輛信息功能3.查詢車輛信息功能4.修改車輛信息功能5.刪除車輛信息功能6.排序?yàn)g覽車輛信息功能。

功能要實(shí)現(xiàn)的需求有:
1、錄入車輛信息功能:可實(shí)現(xiàn)輸入車輛型號、廠商、車輛級別、座位數(shù)、排量、變速箱、車身顏色、車輛價格(同時需要按照指定的格式輸入,否則顯示錯誤,需要重新輸入)。錄入結(jié)束后,會為新的車輛信息自動生成一個編號,并且在屏幕上輸出新增的車輛信息。
2、瀏覽車輛信息功能:選擇該功能可以輸出所有車輛信息,并且統(tǒng)計共有多少臺車輛。
3、查詢車輛信息功能:該功能可以提供菜單選擇四種不同的方式進(jìn)行查詢:一、按廠商查詢,二、按車型級別查詢,三、按車輛價格范圍查詢(同時需要按照指定的格式輸入,否則顯示錯誤,需要重新輸入)四、按廠商和車型級別查詢。如果查詢的車輛信息不存在,會提示該信息不存在。
4、修改車輛信息功能:該功能可以提供菜單選擇某一項(xiàng)參數(shù)信息進(jìn)行修改。選擇想要修改的車輛信息編號,將需要修改的車輛信息輸出,進(jìn)行參數(shù)信息的修改。修改結(jié)束后,輸出修改后的車輛信息。修改完成后,進(jìn)行錄入保存。
5、刪除車輛信息功能:該功能可以提供菜單選擇四種不同的方式進(jìn)行刪除:一、按車輛型號,二、按廠商,三、按車型級別,四、按車輛型號和廠商。將滿足條件的車輛信息輸出,如果找不到,則顯示該信息不存在。否則判斷是否刪除(是:輸入Y,否:輸入N),刪除結(jié)束后,進(jìn)行錄入保存。
6、排序?yàn)g覽車輛信息功能:該功能可以提供菜單選擇三種不同方式進(jìn)行排序?yàn)g覽:一、按價格,二、按座位,三、 按排量。
7、退出功能:可以實(shí)現(xiàn)退出車輛信息管理系統(tǒng)。(即結(jié)束程序)
8、所有的車輛信息可以存儲在文件中,每次打開程序,可以把文件里的車輛信息導(dǎo)入到程序中,并且每次修改也可以保存在文件里,還有可以刪除文件里面的車輛信息。

步驟二:分析業(yè)務(wù)邏輯

功能需求分析完畢后,接下來就是大體的功能交互分析,邏輯分析,畫好系統(tǒng)程序流程圖。注意這不是最終的流程圖,如果在編寫過程中有修改的話,也可以進(jìn)行修改(也方便后期增加需求)

分析完業(yè)務(wù)邏輯之后,我們還需要考慮三個問題:1、數(shù)據(jù)的保存2、數(shù)據(jù)的展示3、用戶的交互。
數(shù)據(jù)保存:
從題目來看數(shù)據(jù)應(yīng)保存在文件中,我選擇的是保存在txt文件中。
數(shù)據(jù)展示:
數(shù)據(jù)的可視化我是直接在控制臺中進(jìn)行輸出。
用戶交互:
用戶的輸入輸出都是通過控制臺,進(jìn)行交互的。

步驟三:編寫代碼

定義數(shù)據(jù)結(jié)構(gòu):

struct Car //定義結(jié)構(gòu)體 {int number; //編號 char type[20]; //車輛型號 char merchant[20]; //廠商 char level[20]; //車輛級別 char seet[10]; //座位數(shù) char output[10]; //排量 char gearbox[20]; //變速箱 char colour[10]; //車身顏色 float price; //車輛價格 } c[100]; //定義100個結(jié)構(gòu)體數(shù)組

準(zhǔn)備數(shù)據(jù),(在工程目錄下新建一個file.txt的文件,用于存放數(shù)據(jù))
注意:
每行數(shù)據(jù)用英文格式的空格隔開。

讀取文件中的數(shù)據(jù):

FILE *fp;int i=0;fp=fopen("file.txt","r"); //讀取文件中的車輛信息。while(!feof(fp)) {fscanf(fp,"%d %s %s %s %s %s %s %s %f\n",&c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,&c[i].price);i++; //記錄錄入的車輛信息,每錄入一條車輛信息i自增1。}fclose(fp); //關(guān)閉文件

保存數(shù)據(jù)到文件中:

FILE *fp;int j;fp=fopen("file.txt","w"); //打開文件名為file的文件,文件file里面的車輛信息已經(jīng)刪除,重新錄入。 for(j=0;j<i;j++) //讀取車輛信息{if(c[j].number!=0) //判斷編號是否是 0,如果是不輸入,達(dá)到刪除的目的,否則輸入車輛信息。fprintf(fp,"%d %s %s %s %s %s %s %s %0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price); //錄入車輛信息 }fclose(fp); //關(guān)閉文件

主函數(shù)目錄:

int chose=0; //定義chose用來選擇功能 while(chose!=7) //當(dāng)chose等于7時結(jié)束循環(huán)。 {printf(" 歡迎使用車輛信息管理系統(tǒng) \n");printf(" 菜單目錄 \n");printf(" ******************************************\n");printf(" * 1→ 錄入車輛信息 *\n");printf(" * 2→ 瀏覽車輛信息 *\n");printf(" * 3→ 查詢車輛信息 *\n");printf(" * 4→ 修改車輛信息 *\n");printf(" * 5→ 刪除車輛信息 *\n");printf(" * 6→ 排序車輛信息 *\n");printf(" * 7→ 退出 *\n");printf(" ******************************************\n"); //菜單:方便選擇需要的功能printf("請輸入功能的選項(xiàng):");scanf("%d",&chose); //用于輸入選擇的功能switch(chose){case 1: input(c,i);i++;break; //功能1:錄入 case 2: browse(c,i);break; //功能2:瀏覽 case 3: inquiry(c,i);break; //功能3:查詢case 4: modify(c,i);rekeep(c,i);break; //功能4:修改case 5: delete_0(c,i);rekeep(c,i);break; //功能5:刪除case 6: sort(c,i);break; //功能6:排序case 7:printf("歡迎下次使用!\n");break; //功能7:退出default:printf("您輸入的數(shù)據(jù)有誤!\n請重新輸入!\n"); //如果輸入的數(shù)字不是1到7會顯示您輸入的數(shù)據(jù)有誤!}}

接下來,就編寫每一個功能函數(shù)~~~

1、void input(struct Car c[],int i) :為錄入車輛信息功能的一個函數(shù)。主要功能為輸入車輛信息,包括車輛型號、廠商、車型級別、座位數(shù)、排量、變速箱、車身顏色、車輛價格,并為新記錄自動生成一個編號。輸入時需按照指定的格式輸入車輛信息(如果輸入格式不對會有提示和需要重新輸入)

void input(struct Car c[],int i) //功能1:錄入功能的定義 {FILE *fp;fp=fopen("file.txt","a"); //定義文件file.tet,錄入時錄入文件里printf("請輸入車輛的有關(guān)信息!\n\n");printf("請輸入車輛型號:");scanf("%s",c[i].type); printf("請輸入廠商:");scanf("%s",c[i].merchant);printf("請輸入車型級別:");scanf("%s",c[i].level); printf("請輸入座位數(shù):");scanf("%s",c[i].seet); printf("請輸入排量:");scanf("%s",c[i].output); printf("請輸入變速箱:");scanf("%s",c[i].gearbox); printf("請輸入車身顏色:");scanf("%s",c[i].colour); printf("請輸入車輛價格:");scanf("%f",&c[i].price); while(c[i].price==0||c[i].price<0) //容錯處理,金額不能小于或等于零{printf("\n輸入錯誤!\n價格不能為:零和負(fù)數(shù)\n\n");printf("請重新輸入車輛價格:");scanf("%f",&c[i].price); }c[i].number=i+1; //自動生成一個編號 printf("輸入完畢!\n\n");printf("______________________________________________________________________________________________________________________\n"); //輸出新增的車輛信息。printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,c[i].price);fprintf(fp,"%d %s %s %s %s %s %s %s %0.2f\n",c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,c[i].price); //錄入新的車輛信息 printf("______________________________________________________________________________________________________________________\n\n");fclose(fp); //關(guān)閉文件 }

2、void browse(struct Car c[],int i) :為瀏覽所有車輛信息功能的一個函數(shù)。主要功能為輸出已經(jīng)輸入的車輛信息以及后期修改后的車輛信息。并統(tǒng)計共有多少臺車輛。

void browse(struct Car c[],int i) //功能2:瀏覽功能的定義 {int j;printf("______________________________________________________________________________________________________________________\n");printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");for(j=0;j<i;j++) //輸出所有的車輛信息 {printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price); }printf("______________________________________________________________________________________________________________________\n");printf("共有%d臺車輛\n\n",j);//輸出一共有多少臺車輛 }

3、void inquiry(struct Car c[],int i) :為查詢車輛信息功能的一個函數(shù)。里面同時也包含了四個函數(shù)。主要的功能為提供一個關(guān)于查詢方式的菜單(1、按廠商查詢 2、按車型級別查詢 3、按車輛價格范圍查詢 4、按廠商和車型級別查詢),里面的四個函數(shù)分別是:
一、void inquiry_1(struct Car c[],int i) :為按廠商查詢的一個函數(shù),主要功能為輸出指定的廠商信息(若指定的廠商不存在,則會輸出你查詢的信息不存在,直接跳出函數(shù))。
二、void inquiry_2(struct Car c[],int i) :為按車型級別查詢的一個函數(shù)。主要功能為輸出指定的車型級別信息(若指定的車型級別不存在,則會輸出你查詢的信息不存在,直接跳出函數(shù))。
三、void inquiry_3(struct Car c[],int i) :為按車輛價格范圍查詢的一個函數(shù)。主要功能為輸出指定的車輛價格范圍內(nèi)車輛信息(若價格不在范圍之內(nèi),則會輸出你查詢的信息不存在,直接跳出函數(shù))。
四、void inquiry_4(struct Car c[],int i) :為按廠商和車型級別查詢的一個函數(shù)。主要功能為輸出指定的廠商和車型級別的信息(若指定的廠商和車型級別不存在,則會輸出你查詢的信息不存在,直接跳出函數(shù))。

void inquiry(struct Car c[],int i) //功能3:查詢功能的定義 {int chose; //定義chose用來選擇功能for(;chose!=5;) //當(dāng)chose=5時結(jié)束循環(huán)。即退出查詢功能 {printf(" 需要選擇的查詢方式 \n");printf(" ***************************************\n"); printf(" ** 1 按廠商查詢 **\n");printf(" ** 2 按車型級別查詢 **\n");printf(" ** 3 按車輛價格范圍查詢 **\n");printf(" ** 4 按廠商和車型級別查詢 **\n");printf(" ** 5 退出查詢 **\n");printf(" ***************************************\n"); //查詢菜單:方便選擇需要的功能printf("請輸入功能的選項(xiàng):");scanf("%d",&chose); //輸入需要選擇的查詢方式switch(chose){case 1:inquiry_1(c,i);break; //查詢功能1:按廠商查詢case 2:inquiry_2(c,i);break; //查詢功能2:按車型級別查詢case 3:inquiry_3(c,i);break; //查詢功能3:按車輛價格范圍查詢 case 4:inquiry_4(c,i);break; //查詢功能4:按廠商和車型級別查詢case 5:printf("已退出查詢!\n");break; //查詢功能5:退出查詢功能 default:printf("您的輸入有誤!\n請重新輸入!\n"); //如果輸入的數(shù)字不是1到5會顯示您輸入的數(shù)據(jù)有誤!}} } void inquiry_1(struct Car c[],int i) //按廠商查詢功能的定義 {int j,a=0; //定義a用于判斷是否查詢到信息char q1[20]; //定義數(shù)組q1用于輸入的賦值以及進(jìn)行比較查詢printf("請輸入需要查詢的廠商:");scanf("%s",q1); //輸入需要查詢的廠商for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(strcmp(q1,c[j].merchant)==0) //判斷輸入的廠商與已存在的廠商是否有相同的 {a++; //用于顯示有沒有查詢到相應(yīng)的廠商的輸出printf("______________________________________________________________________________________________________________________\n");printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");break;}}for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(strcmp(q1,c[j].merchant)==0) //判斷輸入的廠商與已存在的廠商是否有相同的 printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price); }printf("______________________________________________________________________________________________________________________\n\n");if(a==0) //對沒有查詢到信息進(jìn)行輸出printf("您所要查找的信息不存在!\n"); }

文章篇幅有限完整的代碼我放到了文章的最后~~~有興趣的同學(xué)可以看看

4、void modify(struct Car c[],int i) :為修改車輛信息功能的一個函數(shù)。主要功能為提供菜單選擇某一項(xiàng)參數(shù)信息進(jìn)行修改,包括車輛型號、廠商、車型級別、座位數(shù)、排量、變速箱、車身顏色、車輛價格。

void modify(struct Car c[],int i) //功能4:修改功能的定義 {int j,n; //定義n用于輸入想要修改的車輛信息編號。以及進(jìn)行比較查詢int h=0,t=0,b=0; //定義h用于判斷是否修改成功。 定義t用于判斷是否退出俢改循環(huán)。定義b用于判斷是否查詢到信息。char m; //定義m用于判斷是否修改車輛信息。 int chose; //定義chose用于選擇功能browse(c,i); //輸出車輛信息表 while(b==0) //此循環(huán)用于判斷是否找到要修改的車輛信息編號{printf("請輸入想要修改的車輛信息的編號:");scanf("%d",&n); //輸入想要修改的車輛信息的編號for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(n==c[j].number) //判斷輸入的編號是否存在 {b++; printf("______________________________________________________________________________________________________________________\n");printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);printf("______________________________________________________________________________________________________________________\n\n");break;}}if(b==0) //對沒有查詢到信息進(jìn)行輸出printf("您想要修改的信息不存在!\n\n");}printf(" 選擇修改的類型 \n");printf(" ***************************************\n"); printf(" ** 1 按車輛型號 **\n");printf(" ** 2 按廠商 **\n");printf(" ** 3 按車型級別 **\n");printf(" ** 4 按座位數(shù) **\n");printf(" ** 5 按排量 **\n");printf(" ** 6 按變速箱 **\n");printf(" ** 7 按車身顏色 **\n");printf(" ** 8 按車輛價格 **\n");printf(" ** 9 退出修改 **\n");printf(" ***************************************\n"); //查詢班費(fèi)菜單:方便選擇需要的功能while(t==0) //此循環(huán)用于判斷是否執(zhí)行修改命令,如果不是1~9的命令,則會提示輸入錯誤,請重新輸入 {printf("請輸入修改的類型:");scanf("%d",&chose); //輸入需要選擇的修改方式switch(chose){case 1: printf("輸入新的車輛型號:");scanf("%s",c[j].type); h++;t++;break;case 2: printf("輸入新的廠商:");scanf("%s",c[j].merchant);h++;t++;break;case 3: printf("輸入新的車型級別:");scanf("%s",c[j].level);h++;t++;break;case 4: printf("輸入新的座位數(shù):");scanf("%s",c[j].seet);h++;t++;break;case 5: printf("輸入新的排量:");scanf("%s",c[j].output);h++;t++;break;case 6: printf("輸入新的變速箱:");scanf("%s",c[j].gearbox);h++;t++;break;case 7: printf("輸入新的車身顏色:");scanf("%s",c[j].colour);h++;t++;break;case 8: printf("輸入新的車輛價格:");scanf("%f",&c[j].price);while(c[j].price==0||c[j].price<0) //容錯處理,金額不能小于或等于零{printf("\n輸入錯誤!\n價格不能為:零和負(fù)數(shù)\n\n");printf("請重新輸入車輛價格:");scanf("%f",&c[j].price); }h++;t++;break;case 9: printf("已退出修改!\n");t++;break;default:printf("輸入錯誤!\n");//如果輸入的數(shù)字不是上面的數(shù)字會輸出:輸入錯誤! }}if(h!=0){printf("______________________________________________________________________________________________________________________\n"); //輸出修改后的車輛信息 printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);printf("______________________________________________________________________________________________________________________\n\n");printf("修改成功!\n\n");} }

5、void Delete(struct Car c[],int i) :為刪除車輛信息功能的一個函數(shù)。里面同時也包含了四個函數(shù)。主要功能為提供一個關(guān)于刪除方式的菜單(1、按車輛型號刪除 2、按廠商刪除 3、按車型級別刪掉 4、按車輛型號和廠商刪除),里面的四個函數(shù)分別是:
一、void delete_1(struct Car c[],int i) :為按車輛型號刪除的一個函數(shù)。主要功能為刪除指定的車輛型號信息(若指定的車輛型號不存在,則會輸出你查找的信息不存在)。
二、void delete_2(struct Car c[],int i) :為按廠商刪除的一個函數(shù),主要功能為刪除指定的廠商信息(若指定的廠商信息不存在,則會輸出你查找的信息不存在)。
三、void delete_3(struct Car c[],int i) :為按車型級別刪除的一個函數(shù)。主要功能為刪除指定的車型級別信息(若指定的車型級別信息不存在,則會輸出你查找的信息不存在)。
四、void delete_4(struct Car c[],int i) :為按車輛型號和廠商刪除的一個函數(shù)。主要功能為刪除指定的車輛型號和廠商信息(若指定的車輛型號和廠商不存在,則會輸出你查找的信息不存在)。

void delete_0(struct Car c[],int i) //功能5:刪除功能的定義 {int chose; //定義chose用于功能選擇。while(chose!=5) //當(dāng)chose等于5時,退出刪除功能。{printf(" 需要選擇刪除的方式 \n");printf(" ***************************************\n"); printf(" ** 1 按車輛型號刪除 **\n");printf(" ** 2 按廠商刪除 **\n");printf(" ** 3 按車型級別刪除 **\n");printf(" ** 4 按車輛型號和廠商刪除 **\n");printf(" ** 5 退出刪除 **\n");printf(" ***************************************\n"); //刪除菜單:方便選擇需要的功能printf("請選擇刪除的方式:");scanf("%d",&chose); //輸入選擇的功能switch(chose){case 1:delete_1(c,i);break; //刪除功能1:按車輛型號刪除case 2:delete_2(c,i);break; //刪除功能2:按廠商刪除case 3:delete_3(c,i);break; //刪除功能3:按車型級別刪除case 4:delete_4(c,i);break; //刪除功能4:按車輛型號和廠商刪除case 5:printf("已退出刪除!\n");break; //刪除功能5:退出刪除功能 default:printf("您的輸入有誤!\n請重新輸入!\n"); //如果輸入的數(shù)字不是1到5會顯示您輸入的數(shù)據(jù)有誤!}} } void delete_1(struct Car c[],int i) //按車輛型號刪除功能的定義 {int j,b=0; //定義b用于判斷是否查詢到信息char q1[20]; //定不義q1用于存放需要刪除車輛型號。以及進(jìn)行比較查詢printf("請輸入需要刪除車輛型號:");scanf("%s",q1); //輸入需要刪除車輛型號for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(strcmp(q1,c[j].type)==0) //判斷輸入的車輛型號和已存在的車輛型號是否有相同的{b++; printf("______________________________________________________________________________________________________________________\n");printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");break;}}if(strcmp(q1,c[j].type)==0) //用于判斷是否執(zhí)行刪除命令{for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(strcmp(q1,c[j].type)==0) //判斷輸入的車輛型號和已存在的車輛型號是否有相同的printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);}printf("______________________________________________________________________________________________________________________\n\n");char c1; //定義c1用于輸入Y或者Nprintf("確定刪除該信息(Y/N):");getchar(); //用于清除回車scanf("%c",&c1); //需要輸入Y或者Nwhile(c1!='Y'&&c1!='N') //容錯處理,用于判斷是否是Y或者N,不是則需要重新輸入{printf("輸入錯誤,請重新輸入(Y/N):");getchar(); //用于清除回車scanf("%c",&c1);//需要重新輸入Y或者N}if(c1=='Y') //判斷c1是否等于Y {for(j=0;j<i;j++) //對輸入的信息在原數(shù)據(jù)進(jìn)行搜索并輸出{if(strcmp(q1,c[j].type)==0) //判斷輸入的車輛型號和已存在的車輛型號是否有相同的{c[j].number=0;strcpy(c[j].type," "); strcpy(c[j].merchant," "); strcpy(c[j].level," "); strcpy(c[j].seet," "); strcpy(c[j].output," "); strcpy(c[j].gearbox," ");strcpy(c[j].colour," "); c[j].price=0;} }printf("刪除成功!\n\n");}else{printf("已退出刪除功能!\n");}}if(b==0) //對沒有查詢到信息進(jìn)行輸出printf("您所要查找的信息不存在!\n\n"); }

6、void sort(struct Car c[],int i) :為排序?yàn)g覽車輛信息功能的一個函數(shù)。主要功能為提供一個關(guān)于排序方式的菜單(1、按價格排序 2、按座位排序 3、 按排量排序),利用冒泡排序法進(jìn)行排序。

void sort(struct Car c[],int i) //功能6:排序功能的定義 {struct Car d[100]; //定義結(jié)構(gòu)體d,作為臨時變量,用于交換數(shù)據(jù)。 int j,k,chose=0; //定義chose用于功能選擇。 while(chose!=4) //當(dāng)chose等于4時,退出排序功能。 {printf(" 排序?yàn)g覽\n");printf(" *****************************************\n");printf(" ** 1→ 按價格 **\n");printf(" ** 2→ 按座位 **\n");printf(" ** 3→ 按排量 **\n");printf(" ** 4→ 退出排序 **\n");printf(" *****************************************\n"); //菜單:方便選擇需要的功能printf("輸入功能的選項(xiàng):");scanf("%d",&chose); //輸入選擇的功能switch(chose){case 1:for(j=0;j<i-1;j++) //利用冒泡排序法進(jìn)行從大到小排序{for(k=0;k<i-1;k++){if(c[k].price<c[k+1].price) //比較價格的大小 {d[k]=c[k];//交換數(shù)據(jù)c[k]=c[k+1];//交換數(shù)據(jù)c[k+1]=d[k];//交換數(shù)據(jù)}}}printf("______________________________________________________________________________________________________________________\n");//輸出排序后的結(jié)果。printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");for(j=0;j<i;j++) //輸出所有的車輛信息 {printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price); }printf("______________________________________________________________________________________________________________________\n");break; case 2:for(j=0;j<i-1;j++) //利用冒泡排序法進(jìn)行從大到小排序{for(k=0;k<i-1;k++){if(strcmp(c[k].seet,c[k+1].seet)<0) //比較座位的大小 {d[k]=c[k];//交換數(shù)據(jù)c[k]=c[k+1];//交換數(shù)據(jù)c[k+1]=d[k];//交換數(shù)據(jù)}}}printf("______________________________________________________________________________________________________________________\n");//輸出排序后的結(jié)果。printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");for(j=0;j<i;j++) //輸出所有的車輛信息 {printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);}printf("______________________________________________________________________________________________________________________\n");break; case 3:for(j=0;j<i-1;j++) //利用冒泡排序法進(jìn)行從大到小排序{for(k=0;k<i-1;k++){if(strcmp(c[k].output,c[k+1].output)<0) //比較排量的大小 {d[k]=c[k];//交換數(shù)據(jù)c[k]=c[k+1];//交換數(shù)據(jù)c[k+1]=d[k];//交換數(shù)據(jù)}}}printf("______________________________________________________________________________________________________________________\n");//輸出排序后的結(jié)果。printf(" 編號 車輛型號 廠商 車型級別 座位數(shù)/座 排量/T 變速箱 車身顏色 車輛價格/萬\n");for(j=0;j<i;j++) //輸出所有的車輛信息 {printf(" %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);}printf("______________________________________________________________________________________________________________________\n");break;case 4: printf("已退出排序!\n");break; //退出排序功能 default:printf("您輸入的數(shù)據(jù)有誤!\n請重新輸入!\n"); //如果輸入的是其他數(shù)字,顯示您輸入的數(shù)據(jù)有誤!}} }

步驟四:功能測試

就隨便測了幾個功能,邊測邊改bug
功能1:錄入車輛信息

功能2:瀏覽車輛信息

功能3:查詢車輛信息

總結(jié)

程序優(yōu)點(diǎn):基本實(shí)現(xiàn)要求的所有功能,程序能較好的運(yùn)行,而且用戶輸入錯誤時有保障機(jī)制,能讓用戶重新輸入數(shù)據(jù)。實(shí)現(xiàn)了所需的功能操作和更加有序的程序代碼,輸出時也能清晰顯示,避免了輸出時不理解的現(xiàn)象。同時,各種功能之間也會有一定的關(guān)系。它對某些輸入有特定的輸入,以避免輸入數(shù)據(jù)中的錯誤。

程序不足:沒有采用鏈表存儲車輛信息,每次需要引用車輛信息時都需要把車輛信息全部錄入,消耗資源大。

遇到的困難:1、數(shù)據(jù)錄入TXT時,打開TXT文件時,如果用“w”,會先刪除文件中的內(nèi)容。如果用“r+”,會先覆蓋文件中的內(nèi)容?!癮”為追加模式每次寫入時,位置指針都會指向文件結(jié)尾以便于追加新內(nèi)容。
2、程序結(jié)束時要在最后關(guān)閉文件fclose ( fp ),否則不會保存。
3、在功能輸入數(shù)字時,若輸入其它數(shù)據(jù),可能會出現(xiàn)錯誤和無限循環(huán)。
4、在修改功能上,選擇某一項(xiàng)參數(shù)信息進(jìn)行修改,沒有想到更好的方法確定參數(shù)信息,沒有實(shí)現(xiàn)循環(huán)修改。

完整代碼下載!!!

資源下載路徑一

資源下載路徑二

!!!

總結(jié)

以上是生活随笔為你收集整理的C语言课程设计-车辆信息管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。