Tugas besar ini disusun sebaik-baiknya oleh anggota Kelompok H K-01 untuk memenuhi kebutuhan spesifikasi tugas dalam mata kuliah IF2110 Algoritma dan Struktur Data Semester I 2023/2024. Dalam tugas besar kali ini, kami membuat sebuah program yang merupakan replika atas sebuah aplikasi yang bernama Twitter yang sekarang menjadi X, dengan nama program Tweeter yang mana merupakan program berbasis CLI (Command Line Interface). Untuk membuat program ini, kami menggunakan struktur data yang bervariasi dan memilih ADT yang paling cocok untuk menyelesaikan sebuah persoalan atau fitur tertentu dalam program ini.
- Zachary Samuel T (13522016)
- Tazkia Nizami (13522032)
- M Athaullah Daffa Kusuma M (13522044)
- Elbert Chailes (13522045)
- Kharris Khisunica (13522051)
Program Tweeter ini merupakan sebuah program replika sebuah sosial media yang memberikan kesempatan bagi penggunanya untuk berinteraksi dengan pengguna lainnya dan berbasis CLI. Program ini menyediakan fitur-fitur bersosial media layaknya seperti aplikasi aslinya, seperti membuat kicauan, melihat profil teman, melakukan pertambahan pertemanan, membuat tagar, dan fitur-fitur lainnya. Program ini dibangun dengan menggunakan berbagai struktur data atau ADT yang bervariasi sesuai dengan persoalan atau fitur yang dibuat dalam program tersebut. Program ini dikembangkan dengan menggunakan bahasa pemrograman C.
Fitur-fitur utama yang tersedia program ini adalah sebagai berikut.
- Fitur
Perintahyang direalisasi dengan menggunakanADT Mesin Kata dan ADT Mesin Karakteruntuk membaca setiap perintah atau command yang diberikan oleh pengguna untuk menggunakan fitur-fitur pada program. - Fitur
Inisialisasi/Penggunayang diintegrasikan tanpa menggunakan struktur data melainkan hanya logika pemrograman biasa yang dilakukan pada filemain.c. - Fitur
Penggunayang diselesaikan dengan menggunakan struktur dataADT List dengan Struktur Data Array Statik - Fitur
Profilyang diselesaikan dengan menggunakan struktur dataADT Matriksuntuk mengatasi permasalahan foto profil dan menggunakan list pengguna statik untuk menyelesaikan persoalan fitur lainnya. - Fitur
Temanyang diselesaikan dengan menggunakan struktur dataADT Graf dengan representasi Adjacency Matrixuntuk mengetahui relasi antara satu pengguna dengan pengguna lainnya. - Fitur
Permintaan Temanyang diselesaikan dengan menggunakanADT Priority Queueuntuk menyelesaikan permasalah masukan permintaan teman sesuai dengan popularitas atau teman yang dimiliki oleh pengguna yang mengirimkan permintaan pertemanan. - Fitur
Kicauanyang diselesaikan dengan membuat list kicauan yang direalisasi dengan menggunakanADT List dengan Struktur Data Array Dinamikuntuk mengatasi permasalahan pembuatan atau penyimpanan kicauan yang tidak dibatasi. - Fitur
Balasanyang diselesaikan dengan menggunakanADT Treeuntuk menyelesaikan permasalahan fitur balasan yang sifatnya bercabang dan saling menyambung antara satu node dengan node lainnya sehingga membentuk struktur yang seperti pohon. - Fitur
Draf Kicauanyang diselesaikan dengan menggunakanADT Stackkarena pada fitur ini pengguna dapat melihat draf terakhirya dan melakukan aksi lanjutan seperti hapus, simpan, atau bahkan menerbitkannya sehingga mengubah statusnya dari draf kicauan menjadi kicauan yang sebenarnya. - Fitur
Utasyang diselesaikan dengan menggunakanADT List dengan Struktur Data Berkaitkarena sifat utas yang berkaitan antara satu dengan yang lainnya, dapat dibuat kicauan sambungan terhadap utas tersebut. Setiap penghapusan juga menyebabkan indeks utas menjadi menurun sehingga secara tidak langsung menggambar struktur data list linier. - Fitur
Simpan dan Muatyang diselesaikan dengan menggunakanADT Mesin Kata atau ADT Mesin Karakteryang telah dimodifikasi untuk membaca teks dari file secara per baris dan sebaliknya.
Fitur-fitur tambahan juga dibuat, yaitu :
- Fitur
Tagaryang diintegrasikan bersama dengan fitur kicauan dengan menggunakanADT HashTablesehingga pengguna dapat mencari kicauan dengan tagar tertentu. - Fitur
Nomor HPyang dimodifikasi sehingga pengguna dapat melakukan modifikasi informasi nomor HP pada profilnya dengan jumlah angka yang tak terhingga. Fitur ini tidak menggunakan ADT khusus, namun hanya melakukan modifikasi dengan fungsirealloc,calloc, danmalloc.
Perintah-perintah yang tersedia pada program ini, sebagai berikut:
MASUKmerupakan command yang bertujuan untuk masuk pada akun pengguna tertentu yang telah terdaftar dan tersimpan pada list pengguna.DAFTARmerupakan command yang memberikan kesempatan bagi pengguna program untuk melakukan pendaftaran akun baru.TUTUP_PROGRAMmerupakan command yang dapat digunakan untuk melakukan terminasi program jika penggunaan program dirasa sudah cukup oleh pengguna.UBAH_FOTO_PROFIL merupakan command yang bertujuan untuk mengubah foto profil yang dimiliki oleh seorang pengguna. Sebelum melakukan modifikasi, fitur ini akan terlebih dahulu menampilkan foto profil dari pengguna tersebut sebelum diubah. Fitur ini hanya dapat melakukan modifikasi foto profil akun sendiri dan tidak melakukan modifikasi pada akun pengguna lain. Fitur ini menerima masukan berupa matriks 10x10 yang berisi warna sebelum simbol, berupa kode “R”/”G”/”B” untuk menentukan warna simbol setelahnya merupakan warna merah, hijau, ataupun biru.GANTI_PROFILmerupakan command yang bertujuan untuk melakukan modifikasi informasi yang disimpan pada profil seorang pengguna, seperti bio akun, nomor HP, Weton. Sebelum melakukan modifikasi pada informasi profil, fitur ini akan menampilkan informasi profil pengguna saat ini. -LIHAT_PROFIL [NAMA]merupakan command yang menerima satu parameter tambahan yaitu nama pengguna yang dituju untuk diberlakukan pada fitur ini. Fitur ini akan menampilkan informasi profil yang dimiliki oleh pengguna dengan nama yang dituju, dengan syarat bahwa jika pengguna yang dituju merupakan pengguna dengan jenis akun PUBLIK ataupun jika PRIVAT harus merupakan teman yang ingin melakukan aksi ini.ATUR_JENIS_AKUNmerupakan command yang bertujuan untuk melakukan modifikasi jenis akun dari PUBLIK menjadi PRIVAT ataupun sebaliknya.DAFTAR_TEMANmerupakan command yang bertujuan untuk menampilkan teman-teman yang dimiliki oleh pengguna yang melakukan aksi ini.- HAPUS_TEMAN merupakan command untuk melakukan penghapusan teman dengan nama masukan spesifik pengguna yang hendak dihapus status pertemanannya.
KICAUmerupakan command untuk mengunggah sebuah kicauan. Perintah ini hanya bisa diakses ketika pengguna sudah masuk ke dalam sebuah akun. Kicauan ini mempunyai panjang maksimal 280 karakter, yang nantinya diunggah akan dimasukkan ke dalam sebuah list kicau, ID nya sesuai ID terakhir dari list kicau, datetime nya sesuai dengan waktu unggah, dan jumlah disukai dimulai dari nol. Selain itu, pengguna juga dimintai untuk memasukkan tagar dari kicauan tersebut, jika pengguna tidak memasukkan tagar, maka kicauan dianggap tidak memiliki tagar.KICAUANmerupakan command untuk melihat kicauan milik teman dan diri sendiri. Perintah ini cukup sederhana, cukup mengecek setiap kicauan di list kicau, apakah pengguna saat ini dan author dari kicauan berteman, jika mereka berteman, maka kicauan tersebut akan ditampilkan.SUKA_KICAUAN [IDKicau]merupakan command yang berfungsi untuk menyukai kicauan dengan ID IDKicau. Jika author dari kicauan yang hendak disukai privat namun belum berteman dengan pengguna saat ini, perintah tersebut akan ditolak. Akan tetapi jika author dari kicauan yang hendak disukai publik atau privat dan sudah berteman dengan pengguna saat ini, jumlah disukai dari kicauan tersebut bertambah 1.UBAH_KICAUAN [IDKicau]merupakan command yang berfungsi untuk merubah sebuah kicauan dengan ID IDKicau. Adapun kicauan yang bisa diubah hanyalah kicauan milik pribadi, yaitu kicauan dengan author yang sama dengan pengguna saat ini.BALAS [IDKicau] [IDBalasan]merupakan command untuk melakukan balasan pada IDKicau tertentu dan dengan IDBalasan tertentu yang terdapat pada IDkicau tersebut. Balasan hanya dapat dibalas jika balasan yang hendak dibalas dibuat oleh akun yang bersifat publik atau memiliki teman dengan pengguna yang hendak membalas.BALASAN [IDKicau]merupakan command untuk menampilkan seluruh balasan yang terdapat pada IDKicau tertentu.HAPUS_BALASAN [IDKicau] [IDBalasan]merupakan command untuk melakukan aksi penghapusan sebuah balasan yang spesifik pada IDBalasan tertentu yang terdapat pada IDKicauan tertentu.BUAT_DRAFmerupakan command untuk melakukan aksi pembuatan draf kicauan yang kemudian pengguna mendapatkan tiga pilihan, yaitu untuk melakukan SIMPAN untuk menyimpan draf tersebut, HAPUS untuk melakukan penghapus draf tersebut, dan TERBIT untuk melakukan penerbitan dan pengubahan status draf tersebut menjadi kicauan.LIHAT_DRAFmerupakan command untuk melakukan aksi melihat draf terakhir yang dibuat oleh pengguna yang melakukan aksi tersebut. Kemudian, akan diberikan pilihan terhadap pengguna untuk melakukan aksi HAPUS jika ingin menghapus draf terakhir yang ditampilkan, UBAH jika ingin melakukan pengubahan terhadap konten dari draf tersebut, TERBIT untuk melakukan pengubahan status draf terakhir tersebut menjadi kicauan, dan KEMBALI untuk kembali ke menu pilihan lainnya tanpa melakukan aksi apapun terhadap draf terakhir yang ditampilkan.DAFTAR_TEMANmerupakan command untuk menampilkan teman yang dimiliki oleh akun pengguna saat ini. Urutan ditampilkannya teman diurutkan berdasarkan ID dari yang terkecil hingga terbesar.HAPUS_TEMANmerupakan command untuk menghapus hubungan pertemanan antara akun pengguna saat ini dan akun pengguna lain yang merupakan teman. Saat pesan command ini dipanggil, pengguna akan diminta untuk menuliskan nama pengguna yang akan dihapus sebagai teman. Setelah itu, program akan menampilkan pesan validasi untuk meyakinkan apakah hubungan pertemanan benar-benar akan dihapus atau tidak.TAMBAH_TEMANmerupakan command untuk mengirimkan permintaan pertemanan kepada pengguna lain yang belum berteman dengan akun pengguna saat ini. Pengguna tidak akan bisa menggunakan fitur ini ketika akun pengguna saat ini memiliki permintaan pertemanan dari akun lain. Jika permintaan pertemanan sudah kosong, pengguna akan diminta untuk menuliskan nama pengguna yang akan ditambahkan sebagai teman. Jika nama pengguna ditemukan, maka akun target akan menerima permintaan pertemanan tersebut, dan pengguna saat ini cukup menunggu hingga permintaan pertemanannya sudah diterima.DAFTAR_PERMINTAAN_PERTEMANANmerupakan command untuk menampilkan daftar permintaan pertemanan yang ditujukan kepada akun pengguna saat ini. Daftar ini akan menampilkan permintaan pertemanan yang diurutkan berdasarkan popularitas(banyak teman) pengirim saat mengirimkan permintaan pertemanan.SETUJUI_PERTEMANANmerupakan command untuk menerima permintaan pertemanan dari akun pengguna lain. Saat command ini dipanggil, program akan menampilkan permintaan pertemanan dari akun pengguna yang memiliki popularitas paling besar. Pengguna kemudian perlu menentukan apakah permintaan pertemanan tersebut akan diterima atau tidak. Jika diterima, maka akun pengguna yang mengirim permintaan pertemanan akan langsung menjadi teman dari akun pengguna saat ini. Jika pengguna ingin menyetujui permintaan pertemanan lagi, maka pengguna perlu memanggil command ini lagi.UTASmerupakan command untuk membuat sebuah utas dari daftar kicauan yang sudah ada. Saat pesan ini dipanggil, kicauan utama yang dijadikan utas dibuat menjadi kicauan sambungan pertama dengan indeks nol dan pengguna akan diminta untuk memasukkan kicauan sambungan pertama dari utas tersebut dan dapat diminta untuk melanjutkan kicauan sambungannya sampai pengguna memutuskan untuk berhenti.SAMBUNG_UTASmerupakan command untuk menyambungkan sebuah kicauan sambungan dalam utas tertentu, dengan indeks yang dimasukkan berupa indeks untuk kicauan sambungan yang dituju. Jika indeks masukan berupa indeks + 1 dari indeks terakhir yang sudah ada di utas, kicauan sambungan baru akan dimasukkan di paling akhir. Jika indeks berupa salah satu indeks yang sudah ada dalam utas, kicauan sambungan akan dimasukkan sesuai indeksnya dan semua kicauan sambungan dari kicauan sambungan yang awalnya menempati indeks tersebut akan digeser dan indeksnya bertambah 1 masing-masing.HAPUS_UTASmerupakan command untuk menghapus sebuah kicauan sambungan dari utas. Pengguna tidak dapat menghapus kicauan utama dan kicauan yang bukan miliknya. Jika indeks masukan berupa salah satu indeks tengah (bukan awal dan akhir), semua kicauan sambungan setelahnya akan digeser dan indeksnya dikurangi satu.CETAK_UTASmerupakan command untuk mencetak sebuah utas dimulai dari kicauan utama (kicau yang dijadikan utas), diikuti dengan semua kicauan sambungan yang ada di utas. Pengguna hanya dapat mencetak utas yang dimiliki oleh akun publik atau akun privat yang sudah menjadi teman pengguna.SIMPANmerupakan command untuk melakukan penyimpanan progress saat ini di sebuah folder yang berisi file config. Program akan meminta input dari user berupa folder yang nantinya akan digunakan untuk menyimpan progress saat ini. Jika folder belum ada, maka program akan otomatis membuat folder terlebih dahulu lalu melakukan penyimpanan.MUATmerupakan command untuk memuat kondisi dari folder yang berisi file config. Proses memuat ini akan mengganti seluruh data progress saat ini menjadi data sesuai file config yang dimuat. Command ini hanya bisa dipanggil ketika pengguna belum masuk ke dalam akun.CARI_KICAUAN [Tagar]adalah command yang digunakan ketika pengguna ingin mencari semua kicauan yang memiliki tagar berupa Tagar. Program nantinya akan membuat seluruh karakter di Tagar menjadi lowercase untuk alfabet, dan nantinya diproses di fungsi hash yang nantinya akan digunakan menjadi indeks dari tagar tersebut ditempatkan. Program akan menampilkan semua kicauan yang memiliki tagar Tagar, tanpa perlu memperhatikan apakah pengguna telah berteman dengan author dari kicauan tersebut. ...
Pertama, pastikan sudah melakukan unzip folder dan kemudian buka terminal atas repository tersebut. Jika anda merupakan pengguna Windows, harap mengetik wsl pada terminal. Jika bukan, maka abaikan perintah sebelumnya. Jika anda sudah berada pada parent folder IF2110_TB_01_H, jalankan perintah sebagai berikut.
make
./mainPerintah ./main untuk menjalankan program utama, sedangkan untuk menjalankan driver dapat disesuaikan dengan nama file .exe dari setiap driver. Contoh format: ./[nama file .exe]
- Zachary Samuel T (13522016) : ADT listutas, Konfigurasi Utas, Fitur Utas
- Tazkia Nizami (13522032) : ADT Mesin Karakter, ADT Mesin Kata, ADT Graf Pertemanan, Fitur teman, Konfigurasi Pengguna
- M Athaullah Daffa Kusuma M (13522044) : ADT listkicauan, Konfigurasi Kicauan, Fitur Kicauan, Fitur Simpan dan Muat
- Elbert Chailes (13522045) : ADT listpengguna, ADT treebalasan, ADT stackdraf, ADT datetime, Fitur Pengguna, Fitur Balasan, Fitur Draf Kicauan, Fitur Profil, Konfigurasi Balasan, Konfigurasi Draf
- Kharris Khisunica (13522051) : -
- Fitur
PerintahSELESAI - Fitur
Inisialisasi/PenggunaSELESAI - Fitur
PenggunaSELESAI - Fitur
ProfilSELESAI - Fitur
TemanSELESAI - Fitur
Permintaan TemanSELESAI - Fitur
KicauanSELESAI - Fitur
BalasanSELESAI - Fitur
Draf KicauanSELESAI - Fitur
UtasSELESAI - Fitur
Simpan dan MuatSELESAI - Fitur
TagarSELESAI - Fitur
Nomor HPSELESAI