Minggu, 30 Oktober 2016

Sistem Informasi Keuangan Rumah Sakit

Actor beserta Tugas 
Dalam sistem ini terdapat 2 actor, yaitu : 

1. Admin
Tugasnya :
- Mengelola transaksi
   >> Menambah transaksi
   >> Mengubah transaksi
- Mencetak laporan keuangan
   >> Mencetak laporan keuangan harian
   >> Mencetak laporan keuangan bulanan
   >> Mencetak laporan keuangan tahunan
- Melihat laporan keuangan
   >> Melihat laporan keuangan harian
   >> Melihat laporan keuangan bulanan
   >> Melihat laporan keuangan tahunan


2. Cashier

Tugasnya :
- Menambahkan transaksi ada kwitansi


Use Case Sistem Informasi Keuangan Rumah Sakit
Class Diagram Sistem Informasi Keuangan Rumah Sakit




CRC Sistem Informasi Keuangan Rumah Sakit












Use Case dan Realisasi Class

Activity Diagram  
1. Menambahkan data Transaksi
2. Mengubah data Transaksi
3. Melihat Laporan Keuangan Harian
4. Melihat Laporan Keuangan Bulanan
5. Melihat Laporan Keuangan Tahunan

6. Mencetak Laporan Keuangan Harian

7. Mencetak Laporan Keuangan Bulanan
8. Mencetak Laporan Keuangan Tahunan
9. Menambahkan Transaksi ada kwitansi
Sequence Diagram  

1. Menambahkan data Transaksi

2. Mengubah data Transaksi


3. Melihat Laporan Keuangan Harian


4. Melihat Laporan Keuangan Bulanan


5. Melihat Laporan Keuangan Tahunan


6. Mencetak Laporan Keuangan Harian

7. Mencetak Laporan Keuangan Bulanan


8. Mencetak Laporan Keuangan Tahunan


9. Menambahkan Transaksi ada kwitansi


Documentation





Source Code 

Source Code didapat dari : https://github.com/hafiznuzal/sirumkit

Minggu, 16 Oktober 2016

Sistem Fasilitas Olahraga

Actor beserta Tugas dan Kinerja ke aplikasi 
Dalam sistem ini terdapat 3 actor, yaitu : 
1. Penyewa
Tugasnya :
- Melakukan pemesanan fasilitas olahraga
Akses ke aplikasi :
- Akses pengisian form pemesanan
- Pembatalan pemesanan

2. Petugas
Tugasnya :
- Memvalidasi peminjaman
- Melayani peminjaman 
Akses ke aplikasi :
- Akses data pemesanan dan peminjaman fasilitas
- Akses data kondisi fasilitas olahraga
- Mengisi data kondisi fasilitas olahraga

3. Pemimpin
Tugasnya :
- Mengelola data petugas
- Mengelola data keuangan
- Mengelola feedback pelanggan
Akses ke aplikasi :
- Akses data petugas
- Akses data transaksi (baik pengeluaran ataupun pemasukan)
- Melihat data feedback dari peminjam
- Menambah/mengubah/menghapus data petugas
Sequence Diagram dan Diagram Kolaborasi Objek
1. Peminjaman Fasilitas Olahraga 
Penyewa akan melakukan peminjaman fasilitas olahraga, dimana penyewa akan melakukan hal sebagai berikut :
Pertama-tama penyewa akan melihat data fasilitas olahraga yang tersedia dan sistem akan menampilkan data fasilitas olahraga. Selanjutnya penyewa memilih fasilitas olahraga dan sistem akan menampilkan jadwal fasor yang dipilih. Selanjutnya penyewa memilih jadwal fasor yang tersedia dan sistem akan mencatat dan menampilkan kode booking serta detail pemesanan. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:

2. Pembatalan Pemesanan Fasilitas Olahraga
Penyewa akan melakukan pembatalan peminjaman fasor (data pemesanan di database akan hilang), dimana penyewa akan melakukan hal sebagai berikut :
Pertama-tama penyewa akan memilih menu pembatalan pemesanan dan sistem akan menampilkan form kode booking. Selanjutnya penyewa akan memasukkan kode pemesanan dan sistem akan menampilkan data pemesanan. Apabila sistem tidak menemukan kode yang dimasukkan maka sistem menampilkan notifikasi kode tidak ditemukan. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:

3. Memvalidasi Pemesanan Fasilitas Olahraga
Petugas akan melakukan validasi pemesanan yang tercatat oleh sistem, dimana petugas akan melakukan hal sebagai berikut :

Pertama-tama petugas akan mencari menu pemesanan. Setelah itu sistem akan menampilkam pemesanaan yang tercatat. Selanjutnya petugas akan memilih pemesanan yang akan divalidasi dan sistem menampilkan detail pemesanan. Selanjutnya petugas memilih validasi pemesanan dan sistem akan mengupdate detail pemesanan.
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:
4. Mencatat peminjaman peralatan 
Petugas akan melakukan melayani dan mencatat peminjaman alat olahraga yang tersedia kedalam database, dimana petugas akan melakukan hal sebagai berikut:

Pertama-tama petugas akan memilih menu peminjaman barang dan sistem akan menampilkan form peminjaman. Selanjutnya petugas mengisi form peminjaman dan sistem akan memasukkan data form ke dalam database. Selanjutnya petugas memberikan alat olahraga sesuai yang dipinjam. Namun apabila alat olahraga yang dipinjem tidak ada maka sistem akan menampilkan notifikasi alat tidak tersedia. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:
5. Mencetak Laporan Pemesanan
Petugas akan melakukan pencetakan laporan pemesanan fasilitas olahraga, dimana penyewa akan melakukan hal sebagai berikut :
Pertama-tama petugas akan mencari menu pemesanan. Setelah itu petugas akan submit kode booking pemesanan fasornya. Apabila kode booking yang disubmit tidak ada (tidak terdaftar) maka akan ada notifikasinya. Sebaliknya, apabila ada (kode bookingnya terdaftar) maka petugas akan mendapatkan detail pemesanannya. Lalu petugas mencetak laporan pemesanan tersebut. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:
6. Penambahan petugas
Pemimpin akan melakukan penambahan petugas, dimana pemimpin akan melakukan hal sebagai berikut :
Pertama-tama pemimpin menambah petugas dan mendapat form data petugas. Lalu pemimpin akan submit form data dan mengisi form tersebut. Setelah itu pemimpin berhasil menambah petugas baru. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:


7. Penambahan data lapangan
Petugas akan melakukan penambahan lapangan, dimana petugas akan melakukan hal sebagai berikut :
Pertama-tama pemimpin menambah lapangan dan mendapat form data lapangan. Lalu petugas akan submit form data dan mengisi form tersebut. Setelah itu petugas berhasil menambahkannya. 
Berikut Sequence Diagramnya :
Berikut Diagram Kolaborasi Objek:



UseCase Sistem Fasilitas Olahraga 


Class Diagram Sistem Fasilitas Olahraga 

Minggu, 02 Oktober 2016

Tugas 2 PPL C

1. UseCase Diagram


Use case diagram berguna untuk menggambarkan secara singkat mengenai siapa dan apa yang bisa dilakukan oleh suatu sistem. Diagram ini memperlihatkan hubungan antara use case, aktor dan sistem.

Pada kesempatan kali ini saya akan menjelaskan tentang online movie ticket booking. Siapasih yang belum pernah nonton di bioskop? Pasti online movie  ticket booking sudah tidak asing lagi terdengar di telinga kita.

Use case Diagram dari Online Movie Ticket booking system




















2. Class Diagram

class diagram atau diagram kelas adalah inti dari proses pemodelan objek yang dapat dimanfaatkan oleh forward engineering maupun reverse engineering. class diagram digunakan untuk menggambar class/blueprint object dari sebuah sistem. di dalam kelas diagram ini akan ada gambaran relasi seperti asosiasi, agregasi, komposisi, dan inheritance.


berikut ini adalah contoh dari class diagram sebuah sistem informasi yaitu online movie ticket booking system




3. Class

1. Visitor = user yang belum terdafrtar atau registrasi, belum punya akun
2. Admin = user yang dapat menambah, update, dan menghapus daftar movie
3. Registered User = user yang sudah terdaftar, dapat melakukan login, logout,ViewMovies
4. BookTicket
5. MakePayment
6. Movie

4. CRC

Class Responsibility Collaborator adalah  kumpulan dari kartu indeks standar yang telah dibagi menjadi tiga bagian yakni Class, Responsibilities dan Collaborator.

berikut ini adalah CRC dari online movie ticket booking system :


5. Class Realization




referensi : 
http://windasf.blogspot.co.id/2014/12/diagram-kelas-class-diagram.html
http://ngampusmulu.blogspot.co.id/2015/01/class-responsibility-collaborator-crc.html#.V_DsHvl97IU



Sabtu, 24 September 2016

Online Movie Ticket booking system

Use case diagram berguna untuk menggambarkan secara singkat mengenai siapa dan apa yang bisa dilakukan oleh suatu sistem. Diagram ini memperlihatkan hubungan antara use case, aktor dan sistem.

Pada kesempatan kali ini saya akan menjelaskan tentang online movie ticket booking. Siapasih yang belum pernah nonton di bioskop? Pasti online movie  ticket booking sudah tidak asing lagi terdengar di telinga kita.

Use case Diagram dari Online Movie Ticket booking system


Aktor dalam sistem ini merupakan orang, proses atau sistem lain yang berinteraksi dengan sistem informasi yang akan dibuat. Jadi, aktor dalam hal ini belum tentu orang seperti yang biasanya kita ketahui. Di dalam sistem ini ada tiga aktor yaitu registered user, visitor, dan admin.


1. Registered user












-     Registered user yang telah melakukan  log in akan memilih film yang ingin ditonton, waktu dan tempat, tempat duduk, dan juga tipe tiket yaitu anak-anak atau dewasa.
-          Setelah itu user akan memilih cara pembayaran, dan akan konfirmasi transaksi.
-          Apabila uer ingin melakukan pembatalan tiket, user akan memilih cancel ticket dan mendapatkan refund.


     2. Visitor     

     yaitu pengunjung dapat melakukan registrasi  atau mengecek data film yang ada.

3   3.       Admin


Admin harus log in untuk menambahkan film, update film, dan menghapus catatan film.


Referensi : http://umldiagramtutorial.blogspot.co.id/2012/10/online-movie-ticket-booking-system-use.html

Rabu, 02 Desember 2015

masalah fuse

Jihad dan Sekar adalah teman baik dan sangat dekat. Karena kedekatan itulah, timbul rasa

yang berbeda di hati Jihad untuk Sekar. Suatu hari, Jihad mengutarakan isi hatinya kepada

Sekar. Namun, Sekar ingin melihat dulu kesungguhan Jihad, Ia memberikan syarat bagi

Jihad untuk mendapatkan hatinya. Syarat tersebut adalah Sekar ingin Jihad

membuatkannya sebuah implementasi dari fuse yang baru saja didapatkannya dari asistensi

praktikum sistem operasi. Sebelumnya, ketika asistensi hanya diajarkan implementasi dasar

yaitu mengaitkan direktori lain (mount) dengan fuse. Padahal ketika dikaitkan dengan

direktori (mount) Sekar ingin agar implementasi fuse tersebut memiliki kriteria sebagai

berikut:
File dalam direktori tersebut hanya bisa di­copy atau dipindahkan sebanyak satu kali,

sehingga file yang telah di­copy atau dipindahkan tersebut tidak dapat di­copy atau

dipindahkan lagi (file terkunci). Contoh: terdapat file A. jika file A dicopy atau

dipindahkan maka akan terbentuk file salinan atau hasil pindahan file A, sedangkan

file A sendiri tidak bisa diapa­apakan lagi (terkunci). Namun file salinan A tetap bisa

dicopy atau dipindahkan, begitu seterusnya. (Kelas B​)

//cara mengerjakan soal adalah dengan open,read,write

static const char *dirpath = "/home/anindita/bisadong"; //ini yang mau di mount
char alamat[1000];//nyimpen alamat file yg dicopy

static int xmp_getattr(const char *path, struct stat *stbuf) //buat ambil atribut,kayak location dll
{
    int res;
    char fpath[1000]; //utk nyimpan gabungan dirpath dan fpath
    sprintf(fpath,"%s%s",dirpath,path);//buat gabungin, lalu disimpan di fpath
    res = lstat(fpath, stbuf);//fungsinya
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_readlink(const char *path, char *buf, size_t size) //untuk membaca link
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);

    res = readlink(fpath, buf, size - 1);
    if(res == -1)
        return -errno;

    buf[res] = '\0';
    return 0;
}


static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler) //untuk ambil direktori
{
    DIR *dp;
    struct dirent *de;
    int res = 0;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path); //gabungin path dan dirpath ke fpath
   
    if(strcmp(path,"/") == 0) //ambil file lokasinya yg dipisah pakai tanda "/"
    {
        path=dirpath;
        sprintf(fpath,"%s",path); //masukin path ke fpath
    }
    else sprintf(fpath, "%s%s",dirpath,path);

   
    dp = opendir(fpath);//buka direktorinya
    if(dp==NULL)
    {
        return -errno;
    }
    while((de = readdir(dp))!=NULL)//membaca isi dari direktori
    {
        res = filler(h, de->d_name, de->d_type);
        if(res!=0) break;
    }
    //system("notify-send hello");
    closedir(dp);
    return res;
}

static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)//mknod adalah fungsi untuk membuat node file (yg belum ada isinya)
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path); //gabungin path dan dirpath ke fpath
    res = mknod(fpath, mode, rdev);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_mkdir(const char *path, mode_t mode) //untuk membuat direktori baru
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);//gabungin path dan dirpath ke fpath
    res = mkdir(path, mode);//untuk membuat direktori baru
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_unlink(const char *path)//remove file
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);//gabungin path dan dirpath ke fpath
    res = unlink(fpath);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_rmdir(const char *path)//remove direktori
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);//gabungin path dan dirpath ke fpath
    res = rmdir(fpath);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_symlink(const char *from, const char *to)//creates a symbolic link.
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",from,to);
    res = symlink(from, to);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_rename(const char *from, const char *to)//untuk mengubah nama file
{
    int res;
    char fpath[1000];
    //sprintf(fpath,"%s%s",from,to);//
    res = rename(from, to);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_link(const char *from, const char *to)//membuat hard link ke file
{
    int res;
    char fpath[1000];
    //sprintf(fpath,"%s%s",from,to);
    res = link(from, to);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_chmod(const char *path, mode_t mode)//memberi/mengubah akses/permission menjadi seperti yang diinginkan
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    res = chmod(fpath, mode);
    if(res == -1)
        return -errno;
   
    return 0;
}

static int xmp_chown(const char *path, uid_t uid, gid_t gid)//mengganti owner dari file
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    res = lchown(fpath, uid, gid);
    if(res == -1)
        return -errno;

    return 0;
}

static int xmp_utime(const char *path, struct utimbuf *buf)//untuk memberikan akses, merubah berapa kali dia bisa diakses dan di modif
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    res = utime(fpath, buf);
    if(res == -1)
        return -errno;

    return 0;
}


static int xmp_open(const char *path, int flags)//untuk membuka file
{
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);////gabungin path dan dirpath ke fpath
    res = open(fpath, flags);
    if(res == -1)
        return -errno;

    close(res);
    return 0;
}

static int xmp_read(const char *path, char *buf, size_t size, off_t offset)//untuk membaca file
{
    int fd;
    int res;
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);//gabungin path dan dirpath ke fpath
    strcpy(alamat,fpath);   //menyimpan alamat file yg dicopy
    fd = open(fpath, O_RDONLY);
    if(fd == -1)
        return -errno;

    res = pread(fd, buf, size, offset);
    if(res == -1)
        res = -errno;
   
    close(fd);
    return res;
}

static int xmp_write(const char *path, const char *buf, size_t size,//untuk mengedit isi file
                     off_t offset)
{
    int fd;
    int res;
    char fpath[1000];
   
    sprintf(fpath,"%s%s",dirpath,path);////gabungin path dan dirpath ke fpath
    fd = open(path, O_WRONLY);
    if(fd == -1)
        return -errno;
    chmod (alamat,0000);//0000 agar sudah tidak bisa diakses lagi
    res = pwrite(fd, buf, size, offset);
    if(res == -1)
        res = -errno;
   
    close(fd);
    return res;
}
/*
static int xmp_statfs(struct fuse_statfs *fst)
{
    struct statfs st;
    int rv = statfs("/",&st);
    if(!rv) {
        fst->block_size  = st.f_bsize;
        fst->blocks      = st.f_blocks;
        fst->blocks_free = st.f_bavail;
        fst->files       = st.f_files;
        fst->files_free  = st.f_ffree;
        fst->namelen     = st.f_namelen;
    }
    return rv;
}
*/
static int xmp_release(const char *path, int flags)
{
    /* Just a stub.  This method is optional and can safely be left
       unimplemented */
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    (void) path;
    (void) flags;
    return 0;
}

static int xmp_fsync(const char *path, int isdatasync)
{
    /* Just a stub.  This method is optional and can safely be left
       unimplemented */
    char fpath[1000];
    sprintf(fpath,"%s%s",dirpath,path);
    (void) path;
    (void) isdatasync;
    return 0;
}

static struct fuse_operations xmp_oper = {
    //char fpath[1000];
    //sprintf(fpath,"%s%s",dirpath,path);
    .getattr    = xmp_getattr,
    //.readlink    = xmp_readlink,
    .getdir    = xmp_getdir,
    .mknod    = xmp_mknod,
    .mkdir    = xmp_mkdir,
    //.symlink    = xmp_symlink,
    //.unlink    = xmp_unlink,
    //.rmdir    = xmp_rmdir,
    //.rename    = xmp_rename,
    //.link    = xmp_link,
    .chmod    = xmp_chmod,
    //.chown    = xmp_chown,
    //.utime    = xmp_utime,
    .open    = xmp_open,
    .read    = xmp_read,
    .write    = xmp_write,
    //.statfs    = xmp_statfs,
    //.release    = xmp_release,
    //.fsync    = xmp_fsync
   
};

int main(int argc, char *argv[])
{
    //char fpath[1000];
    //sprintf(fpath,"%s%s",dirpath,path);
    fuse_main(argc, argv, &xmp_oper);
    return 0;
}