Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.68 KB | None | 0 0
  1. #pragma pack(1)
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6. #include <string.h>
  7. #include <ctype.h>
  8. #include <time.h> //Used for the 'Random' function, which uses the computers clock//
  9. #include <assert.h>
  10.  
  11. FILE *FilePointer;
  12. #define USED_FILE "MemberDetails.txt"
  13. #define PREMIUM 650 //Premium is anuually £650//
  14. #define STANDARD 500 //Standard is £500//
  15. #define JUNIOR 250 //Junior is £250//
  16. #define MAX_NAME_LEN 21
  17. #define POUND_SIGN 156
  18.  
  19. #define WELCOME "Highbridge Leisure Centre"
  20.  
  21. void PromptAndAddRecords();
  22. void MaintainRecords();
  23. void DisplayRecords(struct MEMBER MemberDetails);
  24. void Pause();
  25. void DisplayAllRecords(struct MEMBER MemberDetails);
  26. int DisplayRecordsMenu();
  27. void SearchMembershipType();
  28. int DisplayMenu();
  29. void SearchRecordByName();
  30. int MaintainRecordsMenu();
  31. void StatisticsMembershipType();
  32. void StatisticsMenu(struct MEMBER MemberDetails);
  33. int DisplayStatisticsMenu();
  34. void AnnualFeesStatistics();
  35. void MainMenu(struct MEMBER MemberDetails);
  36. void SearchByID();
  37. float GetValidatedFloat();
  38. char *GetsValidatedString(String, MinLength, MaxLength);
  39. int ValidateInteger(Input, Min, Max);
  40. void ExpiringMembers();
  41.  
  42.  
  43. struct MEMBER
  44. {
  45. char MemberID[6];
  46. char FirstName[MAX_NAME_LEN];
  47. char Surname[MAX_NAME_LEN];
  48. char MembershipType[9];
  49. int MembershipExpiryMonth;
  50. };
  51.  
  52. int main()
  53. {
  54. struct MEMBER MemberDetails = {'\0','\0','\0','\0','\0',0};
  55. MainMenu(MemberDetails);
  56. }
  57.  
  58. void MainMenu(struct MEMBER MemberDetails) //This is the main menu for the program. All main functions will return to here//
  59. {
  60. int MenuChoice = 0;
  61. do{
  62. MenuChoice = DisplayMenu();
  63. switch(MenuChoice)
  64. {
  65. case 1 :
  66. PromptAndAddRecords();
  67. break;
  68. case 2 :
  69. DisplayRecords(MemberDetails);
  70. break;
  71. case 3 :
  72. Pause();
  73. break;
  74. }
  75. }while(MenuChoice !=4);
  76. }
  77.  
  78.  
  79. int DisplayMenu() //The display of the main menu//
  80. {
  81. int MenuInput = 0;
  82.  
  83. system("cls");
  84. printf(WELCOME);
  85. printf("\n\n1. Add a new record"
  86. "\n2. Display Choosen Records"
  87. "\n3. Exit The Program...");
  88. printf("\n\nPlease enter your input ");
  89.  
  90. MenuInput = ValidateInteger(MenuInput, 1, 3);
  91.  
  92. fflush(stdin);
  93. return(MenuInput);
  94.  
  95. }
  96.  
  97.  
  98. void DisplayRecords(struct MEMBER MemberDetails)
  99. {
  100. int MenuChoice = 0;
  101.  
  102. do{
  103. MenuChoice = DisplayRecordsMenu();
  104. switch(MenuChoice)
  105. {
  106. case 1 :
  107. DisplayAllRecords(MemberDetails);
  108. break;
  109. case 2 :
  110. SearchRecordByName();
  111. break;
  112. case 3 :
  113. SearchMembershipType();
  114. break;
  115. case 4 :
  116. StatisticsMenu(MemberDetails);
  117. case 5 :
  118. SearchByID();
  119. case 6 :
  120. ExpiringMembers();
  121. break;
  122. case 7 :
  123. MainMenu(MemberDetails);
  124. break;
  125. case 8 :
  126. Pause();
  127. break;
  128. }
  129. }while(MenuChoice !=5);
  130. }
  131.  
  132. int DisplayRecordsMenu()
  133. {
  134. int MenuInput = 0;
  135.  
  136. system("cls");
  137. printf("Display Records");
  138. printf("\n\n1. Display All"
  139. "\n2. Search By Name"
  140. "\n3. Display by Membership Type"
  141. "\n4. Statistics"
  142. "\n5. Search by ID"
  143. "\n6. Expiring Members"
  144. "\n7. Return to Last Menu"
  145. "\n8. Exit Program");
  146. printf("\n\nPlease enter your input ");
  147.  
  148. MenuInput = ValidateInteger(MenuInput, 1, 8);
  149.  
  150. return(MenuInput);
  151. }
  152.  
  153.  
  154. void PromptAndAddRecords() //To add a new record//
  155. {
  156. struct MEMBER MemberDetails = {'\0','\0','\0','\0',0};
  157. FILE *FilePointer;
  158. int Length;
  159. int Repeat = 0;
  160. int RandomNumber = 0;
  161. int MemberTypeChoice = 0;
  162.  
  163.  
  164. system("cls");
  165. printf("Add new record\n");
  166. srand (time(NULL) ); //Setting the program to gain the time of the system//
  167.  
  168. MemberDetails.MemberID[Repeat] = rand() %26+97;
  169.  
  170. for(Repeat = 1; Repeat < 5; Repeat++)
  171. {
  172. do
  173. {
  174. RandomNumber = rand() % 10;
  175. }while((RandomNumber < 0) && (RandomNumber > 9));
  176.  
  177. MemberDetails.MemberID[Repeat] = RandomNumber + 48;
  178. }
  179.  
  180. printf("-------------------------------------");
  181. printf("\n\nSet ID is : %s\n", MemberDetails.MemberID);
  182. printf("\nWhat is the first name?: \t\t");
  183. do
  184. {
  185. scanf("%s", MemberDetails.FirstName);
  186. Length = strlen(MemberDetails.FirstName);
  187. if(Length > MAX_NAME_LEN)
  188. {
  189. printf("\nError please enter a smaller length\n");
  190. }
  191. } while(Length > MAX_NAME_LEN);
  192.  
  193. printf("\nWhat is the Surname?: \t\t");
  194. do
  195. {
  196. scanf("%s", MemberDetails.Surname);
  197. Length = strlen(MemberDetails.Surname);
  198. if(Length > MAX_NAME_LEN)
  199. {
  200. printf("\nError please enter a smaller length\n");
  201. }
  202. }while(Length > MAX_NAME_LEN);
  203.  
  204. printf("\n1. Premium\n");
  205. printf("\n2. Standard\n");
  206. printf("\n3. Junior\n\n");
  207. printf("Please select choice...\n\n");
  208. MemberTypeChoice = ValidateInteger(MemberTypeChoice, 1, 3);
  209. if(MemberTypeChoice == 1)
  210. {
  211. printf(" \t\tPremium");
  212.  
  213. }
  214. if(MemberTypeChoice == 2)
  215. {
  216. printf(" \t\tStandard");
  217.  
  218. }
  219. if(MemberTypeChoice == 3)
  220. {
  221. printf(" \t\tJunior");
  222.  
  223. }
  224.  
  225. switch(MemberTypeChoice)
  226. {
  227. case 1:
  228. strcpy(MemberDetails.MembershipType, "Premium");
  229. break;
  230. case 2:
  231. strcpy(MemberDetails.MembershipType, "Standard");
  232. break;
  233. case 3:
  234. strcpy(MemberDetails.MembershipType, "Junior");
  235. break;
  236. }
  237.  
  238. printf("\n\nWhat is the expiry month?\n");
  239.  
  240. scanf(" \t\t%d", &MemberDetails.MembershipExpiryMonth);
  241.  
  242. system("cls");
  243. printf("Add new record\n");
  244. 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);
  245.  
  246. if(MemberDetails.MembershipExpiryMonth == 1)
  247. {
  248. printf("Expiry Month: \t\t January");
  249. }
  250. if(MemberDetails.MembershipExpiryMonth == 2)
  251. {
  252. printf("Expiry Month: \t\t Febuary");
  253. }
  254. if(MemberDetails.MembershipExpiryMonth == 3)
  255. {
  256. printf("Expiry Month: \t\t March");
  257. }
  258. if(MemberDetails.MembershipExpiryMonth == 4)
  259. {
  260. printf("Expiry Month: \t\t April");
  261. }
  262. if(MemberDetails.MembershipExpiryMonth == 5)
  263. {
  264. printf("Expiry Month: \t\t May");
  265. }
  266. if(MemberDetails.MembershipExpiryMonth == 6)
  267. {
  268. printf("Expiry Month: \t\t June");
  269. }
  270. if(MemberDetails.MembershipExpiryMonth == 7)
  271. {
  272. printf("Expiry Month: \t\t July");
  273. }
  274. if(MemberDetails.MembershipExpiryMonth == 8)
  275. {
  276. printf("Expiry Month: \t\t August");
  277. }
  278. if(MemberDetails.MembershipExpiryMonth == 9)
  279. {
  280. printf("Expiry Month: \t\t September");
  281. }
  282. if(MemberDetails.MembershipExpiryMonth == 10)
  283. {
  284. printf("Expiry Month: \t\t October");
  285. }
  286. if(MemberDetails.MembershipExpiryMonth == 11)
  287. {
  288. printf("Expiry Month: \t\t November");
  289. }
  290. if(MemberDetails.MembershipExpiryMonth == 12)
  291. {
  292. printf("Expiry Month: \t\t December");
  293. }
  294.  
  295.  
  296.  
  297. printf("\n\nPress any key to continue...");
  298. getch();
  299.  
  300. FilePointer=fopen(USED_FILE, "a");
  301. fwrite(&MemberDetails, sizeof(MemberDetails), 1, FilePointer);
  302.  
  303. fclose(FilePointer); //Closes the file//
  304. MainMenu(MemberDetails);
  305. }
  306.  
  307. void StatisticsMembershipType()
  308. {
  309. FILE *FilePointer; //The pointer for the saved file//
  310.  
  311. struct MEMBER MemberDetails; //The main structure of the file output//
  312. char Search[20]; //The text or integers that will be searched for//
  313. int TotRec = 0; //Total records found//
  314.  
  315. system("cls"); //Clears screen//
  316. FilePointer=fopen(USED_FILE, "r"); //Reads the MemberDetails File//
  317. printf("****Display Statistics****\n");
  318. printf("Premium, Standard or Junior?\n");
  319. scanf("%s", &Search);
  320.  
  321. {
  322. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  323.  
  324.  
  325. if(!feof(FilePointer))
  326. {
  327. if((stricmp(MemberDetails.MembershipType, Search))==0)
  328. {
  329. printf("\n\nName: %s\n", MemberDetails.FirstName);
  330. printf("\nMember Surname: %s\n", MemberDetails.Surname);
  331. printf("\nMember ID: %s\n", MemberDetails.MemberID);
  332. printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
  333.  
  334. TotRec++;
  335. }
  336. }
  337. }
  338. if(TotRec==0)
  339. printf("\n\n No Data Found ");
  340. else
  341. printf("\n\n===Total %d Record Found===", TotRec);
  342.  
  343. fclose(FilePointer);
  344. getch();
  345. MainMenu(MemberDetails);
  346. }
  347.  
  348.  
  349. void SearchRecordByName()
  350. {
  351. FILE *FilePointer;
  352.  
  353. struct MEMBER MemberDetails;
  354. char Search[20];
  355. char buffer[255]; //Buffer with a maximum of characters of searching//
  356. int TotRec=0;
  357.  
  358. system("cls");
  359. FilePointer=fopen(USED_FILE, "r"); //To read the MemberDetails file//
  360. printf("****Display Specific Records****\n");
  361. printf("Enter the First Name...\n");
  362. scanf("%s", Search);
  363.  
  364. {
  365. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  366.  
  367.  
  368. if(!feof(FilePointer))
  369. {
  370. if((stricmp(MemberDetails.FirstName, Search))==0)
  371. {
  372. printf("\n\nName: %s\n", MemberDetails.FirstName);
  373. printf("\nMember Surname: %s\n", MemberDetails.Surname);
  374. printf("\nMember ID: %s\n", MemberDetails.MemberID);
  375. printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
  376.  
  377. TotRec++;
  378. }
  379. }
  380. }
  381. if(TotRec==0)
  382. printf("\n\n No Data Found ");
  383. else
  384. printf("\n\n===Total %d Record Found===", TotRec);
  385.  
  386. fclose(FilePointer);
  387. getch();
  388. MainMenu(MemberDetails);
  389. }
  390.  
  391. void StatisticsMenu(struct MEMBER MemberDetails)
  392. {
  393. int MenuChoice = 0;
  394. do{
  395. MenuChoice = DisplayStatisticsMenu();
  396. switch(MenuChoice)
  397. {
  398. case 1 :
  399. StatisticsMembershipType();
  400. break;
  401. case 2 :
  402. AnnualFeesStatistics();
  403. break;
  404. case 3 :
  405. MainMenu(MemberDetails);
  406. break;
  407. case 4 :
  408. Pause();
  409. break;
  410. }
  411. }while(MenuChoice !=5);
  412.  
  413. }
  414. void AnnualFeesStatistics()
  415. {
  416. FILE *FilePointer;
  417.  
  418. struct MEMBER MemberDetails;
  419. char Search[20];
  420. int TotRec=0;
  421. int TotalFee;
  422. int Choice;
  423. int Premium = 0;
  424. int Standard = 0;
  425. int Junior = 0;
  426.  
  427.  
  428. system("cls");
  429. FilePointer=fopen(USED_FILE, "r");
  430. printf("****Display Total Fees****\n");
  431. printf("Premium, Standard or Junior?\n");
  432.  
  433. do
  434. {
  435. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  436.  
  437.  
  438. if(!feof(FilePointer))
  439. {
  440. if((stricmp(MemberDetails.MembershipType, "Premium")) == 0)
  441. {
  442. Premium = Premium + 1;
  443. }
  444. else if((stricmp(MemberDetails.MembershipType, "Standard")) == 0)
  445. {
  446. Standard = Standard + 1;
  447. }
  448. else if((stricmp(MemberDetails.MembershipType, "Junior")) == 0)
  449. {
  450. Junior = Junior + 1;
  451. }
  452. }
  453. } while(!feof(FilePointer));
  454.  
  455.  
  456. if((Premium == 0) && (Standard == 0) && (Junior == 0))
  457. printf("\n\n No Data Found for %s ", Search);
  458. else
  459. {
  460. TotalFee = (Premium * PREMIUM) + (Standard * STANDARD) + (Junior * JUNIOR);
  461.  
  462. printf("\n(%d Members * %d Pounds)", Premium, PREMIUM);
  463. printf("\n(%d Members * %d Pounds)", Standard, STANDARD);
  464. printf("\n(%d Members * %d Pounds)", Junior, JUNIOR);
  465. printf("\n\n=== The Total Annual Fee is: %c%d===",POUND_SIGN, TotalFee);
  466. }
  467.  
  468. fclose(FilePointer);
  469. getch();
  470. MainMenu(MemberDetails); //Go back to the main menu//
  471. }
  472.  
  473.  
  474. void SearchByID()
  475. {
  476. FILE *FilePointer;
  477.  
  478. struct MEMBER MemberDetails;
  479. char Search[20];
  480. char buffer[255];
  481. int TotRec=0;
  482.  
  483. system("cls");
  484. FilePointer=fopen(USED_FILE, "r");
  485. printf("****Display by ID****\n");
  486. printf("Enter the ID...\n\n");
  487. scanf("%s", &Search);
  488.  
  489. do
  490. {
  491. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  492.  
  493.  
  494. if(!feof(FilePointer))
  495. {
  496. if((stricmp(MemberDetails.MemberID, Search))==0)
  497. {
  498. printf("\n\nName: %s\n", MemberDetails.FirstName);
  499. printf("\nMember Surname: %s\n", MemberDetails.Surname);
  500. printf("\nMember ID: %s\n", MemberDetails.MemberID);
  501. printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
  502.  
  503. TotRec++;
  504. }
  505. }
  506. } while(!feof(FilePointer));
  507. if(TotRec==0)
  508. printf("\n\n No Data Found ");
  509. else
  510. printf("\n\n===Total %d Record Found===", TotRec);
  511.  
  512. fclose(FilePointer);
  513. getch();
  514. MainMenu(MemberDetails);
  515. }
  516.  
  517. int DisplayStatisticsMenu()
  518. {
  519. int MenuInput = 0;
  520.  
  521. system("cls");
  522. printf("Statistics");
  523. printf("\n\n1. Membership Type Statistics"
  524. "\n2. Total Annual Fees"
  525. "\n3. Return to Main Menu"
  526. "\n4. Exit the Program");
  527. printf("\n\nPlease enter your input ");
  528.  
  529. MenuInput = ValidateInteger(MenuInput, 1, 4);
  530.  
  531. return(MenuInput);
  532. }
  533.  
  534. void ExpiringMembers()
  535. {
  536. FILE *FilePointer;
  537.  
  538. struct MEMBER MemberDetails;
  539. char Search[20];
  540. char buffer[255];
  541. int TotRec=0;
  542. int Month = 0;
  543.  
  544. FilePointer=fopen(USED_FILE, "r"); //To read the MemberDetails file//
  545. system("cls");
  546. printf("Expiring Members\n\n");
  547. printf("Please enter the month (1 - 12)\n");
  548. Month = ValidateInteger(Month, 1, 12);
  549.  
  550.  
  551.  
  552.  
  553. {
  554. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  555.  
  556.  
  557. if(!feof(FilePointer))
  558. {
  559. if((stricmp(MemberDetails.MembershipExpiryMonth, Month))==0)
  560. {
  561. printf("\n\nName: %s\n", MemberDetails.FirstName);
  562. printf("\nMember Surname: %s\n", MemberDetails.Surname);
  563. printf("\nMember ID: %s\n", MemberDetails.MemberID);
  564. TotRec++;
  565. }
  566. }
  567. }
  568. if(TotRec==0)
  569. printf("\n\n No Data Found ");
  570. else
  571. printf("\n\n===Total %d Record Found===", TotRec);
  572.  
  573. fclose(FilePointer);
  574. getch();
  575. MainMenu(MemberDetails);
  576. }
  577.  
  578. void DisplayAllRecords(struct MEMBER MemberDetails)
  579. {
  580. int c;
  581.  
  582. *FilePointer;
  583.  
  584. system("cls");
  585. printf("DISPLAY ALL MEMBERS\n\n");
  586.  
  587. FilePointer=fopen(USED_FILE, "r");
  588.  
  589. printf(" Member ID First Name. Surname. MemberShip. Month.\n");
  590. printf("----------------------------------------------------------------------------\n\n");
  591. do
  592. {
  593. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  594.  
  595. if(!feof(FilePointer))
  596. {
  597. printf(" %6s ", MemberDetails.MemberID);
  598. printf(" %21s ", MemberDetails.FirstName);
  599. printf(" %21s ", MemberDetails.Surname);
  600. printf(" %9s ", MemberDetails.MembershipType);
  601. printf(" %5d \n", MemberDetails.MembershipExpiryMonth);
  602. }
  603. memset(&MemberDetails, '\0', sizeof(MemberDetails));
  604.  
  605. } while(!feof(FilePointer));
  606.  
  607.  
  608.  
  609. fclose(FilePointer);
  610. printf("\n\nPress anykey to return...");
  611. getch();
  612. MainMenu(MemberDetails);
  613. }
  614.  
  615.  
  616. void SearchMembershipType()
  617. {
  618. FILE *FilePointer;
  619.  
  620. struct MEMBER MemberDetails;
  621. char Search[20];
  622. char buffer[255];
  623. int TotRec=0;
  624.  
  625. system("cls");
  626. FilePointer=fopen(USED_FILE, "r");
  627. printf("****Display Specific Records****\n");
  628. printf("Enter the Membership Type...\nPremium \nStandard \nJunior\n\n");
  629. scanf("%s", &Search);
  630. while(!feof(FilePointer))
  631.  
  632. {
  633. fread(&MemberDetails, sizeof(MemberDetails), 1, FilePointer); //buffer, "%s", FilePointer);
  634.  
  635.  
  636. if(!feof(FilePointer))
  637. {
  638. if((stricmp(MemberDetails.MembershipType, Search))==0)
  639. {
  640. printf("\n\nName: %s\n", MemberDetails.FirstName);
  641. printf("\nMember Surname: %s\n", MemberDetails.Surname);
  642. printf("\nMember ID: %s\n", MemberDetails.MemberID);
  643. printf("\nMember Membership expiry month: %d\n", MemberDetails.MembershipExpiryMonth);
  644.  
  645. TotRec++;
  646. }
  647. }
  648. }
  649. if(TotRec==0)
  650. printf("\n\n No Data Found ");
  651. else
  652. printf("\n\n===Total %d Record Found===", TotRec);
  653. fclose(FilePointer);
  654. getch();
  655. MainMenu(MemberDetails);
  656. }
  657.  
  658. char *GetsValidatedString(char String[], int MinLength, int MaxLength)
  659. {
  660. int Count = 0;
  661. char Input[260];
  662.  
  663. do
  664. {
  665. gets(Input);
  666.  
  667. //Set input into a limited Max and Min
  668. if((strlen(Input) < MinLength) || (strlen(Input) > MaxLength))
  669. {
  670. printf("Invalid input! please try again. Length: (%d - %d): ", MinLength, MaxLength);
  671. }
  672.  
  673. } while ((strlen(Input) < MinLength) || (strlen(Input) > MaxLength));
  674.  
  675. //tolower - Sets character to lower case
  676. for(Count = 0; Input[Count]; Count++)
  677. {
  678. Input[Count] = tolower(Input[Count]);
  679. }
  680.  
  681. strcpy(String, Input);
  682. return(String);
  683. }
  684.  
  685. int ValidateInteger(int Input, int Min, int Max)
  686. {
  687. do
  688. {
  689. scanf("%d", &Input);
  690. fflush(stdin);
  691.  
  692. if((Input < Min) || (Input > Max))
  693. {
  694. printf("\n\nInvalid input, must be between %d and %d \n\n", Min, Max);
  695. }
  696.  
  697. } while((Input < Min) || (Input > Max));
  698.  
  699. return(Input);
  700. }
  701.  
  702.  
  703.  
  704. void Pause()
  705. {
  706. system("cls");
  707. printf("Press any key to continue...");
  708. getch();
  709. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement