1. 程式人生 > >LinuxC練習:停車場專案:停車場是一個能放 n 輛車的狹長通道,只有一個大門,汽車按到達的先後次序停放。若車場滿了,車要停在門 外的便道上等候,一旦有車走,則便道上第一輛車進入。當停車場中

LinuxC練習:停車場專案:停車場是一個能放 n 輛車的狹長通道,只有一個大門,汽車按到達的先後次序停放。若車場滿了,車要停在門 外的便道上等候,一旦有車走,則便道上第一輛車進入。當停車場中

基本功能要求:
          (1)建立三個資料結構分別是:停放棧、讓路棧、等候佇列。
          (2)輸入資料模擬管理過程,資料(入或出,車號)


功能描述:進車登記、出車登記、按車牌號查詢停車車輛資訊、查詢出入車記錄、
          查詢場內車輛資訊、查詢等候車輛資訊、退出系統。
          (1)linux系統編寫(連結串列、棧、佇列);
          (2)進車登記:登記車牌號以及入場時間;
          (3)出車登記:計算出停車時間,記錄車輛車牌;
  (4)按車牌號查詢車輛資訊:停車時間,是否來過停車場,是否還在停車場
          (5)查詢出入記錄:所有車輛,包括已經離開的
          (6)查詢場內車輛資訊:列出所有場內車輛資訊
  (7)查詢等候車輛資訊:顯示等候車輛數量以及所有車牌號

  (8)退出系統。

Car.h

#ifndef _CAR_H_
#define _CAR_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
enum
{
	SUCCESS = 10000,
	FAILURE,
	TRUE,
	FALSE,
};

struct carinfo
{
	char *carnum;

	char *entertime;
	char *outtime;

	long int enterseconds;
	long int outseconds;

	int enterflag;
	int outflag; 
	int waitflag;

	int fee;

	struct carinfo *next;

};

typedef struct carinfo CarInfo;

struct carstack
{
	CarInfo *top;
	int length;
};
typedef struct carstack CarStack;

struct carqueue
{
	CarInfo *front;
	CarInfo *rear;
};
typedef struct carqueue CarQueue;

int Welcome();
int Login();
int CarMenue();
int CheckCarnumStack(CarStack *cs1, char *carnum);
int CheckCarnumQueue(CarQueue *cq, char *carnum);
int ShowByCarnum(CarStack *s, CarStack *s1, CarQueue *q, void(p)(CarInfo *));
int InitCarStack(CarStack **s);
int Push(CarStack *s, CarInfo *c);
CarInfo *Pop(CarStack *s);
int EnterCarPark(CarStack *s, CarQueue *q);
int LeaveCarPark(CarStack *s, CarStack *s1,CarStack *s2, CarQueue *q);
int TraverseCarStack(CarStack *s, void (*p)(CarInfo *));
int EmptyCarStack(CarStack *s);
int InitCarQueue(CarQueue **q);
int EnterCarQueue(CarQueue *q, CarStack *s);
int EmptyCarQueue(CarQueue *q);
int LengthCarQueue(CarQueue *q);
CarInfo *DeleteCarQueue(CarQueue *q);
int TraverseCarQueue(CarQueue *q, void (*p)(CarInfo *));

#endif
Car.c
#include "Car.h"

int Welcome()
{
	system("clear");
	printf("\t\t\t************************************************************\n");
	printf("\t\t\t------------------------------------------------------------\n");
	printf("\t\t\t****************Welcome To  CarPark  System*****************\n");
	printf("\t\t\t------------------------------------------------------------\n");
	printf("\t\t\t*******************Made By Autumn Sun***********************\n");
	printf("\t\t\t------------------------------------------------------------\n");
	printf("\t\t\t************************************************************\n");
	sleep(2);
	return 0;
}

int Login()
{
	system("clear");
	char *LoginName = (char *)malloc(sizeof(char) * 20);
	char *LoginPassword = (char *)malloc(sizeof(char) * 20);
	if(NULL == LoginName || NULL == LoginPassword)
	{
		printf("NULL ERROR\n");
		exit(1);
	}
	int ret;
	printf("請輸入登入名\n");
	scanf("%s", LoginName);
	printf("請輸入登入密碼\n");
	scanf("%s", LoginPassword);
	ret = strcmp(LoginName, LoginPassword);
	if(ret != 0)
	{
		return FAILURE;
	}
	else
	{
		return SUCCESS;
	}

}



int CarMenue()
{
	printf("\t\t\t1、顯示車庫             2、顯示等候\n");
	printf("\t\t\t3、進入車庫             4、離開車庫\n");
	printf("\t\t\t5、查詢所有             6、推出系統\n");
	return 0;
}

int CheckCarnumStack(CarStack *cs1, char *carnum)
{
	int flag = 0;
	if(NULL == cs1)
	{
		return FAILURE;
	}

	CarInfo *q = cs1 -> top;
	while(q)
	{
		if(0 == strcmp(q -> carnum, carnum))
		{
			flag = 1;
		}
		q = q ->next;
	}
	

	if(flag == 0)
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}


}

int CheckCarnumQueue(CarQueue *cq, char *carnum)
{
	if(NULL == cq)
 	{
     	return FAILURE;
 	}
	int flag = 0;
	CarInfo *q1 = cq -> front -> next;
	while(q1)
	{
		if(0 == strcmp(q1 -> carnum, carnum))
		{
			flag = 1;
		}
		q1 = q1 -> next;
	}
	if(flag == 0)
	{
		return FALSE;
	}
	else
	{
		return TRUE;
	}


}



int ShowByCarnum(CarStack *s, CarStack *s1, CarQueue *q, void(p)(CarInfo *))
{
	CarInfo *tmp1 = s -> top;
	CarInfo *tmp2 = s1 -> top;
	CarInfo *tmp3 = q -> front -> next;
	char *carnum = (char *)malloc(sizeof(char) * 20);
	if(NULL == carnum)
	{
		printf("NULL ERROR\n");
		return FAILURE;
	}
	printf("請輸入要離開的車牌號\n");
	scanf("%s", carnum);
	while(tmp1)
	{
		if(strcmp(tmp1 -> carnum, carnum) == 0)
		{
			printf(" 狀態:在停車場\n");
			p(tmp1);

		}
		tmp1 = tmp1 -> next;
	}

	while(tmp2)
	{
		if(strcmp(tmp2 -> carnum, carnum) == 0)
		{
			printf("狀態:已經離開\n");
			p(tmp2);
		}
		tmp2 = tmp2 -> next;
	}

	while(tmp3)
	{
		if(strcmp(tmp3 -> carnum, carnum) == 0)
		{
			printf("狀態:正在等候\n");
			p(tmp3);
		}
		tmp3 = tmp3 -> next;
	}
	return SUCCESS;
}

CarQueue.c
#include "Car.h"

int InitCarQueue(CarQueue **q)//初始化等候區
{
	if (NULL == q)
	{
		return FAILURE;
	}

	(*q) = (CarQueue *)malloc(sizeof(CarQueue));
	if ((*q) == NULL)
	{
		return FAILURE;
	}

	CarInfo *n = (CarInfo *)malloc(sizeof(CarInfo));
	if (NULL == n)
	{
		return FAILURE;
	}

	n->next = NULL;

	(*q)->rear = (*q)->front = n;

	return SUCCESS;
		
}

int EnterCarQueue(CarQueue *q, CarStack *s)// 將車輛進入等候區
{
	if (NULL == q)
	{
		return FAILURE;
	}
	
	int ret, ret1;
	CarInfo *n = (CarInfo *)malloc(sizeof(CarInfo));
	n -> carnum = (char *)malloc(sizeof(char) * 10);
	n -> entertime = (char *)malloc(sizeof(char) * 20);
	n -> outtime = (char *)malloc(sizeof(char) * 20);
	n -> waitflag = 1;
	char *carnum = (char *)malloc(sizeof(char) * 10);
	if (NULL == n || NULL == n -> carnum || NULL == n -> entertime || NULL == n -> outtime || NULL == carnum)
	{
		return FAILURE;
	}

	printf("請輸入車牌號\n");
	scanf("%s", carnum);
	ret = CheckCarnumStack(s, carnum);
	ret1 = CheckCarnumQueue(q, carnum);
	while(TRUE == ret || TRUE == ret1)
	{
		printf("請重新輸入車牌號\n");
		memset(carnum, 0, 10);
		scanf("%s", carnum);
		ret = CheckCarnumStack(s, carnum);
		ret1 = CheckCarnumQueue(q, carnum);

	}
	strcpy(n ->carnum, carnum);
	strcpy(n -> entertime, " ");
	strcpy(n -> outtime, " ");
	n -> fee = 0;
	n -> enterflag = 0;
	n -> outflag = 0;
	n->next = NULL;
	q->rear->next = n;
	q->rear = n;

	return SUCCESS;
}

int EmptyCarQueue(CarQueue *q)//判斷等候區是否有車
{
	if (NULL == q)
	{
		return FAILURE;
	}

	return (q->rear == q->front) ? TRUE : FALSE; 
}

int LengthCarQueue(CarQueue *q)//求得等候區車輛數
{
	if (NULL == q)
	{
		return FAILURE;
	}

	CarInfo *p = q->front;
	int length = 0;

	while (p != q->rear)
	{
		p = p->next;
		length++;
	}

	return length;
}
//將車從等候區出去,返回車輛資訊
CarInfo *DeleteCarQueue(CarQueue *q)
{
	if (NULL == q || q->rear == q->front)
	{	
		return NULL;
	}

	CarInfo *p = q->front->next;
	q->front->next = p->next;
		
	if (p == q->rear)
	{
		q->rear = q->front;
	}
	
	return p;
}

int TraverseCarQueue(CarQueue *q, void (*p)(CarInfo *))//現實等候區所有車輛
{
	if (NULL == q || p == NULL)
	{
		return FAILURE;
	}
	
	int length = LengthCarQueue(q);
	printf("目前有%d在等候區\n", length);
	
	CarInfo *n = q->front->next;
	while (n)
	{
		p(n);
		n = n->next;
	}
	
	return SUCCESS;
}

CarStack.c
#include "Car.h"

int InitCarStack(CarStack **s)//初始化車庫
{
	*s = (CarStack *)malloc(sizeof(CarStack));
	if (NULL == (*s))
	{
		return FAILURE;
	}

	(*s)->top = NULL;
	(*s)->length = 0;	

	return SUCCESS;
}

int Push(CarStack *s, CarInfo *c)
{
	if(NULL == s)
	{
		return FAILURE;
	}

	c -> next = s -> top;
	s -> top = c;
	s -> length ++;
	return SUCCESS;
}

CarInfo *Pop(CarStack *s)
{
	if(NULL == s || NULL == s -> top)
	{
		return NULL;
	}
	
	CarInfo *c = s -> top;
	s -> top = c -> next;
	s -> length --;
	
	//tmp = c;
	//tmp -> next = NULL; 
	return c;
}


int EnterCarPark(CarStack *s, CarQueue *q)//將車牌號新增進車庫
{
	if (NULL == s || NULL == q)
	{
		return FAILURE;
	}

	CarInfo *p = (CarInfo *)malloc(sizeof(CarInfo));
	p -> carnum = (char *)malloc(sizeof(char) * 10);
	p -> entertime = (char *)malloc(sizeof(char) * 20);
	p -> outtime = (char *)malloc(sizeof(char) * 20);
	char *carnum = (char *)malloc(sizeof(char) * 10);
	if (NULL == p|| NULL == p -> carnum || NULL == p -> entertime || NULL == p -> outtime || NULL == carnum)
	{
		return FAILURE;
	}
	int ret, ret1;
	//獲取時間
	time_t timep;

	if(s -> length > 5)//如果車庫滿了則將車轉到等候區
	{
		printf("停車場已經滿了,請進入等候區\n");
		ret = EnterCarQueue(q, s);
		if(SUCCESS == ret)
		{
			printf("進入等候區成功\n");
		}
		else
		{
			printf("進入等候區失敗\n");
		}
	}
	else if(s -> length <= 5 && EmptyCarQueue(q) == TRUE)//如果等候區沒有車且車庫沒有滿
	{
		printf("請輸入車牌號\n");
		scanf("%s", carnum);
		
		ret = CheckCarnumStack(s, carnum);
		ret1 = CheckCarnumQueue(q, carnum);
		while(TRUE == ret || TRUE == ret1)
		{
			system("clear");
			printf("請重新輸入車牌號\n");
			memset(carnum, 0, 10);
			scanf("%s", carnum);
			ret = CheckCarnumStack(s, carnum);
			ret1 = CheckCarnumQueue(q, carnum);

		}
		strcpy(p -> carnum, carnum);
		p -> outseconds = 0;
		strcpy(p -> outtime, " ");
		p -> fee = 0;
		p -> enterseconds = time(&timep);//獲取描述
		strcpy(p -> entertime, ctime(&timep));
		p -> enterflag = 1;
		p -> outflag = 0;
		p -> waitflag  =1;
		printf("入場時間:%s\n", p -> entertime);
		Push(s, p);		
	}
	return SUCCESS;
}

						                     			 //出車時如果等候區有車則將等候區的第一輛車進入到車庫中、length不變
  						                       //如果等候區沒有車,則length --;
int LeaveCarPark(CarStack *s, CarStack *s1,CarStack *s2, CarQueue *q)//s為停車場,s1為方便停車的區域, s2為記錄離開的車子
{
	char *carnum = (char *)malloc(sizeof(char) * 10);
	CarInfo *tmp ;
	CarInfo *tmp1;
	CarInfo *tmp2;
	CarInfo *tmp3;
	CarInfo *tmp4;
	int ret, ret2;

	if (NULL == s || NULL == s->top || NULL == carnum)
	{
		return FAILURE;
	}
	printf("請輸入要離開的車牌號\n");
	scanf("%s", carnum);
	ret = CheckCarnumStack(s, carnum);
	while(FALSE == ret)
	{
		printf("請重新輸入\n");
		memset(carnum, 0, 10);
		scanf("%s", carnum);
		ret = CheckCarnumStack(s, carnum);
		 
	}
	tmp = s -> top;
	while(tmp)
	{
		 
		 if(strcmp(tmp -> carnum, carnum) == 0)
		 {
		 	tmp1 = tmp;
			break;
		 }
		 tmp4 = Pop(s);
		 if(NULL == tmp4)
		 break;
		 Push(s1, tmp4);
		 
		 tmp = s -> top;
	}
	
	time_t timep;
	time(&timep);
	tmp1 -> outseconds = time(&timep);
	strcpy(tmp1 -> outtime, ctime(&timep));
	tmp1 -> fee = (tmp1 -> outseconds - tmp1 -> enterseconds) * 1;//一分鐘一元
	tmp1 -> outflag = 1;
	tmp1 -> enterflag = 0;
	printf("應繳費用:%d\n", tmp1 -> fee);
	printf("離開時間:%s\n", tmp1 -> outtime);
	Pop(s);
	Push(s2, tmp1);
	tmp2 = s1 -> top;
	while(tmp2)
	{
		tmp4 = Pop(s1);
		if(NULL == tmp4)
		break;
		Push(s, tmp4);
		tmp2 = s1 -> top;
	}
	//如果等候區有車將第一輛車開進停車場
	if(FALSE == EmptyCarQueue(q))
	{
		tmp3 = DeleteCarQueue(q);
		
		if(s -> length <= 5)
		{
			
			tmp3 -> enterseconds = time(&timep);
			strcpy(tmp3 -> entertime, ctime(&timep));
			tmp3 -> enterflag = 1;
			tmp3 -> waitflag = 0;
			
			ret2 = Push(s, tmp3);
			if(SUCCESS == ret2)
			{
				printf("等候區車牌%s正在進入停車場\n", tmp3 -> carnum);
				printf("入場時間:%s\n", tmp3 -> entertime);
				printf("從等候區成功進入停車場\n");
				return SUCCESS;
			}
			else
			{
				return FAILURE;
			}
		}	
	}
	return SUCCESS;
}


int TraverseCarStack(CarStack *s, void (*p)(CarInfo *))//顯示所有停車場車輛的資訊
{
	if (NULL == s)
	{
		printf("1\n");
		return FAILURE;
		
	}
	//printf("2\n");
	printf("目前停車場有%d正在使用\n", s -> length);
	//printf("1\n");
	CarInfo *q = s->top;
	while (q)
	{
		p(q);
		q = q->next;
	}
	while(getchar() != '\n');
	return SUCCESS;

}


int EmptyCarStack(CarStack *s)//判斷停車場是否為空
{
	if (NULL == s)
	{
		return FAILURE;
	}

	return (NULL == s->top) ? TRUE : FALSE;
}

test.c
#include"Car.h"

void visit(CarInfo *c)
{
	printf("\t\t\t車牌號:%s進庫時間:%s出庫時間:%s應繳費用:%d\n", c -> carnum, c -> entertime, c -> outtime, c -> fee);
	printf("\t\t\t--------------------------------------------------------------------\n");
	printf("\t\t\t--------------------------------------------------------------------\n");
}

int main()
{
	int ret, choice;
	CarStack *cs1;//車庫
	CarStack *cs2;//用於臨時存放
	CarStack *cs3;//用於存放離開的車輛資訊
	CarQueue *cq;
	if(FAILURE == InitCarStack(&cs1) || FAILURE == InitCarStack(&cs2) || FAILURE == InitCarStack(&cs3) || FAILURE == InitCarQueue(&cq))
	{
		printf("Init Failure\n");
		exit(1);
	}
	else
	{
		Welcome();
		ret = Login();
		while( FAILURE == ret)
		{
			system("clear");
			printf("請重新登入\n");
			ret = Login();
		}
		
		while(1)
		{
			CarMenue();
			printf("\n");
			printf("請輸入選項\n");
			scanf("%d", &choice);
			system("clear");
			switch(choice)
			{
				case 1: TraverseCarStack(cs1, visit);
						break;
				case 2: TraverseCarQueue(cq, visit);
						break;
				case 3: EnterCarPark(cs1, cq);
						break;
				case 4:	LeaveCarPark(cs1, cs2, cs3, cq);
						break;
				case 5: ShowByCarnum(cs1, cs3, cq, visit);
						break;
				case 6:	exit(1);
						break;
				default: printf("1111\n");
						return 0;

			}
		}
	}


	return 0;
}


相關推薦

LinuxC練習:停車場專案:停車場一個能放 n 輛車狹長通道,只有一個大門,汽車按到達的先後次序停放。若車場滿了,車要停在門 外的便道上等候一旦有則便道上第一輛車進入停車場

基本功能要求:          (1)建立三個資料結構分別是:停放棧、讓路棧、等候佇列。          (2)輸入資料模擬管理過程,資料(入或出,車號)功能描述:進車登記、出車登記、按車牌號查詢停車車輛資訊、查詢出入車記錄、          查詢場內車輛資訊、查詢等候

沒有傘的孩子只能快跑如若不跑只有一個結果超過你的人回頭鄙視你

一.js a.'${pageContext.request.contextPath}'//結果:/projectName b.'<%=request.getContextPath()%>

3星|王賽《增長五線》理論新意點評和案例一般只有一個拿得出手的應用案例

貴賓 == 基礎 ash 純粹 都是 p12 樂視 dir 作者認為當下企業家最關註的都是如何實現客戶、業務、利潤、價值的增長。作者提出“增長五線”的理論,五線是:撤退線、成長底線、增長線、爆發線和天際線。其中天際線可以看作是企業的增長

位運算解決“一個數組只有一個數字出現n其他數字出現k次”問題

不重復 blog ron 運用 ons 利用 缺失 tail 位運算符 轉自:https://blog.csdn.net/monster_girl/article/details/52928864 在學習完位操作後,經常會遇到一類關於查找缺失整數的問題。 第一類是給你一個

第三方投票頁面只有一個html頁面

關於html的程式碼就不註釋了,我比較喜歡這段JS程式碼,所以就註釋一下JS程式碼。 程式碼如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <

簡單的投票頁面只有一個html頁面

幫鳥寫了個最簡單的投票頁面,他要求最簡單,所以介面就寫的很簡單,也沒有什麼大的功能。 關於html的程式碼就不註釋了,我比較喜歡這段JS程式碼,所以就註釋一下JS程式碼。 程式碼如下: <!DOCTYPE html> <html> <hea

eclipse建立maven工程時出現目錄結構不全只有一個resources

之前一直用的idea,想熟悉下eclipse開發maven工程,今天建立了幾個maven springmvc試了下,發現總是目錄不全,就網上各種查詢,試了很多方法 ,最後終於成功,原因在於maven的jar包配置出了問題,maven自帶的jdk版本和自己裝的不一樣,修改下就可

千萬或億資料(重複)統計其中出現次數最多的N個數據. C++實現

上千萬或上億的資料,現在的機器的記憶體應該能存下。所以考慮採用hash_map/搜尋二叉樹/紅黑樹等來進行統計次數。然後就是取出前N個出現次數最多的資料了,可以用第2題提到的堆機制完成。 #in

一個數組只有一個數字僅出現一次其他數字均出現兩次找出這個數字

要求:不借助任何空間 我們知道:a^0 = a,a^a = 0,因此這裡可以藉助異或運算可以實現。 具體實現如下: public class SingleNum { /**

使用springmvc 接收傳圖片在 手機 ios 圖片傳就不報錯 沒有就報下面這個錯誤然後在pc端跟安卓手機就不會這個錯誤這是為什麼呢?

七月 18, 2018 4:04:22 下午 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet [springMVC] in context with

一串數字只有一個數字出現一次其他數字都出現兩次查找出這個數字(python)

一次 面試 個數字 一個 直接 fas 其中 3.2 != 背景:   電話面試&手撕代碼 2019.03.22 Mufasa 問題:   一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字 條件:   這串數字是有序數

【嵌入式系統學習記錄】小專案停車場管理系統的體會

停車場專案需求問題描述:停車場是一個能放 n 輛車的狹長通道,只有一個大門,汽車按到達的先後次序停放。若車場滿了,車要停在門          外的便道上等候,一旦有車走,則便道上第一輛車進入。當停車場中的車離開時,由於通道窄,在它後面的車  要先退出,待它走後在依次進入。汽

Linux小專案停車場的實現

標頭檔案: /****************************wddv587************************************* FileName: 停車場/parking.h Verson: 1.0 Date: 2018.0814

python小練習1設計這樣一個函數在桌面的文件夾創建10個文本以數字給它們命名

一個 數字 width lose 文件夾 .com 小練習 pen wid python小練習1:設計這樣一個函數,在桌面的文件夾上創建10個文本,以數字給它們命名。 使用for循環即可實現: for name in range(1,11): desk

安卓專案實戰之強大的網路請求框架okGo使用詳解(六)擴充套件專案okServer更強大的下載傳功能支援斷點和多工管理

OkGo與OkDownload的區別就是,OkGo只是簡單的做一個下載功能,不具備斷點下載,暫停等操作,但是這在很多時候已經能滿足需要了。 而有些app需要有一個下載列表的功能,就像迅雷下載一樣,每個下載任務可以暫停,可以繼續,可以重新下載,可以有下載優先順序,這時候OkDownload就有

#Java又和Go語言槓!程式設計師10年!擡一個

隨著IT行業越來越火,有很多小夥伴也就入了程式設計的坑。IT行業就業前景好使毋庸置疑的,從事IT行業的人,就算是跳槽再就業也是不會有什麼難度的,與其他行業相比,IT行業只要有技術,其他的就都微不足道了。 如果有想學習java的程式設計師,可來我們的java學習扣qun:72340,3928免

Java又和Go語言槓!程式設計師20年一個

隨著IT行業越來越火,有很多小夥伴也就入了程式設計的坑。IT行業就業前景好使毋庸置疑的,從事IT行業的人,就算是跳槽再就業也是不會有什麼難度的,與其他行業相比,IT行業只要有技術,其他的就都微不足道了。 最近看到一篇帖子,有網友說,服務端未來是go的,說go不好的都是看了點go語法的,覺得

IDEA 從GitHub拉取的專案POM.xml 不新增依賴 報錯Non-resolvable parent POM for com.cdc:blinddate:0.0.1-SNAPSHOT:

錯誤重現: [ERROR]     Non-resolvable parent POM for com.fifree:backgroundFitfree:0.0.1-SNAPSHOT: Could not transfer artifact org.spri

Java:假設車庫3個車位(可以通過boolean[]陣列來表示車庫)可以停車一個程式模擬多個使用者開車離開停車入庫的效果注意車位時不停車

假設車庫有3個車位(可以通過boolean[]陣列來表示車庫)可以停車,寫一個程式模擬多個使用者開車離開,停車入庫的效果。注意:車位有車時不能停車。 1)使用阻塞佇列來實現(BlockingQueue<T>) Producer類 package com.多執行緒停車問

機器學習工程師 - Udacity 專案實現一個狗品種識別演算法App

在這個notebook中,你將邁出第一步,來開發可以作為移動端或 Web應用程式一部分的演算法。在這個專案的最後,你的程式將能夠把使用者提供的任何一個影象作為輸入。如果可以從影象中檢測到一隻狗,它會輸出對狗品種的預測。如果影象中是一個人臉,它會預測一個與其最相似的狗的種類。下面這張圖展