Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma pack(1)
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- #include <ctype.h>
- #include <time.h> //Used for the 'Random' function, which uses the computers clock//
- #include <assert.h>
- FILE *FilePointer;
- #define USED_FILE "MemberDetails.txt"
- #define PREMIUM 650 //Premium is anuually £650//
- #define STANDARD 500 //Standard is £500//
- #define JUNIOR 250 //Junior is £250//
- #define MAX_NAME_LEN 21
- #define POUND_SIGN 156
- #define WELCOME "Highbridge Leisure Centre"
- void PromptAndAddRecords();
- void MaintainRecords();
- void DisplayRecords(struct MEMBER MemberDetails);
- void Pause();
- void DisplayAllRecords(struct MEMBER MemberDetails);
- int DisplayRecordsMenu();
- void SearchMembershipType();
- int DisplayMenu();
- void SearchRecordByName();
- int MaintainRecordsMenu();
- void StatisticsMembershipType();
- void StatisticsMenu(struct MEMBER MemberDetails);
- int DisplayStatisticsMenu();
- void AnnualFeesStatistics();
- void MainMenu(struct MEMBER MemberDetails);
- void SearchByID();
- float GetValidatedFloat();
- char *GetsValidatedString(String, MinLength, MaxLength);
- int ValidateInteger(Input, Min, Max);
- void ExpiringMembers();
- struct MEMBER
- {
- char MemberID[6];
- char FirstName[MAX_NAME_LEN];
- char Surname[MAX_NAME_LEN];
- char MembershipType[9];
- int MembershipExpiryMonth;
- };
- int main()
- {
- struct MEMBER MemberDetails = {'\0','\0','\0','\0','\0',0};
- MainMenu(MemberDetails);
- }
- void MainMenu(struct MEMBER MemberDetails) //This is the main menu for the program. All main functions will return to here//
- {
- int MenuChoice = 0;
- do{
- MenuChoice = DisplayMenu();
- switch(MenuChoice)
- {
- case 1 :
- PromptAndAddRecords();
- break;
- case 2 :
- DisplayRecords(MemberDetails);
- break;
- case 3 :
- Pause();
- break;
- }
- }while(MenuChoice !=4);
- }
- int DisplayMenu() //The display of the main menu//
- {
- int MenuInput = 0;
- system("cls");
- printf(WELCOME);
- printf("\n\n1. Add a new record"
- "\n2. Display Choosen Records"
- "\n3. Exit The Program...");
- printf("\n\nPlease enter your input ");
- MenuInput = ValidateInteger(MenuInput, 1, 3);
- fflush(stdin);
- return(MenuInput);
- }
- void DisplayRecords(struct MEMBER MemberDetails)
- {
- int MenuChoice = 0;
- do{
- MenuChoice = DisplayRecordsMenu();
- switch(MenuChoice)
- {
- case 1 :
- DisplayAllRecords(MemberDetails);
- break;
- case 2 :
- SearchRecordByName();
- break;
- case 3 :
- SearchMembershipType();
- break;
- case 4 :
- StatisticsMenu(MemberDetails);
- case 5 :
- SearchByID();
- case 6 :
- ExpiringMembers();
- break;
- case 7 :
- MainMenu(MemberDetails);
- break;
- case 8 :
- Pause();
- break;
- }
- }while(MenuChoice !=5);
- }
- int DisplayRecordsMenu()
- {
- int MenuInput = 0;
- system("cls");
- printf("Display Records");
- printf("\n\n1. Display All"
- "\n2. Search By Name"
- "\n3. Display by Membership Type"
- "\n4. Statistics"
- "\n5. Search by ID"
- "\n6. Expiring Members"
- "\n7. Return to Last Menu"
- "\n8. Exit Program");
- printf("\n\nPlease enter your input ");
- MenuInput = ValidateInteger(MenuInput, 1, 8);
- return(MenuInput);
- }
- void PromptAndAddRecords() //To add a new record//
- {
- struct MEMBER MemberDetails = {'\0','\0','\0','\0',0};
- FILE *FilePointer;
- int Length;
- int Repeat = 0;
- int RandomNumber = 0;
- int MemberTypeChoice = 0;
- system("cls");
- printf("Add new record\n");
- srand (time(NULL) ); //Setting the program to gain the time of the system//
- MemberDetails.MemberID[Repeat] = rand() %26+97;
- for(Repeat = 1; Repeat < 5; Repeat++)
- {
- do
- {
- RandomNumber = rand() % 10;
- }while((RandomNumber < 0) && (RandomNumber > 9));
- MemberDetails.MemberID[Repeat] = RandomNumber + 48;
- }
- printf("-------------------------------------");
- printf("\n\nSet ID is : %s\n", MemberDetails.MemberID);
- printf("\nWhat is the first name?: \t\t");
- do
- {
- scanf("%s", MemberDetails.FirstName);
- Length = strlen(MemberDetails.FirstName);
- if(Length > MAX_NAME_LEN)
- {
- printf("\nError please enter a smaller length\n");
- }
- } while(Length > MAX_NAME_LEN);
- printf("\nWhat is the Surname?: \t\t");
- do
- {
- scanf("%s", MemberDetails.Surname);
- Length = strlen(MemberDetails.Surname);
- if(Length > MAX_NAME_LEN)
- {
- printf("\nError please enter a smaller length\n");
- }
- }while(Length > MAX_NAME_LEN);
- printf("\n1. Premium\n");
- printf("\n2. Standard\n");
- printf("\n3. Junior\n\n");
- printf("Please select choice...\n\n");
- MemberTypeChoice = ValidateInteger(MemberTypeChoice, 1, 3);
- if(MemberTypeChoice == 1)
- {
- printf(" \t\tPremium");
- }
- if(MemberTypeChoice == 2)
- {
- printf(" \t\tStandard");
- }
- if(MemberTypeChoice == 3)
- {
- printf(" \t\tJunior");
- }
- switch(MemberTypeChoice)
- {
- case 1:
- strcpy(MemberDetails.MembershipType, "Premium");
- break;
- case 2:
- strcpy(MemberDetails.MembershipType, "Standard");
- break;
- case 3:
- strcpy(MemberDetails.MembershipType, "Junior");
- break;
- }
- printf("\n\nWhat is the expiry month?\n");
- scanf(" \t\t%d", &MemberDetails.MembershipExpiryMonth);
- system("cls");
- printf("Add new record\n");
- printf("\n First Name:\t\t %s\n Surname:\t\t %s\n Customer ID: \t\t %s\n Membership:\t\t %s\n", MemberDetails.FirstName, MemberDetails.Surname, MemberDetails.MemberID, MemberDetails.MembershipType);
- if(MemberDetails.MembershipExpiryMonth == 1)
- {
- printf("Expiry Month: \t\t January");
- }
- if(MemberDetails.MembershipExpiryMonth == 2)
- {
- printf("Expiry Month: \t\t Febuary");
- }
- if(MemberDetails.MembershipExpiryMonth == 3)
- {
- printf("Expiry Month: \t\t March");
- }
- if(MemberDetails.MembershipExpiryMonth == 4)
- {
- printf("Expiry Month: \t\t April");
- }
- if(MemberDetails.MembershipExpiryMonth == 5)
- {
- printf("Expiry Month: \t\t May");
- }
- if(MemberDetails.MembershipExpiryMonth == 6)
- {
- printf("Expiry Month: \t\t June");
- }
- if(MemberDetails.MembershipExpiryMonth == 7)
- {
- printf("Expiry Month: \t\t July");
- }
- if(MemberDetails.MembershipExpiryMonth == 8)
- {
- printf("Expiry Month: \t\t August");
- }
- if(MemberDetails.MembershipExpiryMonth == 9)
- {
- printf("Expiry Month: \t\t September");
- }
- if(MemberDetails.MembershipExpiryMonth == 10)
- {
- printf("Expiry Month: \t\t October");
- }
- if(MemberDetails.MembershipExpiryMonth == 11)
- {
- printf("Expiry Month: \t\t November");
- }
- if(MemberDetails.MembershipExpiryMonth == 12)
- {
- printf("Expiry Month: \t\t December");
- }
- printf("\n\nPress any key to continue...");
- getch();
- FilePointer=fopen(USED_FILE, "a");
- fwrite(&MemberDetails, sizeof(MemberDetails), 1, FilePointer);
- fclose(FilePointer); //Closes the file//
- MainMenu(MemberDetails);
- }
- void StatisticsMembershipType()
- {
- FILE *FilePointer; //The pointer for the saved file//
- struct MEMBER MemberDetails; //The main structure of the file output//
- char Search[20]; //The text or integers that will be searched for//
- int TotRec = 0; //Total records found//
- system("cls"); //Clears screen//
- FilePointer=fopen(USED_FILE, "r"); //Reads the MemberDetails File//
- printf("****Display Statistics****\n");
- printf("Premium, Standard or Junior?\n");
- scanf("%s", &Search);
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.MembershipType, Search))==0)
- {
- printf("\n\nName: %s\n", MemberDetails.FirstName);
- printf("\nMember Surname: %s\n", MemberDetails.Surname);
- printf("\nMember ID: %s\n", MemberDetails.MemberID);
- printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
- TotRec++;
- }
- }
- }
- if(TotRec==0)
- printf("\n\n No Data Found ");
- else
- printf("\n\n===Total %d Record Found===", TotRec);
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails);
- }
- void SearchRecordByName()
- {
- FILE *FilePointer;
- struct MEMBER MemberDetails;
- char Search[20];
- char buffer[255]; //Buffer with a maximum of characters of searching//
- int TotRec=0;
- system("cls");
- FilePointer=fopen(USED_FILE, "r"); //To read the MemberDetails file//
- printf("****Display Specific Records****\n");
- printf("Enter the First Name...\n");
- scanf("%s", Search);
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.FirstName, Search))==0)
- {
- printf("\n\nName: %s\n", MemberDetails.FirstName);
- printf("\nMember Surname: %s\n", MemberDetails.Surname);
- printf("\nMember ID: %s\n", MemberDetails.MemberID);
- printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
- TotRec++;
- }
- }
- }
- if(TotRec==0)
- printf("\n\n No Data Found ");
- else
- printf("\n\n===Total %d Record Found===", TotRec);
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails);
- }
- void StatisticsMenu(struct MEMBER MemberDetails)
- {
- int MenuChoice = 0;
- do{
- MenuChoice = DisplayStatisticsMenu();
- switch(MenuChoice)
- {
- case 1 :
- StatisticsMembershipType();
- break;
- case 2 :
- AnnualFeesStatistics();
- break;
- case 3 :
- MainMenu(MemberDetails);
- break;
- case 4 :
- Pause();
- break;
- }
- }while(MenuChoice !=5);
- }
- void AnnualFeesStatistics()
- {
- FILE *FilePointer;
- struct MEMBER MemberDetails;
- char Search[20];
- int TotRec=0;
- int TotalFee;
- int Choice;
- int Premium = 0;
- int Standard = 0;
- int Junior = 0;
- system("cls");
- FilePointer=fopen(USED_FILE, "r");
- printf("****Display Total Fees****\n");
- printf("Premium, Standard or Junior?\n");
- do
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.MembershipType, "Premium")) == 0)
- {
- Premium = Premium + 1;
- }
- else if((stricmp(MemberDetails.MembershipType, "Standard")) == 0)
- {
- Standard = Standard + 1;
- }
- else if((stricmp(MemberDetails.MembershipType, "Junior")) == 0)
- {
- Junior = Junior + 1;
- }
- }
- } while(!feof(FilePointer));
- if((Premium == 0) && (Standard == 0) && (Junior == 0))
- printf("\n\n No Data Found for %s ", Search);
- else
- {
- TotalFee = (Premium * PREMIUM) + (Standard * STANDARD) + (Junior * JUNIOR);
- printf("\n(%d Members * %d Pounds)", Premium, PREMIUM);
- printf("\n(%d Members * %d Pounds)", Standard, STANDARD);
- printf("\n(%d Members * %d Pounds)", Junior, JUNIOR);
- printf("\n\n=== The Total Annual Fee is: %c%d===",POUND_SIGN, TotalFee);
- }
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails); //Go back to the main menu//
- }
- void SearchByID()
- {
- FILE *FilePointer;
- struct MEMBER MemberDetails;
- char Search[20];
- char buffer[255];
- int TotRec=0;
- system("cls");
- FilePointer=fopen(USED_FILE, "r");
- printf("****Display by ID****\n");
- printf("Enter the ID...\n\n");
- scanf("%s", &Search);
- do
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.MemberID, Search))==0)
- {
- printf("\n\nName: %s\n", MemberDetails.FirstName);
- printf("\nMember Surname: %s\n", MemberDetails.Surname);
- printf("\nMember ID: %s\n", MemberDetails.MemberID);
- printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
- TotRec++;
- }
- }
- } while(!feof(FilePointer));
- if(TotRec==0)
- printf("\n\n No Data Found ");
- else
- printf("\n\n===Total %d Record Found===", TotRec);
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails);
- }
- int DisplayStatisticsMenu()
- {
- int MenuInput = 0;
- system("cls");
- printf("Statistics");
- printf("\n\n1. Membership Type Statistics"
- "\n2. Total Annual Fees"
- "\n3. Return to Main Menu"
- "\n4. Exit the Program");
- printf("\n\nPlease enter your input ");
- MenuInput = ValidateInteger(MenuInput, 1, 4);
- return(MenuInput);
- }
- void ExpiringMembers()
- {
- FILE *FilePointer;
- struct MEMBER MemberDetails;
- char Search[20];
- char buffer[255];
- int TotRec=0;
- int Month = 0;
- FilePointer=fopen(USED_FILE, "r"); //To read the MemberDetails file//
- system("cls");
- printf("Expiring Members\n\n");
- printf("Please enter the month (1 - 12)\n");
- Month = ValidateInteger(Month, 1, 12);
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.MembershipExpiryMonth, Month))==0)
- {
- printf("\n\nName: %s\n", MemberDetails.FirstName);
- printf("\nMember Surname: %s\n", MemberDetails.Surname);
- printf("\nMember ID: %s\n", MemberDetails.MemberID);
- TotRec++;
- }
- }
- }
- if(TotRec==0)
- printf("\n\n No Data Found ");
- else
- printf("\n\n===Total %d Record Found===", TotRec);
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails);
- }
- void DisplayAllRecords(struct MEMBER MemberDetails)
- {
- int c;
- *FilePointer;
- system("cls");
- printf("DISPLAY ALL MEMBERS\n\n");
- FilePointer=fopen(USED_FILE, "r");
- printf(" Member ID First Name. Surname. MemberShip. Month.\n");
- printf("----------------------------------------------------------------------------\n\n");
- do
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- printf(" %6s ", MemberDetails.MemberID);
- printf(" %21s ", MemberDetails.FirstName);
- printf(" %21s ", MemberDetails.Surname);
- printf(" %9s ", MemberDetails.MembershipType);
- printf(" %5d \n", MemberDetails.MembershipExpiryMonth);
- }
- memset(&MemberDetails, '\0', sizeof(MemberDetails));
- } while(!feof(FilePointer));
- fclose(FilePointer);
- printf("\n\nPress anykey to return...");
- getch();
- MainMenu(MemberDetails);
- }
- void SearchMembershipType()
- {
- FILE *FilePointer;
- struct MEMBER MemberDetails;
- char Search[20];
- char buffer[255];
- int TotRec=0;
- system("cls");
- FilePointer=fopen(USED_FILE, "r");
- printf("****Display Specific Records****\n");
- printf("Enter the Membership Type...\nPremium \nStandard \nJunior\n\n");
- scanf("%s", &Search);
- while(!feof(FilePointer))
- {
- fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
- if(!feof(FilePointer))
- {
- if((stricmp(MemberDetails.MembershipType, Search))==0)
- {
- printf("\n\nName: %s\n", MemberDetails.FirstName);
- printf("\nMember Surname: %s\n", MemberDetails.Surname);
- printf("\nMember ID: %s\n", MemberDetails.MemberID);
- printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
- TotRec++;
- }
- }
- }
- if(TotRec==0)
- printf("\n\n No Data Found ");
- else
- printf("\n\n===Total %d Record Found===", TotRec);
- fclose(FilePointer);
- getch();
- MainMenu(MemberDetails);
- }
- char *GetsValidatedString(char String[], int MinLength, int MaxLength)
- {
- int Count = 0;
- char Input[260];
- do
- {
- gets(Input);
- //Set input into a limited Max and Min
- if((strlen(Input) < MinLength) || (strlen(Input) > MaxLength))
- {
- printf("Invalid input! please try again. Length: (%d - %d): ", MinLength, MaxLength);
- }
- } while ((strlen(Input) < MinLength) || (strlen(Input) > MaxLength));
- //tolower - Sets character to lower case
- for(Count = 0; Input[Count]; Count++)
- {
- Input[Count] = tolower(Input[Count]);
- }
- strcpy(String, Input);
- return(String);
- }
- int ValidateInteger(int Input, int Min, int Max)
- {
- do
- {
- scanf("%d", &Input);
- fflush(stdin);
- if((Input < Min) || (Input > Max))
- {
- printf("\n\nInvalid input, must be between %d and %d \n\n", Min, Max);
- }
- } while((Input < Min) || (Input > Max));
- return(Input);
- }
- void Pause()
- {
- system("cls");
- printf("Press any key to continue...");
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement