diff --git a/generator.c b/generator.c index 9d68aae..7ed729c 100644 --- a/generator.c +++ b/generator.c @@ -1,13 +1,4 @@ -/** - * File: generator.c - * Author: Risto Heinsar - * Created: 12.03.2015 - * Modified 14.03.2023 - * - * Description: This is a random data generator - * - * Note: This is a starter code for a lab task - */ + #include <stdbool.h> #include <stdio.h> #include <stdlib.h> @@ -44,43 +35,62 @@ int main(void) - users data[SEATS]; + users data[SEATS] = {0}; - int i; + int i, j; char seat[4]; char month[STR_MAX]; char date[DOB_MAX]; - char email[STR_MAX]; + char mail[STR_MAX]; + char docNum[DOC_MAX]; + char letters[26] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; + for (i = 0; i < nameCount; i++) { - strcpy((data + i)->lName, lastNames[GetRand(0,firstNamePoolSize - 1)]); - strcpy((data + i)->fName, firstNames[GetRand(0,lastNamePoolSize - 1)]); - + strcpy((data + i)->lName, lastNames[GetRand(0,lastNamePoolSize - 1)]); + strcpy((data + i)->fName, firstNames[GetRand(0,firstNamePoolSize - 1)]); + printf("TEST: %s\n", (data + i)->fName); do //leitakse random istekoht, kuni funktsioon tagastab et { //kellegil pole seda istkohta otsitakse uus. strcpy(seat,seats[GetRand(0,seatPoolSize - 1)]); - }while (GetUniqueSeat(data, i, *seats, SEATS, seat) > 0); + }while (GetUniqueSeat(data, i, seat) > 0); strcpy((data + i)->seat, seat); //eeldusel et eelmine tsükkel //lõpetab kopeeritakse istekoht struktuurimassiivi strcpy(month, months[GetRand(0,monthPoolSize - 1)]); - GenerateDateOfBirth(month, date); - strcpy((data + i)->dateOfBirth , date); - + GenerateDateOfBirth(month, date); //funktsioonis pannakse numbrid + strcpy((data + i)->dateOfBirth , date);//ja kuu kokku et saada + //formaadis sünnikuupäev strcpy((data + i)->residency, residencies[GetRand(0,residencyPoolSize - 1)]); - (data + i)->checkedIn = false; + (data + i)->checkedIn = false; //default kõigile - email[0] = (data + i)->fName[0]; - email[strlen(email)] = '.'; - strcat(email,(data + i)->lName); - strcat(email, emails[GetRand(0,emailPoolSize - 1)]); - email(strlen(email)) = '\0'; - printf("%s\n", email); + memset(mail, 0, sizeof(mail)); //tühjendab sõne enne uue meili loomist + + mail[0] = (data+i)->fName[0]; + mail[strlen(mail)] = '.'; //emaili loomine, null terminaatoreid on + mail[strlen(mail)] = '\0';//palju et tagada strcati funktsionaalsus + strcat(mail,(data+i)->lName); + mail[strlen(mail)] = '\0'; + strcat(mail, emails[GetRand(0, emailPoolSize - 1)]); + mail[strlen(mail)] = '\0'; + printf("%s\n", mail); + strcpy((data+i)->email, mail); - strcpy(email,""); + for(j = 0; j < 2; j++) + { + docNum[j] = letters[GetRand(0,23)]; + } + for(j = 2; j < 9; j++) //dokumendi numbri genereerimine + { + docNum[j] = '0' + GetRand(0,9) % 10; + } + docNum[9] = '\0'; + strcpy((data+i)->documentNum, docNum); + + (data + i)->luggageClass = GetRand(0,3); } @@ -90,6 +100,7 @@ int main(void) return EXIT_SUCCESS; } + void GenerateDateOfBirth(char *month, char *dateOB) { @@ -100,10 +111,12 @@ void GenerateDateOfBirth(char *month, char *dateOB) snprintf(temp, 5, "%d", date); strcat(dob, temp); + dob[strlen(dob)] = '\0'; dob[strlen(dob)] = '.'; strcat(dob, month); + dob[strlen(dob)] = '\0'; dob[strlen(dob)] = '.'; snprintf(temp, 5, "%d", year); @@ -115,7 +128,7 @@ void GenerateDateOfBirth(char *month, char *dateOB) } -int GetUniqueSeat(users *data, int len, const char *seats, int size, char *seat) +int GetUniqueSeat(users *data, int len, char *seat) { int match = 0; //Otsib kas on kellegil juba sama istekoht @@ -147,9 +160,10 @@ void GenNames(users *data, int num) for (i = 0; i < num; i++) { - fprintf(fp,"%s %s %s %s %s\n",(data + i)->fName, - (data + i)->lName,(data + i)->dateOfBirth, (data + i)->residency, - (data + i)->seat); + fprintf(fp,"%s %s %s %s %s %s %s %d\n",(data + i)->documentNum, + (data + i)->fName,(data + i)->lName,(data + i)->dateOfBirth, + (data + i)->email,(data + i)->residency, + (data + i)->seat, (data + i)->luggageClass); } fclose(fp);