Code:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include "LaBOX_DIO.h"
int parkeervak;
char keuze;
char identificatie[6];
char *msg="******Welkom bij de garage van TI-groep 1 ****\n";
char *msg0="******Welkom bij de garage van TI-groep 1 ****\n";
char *msg1="De garage is op dit moment in gebruik";
char *msg2="******een ogenblik geduld AUB.*******";
char *msg3="***Sorry onze parkeerplaats is helaas vol***\n";
char *msg4="U kunt wachten of het ergens anders proberen";
char *msg5="**** keuze menu *****";
char *msg6="A: Wilt U uw auto parkeren?";
char *msg7="B: Wilt U uw auto ophalen?";
char *msg8="S. Stoppen.";
char *msg9="Maak een keuze:";
char *msg10="Dit is foutieve keuze, kies opnieuw";
char *msg11="***Een ogenblik geduld AUB uw auto wordt opgehaald***\n";
char *msg12="***Een ogenblik geduld AUB uw auto wordt geparkeerd***\n";
char *msg13="Uw auto staat klaar voor vertrek:\n";
char *msg14="\n\n\n\n***** Voer uw ophaalcode in: *****\n";
char *msg15="\n\n\n\n***** Uw auto is geparkeerd. *****\n";
char *msg16="Wij proberen een parkeerplaats te reserveren\n";
char *msg17="Het is helaas niet gelukt een parkeerplaats te reserveren\n***** probeert U het nog eens *****\n";
char *msg18="***Error: kan de betreffende file niet openen**";
char *msg90="***nog een prettige dag verder:**";
char *msg99="***testmessage om werking te controleren:**";
int controleerbusybit() /* controle van busybit 7 */
{
int p=0;
//LaBOX_Open();
//LaBOX_DigitalGetBit(7,&p);
//LaBOX_Close();
return p;
}
// aanmaken en parkeervak functies staan hieronder
struct parkeervak {
unsigned char Vak;
char *Auto_Id;
struct parkeervak* VolgendePtr;
};
struct parkeervak* NieuwParkeerVak(void)
{
void* ptr = malloc(sizeof(parkeervak)); // voeg nieuw item toe
return ((struct parkeervak*) ptr); // return pointer naar nieuwe item
};
struct parkeervak* MaakParkeerVakken(int AantalVakken)
{
struct parkeervak* NieuwePtr;
struct parkeervak* StartPtr; // pointer naar 1ste item in de lijst
int i;
StartPtr = NieuwParkeerVak(); // alloceer item no 1
NieuwePtr = StartPtr;
for (i=0;i<AantalVakken-1;i++) // nog de resterende parkeervakken
{
NieuwePtr->Vak = i;
NieuwePtr->Auto_Id = "leeg";
// alloceer volgend parkeervak
NieuwePtr->VolgendePtr = NieuwParkeerVak();
NieuwePtr = NieuwePtr->VolgendePtr;
};
NieuwePtr->Vak = i;
NieuwePtr->Auto_Id = "leeg";
NieuwePtr->VolgendePtr = NULL; // einde van de lijst
return (StartPtr);
};
void AlleParkeerVakken (struct parkeervak* StartPtr)
{ // begin aan de kop van de lijst
struct parkeervak* HuidigePtr = StartPtr;
while (HuidigePtr != NULL) {
printf("%d %s\n",HuidigePtr->Vak, HuidigePtr->Auto_Id);
HuidigePtr = HuidigePtr->VolgendePtr;
}
};
struct parkeervak* ZoekParkeerVak (struct parkeervak* StartPtr, int ZoekWaarde)
{ // begin aan de kop van de lijst
struct parkeervak* HuidigePtr = StartPtr;
while (HuidigePtr != NULL && HuidigePtr->Vak != ZoekWaarde) {
HuidigePtr = HuidigePtr->VolgendePtr;
}
if (HuidigePtr->Vak == ZoekWaarde)
return (HuidigePtr);
else
return (NULL);
};
struct parkeervak* ZoekAuto (struct parkeervak* StartPtr, char* ZoekWaarde)
{ // begin aan de kop van de lijst
struct parkeervak* HuidigePtr = StartPtr;
while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) {
HuidigePtr = HuidigePtr->VolgendePtr;
}
printf("%s",HuidigePtr->Auto_Id);
//if (HuidigePtr->Auto_Id == ZoekWaarde)
if( !strcmp(HuidigePtr->Auto_Id, ZoekWaarde))
return (HuidigePtr);
else
return (NULL);
};
struct parkeervak* controleophaalcode (struct parkeervak* StartPtr, char* ZoekWaarde)
{ // begin aan de kop van de lijst
struct parkeervak* HuidigePtr = StartPtr;
while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) {
HuidigePtr = HuidigePtr->VolgendePtr;
}
if (HuidigePtr->Auto_Id == ZoekWaarde)
return (HuidigePtr);
else
return (NULL);
};
struct parkeervak* controlevrijeplaats (struct parkeervak* StartPtr, char* ZoekWaarde)
{ // begin aan de kop van de lijst
struct parkeervak* HuidigePtr = StartPtr;
while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) {
HuidigePtr = HuidigePtr->VolgendePtr;
}
if (HuidigePtr->Auto_Id == ZoekWaarde)
return (HuidigePtr);
else
return (NULL);
};
//parkeer functies staan hieronder
char reserveerparkeerplaats()
{
printf ("%s\n","voer uw kenteken in!");
scanf("%s",&identificatie);
return (identificatie);
}
void setparkeerbit()
{
}
//ophaalfuncties staan hieronder
char ophaalcodeinvoer()
{
char c[6];
printf ("%s\n","voer uw kenteken in!");
scanf("%s",c);
return c;
}
char setophaalbit()
{
}
char geefparkeerplaatsvrij()
{
}
int main()
{
unsigned int a=0;
unsigned int b=0;
int i=0;
unsigned int x=0;
char keuze;
char c[6];
struct parkeervak* StartPtr; // pointer naar 1ste item in de lijst
struct parkeervak* Ptr;
printf("programma start\n\n");
StartPtr = MaakParkeerVakken(6); // initialiseer de lijst met 6 items
AlleParkeerVakken(StartPtr); // Druk alles af
system("PAUSE"); // alleen voor eigen controle tijdens programmeren
// menu
system("Cls");
do
{
if (controleerbusybit() == 1) /* controle garage bezig zo ja blijven controleren tot garage vrij */
{
printf ("%s\n\n\n\n",msg3);
printf ("%s","******een ogenblik geduld AUB.*******");
Sleep (2000);
}
else /* als garage niet bezig toon hoofdmenu */
{system("cls");
printf("%s\n\n\n\n",msg);
printf("%s\n\n",msg5);
printf("%s\n\n",msg6);
printf("%s\n\n",msg7);
printf("%s\n\n",msg8);
printf("%s\n\n",msg9);
msg=msg10;
scanf("%c",&keuze);
switch (keuze)
{
case 'A': /* Parkeergedeelte van het menu */
{
Ptr = controlevrijeplaats(StartPtr,"leeg"); // controle of er een vrije plaats is
if (Ptr != NULL) // gevonden?
{
printf("Vak %d %s gevonden\n",Ptr->Vak,Ptr->Auto_Id);
printf("Pointer %d is nu huidig\n",Ptr);
Sleep (2000);
reserveerparkeerplaats(); // reserveren van de gevonden parkeerplaats
Ptr->Auto_Id = identificatie;
printf("Pointer %d is nu huidig\n",Ptr);
AlleParkeerVakken(StartPtr); // Druk alles af ter controle alleen tijdens programmeren
printf("Pointer %d is nu huidig",Ptr);
system("Pause");
printf("Leeg vak %s gevonden\n %d",Ptr->Auto_Id, Ptr->Vak); // alleen voor eigen controle tijdens programmeren
printf("Leeg vak %d gevonden\n",Ptr->Vak); // alleen voor eigen controle tijdens programmeren
Sleep (2000);
system("Pause"); // alleen voor eigen controle tijdens programmeren
AlleParkeerVakken(StartPtr); // alleen voor eigen controle tijdens programmeren
break;
setparkeerbit(); // zetten van de parkeerbit voor de gevonden plaats
do
{
if (controleerbusybit()== 0)
{
system("cls"); // melding bezig met parkeren
Sleep(500);
printf("%s\n\n\n\n\n\n\n",msg12);
Sleep(3000);
}
else
{
system("cls"); //melding auto geparkeerd
printf("%s\n\n\n\n\n\n\n",msg15);
printf("%s\n\n\n\n\n\n\n",msg90);
Sleep(3000);
}
}
while (controleerbusybit()!= 1); // controle of de garage nog bezig is met parkeren
break;
}
else
{
system("cls");
printf("%s\n\n\n\n\n\n\n",msg3);
break;
}
}
case 'B': /* Ophaalgedeelte van het menu */
ophaalcodeinvoer(identificatie); //
Ptr = ZoekAuto(StartPtr,"vol"); // controle of de auto in de parkeerplaats staat
if (Ptr != NULL) // gevonden?
{
printf("auto met code %s in vak %d gevonden\n",Ptr->Auto_Id, Ptr->Vak);
Sleep (2000);
geefparkeerplaatsvrij();
Ptr->Auto_Id = geefparkeerplaatsvrij;
system("cls");
printf("%s\n\n\n\n\n\n\n",msg3);
setophaalbit();
do
{
if (controleerbusybit()== 0)
{
system("cls"); // melding bezig met parkeren
Sleep(500);
printf("%s\n\n\n\n\n\n\n",msg12);
Sleep(3000);
}
else
{
system("cls"); //melding auto geparkeerd
printf("%s\n\n\n\n\n\n\n",msg15);
printf("%s\n\n\n\n\n\n\n",msg90);
Sleep(3000);
}
}
while (controleerbusybit()!= 1); // controle of de garage nog bezig is met parkeren
break;
}
else
{
printf("Niets gevonden\n");
Sleep(3000);
break;
}
case 'S': /* Einde van het programma */
return;
}
}
}
while(1);
}