Advertisement
Guest User

Untitled

a guest
Apr 15th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.90 KB | None | 0 0
  1. program Cinema_TI;
  2. uses crt;
  3.  
  4. type
  5. user = record
  6. name_, address, identityNumber, phone, username,
  7. password, email, memberType: string;
  8. point: qword;
  9. end;
  10.  
  11. type
  12. movie = record
  13. title: string;
  14. point, price: qword;
  15. end;
  16.  
  17. type
  18. order = record
  19. orderedMovie: movie;
  20. price: qword;
  21. session: integer;
  22. seat: string;
  23. end;
  24.  
  25. const
  26. ADMIN_USERNAME = 'admin';
  27. ADMIN_PASSWORD ='admin';
  28. USERDATA_PATH = 'userData.txt';
  29. MOVIEDATA_PATH = 'movieData.txt';
  30. ORDERDATA_PATH = 'orderData.txt';
  31.  
  32.  
  33. procedure createOrderInvoice(newOrder: order; method: integer);
  34. begin
  35. clrscr();
  36. randomize;
  37.  
  38. gotoxy(2, 2); write('Struk Pemesanan Gold Cinema TI');
  39.  
  40. gotoxy(2, 4); write('Judul');
  41. gotoxy(22, 4); write(': ', newOrder.orderedMovie.title);
  42.  
  43. gotoxy(2, 5); write('Kursi');
  44. gotoxy(22, 5);write(': ', newOrder.seat);
  45.  
  46. gotoxy(2, 6); write('Jam');
  47. gotoxy(22, 6);
  48.  
  49. if (newOrder.session = 1) then write(': 12.00');
  50. if (newOrder.session = 2) then write(': 15.30');
  51. if (newOrder.session = 3) then write(': 19.00');
  52.  
  53. gotoxy(2, 8); write('Pembayaran');
  54. gotoxy(22, 8);
  55.  
  56. if (method = 1) then write(': Cash');
  57. if (method = 2) then write(': Transfer Bank');
  58.  
  59. gotoxy(2, 9); write('Kode Pembayaran');
  60. gotoxy(22, 9); write(': ', random(9), random(9), random(9), random(9), random(9));
  61.  
  62. if (method = 2) then
  63. begin
  64. gotoxy(2, 11); writeln('Silakan Transfer Ke Nomor Rekening Berikut:');
  65. gotoxy(2, 13); writeln('No Rekening');
  66. gotoxy(22, 13); write(': 1109-01-008-389-50-2');
  67. gotoxy(2, 14); writeln('Nama');
  68. gotoxy(22, 14); write(': Cinema TI');
  69. end;
  70.  
  71. readln;
  72. end;
  73.  
  74.  
  75. procedure chooseOrderPayment(newOrder: order);
  76. var
  77. choice: integer;
  78.  
  79. begin
  80. repeat
  81. clrscr();
  82. gotoxy(2, 2); write('Silakan Pilih Metode Pembayaran');
  83. gotoxy(2, 4); write('1) Cash');
  84. gotoxy(2, 5); write('2) Transfer Bank');
  85.  
  86. gotoxy(2, 7); write('Pilihan Anda: ');
  87. readln(choice);
  88.  
  89. if (choice < 1) or (choice > 3) then
  90. begin
  91. gotoxy(2, 9);
  92. writeln('Maaf Permintaan Anda Tidak Dapat Kami Proses');
  93.  
  94. gotoxy(2, 10);
  95. writeln('Silakan Ulangi Lagi');
  96.  
  97. readln;
  98. end else
  99. begin
  100. createOrderInvoice(newOrder, choice);
  101. end;
  102.  
  103. until (choice = 1) or (choice = 2);
  104. end;
  105.  
  106.  
  107. procedure chooseSeat(newOrder: order; time: integer);
  108. var
  109. orderData: file of order;
  110. tmpOrder: order;
  111. choice: string;
  112. exist: boolean;
  113.  
  114. begin
  115. assign(orderData, ORDERDATA_PATH);
  116.  
  117. repeat
  118. exist := false;
  119. reset(orderData);
  120.  
  121. clrscr();
  122. gotoxy(2, 2); write('Daftar Kursi');
  123. gotoxy(2, 4); writeln('E1 E2 E3 E4 E5 E6 E7');
  124. gotoxy(9, 6); writeln('Layar');
  125.  
  126. gotoxy(2, 8); write('Pilihan Kursi: ');
  127. readln(choice);
  128.  
  129. choice := upcase(choice);
  130.  
  131. while not eof(orderData) do
  132. begin
  133. read(orderData, tmpOrder);
  134. if (newOrder.session = tmpOrder.session) and (choice = tmpOrder.seat) then
  135. exist := true;
  136. end;
  137.  
  138. if exist then
  139. begin
  140. writeln('Kursi Sudah Dipesan');
  141. writeln('Silakan Pilih Kursi Yang Lain');
  142.  
  143. readln;
  144. end else
  145. begin
  146. newOrder.seat := choice;
  147. write(orderData, newOrder);
  148. chooseOrderPayment(newOrder);
  149. end;
  150.  
  151. until (exist = false);
  152.  
  153. close(orderData);
  154. end;
  155.  
  156.  
  157. procedure editPoint(var editUser: user; point: qword);
  158. var
  159. userData: file of user;
  160. tmpUser: user;
  161. position: integer;
  162.  
  163. begin
  164. assign(userData, USERDATA_PATH);
  165. reset(userData);
  166.  
  167. while not eof(userData) do
  168. begin
  169. position := filePos(userData);
  170. read(userData, tmpUser);
  171.  
  172. if (tmpUser.username = editUser.username) and (tmpUser.password = editUser.password) then
  173. begin
  174. editUser.point := editUser.point + point;
  175. seek(userData, position);
  176. write(userData, editUser);
  177. break;
  178. end;
  179. end;
  180.  
  181. close(userData);
  182. end;
  183.  
  184.  
  185. procedure orderTicket(var tmpUser: user);
  186. var
  187. movieData: file of movie;
  188. tmpMovie : movie;
  189. newOrder : order;
  190. choice: integer;
  191.  
  192. begin
  193. assign(movieData, MOVIEDATA_PATH);
  194. reset(movieData);
  195.  
  196. read(movieData, tmpMovie);
  197.  
  198. repeat
  199. clrscr();
  200.  
  201. gotoxy(2, 2);
  202. writeln('Judul Film Pada Hari Ini: ', tmpMovie.title);
  203. writeln();
  204.  
  205. gotoxy(2, 4); writeln('Jam Tayang:');
  206. gotoxy(2, 6); writeln('1) 12.00');
  207. gotoxy(2, 7); writeln('2) 15.30');
  208. gotoxy(2, 8); writeln('3) 19.00');
  209. gotoxy(2, 9); writeln('4) Kembali');
  210.  
  211. gotoxy(2, 11); write('Silakan Masukkan Pilihan Anda: ');
  212. readln(choice);
  213.  
  214. newOrder.orderedMovie := tmpMovie;
  215. newOrder.price := tmpMovie.price;
  216.  
  217. if (choice < 1) or (choice > 4) then
  218. begin
  219. gotoxy(2, 13); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
  220. gotoxy(2, 14); write('Silakan Masukkan Dengan Benar');
  221. readln;
  222. end else if (choice <> 4) then
  223. begin
  224. editPoint(tmpUser, tmpMovie.point);
  225. newOrder.session := choice;
  226. chooseSeat(newOrder, choice)
  227. end;
  228.  
  229. until (choice = 4);
  230.  
  231. close(movieData);
  232. end;
  233.  
  234.  
  235. procedure tradePoint(var tmpUser: user);
  236. var
  237. choice: integer;
  238. charChoice: string;
  239. sub: qword;
  240.  
  241.  
  242. begin
  243. repeat
  244. clrscr();
  245.  
  246. gotoxy(2, 2); write('Selamat Datang');
  247. gotoxy(2, 3); write('Total Poin Anda: ', tmpUser.point);
  248.  
  249. gotoxy(2, 5); write('1) Tukar Popcorn');
  250. gotoxy(2, 6); write('2) Tukar Soda');
  251. gotoxy(2, 7); writeln('3) Kembali');
  252.  
  253. gotoxy(2, 9); write('Silakan Pilih Menu Pilihan Anda: ');
  254. readln(choice);
  255.  
  256. if (choice = 1) then
  257. sub := 200
  258.  
  259. else if (choice = 2) then
  260. sub := 100
  261.  
  262. else if (choice = 3) then
  263. break
  264.  
  265. else if (choice <> 3) then
  266. begin
  267. gotoxy(2, 14); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
  268. gotoxy(2, 15); write('Silakan Masukkan Kembali');
  269. readln;
  270. continue;
  271. end;
  272.  
  273. if (tmpUser.point < sub) then
  274. begin
  275. gotoxy(2, 11); write('Poin Anda Tidak Cukup');
  276. readln;
  277. continue;
  278. end;
  279.  
  280. gotoxy(2, 11); write('Apakah anda yakin? [y/n]');
  281. gotoxy(2, 12); write('Pilihan Anda: ');
  282. readln(charChoice);
  283.  
  284. if (upcase(charChoice) = 'Y') then
  285. begin
  286. editPoint(tmpUser, -sub);
  287. gotoxy(2, 14); write('Selamat Anda Menukarkan Poin Anda');
  288. gotoxy(2, 15); write('Sisa Poin: ', tmpUser.point);
  289. readln;
  290. end;
  291.  
  292. until (choice = 3);
  293.  
  294. end;
  295.  
  296.  
  297. procedure userMainMenu(var tmpUser: user);
  298. var
  299. choice: integer;
  300.  
  301. begin
  302. repeat
  303. clrscr();
  304.  
  305. gotoxy(2, 2); write('Selamat Datang');
  306. gotoxy(2, 4); write('1) Pemesanan Tiket');
  307. gotoxy(2, 5); write('2) Tukar Poin');
  308. gotoxy(2, 6); writeln('3) Kembali');
  309.  
  310. gotoxy(2, 8); write('Silakan Pilih Menu Pilihan Anda: ');
  311. readln(choice);
  312.  
  313. if (choice = 1) then
  314. orderTicket(tmpUser)
  315.  
  316. else if(choice = 2) then
  317. tradePoint(tmpUser)
  318.  
  319. else if(choice <> 3) then
  320. begin
  321. gotoxy(2, 11); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
  322. gotoxy(2, 12); write('Silakan Masukkan Kembali');
  323. readln;
  324. end;
  325.  
  326. until (choice = 3);
  327. end;
  328.  
  329.  
  330. procedure userLogin();
  331. var
  332. userData: file of user;
  333. tmpUser: user;
  334. username, password:string;
  335.  
  336. begin
  337. assign(userData, USERDATA_PATH);
  338. reset(userData);
  339.  
  340. repeat
  341. clrscr();
  342.  
  343. gotoxy(2, 2); write('Username: ');
  344. readln(username);
  345.  
  346. gotoxy(2, 4); write('Password: ');
  347. readln(password);
  348.  
  349. while not eof(userData) do
  350. begin
  351. read (userData, tmpUser);
  352. if (username = tmpUser.username) and (password = tmpUser.password) then
  353. break;
  354. end;
  355.  
  356. until (username = tmpUser.username) and (password = tmpUser.password);
  357.  
  358. close(userData);
  359. userMainMenu(tmpUser);
  360. end;
  361.  
  362.  
  363. procedure createRegistrationInvoice(newUser: user; method: integer);
  364. begin
  365. clrscr();
  366. gotoxy(2, 2); write('Struk Pembuatan Member Gold Cinema VVIP');
  367.  
  368. { print new user data }
  369.  
  370. gotoxy(2, 4); write('Nama');
  371. gotoxy(22, 4); write(': ', newUser.name_);
  372.  
  373. gotoxy(2, 5); write('Alamat');
  374. gotoxy(22, 5); write(': ',newUser.address);
  375.  
  376. gotoxy(2, 6); write('Nomor Telepon');
  377. gotoxy(22, 6); write(': ',newUser.phone);
  378.  
  379. gotoxy(2, 7); write('Nomor Identitas');
  380. gotoxy(22, 7); write(': ',newUser.identityNumber);
  381.  
  382. gotoxy(2, 8); write('Alamat Email');
  383. gotoxy(22, 8); write(': ',newUser.email);
  384.  
  385. gotoxy(2, 9); write('Username');
  386. gotoxy(22, 9); write(': ',newUser.username);
  387.  
  388. gotoxy(2, 10); write('Password');
  389. gotoxy(22, 10); write(': ',newUser.password);
  390.  
  391. gotoxy(2, 11); write('Member Gold VVIP');
  392. gotoxy(22, 11); write(': ',newUser.memberType);
  393.  
  394.  
  395. gotoxy(2, 13); write('Pembayaran');
  396. gotoxy(22, 13);
  397.  
  398. if (method = 1) then write(': Cash');
  399. if (method = 2) then write(': Transfer Bank');
  400.  
  401. gotoxy(2, 14); write('Jumlah');
  402. gotoxy(22, 14);
  403.  
  404. if (newUser.memberType = '1 Tahun') then write(': 450000');
  405. if (newUser.memberType = '1 Bulan') then write(': 50000');
  406. if (newUser.memberType = '3 Bulan') then write(': 130000');
  407. if (newUser.memberType = '6 Bulan') then write(': 240000');
  408.  
  409. if (method = 2) then
  410. begin
  411. gotoxy(2, 16); writeln('Silakan Transfer Ke Nomor Rekening Berikut:');
  412. gotoxy(2, 18); writeln('No Rekening');
  413. gotoxy(22, 18); write(': 1109-01-008-389-50-2');
  414. gotoxy(2, 19); writeln('Nama');
  415. gotoxy(22, 19); write(': Cinema TI');
  416. end;
  417.  
  418. readln;
  419. end;
  420.  
  421.  
  422. procedure chooseRegistrationPayment(newUser: user);
  423. var
  424. choice: integer;
  425.  
  426. begin
  427. repeat
  428. clrscr();
  429. gotoxy(2, 2); write('Silakan Pilih Metode Pembayaran');
  430. gotoxy(2, 4); write('1) Cash');
  431. gotoxy(2, 5); write('2) Transfer Bank');
  432.  
  433. gotoxy(2, 7); write('Pilihan Anda: ');
  434. readln(choice);
  435.  
  436. if (choice < 1) or (choice > 2) then
  437. begin
  438. gotoxy(2, 9);
  439. writeln('Maaf Permintaan Anda Tidak Dapat Kami Proses');
  440.  
  441. gotoxy(2, 10);
  442. writeln('Silakan Ulangi Lagi');
  443.  
  444. readln;
  445.  
  446. end else
  447. begin
  448. createRegistrationInvoice(newUser, choice);
  449. end;
  450.  
  451. until (choice = 1) or (choice = 2)
  452. end;
  453.  
  454.  
  455. procedure chooseMemberType(newUser: user);
  456. var
  457. userData: file of user;
  458. choice: integer;
  459.  
  460. begin
  461. assign(userData, USERDATA_PATH);
  462. reset(userData);
  463. seek(userData, filesize(userData));
  464.  
  465. repeat
  466. clrscr();
  467.  
  468. gotoxy(2, 2); write('Pilihan Paket Member Gold VVIP');
  469. gotoxy(2, 4); write('1) 1 Bulan 50000');
  470. gotoxy(2, 5); write('2) 3 Bulan 130000');
  471. gotoxy(2, 6); write('3) 6 Bulan 240000');
  472. gotoxy(2, 7); write('4) 1 Tahun 450000');
  473.  
  474. gotoxy(2, 9); write('Silakan Masukkan Pilihan Anda: ');
  475. readln(choice);
  476.  
  477. if (choice < 1) or (choice > 4) then
  478. begin
  479. gotoxy(2, 11); write('Maaf Permintaan Anda Tidak Dapat Diproses');
  480. gotoxy(2, 12); write('Silakan Masukkan Pilihan Dengan Benar');
  481. readln;
  482. end else
  483. begin
  484. if(choice = 1) then newUser.memberType := '1 Bulan';
  485. if(choice = 2) then newUser.memberType := '3 Bulan';
  486. if(choice = 3) then newUser.memberType := '6 Bulan';
  487. if(choice = 4) then newUser.memberType := '1 Tahun';
  488.  
  489. write(userData, newUser);
  490. chooseRegistrationPayment(newUser);
  491. end;
  492.  
  493. until (choice = 1) or (choice = 2) or (choice = 3) or (choice = 4);
  494.  
  495. close(userData);
  496. end;
  497.  
  498.  
  499. procedure userRegister();
  500. var
  501. newUser: user;
  502.  
  503. begin
  504. clrscr();
  505.  
  506. gotoxy(2,2); writeln('Selamat Datang di Pendaftaran Gold VVIP Cinema TI');
  507. gotoxy(2,4); write('Tekan ENTER Untuk Mulai Memasukkan Data');
  508. readln;
  509.  
  510. { input user data }
  511.  
  512. clrscr();
  513.  
  514. gotoxy(2, 2); write('Nama');
  515. gotoxy(18, 2); write(': ');
  516. readln(newUser.name_);
  517.  
  518. gotoxy(2, 4); write('Alamat');
  519. gotoxy(18, 4); write(': ');
  520. readln(newUser.address);
  521.  
  522. gotoxy(2, 6); write('Nomor Telepon');
  523. gotoxy(18, 6); write(': ');
  524. readln(newUser.phone);
  525.  
  526. gotoxy(2, 8); write('Nomor Identitas');
  527. gotoxy(18, 8); write(': ');
  528. readln(newUser.identityNumber);
  529.  
  530. gotoxy(2, 10); write('Alamat Email');
  531. gotoxy(18, 10); write(': ');
  532. readln(newUser.email);
  533.  
  534. gotoxy(2, 12); write('Username');
  535. gotoxy(18, 12); write(': ');
  536. readln(newUser.username);
  537.  
  538. gotoxy(2, 14); write('Password');
  539. gotoxy(18, 14); write(': ');
  540. readln(newUser.password);
  541.  
  542. gotoxy(2, 10);
  543. write('Terima Kasih. Silakan Tekan ENTER Untuk Melanjutkan');
  544.  
  545. chooseMemberType(newUser);
  546.  
  547. end;
  548.  
  549.  
  550. procedure userInterface();
  551. var
  552. choice: integer;
  553.  
  554. begin
  555. repeat
  556. clrscr();
  557. gotoxy(2, 2); writeln('Menu Pilihan User GOLD VVIP Cinema TI');
  558. gotoxy(2, 4); writeln('1) Login');
  559. gotoxy(2, 5); writeln('2) Buat Akun GOLD VVIP');
  560. gotoxy(2, 6); writeln('3) Kembali');
  561.  
  562. gotoxy(2, 8); write('Silakan Masukkan Pilihan Anda: ');
  563. readln(choice);
  564.  
  565. if (choice < 1) or (choice > 3) then
  566. begin
  567. gotoxy(2, 10); writeln('Maaf Pilihan Menu Tidak Tersedia');
  568. gotoxy(2, 12); writeln('Silakan Masukan Ulang dengan Menekan ENTER');
  569. readln;
  570. end else if (choice = 1) then userLogin()
  571. else if (choice = 2) then userRegister()
  572.  
  573. until (choice = 3);
  574. end;
  575.  
  576.  
  577. procedure listFilm();
  578. var
  579. movieData: file of movie;
  580. tmpMovie: movie;
  581.  
  582. begin
  583. clrscr();
  584.  
  585. assign(movieData, MOVIEDATA_PATH);
  586. reset(movieData);
  587.  
  588. if not eof(movieData) then
  589. begin
  590. read(movieData, tmpMovie);
  591.  
  592. gotoxy(2, 2); write('Judul Film');
  593. gotoxy(16, 2); write(':'); writeln(tmpMovie.title);
  594.  
  595. gotoxy(2, 4); write('Jam Tayang 1');
  596. gotoxy(16, 4); writeln(': 12.00');
  597.  
  598. gotoxy(2, 5); write('Jam Tayang 2');
  599. gotoxy(16, 5); writeln(': 15.30');
  600.  
  601. gotoxy(2, 6); write('Jam Tayang 3');
  602. gotoxy(16, 6); write(': 19.00');
  603.  
  604. gotoxy(2, 8); write('Harga');
  605. gotoxy(16, 8); write(':'); writeln(tmpMovie.price);
  606.  
  607. gotoxy(2, 9); write('Point');
  608. gotoxy(16, 9); write(':'); writeln(tmpMovie.point);
  609.  
  610. end;
  611.  
  612. gotoxy(2, 11); write('Tekan ENTER Untuk Kembali');
  613. readln;
  614.  
  615. close(movieData);
  616. end;
  617.  
  618.  
  619. procedure editFilm();
  620. var
  621. movieData: file of movie;
  622. tmpMovie: movie;
  623.  
  624. begin
  625. clrscr();
  626.  
  627. assign(movieData, MOVIEDATA_PATH);
  628. rewrite(movieData);
  629.  
  630. gotoxy(2, 2); write('Judul Film');
  631. gotoxy(15, 2); write(':');
  632. readln(tmpMovie.title);
  633.  
  634. tmpMovie.price := 70000;
  635. tmpMovie.point := 100;
  636.  
  637. write(movieData, tmpMovie);
  638. close(movieData);
  639. end;
  640.  
  641. procedure filmMenu();
  642. var
  643. choice: integer;
  644.  
  645. begin
  646. repeat
  647. clrscr();
  648. gotoxy(2,2); write('1) Edit Film');
  649. gotoxy(2,3); write('2) Data Film');
  650. gotoxy(2,4); write('3) Kembali');
  651.  
  652. gotoxy(2,6); write('Pilihan: ');
  653. readln(choice);
  654.  
  655. if choice = 1 then
  656. editFilm()
  657. else if choice = 2 then
  658. listFilm()
  659. else if choice <> 3 then
  660. begin
  661. gotoxy(2, 8); write('Maaf Permintaan Tidak Dapat Diproses');
  662. end;
  663.  
  664. until (choice = 3);
  665. end;
  666.  
  667.  
  668. procedure listSeat();
  669. var
  670. orderData: file of order;
  671. tmpOrder: order;
  672. choice: integer;
  673.  
  674. begin
  675. repeat
  676. clrscr();
  677. gotoxy(2, 2); write('1) Jam 12.00');
  678. gotoxy(2, 3); write('2) Jam 15.30');
  679. gotoxy(2, 4); write('3) Jam 19.00');
  680. gotoxy(2, 5); write('4) Kembali');
  681.  
  682. gotoxy(2,7); write('Pilihan: ');
  683. readln(choice);
  684.  
  685. if (choice >= 1) and (choice <= 3) then
  686. begin
  687. clrscr;
  688.  
  689. gotoxy(2, 2); write('Daftar Kursi');
  690. gotoxy(2, 4); writeln('E1 E2 E3 E4 E5 E6 E7');
  691. gotoxy(9, 10); writeln('Layar');
  692. gotoxy(2, 14); write('Kursi Yang Telah Dipesan:');
  693.  
  694. assign(orderData, ORDERDATA_PATH);
  695. reset(orderData);
  696.  
  697. while not eof(orderData) do
  698. begin
  699. read(orderData, tmpOrder);
  700.  
  701. if (tmpOrder.session = choice) then
  702. write(' ', tmpOrder.seat);
  703.  
  704. end;
  705.  
  706. readln;
  707. end else if(choice <> 4) then
  708. begin
  709. gotoxy(2,9); write('Maaf Permintaan Tidak Dapat Diproses');
  710. readln;
  711. end;
  712. until (choice = 4);
  713. end;
  714.  
  715.  
  716. procedure listUser();
  717. var
  718. userData: file of user;
  719. tmpUser: user;
  720. counter, point: integer;
  721. name_, username, password, memberType: string;
  722.  
  723. begin
  724. clrscr();
  725.  
  726. { open file for reading }
  727. assign(userData, USERDATA_PATH);
  728. reset(userData);
  729.  
  730. gotoxy(2, 2); write('Nama User');
  731. gotoxy(20, 2); write('Username');
  732. gotoxy(35, 2); write('Password');
  733. gotoxy(48, 2); writeln('Member GOLD VVIP');
  734. gotoxy(70, 2); writeln('Point');
  735. writeln();
  736.  
  737. while not eof(userData) do
  738. begin
  739. read(userData, tmpUser);
  740.  
  741. name_ := tmpUser.name_;
  742. username := tmpUser.username;
  743. password := tmpUser.password;
  744. memberType := tmpUser.memberType;
  745. point := tmpUser.point;
  746.  
  747. { print user data }
  748. write(' ', name_);
  749. counter := length(name_);
  750. repeat
  751. write(' ');
  752. counter := counter + 1;
  753. until (counter = 18);
  754.  
  755. write(username);
  756. counter := length(username);
  757. repeat
  758. write(' ');
  759. counter := counter + 1;
  760. until (counter = 15);
  761.  
  762. write(password);
  763. counter := length(password);
  764. repeat
  765. write(' ');
  766. counter := counter + 1;
  767. until (counter = 18);
  768.  
  769. write(memberType);
  770. counter := length(memberType);
  771. repeat
  772. write(' ');
  773. counter := counter + 1;
  774. until (counter = 19);
  775.  
  776. writeln(point);
  777.  
  778. end;
  779.  
  780. writeln();
  781. write(' Tekan ENTER Untuk Kembali');
  782.  
  783. close (userData);
  784. readln;
  785. end;
  786.  
  787.  
  788. procedure adminInterface();
  789. var
  790. choice: integer;
  791.  
  792. begin
  793. repeat
  794. clrscr();
  795.  
  796. { admin interface }
  797. gotoxy(2, 2); writeln('Menu Pilihan Administrator');
  798. gotoxy(2, 5); writeln('1) Daftar User');
  799. gotoxy(2, 6); writeln('2) Database Film');
  800. gotoxy(2, 7); writeln('3) Daftar Kursi Antrian');
  801. gotoxy(2, 8); writeln('4) Kembali');
  802.  
  803. gotoxy(2, 10);
  804. write('Silakan Masukkan Pilihan Anda: ');
  805. readln(choice);
  806.  
  807. if (choice < 1) or (choice > 4) then
  808. begin
  809. gotoxy(2, 12); write('Menu Tidak Tersedia');
  810. gotoxy(2, 13); write('Silakan Ulangi');
  811. readln;
  812. end else if (choice = 1) then listUser()
  813. else if (choice = 2) then filmMenu()
  814. else if (choice = 3) then listSeat();
  815.  
  816. until (choice = 4);
  817.  
  818. end;
  819.  
  820.  
  821. procedure adminLogin();
  822. var
  823. username, password: string;
  824. num1, num2, captcha: integer;
  825.  
  826. begin
  827. repeat
  828.  
  829. { initialize captcha number }
  830. randomize;
  831. num1 := random(20);
  832. num2 := random(20);
  833.  
  834. clrscr();
  835.  
  836. gotoxy(2, 2); write('Username: ');
  837. readln(username);
  838.  
  839. gotoxy(2, 4); write('Password: ');
  840. readln(password);
  841.  
  842. gotoxy(2, 6); writeln('Captcha:');
  843. gotoxy(2, 8); write(num1, ' + ', num2, ': ');
  844. readln(captcha);
  845.  
  846. if (captcha <> num1 + num2) then
  847. begin
  848. gotoxy(2, 10);
  849. writeln('Maaf Captcha Yang Anda Masukkan Salah');
  850.  
  851. readln;
  852. continue;
  853. end;
  854.  
  855. if (username <> ADMIN_PASSWORD) or (password <> ADMIN_PASSWORD) then
  856. begin
  857. gotoxy(2, 10);
  858. writeln('Maaf, Username atau Password Anda Salah');
  859.  
  860. readln;
  861. continue;
  862. end else
  863.  
  864. adminInterface();
  865.  
  866. until (username = ADMIN_USERNAME) and (password = ADMIN_PASSWORD) and (captcha = num1 + num2);
  867.  
  868. end;
  869.  
  870.  
  871. var
  872. choice: integer;
  873.  
  874. begin
  875. repeat
  876. clrscr();
  877.  
  878. { print main interface }
  879. gotoxy(2, 2); writeln('Selamat Datang Dalam Program Cinema TI');
  880. gotoxy(2, 3); writeln('Pilihan Menu');
  881. gotoxy(2, 5); writeln('1) Administrator');
  882. gotoxy(2, 6); writeln('2) User');
  883. gotoxy(2, 7); writeln('3) Keluar');
  884. gotoxy(2, 9); write('Silakan Pilih Menu Bagian: ');
  885.  
  886. readln(choice);
  887.  
  888. if (choice = 1) then
  889. adminLogin()
  890. else if (choice = 2) then
  891. userInterface()
  892. else if (choice <> 3) then
  893. begin
  894. { no option warning, return to main interface}
  895. gotoxy(2, 11);
  896. writeln('Maaf Pilihan Menu Tidak Tersedia');
  897. gotoxy(2, 13);
  898. writeln('Silakan Masukan Ulang dengan Menekan ENTER');
  899.  
  900. readln;
  901. end;
  902.  
  903. until (choice = 3);
  904. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement