Deskripsi Tugas Besar I IF2182

advertisement
TUGAS IF2182 Algoritma dan Struktur Data
Simulasi Pengelolaan Email
Deskripsi persoalan
Dalam pengelolaan email, program akan mengelola suatu ”indeks” yang menyimpan informasi tentang
file email yang disimpan dalam direktori, dan isi filenya (sebatas tertentu). Dalam suatu lingkungan
tekstual, pengguna dapat mengetikkan perintah (command) untuk mengelola email yang disimpan di
dalam direktori tsb.
Buatlah sebuah program dalam bahasa C yang diberi nama MailSys yang melakukan simulasi
program untuk pengelolaan email, Program akan membaca masukan perintah yang diketikkan oleh
pengguna dan melaksanakan perintah tersebut. Pada lingkungan simulasi ini, semua email diletakkan
dalam satu direktori saja (direktori ini tidak mengandung sub direktori), dan satu email disimpan
sebagai satu file.
Pada saat aktif, program MailSys dikenali dari ”prompt” berupa karakter ”>”.
Perintah (Command)
Sintaks perintah secara umum adalah: <command> <list of arguments> #
Bagian command berisi salah satu dari {browse, list, delete, compose, search,
exit}, sedangkan list of arguments setiap command dapat bervariasi mulai dari list kosong sampai list
yang terdiri atas beberapa argumen.
Berikut ini adalah daftar perintah yang dapat dilakukan untuk pengelolaan email:
1. Mem-browse email:
>browse <nama-file-email> #
2. Menampilkan daftar email dan ukurannya:
>list <urutan> #
3. Menghapus email:
>delete <nama-file-email> #
4. Membuat email:
>compose #
5. Mencari email berdasarkan kunci tertentu:
>search <nama-kunci> <nilai-kunci> #
6. Keluar dari sistem:
>exit #
Mem-browse Email
Pada saat pengguna mengetikkan perintah browse, ditampilkan seluruh teks dari file email yang
dituliskan sebagai argumen.
Menampilkan Daftar Email dan Ukurannya
Tampilan yang diberikan setelah perintah list diketikkan adalah daftar email dengan format setiap
baris sebagai berikut :
<nama-email> <ukuran> <tanggal dengan format DD-MM-YYYY> <status>
<nama-email> <ukuran> <tanggal dengan format DD-MM-YYYY> <status>
.....
<nama-email> <ukuran> <tanggal dengan format DD-MM-YYYY> <status>
Banyaknya email = NNNN
Di akhir daftar dituliskan banyaknya email yang ada dalam direktori.
Perintah list boleh memiliki argumen, boleh tidak. Jika tidak ada argumen, maka defaultnya list akan
ditampilkan secara acak tergantung urutan file yang menyimpan daftar email. Sedangkan jika diberikan
argumen <urutan>, maka tampilan dari perintah list dapat diurutkan sesuai nilai argumen, yaitu :
- name : berdasarkan nama email
- date : berdasarkan tanggal pembuatan email (tanggal ditentukan ketika save dari sysdate)
- size : berdasarkan ukuran email
Menghapus Email
Untuk menghapus email, digunakan perintah delete. Perintah delete boleh memiliki argumen,
boleh tidak. Jika perintah delete tidak diberikan argumen, maka program akan menghapus semua
email yang ada. Sedangkan jika diberikan argumen <nama-file-email>, maka hanya file email
bersangkutan yang dihapus.
Membuat Email
Pada saat isi suatu email dibuat dengan perintah compose, modus pengelolaan email akan berubah
menjadi modus compose email yang ditandai dengan prompt “>>”.
Tugas I – IF2182 Algoritma dan Struktur Data/IL-ITB/Rev-by-MA-FN , Page 1 of 4
Printed : 09/21/07
TUGAS IF2182 Algoritma dan Struktur Data
Simulasi Pengelolaan Email
Pada modus compose email, perintah yang dapat dilakukan adalah :
1. untuk membatalkan pembuatan email dan kembali ke modus sistem (prompt “>”)
>>discard #
2. untuk menyimpan email ke suatu file, mengeset statusnya sebagai ‘belum dikirim’ dan kembali ke
modus sistem (prompt “>”)
>>save <nama-file-email> #
3. untuk ‘mengirim’ email dengan menyimpan email ke suatu file dan mengeset statusnya sebagai
‘sudah dikirim’, kemudian kembali ke modus sistem (prompt “>”)
>>send <nama-file-email> #
Dengan demikian, state diagram program dapat diringkas sebagai berikut:
Mailsys
>browse
>list
>delete
>compose
>search
>exit
exit
Modus Pengelolaan Email
compose
>>discard
>>save
>>send
discard/
save/send
Modus Compose Email
Search Email
Yang dimaksud argumen <nama-kunci> pada perintah search adalah salah satu dari
{subject, to, cc, bcc}. Sedangkan <nilai-kunci> adalah nilai dari kunci yang
bersangkutan. Hasilnya ditampilkan dalam bentuk daftar email dengan format seperti pada perintah
<list>.
Spesifikasi Table Of Content (Isi Direktori Email) dan Penyimpanan Email
Supaya isi direktori dapat ditampilkan kembali setelah program dimatikan, maka informasi isi direktori
juga harus disimpan dalam sebuah file, yang isinya akan dipindahkan ke suatu tabel internal saat
program MailSys diaktifkan. Penyimpanan informasi isi direktori dan semua jenis file yang terdapat
di dalamnya menggunakan file text, sebagai contoh file toc.txt. Semua file email yang terdaftar
pada toc.txt disimpan dalam sebuah direktori bernama MailDir. Isi direktori MailDir harus
konsisten dengan toc.txt.
Nama file yang menyimpan isi direktori menjadi parameter ketika Mailsys mulai dijalankan. Jadi,
cara mengaktifkan MailSys dengan informasi isi direktori disimpan pada toc.txt adalah:
MailSys toc.txt
Program aplikasi harus dapat dijalankan dari kondisi direktori kosong (belum ada email yang
disimpan). Untuk memulai test bukan kosong, anda harus membuat minimal satu email dengan editor
teks dan menyimpannya pada direktori MailDir.
Inisialisasi yang perlu dilakukan pada awal eksekusi aplikasi adalah memindahkan isi toc.txt ke
dalam suatu struktur internal. Pemindahan ke struktur internal ini dilakukan dengan membaca setiap
file email yang terdaftar di toc.txt dengan mesin karakter dan ”menuliskannya” ke struktur internal.
Pada saat suatu email dihapus (dengan perintah delete) dan disalin (dengan perintah save) struktur
internal ini di-update dengan informasi yang yang berubah. Ketika pengguna keluar dari aplikasi
(exit), isi struktur internal disalin ke toc.txt dan toc.txt harus konsisten dengan isi direktori
MailDir.
Spesifikasi Penamaan File
Nama file mengikuti format : <nama>.<ekstensi>
Panjang nama file maksimum 8 karakter dan semuanya harus huruf atau angka (tidak ada karakter
khusus), sedangkan ekstensi maksimal 3 karakter.
Tugas I – IF2182 Algoritma dan Struktur Data/IL-ITB/Rev-by-MA-FN , Page 2 of 4
Printed : 09/21/07
TUGAS IF2182 Algoritma dan Struktur Data
Simulasi Pengelolaan Email
Spesifikasi Perintah (Command)
- Semua perintah yang diketikkan oleh user selalu valid. Antara perintah dengan argumen
dipisahkan satu atau lebih "blank". Pengguna tidak pernah mengetik lebih dari 80 karakter
sebelum #
- Nama file yang diberikan user selalu valid (hanya karakter huruf/angka, case sensitive), namun
bisa lebih dari 8 karakter. Jika lebih dari 8 karakter, maka nama file yang disimpan oleh sistem
hanya 8 karakter saja. Pemisah ”.” dan nama extension selalu valid (pasti 3 karakter dan sesuai
dengan aturan yang ada).
Format File toc.txt
File toc.txt berisi informasi isi direktori sbb.
<nama-direktori> #
<nama-file-email> <tanggal> <status> #
<nama-file-email> <tanggal> <status> #
<nama-file-email> <tanggal> <status> #
...
#
Direktori mungkin kosong, dalam hal ini file toc.txt hanya berisi dua baris sbb:
<nama-direktori> #
#
Format File Email :
Suatu email dikenali dari subject, to, cc, bcc, body, dan signature. Untuk itu, informasi subject dan
signature tidak boleh dikosongkan.
File email berupa file teks yang mempunyai format sebagai berikut :
<subject>
<to>
<cc>
<bcc>
<body>
…………………
…………………
…………………
…………………
…………………
…………………
…………………
</body>
<signature> …………………
</subject>
</to>
</cc>
</bcc>
</signature>
Saran :
Tugas ini menggunakan hampir semua ADT yang pernah diajarkan sampai saat tugas ini diberikan,
mesin karakter, mesin kata dan mesin rekam. Untuk akuisisi kata, pakailah salah satu versi akuisisi
yang diajarkan di kelas.
Jangan memakai tipe boolean, gunakan 0 untuk false dan bilangan bulat positif untuk true.
Deskripsi pengerjaan tugas
1. Tugas harus diserahkan per kelompok, dengan cara pengelompokan yang akan ditentukan oleh
asisten. Selama belum ada pengumuman kelompok, setiap mahasiswa harus memahami
spesifikasi, dan akan diberikan 1 sesi untuk klarifikasi spesifikasi.
2. Waktu dan tatacara penyerahan serta pemeriksaan tugas akan diumumkan di situs
http://kur2003.if.itb.ac.id.
3. Pembagian tugas (penanggung jawab masing-masing modul program) harus dinyatakan dengan
jelas dalam penyerahan tugas (akan disediakan file evaluation sheet untuk checklist di situs)
Deliverables
1. Source code, well commented, dengan pembagian file yang sesuai standard. Fungsi dan prosedur
dalam ADT hanya fungsi dan prosedur yang dipakai dalam program
2. Data test: untuk direktori awal kosong, dan sudah ada isinya minimal satu jenis file dalam
direktori.
3. Test script, yaitu urutan test yang ”masuk akal” dan mencakup minimal semua fasilitas yang harus
di-test serta sesuai spesifikasi di atas
Tugas I – IF2182 Algoritma dan Struktur Data/IL-ITB/Rev-by-MA-FN , Page 3 of 4
Printed : 09/21/07
TUGAS IF2182 Algoritma dan Struktur Data
Simulasi Pengelolaan Email
4.
5.
Notulen setiap pertemuan untuk klarifikasi spesifikasi yang dilakukan per kelompok.
Sketsa struktur data internal.
Bonus :
- Program mampu mengelola sub direktori (InputBox dan OutputBox)
- Program mampu menampilkan statistik email
- Program mampu mentoleransi kesalahan sintaks, mulai dari ”bodoh” (menolak semua sintaks yang
tidak sesuai) sampai secara ”pintar” mentoleransi dan mengoreksi perintah kemudian mencoba
menjalankan (buat spesifikasi dan resikonya).
Contoh test script :
Kasus Test : direktori kosong
Nama file toc : toc0.txt
MailSys toc0.txt
>list #
>exit #
Tugas I – IF2182 Algoritma dan Struktur Data/IL-ITB/Rev-by-MA-FN , Page 4 of 4
Printed : 09/21/07
Download