Canteen Program - C++ Language

Laporan Tugas Proyek
Dasar Pemrograman (C++)
(Program Kantin Unida)

Oleh:
Wildan Putra Pamungkas
362015611039

Program Studi Teknik Informatika
Fakultas Sains dan Teknologi
Universitas Darussalam Gontor
2015

A. Penjelasan Program
Program ini adalah program untuk memesan makanan maupun minuman pada sebuah kantin yang berfungsi untuk memudahkan para pelanggan dalam memesan menu-menu makanan maupun minuman. Di dalamnya terdapat banyak fasilitas, fasilitas yang pertama adalah input menu yaitu untuk menampilkan menu-menu yang ada dan meng-inputkan menu makanan atau minuman yang akan kita pesan. Fasilitas kedua adalah tampil data, yang berfungsi untuk menampilkan menu yang telah kita pesan lengkap dengan total harga yang harus dibayarkan. Fasilitas yang ketiga adalah cari data yang berfungsi untuk mencari data pengunjung yang telah terdata dan tersimpan dalam database. Fasilitas yang keempat adalah edit data tang berfungsi untuk memperbarui data pengunjung yang sebelumnya telah terdata. Fasilitas ini juga berfungsi apabila pengunjung kantin ternyata salah memesan, lalu dapat diperbarui kembali dengan pesanan yang akan pengunjung pesan. Fasilitas yang kelima adalah delete data yang berfungsi untuk menghapus data pengunjung yang telah tersimpan pada database.

Berikut adalah gambar pada fasilitas-fasilitas menu utama yang ada pada program “Kantin UNIDA”.

B. Source Code
Source Code “Program Kantin Unida”
#include <iostream>
#include <windows.h>
#include <fstream>
#include <conio.h>

using namespace std;
COORD coord= {0,0};
void gotoxy(int x,int y)
{
    coord.X=x;
    coord.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
void garis()
{
    gotoxy(15,3);
    cout<<char(201);//pojok kiri atas
    gotoxy(61,3);
    cout<<char(187);//pojok kanan atas
    gotoxy(15,20);
    cout<<char(200);//pojok kiri bawah
    gotoxy(61,20);
    cout<<char(188);//pojok kiri bawah
    for(int x=16; x<61; x++) //garis horizontal atas 1
    {
        gotoxy(x,3);
        cout<<char(205);
    }

    for(int x=15; x<62; x++) //garis horizontal atas 2
    {
        gotoxy(x,5);
        cout<<char(205);
    }

    for(int y=4; y<20; y++) //garis vertikal kiri
    {
        gotoxy(15,y);
        cout<<char(186);
    }

    for(int y=4; y<20; y++) //garis vertikal kanan
    {
        gotoxy(61,y);
        cout<<char(186);
    }

    for(int x=16; x<61; x++) //horizontal paling bwh
    {
        gotoxy(x,20);
        cout<<char(205);
    }
}
void garis2()
{
    gotoxy(15,3);
    cout<<char(201);//pojok kiri atas
    gotoxy(70,3);
    cout<<char(187);//pojok kanan atas
    gotoxy(15,25);
    cout<<char(200);//pojok kiri bawah
    gotoxy(70,25);
    cout<<char(188);//pojok kanan bawah
    for(int x=16; x<70; x++) //garis horizontal atas 1
    {
        gotoxy(x,3);
        cout<<char(205);
    }

    for(int x=15; x<70; x++) //garis horizontal atas 2
    {
        gotoxy(x,5);
        cout<<char(205);
    }

    for(int y=4; y<25; y++) //garis vertikal kiri
    {
        gotoxy(15,y);
        cout<<char(186);
    }

    for(int y=4; y<25; y++) //garis vertikal kanan
    {
        gotoxy(70,y);
        cout<<char(186);
    }

    for(int x=16; x<70; x++) //horizontal paling bwh
    {
        gotoxy(x,25);
        cout<<char(205);
    }
}

int input();
int update();
int hapus();
int cari();
void lihat(void);
int main()
{
    system("color 7C");
    int a;
    system("cls");
    garis();
    for(int x=16; x<28; x++) //tengah
    {
        gotoxy(x,15);
        cout<<char(177);
    }

    for(int x=51; x<61; x++) //tengah
    {
        gotoxy(x,15);
        cout<<char(177);
    }
    gotoxy(32,4);
    cout<<" KANTIN UNIDA"<<endl;
    gotoxy(25,7);
    cout<<"[1] Input Menu"<<endl;
    gotoxy(25,8);
    cout<<"[2] Tampilkan Menu Yg Telah di Pesan"<<endl;
    gotoxy(25,9);
    cout<<"[3] Cari Menu Yg Telah di Pesan"<<endl;
    gotoxy(25,10);
    cout<<"[4] Edit"<<endl;
    gotoxy(25,11);
    cout<<"[5] Hapus"<<endl;
    gotoxy(25,12);
    cout<<"[6] Exit"<<endl;
    gotoxy(30,15);
    cout<<"Masukkan pilihan: ";
    cin>>a;
    if (a==1)
    {
        input();
    }
    else if (a==2)
    {
        lihat();
    }
    else if (a==3)
    {
        cari();
    }
    else if (a==4)
    {
        update();
    }
    else if (a==5)
    {
        hapus();
    }
}

class NAa //class=fungsi yg dpt dpggil dmna2
{
public: //sub menu dr class
    char nama[500], makanan[500], minuman[500];
    int nomeja;
    float harga_makanan, harga_minuman;
    void inputNama()
    {
        system("cls");
        for(int x=15; x<70; x++) //garis horizontal atas 3
        {
            gotoxy(x,7);
            cout<<char(205);
        }
        garis2();
        gotoxy(38,4);
        cout<<"PILIH MENU";
        gotoxy(24,6);
        cout<<"MENU MAKANAN";
        gotoxy(17,8);
        cout<<"1. Capcay  >> Rp. 10.000";
        gotoxy(17,9);
        cout<<"2. Pecel   >> Rp. 5.000";
        gotoxy(17,10);
        cout<<"3. Rawon   >> Rp. 5.000";
        gotoxy(17,11);
        cout<<"4. Soto    >> Rp. 5.000";
        gotoxy(17,12);
        cout<<"5. Sate    >> Rp. 15.000";

        for(int y=6; y<13; y++) //garis tengah
        {
            gotoxy(43,y);
            cout<<char(179);
        }
        gotoxy(50,6);
        cout<<"MENU MINUMAN";
        gotoxy(45,8);
        cout<<"1. Aqua   >> Rp. 1.000";
        gotoxy(45,9);
        cout<<"2. Coffee >> Rp. 2.000";
        gotoxy(45,10);
        cout<<"3. Tea    >> Rp. 2.000";
        gotoxy(45,11);
        cout<<"4. Soda   >> Rp. 5.000";
        gotoxy(45,12);
        cout<<"5. Susu   >> Rp. 2.000";

        for(int x=16; x<70; x++) //garis horizontal atas 4
        {
            gotoxy(x,13);
            cout<<char(205);
        }

        gotoxy(17,15);
        cout<<"Nama         : ";
        cin>>nama;
        gotoxy(17,16);
        cout<<"Nomer Meja   : ";
        cin>>nomeja;
        gotoxy(17,17);
        cout<<"Pilih Menu Makanan : ";
        cin>>makanan;
        gotoxy(17,18);
        cout<<"Pilih Menu Minuman : ";
        cin>>minuman;
        gotoxy(17,19);
        cout<<"Harga Makanan: ";
        cin>>harga_makanan;
        gotoxy(17,20);
        cout<<"Harga Minuman: ";
        cin>>harga_minuman;
        cout<<endl;
    }

    void outputNama()
    {
        cout<<"Pesanan yang Anda Pilih"<<endl<<endl;
        cout <<"Nama           : "<<nama<<endl;
        cout <<"No. Meja       : "<<nomeja<<endl;
        cout <<"Nama Makanan   : "<<makanan<<endl;
        cout <<"Nama Minuman   : "<<minuman<<endl;
        cout <<"Total Harga    : "<<harga_makanan+harga_minuman<<endl;
        cout<<"==================================="<<endl;
    }

    int getNAa()
    {
        return nomeja;
    }
};

NAa makan; //nama class
ifstream fi; //menampilkan
ofstream fo; //menyimpan
fstream fa;
int n;
char namaFile[30]="cobalagi.txt";

int input ()
{

nambah:
    string z;
    makan.inputNama();

    fo.open(namaFile, ios::binary | ios::app);

    fo.write((char*) &makan, sizeof (makan));
    fo.close();
    gotoxy(17,23);
    cout<<"Apakah anda ingin menambah menu lagi?(Y/N)";
    cin>>z;

    if(z=="Y" || z=="y")
    {
        goto nambah; //nambah menu - balik ke daftar menu
    }
    else
    {
        main(); // balik ke menu awal
    }
}

void lihat (void)
{
    string z;
    system("cls");
    fi.open(namaFile, ios::binary);
    while (fi.read( (char*) &makan, sizeof(makan)))
    {
        makan.outputNama();
    }
    fi.close();
    cout<<"Apakah anda ingin kembali ke menu Awal lagi?(Y/N)";
    cin>>z;

    if(z=="Y" || z=="y")
    {
        main(); // menu awal
    }
}

int cari ()
{
    string z;
    system("cls");
    gotoxy(15,3);
    cout<<char(201);//pojok kiri atas
    gotoxy(62,3);
    cout<<char(187);//pojok kanan atas
    gotoxy(15,5);
    cout<<char(200);//pojok kiri bawah
    gotoxy(62,5);
    cout<<char(188);//pojok kiri bawah
    gotoxy(62,4);
    cout<<char(186);
    gotoxy(15,4);
    cout<<char(186);
    for(int x=16; x<62; x++) //garis horizontal atas 1
    {
        gotoxy(x,3);
        cout<<char(205);
    }

    for(int x=16; x<62; x++) //garis horizontal atas 2
    {
        gotoxy(x,5);
        cout<<char(205);
    }
    int cari_meja, ketemu=0;
    gotoxy(31,4);
    cout<<"Cari No. Meja : ";
    cin>>cari_meja;

    system("cls");
    fi.open(namaFile, ios::binary); //membuka file dengan format binary
    while(fi.read( (char*)&makan, sizeof(makan))) //while=penyeleksi
    {
        if(makan.getNAa()== cari_meja)
        {
            ketemu = 1;
            break;
        }
    }
    if(ketemu == 0)
    {
        cout<<"NO. Meja "<<cari_meja<<" TIDAK DI TEMUKAN!"<<endl;
    }
    else
    {
        cout<<"NO. Meja "<<cari_meja<<" DITEMUKAN"<<endl;
        makan.outputNama(); //manggil class output nama
    }
    fi.close();
    cout<<endl;
    cout<<"Apakah anda ingin kembali ke menu Awal lagi?(Y/N)";
    cin>>z;

    if(z=="Y" || z=="y")
    {
        main(); //menu paling awal
    }
}
int update ()
{
    string z;
    system("cls");
    int cari_meja, ketemu=0;
    cout<<"Cari No. Meja : ";
    cin>>cari_meja;
    fa.open(namaFile, ios::in | ios::out); //ios::in=input >> ios::out=membuka
    while (fa.read((char*) &makan, sizeof (makan)))//while=penyeleksi
    {
        if(makan.getNAa() == cari_meja)
        {
            makan.outputNama();
            cout<<"Silahkan Masukkan Perubahan Data:"<<endl;
            makan.inputNama();
            int pos=-1*sizeof(makan);
            fa.seekp(pos, ios::cur); //seekp = mencari file secara acak||ios::cur = utk mncari file hingga akhir.
            fa.write((char*) &makan, sizeof (makan)); //menulis, lalu menyimpan setlh diupdate
            break;
        }
    }
    fa.close();
    gotoxy(17,23);
    cout<<"Apakah anda ingin kembali ke menu Awal lagi?(Y/N)";
    cin>>z;

    if(z=="Y" || z=="y")
    {
        main(); //nambah menu - balik ke daftar menu
    }

}
int hapus()
{
    string z;
    system("cls");
    gotoxy(15,3);
    cout<<char(201);//pojok kiri atas
    gotoxy(62,3);
    cout<<char(187);//pojok kanan atas
    gotoxy(15,5);
    cout<<char(200);//pojok kiri bawah
    gotoxy(62,5);
    cout<<char(188);//pojok kiri bawah
    gotoxy(62,4);
    cout<<char(186);
    gotoxy(15,4);
    cout<<char(186);
    for(int x=16; x<62; x++) //garis horizontal atas 1
    {
        gotoxy(x,3);
        cout<<char(205);
    }

    for(int x=16; x<62; x++) //garis horizontal atas 2
    {
        gotoxy(x,5);
        cout<<char(205);
    }
    int cari_meja, ketemu=0;
    gotoxy(32,4);
    cout<<"Cari No. Meja : ";
    cin>>cari_meja;

    fi.open(namaFile, ios::binary);
    fo.open("cadangan.txt", ios::out | ios::binary); //ios::out = menampilkan, lalu menghapus

    while (fi.read((char*)&makan, sizeof(makan)))//while=penyeleksi
    {
        if (makan.getNAa() != cari_meja)
        {
            fo.write((char*)&makan, sizeof(makan));
        }
        else
        {
            ketemu=1;
        }
    }
    fi.close();
    fo.close();

    remove(namaFile);
    rename("cadangan.txt", namaFile);

    system("cls");
    if(ketemu==1)
    {
        cout<<"No. Meja "<<cari_meja<<" TELAH DIHAPUS!"<<endl;
    }
    else
    {
        cout<<"No. Meja "<<cari_meja<<" TIDAK DITEMUKAN!"<<endl;
    }
    cout<<"Apakah anda ingin kembali ke menu Awal lagi?(Y/N)";
    cin>>z;

    if(z=="Y" || z=="y")
    {
        main(); //menu awal
    }
    lihat();
    getch();
}
Berikut adalah Gambarnya:

Gambar 1.0. Menu Utama/Cover

Gambar 1.1. Input Menu

Gambar 1.2.Tampil Data

maka akan ketemu:
Gambar 1.3. dan 1.4. Cari Data

maka akan ketemu datanya dan akan langsung diperbarui:
maka data yang teah diperbarui akan tampil seperti dibawah ini:
Gambar 1.5., 1.6. dan 1.7. Update Data

maka data pada meja nomor 7 akan dihapus, seperti gambar dibawah ini:
Gambar 1.8. dan 1.9. Hapus Data







Komentar

Postingan populer dari blog ini

Deteksi dan Koreksi Kesalahan pada Komunikasi Data

DMA (DIRECT MEMMORY ACCESS)

Topologi Mesh