Browse Source

Implementation of to_unsignedInteger()

remotes/origin/development
fdai7057 2 years ago
parent
commit
34007afda0
  1. 14
      src/CustomerProperties.h
  2. 97
      src/LoginCustomer.c
  3. 10
      src/LoginCustomer.h
  4. 11
      src/stringManipulation.c
  5. 2
      src/stringManipulation.h

14
src/CustomerProperties.h

@ -1,14 +0,0 @@
typedef struct Customer{
<<<<<<< HEAD
<<<<<<< HEAD
int ID;
char *forename,*surname,*password;
=======
char *ID, *forename, *surname, *password;
>>>>>>> 3e7a7d3 (Implementation of functions LoginAsCustomer() and Login())
=======
int ID;
char *forename,*surname,*password;
>>>>>>> 4d810f5640d89a86c1f2feef3ab19118518ad49f
float balance;
}customer_t;

97
src/LoginCustomer.c

@ -1,97 +0,0 @@
#include "LoginCustomer.h"
bool checkLogin(bool loginSuccessful)
{
return (loginSuccessful) ? true : false;
}
void collectCustomerDataForLogin(int attempts)
{
customer_t c;
c.ID = calloc(15+1,sizeof(char));
c.password = calloc(15+1, sizeof(char));
char digitCharacterFromUser, passwordCharacterFromUser;
int IDLengthCounter = 0, passwordLengthCounter = 0;
const int IDMaxLength = 16, passwordMaxLength = 16;
printf("Enter ID:\n");
while(((digitCharacterFromUser=getchar()) != '\n')&&IDLengthCounter<IDMaxLength){
if(digitCharacterFromUser>='0'&&digitCharacterFromUser<='9'){
*(c.ID+IDLengthCounter) = digitCharacterFromUser;
}
else{
printf("Character entered is not a digit. Aborting.\n");
exit(-1);
}
++IDLengthCounter;
}
*(c.ID+IDLengthCounter) = '\0';
if(IDLengthCounter>=IDMaxLength){
printf("ID entered is too long. Aborting.\n");
exit(-1);
}
printf("Enter password:\n");
while((passwordCharacterFromUser=getchar())!='\n'&&passwordLengthCounter<passwordMaxLength){
*(c.password+passwordLengthCounter) = passwordCharacterFromUser;
++passwordLengthCounter;
}
*(c.password+passwordLengthCounter) = '\0';
if(passwordLengthCounter>=passwordMaxLength){
printf("Password entered is too long. Aborting.\n");
exit(-1);
}
customer_t *ptr = &c;
bool loginSuccessful = loginCustomer(ptr);
if(loginSuccessful ) {
printf("Welcome to the menu!\n");
//call menu()
}else if(!loginSuccessful && attempts < MAX_LOGIN_ATTEMPTS){
printf("You have %d attempts left.\n", MAX_LOGIN_ATTEMPTS - attempts);
collectCustomerDataForLogin(++attempts);
}else{
printf("Maximum number of attempts reached. Program terminates.\n");
exit(-1);
//call error()
}
}
bool loginCustomer(customer_t *c)
{
bool foundCustomerEntryInFile = false;
char *searchForThisString = generateCheckString(c->ID,c->password);
char *lineFromCustomerFile = calloc(40,sizeof(char));
FILE *readCustomerFile = fopen("CustomerData.txt", "r");
if(readCustomerFile==NULL){
printf("Could not find file. Aborting.\n");
exit(-1);
//call error()
}
while((fscanf(readCustomerFile,"%s",lineFromCustomerFile)!=EOF)){
if(strcmp(searchForThisString,lineFromCustomerFile)==0){
foundCustomerEntryInFile = true;
break;
}
}
if(checkLogin(foundCustomerEntryInFile)){
printf("Login successful.\n");
return foundCustomerEntryInFile;
}else{
printf("Login not successful.\n");
}
fclose(readCustomerFile);
return foundCustomerEntryInFile;
}
char *generateCheckString(char *ID, char *password){
int checkStringLength = strlen(ID) + 1 + strlen(password) + 1;
char *checkString = calloc(checkStringLength, sizeof(char));
checkString = strcat(ID,"=");
checkString = strcat(checkString,password);
*(checkString+checkStringLength) = '\0';
return checkString;
}

10
src/LoginCustomer.h

@ -1,10 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include "CustomerProperties.h"
#define MAX_LOGIN_ATTEMPTS 3
char *generateCheckString(char *, char*);
bool checkLogin(bool);
void collectCustomerDataForLogin(int);
bool loginCustomer(customer_t *);

11
src/stringManipulation.c

@ -54,6 +54,17 @@ char *to_string(int number)
}
}
unsigned int to_unsignedInteger(char *ID)
{
unsigned int result = 0;
int IDLength = strlen(ID);
for(int i=0, j = IDLength - 1;i<IDLength;++i,--j){
result += (*(ID+j) - '0') * pow(10,i);
}
return result;
}
char *generateCheckString(int customerID, char *customerPassword)
{
char *IDString = to_string(customerID);

2
src/stringManipulation.h

@ -1,6 +1,8 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
char *stringConcatenation(char *, char *);
char *to_string(int);
char *generateCheckString(int, char *);
unsigned int to_unsignedInteger(char *);
Loading…
Cancel
Save