Code:
#include<stdio.h>
#include<ctype.h>
#include<time.h>
#include<stdlib.h>
#include <string.h>
#define size 80
#define MAX 100
struct carPark{
char Car_No[20];
int parked;
char d[size];
char e[size];
char buf[20];
int sh; int sMin; int eh; int eM; int Duration; int Total;
int sd,sm,ed,em;
}car[100];
int input();
void display();
int timeIn(char[],int,char[]);
int timeOut();
int dateIn(char[],int,char[]);
int dateOut();
float calcAmount(int);
int CekIn();
int CekOut();
int CalculateDuration(int , int, int, int,int,int,int,int );
int sd, sm, sy, ed, em, ey;
int save[100][2];
char a;
char days, cont; //Car_no[10],
double price;
int n=0;
int main()
{
int option;
static int c = 0;
cont:
for (;;)
{
printf("CAR PARKING MANAGEMENT SYSTEM (CPMS) \n");
printf("==================================== \n");
printf("1 : In\n");
printf("2 : Out\n");
printf("0 : Exit\n");
printf("==================================== \n");
printf("Your Option : ");
scanf("%d", &option);
switch(option)
{
case 0:
{
printf("Do you really want to exit ? \n(enter 'Y' for exit & enter 'N' for Continue) : ");
cont = getchar();
scanf("%c", &cont);
if ((cont == 'y') || (cont == 'Y'))
{
return 0;
}
else if((cont == 'n') || (cont == 'N'))
{
printf("\nThe system will Continue\n\n");
goto cont;
}
}
case 1:{
if (c>=5)
{
printf("Full Parking \n\n");
}
else
{
c++;
printf("\ntotal car : %d\n\n", c);
CekIn();
}
break;
}
case 2:{
if (c<=0)
{
printf("No car parking here \n\n");
}
else{
printf("total car : %d\n\n", c);
CekOut();
c--;
}
break;
}
default:
{
printf("wrong Selection ");
break;
}
}
system("PAUSE");
printf("\n");
}
}
int CekIn()
{
//do{
printf("Enter Your Car Number : ");
scanf("%s", car[n].Car_No);
//printf("Days : ");
//scanf("%s", &days);
printf("\nTime Of Parking in HH.MM format :");
scanf("%d.%d", &car[n].sh,&car[n].sMin);
printf("\n\t==================================== \n");
printf("\n\tCAR PARKING MANAGEMENT SYSTEM (CPMS) \n");
printf("\n\t==================================== \n");
printf("\n\tCar Number : %s", car[n].Car_No);
timeIn(car[n].d,size, car[n].e);
printf("\n\tDate : %s",car[n].e);
printf("\n\tDay = %s", car[n].d);
printf("\n\tTime Of Entry : ");
printf("%2d.%2d",car[n].sh,car[n].sMin);
//timeIn();
printf("\n\tThank You & Welcome to the JUNGLE\n\n");
car[n].parked=1;
n++;
//}while(n<100);{
//printf("Sorry, parking lot is full\n");
//}
return 0;
}
int CekOut()
{
char temp[20];
int i, j;
int found=0;
printf("Enter Your Car Number : ");
//Car_no = getchar();
scanf("%s", temp);
for(i=0;i<n;i++)
if(strcmp(car[i].Car_No,temp)==0)
{
found=1;
j=0;
}
if(found==1){
printf("\nTime Of Exit in HH.MM format :");
scanf("%d.%d", &car[i].eh,&car[i].eM);
car[n].parked=0;
printf("\n\t==================================== \n");
printf("\n\tCAR PARKING MANAGEMENT SYSTEM (CPMS) \n");
printf("\n\t==================================== \n");
printf("\n\tCar Number : %s", temp);
printf("\n\tDay = %s", car[j].d);
printf("\n\tDate Of Entry : %s", car[j].e);
timeIn(car[i].d,size, car[i].e);
printf("\n\tDate Of Exit : %s", car[i].e);
printf("\n\tTime Of Entry : ");
printf("%d.%d",car[j].sh,car[j].sMin);
printf("\n\tTime Of Exit : ");
printf("%d.%d",car[i].eh, car[i].eM);
CalculateDuration(car[j].sh, car[j].sMin, car[i].eh, car[i].eM,car[j].sd, car[j].sm, car[i].ed, car[i].em);
printf("\n\tThank You & Welcome to the JUNGLE\n\n");
//i++;
}
else
{
printf("Sorry Palte No. Not Found..\n");
}
return 0;
}
int CalculateDuration(int HourIn, int MinIn, int HourOut, int MinOut,int dateIn,int monthIn, int dateOut, int monthOut)
{
int DurationTime, DH, DM;
int TimeIn = (HourIn*60) + MinIn;
int TimeOut = (HourOut*60) + MinOut;
if(dateIn == dateOut && monthIn == monthOut)
{
if ( HourIn>>HourOut || (HourIn==HourOut && MinIn >= MinOut))
{
DurationTime = (TimeOut+1440) - TimeIn;
DH = DurationTime/60;
DM = DurationTime%60;
}
else
{
DurationTime = TimeOut - TimeIn;
DH = DurationTime/60;
DM = DurationTime%60;
}
}
else if(dateOut>dateIn && monthIn == monthOut)
{
int diff = dateOut - dateIn;
if ( HourIn>>HourOut || (HourIn==HourOut && MinIn >= MinOut))
{
DurationTime = (TimeOut+1440) - TimeIn;
DH = DurationTime/60;
DM = DurationTime%60;
}
else
{
DurationTime = (TimeOut - TimeIn) +(diff*1440);
DH = DurationTime/60;
DM = DurationTime%60;
}
}
printf("\n\tParking Time : %d hour %d minutes" , DH, DM);
calcAmount(DurationTime);
return DH,DM;
}
int timeIn(char *day, int SIZE, char *t)
{
time_t nowtime;
struct tm *ptr_time;
day[SIZE];
t[SIZE];
time(&nowtime); //Get the current time
ptr_time = localtime(&nowtime); //localtime returns a pointer to a tm structure
strftime(day, SIZE, "%a ", ptr_time); //Convert time to specific string
strftime(t, SIZE, "%d/%m/%Y", ptr_time); //Convert time to specific string
return 0;
}
int timeOut()
{
time_t nowtime;
struct tm *ptr_time;
char buffer[80];
time(&nowtime); //Get the current time
ptr_time = localtime(&nowtime); //localtime returns a pointer to a tm structure
strftime(buffer, 80, "%a %d/%m/%Y", ptr_time); //Convert time to specific string
printf("%s\n", buffer);
return 0;
}
float calcAmount(int duration)
{
double amount;
if (duration<=30)
{
amount = 0.20;
}
else if(duration<=60)
{
amount = 0.20 + 0.50;
}
else if(duration<1440)
{
double a = 1.6 * (duration/60);
amount = 0.20 + 0.50 + a;
}
else if(duration >=1440)
{
amount = 50.00*(duration/1440);
}
printf("\n\tTotal Amount : RM%.2f" , amount);
return amount;
}