Wednesday, April 29, 2015

PROGRAM PEMESANAN KURSI BAHASA C

PROGRAM PEMESANAN KURSI 
DENGAN BAHASA C

Kali ini saya akan berbagi program tentang simulasi pemesanan kursi pada sebuah cafe atau semacamnya, disini kita bisa memesan kursi dan kita juga bisa merubah nonor kursi yang kita pesan dan bisa juga membatalkannya ....
Langsung saja kita lihat programnya :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

typedef struct{
char pemilik[20];
}PML;
int box[5];
int menu2;
char cari[20];
int no;
int cek;
int f,i,j;
PML data[20];

system("cls");

for (i=0; i<5; i++){
box[i]=0;
}
for (i=0; i<5; i++){
strcpy(data[i].pemilik,"kosong");
}

do{
printf("==================================\n");
printf("=        PEMESANAN KURSI         = \n");
printf("==================================\n");
printf("\n");
printf("\n=======================\n");
if(strcmp(data[i].pemilik,"kosong")==0){
box[i]=0;
}else{
box[i]=1;
}
for (i=0; i<5; i++){
printf("[%d] ",box[i]);
}
printf("\n=======================\n");
for (i=0; i<5; i++){
printf(" %d  ",i+1);
}

printf("\n\n");
printf(" 1. Lihat Pemilik Kursi          \n");
printf(" 2. Pesan Kursi                  \n");
printf(" 3. Edit Pemilik Kursi           \n");
printf(" 4. Edit Nomor Kursi             \n");
printf(" 5. Batalkan Pemesanan           \n");
printf(" 6. Exit                         \n");

printf("Masuka Pilihan : ");
scanf("%d", &menu2);
if(menu2 <= 6){

switch (menu2){
case 1 : {
system("cls");
printf("Lihat Pemilik Kursi \n");
printf("=======================\n");
for (i=0; i<5; i++){
printf("Nomor Kursi : %d\n",i+1);
printf("Pemilik     : %s\n\n",data[i].pemilik);
}

system("pause");
system("cls");
}
break;

case 2 : {
system("cls");
printf("Pesan Kursi\n");
printf("=======================\n");
for (i=0; i<5; i++){
printf("[%d] ",box[i]);
}
printf("\n=======================\n");
for (i=0; i<5; i++){
printf(" %d  ",i+1);
}
printf("\n");
printf("Pilih No. Kursi : ");
scanf("%d",&no);
i=no-1;
printf("Masukan Nama Anda : ");
fflush(stdin);gets(data[i].pemilik);

printf("\nselesai !!\n");
system("pause");
system("cls");
}
break;

case 3 : {
system("cls");

printf("Edit Pemilik Kursi\n");
printf("=======================\n");

for (i=0; i<5; i++){
printf("[%d] ",box[i]);
}

printf("\n=======================\n");

for (i=0; i<5; i++){
printf(" %d  ",i+1);
}

printf("\n\n");
printf("Pilih No. Kursi : ");
scanf("%d",&no);

j=no-1;
if(box[j]==0){
printf("Maaf, kursi yang anda pilih belum dipesan\n");
}else if(box[j]==1){
printf("Masukan Nama Anda : ");
fflush(stdin);gets(data[j].pemilik);
}

printf("\nselesai !!\n");
system("pause");
system("cls");
}
break;

case 4 : {
system("cls");

printf("Edit No. Kursi\n");
printf("=======================\n");
printf("Masukan Nama Anda : ");
fflush(stdin);gets(cari);

for (i=0; i<5; i++){
if (strcmp(data[i].pemilik,cari)==0){
f=i;
cek=0;
}
}

if(cek==0){
box[i=0];
printf("Ubah No. Kursi ke : ");
scanf("%d",&no);
i=no-1;
strcpy(data[i].pemilik,cari);
strcpy(data[f].pemilik,"kosong");
box[f]=0;
}else{
printf("Maaf nama pemilik tidak ditemukan \n");
}

system("pause");
system("cls");
}
break;

case 5 : {
system("cls");

printf("Batalkan Pemesanan \n");
printf("=======================\n");

for (i=0; i<5; i++){
printf("[%d] ",box[i]);
}

printf("\n=======================\n");
box[i]=1;
printf("\n\n");
printf("Pilih No. Kursi : ");
scanf("%d",&no);

i=no-1;
box[i]=box[i]-1;
strcpy(data[i].pemilik,"kosong");

system("pause");
system("cls");
}
break;

default :

break;

}

}else{
printf("Pilihan Tidak ada!\n");
system("pause");
system("cls");
}

}while ((menu2==0) || (menu2 != 6));

system("pause");
system("cls");
return 0;
}

Program Rekap Nilai Akhir Mahasiswa

Program Nilai Akhir Mahasiswa Dengan Array C

Program ini dibuat untuk memenuhi tugas kuliah, namun saya akan berbagi pada kalian dan semoga program ini bisa bermanfaat bagi kawan-kawan semua :)

Intinya program ini adalah untuk menghitung nilai akhir mahasiswa dan mengetaui indeks nilai mahasiswa tersebut . selain itu program ini juga bisa mencari nilai terbesar dan terkecil dari semua nilai mahasiswa yang anda input.

langsung saja lihat programnya ............

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
typedef struct{
char nama[50];
char NIM[10];
float nilaiKUIS;
float nilaiUTS;
float nilaiUAS;
float nilaiAKHIR;
char index[2];
}MHS;

MHS data2[5],max,min;
int n,i,jA,jB,jC,jD,jE;
system("cls");
printf("==================================\n");
printf("=     NILAI AKHIR MAHASISWA!     =\n");
printf("==================================\n");
printf("\n");
printf("MASUKAN JUMLAH MAHASISWA : ");
scanf("%d",&n);
for(i=0; i<n; i++){
printf("\nDATA KE-%d\n",i+1);
printf("Nama       : ");
fflush(stdin);gets(data2[i].nama);
printf("NIM        : ");
fflush(stdin);gets(data2[i].NIM);
printf("nilai KUIS : ");
scanf("%f", &data2[i].nilaiKUIS);
printf("nilai UTS  : ");
scanf("%f", &data2[i].nilaiUTS);
printf("nilai UAS  : ");
scanf("%f", &data2[i].nilaiUAS);
}
system("pause");
printf("\nREKAPITULASI NILAI\n");
printf("====================\n");
jA=0; jB=0; jC=0; jD=0; jE=0;
for(i=0; i<n; i++){
data2[i].nilaiAKHIR = (0.5*data2[i].nilaiUAS)+(0.3*data2[i].nilaiUTS)+(0.2*data2[i].nilaiKUIS);
if(data2[i].nilaiAKHIR > 85 && data2[i].nilaiAKHIR <= 100){
jA=jA+1;
strcpy(data2[i].index,"A");
}else if(data2[i].nilaiAKHIR > 75 && data2[i].nilaiAKHIR <= 85){
jB=jB+1;
strcpy(data2[i].index,"B");
}else if(data2[i].nilaiAKHIR > 60 && data2[i].nilaiAKHIR <= 75){
jC=jC+1;
strcpy(data2[i].index,"C");
}else if(data2[i].nilaiAKHIR > 40 && data2[i].nilaiAKHIR <= 60){
jD=jD+1;
strcpy(data2[i].index,"D");
}else if(data2[i].nilaiAKHIR < 40 ){
jE=jE+1;
strcpy(data2[i].index,"E");
}else{
strcpy(data2[i].index,"-");
}
printf("\n");
printf("NAMA                : %s\n", data2[i].nama);
printf("NIM                    : %s\n", data2[i].NIM);
printf("NILAI KUIS       : %.2f\n", data2[i].nilaiKUIS);
printf("NILAI UTS        : %.2f\n", data2[i].nilaiUTS);
printf("NILAI UAS        : %.2f\n", data2[i].nilaiUAS);
printf("NILAI AKhir      : %.2f\n", data2[i].nilaiAKHIR);
printf("INDEX NILAI    : %s\n", data2[i].index);
printf("======================\n");
}
max =data2[0];
min =data2[0];
for(i=0; i<n; i++){
if(data2[i].nilaiAKHIR > max.nilaiAKHIR){
max=data2[i];
}
if(data2[i].nilaiAKHIR < min.nilaiAKHIR){
min=data2[i];
}
}
printf("\nDATA NILAI AKHIR TERBESAR:\n");
printf("====================\n");
printf("\n");
printf("NAMA           : %s\n", max.nama);
printf("NIM            : %s\n", max.NIM);
printf("NILAI KUIS     : %.2f\n", max.nilaiKUIS);
printf("NILAI UTS      : %.2f\n", max.nilaiUTS);
printf("NILAI UAS      : %.2f\n", max.nilaiUAS);
printf("NILAI AKhir    : %.2f\n", max.nilaiAKHIR);
printf("INDEX NILAI    : %s\n", max.index);
printf("======================\n");
printf("\nDATA NILAI AKHIR TERKECIL:\n");
printf("====================\n");
printf("\n");
printf("NAMA           : %s\n", min.nama);
printf("NIM            : %s\n", min.NIM);
printf("NILAI KUIS     : %.2f\n", min.nilaiKUIS);
printf("NILAI UTS      : %.2f\n", min.nilaiUTS);
printf("NILAI UAS      : %.2f\n", min.nilaiUAS);
printf("NILAI AKhir    : %.2f\n", min.nilaiAKHIR);
printf("INDEX NILAI    : %s\n", min.index);
printf("======================\n");
printf("\n");
printf("JUMLAH INDEX A      : %d\n", jA);
printf("JUMLAH INDEX B      : %d\n", jB);
printf("JUMLAH INDEX C      : %d\n", jC);
printf("JUMLAH INDEX D      : %d\n", jD);
printf("JUMLAH INDEX E      : %d\n", jE);
system("pause");
system("cls");
return 0;
}


Jika sudah mengisi datanya, Hasilnya akan seperti ini :


Terimakasih semoga bermanfaat ;)
jika ada yang ditanyakan silahkan tulis di kotak komentar :)
SALAM BERBAGI !!!!!!!!


Wednesday, April 8, 2015

DDL, DML, ERD Dan AGREGASI

DDL dan DML

Secara sekilas, perintah yang digunakan dalam DDL dan DML bahasa SQL hampir sama dengan perintah-perintah dasar yang umumnya digunakan dalam konfigurasi sistem termasuk sistem linux yang pernah saya lakukan. Masing-masing memiliki fungsi. Setiap fungsinya berbeda-beda. Langsung saja anda simak contoh Perintah DDL dan DML pada Bahasa SQL....


1. DDL (Definition Data Language)


DDL atau Definition Data Language Perintah yang digunakan untuk kepentingan penciptaan atau mendefinisikan database maupun bagian dari database, tabel, hingga penghapusan database atau tabel.

Contoh :
> CREATE (untuk membentuk basis data, table atau index)
> DROP (untuk mengubah struktur table)
> ALTER (untuk menghapus basis data, table atau index)
Secara umum bentuk penulisannya sebagai berikut :

Contoh perintah DDL :

1.1. Membuat tabel

CREATE TABLE
Digunakan untuk membuat tabel. Syntax umumnya sebagai berikut :

CREATE TABLE [schema, ] table
( column datatype [DEFAULT expr][,...]);

1.2. Menghapus tabel


DROP TABLE
Digunakan untuk melakukan penghapusan tabel. Melakukan penghapusan table dengan perintah DROP, berarti mengerjakan hal berikut :

Semua data dan struktur dari table akan dihapus Semua transaksi pending akan di-commit Semua indeks akan dihapus Perintah drop ini tidak bisa di-rollback Sebagai contoh, jika kita ingin menghapus tabel dept, maka yang harus dilakukan adalah :

DROP TABLE dept;

1.3. Menambah /menghapus kolom


Statemen ALTER TABLE digunakan untuk :
~ Menambahkan kolom baru
Untuk menambah kolom baru, syntax umumnya sebagai berikut :
ALTER TABLE table
ADD         (column datatype [DEFAULT expr]
 [, column datatype]...);
~ Memodifikasi kolom yang sudah ada

Kita dapat memodifikasi kolom dengan mengubah tipe datanya, ukuran dan nilai defaultnya.
Sintaks dari perintah ALTER TABLE untuk memodifikasi kolom sebagai berikut :

ALTER TABLE table
MODIFY      (column datatype [DEFAULT expr]
 [, column datatype] ... );
Contoh :

ALTER TABLE dept
MODIFY       (dname VARCHAR2(30));

1.4. View


View adalah tabel bayangan. Tidak menyimpan data secara fisik. Biasanya berupa hasil query dari tabel-tabel dalam sebuah database. Syntax untuk melakuakn VIEW adalah :

CREATE VIEW <namaTabel> AS
 <SQLQuery>
Trigger adalah sebuah obyek dalam database yang berupa prosedur yang merespon setiap kali terdapat proses modifikasi pada tabel. Proses modifikasi berupa: Insert, Update dan delete. Syntax pembuatan Trigger:

CREATE TRIGGER <namaTrigger> ON TABLE <namaTabel>
FOR [DELETE] [,] [INSERT] [,] [UPDATE]
AS <perintahSQL>

2. DML (Data Manipulation Language)

DML atau Data Manipulation Language  yaitu perintah yang digunakan untuk memanipulasi data dalam tabel dari suatu database.

Contoh:
> SELECT – mengambil data
> DELETE – menghapus data
> INSERT – menyisipkan data
> UPDATE – mengubah data

Contoh perintah DML :

2.1 Penambahan data pada sebuah tabel
Syntax:

INSERT INTO nama_tabel(field ke-1, ….. field ke-n)
VALUES(nilai_field_ke-1, …. nilai_field_ke-n);

2.2 Pembaruan data  pada sebuah tabel
Syntax:
UPDATE nama_tabel
SET nama_field = data_baru
WHERE nama_field = data_lama;
Penghapusan data pada sebuah tabel
Syntax:

DELETE FROM nama_tabel
[ WHERE kondisi];

2.3 Pemilihan data dari satu atau beberapa tabel
Syntax :

SELECT [DISTINCT] select_list
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]

[ORDER BY order_expression [ASC | DESC] ]


ERD
 Menurut salah satu para ahli, Brady dan Loonam (2010), Entity Relationship diagram (ERD) merupakan teknik yang digunakan untuk memodelkan kebutuhan data dari suatu organisasi, biasanya oleh System Analys dalam tahap analisis persyaratan proyek pengembangan system. Sementara seolah-olah teknik diagram atau alat peraga memberikan dasar untuk desain database relasional yang mendasari sistem informasi yang dikembangkan. ERD bersama-sama dengan detail pendukung merupakan model data yang pada gilirannya digunakan sebagai spesifikasi untuk database.

 Komponen penyusun ERD adalah sebagai berikut :
    Entitas adalah objek dalam dunia nyata yang dapat dibedakan dengan objek lain, sebagai contoh mahasiswa,dosen,departemen. Entitias terdiri atas beberapa atribut sebagai contoh atribut dari entitas mahasiswa adalah nim,nama,alamat,email, dll. Atribut nim merupakan unik untuk mengidentifikasikan / membedakan mahasiswa yg satu dengan yg lainnya. Pada setiap entitas harus memiliki 1 atribut unik atau yang disebut dengan primary key.

       Atribut adalah Setiap entitas pasti mempunyai elemen yang disebut atribut yang berfungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Gambar atribut diwakili oleh simbol elips. 



        Ada dua jenis Atribut :

  1) Identifier (key) digunakan untuk menentukan suatuentity  secara unik (primary key).

  2) Descriptor (nonkey attribute) digunakan untuk menspesifikasikan karakteristik dari suatu entity yang tidak unik.

         Relasi adalah hubungan antara beberapa entitas. sebagai contoh relasi antar mahaiswa dengan mata kuliah dimana setiap mahasiswa bisa mengambil beberapa mata kuliah dan setiap mata kuliah bisa diambil oleh lebih dari 1 mahasiswa. relasi tersebut memiliki hubungan banyak ke banyak. 



AGREGASI DATABASE

Agregasi dalam SQL merupakan proses untuk mendapatkan nilai dari sekumpulan data yang telah
dikelompokkan. Pengelompokan data didasarkan pada kolom atau kombinasi kolom yang dipilih.
Beberapa fungsi untuk agregasi adalah:


1.    MAX : mencari data terbesar dari sekelompok data
2.    MIN : mencari data terkecil dari sekelompok data
3.    COUNT : mencari cacah data (data NULL tidak akan dimasukkan dalam perhitungan,kecuali disebutkan secara khusus)
4.    SUM : mencari jumlah dari sekumpulan data numeris
5.    AVG : mencari rerata dari sekumpulan data numeris
Sintaks SQL untuk melakukan pengelompokan adalah:

SELECT [daftar-kolom-non-agregasi,] daftar-kolom-agregasi
FROM daftar-tabel
[WHERE kondisi-record-dalam-tabel]
[GROUP BY daftar-kolom-agregasi]
[HAVING kodisi-filter-hasil-agregasi]
[ORDER BY daftar-kolom-pengurutan]
Untuk memperjelas mekanisme pengelompokan, kita gunakan contoh tabel P berikut, yang bisa
anda dapatkan dengan menggunakan SQL query pada halaman terakhir bagian ini:




1.    Penggunaan fungsi agregasi tanpa pengelompokan berarti melakukan agregasi dari seluruh
data.                                                                                                                                            
2.      SELECT max(thnakademik) as thnambilterakhir FROM P  (akan mengambil tahunakademik terbesar yaitu '2004/2005')
3.    Penggunaan fungsi agregasi dengan pengelompokan berdasar pada kolom berarti
melakukan pengelompokan dengan aturan dasar record-record yang memiliki nilai sama
untuk kolom tersebut sebagai satu kelompok, dan bila nilai kolom pengelompokan
tidak sama maka berada kelompok yang berbeda. Selanjutnya agregasi akan dilakukan
untuk masing-masing kelompok data.
      ( a )  Agregasi berdasar satu kolom
             
SELECT max(thnakademik), nilai FROM P GROUP BY nilai

       akan membentuk kelompok seperti gambar di bawah ini:

       sehingga hasil dari query di atas adalah:

       ( b ) Agregasi berdasar dua kolom
               SELECT max(thnakademik), nim,kodemk FROM P GROUP BY 
       nim,kodemk

       akan membentuk kelompok seperti gambar di bawah ini:


        sehingga hasil dari query di atas adalah:

        ( c ) Agregasi berdasar tiga kolom.
               
SELECT max(thnakademik), nim,kodemk,nilai FROM P GROUP BY 
      nim,kodemk,nilai

        akan membentuk kelompok seperti gambar di bawah ini:

        sehingga hasil dari query di atas adalah:


CATATAN:
SEMUA KOLOM NON FUNGSI AGREGASI YANG DISEBUTKAN DI BELAKANG KLAUSA
SELECT HARUS DISEBUTKAN DI DALAM KLAUSA GROUP BY, BILA TIDAK MAKA
AKAN TERJADI KESALAHAN, BAIK TERDETEKSI SEBAGAI KESALAHAN SINTAKS
ATAUPUN KESALAHAN INFORMASI HASIL QUERY

Perhatikan gambar di bawah ini, bandingkan dengan data yang sebenarnya. Kolom nilai
akan tidak sesuai isinya (di dalam MySQL). Sedangkan untuk DBMS seperti Oracle,
pernyataan seperti itu akan dianggap secara sintaks tidak valid.




       

  SQL untuk membentuk tabel P

CREATE TABLE P (
    nim varchar(3) ,
    kodemk varchar(3) ,
    thnakademik varchar(10) ,
    nilai char(1)
)
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '1999/2000', 'C');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2000/2001', 'C');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2001/2002', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('60', 'A1', '2000/2001', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2004/2005', 'A');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A2', '2001/2002', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('60', 'A2', '2002/2003', 'D');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A2', '2003/2004', 'A');


SUMBER :
1. http://teropong21.blogspot.com/2012/03/agregasi-database.html
2. http://www.aripoknga.web.id/2012/10/perintah-ddl-dan-dml-pada-bahasa-sql.html
3. http://intanstemapal24.blogspot.com/2014/08/pengertian-erd-entity-relationship.html