Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Cinema_TI;
- uses crt;
- type
- user = record
- name_, address, identityNumber, phone, username,
- password, email, memberType: string;
- point: qword;
- end;
- type
- movie = record
- title: string;
- point, price: qword;
- end;
- type
- order = record
- orderedMovie: movie;
- price: qword;
- session: integer;
- seat: string;
- end;
- const
- ADMIN_USERNAME = 'admin';
- ADMIN_PASSWORD ='admin';
- USERDATA_PATH = 'userData.txt';
- MOVIEDATA_PATH = 'movieData.txt';
- ORDERDATA_PATH = 'orderData.txt';
- procedure createOrderInvoice(newOrder: order; method: integer);
- begin
- clrscr();
- randomize;
- gotoxy(2, 2); write('Struk Pemesanan Gold Cinema TI');
- gotoxy(2, 4); write('Judul');
- gotoxy(22, 4); write(': ', newOrder.orderedMovie.title);
- gotoxy(2, 5); write('Kursi');
- gotoxy(22, 5);write(': ', newOrder.seat);
- gotoxy(2, 6); write('Jam');
- gotoxy(22, 6);
- if (newOrder.session = 1) then write(': 12.00');
- if (newOrder.session = 2) then write(': 15.30');
- if (newOrder.session = 3) then write(': 19.00');
- gotoxy(2, 8); write('Pembayaran');
- gotoxy(22, 8);
- if (method = 1) then write(': Cash');
- if (method = 2) then write(': Transfer Bank');
- gotoxy(2, 9); write('Kode Pembayaran');
- gotoxy(22, 9); write(': ', random(9), random(9), random(9), random(9), random(9));
- if (method = 2) then
- begin
- gotoxy(2, 11); writeln('Silakan Transfer Ke Nomor Rekening Berikut:');
- gotoxy(2, 13); writeln('No Rekening');
- gotoxy(22, 13); write(': 1109-01-008-389-50-2');
- gotoxy(2, 14); writeln('Nama');
- gotoxy(22, 14); write(': Cinema TI');
- end;
- readln;
- end;
- procedure chooseOrderPayment(newOrder: order);
- var
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); write('Silakan Pilih Metode Pembayaran');
- gotoxy(2, 4); write('1) Cash');
- gotoxy(2, 5); write('2) Transfer Bank');
- gotoxy(2, 7); write('Pilihan Anda: ');
- readln(choice);
- if (choice < 1) or (choice > 3) then
- begin
- gotoxy(2, 9);
- writeln('Maaf Permintaan Anda Tidak Dapat Kami Proses');
- gotoxy(2, 10);
- writeln('Silakan Ulangi Lagi');
- readln;
- end else
- begin
- createOrderInvoice(newOrder, choice);
- end;
- until (choice = 1) or (choice = 2);
- end;
- procedure chooseSeat(newOrder: order; time: integer);
- var
- orderData: file of order;
- tmpOrder: order;
- choice: string;
- exist: boolean;
- begin
- assign(orderData, ORDERDATA_PATH);
- repeat
- exist := false;
- reset(orderData);
- clrscr();
- gotoxy(2, 2); write('Daftar Kursi');
- gotoxy(2, 4); writeln('E1 E2 E3 E4 E5 E6 E7');
- gotoxy(9, 6); writeln('Layar');
- gotoxy(2, 8); write('Pilihan Kursi: ');
- readln(choice);
- choice := upcase(choice);
- while not eof(orderData) do
- begin
- read(orderData, tmpOrder);
- if (newOrder.session = tmpOrder.session) and (choice = tmpOrder.seat) then
- exist := true;
- end;
- if exist then
- begin
- writeln('Kursi Sudah Dipesan');
- writeln('Silakan Pilih Kursi Yang Lain');
- readln;
- end else
- begin
- newOrder.seat := choice;
- write(orderData, newOrder);
- chooseOrderPayment(newOrder);
- end;
- until (exist = false);
- close(orderData);
- end;
- procedure editPoint(var editUser: user; point: qword);
- var
- userData: file of user;
- tmpUser: user;
- position: integer;
- begin
- assign(userData, USERDATA_PATH);
- reset(userData);
- while not eof(userData) do
- begin
- position := filePos(userData);
- read(userData, tmpUser);
- if (tmpUser.username = editUser.username) and (tmpUser.password = editUser.password) then
- begin
- editUser.point := editUser.point + point;
- seek(userData, position);
- write(userData, editUser);
- break;
- end;
- end;
- close(userData);
- end;
- procedure orderTicket(var tmpUser: user);
- var
- movieData: file of movie;
- tmpMovie : movie;
- newOrder : order;
- choice: integer;
- begin
- assign(movieData, MOVIEDATA_PATH);
- reset(movieData);
- read(movieData, tmpMovie);
- repeat
- clrscr();
- gotoxy(2, 2);
- writeln('Judul Film Pada Hari Ini: ', tmpMovie.title);
- writeln();
- gotoxy(2, 4); writeln('Jam Tayang:');
- gotoxy(2, 6); writeln('1) 12.00');
- gotoxy(2, 7); writeln('2) 15.30');
- gotoxy(2, 8); writeln('3) 19.00');
- gotoxy(2, 9); writeln('4) Kembali');
- gotoxy(2, 11); write('Silakan Masukkan Pilihan Anda: ');
- readln(choice);
- newOrder.orderedMovie := tmpMovie;
- newOrder.price := tmpMovie.price;
- if (choice < 1) or (choice > 4) then
- begin
- gotoxy(2, 13); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
- gotoxy(2, 14); write('Silakan Masukkan Dengan Benar');
- readln;
- end else if (choice <> 4) then
- begin
- editPoint(tmpUser, tmpMovie.point);
- newOrder.session := choice;
- chooseSeat(newOrder, choice)
- end;
- until (choice = 4);
- close(movieData);
- end;
- procedure tradePoint(var tmpUser: user);
- var
- choice: integer;
- charChoice: string;
- sub: qword;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); write('Selamat Datang');
- gotoxy(2, 3); write('Total Poin Anda: ', tmpUser.point);
- gotoxy(2, 5); write('1) Tukar Popcorn');
- gotoxy(2, 6); write('2) Tukar Soda');
- gotoxy(2, 7); writeln('3) Kembali');
- gotoxy(2, 9); write('Silakan Pilih Menu Pilihan Anda: ');
- readln(choice);
- if (choice = 1) then
- sub := 200
- else if (choice = 2) then
- sub := 100
- else if (choice = 3) then
- break
- else if (choice <> 3) then
- begin
- gotoxy(2, 14); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
- gotoxy(2, 15); write('Silakan Masukkan Kembali');
- readln;
- continue;
- end;
- if (tmpUser.point < sub) then
- begin
- gotoxy(2, 11); write('Poin Anda Tidak Cukup');
- readln;
- continue;
- end;
- gotoxy(2, 11); write('Apakah anda yakin? [y/n]');
- gotoxy(2, 12); write('Pilihan Anda: ');
- readln(charChoice);
- if (upcase(charChoice) = 'Y') then
- begin
- editPoint(tmpUser, -sub);
- gotoxy(2, 14); write('Selamat Anda Menukarkan Poin Anda');
- gotoxy(2, 15); write('Sisa Poin: ', tmpUser.point);
- readln;
- end;
- until (choice = 3);
- end;
- procedure userMainMenu(var tmpUser: user);
- var
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); write('Selamat Datang');
- gotoxy(2, 4); write('1) Pemesanan Tiket');
- gotoxy(2, 5); write('2) Tukar Poin');
- gotoxy(2, 6); writeln('3) Kembali');
- gotoxy(2, 8); write('Silakan Pilih Menu Pilihan Anda: ');
- readln(choice);
- if (choice = 1) then
- orderTicket(tmpUser)
- else if(choice = 2) then
- tradePoint(tmpUser)
- else if(choice <> 3) then
- begin
- gotoxy(2, 11); write('Maaf Permintaan Anda Tidak Dapat Kami Proses');
- gotoxy(2, 12); write('Silakan Masukkan Kembali');
- readln;
- end;
- until (choice = 3);
- end;
- procedure userLogin();
- var
- userData: file of user;
- tmpUser: user;
- username, password:string;
- begin
- assign(userData, USERDATA_PATH);
- reset(userData);
- repeat
- clrscr();
- gotoxy(2, 2); write('Username: ');
- readln(username);
- gotoxy(2, 4); write('Password: ');
- readln(password);
- while not eof(userData) do
- begin
- read (userData, tmpUser);
- if (username = tmpUser.username) and (password = tmpUser.password) then
- break;
- end;
- until (username = tmpUser.username) and (password = tmpUser.password);
- close(userData);
- userMainMenu(tmpUser);
- end;
- procedure createRegistrationInvoice(newUser: user; method: integer);
- begin
- clrscr();
- gotoxy(2, 2); write('Struk Pembuatan Member Gold Cinema VVIP');
- { print new user data }
- gotoxy(2, 4); write('Nama');
- gotoxy(22, 4); write(': ', newUser.name_);
- gotoxy(2, 5); write('Alamat');
- gotoxy(22, 5); write(': ',newUser.address);
- gotoxy(2, 6); write('Nomor Telepon');
- gotoxy(22, 6); write(': ',newUser.phone);
- gotoxy(2, 7); write('Nomor Identitas');
- gotoxy(22, 7); write(': ',newUser.identityNumber);
- gotoxy(2, 8); write('Alamat Email');
- gotoxy(22, 8); write(': ',newUser.email);
- gotoxy(2, 9); write('Username');
- gotoxy(22, 9); write(': ',newUser.username);
- gotoxy(2, 10); write('Password');
- gotoxy(22, 10); write(': ',newUser.password);
- gotoxy(2, 11); write('Member Gold VVIP');
- gotoxy(22, 11); write(': ',newUser.memberType);
- gotoxy(2, 13); write('Pembayaran');
- gotoxy(22, 13);
- if (method = 1) then write(': Cash');
- if (method = 2) then write(': Transfer Bank');
- gotoxy(2, 14); write('Jumlah');
- gotoxy(22, 14);
- if (newUser.memberType = '1 Tahun') then write(': 450000');
- if (newUser.memberType = '1 Bulan') then write(': 50000');
- if (newUser.memberType = '3 Bulan') then write(': 130000');
- if (newUser.memberType = '6 Bulan') then write(': 240000');
- if (method = 2) then
- begin
- gotoxy(2, 16); writeln('Silakan Transfer Ke Nomor Rekening Berikut:');
- gotoxy(2, 18); writeln('No Rekening');
- gotoxy(22, 18); write(': 1109-01-008-389-50-2');
- gotoxy(2, 19); writeln('Nama');
- gotoxy(22, 19); write(': Cinema TI');
- end;
- readln;
- end;
- procedure chooseRegistrationPayment(newUser: user);
- var
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); write('Silakan Pilih Metode Pembayaran');
- gotoxy(2, 4); write('1) Cash');
- gotoxy(2, 5); write('2) Transfer Bank');
- gotoxy(2, 7); write('Pilihan Anda: ');
- readln(choice);
- if (choice < 1) or (choice > 2) then
- begin
- gotoxy(2, 9);
- writeln('Maaf Permintaan Anda Tidak Dapat Kami Proses');
- gotoxy(2, 10);
- writeln('Silakan Ulangi Lagi');
- readln;
- end else
- begin
- createRegistrationInvoice(newUser, choice);
- end;
- until (choice = 1) or (choice = 2)
- end;
- procedure chooseMemberType(newUser: user);
- var
- userData: file of user;
- choice: integer;
- begin
- assign(userData, USERDATA_PATH);
- reset(userData);
- seek(userData, filesize(userData));
- repeat
- clrscr();
- gotoxy(2, 2); write('Pilihan Paket Member Gold VVIP');
- gotoxy(2, 4); write('1) 1 Bulan 50000');
- gotoxy(2, 5); write('2) 3 Bulan 130000');
- gotoxy(2, 6); write('3) 6 Bulan 240000');
- gotoxy(2, 7); write('4) 1 Tahun 450000');
- gotoxy(2, 9); write('Silakan Masukkan Pilihan Anda: ');
- readln(choice);
- if (choice < 1) or (choice > 4) then
- begin
- gotoxy(2, 11); write('Maaf Permintaan Anda Tidak Dapat Diproses');
- gotoxy(2, 12); write('Silakan Masukkan Pilihan Dengan Benar');
- readln;
- end else
- begin
- if(choice = 1) then newUser.memberType := '1 Bulan';
- if(choice = 2) then newUser.memberType := '3 Bulan';
- if(choice = 3) then newUser.memberType := '6 Bulan';
- if(choice = 4) then newUser.memberType := '1 Tahun';
- write(userData, newUser);
- chooseRegistrationPayment(newUser);
- end;
- until (choice = 1) or (choice = 2) or (choice = 3) or (choice = 4);
- close(userData);
- end;
- procedure userRegister();
- var
- newUser: user;
- begin
- clrscr();
- gotoxy(2,2); writeln('Selamat Datang di Pendaftaran Gold VVIP Cinema TI');
- gotoxy(2,4); write('Tekan ENTER Untuk Mulai Memasukkan Data');
- readln;
- { input user data }
- clrscr();
- gotoxy(2, 2); write('Nama');
- gotoxy(18, 2); write(': ');
- readln(newUser.name_);
- gotoxy(2, 4); write('Alamat');
- gotoxy(18, 4); write(': ');
- readln(newUser.address);
- gotoxy(2, 6); write('Nomor Telepon');
- gotoxy(18, 6); write(': ');
- readln(newUser.phone);
- gotoxy(2, 8); write('Nomor Identitas');
- gotoxy(18, 8); write(': ');
- readln(newUser.identityNumber);
- gotoxy(2, 10); write('Alamat Email');
- gotoxy(18, 10); write(': ');
- readln(newUser.email);
- gotoxy(2, 12); write('Username');
- gotoxy(18, 12); write(': ');
- readln(newUser.username);
- gotoxy(2, 14); write('Password');
- gotoxy(18, 14); write(': ');
- readln(newUser.password);
- gotoxy(2, 10);
- write('Terima Kasih. Silakan Tekan ENTER Untuk Melanjutkan');
- chooseMemberType(newUser);
- end;
- procedure userInterface();
- var
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); writeln('Menu Pilihan User GOLD VVIP Cinema TI');
- gotoxy(2, 4); writeln('1) Login');
- gotoxy(2, 5); writeln('2) Buat Akun GOLD VVIP');
- gotoxy(2, 6); writeln('3) Kembali');
- gotoxy(2, 8); write('Silakan Masukkan Pilihan Anda: ');
- readln(choice);
- if (choice < 1) or (choice > 3) then
- begin
- gotoxy(2, 10); writeln('Maaf Pilihan Menu Tidak Tersedia');
- gotoxy(2, 12); writeln('Silakan Masukan Ulang dengan Menekan ENTER');
- readln;
- end else if (choice = 1) then userLogin()
- else if (choice = 2) then userRegister()
- until (choice = 3);
- end;
- procedure listFilm();
- var
- movieData: file of movie;
- tmpMovie: movie;
- begin
- clrscr();
- assign(movieData, MOVIEDATA_PATH);
- reset(movieData);
- if not eof(movieData) then
- begin
- read(movieData, tmpMovie);
- gotoxy(2, 2); write('Judul Film');
- gotoxy(16, 2); write(':'); writeln(tmpMovie.title);
- gotoxy(2, 4); write('Jam Tayang 1');
- gotoxy(16, 4); writeln(': 12.00');
- gotoxy(2, 5); write('Jam Tayang 2');
- gotoxy(16, 5); writeln(': 15.30');
- gotoxy(2, 6); write('Jam Tayang 3');
- gotoxy(16, 6); write(': 19.00');
- gotoxy(2, 8); write('Harga');
- gotoxy(16, 8); write(':'); writeln(tmpMovie.price);
- gotoxy(2, 9); write('Point');
- gotoxy(16, 9); write(':'); writeln(tmpMovie.point);
- end;
- gotoxy(2, 11); write('Tekan ENTER Untuk Kembali');
- readln;
- close(movieData);
- end;
- procedure editFilm();
- var
- movieData: file of movie;
- tmpMovie: movie;
- begin
- clrscr();
- assign(movieData, MOVIEDATA_PATH);
- rewrite(movieData);
- gotoxy(2, 2); write('Judul Film');
- gotoxy(15, 2); write(':');
- readln(tmpMovie.title);
- tmpMovie.price := 70000;
- tmpMovie.point := 100;
- write(movieData, tmpMovie);
- close(movieData);
- end;
- procedure filmMenu();
- var
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2,2); write('1) Edit Film');
- gotoxy(2,3); write('2) Data Film');
- gotoxy(2,4); write('3) Kembali');
- gotoxy(2,6); write('Pilihan: ');
- readln(choice);
- if choice = 1 then
- editFilm()
- else if choice = 2 then
- listFilm()
- else if choice <> 3 then
- begin
- gotoxy(2, 8); write('Maaf Permintaan Tidak Dapat Diproses');
- end;
- until (choice = 3);
- end;
- procedure listSeat();
- var
- orderData: file of order;
- tmpOrder: order;
- choice: integer;
- begin
- repeat
- clrscr();
- gotoxy(2, 2); write('1) Jam 12.00');
- gotoxy(2, 3); write('2) Jam 15.30');
- gotoxy(2, 4); write('3) Jam 19.00');
- gotoxy(2, 5); write('4) Kembali');
- gotoxy(2,7); write('Pilihan: ');
- readln(choice);
- if (choice >= 1) and (choice <= 3) then
- begin
- clrscr;
- gotoxy(2, 2); write('Daftar Kursi');
- gotoxy(2, 4); writeln('E1 E2 E3 E4 E5 E6 E7');
- gotoxy(9, 10); writeln('Layar');
- gotoxy(2, 14); write('Kursi Yang Telah Dipesan:');
- assign(orderData, ORDERDATA_PATH);
- reset(orderData);
- while not eof(orderData) do
- begin
- read(orderData, tmpOrder);
- if (tmpOrder.session = choice) then
- write(' ', tmpOrder.seat);
- end;
- readln;
- end else if(choice <> 4) then
- begin
- gotoxy(2,9); write('Maaf Permintaan Tidak Dapat Diproses');
- readln;
- end;
- until (choice = 4);
- end;
- procedure listUser();
- var
- userData: file of user;
- tmpUser: user;
- counter, point: integer;
- name_, username, password, memberType: string;
- begin
- clrscr();
- { open file for reading }
- assign(userData, USERDATA_PATH);
- reset(userData);
- gotoxy(2, 2); write('Nama User');
- gotoxy(20, 2); write('Username');
- gotoxy(35, 2); write('Password');
- gotoxy(48, 2); writeln('Member GOLD VVIP');
- gotoxy(70, 2); writeln('Point');
- writeln();
- while not eof(userData) do
- begin
- read(userData, tmpUser);
- name_ := tmpUser.name_;
- username := tmpUser.username;
- password := tmpUser.password;
- memberType := tmpUser.memberType;
- point := tmpUser.point;
- { print user data }
- write(' ', name_);
- counter := length(name_);
- repeat
- write(' ');
- counter := counter + 1;
- until (counter = 18);
- write(username);
- counter := length(username);
- repeat
- write(' ');
- counter := counter + 1;
- until (counter = 15);
- write(password);
- counter := length(password);
- repeat
- write(' ');
- counter := counter + 1;
- until (counter = 18);
- write(memberType);
- counter := length(memberType);
- repeat
- write(' ');
- counter := counter + 1;
- until (counter = 19);
- writeln(point);
- end;
- writeln();
- write(' Tekan ENTER Untuk Kembali');
- close (userData);
- readln;
- end;
- procedure adminInterface();
- var
- choice: integer;
- begin
- repeat
- clrscr();
- { admin interface }
- gotoxy(2, 2); writeln('Menu Pilihan Administrator');
- gotoxy(2, 5); writeln('1) Daftar User');
- gotoxy(2, 6); writeln('2) Database Film');
- gotoxy(2, 7); writeln('3) Daftar Kursi Antrian');
- gotoxy(2, 8); writeln('4) Kembali');
- gotoxy(2, 10);
- write('Silakan Masukkan Pilihan Anda: ');
- readln(choice);
- if (choice < 1) or (choice > 4) then
- begin
- gotoxy(2, 12); write('Menu Tidak Tersedia');
- gotoxy(2, 13); write('Silakan Ulangi');
- readln;
- end else if (choice = 1) then listUser()
- else if (choice = 2) then filmMenu()
- else if (choice = 3) then listSeat();
- until (choice = 4);
- end;
- procedure adminLogin();
- var
- username, password: string;
- num1, num2, captcha: integer;
- begin
- repeat
- { initialize captcha number }
- randomize;
- num1 := random(20);
- num2 := random(20);
- clrscr();
- gotoxy(2, 2); write('Username: ');
- readln(username);
- gotoxy(2, 4); write('Password: ');
- readln(password);
- gotoxy(2, 6); writeln('Captcha:');
- gotoxy(2, 8); write(num1, ' + ', num2, ': ');
- readln(captcha);
- if (captcha <> num1 + num2) then
- begin
- gotoxy(2, 10);
- writeln('Maaf Captcha Yang Anda Masukkan Salah');
- readln;
- continue;
- end;
- if (username <> ADMIN_PASSWORD) or (password <> ADMIN_PASSWORD) then
- begin
- gotoxy(2, 10);
- writeln('Maaf, Username atau Password Anda Salah');
- readln;
- continue;
- end else
- adminInterface();
- until (username = ADMIN_USERNAME) and (password = ADMIN_PASSWORD) and (captcha = num1 + num2);
- end;
- var
- choice: integer;
- begin
- repeat
- clrscr();
- { print main interface }
- gotoxy(2, 2); writeln('Selamat Datang Dalam Program Cinema TI');
- gotoxy(2, 3); writeln('Pilihan Menu');
- gotoxy(2, 5); writeln('1) Administrator');
- gotoxy(2, 6); writeln('2) User');
- gotoxy(2, 7); writeln('3) Keluar');
- gotoxy(2, 9); write('Silakan Pilih Menu Bagian: ');
- readln(choice);
- if (choice = 1) then
- adminLogin()
- else if (choice = 2) then
- userInterface()
- else if (choice <> 3) then
- begin
- { no option warning, return to main interface}
- gotoxy(2, 11);
- writeln('Maaf Pilihan Menu Tidak Tersedia');
- gotoxy(2, 13);
- writeln('Silakan Masukan Ulang dengan Menekan ENTER');
- readln;
- end;
- until (choice = 3);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement