Program Potong rambut sederhana menggunakan bahasa pemrograman C++ dan compiler mingw
Assalamu'alaikum wr.wb
Teman-teman sekalian, kali ini saya akan membahas mengenai “Program Potong Rambut Sederhana menggunakan bahasa pemrograman C++”. Seperti yang kita ketahui, tampilan untuk program c++ masih berupa CMD. Begitulah program yang sedang saya buat ini. Program potong rambut yang saya buat ini bertujuan untuk mempermudah sistem antrian potong rambut. Bisa juga di kasus lain karena saya membuat program tersebut dengan sistem yang pada umumnya, jadi maksud saya hampir semua menggunakan sistem seperti program yang saya buat ini.
Alasan saya memilih potong rambut sebagai object adalah karena pada saat itu program potong rambut adalah ide yang unik. Dimana program yang saya buat ini tidak bisa ditemukan di blog lain, dan tentunya jarang manusia yang berfikiran untuk membuat program potong rambut. Sehingga sangat kecil kemungkinan dosen mengira saya menjiplak dari blog atau tempat lain. Maklum saat itu saya menggunakan tekhnik yang belum diajarkan di kelas saat itu.
Program sederhana yang saya buat ini menggunakan bahasa pemrograman dasar C++ dengan compiller MinGW. Waktu itu saya buat karena ini adalah tugas kuliah berkelompok. Saya pun berunding dengan teman-teman saya. apa yang akan kita buat. akhirnya terbesit lah pikiran untuk membuat program potong rambut.
Berikut merupakan ulasan mengenai program potong rambut:
Mengenai program potong rambut yang sedang kita bahas ini, alur yang berlaku adalah sebagai berikut :
- Pelanggan datang, lalu Memilih pelayanan yang akan dilakukan
- Apabila masih ada kursi potong rambut yang kosong, pelanggan dipersilahkan untuk duduk di kursi yang sudah ditentukan
- Apabila meja potong rambut sudah penuh, maka pelanggan dipersilahkan untuk menunggu sampai gilirannya tiba. untuk nomor antrian sudah terdata dalam program.
- Meja potong rambut dan pelanggan sudah ditetapkan dalam sistem
- Apabila pelanggan pergi sebelum mendapat layanan, maka pelanggan tersebut tidak dikenakan biaya
- Setelah selesai, pelanggan langsung membayar sesuai dengan biaya yang sudah ditetapkan
- Input biaya tidak bisa kurang dari jumlah total biaya, apabila lebih, sudah ditentukan nilai kembalian oleh sistem
- Terdapat 2 level dalam menu, yaitu admin dan operator
- Operator dapat melakukan transaksi, admin dapat melihat rekap harian
Begitulah alur program yang saya buat ini. Beberapa fusgsi dalam program yang diperlukan antara lain:
- Gotoxy Fungsi gotoxy merupakan fungsi untuk meletakkan object sesuai dengan keinginan dengan acuan x dan y.
- Hapus Fungsi hapus merupakan fungsi yang bertujuan untuk membersihkan layar.
- toString merupakan fungsi yang digunakan untuk mengubah nilai integer menjadi string. Fungsi ini ber tipe data string. Jadi nilai yang dikembalikan berupa string
- tabel merupakan fungsi untuk membuat tabel, berdasarkan data yang diinputkan. Data – data yang akan ditampilkan kedalam tabel merupakan data yang berada dalam array yang sudah ditentukan. Fungsi tabel tersebut berfungsi untuk menampilkan tabel dengan kolom berjumlah 4
- kotak Fungsi kotak merupakan fungsi yang digunakan untuk membuat gambar berbentuk kotak dengan panjang dan lebar yang sudah ditentukan. Fungsi kotak sendiri digunakan dalam program ini sebagai fungsi untuk membuat Batas yang berada di pinggir dengan tujuan memperindah program
- kotakKecil sama dengan kotak, kotakKecil sendiri berfungsi untuk memperindah fungsi kotak
- kotakRuang KotakRuang sendiri berseperti kotak yang lain, hanya saja fungsi ini digunakan untuk membuat tampilan ruangan dalam tempat potong rambut tersebut
- loginKaryawan berfungsi untuk mengambil level dari karyawan yang melakukan login berdasarkan username dan password yang telah ditentukan. Apabila ditemukan, maka akan menuju ke menu yang sudah ditentukan, apabila tidak, maka akan kembali ke menu login
- prosesPemesanan merupakan fungsi yang digunakan untuk memproses data pemesanan dengan mengecek apakah pelayanan sudah dipesan atau belum. Jika sudah, maka bernilai true, jika belum, maka bernilai false
- simpanTigaKolom untuk menyimpan data yang bervalue 3 ke dalam array yang bervalue 3
- simpanLimaKolom untuk menyimpan data ke array bervalue 5
- simpanDuaKolom untuk menyimpan data ke array bervalue 2
- hapusMeja untuk menghapus pelanggan apabila pelanggan sudah selesai
- hapusPelanggan untuk menghapus pelanggan yang sudah dilayani
- hapusPemesanan untuk menghapus proses pemesanan pada pelanggan yang sudah mendapat pelayanan
- menuPembayaran merupakan fungsi untuk menampilkan tampilan pembayaran berupa stuck tagihan beserta pembayaran
- kotakKecil untuk menampilkan meja
- kotakRuang untuk membentuk ruang
- insertMeja fungsi insertMeja digunakan untuk memasukkan pelanggan ke meja yang kosong
- userAktif fungsi userAktif untuk menyimpan data user yang sedang bertugas hingga dia logout
- totalPelanggan menghitung total pelanggan yang sudah membayar hari ini
- totalPendapatan menghitung total pendapatan hari ini
- main fungsi utama
itulah fungsi fungsi yang saya gunakan. Dalam pembuatan program yang sejumlah 634 baris ini, saya memanfaatkan Array. Karena array adalah solusi yang paling tepat untuk meringkas program. Dan array tersebut saya buat fungsinya seperti database. Tentunya array dan database berbeda dimana array menyimpan data sementara sementara database menyimpan data dalam jangka waktu yang lama.
Sebenarnya program ini bisa lebih sederhana lagi, hanya saja waktu itu saya ada urusan yang membuat saya vakum selama beberapa hari, sementara hari itu sudah mepet. Jadi saya tidak sempat merapikan program saat itu. dan karena sudah mendapat nilai, saya pun malas memperbaikinya sampai sekarang. Meski begitu, program ini aku buat dengan sesimple mungkin supaya bisa dipahami oleh kelompok saya dan tentunya para pembaca sekalian. Dan berikut ini adalah tampilan program secara keseluruhan
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
#include <sstream>
using namespace std;
int adm;
string pilih1;
//fungsi gotoxy
void gotoxy(int x, int y)
{
HANDLE hConsoleOutput;
COORD dwCursorPosition;
cout.flush();
dwCursorPosition.X = x;
dwCursorPosition.Y = y;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
//fungsi clrscr
void hapus()
{
system("cls");
}
//perubahan tipe data ke string
string toString ( int Number )
{
stringstream ss;
ss << Number;
return ss.str();
}
//perubahan tipe data ke integer
int toInt(string str){
return atoi(str.c_str());
}
// menghitung nilai kembalian
double kembalian(double bayar, double harga){
double kembali;
kembali = bayar - harga;
return kembali;
}
//membuat tabel
void tabel(string data[][3],int kolom,int posisi){
int baris;
bool status;
//mebuat header tabel
baris =7;
gotoxy(baris,posisi);cout<<"-------------------------------------------------------------";
for (int l=0;l<3;l++){
gotoxy(baris,posisi+1);cout<<"| "<<data[0][l];
baris = baris+20;
}
gotoxy(baris,posisi+1);
cout<<"|"<<endl;
baris=7;
gotoxy(baris,posisi+2);cout<<"-------------------------------------------------------------";
// membuat isi tabel
for (int i =1; i<kolom;i++){
baris=7;
for(int j =0; j<3;j++){
if(data[i][j]!=""){
gotoxy(baris,posisi+(i+2));cout<<"| "<<data[i][j];
baris =baris+20;
status = true;
} else
status = false;
}
if(status==true){
gotoxy(baris,posisi+(i+2));
cout<<"|"<<endl;
}
}
}
void kotak(int baris, int kolom){
for (int i = 0; i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==1||j==kolom-1){
gotoxy(j+3,i);cout<<"|";
} else if(i==4||i==baris||i==0||j==0||j==kolom){
gotoxy(j+3,i);cout<<"=";
}
else
gotoxy(j+3,i);cout<<" ";
}
cout<<endl;
}
gotoxy(6,1);cout<<"\t\tSelamat Datang Di Program Sederhana kami..."<<endl;
gotoxy(7,2);cout<<"\t\t\tProgram Potong Rambut"<<endl;
}
void kotakKecil(int garis){
for (int i=0; i<=1; i++){
if(i==garis)
cout<<" ";
for (int j=0;j<=5; j++){
if(i==garis){
cout<<"=";
} else if(j==1||j==5){
cout<<"| ";
} else
cout<<" ";
}
cout<<endl;
}
}
void kotakRuang(){
for (int i=1; i<=10; i++){
if(i==1||i==10)
cout<<" ";
for (int j=0;j<=60; j++){
if(i==1 || i==10){
cout<<"=";
} else if(j==1||j==60){
cout<<"| ";
} else
cout<<" ";
}
cout<<endl;
}
}
//membuat login
string loginKaryawan(string user, string pass,string pengguna[][4]){
string status;
for(int i=1;i<=5;i++){
if(user==pengguna[i][1] && pass==pengguna[i][2]){
adm=toInt(pengguna[i][0]);
status = pengguna[i][3];
break;
} else
status = "null";
}
return status;
}
//menentukan yang sudah dipesan atau belum
bool prosesPemesanan(string pemesanan[][2], string pelanggan, int pesanan){
bool proses=true;
for (int i = 0; i<100;i++){
if(pemesanan[i][0]==pelanggan && pemesanan[i][1]==toString(pesanan)){
proses=false;
}
}
return proses;
}
void simpanTigaKolom(string arr[][3], string value1, string value2, string value3){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=value1;
arr[i][1]=value2;
arr[i][2]=value3;
break;
}
}
}
void simpanLimaKolom(string arr[][6],string value2, string value3, string value4, string value5,string value6){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=toString(i);
arr[i][1]=value2;
arr[i][2]=value3;
arr[i][3]=value4;
arr[i][4]=value5;
arr[i][5]=value6;
break;
}
}
}
void simpanDuaKolom(string arr[][2], string value1, string value2){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=value1;
arr[i][1]=value2;
break;
}
}
}
void hapusMeja(string meja[][2], string langgan){
for(int i=0;i<5;i++){
if(meja[i][0]!="" && meja[i][1]==langgan){
meja[i][1]="";
}
}
}
//menghapus pelanggan yang sudah melakukan pembayaran
void hapusPelanggan(int urutan,string pelanggan[][3]){
for(int i = 0; i<80;){
if(pelanggan[i][0]==toString(urutan)){
for(int k=i;k<80; k++){
for(int j=0;j<3;j++){
pelanggan[k][j]=pelanggan[k+1][j];
pelanggan[k+1][j]="";
}
}
}
else if(pelanggan[i][0]=="")
break;
else
i=i+1;
}
}
//menghapus pemesanan dari pelanggan yang sudah melakukan pembayaran
void hapusPemesanan(int urutan, string pemesanan[][2]){
for(int i = 0; i<90;){
if(pemesanan[i][0]==toString(urutan)){
for(int k=i;k<90; k++){
for(int j=0;j<2;j++){
pemesanan[k][j]=pemesanan[k+1][j];
pemesanan[k+1][j]="";
}
}
}
else if(pemesanan[i][0]=="")
break;
else
i=i+1;
}
}
//menu pembayaran
void menuPembayaran(int urutan, string pemesanan[][2],string pelanggan[][3],string data[][3], string pelanggan1[][3], string pemesanan1[][2], string pembayaran[][6]){
Pembayaran:
double total=0;
double bayar;
int batas = 0;
int urut,tt;
for(int j = 0; j<100;j++){
if(pelanggan[j][0]==toString(urutan)){
if(j<5){
gotoxy(8,7);cout<<"\tNama "; gotoxy(25,7);cout<<": "<<pelanggan[j][1]<<endl;
gotoxy(8,8);cout<<"\tAlamat "; gotoxy(25,8);cout<<": "<<pelanggan[j][2]<<endl;
gotoxy(8,10);cout<<"\tPemesanan "; gotoxy(25,10);cout<<":"<<endl;
urut = toInt(pelanggan[j][0]);
for(int i=0; i<100;i++){
if(pemesanan[i][0]==toString(urut) && urut>0){
batas= batas+1;
gotoxy(8,11+batas);cout<<"\t\t"<<batas<<". "<<data[toInt(pemesanan[i][1])][1];
gotoxy(50,11+batas);cout<<": Rp."<<data[toInt(pemesanan[i][1])][2]<<endl;
total = total+atoi(data[toInt(pemesanan[i][1])][2].c_str());
simpanDuaKolom(pemesanan1, pemesanan[i][0],pemesanan[i][1]);
}
}
gotoxy(8,21);cout<<"\t----------------------------------"; gotoxy(50,21);cout<<"-------------";
gotoxy(8,19);cout<<"\tTotal Harga "; gotoxy(50,19);cout<<": Rp."<<total<<endl;
gotoxy(8,20);cout<<"\tPembayaran "; gotoxy(50,20);cout<<": Rp.";
gotoxy(8,22);cout<<"\tKembalian "; gotoxy(50,22);cout<<": ";
gotoxy(55,20); cin>>bayar;
if(bayar>=total){
gotoxy(52,22);cout<<"Rp."<<kembalian(bayar,total);
double kembali= kembalian(bayar,total);
simpanTigaKolom(pelanggan1,pelanggan[j][0],pelanggan[j][1],pelanggan[j][2]);
simpanLimaKolom(pembayaran,toString(urutan), toString(total), toString(bayar), toString(kembali),toString(adm));
gotoxy(6,25);cout<<"Apakah ada Pembayaran lainnya? [Y/T] : "; cin>>pilih1;
} else{
gotoxy(6,24);cout<<"Bayar dengan uang yang lebih dari total pembayaran!!!";
gotoxy(6,25);system("pause");
hapus();
hapusPemesanan(j, pemesanan1);
kotak(27,70);
goto Pembayaran;
}
break;
}
}
else if(j==99){
hapus();
cout<<"Angka yang diinputkan tidak termasuk dalam daftar";
}
}
}
void kotakKecil(int sp, int en){
int baris=1;
int kolom=6;
for (int i = 0; i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==0||j==kolom){
gotoxy(sp+j,en+i);cout<<"|";
} else if(i==0){
gotoxy(sp+j,en+i);cout<<"=";
}
else
gotoxy(sp+j,en+i);cout<<" ";
}
cout<<endl;
}
}
void kotakRuang(int sp, int en, string meja[][2]){
int baris=10;
int kolom=60;
int noMeja=0;
for (int i=0;i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==0||j==kolom){
gotoxy(sp+j,en+i);cout<<"|";
} else if(i==baris||i==0){
gotoxy(sp+j,en+i);cout<<"=";
} else
gotoxy(sp+j,en+i);cout<<" ";
}
for(int k=0;k<=kolom; k++){
if(i==2&&(k==10||k==30||k==50)){
kotakKecil(sp+k,en+i);
} else if(i==8&&(k==30||k==50)){
kotakKecil(sp+k,en+i);
}
}
cout<<endl;
}
for (int i=0;i<=baris; i++){
for(int k=0;k<=kolom; k++){
if(i==1&&(k==13||k==33||k==53)){
gotoxy(sp+k,en+i);cout<<meja[noMeja][0];
gotoxy(sp+k,en+i+2);cout<<meja[noMeja][1];
noMeja=noMeja+1;
} else if(i==7&&(k==33||k==53)){
gotoxy(sp+k,en+i);cout<<meja[noMeja][1];
gotoxy(sp+k,en+i+2);cout<<meja[noMeja][0];
noMeja=noMeja+1;
}
}
cout<<endl;
}
}
void insertMeja(string meja[][2], string pelanggan[][3]){
string pelpil;
for(int i=0; i<5;i++){
if(meja[i][0]!="" && meja[i][1]==""){
for(int j=1;j<=5;j++){
if(pelanggan[j][0]!=""){
for(int k=0; k<5;k++){
if(pelanggan[j][0]!=meja[k][1]){
pelpil=pelanggan[j][0];
} else{
pelpil="";
break;
}
}
}
}
meja[i][1]=pelpil;
break;
}
}
}
void userAktif(string usr, string level){
gotoxy(6,5);cout<<"User : "<<usr;
gotoxy(55,5);cout<<"Level : "<<level;
}
int totalPelanggan(string arr[][3]){
int total=0;
for (int i=1; i<900; i++){
if(arr[i][0]!=""){
total=total+1;
}
}
return total;
}
double totalPendapatan(string arr[][6]){
double total=0;
for (int i=1; i<=800;i++){
if(arr[i][0]!=""){
total=total+toInt(arr[i][2]);
}
}
return total;
}
int main(){
string data[6][3]={{"Nomor","Proses","Harga"},{"1","Potong Rambut","15000"},{"2","Cream bath","50000"},{"3","Catok","10000"},{"4","Rebounding","100000"},{"5","Semir","65000"}};
string pelanggan[100][3]={{"Nomor","Nama","Alamat"}};
string pemesanan[100][2];
string pengguna[6][4]={{"Nomor","username","password","Level"},{"1","Heri","8687","Admin"},{"2","Reza","8697","Operator"},{"3","Ikhwan","8715","Admin"},{"4","Wulan","8723","Operator"},{"5","Sigit","8698","Admin"}};
string pelanggan1[1000][3]={{"Nomor","Nama","Alamat"}};
string pemesanan1[1000][2];
string pembayaran[1000][6]={{"Nomor","no Pel","total","Bayar","Kembalian","user"}};
string meja[5][2]={{"1",""},{"2",""},{"3",""},{"4",""},{"5",""}};
string user,pass,nama, alamat,no,kembali,idPelanggan, lg;
int selesai, k,maxJ, batas, urut, urutan;
int nomorPelanggan=0;
double total, bayar;
char ch;
lgn:
hapus();
pass="";
gotoxy(0,0);cout<<"Username : ";
gotoxy(0,1);cout<<"Password : ";
gotoxy(18,0);cin>>user;
gotoxy(18,1); ch=_getch();
while(ch !=13){
pass.push_back(ch);
cout<<'*';
ch = _getch();
}
lg=loginKaryawan(user,pass,pengguna);
hapus();
Utama:
insertMeja(meja,pelanggan);
kotak(27,70);
userAktif(user,lg);
int pilihan;
if(lg=="Operator"){
k=0;
kotakRuang(7,7,meja);
cout<<endl;
gotoxy(8,19);cout<<"Pilih Menu yang akan dilakukan....\n";
gotoxy(8,20);cout<<"[1] Pesan\n";
gotoxy(8,21);cout<<"[2] Bayar\n";
gotoxy(8,22);cout<<"[0] Keluar\n";
gotoxy(8,23);cout<<"Pilihan : ";
while (cin>>pilihan){
switch(pilihan){
case 1:
hapus();
kotak(27,70);
kotakRuang(6,7,meja);
userAktif(user,lg);
cout<<endl;
gotoxy(8,19);cout<<"Isi Dulu Biadata Pelanggan\n";
gotoxy(8,20);cout<<"Nama "; gotoxy(20,20);cout<<": ";
gotoxy(8,21);cout<<"Alamat "; gotoxy(20,21);cout<<": ";
gotoxy(23,20);cin>>nama;
gotoxy(23,21);cin>>alamat;
hapus();
kotak(27,70);
userAktif(user,lg);
tabel(data,6,7);
maxJ=0;
gotoxy(6,25);cout<<"Pilih 9 jika selesai...";
for (int i = 0; i<100;i++){
if(pelanggan[i][1]==""){
nomorPelanggan=nomorPelanggan+1;
idPelanggan=toString(nomorPelanggan);
pelanggan[i][0]=idPelanggan;
pelanggan[i][1]=nama;
pelanggan[i][2]=alamat;
for(int j=0; j<100;j++){
pemrosesan:
if(pemesanan[j][0]==""){
k=k+1;
if(k<=5){
gotoxy(8,16+k);cout<<"Proses yang dilakukan : "; cin>>selesai;
if(selesai==9){
hapus();
goto Utama;
}
else if(selesai>=1 && selesai<=5){
if(prosesPemesanan(pemesanan,idPelanggan,selesai)==true){
pemesanan[j][0]=idPelanggan;
pemesanan[j][1]=toString(selesai);
gotoxy(34,16+k);cout<<"-- "<<data[selesai][1];
gotoxy(55,16+k);cout<<"Rp. "<<data[selesai][2];
}
else{
gotoxy(30,16+k);cout<<" ";
k=k-1;
}
}
else{
gotoxy(30,16+k);cout<<" ";
k=k-1;
}
}
else{
gotoxy(6,25);cout<<"";
gotoxy(6,25);system("pause");
goto Utama;
}
}
}
goto Utama;
}
}
break;
case 2:
MenuPembayaran:
hapus();
kotak(27,70);
userAktif(user,lg);
tabel(pelanggan,10,8);
gotoxy(8,7);cout<<"Urutan Pelanggan yang ingin membayar : ";cin>>urutan;
hapus();
kotak(27,70);
gotoxy(6,5);cout<<"User : "<<user;
gotoxy(50,5);cout<<"Level : "<<lg;
menuPembayaran(urutan,pemesanan,pelanggan,data,pelanggan1,pemesanan1,pembayaran);
hapusMeja(meja,toString(urutan));
hapusPelanggan(urutan,pelanggan);
hapusPemesanan(urutan,pemesanan);
if(pilih1=="Y" || pilih1=="y")
goto MenuPembayaran;
else if(pilih1=="T" || pilih1=="t")
goto Utama;
else
goto Utama;
goto Utama;
break;
case 0:
user="";
goto lgn;
break;
default:
hapus();
cout<<"Angka yang anda masukkan tidak ada dalam daftar";
gotoxy(6,25);system("pause");
hapus();
goto Utama;
break;
}
}
hapus();
goto Utama;
}
else if(lg=="Admin"){
AdminUtama:
int pilih, noPelanggan;
kotak(27,70);
userAktif(user,lg);
tabel(pelanggan1,6,14);
gotoxy(7,13);cout<<"Total Pelanggan : "<<totalPelanggan(pelanggan1);
gotoxy(45,13);cout<<"Total Pendapatan : "<<totalPendapatan(pembayaran);
gotoxy(8,8);cout<<"Pilih Menu yang akan dilakukan....\n";
gotoxy(8,9);cout<<"[1] Lihan Detail Pelayanan\n";
gotoxy(8,10);cout<<"[0] Keluar\n";
gotoxy(8,11);cout<<"Pilihan : "; cin>>pilih;
switch(pilih){
case 1:
lihatDetail:
hapus();
userAktif(user,lg);
kotak(27,70);
tabel(pelanggan1,10,8);
gotoxy(8,7);cout<<"nomor pelanggan : ";cin>>noPelanggan;
hapus();
kotak(27,70);
Pembayaran:
total=0;
batas = 0;
for(int j = 0; j<900;j++){
if(pelanggan1[j][0]==toString(noPelanggan)){
gotoxy(8,7);cout<<"\tNama "; gotoxy(25,7);cout<<": "<<pelanggan1[j][1]<<endl;
gotoxy(8,8);cout<<"\tAlamat "; gotoxy(25,8);cout<<": "<<pelanggan1[j][2]<<endl;
gotoxy(8,10);cout<<"\tPemesanan "; gotoxy(25,10);cout<<":"<<endl;
for(int i=0; i<900;i++){
if(pemesanan1[i][0]==toString(noPelanggan) && noPelanggan>0){
batas= batas+1;
gotoxy(8,11+batas);cout<<"\t\t"<<batas<<". "<<data[toInt(pemesanan1[i][1])][1];
gotoxy(50,11+batas);cout<<": Rp."<<data[toInt(pemesanan1[i][1])][2]<<endl;
total = total+atoi(data[toInt(pemesanan1[i][1])][2].c_str());
}
}
for(int k =0; k<=900;k++){
if(pembayaran[k][1]==toString(noPelanggan)){
for(int l=0;l<=5;l++){
if(pengguna[l][0]==pembayaran[k][5]){
gotoxy(6,5);cout<<"User : "<<pengguna[l][1];
gotoxy(50,5);cout<<"Level : "<<pengguna[l][3];
break;
}
}
gotoxy(8,21);cout<<"\t----------------------------------"; gotoxy(50,21);cout<<"-------------";
gotoxy(8,19);cout<<"\tTotal Harga "; gotoxy(50,19);cout<<": Rp."<<pembayaran[k][2]<<endl;
gotoxy(8,20);cout<<"\tPembayaran "; gotoxy(50,20);cout<<": Rp."<<pembayaran[k][3]<<endl;
gotoxy(8,22);cout<<"\tKembalian "; gotoxy(50,22);cout<<": Rp."<<pembayaran[k][4]<<endl;
break;
}
}
break;
}
else if(j==899){
hapus();
cout<<"Angka yang diinputkan tidak termasuk dalam daftar";
}
}
gotoxy(6,25);cout<<"Apakah anda ingin melihat detail pemesanan lainnya? [Y/T] : "; cin>>pilih1;
if(pilih1=="Y" || pilih1=="y")
goto lihatDetail;
else if(pilih1=="T" || pilih1=="t"){
hapus();
goto AdminUtama;
}
else{
hapus();
goto AdminUtama;
}
break;
case 0:
user="";
goto lgn;
break;
default:
hapus();
goto AdminUtama;
break;
}
}
else{
hapus();
cout<<"Username dan Password tidak tepat"<<endl;
gotoxy(6,25);system("pause");
hapus();
goto lgn;
}
return 0;
}
#include <conio.h>
#include <string>
#include <windows.h>
#include <sstream>
using namespace std;
int adm;
string pilih1;
//fungsi gotoxy
void gotoxy(int x, int y)
{
HANDLE hConsoleOutput;
COORD dwCursorPosition;
cout.flush();
dwCursorPosition.X = x;
dwCursorPosition.Y = y;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
//fungsi clrscr
void hapus()
{
system("cls");
}
//perubahan tipe data ke string
string toString ( int Number )
{
stringstream ss;
ss << Number;
return ss.str();
}
//perubahan tipe data ke integer
int toInt(string str){
return atoi(str.c_str());
}
// menghitung nilai kembalian
double kembalian(double bayar, double harga){
double kembali;
kembali = bayar - harga;
return kembali;
}
//membuat tabel
void tabel(string data[][3],int kolom,int posisi){
int baris;
bool status;
//mebuat header tabel
baris =7;
gotoxy(baris,posisi);cout<<"-------------------------------------------------------------";
for (int l=0;l<3;l++){
gotoxy(baris,posisi+1);cout<<"| "<<data[0][l];
baris = baris+20;
}
gotoxy(baris,posisi+1);
cout<<"|"<<endl;
baris=7;
gotoxy(baris,posisi+2);cout<<"-------------------------------------------------------------";
// membuat isi tabel
for (int i =1; i<kolom;i++){
baris=7;
for(int j =0; j<3;j++){
if(data[i][j]!=""){
gotoxy(baris,posisi+(i+2));cout<<"| "<<data[i][j];
baris =baris+20;
status = true;
} else
status = false;
}
if(status==true){
gotoxy(baris,posisi+(i+2));
cout<<"|"<<endl;
}
}
}
void kotak(int baris, int kolom){
for (int i = 0; i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==1||j==kolom-1){
gotoxy(j+3,i);cout<<"|";
} else if(i==4||i==baris||i==0||j==0||j==kolom){
gotoxy(j+3,i);cout<<"=";
}
else
gotoxy(j+3,i);cout<<" ";
}
cout<<endl;
}
gotoxy(6,1);cout<<"\t\tSelamat Datang Di Program Sederhana kami..."<<endl;
gotoxy(7,2);cout<<"\t\t\tProgram Potong Rambut"<<endl;
}
void kotakKecil(int garis){
for (int i=0; i<=1; i++){
if(i==garis)
cout<<" ";
for (int j=0;j<=5; j++){
if(i==garis){
cout<<"=";
} else if(j==1||j==5){
cout<<"| ";
} else
cout<<" ";
}
cout<<endl;
}
}
void kotakRuang(){
for (int i=1; i<=10; i++){
if(i==1||i==10)
cout<<" ";
for (int j=0;j<=60; j++){
if(i==1 || i==10){
cout<<"=";
} else if(j==1||j==60){
cout<<"| ";
} else
cout<<" ";
}
cout<<endl;
}
}
//membuat login
string loginKaryawan(string user, string pass,string pengguna[][4]){
string status;
for(int i=1;i<=5;i++){
if(user==pengguna[i][1] && pass==pengguna[i][2]){
adm=toInt(pengguna[i][0]);
status = pengguna[i][3];
break;
} else
status = "null";
}
return status;
}
//menentukan yang sudah dipesan atau belum
bool prosesPemesanan(string pemesanan[][2], string pelanggan, int pesanan){
bool proses=true;
for (int i = 0; i<100;i++){
if(pemesanan[i][0]==pelanggan && pemesanan[i][1]==toString(pesanan)){
proses=false;
}
}
return proses;
}
void simpanTigaKolom(string arr[][3], string value1, string value2, string value3){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=value1;
arr[i][1]=value2;
arr[i][2]=value3;
break;
}
}
}
void simpanLimaKolom(string arr[][6],string value2, string value3, string value4, string value5,string value6){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=toString(i);
arr[i][1]=value2;
arr[i][2]=value3;
arr[i][3]=value4;
arr[i][4]=value5;
arr[i][5]=value6;
break;
}
}
}
void simpanDuaKolom(string arr[][2], string value1, string value2){
for (int i=0; i<=800; i++){
if(arr[i][0]==""){
arr[i][0]=value1;
arr[i][1]=value2;
break;
}
}
}
void hapusMeja(string meja[][2], string langgan){
for(int i=0;i<5;i++){
if(meja[i][0]!="" && meja[i][1]==langgan){
meja[i][1]="";
}
}
}
//menghapus pelanggan yang sudah melakukan pembayaran
void hapusPelanggan(int urutan,string pelanggan[][3]){
for(int i = 0; i<80;){
if(pelanggan[i][0]==toString(urutan)){
for(int k=i;k<80; k++){
for(int j=0;j<3;j++){
pelanggan[k][j]=pelanggan[k+1][j];
pelanggan[k+1][j]="";
}
}
}
else if(pelanggan[i][0]=="")
break;
else
i=i+1;
}
}
//menghapus pemesanan dari pelanggan yang sudah melakukan pembayaran
void hapusPemesanan(int urutan, string pemesanan[][2]){
for(int i = 0; i<90;){
if(pemesanan[i][0]==toString(urutan)){
for(int k=i;k<90; k++){
for(int j=0;j<2;j++){
pemesanan[k][j]=pemesanan[k+1][j];
pemesanan[k+1][j]="";
}
}
}
else if(pemesanan[i][0]=="")
break;
else
i=i+1;
}
}
//menu pembayaran
void menuPembayaran(int urutan, string pemesanan[][2],string pelanggan[][3],string data[][3], string pelanggan1[][3], string pemesanan1[][2], string pembayaran[][6]){
Pembayaran:
double total=0;
double bayar;
int batas = 0;
int urut,tt;
for(int j = 0; j<100;j++){
if(pelanggan[j][0]==toString(urutan)){
if(j<5){
gotoxy(8,7);cout<<"\tNama "; gotoxy(25,7);cout<<": "<<pelanggan[j][1]<<endl;
gotoxy(8,8);cout<<"\tAlamat "; gotoxy(25,8);cout<<": "<<pelanggan[j][2]<<endl;
gotoxy(8,10);cout<<"\tPemesanan "; gotoxy(25,10);cout<<":"<<endl;
urut = toInt(pelanggan[j][0]);
for(int i=0; i<100;i++){
if(pemesanan[i][0]==toString(urut) && urut>0){
batas= batas+1;
gotoxy(8,11+batas);cout<<"\t\t"<<batas<<". "<<data[toInt(pemesanan[i][1])][1];
gotoxy(50,11+batas);cout<<": Rp."<<data[toInt(pemesanan[i][1])][2]<<endl;
total = total+atoi(data[toInt(pemesanan[i][1])][2].c_str());
simpanDuaKolom(pemesanan1, pemesanan[i][0],pemesanan[i][1]);
}
}
gotoxy(8,21);cout<<"\t----------------------------------"; gotoxy(50,21);cout<<"-------------";
gotoxy(8,19);cout<<"\tTotal Harga "; gotoxy(50,19);cout<<": Rp."<<total<<endl;
gotoxy(8,20);cout<<"\tPembayaran "; gotoxy(50,20);cout<<": Rp.";
gotoxy(8,22);cout<<"\tKembalian "; gotoxy(50,22);cout<<": ";
gotoxy(55,20); cin>>bayar;
if(bayar>=total){
gotoxy(52,22);cout<<"Rp."<<kembalian(bayar,total);
double kembali= kembalian(bayar,total);
simpanTigaKolom(pelanggan1,pelanggan[j][0],pelanggan[j][1],pelanggan[j][2]);
simpanLimaKolom(pembayaran,toString(urutan), toString(total), toString(bayar), toString(kembali),toString(adm));
gotoxy(6,25);cout<<"Apakah ada Pembayaran lainnya? [Y/T] : "; cin>>pilih1;
} else{
gotoxy(6,24);cout<<"Bayar dengan uang yang lebih dari total pembayaran!!!";
gotoxy(6,25);system("pause");
hapus();
hapusPemesanan(j, pemesanan1);
kotak(27,70);
goto Pembayaran;
}
break;
}
}
else if(j==99){
hapus();
cout<<"Angka yang diinputkan tidak termasuk dalam daftar";
}
}
}
void kotakKecil(int sp, int en){
int baris=1;
int kolom=6;
for (int i = 0; i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==0||j==kolom){
gotoxy(sp+j,en+i);cout<<"|";
} else if(i==0){
gotoxy(sp+j,en+i);cout<<"=";
}
else
gotoxy(sp+j,en+i);cout<<" ";
}
cout<<endl;
}
}
void kotakRuang(int sp, int en, string meja[][2]){
int baris=10;
int kolom=60;
int noMeja=0;
for (int i=0;i<=baris; i++){
for (int j = 0; j<=kolom; j++){
if(j==0||j==kolom){
gotoxy(sp+j,en+i);cout<<"|";
} else if(i==baris||i==0){
gotoxy(sp+j,en+i);cout<<"=";
} else
gotoxy(sp+j,en+i);cout<<" ";
}
for(int k=0;k<=kolom; k++){
if(i==2&&(k==10||k==30||k==50)){
kotakKecil(sp+k,en+i);
} else if(i==8&&(k==30||k==50)){
kotakKecil(sp+k,en+i);
}
}
cout<<endl;
}
for (int i=0;i<=baris; i++){
for(int k=0;k<=kolom; k++){
if(i==1&&(k==13||k==33||k==53)){
gotoxy(sp+k,en+i);cout<<meja[noMeja][0];
gotoxy(sp+k,en+i+2);cout<<meja[noMeja][1];
noMeja=noMeja+1;
} else if(i==7&&(k==33||k==53)){
gotoxy(sp+k,en+i);cout<<meja[noMeja][1];
gotoxy(sp+k,en+i+2);cout<<meja[noMeja][0];
noMeja=noMeja+1;
}
}
cout<<endl;
}
}
void insertMeja(string meja[][2], string pelanggan[][3]){
string pelpil;
for(int i=0; i<5;i++){
if(meja[i][0]!="" && meja[i][1]==""){
for(int j=1;j<=5;j++){
if(pelanggan[j][0]!=""){
for(int k=0; k<5;k++){
if(pelanggan[j][0]!=meja[k][1]){
pelpil=pelanggan[j][0];
} else{
pelpil="";
break;
}
}
}
}
meja[i][1]=pelpil;
break;
}
}
}
void userAktif(string usr, string level){
gotoxy(6,5);cout<<"User : "<<usr;
gotoxy(55,5);cout<<"Level : "<<level;
}
int totalPelanggan(string arr[][3]){
int total=0;
for (int i=1; i<900; i++){
if(arr[i][0]!=""){
total=total+1;
}
}
return total;
}
double totalPendapatan(string arr[][6]){
double total=0;
for (int i=1; i<=800;i++){
if(arr[i][0]!=""){
total=total+toInt(arr[i][2]);
}
}
return total;
}
int main(){
string data[6][3]={{"Nomor","Proses","Harga"},{"1","Potong Rambut","15000"},{"2","Cream bath","50000"},{"3","Catok","10000"},{"4","Rebounding","100000"},{"5","Semir","65000"}};
string pelanggan[100][3]={{"Nomor","Nama","Alamat"}};
string pemesanan[100][2];
string pengguna[6][4]={{"Nomor","username","password","Level"},{"1","Heri","8687","Admin"},{"2","Reza","8697","Operator"},{"3","Ikhwan","8715","Admin"},{"4","Wulan","8723","Operator"},{"5","Sigit","8698","Admin"}};
string pelanggan1[1000][3]={{"Nomor","Nama","Alamat"}};
string pemesanan1[1000][2];
string pembayaran[1000][6]={{"Nomor","no Pel","total","Bayar","Kembalian","user"}};
string meja[5][2]={{"1",""},{"2",""},{"3",""},{"4",""},{"5",""}};
string user,pass,nama, alamat,no,kembali,idPelanggan, lg;
int selesai, k,maxJ, batas, urut, urutan;
int nomorPelanggan=0;
double total, bayar;
char ch;
lgn:
hapus();
pass="";
gotoxy(0,0);cout<<"Username : ";
gotoxy(0,1);cout<<"Password : ";
gotoxy(18,0);cin>>user;
gotoxy(18,1); ch=_getch();
while(ch !=13){
pass.push_back(ch);
cout<<'*';
ch = _getch();
}
lg=loginKaryawan(user,pass,pengguna);
hapus();
Utama:
insertMeja(meja,pelanggan);
kotak(27,70);
userAktif(user,lg);
int pilihan;
if(lg=="Operator"){
k=0;
kotakRuang(7,7,meja);
cout<<endl;
gotoxy(8,19);cout<<"Pilih Menu yang akan dilakukan....\n";
gotoxy(8,20);cout<<"[1] Pesan\n";
gotoxy(8,21);cout<<"[2] Bayar\n";
gotoxy(8,22);cout<<"[0] Keluar\n";
gotoxy(8,23);cout<<"Pilihan : ";
while (cin>>pilihan){
switch(pilihan){
case 1:
hapus();
kotak(27,70);
kotakRuang(6,7,meja);
userAktif(user,lg);
cout<<endl;
gotoxy(8,19);cout<<"Isi Dulu Biadata Pelanggan\n";
gotoxy(8,20);cout<<"Nama "; gotoxy(20,20);cout<<": ";
gotoxy(8,21);cout<<"Alamat "; gotoxy(20,21);cout<<": ";
gotoxy(23,20);cin>>nama;
gotoxy(23,21);cin>>alamat;
hapus();
kotak(27,70);
userAktif(user,lg);
tabel(data,6,7);
maxJ=0;
gotoxy(6,25);cout<<"Pilih 9 jika selesai...";
for (int i = 0; i<100;i++){
if(pelanggan[i][1]==""){
nomorPelanggan=nomorPelanggan+1;
idPelanggan=toString(nomorPelanggan);
pelanggan[i][0]=idPelanggan;
pelanggan[i][1]=nama;
pelanggan[i][2]=alamat;
for(int j=0; j<100;j++){
pemrosesan:
if(pemesanan[j][0]==""){
k=k+1;
if(k<=5){
gotoxy(8,16+k);cout<<"Proses yang dilakukan : "; cin>>selesai;
if(selesai==9){
hapus();
goto Utama;
}
else if(selesai>=1 && selesai<=5){
if(prosesPemesanan(pemesanan,idPelanggan,selesai)==true){
pemesanan[j][0]=idPelanggan;
pemesanan[j][1]=toString(selesai);
gotoxy(34,16+k);cout<<"-- "<<data[selesai][1];
gotoxy(55,16+k);cout<<"Rp. "<<data[selesai][2];
}
else{
gotoxy(30,16+k);cout<<" ";
k=k-1;
}
}
else{
gotoxy(30,16+k);cout<<" ";
k=k-1;
}
}
else{
gotoxy(6,25);cout<<"";
gotoxy(6,25);system("pause");
goto Utama;
}
}
}
goto Utama;
}
}
break;
case 2:
MenuPembayaran:
hapus();
kotak(27,70);
userAktif(user,lg);
tabel(pelanggan,10,8);
gotoxy(8,7);cout<<"Urutan Pelanggan yang ingin membayar : ";cin>>urutan;
hapus();
kotak(27,70);
gotoxy(6,5);cout<<"User : "<<user;
gotoxy(50,5);cout<<"Level : "<<lg;
menuPembayaran(urutan,pemesanan,pelanggan,data,pelanggan1,pemesanan1,pembayaran);
hapusMeja(meja,toString(urutan));
hapusPelanggan(urutan,pelanggan);
hapusPemesanan(urutan,pemesanan);
if(pilih1=="Y" || pilih1=="y")
goto MenuPembayaran;
else if(pilih1=="T" || pilih1=="t")
goto Utama;
else
goto Utama;
goto Utama;
break;
case 0:
user="";
goto lgn;
break;
default:
hapus();
cout<<"Angka yang anda masukkan tidak ada dalam daftar";
gotoxy(6,25);system("pause");
hapus();
goto Utama;
break;
}
}
hapus();
goto Utama;
}
else if(lg=="Admin"){
AdminUtama:
int pilih, noPelanggan;
kotak(27,70);
userAktif(user,lg);
tabel(pelanggan1,6,14);
gotoxy(7,13);cout<<"Total Pelanggan : "<<totalPelanggan(pelanggan1);
gotoxy(45,13);cout<<"Total Pendapatan : "<<totalPendapatan(pembayaran);
gotoxy(8,8);cout<<"Pilih Menu yang akan dilakukan....\n";
gotoxy(8,9);cout<<"[1] Lihan Detail Pelayanan\n";
gotoxy(8,10);cout<<"[0] Keluar\n";
gotoxy(8,11);cout<<"Pilihan : "; cin>>pilih;
switch(pilih){
case 1:
lihatDetail:
hapus();
userAktif(user,lg);
kotak(27,70);
tabel(pelanggan1,10,8);
gotoxy(8,7);cout<<"nomor pelanggan : ";cin>>noPelanggan;
hapus();
kotak(27,70);
Pembayaran:
total=0;
batas = 0;
for(int j = 0; j<900;j++){
if(pelanggan1[j][0]==toString(noPelanggan)){
gotoxy(8,7);cout<<"\tNama "; gotoxy(25,7);cout<<": "<<pelanggan1[j][1]<<endl;
gotoxy(8,8);cout<<"\tAlamat "; gotoxy(25,8);cout<<": "<<pelanggan1[j][2]<<endl;
gotoxy(8,10);cout<<"\tPemesanan "; gotoxy(25,10);cout<<":"<<endl;
for(int i=0; i<900;i++){
if(pemesanan1[i][0]==toString(noPelanggan) && noPelanggan>0){
batas= batas+1;
gotoxy(8,11+batas);cout<<"\t\t"<<batas<<". "<<data[toInt(pemesanan1[i][1])][1];
gotoxy(50,11+batas);cout<<": Rp."<<data[toInt(pemesanan1[i][1])][2]<<endl;
total = total+atoi(data[toInt(pemesanan1[i][1])][2].c_str());
}
}
for(int k =0; k<=900;k++){
if(pembayaran[k][1]==toString(noPelanggan)){
for(int l=0;l<=5;l++){
if(pengguna[l][0]==pembayaran[k][5]){
gotoxy(6,5);cout<<"User : "<<pengguna[l][1];
gotoxy(50,5);cout<<"Level : "<<pengguna[l][3];
break;
}
}
gotoxy(8,21);cout<<"\t----------------------------------"; gotoxy(50,21);cout<<"-------------";
gotoxy(8,19);cout<<"\tTotal Harga "; gotoxy(50,19);cout<<": Rp."<<pembayaran[k][2]<<endl;
gotoxy(8,20);cout<<"\tPembayaran "; gotoxy(50,20);cout<<": Rp."<<pembayaran[k][3]<<endl;
gotoxy(8,22);cout<<"\tKembalian "; gotoxy(50,22);cout<<": Rp."<<pembayaran[k][4]<<endl;
break;
}
}
break;
}
else if(j==899){
hapus();
cout<<"Angka yang diinputkan tidak termasuk dalam daftar";
}
}
gotoxy(6,25);cout<<"Apakah anda ingin melihat detail pemesanan lainnya? [Y/T] : "; cin>>pilih1;
if(pilih1=="Y" || pilih1=="y")
goto lihatDetail;
else if(pilih1=="T" || pilih1=="t"){
hapus();
goto AdminUtama;
}
else{
hapus();
goto AdminUtama;
}
break;
case 0:
user="";
goto lgn;
break;
default:
hapus();
goto AdminUtama;
break;
}
}
else{
hapus();
cout<<"Username dan Password tidak tepat"<<endl;
gotoxy(6,25);system("pause");
hapus();
goto lgn;
}
return 0;
}
Itulah tampilan program secara keseluruhan. Memang tidak jelas sih, tapi tinggal copas trus di run in Sya Allah jadi kok.. hehe
Tampilan Login. Memang sengaja saya buat biasa untuk kejutan. Ingat. untuk login username maupun password, huruf besar maupun kecil berpengaruh.
tampilan Home. setelah login, maka tampilan ini akan muncul. terdapat 3 menu. yaitu pesan, bayar dan keluar.
Tampilan isi biodata pelanggan. jika memilih menu pesan, maka secara otomatis akan muncul tampilan ini.
Setelah diisi biodata pelanggan, tampilan diatas akan muncul, tampilan diatas berfungsi untuk memilih pelayanan yang akan dilakukan unutk pelanggan.
berikutnya. setelah memilih pelayanan. maka akan kembali ke tampilan utama. jika pilih bayar. maka akan muncul tampilan seperti diatas. tampilan ini merupakan tampilan yang berisi data-data pelanggan.
Tampilan struk pembayaran. setelah pelanggan ynag sudah selesai dipilih, maka akan muncul tampilan pembayaran seperti diatas.
jika masuk sebagai admin, maka tampilan diatas lah yang akan muncul.
Demikianlah program yang saya bagikan kepada para pembaca sekalian. Program tersebut memang program sederhana yang sebenarnya sangat mudah. Saya pun membuat program itu hanya dalam waktu 3 hari. Itupun hanya saya kerjakan beberapa jam per harinya. Jadi wajar jika program tersebut sangat mudah dan bisa dipelajari. Bagi pembaca yang mendapat tugas untuk membuat aplikasi menggunakan bahasa pemrograman c++ bisa gunakan program saya ini, tapi alangkah baiknya jika diedit dikit supaya lebih bagus. Semoga artikel saya ini bermanfaat dan menambah wawasan pembaca. Apabila ada kekurangan mohon dimaafkan karena saya pun hanyalah manusia biasa. Sekian dan terimakasih atas perhatiannyasalamu’alaikum wr.wb
Untuk lebih jelasnya tentang cara penggunaan program potong rambut ini, bisa dilihat disini
atau bisa langsung tonton disini
Post a Comment for "Program Potong rambut sederhana menggunakan bahasa pemrograman C++ dan compiler mingw"