BAB I Pendahuluan
1.1 Latar Belakang Masalah
Humas adalah pusat informasi sebuah institusi. Setiap informasi baik itu
informasi keluar dan informasi masuk akan melalui humas. Begitu pula dengan
Universitas Kristen Maranatha dalam memperkenalkan lingkungan serta sistem
pendidikan menggunakan humas sebagai pusat informasi.
Tidak dapat dipungkiri bahwa sekarang yang paling berperan penting
dalam kesuksesan adalah informasi, informasi yang cepat dan akurat menjadi
tonggak kesuksesan. Begitu pula dengan Humas Universitas Kristen Maranatha
yang kini menjadi salah satu universitas unggulan di Bandung, membutuhkan
sebuah sarana untuk memperkenalkan lebih jauh visi dan misi yang diembannya
dalam menyelenggarakan suatu sistem pendidikan.
Media informasi yang ada saat ini adalah brosur, dan buku. Media tersebut
memiliki keterbatasan dalam menampung informasi. Informasi yang cepat dan
akurat tentang pendidikan di Universitas Kristen Maranatha serta pengenalan
kampus lebih dini kepada calon mahasiswa Universitas Kristen Maranatha dapat
menjadi salah satu promosi yang mampu menembus pasar pendidikan dan
menjadi daya tarik utama calon mahasiswa untuk meninjau Universitas Kristen
Maranatha sebagai pilihan utamanya.
1.2 Perumusan Masalah
Dari penjelasan di atas ditemukan beberapa pokok permasalahan yaitu :
Merancang sebuah aplikasi Kios Informasi Humas Universitas Kristen
Maranatha berbasis multimedia yang memiliki kriteria :
•
Penampilan informasi dalam bentuk gambar
•
Penampilan informasi dalam bentuk video
•
Penampilan informasi dalam bentuk suara
•
Penampilan informasi dalam bentuk teks
1.3 Tujuan Penelitian
Tujuan penelitian ini adalah membuat sebuah aplikasi kios informasi yang
dapat menyampaikan informasi dengan menggunakan berbagai media seperti teks,
gambar, suara maupun video.
1.4 Pembatasan Masalah
Dari keseluruhan fungsional sistem yang akan dibangun, terdapat beberapa
pembatasan masalah dari pengembangan sistem tersebut. Hal ini terdiri dari:
•
Aplikasi ini dibatasi untuk informasi Humas Universitas Kristen
Maranatha.
•
Penulisan makalah Tugas Akhir dan pembuatan sistem kios informasi
lebih menitikberatkan pada sisi interaktifitas dan GUI dari sistem kios
informasi yang dibuat.
•
Database digunakan hanya pada informasi yang perubahannya dianggap
cepat ( seperti perubahan informasi fakultas, informasi unit kegiatan dan
daftar pengunjung yang masuk dalam kios )
•
Administrator adalah pengguna kategori mahir (expert).
•
Pengguna Kios Informasi adalah pengguna kategori awam (novice).
Tools serta bahasa pemrograman yang akan digunakan dalam pembangunan
sistem antara lain:
•
Program pengolah gambar (image editor) yang akan digunakan Adobe
Photoshop CS.
•
Program basis data yang digunakan adalah Microsoft Access 2003
•
Program aplikasi yang dipakai adalah Macromedia Flash MX 2004 - v7.2
•
Program koneksi dinamis antara aplikasi dan database adalah PHP.
1.5 Sistematika Penulisan
Penulisan laporan Tugas Akhir dilakukan dalam enam bab dengan
penyusunan sebagai berikut :
•
Bab I - Pendahuluan
Latar belakang, perumusan masalah, tujuan, pembatasan masalah dan
sistematika penulisan laporan Tugas Akhir akan dibahas di dalam bab ini.
•
Bab II - Landasan Teori,
Pembahasan materi-materi yang digunakan dalam mendukung serta
membantu penyusun laporan dalam membuat laporan Tugas Akhir.
•
Bab III - Analisa dan Perancangan Sistem,
Analisa kebutuhan serta spesifikasi sistem yang dibutuhkan oleh aplikasi
yang akan dibangun. Selain itu juga dipaparkan proses pembuatan desain
sistem hingga mencapai format dan perencanaan yang diinginkan.
•
Bab IV - Hasil Tercapai,
Tampilan serta implementasi akhir dari sistem. Fungsionalitas utama dari
sistem juga akan dipaparkan sesuai dengan tujuan pembuatan.
•
Bab V - Evaluasi Sistem,
Evaluasi tujuan awal dari penelitian dengan hasil akhir yang dicapai.
•
Bab VI - Penutup,
1.6 Jadwal Perencanaan Aktifitas
Tabel 1.1 Jadwal
Pembuatan Proposal
1. Analisa Topik
14 - 26 Februari 2005
2. Pembuatan Draft Proposal
15 Maret - 28 Maret 2005
3. Evaluasi Materi dan Topik
7 Maret 2005
4. Perbaikan dan Finalisasi Proposal.
8 - 19 Maret 2005
5. Sidang Proposal Tugas Akhir
5 april 2005
Analisa Kebutuhan Sistem
1. Analisa Sistem Informasi
20 Maret - … 2005
2. Analisa E R Diagram
8 April - 15 April 2005
3. Evaluasi Kebutuhan Sistem
8 April - 20 April 2005
Desain Sistem
1. Desain Layout dan Interface ( StoryBoard )
28 Maret - 2 April 2005
2. Desain Database
28 Maret - 2 April 2005
3. Desain Layout dan Interface ( implementasi )
4 - 13 April 2005
1.
Finalisasi Interface
14 - 16 April 2005
Perancangan Sistem
1. Pembuatan Database
21 - 25 Agustus 2005
2. Pembuatan sistem (coding)
27 Agustus - 10 Sept 2005
3. Koneksi dengan database
15 - 20 September 2005
Uji coba sistem
1. Ujicoba database
25 - 27 Oktober 2005
2. Ujicoba sistem
1 - 5 November 2005
3. Evaluasi system
6 - 10 November 2005
4. Finalisasi system
10 November - 7 Des2005
Laporan Tugas Akhir
1. Persiapan pembuatan laporan
12 November 2005
2. Pembuatan laporan tugas akhir
13 - 30 November2005
3. Finalisasi pembuatan laporan
30 November - 2 Des2005
Sidang Tugas Akhir
1. Masa pengajuan sidang
1 - 12 Desember 2005
2. Sidang Tugas Akhir
18 - 20 Desember 2005
PERANCANGAN KIOS INFORMASI HUMAS
UNIVERSITAS KRISTEN MARANATHA
BERBASIS MULTIMEDIA
Diajukan Untuk Memenuhi Persyaratan Akademik Dalam
Menyelesaikan Pendidikan Pada Program Studi D3 Teknologi
Informasi Universitas Kristen Maranatha Bandung
Disusun oleh :
Corollus – 0271171
Program Studi D3 Teknologi Informasi
Fakultas Teknologi Informasi
Universitas Kristen Maranatha
Bandung
LAMPIRAN
KODE PROGRAM
1. Koneksi Dinamis Database
1.1 Load data
Nama File : LoadData.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$PageSize = 5;
$Nav = $_GET["NAV"];
if ( $Nav == "" ) { $Page = 1; } else {
$Page = $Nav; }
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
$sql = "SELECT id, nama, deskripsi, fasilitas, akreditasi,jurusan, regdate FROM fakultas ORDER BY nama ASC";
$res = $DB->Execute( $sql );
$count = $res->RecordCount();
$PageCount = ceil( $count / $PageSize );
echo "&size=" . $PageSize . "&count=" . $count;
if ( $count == 0 )
{
echo "&f_name=No Guest Entries Yet";
}
$i = 1;
while( !$res->EOF )
{
$str .= "&startK=" . $res->fields['id'];
$str .= "&startN=" . $res->fields['nama'];
$str .="&startE=". $res->fields['fasilitas'];
$str .="&startH=".$res->fields['akreditasi']
$str .= "&startJ=" . $res->fields['jurusan'];
$str .="&id" . $i . "=" . $res->fields['id'];
$str .="&nama".$i."=" . $res->fields['nama'];
$str .="&deskripsi".$i."=".$res->fields['deskripsi'];
$str .="&fasilitas".$i."=" . $res->fields['fasilitas'];
$str .="&akreditasi".$i."=" $res->fields['akreditasi'];
$str .="&jurusan" . $i . "=" . $res->fields['jurusan'];
$res->MoveNext();
$i++;
}
echo $str;
?>
1.2 Save data
Nama File : save.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
$sql = "INSERT INTO fakultas( akreditasi, nama, jurusan,
deskripsi, fasilitas, regdate ) ";
$sql .="VALUES('".$_GET['akreditasi']."','". $_GET['nama']
. "','" . $_GET['jurusan'] . "','" . $_GET['deskripsi'] .
"','" . $_GET['fasilitas'] . "', '" . date( "d/m/Y" ) . "'
)";
$res = $DB->Execute( $sql );
-if( $res === false ) {
echo "iFailed=1";
} else {
echo "iSuccess=1";
}
?>
1.3 Delete data
Nama File : delete.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
if( isset( $_GET['id'] ) )
{
$sql = "DELETE FROM fakultas WHERE id=" .
$_GET['id'];
$res = $DB->Execute( $sql );
if( $DB->Affected_Rows() === false ) {
echo "iFailed=1";
} else {
echo "iSuccess=1";
}
}
1.4 Edit data
Nama File : edit.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
if( isset( $_GET['id'] ) )
{
$sql = "UPDATE fakultas ";
$sql .= "SET akreditasi='" . $_GET['akreditasi'] .
"', nama='" . $_GET['nama'] . "', jurusan='" .
$_GET['jurusan'] . "', deskripsi='" . $_GET['deskripsi'] .
"', fasilitas='" . $_GET['fasilitas'] . "', regdate='" .
date( "d/m/Y" ) . "' ";
$sql .= "WHERE id=" . $_GET['id'];
$res = $DB->Execute( $sql );
if( $DB->Affected_Rows() === false ) {
echo "iFailed=1";
} else {
echo "iSuccess=1";
}
}
?>
-1.5 Load data by ID
Nama File : loadById.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
if( isset( $_GET['id'] ) )
{
$sql = "SELECT id, nama, deskripsi, fasilitas,
akreditasi,jurusan, regdate FROM fakultas WHERE id=" .
$_GET['id'];
$res = $DB->Execute( $sql );
if( $res->RecordCount() > 0 )
{
$str .="&akreditasi=".$res>fields['akreditasi'];
$str .= "&nama=" . $res->fields['nama'];
$str .= "&deskripsi=" . $res->fields['deskripsi'];
$str .= "&fasilitas=" . $res->fields['fasilitas'];
$str .= "&jurusan=" . $res->fields['jurusan'];
echo $str;
} else {
echo "Record not found";
}
}
1.6 Guest Log
Nama File
: GuestLog.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
$sql = "INSERT INTO tamu( nama, email, tanggal ) VALUES(
'".$_GET['nama']."', '".$_GET['email']."', '" . date( "d/m/Y
H:i:s" )."' )";
$res = $DB->Execute( $sql );
if( $DB->Affected_Rows() === false ) {
echo "iFailed=1";
} else {
echo "iSuccess=1";
}
?>
1.7 IdPage
File Name : IdPage.php
<?php
include_once( 'class/adodb/adodb.inc.php' );
$DB = &ADONewConnection( 'access' );
$DB->PConnect( "Fakultas" );
$DB->SetFetchMode( ADODB_FETCH_ASSOC );
if( isset( $_GET['username'] ) && isset( $_GET['password'] ) )
{
$sql = "SELECT page_id FROM user WHERE user_name='" .
$_GET['username'] . "' AND password='" . $_GET["password"] . "'";
$res = $DB->Execute( $sql );
-if( $res->RecordCount() > 0 ) {
$str = "idPage=" . $res->fields['page_id'];
echo $str;
} else {
echo "Record not found";
}
}
?>
2. Action Script Flash
2.1 FullScreen
fscommand("fullscreen", "true");
fscommand("showmenu", "false");
fscommand("allowscale", "false");
2.2 Login Administrator
on (release){
f="http://127.0.0.1/kios/idPage.php?username="+this._parent.
loginName. text+"&password="+ this._parent. loginPassword.text;
var getVars = new LoadVars();
getVars.load(f);
getVars.onLoad = function() {
_global.loadNo = this["idPage"];
//trace(_global.loadNo);
};
loadMovieNum ("halaman_admin.swf",0);
2.3 Load Data
stop();
if (parseInt(getVars["count"]) > (loadNo *
parseInt(getVars["size"]))){
max = loadNo * parseInt(getVars["size"])
}else{
max = parseInt(getVars["count"]);
}
min = ((loadNo -1) * getVars["size"]) + 1;
x = min
startK = getVars["startK"];
startN = getVars["startN"];
startA = getVars["startA"];
startE = getVars["startE"];
startH = getVars["startH"];
startJ = getVars["startJ"];
startD = getVars["startD"];
function myFirstHandler(eventObj:Object){
if(eventObj.type=="click"){
x = min;
startK = getVars["id" + min];
startN = getVars["nama" + min];
startJ = getVars["jurusan" + min];
startA = getVars["deskripsi" + min];
startE = getVars["fasilitas" + min];
startH = getVars["akreditasi" + min];
}
}
function myEndHandler(eventObj:Object){
if(eventObj.type=="click"){
x = max;
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myNextHandler(eventObj:Object){
if(eventObj.type=="click"){
if (x < max){
x++;
}
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myPrevHandler(eventObj:Object){
if(eventObj.type=="click"){
if (x > min){
x--;
}
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myInputHandler(eventObj:Object){
if(eventObj.type=="click"){
gotoAndStop(3);
}
}
if(eventObj.type=="click"){
if (loadNo <
(parseInt(getVars["count"])/parseInt(getVars["size"]))){
loadNo++;
}
prevFrame();
}
}
function myPrevBatchHandler(eventObj:Object){
if(eventObj.type=="click"){
if (loadNo>0){
loadNo--;
}
prevFrame();
}
}
function mySave(eventObj:Object){
if(eventObj.type=="click"){
file = "http://127.0.0.1/kios/edit.php";
var sendVars = new LoadVars();
sendVars.id = id_txt.text;
sendVars.akreditasi = akreditasi_txt.text;
sendVars.jurusan = jurusan_txt.text;
sendVars.nama = nama_txt.text;
sendVars.deskripsi = deskripsi_txt.text;
sendVars.fasilitas = fasilitas_txt.text;
sendVars.load(file + "?" + sendVars.toString());
sendVars.onLoad = function(){
gotoAndStop(1);
}
}
}
function myDelete(eventObj:Object){
if(eventObj.type=="click"){
file = "http://127.0.0.1/kios/delete.php";
var sendVars = new LoadVars();
-sendVars.id = id_txt.text;
sendVars.load(file + "?" + sendVars.toString());
sendVars.onLoad = function(){
gotoAndStop(1);
}
}
}
save_btn.addEventListener("click",mySave);
delete_btn.addEventListener("click",myDelete);
awal_btn.addEventListener("click",myFirstHandler);
seb_btn.addEventListener("click",myPrevHandler);
ses_btn.addEventListener("click",myNextHandler);
akhir_btn.addEventListener("click",myEndHandler);
inputbaru_btn.addEventListener("click",myInputHandler);
nbatch_btn.addEventListener("click",myNextBatchHandler;
pbatch_btn.addEventListener("click",myPrevBatchHandler;
2.4 Save Data, Edit Data, Delete Data
stop();
if(parseInt(getVars["count"])>(loadNo*
parseInt(getVars["size"]))){
max = loadNo * parseInt(getVars["size"])
}else{
max = parseInt(getVars["count"]);
}
min = ((loadNo -1) * getVars["size"]) + 1;
x = min
startK = getVars["startK"];
startN = getVars["startN"];
startA = getVars["startA"];
startE = getVars["startE"];
startH = getVars["startH"];
startD = getVars["startD"];
function myFirstHandler(eventObj:Object){
if(eventObj.type=="click"){
x = min;
startK = getVars["id" + min];
startN = getVars["nama" + min];
startJ = getVars["jurusan" + min];
startA = getVars["deskripsi" + min];
startE = getVars["fasilitas" + min];
startH = getVars["akreditasi" + min];
}
}
function myEndHandler(eventObj:Object){
if(eventObj.type=="click"){
x = max;
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myNextHandler(eventObj:Object){
if(eventObj.type=="click"){
if (x < max){
x++;
}
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myPrevHandler(eventObj:Object){
if(eventObj.type=="click"){
if (x > min){
x--;
}
startK = getVars["id" + x];
startN = getVars["nama" + x];
startJ = getVars["jurusan" + x];
startA = getVars["deskripsi" + x];
startE = getVars["fasilitas" + x];
startH = getVars["akreditasi" + x];
}
}
function myInputHandler(eventObj:Object){
if(eventObj.type=="click"){
gotoAndStop(3);
}
}
function myNextBatchHandler(eventObj:Object){
if(eventObj.type=="click"){
if (loadNo <
(parseInt(getVars["count"])/parseInt(getVars["size"]))){
loadNo++;
}
prevFrame();
}
}
function myPrevBatchHandler(eventObj:Object){
if(eventObj.type=="click"){
if (loadNo>0){
loadNo--;
}
prevFrame();
}
}
if(eventObj.type=="click"){
file = "http://127.0.0.1/kios/edit.php";
var sendVars = new LoadVars();
sendVars.id = id_txt.text;
sendVars.akreditasi = akreditasi_txt.text;
sendVars.jurusan = jurusan_txt.text;
sendVars.nama = nama_txt.text;
sendVars.deskripsi = deskripsi_txt.text;
sendVars.fasilitas = fasilitas_txt.text;
sendVars.load(file + "?" + sendVars.toString());
sendVars.onLoad = function(){
gotoAndStop(1);
}
}
}
function myDelete(eventObj:Object){
if(eventObj.type=="click"){
file = "http://127.0.0.1/kios/delete.php";
var sendVars = new LoadVars();
sendVars.id = id_txt.text;
sendVars.load(file + "?" + sendVars.toString());
sendVars.onLoad = function(){
gotoAndStop(1);
}
}
}
save_btn.addEventListener("click",mySave);
delete_btn.addEventListener("click",myDelete);
awal_btn.addEventListener("click",myFirstHandler);
seb_btn.addEventListener("click",myPrevHandler);
ses_btn.addEventListener("click",myNextHandler);
akhir_btn.addEventListener("click",myEndHandler);
inputbaru_btn.addEventListener("click",myInputHandler);
nbatch_btn.addEventListener("click",myNextBatchHandler;
pbatch_btn.addEventListener("click",myPrevBatchHandler;
-2.5 Menampilkan data sebelum di edit
stop();
loadNo = (loadNo) ? loadNo : 1;
f = "http://127.0.0.1/kios/load.php?NAV="+ loadNo;
var getVars = new LoadVars();
getVars.load(f);
getVars.onLoad = function(){
nextFrame();
}
2.6 Action Script Digital Clock & Tanggalan
class MCDigitalClock extends MovieClip
{
private var __tf:TextFormat;
function MCDigitalClock()
{
this.__tf = new TextFormat();
this.__tf.font = "tahoma";
this.__tf.size = 18;
this.__tf.color= 0xFFFFFF;
this.ClockDate( 0, 20 );
this.ClockTime( 0, 0);
}
function ClockDate(PosX:Number, PosY:Number ):Void
{
this.createEmptyMovieClip("mcDate",
this.getNextHighestDepth() );
this["mcDate"].createTextField( "txtDate",
this.getNextHighestDepth(), PosX, PosY, 22, 22 );
this["mcDate"]["txtDate"].embedFonts= true;
this["mcDate"]["txtDate"].type= "dynamic";
var months:Array = [ "Jan", "Feb", "Mar", "Apr",
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
var weekdays:Array = [ "Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday" ];
this["mcDate"].onEnterFrame = function() {
var time = new Date();
var day = weekdays[time.getDay()];
var month = months[time.getMonth()];
var date = time.getDate();
var year = time.getFullYear();
this["txtDate"].text= day + ", " + month + " / "
+ date + " / " + year;
this["txtDate"].setTextFormat( this._parent.__tf
);
};
}
function ClockTime(PosX:Number,PosY:Number ):Void
{
this.createEmptyMovieClip("mcTime",
this.getNextHighestDepth() );
this["mcTime"].createTextField( "txtTime",
this.getNextHighestDepth(), PosX, PosY, 50, 22 );
this["mcTime"]["txtTime"].embedFonts= true;
this["mcTime"]["txtTime"].type= "dynamic";
this["mcTime"]["txtTime"].autoSize = "left";
this["mcTime"].onEnterFrame = function() {
var time = new Date();
var seconds = ( time.getSeconds() < 10 ) ?
"0" + time.getSeconds() :
time.getSeconds();
-var minutes = ( time.getMinutes() < 10 ) ?
"0" + time.getMinutes() :
time.getMinutes();
var hours = ( time.getHours() < 10 ) ?
"0" + time.getHours() :
time.getHours();
this["txtTime"].text = hours + " : " + minutes +
" : " + seconds;
this["txtTime"].setTextFormat( this._parent.__tf
);
};
}
}
2.7 Memanggil Action Script Dalam Movie Digital Clock
attachMovie( "MCDigitalClock", "MCDigitalClock",
Referensi
•
Weinman, Lynda & Heavin, Bruce. <Coloring Web Graphics>
http://www.mcp.com/newriders
•
Patrick L. Lynch & Sarah Horton. 2004. Web Style Guide.
http://info.med.yale.edu/caim/manual/contents.html
•
John Lovett. Online Art Lesson & Instruction.
http://www.johnlovett.com
•
Various Source. 2004. Web Design Theory & Tutorials.
http://www.WebDesignHelper.co.uk
•
Siswoutomo, Wiwit. 2005. Membangun Aplikasi Database Berbasis Flash.
Penerbit PT Elex Media Komputindo.
•
Hartanto, Bernard & Wijaya, Ferdianto. 2004. The Magic of Flash MX 2004
Penerbit PT Elex Media Komputindo.
•
Catapult. Microsoft Press. 1999. Step by Step Microsoft Access 2000
Penerbit PT Elex Media Komputindo.
•
Stephen J. Misovich, Jerome Katrichis, David Demers, William B Sanders 2003.
An Introduction to Interactive Multimedia.
•
Buku Panduan Humas Universitas Kristen Maranatha 2005 – 2006