C語言實(shí)現(xiàn)簡單的停車場管理系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)簡單停車場管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
1.問題描述
1)有一個(gè)兩層的停車場,每層有6個(gè)車位,當(dāng)?shù)谝粚榆囄煌M后才允 許使用第二層(停車場可用一個(gè)二維數(shù)組實(shí)現(xiàn)),每輛車的信息包括車牌號(hào),層號(hào),車位號(hào),停車時(shí)間共四項(xiàng),其中停車時(shí)間按分鐘計(jì)算;
2)假設(shè)停車場初始狀態(tài)為第一層空、第二層已經(jīng)有四輛車,其車位號(hào)依次為第二層的1-4號(hào),停車時(shí)間依次為20,15,10,5;
3)停車操作:當(dāng)一輛車進(jìn)入停車場時(shí),先輸入其車牌號(hào),再為它分配一個(gè)層號(hào)和一個(gè)車位號(hào)(分配前先查詢車位的使用情況,如果第一層有空位則必須停在第一層),停車時(shí)間設(shè)為5,并將在此之前的停車時(shí)間加5。(此題簡化時(shí)間的處理:當(dāng)有一輛車進(jìn)入時(shí)才對(duì)別的車加時(shí)間5分鐘);
4)收費(fèi)管理(取車):當(dāng)有車開走時(shí),輸入其車牌號(hào),先按其停車時(shí)間計(jì)算費(fèi)用,每5分鐘0.2元,同時(shí)將該車對(duì)應(yīng)的車位設(shè)置為可使用狀態(tài)。
5)輸出停車場中全部車輛的信息;
6)退出系統(tǒng);
涉及的知識(shí)
結(jié)構(gòu)體的運(yùn)用,用數(shù)組當(dāng)函數(shù)參數(shù)等。
2.上代碼
#include "stdio.h" #include<string.h> struct car { ?? ?char car_num[10]; ?? ?int floor; ?? ?int position_num; ?? ?int time; }CAR[12] = { {"0",1,1,0},{"0",1,2,0},{"0",1,3,0},{"0",1,4,0},{"0",1,5,0},{"0",1,6,0} ?? ??? ??? ?,{"冀F12345",2,1,20},{"冀F17845",2,2,15},{"冀F12856",2,3,10},{"冀F12445",2,4,5},{ "0",2,5,0 }, {"0",2,6,0} }; void park(struct car CAR[]) { ?? ?int i, j,k; ?? ?int flag = 0; ?? ?char carn[10]; ?? ?printf("\n請(qǐng)輸入車牌號(hào)\n"); ?? ?scanf("%s", carn); ?? ?for (k = 0; k < 12; k++) ?? ?{ ?? ??? ?if (strcmp(CAR[k].car_num, carn) == 0) ?? ??? ?{ ?? ??? ??? ?printf("該車已在停車場內(nèi)\n"); ?? ??? ??? ?flag = 2; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?for (i = 0; i < 12; i++) ?? ?{ ?? ??? ?if (strcmp(CAR[i].car_num,"0") == 0&&flag==0) ?? ??? ?{ ?? ??? ??? ?strcpy(CAR[i].car_num, carn); ?? ??? ??? ?for (j = 0; j < 12; j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (strcmp(CAR[j].car_num, "0") != 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?CAR[j].time += 5; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?printf("該車可停在了%d層%d號(hào)\n", CAR[i].floor, CAR[i].position_num); ?? ??? ??? ?flag = 1; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?if (flag == 0) ?? ?{ ?? ??? ?printf("\n停車場已滿\n"); ?? ?} } void leave(struct car CAR[]) { ?? ?int i, j; ?? ?int flag = 0; ?? ?char carn[10]; ?? ?float price; ?? ?scanf("%s",carn); ?? ?for (i = 0; i < 12; i++) ?? ?{ ?? ??? ?if (strcmp(CAR[i].car_num,carn)==0) ?? ??? ?{ ?? ??? ??? ?strcpy(CAR[i].car_num,"0"); ?? ??? ??? ?price = CAR[i].time*0.04; ?? ??? ??? ?CAR[i].time = 0; ?? ??? ??? ?flag = 1; ?? ??? ??? ?printf("\n停車費(fèi)%f\n", price); ?? ??? ?} ?? ?} ?? ?if (flag == 0) ?? ?{ ?? ??? ?printf("\n停車場內(nèi)無此車\n"); ?? ?} ?? ? } void information(struct car CAR[]) { ?? ?printf("車牌號(hào) ? ?\t層號(hào)\t位號(hào)\t時(shí)間\n"); ?? ?for (int i = 0; i < 12; i++) ?? ?{ ?? ??? ?printf("%-10s\t%d\t%d\t%d\n", CAR[i].car_num, CAR[i].floor, CAR[i].position_num, CAR[i].time); ?? ?} } int main() { ?? ?int n; ?? ?int m = -1; ?? ?while (m != 0) ?? ?{ ?? ??? ?printf("\n*************************\n"); ?? ??? ?printf("1.停車\n"); ?? ??? ?printf("2.離開\n"); ?? ??? ?printf("3.輸出停車場信息\n"); ?? ??? ?printf("0.退出\n"); ?? ??? ?printf("*************************\n"); ?? ??? ?printf("請(qǐng)輸入功能號(hào)0-3:"); ?? ??? ?scanf("%d", &m); ?? ??? ?while (m < 0 || m>3) ?? ??? ?{ ?? ??? ??? ?printf("\n輸入錯(cuò)誤!請(qǐng)輸入正確的功能號(hào)0-3:"); ?? ??? ??? ?scanf("%d", &m); ?? ??? ?} ?? ??? ?if (m == 1) ?? ??? ??? ?park(CAR); ?? ??? ?else if (m == 2) ?? ??? ??? ?leave(CAR); ?? ??? ?else if (m == 3) ?? ??? ??? ?information(CAR); ?? ?} ?? ?return 0; }
3.運(yùn)行結(jié)果部分截圖
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++標(biāo)準(zhǔn)庫學(xué)習(xí)之weak_ptr智能指針用法詳解
這篇文章主要為大家詳細(xì)介紹了C++標(biāo)準(zhǔn)庫中weak_ptr智能指針用法的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例
本文主要介紹了Qt結(jié)合libqrencode生成二維碼的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C語言動(dòng)態(tài)內(nèi)存函數(shù)(malloc、calloc、realloc、free)詳解
在C語言中,動(dòng)態(tài)內(nèi)存函數(shù)是塊重要的知識(shí)點(diǎn),以往,我們開辟空間都是固定得,數(shù)組編譯結(jié)束后就不能繼續(xù)給它開辟空間了,開辟的空間滿了,就不能在開辟空間了,學(xué)習(xí)本文章,我們就可以解決這個(gè)問題,向內(nèi)存申請(qǐng)空間,感興趣的小伙伴跟著小編一起來看看吧2023-08-08C++宏函數(shù)和內(nèi)聯(lián)函數(shù)的使用
本文主要介紹了C++宏函數(shù)和內(nèi)聯(lián)函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07C語言實(shí)現(xiàn)數(shù)據(jù)的壓縮與解壓
數(shù)據(jù)壓縮是通過一系列的算法和技術(shù)將原始數(shù)據(jù)轉(zhuǎn)換為更緊湊的表示形式,以減少數(shù)據(jù)占用的存儲(chǔ)空間,數(shù)據(jù)解壓縮則是將壓縮后的數(shù)據(jù)恢復(fù)到原始的表示形式,本文給大家詳細(xì)介紹了C語言實(shí)現(xiàn)數(shù)據(jù)壓縮與解壓,需要的朋友可以參考下2023-08-08詳解C語言求兩個(gè)數(shù)的最大公約數(shù)及最小公倍數(shù)的方法
這篇文章主要介紹了C語言求兩個(gè)數(shù)的最大公約數(shù)及最小公倍數(shù)的方法,輾轉(zhuǎn)相除法和輾轉(zhuǎn)相減法在解決這種問題時(shí)最常用到,需要的朋友可以參考下2016-03-03