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