Advertisement
Holey_yan

20141125_KUAS_VisualC++_FinalClasswork

Nov 27th, 2014
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 47.57 KB | None | 0 0
  1. /**************************************/
  2. /** 20141125 Final Classwork         **/
  3. /** Maker  : Yan                     **/
  4. /** E-Mail : yanchangx0924@gmail.com **/
  5. /** Date   : 2014/11/25 am.00:00     **/
  6. /**************************************/
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <time.h>
  12.  
  13. struct MyMember
  14. {
  15.     char userID[15];
  16.     char name[15];
  17.     char username[15];
  18.     char password[15];
  19.     char phone[15];
  20.     char address[15];
  21.     char birthday[15];
  22.     char Email[1000];
  23.     int DiscountCoupon1; //10%-Off
  24.     int DiscountCoupon2; //15%-Off
  25. };
  26.  
  27. struct MyMerchandise
  28. {
  29.     int uniform_numbers;
  30.     char name[7];
  31.     int price;
  32.     char firm[4];
  33.     int stock;
  34. };
  35.  
  36. int now_member_counter = -1;
  37. int _signIn()
  38. {
  39.     system("cls");
  40.     printf("**** Sign In ****\n");
  41.     printf("Username: ");
  42.     char username[20] = {NULL};
  43.     scanf("%s", username);
  44.  
  45.     printf("Password: ");
  46.     char password[20] = {NULL};
  47.     scanf("%s", password);
  48.  
  49.     struct MyMember all_member[100];
  50.     FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  51.     if(fptr_ReadMember == NULL)
  52.     {
  53.         printf("    ---- Error Member Read ----\n");
  54.         exit(EXIT_SUCCESS);
  55.     }
  56.  
  57.     int counter = 0;
  58.     while(!feof(fptr_ReadMember))
  59.     {
  60.         fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  61.                                                                    all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  62.                                                                    all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  63.                                                                    &all_member[counter].DiscountCoupon2);
  64.         counter++;
  65.     }
  66.     fclose(fptr_ReadMember);
  67.  
  68.     now_member_counter = -1;
  69.     int _get = 0; //暫存登入狀態
  70.     for(int i = 0; i < counter; i++)
  71.     {
  72.         if(strcmp(username, all_member[i].username) == 0)
  73.         {
  74.             if(strcmp(password, all_member[i].password) == 0)
  75.             {
  76.                 if(i == 0)
  77.                     _get = 3;
  78.                 else
  79.                     _get = 2;
  80.                 now_member_counter = i;
  81.             }
  82.             else
  83.                 _get = 1;
  84.             break;
  85.         }
  86.     }
  87.  
  88.     int login_state = 0;
  89.     switch(_get)
  90.     {
  91.         case 0:
  92.             printf("    ---- Do Not Have This Member ----\n");
  93.             return 0;
  94.             /*login_state = _signIn();*/
  95.             break;
  96.  
  97.         case 1:
  98.             printf("    ---- Password ERROR ----\n");
  99.             return 0;
  100.             /*login_state = _signIn();*/
  101.             break;
  102.  
  103.         case 2:
  104.             printf("    ---- Member Login Successfully ----\n");
  105.             login_state = 2;
  106.             break;
  107.  
  108.         case 3:
  109.             printf("    ---- Administrator Login Successfully ----\n");
  110.             login_state = 1;
  111.             break;
  112.     }
  113.     return login_state;
  114. }
  115.  
  116. int _signUp()
  117. {
  118.     struct MyMember all_member[100];
  119.     FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  120.     if(fptr_ReadMember == NULL)
  121.     {
  122.         printf("    ---- Error Member Read ----\n");
  123.         exit(EXIT_SUCCESS);
  124.     }
  125.  
  126.     int counter = 0;
  127.     while(!feof(fptr_ReadMember))
  128.     {
  129.         fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  130.                                                                    all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  131.                                                                    all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  132.                                                                    &all_member[counter].DiscountCoupon2);
  133.         counter++;
  134.     }
  135.     fclose(fptr_ReadMember);
  136.  
  137.     system("cls");
  138.     printf("**** Sign Up ****\n");
  139.     struct MyMember add_new_member;
  140.     printf("Enter your [ID_Number]: ");
  141.     scanf("%s", add_new_member.userID);
  142.     int userID_exist = 0;
  143.     for(int i = 0; i < counter; i++)
  144.         if(strcmp(add_new_member.userID, all_member[i].userID) == 0)
  145.         {
  146.             userID_exist = 1;
  147.             break;
  148.         }
  149.     if(userID_exist == 1)
  150.     {
  151.         printf("    ---- Have The Same ID_Number, Please Check It Again ----\n");
  152.         /*_signUp();*/
  153.         return 0;
  154.     }
  155.     else
  156.     {
  157.         printf("Enter your [Name]: ");
  158.         scanf("%s", add_new_member.name);
  159.  
  160.         printf("Enter your [Username]: ");
  161.         scanf("%s", add_new_member.username);
  162.         int username_exist = 0;
  163.         for(int i = 0; i < counter; i++)
  164.             if(strcmp(add_new_member.username, all_member[i].username) == 0)
  165.             {
  166.                 username_exist = 1;
  167.                 break;
  168.             }
  169.         if(username_exist == 1)
  170.         {
  171.             printf("    ---- Have The Same Username, Please Change It ----\n");
  172.             /*_signUp();*/
  173.             return 0;
  174.         }
  175.         else
  176.         {
  177.             printf("Enter your [Password]: ");
  178.             scanf("%s", add_new_member.password);
  179.  
  180.             printf("Enter your [Phone]: ");
  181.             scanf("%s", add_new_member.phone);
  182.  
  183.             printf("Enter your [Address]: ");
  184.             scanf("%s", add_new_member.address);
  185.  
  186.             printf("Enter your [Birthday]: ");
  187.             scanf("%s", add_new_member.birthday);
  188.  
  189.             printf("Enter your [Email]: ");
  190.             scanf("%s", add_new_member.Email);
  191.  
  192.             add_new_member.DiscountCoupon1 = 0;
  193.             add_new_member.DiscountCoupon2 = 0;
  194.  
  195.             all_member[counter] = add_new_member;
  196.             counter++;
  197.  
  198.             FILE *fptr_WriteMember = fopen("MembersData.txt", "a");
  199.             if(fptr_WriteMember == NULL)
  200.             {
  201.                 printf("    ---- Error Member Write ----\n");
  202.                 exit(EXIT_SUCCESS);
  203.             }
  204.             else
  205.             {
  206.                 fprintf(fptr_WriteMember,  "%s %s %s %s %s %s %s %s %d %d\n", add_new_member.userID, add_new_member.name, add_new_member.username, \
  207.                                                                               add_new_member.password, add_new_member.phone, add_new_member.address, \
  208.                                                                               add_new_member.birthday, add_new_member.Email, add_new_member.DiscountCoupon1, \
  209.                                                                               add_new_member.DiscountCoupon2);
  210.                 fclose(fptr_WriteMember);
  211.                 printf("    ---- Account [%s] Sign Up Successfully ----\n", add_new_member.username);
  212.             }
  213.         }
  214.     }
  215.  
  216.     return 0;
  217. }
  218.  
  219. void watch_all_merchandise_information()
  220. {
  221.     system("cls");
  222.     printf("**** (Administrator) Watch All Merchandise's Information ****\n");
  223.  
  224.     struct MyMerchandise all_merchandise[100];
  225.     FILE *fptr_ReadMerchandise = fopen("MerchandisesData.txt", "r");
  226.     if(fptr_ReadMerchandise == NULL)
  227.     {
  228.         printf("    ---- Error Member Read ----\n");
  229.         exit(EXIT_SUCCESS);
  230.     }
  231.  
  232.     int counter = 0;
  233.     while(!feof(fptr_ReadMerchandise))
  234.     {
  235.         fscanf(fptr_ReadMerchandise, "%d %s %d %s %d\n", &all_merchandise[counter].uniform_numbers, all_merchandise[counter].name, \
  236.                                                          &all_merchandise[counter].price, all_merchandise[counter].firm, \
  237.                                                          &all_merchandise[counter].stock);
  238.         if((counter == 0) && ((all_merchandise[counter].firm[0] == NULL) || (all_merchandise[counter].firm[0] == '\0')))
  239.         {
  240.             printf("    ---- Do Not Have Any Merchandise's Informations ----\n");
  241.             return;
  242.         }
  243.         counter++;
  244.     }
  245.     fclose(fptr_ReadMerchandise);
  246.  
  247.     printf("\n**** Data Table ****");
  248.     printf("\nNums\tName\tPrice\tFirm\tStock\n");
  249.     for(int i = 0; i < counter; i++)
  250.         printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  251.                                          all_merchandise[i].price, all_merchandise[i].firm, \
  252.                                          all_merchandise[i].stock);
  253.     return;
  254. }
  255.  
  256. void add_new_merchandise_information()
  257. {
  258.     system("cls");
  259.     printf("**** (Administrator) Add A New Merchandise's Information ****\n");
  260.  
  261.     struct MyMerchandise all_merchandise[100];
  262.     FILE *fptr_ReadMerchandise = fopen("MerchandisesData.txt", "r");
  263.     if(fptr_ReadMerchandise == NULL)
  264.     {
  265.         printf("    ---- Error Member Read ----\n");
  266.         exit(EXIT_SUCCESS);
  267.     }
  268.  
  269.     int counter = 0;
  270.     while(!feof(fptr_ReadMerchandise))
  271.     {
  272.         fscanf(fptr_ReadMerchandise, "%d %s %d %s %d\n", &all_merchandise[counter].uniform_numbers, all_merchandise[counter].name, \
  273.                                                          &all_merchandise[counter].price, all_merchandise[counter].firm, \
  274.                                                          &all_merchandise[counter].stock);
  275.         if((counter == 0) && (all_merchandise[counter].firm[0] == NULL) || (all_merchandise[counter].firm[0] == '\0'))
  276.             break;
  277.         counter++;
  278.     }
  279.     fclose(fptr_ReadMerchandise);
  280.  
  281.     //Output Data Table
  282.     watch_all_merchandise_information();
  283.  
  284.     printf("\n**** Add A New Merchandise's Information ****\n");
  285.     struct MyMerchandise all_new_merchandise;
  286.     all_new_merchandise.uniform_numbers = counter;
  287.     printf("Enter new merchandise's [Name]: ");
  288.     scanf("%s", all_new_merchandise.name);
  289.     printf("Enter new merchandise's [Price]: ");
  290.     scanf("%d", &all_new_merchandise.price);
  291.     printf("Enter new merchandise's [Firm]: ");
  292.     scanf("%s", all_new_merchandise.firm);
  293.     printf("Enter new merchandise's [Stock]: ");
  294.     scanf("%d", &all_new_merchandise.stock);
  295.  
  296.     //做商品檢查,檢查是否已有相同商品資訊(檔案名稱、廠商名稱)
  297.     //若有則提示使用者使用功能2:修改商品資訊
  298.     for(int i = 0; i < counter; i++)
  299.         if((strcmp(all_new_merchandise.name, all_merchandise[i].name) == 0) && strcmp(all_new_merchandise.firm, all_merchandise[i].firm) == 0)
  300.         {
  301.             printf("    ---- New Merchandise's Information Added Failure\n");
  302.             printf("         Have The Same Merchandise Information At Nums: %2d\n", i);
  303.             printf("         Please Use [Update The Merchandise's Information (Mode 2)]\n");
  304.             printf("         To Make A Modification                                     ----\n");
  305.             return;
  306.         }
  307.  
  308.     FILE *fptr_AddNewMerchandise = fopen("MerchandisesData.txt", "a");
  309.     if(fptr_AddNewMerchandise == NULL)
  310.     {
  311.         printf("    ---- Error Merchandise Write ----\n");
  312.         exit(EXIT_SUCCESS);
  313.     }
  314.     else
  315.     {
  316.         fprintf(fptr_AddNewMerchandise, "%d %s %d %s %d\n", all_new_merchandise.uniform_numbers, all_new_merchandise.name, \
  317.                                                             all_new_merchandise.price, all_new_merchandise.firm, \
  318.                                                             all_new_merchandise.stock);
  319.         printf("    ---- New Merchandise's Information Added Successfully ----\n");
  320.     }
  321.     fclose(fptr_AddNewMerchandise);
  322.     return;
  323. }
  324.  
  325. int update_the_merchandise_information()
  326. {
  327.     system("cls");
  328.     printf("**** (Administrator) Update The Merchandise's Information ****\n");
  329.  
  330.     struct MyMerchandise all_merchandise[100];
  331.     FILE *fptr_ReadMerchandise = fopen("MerchandisesData.txt", "r");
  332.     if(fptr_ReadMerchandise == NULL)
  333.     {
  334.         printf("    ---- Error Merchandise Read ----\n");
  335.         exit(EXIT_SUCCESS);
  336.     }
  337.  
  338.     int counter = 0;
  339.     while(!feof(fptr_ReadMerchandise))
  340.     {
  341.         fscanf(fptr_ReadMerchandise, "%d %s %d %s %d\n", &all_merchandise[counter].uniform_numbers, all_merchandise[counter].name, \
  342.                                                          &all_merchandise[counter].price, all_merchandise[counter].firm, \
  343.                                                          &all_merchandise[counter].stock);
  344.         if((counter == 0) && ((all_merchandise[counter].firm[0] == NULL) || (all_merchandise[counter].firm[0] == '\0')))
  345.         {
  346.             printf("    ---- Do Not Have Any Merchandise's Information ----\n");
  347.             return 1;
  348.         }
  349.         counter++;
  350.     }
  351.     fclose(fptr_ReadMerchandise);
  352.  
  353.     //Output Data Table
  354.     watch_all_merchandise_information();
  355.  
  356.     printf("\n**** Enter The Merchandise's Number Which You Want To Update\n");
  357.     printf("     Enter -1 To Go Back Administrator Function Menu  ****\n");
  358.     printf("Enter merchandise's number: ");
  359.     int number = 0;
  360.     scanf("%d", &number);
  361.     if(number == -1)
  362.         return 0;
  363.     else if(number >= counter)
  364.     {
  365.         printf("    ---- Do Not Have This Merchandise's Number ----\n");
  366.         return 1;
  367.     }
  368.  
  369.     printf("\n**** Update Merchandise's Information ****\n");
  370.     struct MyMerchandise update_merchandise;
  371.     update_merchandise.uniform_numbers = all_merchandise[number].uniform_numbers;
  372.     printf("Update merchandise's [Name]: ");
  373.     scanf("%s", update_merchandise.name);
  374.     printf("Update merchandise's [Price]: ");
  375.     scanf("%d", &update_merchandise.price);
  376.     printf("Update merchandise's [Firm]: ");
  377.     scanf("%s", update_merchandise.firm);
  378.     printf("Update merchandise's [Stock]: ");
  379.     scanf("%d", &update_merchandise.stock);
  380.  
  381.     all_merchandise[number] = update_merchandise;
  382.     FILE *fptr_WriteMerchandise = fopen("MerchandisesData.txt", "w");
  383.     if(fptr_WriteMerchandise == NULL)
  384.     {
  385.         printf("    ---- Error Merchandise Write ----\n");
  386.         exit(EXIT_SUCCESS);
  387.     }
  388.     else
  389.     {
  390.         for(int i = 0; i < counter; i++)
  391.             fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  392.                                                                all_merchandise[i].price, all_merchandise[i].firm, \
  393.                                                                all_merchandise[i].stock);
  394.         printf("    ---- Merchandise's Information Updated Successfully ----\n");
  395.     }
  396.     fclose(fptr_WriteMerchandise);
  397.     return 2;
  398. }
  399.  
  400. int delete_the_merchandise_informaion()
  401. {
  402.     system("cls");
  403.     printf("**** (Administrator) Delete The Merchandise's Information ****\n");
  404.  
  405.     struct MyMerchandise all_merchandise[100];
  406.     FILE *fptr_ReadMerchandise = fopen("MerchandisesData.txt", "r");
  407.     if(fptr_ReadMerchandise == NULL)
  408.     {
  409.         printf("    ---- Error Merchandise Read ----\n");
  410.         exit(EXIT_SUCCESS);
  411.     }
  412.  
  413.     int counter = 0;
  414.     while(!feof(fptr_ReadMerchandise))
  415.     {
  416.         fscanf(fptr_ReadMerchandise, "%d %s %d %s %d\n", &all_merchandise[counter].uniform_numbers, all_merchandise[counter].name, \
  417.                                                          &all_merchandise[counter].price, all_merchandise[counter].firm, \
  418.                                                          &all_merchandise[counter].stock);
  419.         if((counter == 0) && ((all_merchandise[counter].firm[0] == NULL) || (all_merchandise[counter].firm[0] == '\0')))
  420.         {
  421.             printf("    ---- Do Not Have Any Merchandise's Information ----\n");
  422.             return 1;
  423.         }
  424.         counter++;
  425.     }
  426.     fclose(fptr_ReadMerchandise);
  427.  
  428.     //Output Data Table
  429.     watch_all_merchandise_information();
  430.  
  431.     printf("\n**** Enter The Merchandise's Number Which You Want To Delete\n");
  432.     printf("     Enter -1 To Go Back Administrator Function Menu  ****\n");
  433.     printf("Enter merchandise's number: ");
  434.     int number = -1;
  435.     scanf("%d", &number);
  436.     if(number == -1)
  437.         return 0;
  438.     else if(number >= counter)
  439.     {
  440.         printf("    ---- Do Not Have This Merchandise's Number ----\n");
  441.         return 1;
  442.     }
  443.  
  444.     if(counter == 1)
  445.     {
  446.         //Clear Array
  447.         memset(all_merchandise, 0, sizeof(all_merchandise));
  448.         counter = 0;
  449.     }
  450.  
  451.     for(int i = number; i < counter - 1; i++)
  452.     {
  453.         all_merchandise[i] = all_merchandise[i + 1];
  454.         all_merchandise[i].uniform_numbers = i;
  455.     }
  456.     counter--;
  457.  
  458.     FILE *fptr_WriteMerchandise = fopen("MerchandisesData.txt", "w");
  459.     if(fptr_WriteMerchandise == NULL)
  460.     {
  461.         printf("    ---- Error Merchandise Write ----\n");
  462.         exit(EXIT_SUCCESS);
  463.     }
  464.     else
  465.     {
  466.         for(int i = 0; i < counter; i++)
  467.             fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  468.                                                                all_merchandise[i].price, all_merchandise[i].firm, \
  469.                                                                all_merchandise[i].stock);
  470.         printf("    ---- Merchandise's Information Deleted Successfully ----\n");
  471.         fclose(fptr_WriteMerchandise);
  472.     }
  473.     return 2;
  474. }
  475.  
  476. void watch_all_members_information()
  477. {
  478.     system("cls");
  479.     printf("**** (Administrator) Watch All Members Informations ****\n");
  480.  
  481.     struct MyMember all_member[100];
  482.     FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  483.     if(fptr_ReadMember == NULL)
  484.     {
  485.         printf("    ---- Error Member Read ----\n");
  486.         exit(EXIT_SUCCESS);
  487.     }
  488.  
  489.     int counter = 0;
  490.     while(!feof(fptr_ReadMember))
  491.     {
  492.         fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  493.                                                                    all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  494.                                                                    all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  495.                                                                    &all_member[counter].DiscountCoupon2);
  496.         counter++;
  497.     }
  498.     fclose(fptr_ReadMember);
  499.  
  500.     printf("\n**** Date Table ****\n");
  501.     printf("Num\tID_Number\tusername\n");
  502.     if(counter == 1)
  503.     {
  504.         printf("    ---- Only Have Administrator's Account ----\n");
  505.         return;
  506.     }
  507.     else
  508.         for(int i = 0; i < counter; i++)
  509.             if(i == 0)
  510.                 continue;
  511.             else
  512.                 if(strlen(all_member[i].userID) < 8)
  513.                     printf("%d\t%s\t\t%s\n", i - 1, all_member[i].userID, all_member[i].username);
  514.                 else
  515.                     printf("%d\t%s\t%s\n", i - 1, all_member[i].userID, all_member[i].username);
  516.     return;
  517. }
  518.  
  519. int delete_the_member_information()
  520. {
  521.     system("cls");
  522.     printf("**** (Administrator) Delete The Member's Information ****\n");
  523.     struct MyMember all_member[100];
  524.     FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  525.     if(fptr_ReadMember == NULL)
  526.     {
  527.         printf("    ---- Error Member Read ----\n");
  528.         exit(EXIT_SUCCESS);
  529.     }
  530.  
  531.     int counter = 0;
  532.     while(!feof(fptr_ReadMember))
  533.     {
  534.         fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  535.                                                                    all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  536.                                                                    all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  537.                                                                    &all_member[counter].DiscountCoupon2);
  538.         counter++;
  539.     }
  540.     fclose(fptr_ReadMember);
  541.  
  542.     if(counter == 1)
  543.     {
  544.         printf("    ---- Do Not Have Any Member Information (Except Administrator) ----\n");
  545.         return 0;
  546.     }
  547.     else if(counter > 1)
  548.     {
  549.         watch_all_members_information();
  550.         printf("\n**** Enter The Member's Number Which You Want To Delete\n");
  551.         printf("     Enter -1 To Go Back Administrator Function Menu    ****\n");
  552.         printf("Enter member's number: ");
  553.         int number = -1;
  554.         scanf("%d", &number);
  555.         if(number == -1)
  556.             return 0;
  557.         else
  558.             number++; //補償顯示時減去的1
  559.  
  560.         if(number == 0)
  561.         {
  562.             printf("    ---- Administrator Account Can Not Delete ----\n");
  563.             return 1;
  564.         }
  565.         else if(number >= counter)
  566.         {
  567.             printf("    ---- Do Not Have This Member's Number ----\n");
  568.             return 1;
  569.         }
  570.  
  571.         for(int i = number; i < counter - 1; i++)
  572.             all_member[i] = all_member[i + 1];
  573.         counter--;
  574.  
  575.         FILE *fptr_WriteMember = fopen("MembersData.txt", "w");
  576.         for(int i = 0; i < counter; i++)
  577.             fprintf(fptr_WriteMember,  "%s %s %s %s %s %s %s %s %d %d\n", all_member[i].userID, all_member[i].name, all_member[i].username, \
  578.                                                                           all_member[i].password, all_member[i].phone, all_member[i].address, \
  579.                                                                           all_member[i].birthday, all_member[i].Email, all_member[i].DiscountCoupon1, \
  580.                                                                           all_member[i].DiscountCoupon2);
  581.         fclose(fptr_WriteMember);
  582.         printf("    ---- Member's Information Deleted Successfully ----\n");
  583.     }
  584.     return 2;
  585. }
  586.  
  587. void go_shopping(int _first_login)
  588. {
  589.     struct MyMerchandise myCart[100];
  590.     int cart_counter = 0;
  591.  
  592.     Go_Shopping_Start:
  593.     if(_first_login != 1)
  594.     {
  595.         printf("\n");
  596.         system("pause");
  597.     }
  598.     system("cls");
  599.     _first_login = 0;
  600.  
  601.     struct MyMerchandise all_merchandise[100];
  602.     FILE *fptr_ReadMerchandise = fopen("MerchandisesData.txt", "r");
  603.     if(fptr_ReadMerchandise == NULL)
  604.     {
  605.         printf("    ---- Error Merchandise Read ----\n");
  606.         exit(EXIT_SUCCESS);
  607.     }
  608.  
  609.     int counter = 0;
  610.     while(!feof(fptr_ReadMerchandise))
  611.     {
  612.         fscanf(fptr_ReadMerchandise, "%d %s %d %s %d\n", &all_merchandise[counter].uniform_numbers, all_merchandise[counter].name, \
  613.                                                          &all_merchandise[counter].price, all_merchandise[counter].firm, \
  614.                                                          &all_merchandise[counter].stock);
  615.         if((all_merchandise[counter].firm[0] == NULL) || (all_merchandise[counter].firm[0] == '\0'))
  616.             break;
  617.         counter++;
  618.     }
  619.     fclose(fptr_ReadMerchandise);
  620.  
  621.     printf("Hello, member. What do your want to do?\n");
  622.     printf("**** Enter 0 To Search Merchandise\n");
  623.     printf("           1 To Pick Merchandise Into Your Cart\n");
  624.     printf("           2 To Show What Merchandise In Your Cart\n");
  625.     printf("           3 To Delete Merchandise Which In your Cart\n");
  626.     printf("           4 To Pay\n");
  627.     printf("           5 To Go Back Home Page                   ****\n");
  628.     printf("Enter your mode: ");
  629.     int _select = 0;
  630.     scanf("%d", &_select);
  631.     switch(_select)
  632.     {
  633.         case 0:
  634.             if(counter == 0)
  635.             {
  636.                 printf("    ---- Do Not Have Any Merchandise's Information ----\n");
  637.                 goto Go_Shopping_Start;
  638.             }
  639.  
  640.             printf("\n**** Enter 0 To Show All Merchandise\n");
  641.             printf("           1 To Search By Name\n");
  642.             printf("           2 To Search By Price\n");
  643.             printf("           3 To Search By Firm     ****\n");
  644.             printf("Enter your mode: ");
  645.             scanf("%d", &_select);
  646.             switch(_select)
  647.             {
  648.                 case 0:
  649.                 {
  650.                     printf("\n**** Data Table ****");
  651.                     printf("\nNums\tName\tPrice\tFirm\tStock\n");
  652.                     int find_counter = 0;
  653.                     for(int i = 0; i < counter; i++)
  654.                     {
  655.                         find_counter++;
  656.                         if(strlen(all_merchandise[i].name) < 8)
  657.                             printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  658.                                                              all_merchandise[i].price, all_merchandise[i].firm, \
  659.                                                              all_merchandise[i].stock);
  660.                     }
  661.  
  662.                     if(find_counter == 0)
  663.                         printf("    ---- Can Not Find Any Merchandise ----\n");
  664.                     break;
  665.                 }
  666.  
  667.                 // 在Switch .. Case .. 內無法宣告變數,若欲宣告則必須在Case 加上括弧
  668.                 case 1:
  669.                 {
  670.                     printf("\n**** Search By Name ****\n");
  671.                     printf("Enter merchandise name or key words: ");
  672.                     char _search_name[7] = {NULL};
  673.                     scanf("%s", _search_name);
  674.  
  675.                     printf("\n**** Data Table ****");
  676.                     printf("\nNums\tName\tPrice\tFirm\tStock\n");
  677.                     int find_counter = 0;
  678.                     for(int i = 0; i < counter; i++)
  679.                         if(strstr(all_merchandise[i].name, _search_name))
  680.                         {
  681.                             find_counter++;
  682.                             printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  683.                                                              all_merchandise[i].price, all_merchandise[i].firm, \
  684.                                                              all_merchandise[i].stock);
  685.                         }
  686.                     if(find_counter == 0)
  687.                         printf("    ---- Can Not Find Any Merchandise ----\n");
  688.                     break;
  689.                 }
  690.  
  691.                 case 2:
  692.                 {
  693.                     printf("\n**** Search By Price ****\n");
  694.                     printf("Enter the minimum amount: ");
  695.                     int _min_price = 0;
  696.                     scanf("%d", &_min_price);
  697.                     printf("Enter the maximum amount: ");
  698.                     int _max_price = 0;
  699.                     scanf("%d", &_max_price);
  700.  
  701.                     printf("\n**** Data Table ****");
  702.                     printf("\nNums\tName\tPrice\tFirm\tStock\n");
  703.                     int find_counter = 0;
  704.                     for(int i = 0; i < counter; i++)
  705.                         if((_min_price <= all_merchandise[i].price) && (all_merchandise[i].price <= _max_price))
  706.                         {
  707.                             find_counter++;
  708.                             printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  709.                                                              all_merchandise[i].price, all_merchandise[i].firm, \
  710.                                                              all_merchandise[i].stock);
  711.                         }
  712.                     if(find_counter == 0)
  713.                         printf("    ---- Can Not Find Any Merchandise ----\n");
  714.                     break;
  715.                 }
  716.  
  717.                 case 3:
  718.                 {
  719.                     printf("\n**** Search By Firm ****\n");
  720.                     printf("Enter the firm name: ");
  721.                     char _search_firm[5] = {NULL};
  722.                     scanf("%s", _search_firm);
  723.  
  724.                     printf("\n**** Data Table ****");
  725.                     printf("\nNums\tName\tPrice\tFirm\tStock\n");
  726.                     int find_counter = 0;
  727.                     for(int i = 0; i < counter; i++)
  728.                         if(strcmp(all_merchandise[i].firm, _search_firm) == 0)
  729.                         {
  730.                             find_counter++;
  731.                             printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  732.                                                              all_merchandise[i].price, all_merchandise[i].firm, \
  733.                                                              all_merchandise[i].stock);
  734.                         }
  735.                     if(find_counter == 0)
  736.                         printf("    ---- Can Not Find Any Merchandise ----\n");
  737.                     break;
  738.                 }
  739.             }
  740.             goto Go_Shopping_Start;
  741.             break;
  742.  
  743.         case 1:
  744.         {
  745.             //檢查商品狀況(若無商品則直接返回)
  746.             if(counter == 0)
  747.             {
  748.                 printf("    ---- Do Not Have Any Merchandise ----\n");
  749.                 goto Go_Shopping_Start;
  750.             }
  751.  
  752.             //先顯示商品資訊
  753.             printf("\n**** Data Table ****");
  754.             printf("\nNums\tName\tPrice\tFirm\tStock\n");
  755.             for(int i = 0; i < counter; i++)
  756.                 printf("%4d\t%s\t%4d\t%s\t%4d\n",all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  757.                                                  all_merchandise[i].price, all_merchandise[i].firm, \
  758.                                                  all_merchandise[i].stock);
  759.  
  760.             printf("\n**** Pick Merchandise And Put In The Cart ****\n");
  761.             printf("Enter the merchandise's number: ");
  762.             int _pick = 0;
  763.             scanf("%d", &_pick);
  764.             if(_pick >= counter)
  765.             {
  766.                 printf("    ---- Do Not Have This Commoduty's Number ----\n");
  767.                 goto Go_Shopping_Start;
  768.                 return;
  769.             }
  770.             else
  771.             {
  772.                 printf("Enter number of merchandise: ");
  773.                 int _number = 0;
  774.                 scanf("%d", &_number);
  775.                 if(_number <= 0)
  776.                 {
  777.                     printf("    ---- Quantity Can Not Less Than One ----\n");
  778.                     goto Go_Shopping_Start;
  779.                     return;
  780.                 }
  781.                 if(_number > all_merchandise[_pick].stock)
  782.                 {
  783.                     printf("    ---- Do Not Have More Then %2d Stock ----\n", all_merchandise[_pick].stock);
  784.                     goto Go_Shopping_Start;
  785.                     return;
  786.                 }
  787.  
  788.                 //處理商品庫存
  789.                 FILE *fptr_WriteMerchandise = fopen("MerchandisesData.txt", "w");
  790.                 if(fptr_WriteMerchandise == NULL)
  791.                 {
  792.                     printf("    ---- Error Merchandise Write ----\n");
  793.                     exit(EXIT_SUCCESS);
  794.                 }
  795.                 else
  796.                 {
  797.                     for(int i = 0; i < counter; i++)
  798.                         if(i == _pick)
  799.                             fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  800.                                                                                all_merchandise[i].price, all_merchandise[i].firm, \
  801.                                                                                all_merchandise[i].stock - _number);
  802.                         else if(i != _pick)
  803.                             fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  804.                                                                                all_merchandise[i].price, all_merchandise[i].firm, \
  805.                                                                                all_merchandise[i].stock);
  806.                 }
  807.                 fclose(fptr_WriteMerchandise);
  808.  
  809.                 if(cart_counter == 0)
  810.                 {
  811.                     myCart[cart_counter].uniform_numbers = cart_counter;
  812.                     strcpy(myCart[cart_counter].name, all_merchandise[_pick].name);
  813.                     myCart[cart_counter].price = all_merchandise[_pick].price;
  814.                     strcpy(myCart[cart_counter].firm, all_merchandise[_pick].firm);
  815.                     myCart[cart_counter].stock = _number;
  816.                     cart_counter++;
  817.                 }
  818.                 else
  819.                 {
  820.                     for(int i = 0; i < cart_counter; i++)
  821.                     {
  822.                         if((strcmp(all_merchandise[_pick].name, myCart[i].name) == 0) && (strcmp(all_merchandise[_pick].firm, myCart[i].firm) == 0))
  823.                         {
  824.                             myCart[i].stock += _number;
  825.                             break;
  826.                         }
  827.                         else
  828.                             if(i == cart_counter - 1)
  829.                             {
  830.                                 myCart[cart_counter].uniform_numbers = cart_counter;
  831.                                 strcpy(myCart[cart_counter].name, all_merchandise[_pick].name);
  832.                                 myCart[cart_counter].price = all_merchandise[_pick].price;
  833.                                 strcpy(myCart[cart_counter].firm, all_merchandise[_pick].firm);
  834.                                 myCart[cart_counter].stock = _number;
  835.                                 cart_counter++;
  836.                                 break;
  837.                             }
  838.                     }
  839.                 }
  840.  
  841.                 //顯示總金額
  842.                 int total_money = 0;
  843.                 if(cart_counter == 0)
  844.                     printf("    ---- Do Not Have Any Merchandise In Your Cart ----\n");
  845.                 else
  846.                 {
  847.                     for(int i = 0; i < cart_counter; i++)
  848.                         total_money += myCart[i].price * myCart[i].stock;
  849.                     printf("    ---- Total Money Should Pay: NT. %4d ----\n", total_money);
  850.                 }
  851.                 goto Go_Shopping_Start;
  852.                 break;
  853.             }
  854.         }
  855.  
  856.         case 2:
  857.         {
  858.             if(cart_counter == 0)
  859.             {
  860.                 printf("    ---- Do Not Have Any Merchandise In Your Cart ----\n");
  861.                 goto Go_Shopping_Start;
  862.             }
  863.             else
  864.             {
  865.                 printf("\n**** Data Table ****\n");
  866.                 printf("Nums\tName\tPrice\tFirm\tQuantity\n");
  867.                 int total_money = 0;
  868.                 for(int i = 0; i < cart_counter; i++)
  869.                 {
  870.                     printf("%d\t%s\t%d\t%s\t%d\n", myCart[i].uniform_numbers, myCart[i].name, myCart[i].price, \
  871.                                                    myCart[i].firm, myCart[i].stock);
  872.                     total_money += myCart[i].price * myCart[i].stock;
  873.                 }
  874.                 printf("    ---- Total Money Should Pay: NT. %4d ----\n", total_money);
  875.                 goto Go_Shopping_Start;
  876.             }
  877.             break;
  878.         }
  879.  
  880.         case 3:
  881.         {
  882.             if(cart_counter == 0)
  883.             {
  884.                 printf("    ---- Do Not Have Any Merchandise In Your Cart ----\n");
  885.                 goto Go_Shopping_Start;
  886.             }
  887.  
  888.             printf("\n**** Data Table ****\n");
  889.             printf("Nums\tName\tPrice\tFirm\tQuantity\n");
  890.             int total_money = 0;
  891.             for(int i = 0; i < cart_counter; i++)
  892.             {
  893.                 printf("%d\t%s\t%d\t%s\t%d\n", myCart[i].uniform_numbers, myCart[i].name, myCart[i].price, \
  894.                                                myCart[i].firm, myCart[i].stock);
  895.                 total_money = myCart[i].price * myCart[i].stock;
  896.             }
  897.  
  898.             printf("\n**** Delete Merchandise From Your Cart ****\n");
  899.             printf("Enter the number: ");
  900.             int _number = 0;
  901.             scanf("%d", &_number);
  902.  
  903.             if(_number >= cart_counter)
  904.             {
  905.                 printf("    ---- Do Not Have This Merchandise ----\n");
  906.                 goto Go_Shopping_Start;
  907.             }
  908.             else
  909.             {
  910.                 printf("Enter the quantity: ");
  911.                 int _quantity = 0;
  912.                 scanf("%d", &_quantity);
  913.  
  914.                 if(_quantity > myCart[_number].stock)
  915.                 {
  916.                     printf("    ---- Can Not Enter More Than %2d Quantity ----\n");
  917.                     goto Go_Shopping_Start;
  918.                 }
  919.                 else
  920.                 {
  921.                     //先處理商品庫存
  922.                     FILE *fptr_WriteMerchandise = fopen("MerchandisesData.txt", "w");
  923.                     if(fptr_WriteMerchandise == NULL)
  924.                     {
  925.                         printf("    ---- Error Merchandise Write ----\n");
  926.                         exit(EXIT_SUCCESS);
  927.                     }
  928.                     else
  929.                     {
  930.                         if(counter == 0)
  931.                             fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", 0, myCart[_number].name, myCart[_number].price, \
  932.                                                                                myCart[_number].firm, _quantity);
  933.                         else
  934.                         {
  935.                             for(int i = 0; i < counter; i++)
  936.                                 if((strcmp(myCart[_number].name, all_merchandise[i].name) == 0) && (strcmp(myCart[_number].firm, all_merchandise[i].firm) == 0))
  937.                                 {
  938.                                     all_merchandise[i].stock += _quantity;
  939.                                     break;
  940.                                 }
  941.                                 else
  942.                                     if(i == counter - 1)
  943.                                     {
  944.                                         all_merchandise[counter].uniform_numbers = counter;
  945.                                         strcpy(all_merchandise[counter].name, myCart[_number].name);
  946.                                         all_merchandise[counter].price = myCart[_number].price;
  947.                                         strcpy(all_merchandise[counter].firm, myCart[_number].firm);
  948.                                         all_merchandise[counter].stock = myCart[_number].stock;
  949.                                         counter++;
  950.                                         break;
  951.                                     }
  952.  
  953.                             for(int i = 0; i < counter; i++)
  954.                                 fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  955.                                                                                    all_merchandise[i].price, all_merchandise[i].firm, \
  956.                                                                                    all_merchandise[i].stock);
  957.                         }
  958.                     }
  959.                     fclose(fptr_WriteMerchandise);
  960.  
  961.                     //處理結構陣列
  962.                     if(_quantity == myCart[_number].stock)
  963.                     {
  964.                         if(cart_counter == 1)
  965.                         {
  966.                             memset(myCart, 0, sizeof(myCart));
  967.                             cart_counter = 0;
  968.                         }
  969.                         else
  970.                         {
  971.                             for(int i = _number; i < cart_counter; i++)
  972.                             {
  973.                                 myCart[i] = myCart[i + 1];
  974.                                 myCart[i].uniform_numbers = i;
  975.                             }
  976.                             cart_counter--;
  977.                         }
  978.                     }
  979.                     else
  980.                     {
  981.                         myCart[_number].stock -= _quantity;
  982.                     }
  983.  
  984.                     int total_money = 0;
  985.                     for(int i = 0; i < cart_counter; i++)
  986.                         total_money += myCart[i].price * myCart[i].stock;
  987.                     printf("    ---- The Merchandise In Your Cart Is Deleted Successfully ----\n");
  988.                     printf("    ---- Total Money Should Pay: NT. %4d ----\n", total_money);
  989.                 }
  990.             }
  991.             goto Go_Shopping_Start;
  992.             break;
  993.         }
  994.  
  995.         case 4:
  996.         {
  997.             int total_money = 0;
  998.             if(cart_counter == 0)
  999.             {
  1000.                 printf("    ---- Do Not Have Any Merchandise In Your Cart ----\n");
  1001.                 goto Go_Shopping_Start;
  1002.             }
  1003.             else
  1004.             {
  1005.                 for(int i = 0; i < cart_counter; i++)
  1006.                     total_money += myCart[i].price * myCart[i].stock;
  1007.             }
  1008.  
  1009.             printf("\n**** Pay ****\n");
  1010.             printf("Total Money Should Pay: NT. %4d.\n", total_money);
  1011.             printf("Are you sure to pay? (y/n) ");
  1012.             char _pay;
  1013.             scanf(" %c", &_pay);
  1014.  
  1015.             if((_pay == 'y') || (_pay == 'Y'))
  1016.             {
  1017.                 struct MyMember all_member[100];
  1018.                 FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  1019.                 if(fptr_ReadMember == NULL)
  1020.                 {
  1021.                     printf("    ---- Error Member Read ----\n");
  1022.                     exit(EXIT_SUCCESS);
  1023.                 }
  1024.  
  1025.                 int counter = 0;
  1026.                 while(!feof(fptr_ReadMember))
  1027.                 {
  1028.                     fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  1029.                                                                                all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  1030.                                                                                all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  1031.                                                                                &all_member[counter].DiscountCoupon2);
  1032.                     counter++;
  1033.                 }
  1034.                 fclose(fptr_ReadMember);
  1035.  
  1036.                 if(all_member[now_member_counter].DiscountCoupon1 == 0)
  1037.                 {
  1038.                     if(all_member[now_member_counter].DiscountCoupon2 == 0)
  1039.                     {
  1040.                         //Nothing
  1041.                     }
  1042.                     else if(all_member[now_member_counter].DiscountCoupon2 != 0)
  1043.                     {
  1044.                         printf("Do you want to use [15%%-Off] discount coupon? (y/n) ");
  1045.                         char _DiscountCoupon2;
  1046.                         scanf(" %c", &_DiscountCoupon2);
  1047.                         if((_DiscountCoupon2 == 'y') || (_DiscountCoupon2 == 'Y'))
  1048.                         {
  1049.                             total_money = total_money * 0.85;
  1050.                             all_member[now_member_counter].DiscountCoupon2--;
  1051.                         }
  1052.                         else if ((_DiscountCoupon2 == 'n') || (_DiscountCoupon2 == 'N'))
  1053.                             total_money = total_money;
  1054.                         else
  1055.                         {
  1056.                             exit(EXIT_SUCCESS);
  1057.                             return;
  1058.                         }
  1059.                     }
  1060.                 }
  1061.                 else if(all_member[now_member_counter].DiscountCoupon2 == 0)
  1062.                 {
  1063.                     if(all_member[now_member_counter].DiscountCoupon1 == 0)
  1064.                     {
  1065.                         //Nothing
  1066.                     }
  1067.                     else if(all_member[now_member_counter].DiscountCoupon1 != 0)
  1068.                     {
  1069.                         printf("Do you want to use [10%%-Off] discount coupon? (y/n) ");
  1070.                         char _DiscountCoupon1;
  1071.                         scanf(" %c", &_DiscountCoupon1);
  1072.                         if((_DiscountCoupon1 == 'y') || (_DiscountCoupon1 == 'Y'))
  1073.                         {
  1074.                             total_money = total_money * 0.9;
  1075.                             all_member[now_member_counter].DiscountCoupon1--;
  1076.                         }
  1077.                         else if ((_DiscountCoupon1 == 'n') || (_DiscountCoupon1 == 'N'))
  1078.                         {
  1079.                             total_money = total_money;
  1080.                         }
  1081.                         else
  1082.                         {
  1083.                             exit(EXIT_SUCCESS);
  1084.                             return;
  1085.                         }
  1086.                     }
  1087.                 }
  1088.                 else
  1089.                 {
  1090.                     printf("Do you want to use [10%%-Off] or [15%%-Off] discount coupon? (y/n) ");
  1091.                     int _use_discount_coupon = 0;
  1092.                     scanf(" %c", &_use_discount_coupon);
  1093.                     if((_use_discount_coupon == 'y') || (_use_discount_coupon == 'Y'))
  1094.                     {
  1095.                         printf("\n**** Enter 0 To Use [10%%-Off],  1 To Use [15%%-Off] ****\n");
  1096.                         printf("Enter your mode: ");
  1097.                         int _select_discount_coupon;
  1098.                         scanf("%d", &_select_discount_coupon);
  1099.                         if(_select_discount_coupon == 0)
  1100.                         {
  1101.                             total_money = total_money * 0.9;
  1102.                             all_member[now_member_counter].DiscountCoupon1--;
  1103.                         }
  1104.                         else if(_select_discount_coupon == 1)
  1105.                         {
  1106.                             total_money = total_money * 0.85;
  1107.                             all_member[now_member_counter].DiscountCoupon2--;
  1108.                         }
  1109.                     }
  1110.                     else if((_use_discount_coupon == 'n') || (_use_discount_coupon == 'N'))
  1111.                     {
  1112.                         //Nothing
  1113.                     }
  1114.                     else
  1115.                     {
  1116.                         exit(EXIT_SUCCESS);
  1117.                         return;
  1118.                         break;
  1119.                     }
  1120.                 }
  1121.  
  1122.                 FILE *fptr_WriteMember = fopen("MembersData.txt", "w");
  1123.                 if(fptr_WriteMember == NULL)
  1124.                 {
  1125.                     printf("    ---- Error Member Write ----\n");
  1126.                     exit(EXIT_SUCCESS);
  1127.                 }
  1128.                 else
  1129.                 {
  1130.                     int _get_DiscountCoupon1 = 0, _get_DiscountCoupon2 = 0;
  1131.                     if((1000 <= total_money) && (total_money < 2000))
  1132.                         _get_DiscountCoupon1++;
  1133.                     else if(2000 <= total_money)
  1134.                         _get_DiscountCoupon2++;
  1135.  
  1136.                     all_member[now_member_counter].DiscountCoupon1 += _get_DiscountCoupon1;
  1137.                     all_member[now_member_counter].DiscountCoupon2 += _get_DiscountCoupon2;
  1138.                     for(int i = 0; i < counter; i++)
  1139.                         fprintf(fptr_WriteMember,  "%s %s %s %s %s %s %s %s %d %d\n", all_member[i].userID, all_member[i].name, \
  1140.                                                                                       all_member[i].username, all_member[i].password, \
  1141.                                                                                       all_member[i].phone, all_member[i].address, \
  1142.                                                                                       all_member[i].birthday, all_member[i].Email, \
  1143.                                                                                       all_member[i].DiscountCoupon1, all_member[i].DiscountCoupon2);
  1144.                     fclose(fptr_WriteMember);
  1145.  
  1146.                     printf("    ---- NT. %4d Payment Successful ----\n", total_money);
  1147.                     printf("    ---- You Get  %2d of [10%%-Off] Discount Coupon\n", _get_DiscountCoupon1);
  1148.                     printf("                  %2d of [15%%-Off] Discount Coupon ----\n", _get_DiscountCoupon2);
  1149.                     printf("    ---- Now Have %2d of [10%%-Off] Discount Coupon\n", all_member[now_member_counter].DiscountCoupon1);
  1150.                     printf("                  %2d of [15%%-Off] Discount Coupon ----\n", all_member[now_member_counter].DiscountCoupon2);
  1151.  
  1152.                     total_money = 0;
  1153.                     memset(myCart, 0, sizeof(myCart));
  1154.  
  1155.                     printf("\n");
  1156.                     system("pause");
  1157.                     return;
  1158.                 }
  1159.             }
  1160.             else if((_pay == 'n') || (_pay == 'N'))
  1161.             {
  1162.                 printf("    ---- Payment Failure ----\n");
  1163.                 goto Go_Shopping_Start;
  1164.                 break;
  1165.             }
  1166.             else
  1167.             {
  1168.                 exit(EXIT_SUCCESS);
  1169.                 return;
  1170.             }
  1171.             memset(myCart, 0, sizeof(myCart));
  1172.             break;
  1173.         }
  1174.  
  1175.         case 5:
  1176.         {
  1177.             if(cart_counter == 0)
  1178.                 return;
  1179.             else
  1180.             {
  1181.                 for(int i = 0; i < cart_counter; i++)
  1182.                 {
  1183.                     for(int j = 0; j < counter; j++)
  1184.                     {
  1185.                         if((strcmp(myCart[i].name, all_merchandise[j].name) == 0) && (strcmp(myCart[i].firm, all_merchandise[j].firm) == 0))
  1186.                         {
  1187.                             all_merchandise[j].stock += myCart[i].stock;
  1188.                             break;
  1189.                         }
  1190.                         else
  1191.                         {
  1192.                             if(j == counter - 1)
  1193.                             {
  1194.                                 all_merchandise[counter].uniform_numbers = counter;
  1195.                                 strcpy(all_merchandise[counter].name, myCart[i].name);
  1196.                                 all_merchandise[counter].price = myCart[i].price;
  1197.                                 strcpy(all_merchandise[counter].firm, myCart[i].firm);
  1198.                                 all_merchandise[counter].stock = myCart[i].stock;
  1199.                                 counter++;
  1200.                             }
  1201.                         }
  1202.                     }
  1203.                 }
  1204.             }
  1205.  
  1206.             FILE *fptr_WriteMerchandise = fopen("MerchandisesData.txt", "w");
  1207.             if(fptr_WriteMerchandise == NULL)
  1208.             {
  1209.                 printf("    ---- Error Merchandise Write ----\n");
  1210.                 exit(EXIT_SUCCESS);
  1211.             }
  1212.             else
  1213.             {
  1214.                 for(int i = 0; i < counter; i++)
  1215.                     fprintf(fptr_WriteMerchandise, "%d %s %d %s %d\n", all_merchandise[i].uniform_numbers, all_merchandise[i].name, \
  1216.                                                                        all_merchandise[i].price, all_merchandise[i].firm, \
  1217.                                                                        all_merchandise[i].stock);
  1218.                 fclose(fptr_WriteMerchandise);
  1219.             }
  1220.             memset(myCart, 0, sizeof(myCart));
  1221.             break;
  1222.         }
  1223.  
  1224.         default:
  1225.             break;
  1226.     }
  1227.     return;
  1228. }
  1229.  
  1230. void watch_member_informations()
  1231. {
  1232.     system("cls");
  1233.     printf("**** (Member) Watch Your Informations ****\n");
  1234.  
  1235.     struct MyMember all_member[100];
  1236.     FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  1237.     if(fptr_ReadMember == NULL)
  1238.     {
  1239.         printf("    ---- Error Member Read ----\n");
  1240.         exit(EXIT_SUCCESS);
  1241.     }
  1242.  
  1243.     int counter = 0;
  1244.     while(!feof(fptr_ReadMember))
  1245.     {
  1246.         fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  1247.                                                                    all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  1248.                                                                    all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  1249.                                                                    &all_member[counter].DiscountCoupon2);
  1250.         counter++;
  1251.     }
  1252.     fclose(fptr_ReadMember);
  1253.  
  1254.     printf("\n**** Date Table ****\n");
  1255.     printf("Items\t\t\t\tValue\n");
  1256.     printf("%s\t\t\t%s\n", "ID_Number", all_member[now_member_counter].userID);
  1257.     printf("%s\t\t\t\t%s\n", "Name", all_member[now_member_counter].name);
  1258.     printf("%s\t\t\t%s\n", "Username", all_member[now_member_counter].username);
  1259.     printf("%s\t\t\t%s\n", "Password", all_member[now_member_counter].password);
  1260.     printf("%s\t\t\t\t%s\n", "Phone", all_member[now_member_counter].phone);
  1261.     printf("%s\t\t\t\t%s\n", "Address", all_member[now_member_counter].address);
  1262.     printf("%s\t\t\t%s\n", "Birthday", all_member[now_member_counter].birthday);
  1263.     printf("%s\t\t\t\t%s\n", "E-Mail", all_member[now_member_counter].Email);
  1264.     printf("%s\t\t%d\n", "10%-Off Discount Coupon", all_member[now_member_counter].DiscountCoupon1);
  1265.     printf("%s\t\t%d\n", "15%-Off Discount Coupon", all_member[now_member_counter].DiscountCoupon2);
  1266.  
  1267.     return;
  1268. }
  1269.  
  1270. int update_member_informations()
  1271. {
  1272.     GO_Update_Member_Informations:
  1273.     system("cls");
  1274.     printf("**** (Member) Updata Your Informations ****\n");
  1275.  
  1276.     /* Random Code*/
  1277.     srand(time(NULL));
  1278.     char code[5] = {NULL};
  1279.     while(1)
  1280.     {
  1281.         for(int i = 0; i < 5; i++)
  1282.         {
  1283.             int _select_code_style = rand() % 2;
  1284.             if(_select_code_style == 0)
  1285.             {
  1286.                 int ranE = rand() % 2;
  1287.                 if(ranE == 0)
  1288.                     code[i] = (char)(rand() % 26 + 65);
  1289.                 else if(ranE == 1)
  1290.                     code[i] = (char)(rand() % 26 + 97);
  1291.             }
  1292.             else if(_select_code_style == 1)
  1293.             {
  1294.                 code[i] = (char)(rand() % 10 + 48);
  1295.             }
  1296.         }
  1297.  
  1298.         int check_code_N = 0, check_code_E = 0;
  1299.         for(int i = 0; i < 5; i++)
  1300.             if((48 <= (int)code[i]) && ((int)code[i] <= 57))
  1301.                 check_code_N++;
  1302.             else if(((65 <= (int)code[i]) && ((int)code[i] <= 90)) || ((97 <= (int)code[i]) && ((int)code[i] <= 122)))
  1303.                 check_code_E++;
  1304.         if((check_code_N != 5) && (check_code_E != 5))
  1305.             break;
  1306.     }
  1307.     printf("\n**** Before Update Informations, Please Enter The Code What You See ****\n");
  1308.     printf("[%s]: ", code);
  1309.     char input_code[5] = {NULL};
  1310.     scanf("%s", input_code);
  1311.  
  1312.     if(strcmp(input_code, code) == 0)
  1313.     {
  1314.         printf("    ---- Currect ----\n");
  1315.         struct MyMember all_member[100];
  1316.         FILE *fptr_ReadMember = fopen("MembersData.txt", "r");
  1317.         if(fptr_ReadMember == NULL)
  1318.         {
  1319.             printf("    ---- Error Member Read ----\n");
  1320.             exit(EXIT_SUCCESS);
  1321.         }
  1322.  
  1323.         int counter = 0;
  1324.         while(!feof(fptr_ReadMember))
  1325.         {
  1326.             fscanf(fptr_ReadMember, "%s %s %s %s %s %s %s %s %d %d\n", all_member[counter].userID, all_member[counter].name, all_member[counter].username, \
  1327.                                                                        all_member[counter].password, all_member[counter].phone, all_member[counter].address, \
  1328.                                                                        all_member[counter].birthday, all_member[counter].Email, &all_member[counter].DiscountCoupon1, \
  1329.                                                                        &all_member[counter].DiscountCoupon2);
  1330.             counter++;
  1331.         }
  1332.         fclose(fptr_ReadMember);
  1333.  
  1334.         struct MyMember update_member;
  1335.         printf("\n**** Update Member's Informations ****\n");
  1336.         strcpy(update_member.userID, all_member[now_member_counter].userID);
  1337.         printf("Update your [Name]: ");
  1338.         scanf("%s", update_member.name);
  1339.         strcpy(update_member.username, all_member[now_member_counter].username);
  1340.         printf("Update your [Password]: ");
  1341.         scanf("%s", update_member.password);
  1342.         printf("Update your [Phone]: ");
  1343.         scanf("%s", update_member.phone);
  1344.         printf("Update your [Address]: ");
  1345.         scanf("%s", update_member.address);
  1346.         printf("Update your [Birthday]: ");
  1347.         scanf("%s", update_member.birthday);
  1348.         printf("Update your [Email]: ");
  1349.         scanf("%s", update_member.Email);
  1350.         update_member.DiscountCoupon1 = all_member[now_member_counter].DiscountCoupon1;
  1351.         update_member.DiscountCoupon2 = all_member[now_member_counter].DiscountCoupon2;
  1352.  
  1353.         all_member[now_member_counter] = update_member;
  1354.  
  1355.         FILE *fptr_WriteMember = fopen("MembersData.txt", "w");
  1356.         if(fptr_WriteMember == NULL)
  1357.         {
  1358.             printf("    ---- Error Member Write ----\n");
  1359.             exit(EXIT_SUCCESS);
  1360.         }
  1361.         else
  1362.         {
  1363.             for(int i = 0; i < counter; i++)
  1364.                 fprintf(fptr_WriteMember,  "%s %s %s %s %s %s %s %s %d %d\n", all_member[i].userID, all_member[i].name, all_member[i].username, \
  1365.                                                                               all_member[i].password, all_member[i].phone, all_member[i].address, \
  1366.                                                                               all_member[i].birthday, all_member[i].Email, all_member[i].DiscountCoupon1, \
  1367.                                                                               all_member[i].DiscountCoupon2);
  1368.             fclose(fptr_WriteMember);
  1369.             printf("    ---- Member's Information Updated Successfully ----\n");
  1370.         }
  1371.     }
  1372.     else
  1373.     {
  1374.         printf("    ---- Error Code ----\n");
  1375.         printf("\nDo you want to try again? (y/n) ");
  1376.         char _select;
  1377.         scanf(" %c", &_select);
  1378.         switch(_select)
  1379.         {
  1380.             case 'y':
  1381.             case 'Y':
  1382.                 goto GO_Update_Member_Informations;
  1383.                 break;
  1384.  
  1385.             case 'n':
  1386.             case 'N':
  1387.                 return 0;
  1388.                 break;
  1389.  
  1390.             default:
  1391.                 exit(EXIT_SUCCESS);
  1392.                 return 1;
  1393.                 break;
  1394.         }
  1395.     }
  1396.     return 2;
  1397. }
  1398.  
  1399. int main(int argc, char const *argv[])
  1400. {
  1401.     system("cls");
  1402.     int _close = 0;
  1403.     //Check MembersData.txt
  1404.     FILE *fptr_CheckFile = fopen("MembersData.txt", "r");
  1405.     if(fptr_CheckFile == NULL)
  1406.     {
  1407.         printf("**** ERROR Message ****\n");
  1408.         printf("    ---- Do Not Have [MembersData.txt] File ----\n");
  1409.         _close = 1;
  1410.     }
  1411.     else
  1412.         fclose(fptr_CheckFile);
  1413.     //Check MerchandisesData.txt
  1414.     fptr_CheckFile = fopen("MerchandisesData.txt", "r");
  1415.     if(fptr_CheckFile == NULL)
  1416.     {
  1417.         if(_close == 0)
  1418.             printf("**** ERROR Message ****\n");
  1419.         printf("    ---- Do Not Have [MerchandisesData.txt] File ----\n");
  1420.         _close = 1;
  1421.     }
  1422.     else
  1423.         fclose(fptr_CheckFile);
  1424.     if(_close != 0)
  1425.     {
  1426.         printf("\n**** Press Any Key To Exit Program ****\n");
  1427.         system("pause");
  1428.         exit(EXIT_SUCCESS);
  1429.     }
  1430.  
  1431.     system("cls");
  1432.     printf("**** Enter 0 To Sign In, 1 To Sign Up, -1 To Exit Program. ****\n");
  1433.     printf("Enter your mode: ");
  1434.     int _select = 0;
  1435.     scanf("%d", &_select);
  1436.     switch(_select)
  1437.     {
  1438.         case -1:
  1439.             exit(EXIT_SUCCESS);
  1440.             return 0;
  1441.             break;
  1442.  
  1443.         case 0:
  1444.             switch(_signIn())
  1445.             {
  1446.                 case 0:
  1447.                     printf("\n");
  1448.                     system("pause");
  1449.                     main(0, NULL);
  1450.                     break;
  1451.  
  1452.                 case 1:
  1453.                 {
  1454.                     int _where_goback = 0;
  1455.                     AdministratorSignIn:
  1456.                     printf("\n");
  1457.                     if(_where_goback != 0)
  1458.                         system("pause");
  1459.                     _where_goback = 1;
  1460.  
  1461.                     system("cls");
  1462.                     printf("Hello, administrator. What do your want to do?\n");
  1463.                     printf("**** Enter 0 To Watch All Merchandise Informations\n");
  1464.                     printf("           1 To Add New Merchandise\n");
  1465.                     printf("           2 To Update Merchandise Informations\n");
  1466.                     printf("           3 To Delete Merchandise Informaions\n");
  1467.                     printf("           4 To Watch All Member Informaions\n");
  1468.                     printf("           5 To Delete Member Informations\n");
  1469.                     printf("           9 To Sign Out                         ****\n");
  1470.                     printf("Enter your mode: ");
  1471.                     scanf("%d", &_select);
  1472.                     switch(_select)
  1473.                     {
  1474.                         case -1:
  1475.                             exit(EXIT_SUCCESS);
  1476.                             return 0;
  1477.                             break;
  1478.  
  1479.                         case 0:
  1480.                             watch_all_merchandise_information();
  1481.                             goto AdministratorSignIn;
  1482.                             break;
  1483.  
  1484.                         case 1:
  1485.                             add_new_merchandise_information();
  1486.                             goto AdministratorSignIn;
  1487.                             break;
  1488.  
  1489.                         case 2:
  1490.                             _where_goback = update_the_merchandise_information();
  1491.                             goto AdministratorSignIn;
  1492.                             break;
  1493.  
  1494.                         case 3:
  1495.                             _where_goback = delete_the_merchandise_informaion();
  1496.                             goto AdministratorSignIn;
  1497.                             break;
  1498.  
  1499.                         case 4:
  1500.                             watch_all_members_information();
  1501.                             goto AdministratorSignIn;
  1502.                             break;
  1503.  
  1504.                         case 5:
  1505.                             _where_goback = delete_the_member_information();
  1506.                             goto AdministratorSignIn;
  1507.                             break;
  1508.  
  1509.                         case 9:
  1510.                             main(0, NULL);
  1511.                             return 0;
  1512.                             break;
  1513.  
  1514.                         default:
  1515.                             return 0;
  1516.                     }
  1517.                     break;
  1518.                 }
  1519.  
  1520.                 case 2:
  1521.                 {
  1522.                     int _where_goback = 0;
  1523.                     MemberSignIn:
  1524.                     printf("\n");
  1525.                     if(_where_goback != 0)
  1526.                         system("pause");
  1527.                     _where_goback = 1;
  1528.  
  1529.                     system("cls");
  1530.                     printf("Hello, member. What do your want to do?\n");
  1531.                     printf("**** Enter 0 To Go Shopping\n");
  1532.                     printf("           1 To Watch Your Informations\n");
  1533.                     printf("           2 To Update Your Informations\n");
  1534.                     printf("           9 To Sign Out                 ****\n");
  1535.                     printf("Enter your mode: ");
  1536.                     scanf("%d", &_select);
  1537.                     switch(_select)
  1538.                     {
  1539.                         case -1:
  1540.                             exit(EXIT_SUCCESS);
  1541.                             return 0;
  1542.                             break;
  1543.  
  1544.                         case 0:
  1545.                             go_shopping(1);
  1546.                             _where_goback = 0;
  1547.                             goto MemberSignIn;
  1548.                             break;
  1549.  
  1550.                         case 1:
  1551.                             watch_member_informations();
  1552.                             goto MemberSignIn;
  1553.                             break;
  1554.  
  1555.                         case 2:
  1556.                             _where_goback = update_member_informations();
  1557.                             goto MemberSignIn;
  1558.                             break;
  1559.  
  1560.                         case 9:
  1561.                             main(0, NULL);
  1562.                             return 0;
  1563.                             break;
  1564.  
  1565.                         default:
  1566.                             return 0;
  1567.                     }
  1568.                     break;
  1569.                 }
  1570.             }
  1571.             break;
  1572.  
  1573.         case 1:
  1574.             _signUp();
  1575.             printf("\n");
  1576.             system("pause");
  1577.             main(0, NULL);
  1578.             break;
  1579.  
  1580.         default:
  1581.             return 0;
  1582.     }
  1583.     return 0;
  1584. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement