· 8 years ago · Feb 04, 2018, 04:06 AM
1# User Requirements Online Reservation System
2
3Aplikasi administrasi peminjaman barang berbasis online
4
5## Main Features
6- Login & register
7- Autentikasi via social media
8- Pencarian data barang
9- Proses peminjaman
10- Kelola data barang
11- Kelola data pelanggan
12- Kelola data peminjaman
13- Kelola data admin
14
15## User Flow Systems
16Alur sistem berdasarkan experience user.
17### Frontend
181. User melihat halaman muka aplikasi
192. User melakukan pencarian barang
203. User menentukan pilihan barang
214. User diarahkan ke halaman keranjang pemesanan
225. Jika user sudah login maka langsung ke poin 6, jika user belum login maka ada pilihan login atau register
236. User memilih apakah barang mau diambil sendiri atau dikirim. Jika diambil sendiri maka ke no 8, jika dikirim maka ke no 7
247. User memasukkan alamat pengiriman atau memilih data pengiriman jika sudah pernah memasukkannya.
258. User diarahkan ke halaman konfirmasi peminjaman, berisi total bayar, dan kemana harus bayar
269. User mengunggah bukti pembayaran
2710. User melihat status peminjaman pada history peminjaman
2811. System mengirimkan notifikasi jika peminjaman diterima atau ditolak
2912. Jika diterima, user bisa melihat informasi selanjutnya terkait peminjaman
30
31### Backend
321. Admin login ke aplikasi
332. Admin dapat melakukan pengelolaan data: barang, user/pelanggan, dan peminjaman
344. Admin melihat notifikasi peminjaman
355. Admin menyetujui atau menolak peminjaman
36
37## Detail Page
38### Frontend
39- Halaman muka aplikasi menampilkan:
40 - Image Slideshow (gambar seluruh barang,prosedur peminjaman,company profil,promo)
41 - Daftar barang favorit
42 - Statistik Peminjaman
43 - Kontak yang bisa dihubungi
44 - Testimoni pelanggan
45 - Link login/register
46- Halaman pencarian, sorting dan filtering
47- Halaman detail barang berisi
48 - Informasi barang
49 - Gambar/Video
50 - Kolom komentar
51 - Kolom review
52- Halaman keranjang pemesanan berisi
53 - data barang yang dipesan
54 - link login/register
55 - pilihan pengiriman dan input baru
56 - link checkout
57- Halaman konfirmasi pemesanan berisi
58 - data barang
59 - total biaya peminjaman
60- Halaman profile user berisi
61 - update data user
62 - histori peminjaman (status)
63 - detail histori peminjaman untuk upload bukti pembayaran
64- Halaman login
65- Halaman register
66### Backend
67- Halaman login
68- Halaman dashboard
69- Halaman kelola barang
70- Halaman kelola user
71- Halaman kelola customer, and data pengiriman
72- Halaman kelola pemesanan dan detailnya
73- Menu edit review
74- Menu edit comment
75
76## Database Schema
77### Tabel `goods`
78Tabel ini berfungsi untuk menyimpan data barang, pengkategoriannya, stock yang dimiliki (adapun stock available dihitung by sistem), biaya peminjaman perhari, status barang bisa dipinjam atau tidak.
79```
80CREATE TABLE IF NOT EXISTS goods (
81 id INTEGER PRIMARY KEY AUTO_INCREMENT,
82 name VARCHAR(255),
83 description TEXT,
84 image VARCHAR(255),
85 category VARCHAR(255),
86 stock INTEGER,
87 rate INTEGER,
88 created DATETIME,
89 modified DATETIME,
90 status BOOLEAN
91);
92```
93### Tabel `goods_file`
94Tabel ini berfungsi untuk menyimpan data barang, pengkategoriannya, stock yang dimiliki (adapun stock available dihitung by sistem), biaya peminjaman perhari, status barang bisa dipinjam atau tidak.
95```
96CREATE TABLE IF NOT EXISTS goods_file (
97 id INTEGER PRIMARY KEY AUTO_INCREMENT,
98 goods_id INTEGER,
99 title VARCHAR(255),
100 file VARCHAR(255),
101 type ENUM('IMAGE','PDF','VIDEO'),
102 created DATETIME,
103 modified DATETIME,
104 status BOOLEAN
105);
106```
107### Tabel `goods_review`
108Tabel ini berfungsi untuk menyimpan data review customer terhadap suatu barang yang telah dipinjamnya.
109```
110CREATE TABLE IF NOT EXISTS goods_review (
111 id INTEGER PRIMARY KEY AUTO_INCREMENT,
112 goods_id INTEGER,
113 user_id INTEGER,
114 rating INTEGER,
115 review TEXT,
116 response_admin TEXT,
117 created DATETIME,
118 modified DATETIME,
119 status BOOLEAN
120);
121```
122### Tabel `goods_comment`
123Tabel ini berfungsi untuk menyimpan data komentar atau pertanyaan customer terhadap suatu barang
124```
125CREATE TABLE IF NOT EXISTS goods_comment (
126 id INTEGER PRIMARY KEY AUTO_INCREMENT,
127 reply_id INTEGER,
128 goods_id INTEGER,
129 user_id INTEGER,
130 rating INTEGER,
131 comment TEXT,
132 created DATETIME,
133 modified DATETIME,
134 status BOOLEAN
135);
136```
137### Tabel `user`
138Tabel ini berfungsi untuk menyimpan data user login, termasuk levelnya apakah admin, atau petugas (kasir), atau user biasa, data social media supaya bisa login menggunakan social media, serta status user aktif atau inaktif
139```
140CREATE TABLE IF NOT EXISTS user (
141 id INTEGER PRIMARY KEY AUTO_INCREMENT,
142 username VARCHAR(255),
143 password VARCHAR(255),
144 level ENUM('ADMIN','STAFF','USER'),
145 facebook VARCHAR(255),
146 google VARCHAR(255),
147 twitter VARCHAR(255),
148 instagram VARCHAR(255),
149 created DATETIME,
150 modified DATETIME,
151 status BOOLEAN
152);
153```
154### Tabel `customer`
155Tabel ini berfungsi untuk menyimpan data diri customer, termasuk levelnya apakah PREMIUM atau REGULER
156```
157CREATE TABLE IF NOT EXISTS customer (
158 user_id INTEGER PRIMARY KEY,
159 name VARCHAR(255),
160 gender BOOLEAN,
161 born VARCHAR(100),
162 birth_day DATE,
163 address TEXT,
164 phone VARCHAR(50),
165 point INTEGER,
166 level ENUM('PREMIUM','REGULER')
167 created DATETIME,
168 modified DATETIME,
169 status BOOLEAN
170);
171```
172### Tabel `customer_shipment`
173Tabel ini berfungsi untuk menyimpan data alamat pengiriman customer, dipisah dengan tabel customer supaya memungkinkan bagi customer menentukan alamat pengiriman yang berbeda
174```
175CREATE TABLE IF NOT EXISTS customer_shipment (
176 id INTEGER PRIMARY KEY AUTO_INCREMENT,
177 user_id INTEGER,
178 title VARCHAR(255),
179 name VARCHAR(255),
180 address TEXT,
181 phone VARCHAR(50),
182 created DATETIME,
183 modified DATETIME,
184 status BOOLEAN
185);
186```
187
188### Tabel `reservation`
189Tabel ini berfungsi untuk menyimpan data pemesanan seorang customer yang mencatat waktu peminjaman barang, jaminan, total tagihan, informasi pengiriman barang jika barang dikirim, catatan pemesanan, bukti pembayaran, status pembayaran, catatan oleh admin ketika reservasi diterima admin,status pemesanan apakah awaiting (menunggu atau status awal), rejected (ditolak), approved (diterima), borrowed (dipinjam), finished (selesai barang kembali), unfinished (barang tidak kembali,rusak,dicuri,dsb).
190```
191CREATE TABLE IF NOT EXISTS reservation (
192 id INTEGER PRIMARY KEY AUTO_INCREMENT,
193 user_id INTEGER,
194 start DATETIME,
195 end DATETIME,
196 warranty TEXT,
197 bill INTEGER,
198 shipment BOOLEAN,
199 customer_shipment INTEGER,
200 user_note TEXT,
201 payment_proof VARCHAR(255),
202 paid BOOLEAN,
203 admin_note TEXT,
204 created DATETIME,
205 modified DATETIME,
206 status INTEGER
207);
208```
209### Tabel `reservation_detail`
210Tabel ini berfungsi untuk menyimpan detail dari pemesanan sehingga seorang customer dimungkinkan untuk memesan lebih dari satu barang. Status berisi true atau false, jika diset false oleh admin maka barang tersebut tidak dapat dipinjamkan mungkin karena ternyata stock habis atau karena rusak dsb.
211```
212CREATE TABLE IF NOT EXISTS reservation_detail (
213 reservation_id INTEGER,
214 goods_id INTEGER,
215 created DATETIME,
216 modified DATETIME,
217 status BOOLEAN
218);
219```