LAPORAN
PROGRAM KALENDER
Laporan Ini Diajukan Untuk Memenuhi Salah Satu Nilai Mata Kuliah Project 1
Disusun Oleh :
KELOMPOK A3
KATA PENGANTAR
Puji syukur kami panjatkan ke hadirat Allah SWT karena berkat Rahmat-Nya, kami
dapat menyelesaikan Laporan Akhir Program Kalender ini tepat pada waktunya. Laporan ini
membahas tentang definisi, konsep, algoritma program Kalender, serta kesimpulan dan saran
dalam pembuatan program Kalender.
Kami mengucapkan terima kasih khususnya kepada Bapak Jonner H. selaku manager
project kelompok kami yang telah membimbing kami dalam membuat Program Kalender ini,
manajer-manajer kelompok yang lain serta pihak-pihak lain yang tidak dapat kami sebutkan
satu per satu.
Kami menyadari bahwa Program Kalender yang telah kami buat ini masih jauh dari
kata sempurna, oleh karena itu kami mengharapkan kritik dan saran dari pembaca untuk
memperbaiki isi laporan ini maupun untuk memperbaiki program yang telah kami buat.
Semoga laporan ini dapat bermanfaat bagi siapapun yang membacanya.
Kelompok A3
DAFTAR ISI
KATA PENGANTAR...............................................................................................................i
DAFTAR ISI.............................................................................................................................ii
DAFTAR GAMBAR...............................................................................................................iv
..................................................................................................................................................iv
DAFTAR TABEL.....................................................................................................................v
BAB I.........................................................................................................................................6
SPESIFIKASI PROGRAM.....................................................................................................6
1.2.1Fitur/Layanan Program......................................................................6
1.3.1Deskripsi Modul...............................................................................11
1.3.2Algoritma.........................................................................................11
BAB II.....................................................................................................................................16
PROSES PENGEMBANGAN..............................................................................................16
2.1Perancangan Program.................................................................................16
2.2Penyelesaian Masalah..................................................................................16
BAB III....................................................................................................................................20
ii
3.1Kesimpulan..................................................................................................20
3.2Saran...........................................................................................................20
DAFTAR PUSTAKA.............................................................................................................21
TAMPILAN PROGRAM......................................................................................................22
iii
DAFTAR GAMBAR
iv
DAFTAR TABEL
v
6
BAB I
SPESIFIKASI PROGRAM
Program Kalender ini dibuat untuk menghitung hari, tanggal, bulan dan tahun sesuai
dengan permintaan dari user. Saat pertama kali program ini dijalankan akan muncul
pertanyaan tanggal, bulan, dan tahun berapa saat ini. Kemudian akan muncul pertanyaan
berapa hari yang diinginkan. Maksudnya adalah berapa hari kedepan yang diinginkan
atau hari berapa hari sebelum hari ini yang diinginkan. Program ini akan menghitung
pertambahan atau pengurangan yang diminta oleh user. Dan kemudian akan di outputkan.
Tabel berikut berisi Kebutuhan Data dan Kamus Data dalam program
Kalender :
NAMA TIPE
NO KETERANGAN DIPAKAI DI …
VARIABEL VARIABEL
• Output tanggal
• Output bulan
kabisat
• Penghitungan
perubahan
tanggal,bulan,
dan tahun
• Output tahun
Deskripsi Modul yang akan digunakan dalam Program Kalender dapat dilihat
dari tabel berikut ini :
Modul
Deskripsi Modul yang
Nama Modul yang
Modul memanggil
dipanggil
1.3.2 Algoritma
MODUL “cek_tahun”
Function cek_tahun year : integer) : boolean
12
Begin
status ← F
if (year mod 400=0 or year mod 4=0 and year mod 100 ≠ 0)
then
status = T
endif
return(status)
EndFunction
MODUL “rubah_thn_bln_tgl”
Procedure rubah_thn_bln_tgl(y,m,amount,date : integer)
// DESKRIPSI : Modul untuk menghitung pertambahan tahun, bulan,
dan tanggal
// MODUL YANG MEMANGGIL : Main
// MODUL YANG DIPANGGIL : cek tahun
i,x,jml_day[12]: integer
Begin
jml_day[0] ← 31
if (cek_tahun(y)= T)
then
jml_day[1] ← 29
else
jml_day[1] ← 28
endif
jml_day[2] ← 31
jml_day[3] ← 30
jml_day[4] ← 31
jml_day[5] ← 30
jml_day[6] ← 31
jml_day[7] ← 31
jml_day[8] ← 30
jml_day[9] ← 31
jml_day[10] ← 30
jml_day[11] ← 31
if(amount>0)
then
13
i← 1
x← amount
while(i≤amount)
do
date← date+1
if(date>jml_day[m] and x>0)
then
m← m+1
if(m>11)
then
m← 0
y← y+1
if(cek_tahun(y)=T)
then
jml_day[1] ← 29
endif
endif
date← 1
endif
x--
i++
endwhile
else if(amount<0)
then
while(amount≠0)
do
date← date-1
if(date<1 and amount<0)
then
m← m-1
if(m<0)
then
m← 11
y← y-1
if(cek_tahun(y)=T)
then
jml_day[1]=29
endif
endif
date← jml_day[m]
then
amount++
endwhile
endif
endif
EndFunction
MODUL “hitung_hari”
14
Begin
hari[0] ← "Senin"
hari[1] ← "Selasa"
hari[2] ← "Rabu"
hari[3] ← "Kamis"
hari[4] ← "Jumat"
hari[5] ← "Sabtu"
hari[6] ← "Minggu"
total← 0
i← 1900
while(i<thn)
do
if(cek_tahun(i)=.T.)
then
total← total+366
else
total=total+365
endif
i++
endwhile
i← 0
while(i<bln)
do
if(i=2 or i=4 or i=6 or i=7 or i=9 or i=11)
then
total← total+31
else
if (i=0 or i=3 or i=5 or i=8 or i=10)
total← total+30;
else
if (i=1 and thn mod 400=0 or thn mod 4=0 and thn mod
100≠0)
total← total+29
else
total← total+28
endif
endif
endif
i++
endwhile
if(bln>0)
15
then
total← total+tgl
else
total← total+tgl-1
endif
total=total mod 7
i=0;
while(i<=6)
do
if(i=total)
then
return(hari[i])
endif
i++
endwhile
endif
16
BAB II
PROSES PENGEMBANGAN
Pada tanggal 15 November 2010, kami diberikan tugas Project 1 topik ke-3,
yaitu membuat program kalender. Awalnya kami berdiskusi mengenai program yang
bagaimana yang kami inginkan. Kemudian kami menentukan membuat program
kalender yang dibuat untuk mempermudah penghitungan hari, tanggal, bulan, dan
tahun. Dengan input hari,tanggal,bulan dan tahun dalam angka. Kami juga
mendiskusikan input pertambahan atau pengurangannya dalam satuan hari karena hari
merupakan satuan terkecil dari kalender. program ini diharuskan tidak hanya dapat
menghitung untuk 1 tahun saja, namun harus mampu menghitung beberapa tahun
kedepan atau beberapa tahun kebelakang
Setelah itu, kami membagi pengerjaan program dalam beberapa modul, yaitu
modul untuk menentukan perubahan hari, modul untuk menentukan perubahan
tanggal, modul untuk menentukan perubahan bulan, dan modul untuk menentukan
perubahan tahun. Kami berpendapat bahwa pembagian pengerjaan dengan
menggunakan modul akan mempermudah pekerjaan kami karena kami hanya tinggal
memanggil modul-modul tersebut dari main program. Namun, kenyataannya kami
justru mendapat masalah. Saat mengerjakan setiap modul-modul tersebut, kami
kesulitan menentukan algoritmanya, karena jika kami mengerjakan satu modul, modul
tersebut tidak bisa saling berhubungan dengan modul yang lain.
Setelah itu, kami membagi pengerjaan program dalam beberapa modul, yaitu
modul untuk menentukan perubahan hari, modul untuk menentukan perubahan
tanggal, modul untuk menentukan perubahan bulan, dan modul untuk menentukan
perubahan tahun. Kami berpendapat bahwa pembagian pengerjaan dengan
menggunakan modul akan mempermudah pekerjaan kami karena kami hanya tinggal
memanggil modul-modul tersebut dari main program. Namun, kenyataannya kami
justru mendapat masalah. Saat mengerjakan setiap modul-modul tersebut, kami
kesulitan menentukan algoritmanya, karena jika kami mengerjakan satu modul, modul
tersebut tidak bisa saling berhubungan dengan modul yang lain. Misalnya modul
untuk menentukan perubahan bulan, kami membutuhkan modul perubahan tanggal
untuk menentukan perubahan bulan. Sedangkan jika modul perubahan bulan ini
memanggil modul perubahan tanggal, prosesnya menjadi tidak saling berhubungan.
Begitu pun saat pengerjaan modul tahun dan hari. Jika kami menggabungkan dengan
modul lainnya, maka modul-modul tersebut akan menjalankan sesuai proses yang ada
pada masing-masing modul. Dengan kata lain, walaupun modul-modul tersebut dapat
dijalankan, tapi perubahan yang dihasilkan dari modul-modul tersebut tidak
mempengaruhi perubahan modul lain seperti yang kami harapkan (yaitu ketika hari
berubah, maka tanggal akan berubah, jika tanggal melebihi jumlah hari sesuai bulan
yang diinputkan user, maka bulan akan berubah, dan jika bulan melebihi bulan
desember, maka tahun akan bertambah)
Selanjutnya, kami masih mencoba melanjutkan pengerjaan modul-modul
tersebut. Kami mencoba menggabungkan modul tanggal dan bulan, sedangkan modul
tahun tetap dikerjakan pada satu modul, sementara modul hari tidak kami kerjakan
dahulu.
19
Dalam proses pembuatan program ini kami mengalami beberapa kendala dan
juga terdapat beberapa kesalahan. Kami melakukan beberapa kali evaluasi. Beberapa
masalah yang kami hadapi diantaranya adalah perhitungan tanggal dan bulan hanya
berlaku untuk satu tahun dan terjadi unterminate loop saat menjalankan program,
kemudian akhirnya kami menyadari bahwa perhitungan tanggal, bulan, dan tahun
saling berkaitan, dan tidak bisa dipisahkan, maka kami mengubah seluruh program
yang terbagi 3 modul yaitu perhitungan tanggal,bulan,dan tahun(dalam satu
modul),perhitungan hari, dan juga modul pengecekan tahun kabisat. Hasil beberapa
kali tes dari program ini berhasil sesuai dengan yang diinginkan. List program ini
terlampir pada lampiran source code.
20
BAB III
KESIMPULAN DAN SARAN
3.1 Kesimpulan
Target kelompok untuk menyelesaikan semua tugas pokok project 1 topik 3 sudah
sesuai dengan yang diharapkan. Tugas pokok project 1 topik 3 ini adalah membuat
program kalender dimana program ini dapat menghitung pertambahan dan pengurangan
hari yang diinputkan oleh user.
Dalam pembuatan program kalender ini perhitungan tanggal bulan dan tahun tidak
bisa dipisahkan, artinya harus ada dalam satu modul karena ketiganya saling berhubungan
satu sama lain. Selain itu diperlukan adanya perhitungan untuk menentukan bahwa tahun
tersebut merupakan tahun kabisat atau bukan karena berpengaruh terhadap jumlah hari
pada bulan februari.
3.2 Saran
• Program ini hanya bisa melakukan pertambahan hari. Alangkah baiknya jika
pertambahannya bisa menggunakan minggu, bulan, atupun tahun.
DAFTAR PUSTAKA
TAMPILAN PROGRAM
SOURCE CODE
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<string>
/*calendar*/
using namespace std;
jml_day[0]=31;
if (cek_tahun(*y)==true)
{
jml_day[1]=29;
}
else
{
jml_day[1]=28;
}
jml_day[2]=31;
jml_day[3]=30;
jml_day[4]=31;
jml_day[5]=30;
jml_day[6]=31;
jml_day[7]=31;
jml_day[8]=30;
jml_day[9]=31;
jml_day[10]=30;
jml_day[11]=31;
if(amount>0)
{
i=1;
x=amount;
while(i<=amount)
{
*date=*date+1;
if(*date>jml_day[*m]&&x>0)
{
*m=*m+1;
if(*m>11)//array bulan ke-11 adalah Desember
{
*m=0;//array bulan ke-0 adalah Januari
*y=*y+1;
if(cek_tahun(*y)==true)
{
jml_day[1]=29;
}
}
*date=1;
}
x--;
i++;
}
}
else if(amount<0)
{
while(amount!=0)
{
*date=*date-1;
if(*date<1&&amount<0)
{
*m=*m-1;
if(*m<0)//array bulan ke-11 adalah Desember
{
*m=11;//array bulan ke-0 adalah Januari
*y=*y-1;
if(cek_tahun(*y)==true)
{
jml_day[1]=29;
}
}
*date=jml_day[*m];
}
amount++;
}
}
}
total=0;
i=1900;
while(i<thn)
{
if(cek_tahun(i)==true)
{
total=total+366;
}
else
{
total=total+365;
}
i++;
}
i=0;
while(i<bln)
{
if(i==2 || i==4 || i==6 || i==7 || i==9 || i==11)
{
total=total+31;
}
else if (i==0 || i==3 || i==5 || i==8 || i==10)
{
total=total+30;
}
else if (i==1 && thn%400==0||thn%4==0&&thn%100!=0)
{
total=total+29;
}
else
{
total=total+28;
}
i++;
}
if(bln>0)
{
total=total+tgl;
}
else
{
total=total+tgl-1;
}
total=total%7;
i=0;
while(i<=6)
{
if(i==total)
{
return(hari[i]);
}
i++;
}
int main()
{
cout<<" PROGRAM KALENDER\n";
cout<<"=================================================================
==============\n";
cout<<" || KELOMPOK A-3 || TUGAS PROJECT 1 TOPIK 3
||\n";
cout<<"\n";
cout<<"# Program ini bertujuan untuk mengetahui hari, tanggal, bulan dan
tahun setelah dilakukan penambahan hari";
cout<<"pada data yang telah diinputkan sebelumnya oleh user #\n";
cout<<" press any key to begin\n";
getch();
system("cls");
string bln[12];
int i,d,tgl,month,year;
long int add;
string j;
bln[0]="Januari";
bln[1]="Februari";
bln[2]="Maret";
bln[3]="April";
bln[4]="Mei";
bln[5]="Juni";
bln[6]="Juli";
bln[7]="Agustus";
bln[8]="September";
bln[9]="Oktober";
bln[10]="November";
bln[11]="Desember";
d=month-1;
rubah_thn_bln_tgl(&year,&d,add,&tgl);