Advertisement
Guest User

Untitled

a guest
Dec 27th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement