苏嵌项目实训 学习日志4
2018-09-06 21:50
78 查看
学习日志 姓名 : 王文杰 日期 :2018.9.6
今日学习任务:
完成”停车场”项目,实现停车场功能。
今日作业:
main.c
#include "park.h" int main() { char choice[16] = {0}; stack park_stack, leaving_stack; queue wait_queue; welcome(); init(&park_stack, &leaving_stack, &wait_queue); //chu shi hua zhan he dui lie while(1) { menu(); printf("choose function\n"); memset(choice, 0 ,8); scanf("%s",choice); switch(choice[0]) { case '1': EnterPark(&park_stack, &wait_queue); break; case '2': OutPark(&park_stack, &leaving_stack, &wait_queue); break; case '3': ShowParkInfo(&park_stack); break; case '4': ShowWaitInfo(&wait_queue); break; case '5': bye(); break; } } return 0; }
park.c
#include <stdio.h> #include "park.h" void welcome() { system("clear"); printf("\n\n\n"); printf("****************************\n"); printf("**********welcome***********\n"); printf("****************************\n"); sleep(2); } void menu() { system("clear"); printf("\n\n\n"); printf("\t\t 1.car in\n"); printf("\t\t 2.car out\n"); printf("\t\t 3.inside carinfo\n"); printf("\t\t 4.waiting carinfo\n"); printf("\t\t 5.quit system\n"); } void bye() { system("clear"); printf("\t\t\t byebye!!!\n"); exit(1); } void init(stack *s1, stack *s2, queue *q) { int ret; ret = InitStack(s1); if (FAILURE == ret) { printf("init Stack Failure!\n"); } ret = InitStack(s2); if (FAILURE == ret) { printf("init Stack Failure!\n"); } ret = InitQueue(q); if (FAILURE == ret) { printf("init Queue Failure!\n"); } } void EnterPark(stack *s, queue*q) { char id[32] = {0}; int ret; printf("key car id: \n"); scanf("%s", id); ret = push(s, id); if(ret == FAILURE) { printf("push failure!\n"); } else if (ret == FULL) { printf("parking is full,please wait.\n"); sleep(2); EnterQueue(q, id); } } void ShowParkInfo(stack *s) { if (NULL ==s) { return; } if (s->top == -1) { printf("no car!\n"); sleep(2); return; } int i; for(i = 0; i<= s->top; i++) { printf("car id: %s\n", s->CarData[i].id); printf("parking time: %d\n", (int)(time(NULL) - s->CarData[i].t)); printf("***************\n"); } printf("Press Enter Continue...\n"); getchar(); getchar(); } void ShowWaitInfo(queue *q) { if(NULL ==q) { return; } node *p = q->front->next; while(p) { printf("car id: %s\n", p->id); p = p->next; } printf("Press Enter Continue...\n"); getchar(); getchar(); } void OutPark(stack *s1, stack *s2, queue *q) { char *str; char id[32] = {0}; int i = 0; if(NULL == s1 || NULL == s2 || NULL == q) { return; } printf("key car id : \n"); scanf("%s", id); while(1) { if(!strcmp(s1->CarData[s1->top].id, id)) //che pai hao xiang tong { str = pop(s1); while(EmptyStack(s2) != SUCCESS) { str = pop(s2); push(s1, str); free(str); } if(EmptyQueue(q) != SUCCESS) { str = DelQueue(q); push(s1, str); free(str); } break; } else { str = pop(s1); push(s2, str); free(str); } if(EmptyStack(s1) == SUCCESS) { printf("car not exist!\n"); sleep(2); while(EmptyStack(s2) != SUCCESS) { str = pop(s2); push(s1, str); free(str); } break; } } }
queue.c
#include "park.h" int InitQueue(queue *q) { if (NULL == q) { return FAILURE; } node *p = (node *)malloc(sizeof(node)); if (NULL == p) { return FAILURE; } p->next = NULL; q->front = q->rear = p; return SUCCESS; } int EnterQueue(queue *q, char *id) { if(NULL == q || NULL == id) { return FAILURE; } node * p = (node *)malloc(sizeof(node)); if (NULL == p) { return FAILURE; } strcpy(p->id, id); p->next = NULL; q->rear->next = p; q->rear = p; return SUCCESS; } int EmptyQueue(queue *q) { if(NULL == q) { return FAILURE; } return (q->front == q->rear) ? SUCCESS :FAILURE; } char *DelQueue(queue *q) { if(NULL == q) { return NULL; } char *id = (char*)malloc(32); if(NULL == id) { return NULL; } node *p = q->front->next; q->front->next = p->next; strcpy(id, p->id); free(p); if(p == q->rear) { q->rear = q->front; } return id; }
stack.c
#include "park.h" int InitStack(stack *s) { if (NULL == s) { return FAILURE; } s->top = -1; return SUCCESS; } int push(stack *s, char *id) { if(NULL == s || NULL == id) { return FAILURE; } if(s->top == MAXSIZE -1 ) { return FULL; } strcpy(s->CarData[s->top + 1].id, id); s->CarData[s->top + 1].t = time(NULL); s->top++; return SUCCESS; } char *pop(stack *s) { char *id = (char *)malloc(32); if(NULL == id) { return NULL; } if(NULL == s) { return NULL; } if(s->top == -1) { return NULL; } strcpy(id, s->CarData[s->top].id); s->top--; return id; } int EmptyStack(stack *s) { if(NULL ==s) { return FAILURE; } return (s->top == -1) ?SUCCESS : FAILURE; }
park.h
#ifndef PARK_H #define PARK_H #include <time.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #define MAXSIZE 2 #define SUCCESS 10000 #define FAILURE 10001 #define FULL 10002 struct CarInfo { char id[32]; time_t t; }; typedef struct CarInfo info; struct Stack { info CarData[MAXSIZE]; int top; }; typedef struct Stack stack; struct Node { char id[32]; struct Node *next; }; typedef struct Node node; struct Queue { node *front; node *rear; }; typedef struct Queue queue; void welcome(); void menu(); void bye(); int InitQueue(queue *q); int InitStack(stack *s); void init(stack *s1, stack *s2, queue *q); int EnterQueue(queue *q, char *id); int push(stack *s, char *id); void EnterPark(stack *s, queue*q); void ShowParkInfo(stack *s); void ShowWaitInfo(queue *q); char *pop(stack *s); int EmptyStack(stack *s); char *DelQueue(queue *q); void OutPark(stack *s1, stack *s2, queue *q); #endif
今日开发中出现的问题汇总:
函数不能理解,有的时候调试会出现BUG,主要是因为代码编写容易出错。
今日开发收获:
在老师的指导和带领下,成功编写了一个能实现停车场功能的程序。
自我评价:
打代码时大小写切换容易出现失误,还要更加细心。
相关文章推荐
- spring的学习-common-logging搭配log4j配置项目日志
- 学习总结:毕业项目-项目实训开题
- 【项目学习】——C#自动生成错误日志
- 苏嵌7.11学习日志
- 苏嵌学习日志0718
- 苏嵌学习日志15 07.23
- 项目开发学习日志01
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- 苏嵌学习日志22 07.30
- java开源项目之IQQ学习记录之单例模式与log4j日志记录
- 苏嵌学习日志01 7.9
- 苏嵌学习日志7.15
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- 实训项目中的学习(1)数据库表设计原则小技巧
- 学习Coding-iOS开源项目日志(五)
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
- 苏嵌学习日志03 0711
- Cocos2d-x 3.1.1 学习日志1--安装和创建项目(入门必看)
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 苏嵌学习日志0717