# Questionnaire Aplikasi berbasis web untuk publikasi kuesioner pada lingkup Yayasan Widya Anindya (Perguruan Tinggi, SMK dan lainnya). ## Latar Belakang Guna melancarkan akreditasi Perguruan Tinggi LEPISI pada 2018, aplikasi ini dibuat untuk memenuhi kebutuhan akan dokumen-dokumen: - dokumen #1 - dokumen #2 - ... ### Kebutuhan Perangkat Lunak - PHP 7.0 - nginx ## Design ### UC Diagram pembuatan kuesioner ```plantuml left to right direction actor Admin Admin -- (Membuat Kuesioner) Admin -- (Mengubah Kuesioner) Admin -- (Membuat Seksi) Admin -- (Mengubah Seksi) Admin -- (Membuat Pertanyaan) Admin -- (Mengubah Pertanyaan) Admin -- (Membuat Pilihan) Admin -- (Mengubah Pilihan) ``` #### Membuat Kuesioner Skenario utama: 1. Admin telah login ke dalam sistem 2. Admin mengisi form pembuatan kuesioner baru yang terdiri dari `title`, `descriptions`, `released_at` 3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`, `updated_at` dan `creator_id` ke dalam database 4. sistem mengembalikan Admin ke tampilan daftar kuesioner Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan kuesioner baru dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Mengubah Kuesioner Skenario utama: 1. Admin telah login ke dalam sistem 2. Admin mengisi form edit kuesioner yang terdiri dari `title`, `descriptions`, dan `released_at` 3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari kuesioner yang sedang diedit ke dalam database 4. sistem mengembalikan Admin ke tampilan daftar kuesioner Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan kuesioner baru dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 2. b. tanggal `released_at` telah lewat dari tanggal hari mengubah - sistem menampilkan pesan bahwa tanggal `released_at` tidak dapat diubah lagi 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Membuat Seksi Skenario utama: 1. Admin telah login ke dalam sistem dan memilih kuesioner yang akan dibuatkan seksinya 2. Admin mengisi form pembuatan seksi baru yang terdiri dari `title`, `descriptions` 3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`, `updated_at`, `questionnaire_id` dan `creator_id` ke dalam table `sections` 4. sistem mengembalikan Admin ke tampilan daftar seksi dari kuesioner yang sedang diedit Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan seksi baru dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Mengubah Seksi Skenario utama: 1. Admin telah login ke dalam sistem dan memilih kuesioner yang akan diedit seksinya 2. Admin mengisi form edit seksi yang terdiri dari `title`, `descriptions` 3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari seksi yang sedang diedit ke dalam database 4. sistem mengembalikan Admin ke tampilan daftar seksi kuesioner Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form mengubah seksi dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Membuat Pertanyaan skenario utama: 1. admin telah login ke dalam sistem dan memilih kuesioner dan seksi yang akan dibuatkan pertanyaan 2. admin mengisi form pembuatan pertanyaan baru yang terdiri dari `title`, `descriptions`, `question_type`, `text`, `number` 3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`, `updated_at`, `section_id` dan `creator_id` ke dalam table `questions` 4. sistem mengembalikan admin ke tampilan daftar pertanyaan dari kuesioner dan seksi yang sedang diedit ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan seksi baru dan menampilkan pesan kesalahan - admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Mengubah Pertanyaan Skenario utama: 1. Admin telah login ke dalam sistem dan memilih kuesioner dan seksi yang akan diedit pertanyaannya 2. Admin mengisi form edit pertanyaan yang terdiri dari `title`, `descriptions`, `question_type`, `text`, dan `number` 3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari pertanyaan yang sedang diedit ke dalam database 4. sistem mengembalikan Admin ke tampilan daftar pertanyaan kuesioner Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan pertanyaan baru dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Membuat Pilihan skenario utama: 1. admin telah login ke dalam sistem dan memilih pertanyaan yang akan dibuatkan pilihan 2. admin mengisi form pembuatan pilihan baru yang terdiri dari `descriptions`, `text`, `number` 3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`, `updated_at`, `questions_id` dan `creator_id` ke dalam table `question_choices` 4. sistem mengembalikan admin ke tampilan daftar pilihan dari pertanyaan yang sedang diedit ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan pilihan baru dan menampilkan pesan kesalahan - admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan #### Mengubah Pilihan Skenario utama: 1. Admin telah login ke dalam sistem dan memilih pilihan pertanyaan yang akan diedit 2. Admin mengisi form edit pilihan yang terdiri dari `title`, `descriptions`, `question_type`, `text`, dan `number` 3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari pertanyaan yang sedang diedit ke dalam database 4. sistem mengembalikan Admin ke tampilan daftar pertanyaan kuesioner Ekstensi: 2. a. form tidak diisi lengkap: - sistem mengembalikan admin ke halaman form pembuatan pertanyaan baru dan menampilkan pesan kesalahan - Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap 3. a. sistem tidak dapat menyimpan data ke database: - Admin dikembalikan ke halaman pengisian form dan diberi peringatan kesalahan ### UC Diagram pengisian kuesioner ```plantuml left to right direction actor Responden actor Admin Responden -- (Mengisi identitas) Responden -- (Mengisi kuesioner) Responden -- (Menyelesaikan kuesioner) (Menerima notifikasi pengisian) .> (Menyelesaikan kuesioner) : extends (Menerima notifikasi pengisian) -- Admin ``` ### UC Diagram pencetakan laporan kuesioner ```plantuml left to right direction actor Admin Admin -- (Mencetak rekap pengisian kuesioner) Admin -- (Mencetak laporan hasil pengolahan kuesioner) ``` ### Class Diagram ```plantuml class Questionnaire { id : int title : varchar (100) descriptions : text creator_id : int reviewer_by : int released_at : datetime created_at : datetime updated_at : datetime deleted_at : datetime } class Section { id : int questionnaire_id : int title : varchar (100) descriptions : text creator_id : int created_at : datetime updated_at : datetime deleted_at : datetime } class Question { id : int section_id : int number : int text : varchar (300) descriptions : text question_type : enum ('text', 'choice', 'number') creator_id : int created_at : datetime updated_at : datetime deleted_at : datetime } class QuestionChoice { id : int question_id : int number : int text : varchar (300) descriptions : text creator_id : int created_at : datetime updated_at : datetime deleted_at : datetime } class Respondent { id : int login : varchar (100) name : varchar (100) handphone : varchar (100) email : varchar (100) gender : enum ('m', 'f') descriptions : text created_at : datetime updated_at : datetime deleted_at : datetime } class Answer { id : int respondent_id : int question_id: int text : text choice : int created_at : datetime updated_at : datetime deleted_at : datetime } Questionnaire "1" -- "1..*" Section Section "1" -- "1..*" Question Question "1" -- "0..*" QuestionChoice Respondent "1" -- "1..*" Answer Question "1" - "1" Answer ``` ### ER Diagram ```dot diagraph ER { node [shape=box]; questionnaires; sections; questions; respondents; answers; node [shape=diamond,style=filled]; question_answers; questionnnaires -- sections; sections -- questions; questions -- questions_answers; questions -- answers; answers -- respondent; } ```