1. 程式人生 > >Linux小專案:停車場的實現。

Linux小專案:停車場的實現。

標頭檔案:

/****************************wddv587*************************************
FileName: 停車場/parking.h  Verson: 1.0   Date: 2018.0814     
Description: 停車場程式標頭檔案定義。
Verson: 1.0
Author: 吳叫獸
*/

#ifndef _PARKING_H
#define _PARKING_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define NONE                 "\e[0m"
#define BLACK                "\e[0;30m"
#define L_BLACK              "\e[1;30m"
#define RED                  "\e[0;31m"
#define L_RED                "\e[1;31m"
#define GREEN                "\e[0;32m"
#define L_GREEN              "\e[1;32m"
#define BROWN                "\e[0;33m"
#define YELLOW               "\e[1;33m"
#define BLUE                 "\e[0;34m"
#define L_BLUE               "\e[1;34m"
#define PURPLE               "\e[0;35m"
#define L_PURPLE             "\e[1;35m"
#define CYAN                 "\e[0;36m"
#define L_CYAN               "\e[1;36m"
#define GRAY                 "\e[0;37m"
#define WHITE                "\e[1;37m"

#define SUCCESS    10000
#define FAILURE    10001
#define TRUE       10002
#define FALSE      10003

#define SIZE   3      //棧的容量


struct num
{
	long time1;
	long time2;
	char *timer[SIZE];	
	char a[20];
};

typedef struct num Car;



struct stack
{
	int top;            //棧頂元素的位置(棧頂指標)
	Car *data;          //各輛車的資訊
	
	/*char *a[SIZE];
	int in[SIZE];
	int out[SIZE];*/
};

typedef struct stack Stack;

struct queue
{
	Car data[SIZE];
	int front;            //隊頭指標(下標)
	int rear;             //隊尾指標
};
typedef struct queue Queue;

struct all
{
	long time;
	char *timer_in[50];
	char *timer_out[50];
	char a[20];
};

typedef struct all A;

struct allstack
{
	int top;
	A *data;
};

typedef struct allstack New;


int StackInit(Stack **s);
void push(Stack *s, Queue *q);
void traverse(Stack *s);
void outcar(Stack *s1, Stack *s2, Queue *q, New *n);
int pop(Stack *s);
void seekqueue(Queue q);
int InitQueue(Queue *q);
int EnterQueue(Queue *q, char str[20]);
void welcome();
void menu();
void seekstack(Stack *s);
void traverseNew(New *n, Stack *s);
int Allstackinit(New **s);
int StackClear(Stack *s);
int StackDestroy(Stack **s);
int DeleteQueue(Queue *q);
int ClearQueue(Queue *q);

#endif

功能子函式:

/****************************wddv587*************************************
FileName: 停車場/parking.c  Verson: 1.0   Date: 2018.0814     
Description: 停車場程式功能函式,實現不同功能。
Verson: 1.0
Author: 吳叫獸
*/

#include "parking.h"

int StackInit(Stack **s)   //對棧初始化
{
	int i;
	(*s) = (Stack *)malloc(sizeof(Stack) * 1);   //分配一個結構體,用於儲存棧的資訊 
	
	//判斷是否申請空間成功
	if(NULL == (*s))
	{
		printf("申請空間失敗!\n");
		sleep(2);
		return FAILURE;
	}
	(*s)->top = -1;     //空棧,棧頂為-1
	(*s)->data = (Car *)malloc(sizeof(Car) * SIZE);  //為棧分配空間
	
	//判斷是否申請空間成功
	if (NULL == (*s)->data)
	{	
		printf("申請空間失敗!\n");
		sleep(2);
		return FAILURE;
	}
	

	for(i = 0; i < SIZE; i++)
	{
		(*s)->data[i].timer[i] = malloc(sizeof(char) * 64);//為存放車牌號的字元指標陣列分配空間
		
		//判斷是否申請空間成功
		if((*s)->data[i].timer[i] == NULL)
		{
			printf("申請空間失敗!\n");
			sleep(1);
			return FAILURE;
		}
	}
	
	return SUCCESS;
}

int Allstackinit(New **s) //用於對存放從停車場離開的車輛資訊的棧初始化
{
	int i;
	(*s) = (New *)malloc(sizeof(New) * 1);   
	
	//判斷是否申請空間成功
	if(NULL == (*s))
	{
		printf("申請空間失敗!\n");
		sleep(1);
		return FAILURE;
	}
	(*s)->top = -1;     //空棧,棧頂為-1
	(*s)->data = (A *)malloc(sizeof(A) * 20);  
	
	//判斷是否申請空間成功
	if (NULL == (*s)->data)
	{
		printf("申請空間失敗!\n");
		sleep(1);
		return FAILURE;
	}
	

	for(i = 0; i < 50; i++)
	{
		(*s)->data[i].timer_in[i] = malloc(sizeof(char) * 64);
		(*s)->data[i].timer_out[i] = malloc(sizeof(char) * 64);
		
		//判斷是否申請空間成功,這裡任何一個申請失敗都是返回錯誤
		if((*s)->data[i].timer_in[i] == NULL || (*s)->data[i].timer_out[i] == NULL)
		{
			printf("申請空間失敗!\n");
			sleep(1);
			return FAILURE;
		}
	}
	
	return SUCCESS;
	
}


void push(Stack *s, Queue *q)  //該函式是對進入停車場的車輛操作
{
	time_t t;
	char str[20] = {0};
	if (NULL == s || q == NULL)  //入參判斷
	{
		printf("程式執行出錯!\n");
		return;
	}
	
	char flag = 'y';  //flag的作用是重複進車
	while(flag == 'y')
	{	printf("請輸入您的車牌號:\n");
		scanf("%s", str);
		
		if(s->top == SIZE - 1)   //判斷停車場是否已滿
		{
			printf("停車場已滿!即將進入等候區。。。\n");
			sleep(1);
			/*xxxxxxxxx*/
			EnterQueue(q, str);  //若是滿了的話,就進去等候佇列
			return;
		}
		
		
		strcpy(s->data[s->top + 1].a, str);     //停車場沒有滿,正常進棧
		t = time(NULL);
		s->data[s->top + 1].time1 = time(&t);
		strcpy(s->data[s->top + 1].timer[s->top + 1], ctime(&t));
		printf("車    牌:%s\n停車時間:%s\n", str, s->data[s->top + 1].timer[s->top + 1]);
		s->top++;
		
		printf("您還有車嗎,是否繼續入庫, y or n ?\n");
		
		getchar();
		scanf("%c", &flag);
	}
}


void traverse(Stack *s)  //通過下標副本實現對停車場棧的遍歷(棧是沒有遍歷的,只能一個一個出一個一個讀取)
{
	if(NULL == s) //入參判斷
	{
		printf("程式執行出錯!\n");
		return;
		
	}
	
	if(s->top == -1) //判斷停車場是否為空
	{
		printf("停車場是空的!\n");
		return;
	}
	int lp = -1;
	printf("停車場內資訊如下:\n");
	time_t t;
	long tmp, tmp1;
	tmp = time(&t);
	while(lp != s->top)  //這裡定義一個時間變數,可以求出目前挺溜的時間
	{
		lp++;
		
		tmp1 = tmp - s->data[lp].time1;
		
		printf("車 牌 號:%s\n", s->data[lp].a);
		printf("停車時間:%s\n", s->data[lp].timer[lp]);
		printf("已 停 留:%d\n", tmp1);
		
	}
	sleep(1);
}

void outcar(Stack *s1, Stack *s2, Queue *q, New *n) //這個函式是最長的,不過應該還能看懂
{
	if(NULL == s1 || NULL == s2)//入參判斷
	{
		printf("run error !\n");
		sleep(1);
		return;
	}
	
	if(s1->top == -1)  //判斷停車場是否為空,若為空則不用出車
	{
		printf("empty!\n");
		sleep(1);
		return;
	}
	
	char str[20] = {0};
	printf("請選擇你要賣掉的車的車牌號:\n");
	scanf("%s", str);
	
	while(strcmp(s1->data[s1->top].a, str) != 0)  //該步驟是從stack1頂端元素開始判斷,車輛是否是想要出去的那輛,若不是,則出棧,進入stack2裡
	{
		strcpy(s2->data[s2->top + 1].a, s1->data[s1->top].a);     //進棧stack2
		s2->top++;
		
		pop(s1);	
		
		if(s1->top == -1)
		{
			printf("停車場內沒有這輛車!\n");
			sleep(2);
			return;
			
		}
	}
	//下面進行的就是將出去的車輛資訊儲存在第四個棧裡面
	long tmp_time;
	time_t t;
	
	s1->data[s1->top].time2 = time(&t);
	
	strcpy(n->data[n->top + 1].timer_in[n->top + 1], s1->data[s1->top].timer[s1->top]);//進車時間
	strcpy(n->data[n->top + 1].a, str);//車牌號寫入第四個棧
	
	strcpy(s1->data[s1->top].timer[s1->top], ctime(&t));//車輛離開時間覆蓋寫入stack1
	
	strcpy(n->data[n->top + 1].timer_out[n->top + 1], ctime(&t));//車輛離開時間寫入第四個棧
	
	tmp_time = s1->data[s1->top].time2 - s1->data[s1->top].time1;//計算這輛車停放的時間
	
	n->data[n->top + 1].time = tmp_time;//把停留時間也寫入第四個棧裡
	
	n->top++;
	
	
	printf("車    牌:%s\n出車時間:%s\n停留時間:%d\n", s1->data[s1->top].a, s1->data[s1->top].timer[s1->top], tmp_time);
	
	
	pop(s1);
	sleep(1);
	
	while(s2->top != -1) //把讓路棧全部寫入stack1
	{
		strcpy(s1->data[s1->top + 1].a, s2->data[s2->top].a);     
		s1->top++;
		s2->top--;	
	}
	
	if(q->front != q->rear)//此時若等候區有車,則預設將第一輛車進入stack1
	{
		printf("停車場內已有位置,等候區第一輛車即將進入停車場。。。\n");
		strcpy(s1->data[s1->top + 1].a, q->data[q->front].a);
		time_t t;
		s1->data[s1->top + 1].time1 = time(&t);
		strcpy(s1->data[s1->top + 1].timer[s1->top + 1], ctime(&t));
		printf("車    牌:%s\n停車時間:%s\n", s1->data[s1->top + 1].a, s1->data[s1->top + 1].timer[s1->top + 1]);
		s1->top++;
		q->front = (q->front + 1) % SIZE;
		sleep(1);
	}
}

void traverseNew(New *n, Stack *s) //遍歷第四個棧
{	
	if(NULL == n || NULL == s)
	{
		printf("run error!\n");
		sleep(1);
		return;
	}

	if(n->top == -1)
	{
		printf("目前沒有車出過停車場!\n");
	}
	else
	{
		int lp = -1;
		printf("之前來過的車輛資訊如下:\n");
		while(lp != n->top)
		{	lp++;
			printf("車 牌 號:%s\n", n->data[lp].a);
			printf("停車時間:%s\n", n->data[lp].timer_in[lp]);
			printf("出車時間:%s\n", n->data[lp].timer_out[lp]);
		}
	}
	
	printf("目前停車場內車輛資訊如下:\n");
	
	if(s->top == -1)
	{
		printf("停車場是空的!\n");
	}
	else
	{
		int lpp = -1;
		printf("停車場內資訊如下:\n");
		time_t t;
		long tmp, tmp1;
		tmp = time(&t);
		while(lpp != s->top)
		{
			lpp++;
		
			tmp1 = tmp - s->data[lpp].time1;
			
			printf("車 牌 號:%s\n", s->data[lpp].a);
			printf("停車時間:%s\n", s->data[lpp].timer[lpp]);
			printf("已 停 留:%d\n", tmp1);	
		}
	}
	
	sleep(3);
}

void seekstack(Stack *s)
{
	if (NULL == s)  //入參判斷
	{
		printf("程式執行出錯!\n");
		return;
	}
	
	int lp = s->top;
	char str[20];
	printf("請輸入想要查詢的車牌號:\n");
	scanf("%s", str);
	while(lp != -1)
	{
		if(strcmp(s->data[lp].a, str) == 0)
		{
			time_t t;
			long tmp;
			tmp = time(&t) - s->data[lp].time1;
			printf("車 牌 號:%s\n", s->data[lp].a);
			printf("停車時間:%s\n", s->data[lp].timer[lp]);
			printf("停留時間:%d\n", tmp);
			sleep(2);
			break;
		}
		lp--;
	}
	
	if(lp == -1)
	{
		printf("停車場內沒有這輛車!\n");
		sleep(1);
	}
}


int pop(Stack *s)
{
	if (s->top == -1)
	{
		return FAILURE;
	}
	s->top--;

	return SUCCESS;
}


void seekqueue(Queue q)
{ 
	if (q.rear == q.front)
	{
		printf("queue is empty!\n");
		sleep(2);
		return;
	}
	printf("等候區資訊如下:\n");
	while(q.front != q.rear)
	{
		printf("%s\n", q.data[q.front].a);
		q.front = (q.front + 1) % SIZE;
	}
	sleep(3);
}
int StackClear(Stack *s)
{
	if (NULL == s)
	{
		return FAILURE;
	}

	s->top = -1;

	return SUCCESS;
}

int StackDestroy(Stack **s)
{
	if (s == NULL || *s == NULL)
	{
		return FAILURE;
	}

	free((*s)->data);
	free(*s);
	(*s) = NULL;

	return SUCCESS;
}


//佇列功能子函式
int InitQueue(Queue *q)
{
	if (NULL == q)
	{
		return FAILURE;
	}

	q->rear = q->front = 0;   //初始化空隊

	return SUCCESS;
}



int EnterQueue(Queue *q, char str[20])
{
	if (NULL == q)
	{
		return FAILURE;
	}

	if ((q->rear + 1) % SIZE == q->front)   //隊滿
	{
		printf("等候區已滿!請去秦鵬的停車場。。。\n");
		sleep(2);
		return FAILURE;
	}

	strcpy(q->data[q->rear].a, str);
	q->rear = (q->rear + 1) % SIZE;

	return SUCCESS;
}


int DeleteQueue(Queue *q)
{
	if (NULL == q)
	{
		return FAILURE;
	}
	if (q->rear == q->front)
	{
		return FAILURE;
	}

	q->front = (q->front + 1) % SIZE;

	return SUCCESS;
}

int ClearQueue(Queue *q)
{
	if (NULL == q)
	{
		return FAILURE;
	}

	q->front = q->rear;

	return SUCCESS;
}


//炫酷的進入介面
void welcome()
{
	system("clear");
	printf(YELLOW"wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 \n"NONE);
	printf("\n\n\n\n\n\n\n\n\n");
	printf(L_PURPLE"                  接\n"NONE);
	printf(L_BLACK"                  下\n"NONE);
	printf(L_BLUE"                  來\n"NONE);
	printf(L_GREEN"                  你\n"NONE);
	printf(L_CYAN"                  所\n"NONE);
	printf(PURPLE"                  見\n"NONE);
	printf(YELLOW"                  的\n"NONE);
	printf(BLUE"                  是\n"NONE);
	printf("\n\n\n\n\n\n");
	printf(YELLOW"wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 \n"NONE);
	sleep(3);
	
	system("clear");
	printf(YELLOW"wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 \n"NONE);
	printf("\n\n\n\n\n\n\n\n\n");
	printf(L_PURPLE"                  \n"NONE);
	printf("\033[41;32m                       吳叫獸的停車場!\033[0m\n");
	printf("\033[31;5m                       吳叫獸的停車場!\033[0m\n");
	printf("\033[41;32m                       吳叫獸的停車場!\033[0m\n");
	printf("\n\n\n\n\n\n\n\n\n\n");
	printf(YELLOW"wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 wddv587 \n"NONE);
	sleep(3);
	
	system("clear");

	printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(L_PURPLE"\n     歡迎來到吳叫獸的停車場!\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	
	sleep(1);
}

void menu()
{
	system("clear");
	
	printf(GREEN"\n\n\
[email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n"NONE); printf(BLUE" 1、停車登記 2、出車登記\n"NONE); printf(PURPLE" 3、查詢車輛資訊 4、查詢出入記錄\n"NONE); printf(L_GREEN" 5、查詢場內車輛資訊 6、查詢等候車輛資訊\n"NONE); printf(L_BLUE" 7、退出系統\n"NONE); printf(GREEN"\n******************************************************************\n\n\n"NONE); }

主函式:

/****************************wddv587*************************************
FileName: 停車場/car.c  Verson: 1.0   Date: 2018.0814     
Description: 停車場程式主函式,使用者可以選擇相應的功能
Verson: 1.0
Author: 吳叫獸
*/
#include <stdio.h>
#include "parking.h"

int main()
{
	int ret, i, choice;
	
	//定義兩個棧,stack1是停車棧,stack2是讓路棧
	Stack *stack1, *stack2;
	
	ret = StackInit(&stack1);   //stack是野指標,要修改stack的值(地址)
	if (ret == SUCCESS)
	{
		printf("Init Sequence Stack1 Success!\n");
	}
	else
	{
		printf("Faliure!\n");
		exit(0);
	}
	
	ret = StackInit(&stack2);//同理
	if (ret == SUCCESS)
	{
		printf("Init Sequence Stack1 Success!\n");
	}
	else
	{
		printf("Faliure!\n");
		exit(0);
	}
	
	Queue queue;   //定義一個車輛等候佇列,先到先出,進入停車場

	ret = InitQueue(&queue);//同理
	if (ret == SUCCESS)
	{
		printf("Init Success!\n");
	}
	else
	{
		printf("Init Failure!\n");
		exit(0);
	}
	
	New *new;
	ret = Allstackinit(&new);//這邊定義的是另外一個棧,它的功能是存放從停車場出來的車輛資訊
	if (ret == SUCCESS)
	{
		printf("Init Success!\n");
	}
	else
	{
		printf("Init Failure!\n");
		exit(0);
	}
	system("clear");
	printf(YELLOW"\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(L_PURPLE"\n初始化成功!即將進入系統服務。。。\n"NONE);
	printf(L_BLUE"**________**________**_______**____\n"NONE);
	printf(YELLOW"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"NONE);
	sleep(1);
	
	welcome();

	
	while(1)
	{
		menu();

		printf("請輸入功能選項:\n");
		printf("Please input:\n");

		scanf("%d", &choice);

		switch(choice)
		{
			case 1:
				push(stack1, &queue);
				break;
			case 2:
				outcar(stack1, stack2, &queue, new);
				break;
			case 3:
				seekstack(stack1);
				break;
			case 4:
				traverseNew(new, stack1);
				break;
			case 5:
				traverse(stack1);
				break;
			case 6:
				seekqueue(queue);
				break;
			case 7:
				StackClear(stack1);
				StackClear(stack1);
				StackDestroy(&stack1);
				StackDestroy(&stack2);
				printf("龍捲風摧毀停車場!\n");
				DeleteQueue(&queue);
				ClearQueue(&queue);
				printf("老闆有錢啊,這麼多車,下次還來呀! bye bye ~~\n");
				sleep(1);
				system("clear");
				float y;
				float x;
				float z;
				float f;
				for ( y = 1.5f; y > -1.5f; y -= 0.1f) 
				{
					for ( x = -1.5f; x < 1.5f; x += 0.05f)
					{
						z = x * x + y * y - 1;
						f = z * z * z - x * x * y * y * y;
						putchar(f <= 0.0f ? ".:-=+*#%@"[(int)(f * -8.0f)] : ' ');
					}
					putchar('\n');
				}
				sleep(1);
				exit(0);
		
		}
	}
	
	
	
	return 0;
}

相關推薦

Linux專案停車場實現

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

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

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

專案基於Struts框架的員工管理系統的java實現

1.匯入struts包 c3p0-0.9.1.2.jar commons-beanutils-1.8.3.jar commons-dbutils-1.6.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commo

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

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

微信程式Animation實現圖片旋轉動畫

最近小程式中有一個圖片旋轉的需求,最初是想著通過切換多張圖片達到旋轉的效果,後來發現微信小程式帶有動畫api,然後就改由image+Animation來實現。 ###首先在wxml中定義image <image class="bth_image2" mode="aspec

Tkinter專案用Python寫一個地址收藏管理工具,迅速提高你的工作效率

如何管理雜亂的電腦桌面和一大堆的瀏覽器收藏網址?我用python寫了一個工具,迅速提高工作效率。 工作了一段時間發現,電腦桌面上已經滿屏的常用軟體、常用專案資料夾的快捷方式,一大堆的常用文件,瀏覽器上收藏的工作網址更是有100+,通常想開啟一個文件、網址要尋找半

Flask速成專案Flask實現計算機資源的實時監控

很多人都說使用Python開發WEB應用非常方便,那麼對於WEB新手來說,到底有多方便呢?本文即將展示給你Python的魔法。 本文將通過一個例項:Flask實現計算機資源的實時監控,迅速帶你入門F

專案httpserver + WebFrame(網頁框架)

httpserver V3.0 第三版!!! httpserver + WebFrame(網頁框架) # coding = utf-8 ''' httpserver V3.0 第三版!!! httpserver + WebFrame(網頁框架) ''' fro

Python爬蟲練手專案爬取窮遊網酒店資訊

Python爬蟲練手小專案:爬取窮遊網酒店資訊   Python學習資料或者需要程式碼、視訊加Python學習群:960410445 前言 對於初學者而言,案例主要的是為了讓大家練手,明白其中如何這樣寫的思路,而不是拿著程式碼執行就完事了。 基本環境配置 系統

實用專案——Vue.js 實現增刪查改功能

最近學習了vue.js框架,嘗試著做了一個增刪查改功能的小專案。 今天發博來跟大家交流交流經驗。整體效果如下動態圖: 首先,我使用的是Bootstrap搭建整體框架: <!DOCTYPE html> <html> <head&g

c語言課程結束專案2048遊戲

《C語言程式設計基礎》學習完畢,完成第一個專案:2048小遊戲。 //思考:程式設計時,要先想整個框架還是先想每個函式的演算法。 //思考:每一個函式要不要傳引數(即陣列) //思考:每一個函式之間的聯絡是什麼,誰呼叫誰…這裡很容易搞得頭暈,越想越覺得複雜,便不想完成專案了。 &nb

Python專案快速開發出一個簡單的學生管理系統

本文根據實際專案中的一部分api 設計抽象出來,例項化成一個簡單小例子,暫且叫作「學生管理系統」。     這個系統主要完成下面增刪改查的功能: 包括: 學校資訊的管理 教師資訊的管理 學生資訊的管理 根據Api請求的動作:

ASP.NET Core + Vue 專案構造自己的線上 Markdown 筆記本應用

ASP.NET Core + Vue 小專案:構造自己的線上 Markdown 筆記本應用 目錄 概要 知識點 完整示例圖 程式碼與資原始檔 流程步驟   概要   基於 MVP

Linux專案-群聊系統

專案名稱:chat_room群聊系統 背景知識與主要技術: 熟悉Linux基本指令的使用(ls,cd,make,mkdir,top,basename,pwd,cp,mv,rm,touch) 熟悉linux開發環境,熟練使用vi/vim ,gcc/g++,g

專案大數的基本運算

大數運算 開發環境:Visual Studio 2015 主要技術:string,C++類 專案描述: 1.對於計算機不能進行計算的大資料進行處理,讓計算機實現大資料的讀入、輸出和基本運算; 2.使

個人專案現有12個小球和一個天平,小球中有一個重量與其它的不同,稱重幾次能將這個小球找出來

<script language="JavaScript"> //建立兩個陣列,分別存放左邊盤小球物件和右邊盤小球物件 var leftbar = new Array(); var rightbar = new Array(); //建立一個整形變數,存放當前稱重的次數

Android專案計算器

專案原始碼在文章最後。 這兩天寫了一個Android的計算器,現在整理一下思路與程式碼。 首先是功能需求分析: 1、數字我規定最長為九位,如果有小數點則加上小數點最長為十位 2、第二個引數輸入時不允許為負數,但是先得出的結果為負數,可以再進行運算(比如:1-2=-1,結果

Python 技巧如何實現作業系統相容性打包?

有一個這樣的問題:現要用 setuptools 把一個專案打包成 whl 檔案,然後 pip install 在 Windows/Linux 兩種作業系統上,但是該專案中有一些依賴庫只有 Windows 上才有(例如 pywinauto、pywingui、pywinrm),那麼問題是,如何實現打包檔案的可相容

Linux專案)————shell的實現,包含重定向、內建命令

bash原理: 通過上面bash的原理我們可以,瞭解到shell的框架與流程: 1.等待使用者輸入命令。 2.解析使用者輸入的字串。 3.建立子程序執行exec程式替換 4.父程序等待子程序退出。 迴圈執行1~4步驟,即可完成my_shell。 最簡單版本的my_shell實現:

練習用socket實現Linux和Windows之間的通信

ren argc 漏洞 markdown tex sockets acc sas -m 在日常生活中,絕大部分人使用的機器通常是windows系統,可是對於研發人員,開發、編譯等工作往往是建立在linux機器上。其實。在服務器方面,Linux、UNIX和