Guest User

Untitled

a guest
Dec 27th, 2017
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 13.49 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<ctype.h>
  5. #include<Windows.h>
  6. #include<conio.h>
  7. struct User
  8. {
  9.     char fullName[100];
  10.     char passWord[100];
  11.     char userName[100];
  12.     char gender[20];
  13.     char phone[20];
  14. }user[1000],temp;
  15. struct Barang
  16. {
  17.     char kotaAsal[100],kotaTujuan[100],kode[100];
  18.     char namaBarang[100];
  19.     int repack,asuransi;
  20.     int checkOut;
  21.     int status,jumlah;
  22.     float panjang,lebar,tinggi;
  23.     float berat;
  24. }barang[1000];
  25. void spacing()
  26. {
  27.     //Tujuan : Untuk membuat 25 spasi diawal program
  28.     int i;
  29.     for(i=1; i<=25; i++)
  30.         printf("\n");
  31. }
  32. void title()
  33. {
  34.     //Tujuan: Untuk menampilkan Judul Menu Utama
  35.     //Preview
  36.     /*
  37.     ______           __               ________                   __    _       __    __
  38.    / ____/___ ______/ /____  _____   /_  __/ /_  ____ _____     / /   (_)___ _/ /_  / /_
  39.   / /_  / __ `/ ___/ __/ _ \/ ___/    / / / __ \/ __ `/ __ \   / /   / / __ `/ __ \/ __/
  40.  / __/ / /_/ (__  ) /_/  __/ /       / / / / / / /_/ / / / /  / /___/ / /_/ / / / / /_  
  41. /_/    \__,_/____/\__/\___/_/       /_/ /_/ /_/\__,_/_/ /_/  /_____/_/\__, /_/ /_/\__/  
  42.                                                                      /____/             */
  43.     Sleep(100);
  44.     printf("    ______           __               ________                   __    _       __    __ ");
  45.     printf("\n");
  46.     Sleep(100);
  47.     printf("   / ____/___ ______/ /____  _____   /_  __/ /_  ____ _____     / /   (_)___ _/ /_  / /_");
  48.     printf("\n");
  49.     Sleep(100);
  50.     printf("  / /_  / __ `/ ___/ __/ _ \\/ ___/    / / / __ \\/ __ `/ __ \\   / /   / / __ `/ __ \\/ __/");
  51.     printf("\n");
  52.     Sleep(100);
  53.     printf(" / __/ / /_/ (__  ) /_/  __/ /       / / / / / / /_/ / / / /  / /___/ / /_/ / / / / /_  ");
  54.     printf("\n");
  55.     Sleep(100);
  56.     printf("/_/    \\__,_/____/\\__/\\___/_/       /_/ /_/ /_/\\__,_/_/ /_/  /_____/_/\\__, /_/ /_/\\__/  ");
  57.     printf("\n");
  58.     Sleep(100);
  59.     printf("                                                                     /____/             ");
  60.     printf("\n");
  61. }
  62. void openFile(int *counter)
  63. {
  64.     int j = 0;
  65.     FILE *fp = fopen("user.txt","r");
  66.     if(fp)
  67.     {
  68.         while(fscanf(fp,"%[^#]#%[^#]#%[^#]#%[^#]#%[^\n]\n",&user[j].fullName,&user[j].userName,&user[j].passWord,&user[j].gender,&user[j].phone)!=EOF)
  69.         {
  70.             //printf("%s#%s#%s#%s#%s\n",user[j].fullName,user[j].userName,user[j].passWord,user[j].gender,user[j].phone);
  71.             j++;
  72.         }
  73.         (*counter) = j;
  74.         fclose(fp);
  75.     }
  76.     else
  77.     {
  78.         perror("Can't Open User.txt: ");
  79.         getchar();
  80.         exit(1);
  81.     }
  82. }
  83. void writeFile(int *counter)
  84. {
  85.     int i = (*counter),j;
  86.     FILE *f = fopen("user.txt","w");
  87.     if(f)
  88.     {
  89.         for(j=0; j<i; j++)
  90.         {
  91.             fprintf(f,"%s#%s#%s#%s#%s\n",user[j].fullName,user[j].userName,user[j].passWord,user[j].gender,user[j].phone);
  92.         }
  93.         fclose(f);
  94.     }
  95. }
  96. void createUser(char userName[])
  97. {
  98.     strcat(userName,".txt");
  99.     FILE *u = fopen(userName,"w+");
  100.     fclose(u);
  101. }
  102. void openUser(int *isi, char userName[])
  103. {
  104.     int i=0;
  105.     strcat(userName,".txt");
  106.     FILE *fu = fopen(userName,"r");
  107.     if(fu)
  108.     {
  109.         while(fscanf(fu,"%[^#]#%[^#]#%[^#]#%[^#]#%d#%d#%d#%d#%d#%f#%f#%f#%f#%f\n",&barang[i].kode,&barang[i].namaBarang,&barang[i].kotaAsal,&barang[i].kotaTujuan,&barang[i].repack,&barang[i].asuransi,&barang[i].checkOut,&barang[i].status,&barang[i].jumlah,&barang[i].panjang,&barang[i].lebar,&barang[i].tinggi,&barang[i].berat) !=EOF)
  110.         {
  111.             i++;
  112.         }
  113.         (*isi) = i;
  114.     }
  115.     fclose(fu);
  116. }
  117. void writeUser(int *isi, char userName[])
  118. {
  119.     int j = (*isi),i;
  120.     FILE *ff = fopen(userName,"w");
  121.     if(ff)
  122.     {
  123.         for(i=0; i<j; i++)
  124.         {
  125.             fprintf(ff,"%s#%s#%s#%s#%d#%d#%d#%d#%d#%.2f#%.2f#%.2f#%.2f#%.2f\n",barang[i].kode,
  126.                 barang[i].namaBarang,barang[i].kotaAsal,barang[i].kotaTujuan,
  127.                 barang[i].repack,barang[i].asuransi,barang[i].checkOut,barang[i].status,
  128.                 barang[i].jumlah,barang[i].panjang,barang[i].lebar,barang[i].tinggi,barang[i].berat);
  129.         }
  130.         fclose(ff);
  131.     }
  132. }
  133. int isUserExist(int *counter, char Username[])
  134. {
  135.     openFile(counter);
  136.     int i = (*counter),j;
  137.     for(j=0; j<i; j++)
  138.     {
  139.         if(strcmp(user[j].userName,Username) == 0)
  140.         {
  141.             return -1;
  142.         }
  143.     }
  144.     return 0;
  145. }
  146. int isPassExist(int *counter, char Password[])
  147. {
  148.     openFile(counter);
  149.     int i = (*counter),j;
  150.     for(j=0; j<i; j++)
  151.     {
  152.         if(strcmp(user[j].passWord,Password) == 0)
  153.         {
  154.             return -1;
  155.         }
  156.     }
  157.     return 0;
  158. }
  159. void registerUser(int *counter)
  160. {
  161.     char userName[100],passWord[100], fullName[100], gender[20], phone[20];
  162.     int flag=0,pjgAngka,x=(*counter),i;
  163.     printf("_ __                                          _ _ _             \n");
  164.     printf("' )  )             _/_         _/_            ' ) ) )               \n");
  165.     printf(" /--' _  _,  o _   /  __  __.  /  o __ ____    / / / _  ____  . .\n");
  166.     printf("/  \\_</_(_)_<_/_)_<__/ (_(_/|_<__<_(_)/ / <_  / ' (_</_/ / <_(_/_\n");
  167.     printf("         /|                                                      \n");
  168.     printf("        |/                                                       \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  169.     do
  170.     {
  171.         flag=0;
  172.         printf("Insert your Full Name [5-30 Characters]: ");
  173.         scanf("%[^\n]",&fullName);
  174.         fflush(stdin);
  175.         if(strlen(fullName)>30 || strlen(fullName)<5)
  176.         {
  177.             flag=0;
  178.         }
  179.         else
  180.         {
  181.             if(strcmpi(fullName,"cancel")==0)
  182.             {
  183.                 printf("Cancelling user creation...\nPress Enter to Continue...");
  184.                 return;
  185.             }
  186.             else
  187.             {
  188.                 flag=1;
  189.             }
  190.         }
  191.     }while(flag==0);
  192.     do
  193.     {
  194.         flag=0;
  195.         printf("Insert your UserName [3-30 Characters]: ");
  196.         scanf("%[^\n]",&userName);
  197.         fflush(stdin);
  198.         if(strlen(userName)>30 || strlen(userName)<3)
  199.         {
  200.             flag=0;
  201.         }
  202.         else
  203.         {
  204.             if(isUserExist(counter,userName)==0)
  205.                 flag=1;
  206.             else if(strcmpi(userName,"cancel")==0)
  207.             {
  208.                 printf("Username can't be \"Cancel\"\n");
  209.                 flag=0;
  210.             }
  211.             else
  212.             {
  213.                 printf("This Username has already taken!\n");
  214.                 flag=0;
  215.             }
  216.         }
  217.     }while(flag==0);
  218.         do
  219.     {
  220.         flag=0;
  221.         printf("Insert your password [3-30 Characters]: ");
  222.         scanf("%[^\n]",&passWord);
  223.         fflush(stdin);
  224.         if(strlen(passWord)>30 || strlen(passWord)<3)
  225.         {
  226.             flag=0;
  227.         }
  228.         else
  229.         {
  230.             flag=1;
  231.         }
  232.     }while(flag==0);
  233.     do
  234.     {
  235.         flag=0;
  236.         printf("Insert your gender [Male|Female] [Case Sensitive]: ");
  237.         scanf("%[^\n]",&gender);
  238.         fflush(stdin);
  239.         if(strcmp("Male",gender)==0||strcmp("Female",gender)==0)
  240.             flag=1;
  241.         else
  242.             flag=0;
  243.     }while(flag==0);
  244.     do
  245.     {
  246.         flag=0;
  247.         printf("Insert your phone number [Must start with '+62' or '08'] : ");
  248.         scanf("%s",&phone);
  249.         fflush(stdin);
  250.         pjgAngka = strlen(phone);
  251.         if(pjgAngka>13||pjgAngka<11)
  252.             flag=0;
  253.         else
  254.         {
  255.             if(phone[0]=='+'&&phone[1]=='6'&&phone[2]=='2'||phone[0]=='0'&&phone[1]=='8')
  256.             {
  257.                 flag=1;
  258.                 for(i=0; i<pjgAngka; i++)
  259.                 {
  260.                     if(i==0)
  261.                     {
  262.                         continue;
  263.                     }
  264.                     else
  265.                     {
  266.                         if(!isdigit(phone[i]))
  267.                         {
  268.                             flag=0;
  269.                             break;
  270.                         }
  271.                     }
  272.                 }
  273.             }
  274.             else
  275.             {
  276.                 flag=0;
  277.             }
  278.         }
  279.     }while(flag==0);
  280.     printf("Successfully Registering New Account!\n");
  281.     strcpy(user[x].fullName, fullName);
  282.     strcpy(user[x].userName,userName);
  283.     strcpy(user[x].gender,gender);
  284.     strcpy(user[x].passWord,passWord);
  285.     strcpy(user[x].phone,phone);
  286.     x++;
  287.     createUser(userName);
  288.     (*counter) = x;
  289.     writeFile(counter);
  290. }
  291. void printAllU(int *counter)
  292. {
  293.     int i;
  294.     printf("|%-4s|%-30s|%-30s|%-30s|%-10s|%14s|\n","No.","Full Name","Username","Password","Gender","Phone Number");
  295.     for(i=0; i<(*counter); i++)
  296.     {
  297.         printf("|%-4d|%-30s|%-30s|%-30s|%-10s|%14s|\n",i+1,user[i].fullName,user[i].userName,user[i].passWord,user[i].gender,user[i].phone);
  298.     }
  299. }
  300. void adminMenu(int *counter)
  301. {
  302.     system("cls");
  303.     printf("\t\t\tThis is Admin Menu\n\t\t\tWork in Progress\n");
  304.     printAllU(counter);
  305.     //Read User Data (View Data)
  306.     //Close User Data (End)
  307. }
  308. void addNewItem(int *jumlah)
  309. {
  310.     int i,flag,x=(*jumlah);
  311.     system("cls");
  312.     char kode[10];
  313.     char yesNo1[10],yesNo2[10];
  314.     spacing();
  315.     do
  316.     {
  317.         flag=0;
  318.         printf("Input Item Name [3-20 Chars] : ");
  319.         scanf("%[^\n]",&barang[x].namaBarang);
  320.         fflush(stdin);
  321.         if(strlen(barang[x].namaBarang)>20||strlen(barang[x].namaBarang)<3)
  322.         {
  323.             flag=0;
  324.         }
  325.         else
  326.         {
  327.             flag=1;
  328.         }
  329.     }while(flag==0);
  330.     do
  331.     {
  332.         flag=0;
  333.         printf("Input Item's Weight [Kg] : ");
  334.         scanf("%f",&barang[x].berat);
  335.         fflush(stdin);
  336.         if(barang[x].berat>0&&barang[x].berat<=100)
  337.             flag=1;
  338.     }while(flag==0);
  339.     do
  340.     {
  341.         flag=0;
  342.         printf("Input Item Amount : ");
  343.         scanf("%d",&barang[x].jumlah);
  344.         fflush(stdin);
  345.         if(barang[x].jumlah>0)
  346.             flag=1;
  347.     }while(flag==0);
  348.     do
  349.     {
  350.         flag=0;
  351.         printf("Input Item Dimension [Height|Width|Lenght] [centimetres] : ");
  352.         scanf("%f %f %f",&barang[x].tinggi,&barang[x].lebar,&barang[x].panjang);
  353.         fflush(stdin);
  354.         if(barang[x].tinggi*barang[x].lebar*barang[x].panjang !=0)
  355.             flag=1;
  356.     }while(flag==0);
  357.     do
  358.     {
  359.         flag=0;
  360.         printf("Does it need extra repack? [Yes|No]\n>> ");
  361.         scanf("%s",&yesNo1);
  362.         fflush(stdin);
  363.         if(strcmpi(yesNo1,"yes"))
  364.         {
  365.             barang[x].repack = 1;
  366.             flag=1;
  367.         }
  368.         else if(strcmpi(yesNo1,"no"))
  369.         {
  370.             barang[x].repack = 0;
  371.             flag=1;
  372.         }
  373.         else
  374.         {
  375.             printf("Choose \"Yes\" or \"No\" only!\n");
  376.             flag=0;
  377.         }
  378.     }while(flag==0);
  379.     do
  380.     {
  381.         flag=0;
  382.         printf("Does it need insurance? [Yes|No]\n>> ");
  383.         scanf("%s",&yesNo2);
  384.         fflush(stdin);
  385.         if(strcmpi(yesNo2,"yes"))
  386.         {
  387.             barang[x].asuransi = 1;
  388.             flag=1;
  389.         }
  390.         else if(strcmpi(yesNo2,"no"))
  391.         {
  392.             barang[x].asuransi = 0;
  393.             flag=1;
  394.         }
  395.         else
  396.         {
  397.             printf("Choose \"Yes\" or \"No\" only!\n");
  398.             flag=0;
  399.         }
  400.     }while(flag==0);
  401.     do
  402.     {
  403.         flag=0;
  404.         printf("Insert City Departure Address [From]: ");
  405.         scanf("%[^\n]",&barang[x].kotaAsal);
  406.         fflush(stdin);
  407.         if(strlen(barang[x].kotaAsal)>3)
  408.             flag=1;
  409.     }while(flag==0);
  410.     do
  411.     {
  412.         flag=0;
  413.         printf("Insert City Destination Address [From]: ");
  414.         scanf("%[^\n]",&barang[x].kotaTujuan);
  415.         fflush(stdin);
  416.         if(strlen(barang[x].kotaTujuan)>3)
  417.             flag=1;
  418.     }while(flag==0);
  419.     barang[x].checkOut = 0;
  420.     barang[x].status = 0;
  421.     strcat(barang[x].kode,"FTL");
  422.     itoa(x,kode,10);
  423.     strcat(barang[x].kode,kode);
  424.     x++;
  425.     (*jumlah) = x;
  426.     printf("Successfully Add New Item!\nPress Enter to Continue");
  427.     getchar();
  428. }
  429. void viewCurrentCart(int *jumlah)
  430. {
  431.     system("cls");
  432.     int x = (*jumlah),i,j=1;
  433.     printf("|%-4s|%30s|%-20s|%-25s|%-20s|%-20s|%-10s|\n","No.","Item Name","Amount","Dimension","Weight","Insurance","Repacking");
  434.     for(i=0; i<x-1; i++)
  435.     {
  436.         if(barang[i].checkOut==0)
  437.         {
  438.             if(barang[i].asuransi==1&&barang[i].repack==1)
  439.                 printf("|%-4d|%30s|%-20d|%-20.2f cm^3|%-18.0f Kg|%-20s|%-10s|\n",j,barang[i].namaBarang,barang[i].jumlah,barang[i].panjang*barang[i].lebar*barang[i].tinggi,barang[i].berat,"Yes","Yes");
  440.             else if(barang[i].asuransi==1&&barang[i].repack==0)
  441.                 printf("|%-4d|%30s|%-20d|%-20.2f cm^3|%-18.0f Kg|%-20s|%-10s|\n",j,barang[i].namaBarang,barang[i].jumlah,barang[i].panjang*barang[i].lebar*barang[i].tinggi,barang[i].berat,"Yes","No");
  442.             else if(barang[i].asuransi==0&&barang[i].repack==1)
  443.                 printf("|%-4d|%30s|%-20d|%-20.2f cm^3|%-18.0f Kg|%-20s|%-10s|\n",j,barang[i].namaBarang,barang[i].jumlah,barang[i].panjang*barang[i].lebar*barang[i].tinggi,barang[i].berat,"No","Yes");
  444.             else
  445.                 printf("|%-4d|%30s|%-20d|%-20.2f cm^3|%-18.0f Kg|%-20s|%-10s|\n",j,barang[i].namaBarang,barang[i].jumlah,barang[i].panjang*barang[i].lebar*barang[i].tinggi,barang[i].berat,"No","No");
  446.             j++;
  447.         }
  448.         else
  449.         {
  450.             continue;
  451.         }
  452.     }
  453.     getchar();
  454.  
  455. }
  456. void userMenu(int *counter,char userLogin[])
  457. {
  458.     int jumlah=0;
  459.     char menu;
  460.     //Baca Data User Tersebut
  461.     openUser(&jumlah,userLogin);
  462.     do
  463.     {
  464.         system("cls");
  465.         printf("1. Add New Item\n");
  466.         printf("2. Checkout\n");
  467.         printf("3. View My Current Cart\n");
  468.         printf("4. View My Transaction\n");
  469.         printf("5. View Profile\n");
  470.         printf("6. Log Out\n");
  471.         printf("Choose : ");
  472.         menu = getch();
  473.         switch(menu)
  474.         {
  475.         case '1':
  476.             addNewItem(&jumlah);
  477.             writeUser(&jumlah,userLogin);
  478.             break;
  479.         case '2':
  480.            
  481.             break;
  482.         case '3':
  483.             viewCurrentCart(&jumlah);
  484.             break;
  485.         case '4':
  486.             break;
  487.         case '5':
  488.             break;
  489.         case '6':
  490.             printf("\nLogging User Out...\nPress Enter to Continue");
  491.             return;
  492.             break;
  493.         }
  494.     }while(menu!='6');
  495. }
  496. int main()
  497. {
  498.     title();
  499.     char userLogin[100];
  500.     char userPassword[100];
  501.     int flag, counterEntry=0;
  502.     char choose;
  503.     printf("\nPress ENTER to Continue...");
  504.     getchar();
  505.     //Entering Main Menu
  506.     do
  507.     {
  508.         //Main Menu
  509.         system("cls");
  510.         spacing();
  511.         title();
  512.         printf("\n\n\n\n");
  513.         printf("1. Login\n");
  514.         printf("2. Register\n");
  515.         printf("3. Exit\nChoose: ");
  516.         choose = getch();
  517.         fflush(stdin);
  518.         puts("");
  519.         switch(choose)
  520.         {
  521.         case '1': //Login Menu
  522.             do
  523.             {
  524.                 flag=0;
  525.                 system("cls");
  526.                 spacing();
  527.                 printf("Username : ");
  528.                 scanf("%[^\n]",&userLogin);
  529.                 fflush(stdin);
  530.                 printf("Password : ");
  531.                 scanf("%[^\n]",&userPassword);
  532.                 fflush(stdin);
  533.                 if(strcmp(userLogin,"admin")==0&&strcmp(userPassword,"admin")==0)
  534.                 {
  535.                     flag=1;
  536.                     //Entering Admin Menu
  537.                     adminMenu(&counterEntry);
  538.                     getchar();
  539.                 }
  540.                 else if(strcmpi(userLogin,"cancel")==0)
  541.                 {
  542.                     printf("Cancelling user creation...\nPress Enter to Continue...");
  543.                     flag=1;
  544.                 }
  545.                 else
  546.                 {
  547.                     //Validate for User Menu
  548.                     if(isUserExist(&counterEntry,userLogin)!=0&&isPassExist(&counterEntry,userPassword)!=0)
  549.                     {
  550.                         flag=1;
  551.                         userMenu(&counterEntry,userLogin);
  552.                     }
  553.                     else
  554.                     {
  555.                         flag=0;
  556.                     }
  557.                     getchar();
  558.                 }
  559.             }while(flag==0);
  560.            
  561.             break;
  562.         case '2': //Register Menu
  563.             system("cls");
  564.             openFile(&counterEntry);
  565.             registerUser(&counterEntry);   
  566.             break;
  567.         case '3': //Exit
  568.             exit(0);
  569.             break;
  570.         }
  571.         getchar();
  572.     }while(choose!='3');
  573.     //getchar();
  574.     return 0;
  575. }
Add Comment
Please, Sign In to add comment