Tải bản đầy đủ (.docx) (73 trang)

Tài liệu dự án quản lý web bán hàng – rau củ quả xanh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.4 MB, 73 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TÀI LI U D ÁNỆỰ</b>

GIẢNG VIÊN: NGUYỄN THỊ THANH XUÂN SINH VIÊN: ĐÀO TUẤN ĐIỆP – PS27897

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

MỤC LỤC

2.2.5.1 Thống kê top 10 sản phẩm bán nhiều nhất 10

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

4.1.2.2 Màn hình quản lý Sản Phẩm (fragment_ san_pham) 39 4.1.2.3 Màn hình quản lý Chi tiết sản Phẩm (fragment_ct_san_pham) 41 4.1.2.4 Màn hình quản lý Danh mục sản phẩm (fragment_danh_muc) 43 4.1.2.5 Màn hình quản lý Giỏ hàng (fragment_gio_hang) 46 4.1.2.6 Màn hình quản lý Đơn hàng (fragment_don_hang) 48 4.1.2.7 Màn hình quản lý Bình luận (fragment_binh_luan) 50

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

4.3.2.3 ChiTietSanPham & ChiTietSanPhamDAO 64

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

7.2 THUẬN LỢI 81

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1 GIỚI THIỆU DỰ ÁN</b>

<b>1.1GIỚI THIỆU RAU CỦ QUẢ XANH</b>

Rau củ quả xanh là 1 website chuyên bán các loại thực phẩm, sản phẩm nông nghiệp sạch.

Chúng tôi hiểu rằng việc chọn lựa rau củ quả là một phần quan trọng của lối sống lành mạnh và chăm sóc sức khỏe cá nhân. Vì vậy, trang web của chúng tơi khơng chỉ cung cấp sản phẩm tốt nhất mà còn cung cấp thơng tin hữu ích về cách chọn lựa, bảo quản và nấu ăn các loại rau củ quả một cách tối ưu.

<b>1.2YÊU CẦU CỦA RAU CỦ QUẢ XANH</b>

 Yêu cầu:

o Quản lý:

 Quản lý các loại mặt hàng: thêm, xóa, sửa.

 Quản lý hàng hóa, số lượng hàng hóa: tăng giảm số lượng, thêm giảm giá cho sản phẩm tồn kho.

 Quản lý user: quản lý tên TK MK.

 Quản lý các đơn hàng: Quản lý thông tin đơn hàng.

 Admin có quyền tạo tài khoản.  Người dùng có quyền đổi mật khẩu.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

5 <b>Kiểm thử và sửa lỗi</b> 05/06/2023 07/06/2023

5.1 Xây dựng kịch bản kiểm thử 05/06/2023 06/06/2023 Done 5.2 Hoàn tất kiểm thử và sửa lỗi 06/06/2023 07/07/2023 Done 6 <b>Đóng gói & triển khai</b> 12/06/2023 14/06/2023

6.2 Triển khai, hướng dẫn cài

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>2 PHÂN TÍCH YÊU CẦU KHÁCH HÀNG2.1 SƠ ĐỒ USE – CASE.</b>

<b>2.2 ĐẶC TẢ YÊU CẦU HỆ THỐNG (SRS).2.2.1 QUẢN LÝ THÀNH VIÊN </b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng quản lý thành viên được sử dụng để</b>

quản lý thông tin thành viên. Chức năng này liệt kê danh sách thành viên, thêm, xóa, cập nhật thơng tin thành viên và tìm kiếm thành viên theo tên.

<b> DỮ LIỆU LIÊN QUAN: Thông tin của mỗi thành viên gồm: mã thành</b>

viên, họ và tên, ngày sinh, địa chỉ.

<b> ĐỐI TƯỢNG SỬ DỤNG: Sau khi đăng nhập thì tất cả người dùng có thể</b>

sử dụng chức năng này.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>2.2.2 QUẢN LÝ LOẠI SẢN PHẨM, NGUỒN GỐC </b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng quản lý loại sản phẩm được sử dụng để</b>

quản lý thông tin sản phẩm, xuất xứ, nguồn gốc. Chức năng này liệt kê danh sách các loại sản phẩm. Thêm, xóa, cập nhật thơng tin loại sản phẩm, nguồn gốc và tìm kiếm theo tên.

<b> DỮ LIỆU LIÊN QUAN: Thông tin của mỗi loại sản phẩm, nguồn gốc gồm:</b>

mã và tên.

<b> ĐỐI TƯỢNG SỬ DỤNG: Sau khi đăng nhập thì tất cả người dùng có thể</b>

sử dụng chức năng này.

<b>2.2.3 QUẢN LÝ SẢN PHẨM</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng quản lý sản phẩm được sử dụng để</b>

quản lý thông sản phẩm. Chức năng này liệt kê danh sách các sản phẩm, thêm, xóa, cập nhật thơng tin sản phẩm và tìm kiếm sản phẩm theo tên.

<b> DỮ LIỆU LIÊN QUAN: Thông tin của mỗi sản phẩm bao gồm: tên sản</b>

phẩm, giá, ngày nhập hàng, mô tả sản phẩm.

<b> ĐỐI TƯỢNG SỬ DỤNG: Sau khi đăng nhập thì tất cả người dùng có thể</b>

sử dụng chức năng này.

<b>2.2.4 QUẢN LÝ NGƯỜI DÙNG</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng quản lý người dùng cho phép admin</b>

quản lý danh sách người dùng. Chức năng này liệt kê danh sách người dùng, thêm, xóa người dùng và tìm kiếm người dùng theo tài khoản.

<b> DỮ LIỆU LIÊN QUAN: Thông tin của người dùng: mã người dùng, họ và</b>

tên, email, số điện thoại, địa chỉ, tài khoản, mật khẩu.

<b> ĐỐI TƯỢNG SỬ DỤNG: Admin.</b>

<b>2.2.5 THỐNG KÊ</b>

<b>2.2.5.1 Thống kê top 10 sản phẩm bán chạy nhất tháng</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng thống kê top 10 sản phẩm có lượt bán</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>ĐỐI TƯỢNG SỬ DỤNG: Khi đăng nhập người dùng có thể xem.</b>

<b>2.2.6.1 Thống kê sản phẩm sắp hết HSD để sale</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng này thống kê sản phẩm có HSD < 3</b>

ngày để sale

<b> DỮ LIỆU LIÊN QUAN: Thông tin sản phẩm sắp hết hạn: Id sanpham, Tên</b>

sản phẩm, giá, giá sale

<b> ĐỐI TƯỢNG SỬ DỤNG: Admin</b>

<b>2.2.7 ĐĂNG NHẬP</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng đăng nhập cho phép người dùng đăng</b>

nhập tài khoản để truy cập vào giao diện chính.

<b> DỮ LIỆU LIÊN QUAN: Giao diện đăng nhập gồm: nơi nhập tài khoản,</b>

mật khẩu, nút đăng nhập và nút quên mật khẩu.

<b> ĐỐI TƯỢNG SỬ DỤNG: Sau khi admin tạo tài khoản thì người dùng có</b>

thể sử dụng tài khoản để đăng nhập.

<b>2.2.8 CẬP NHẬT THÔNG TIN NGƯỜI DÙNG</b>

<b> MÔ TẢ CHỨC NĂNG: Chức năng này cho phép người dùng cập nhật</b>

thông tin.

<b> DỮ LIỆU LIÊN QUAN: Thông tin của người dùng: mã người dùng (không</b>

được thay đổi), họ và tên, email, avatar, tài khoản (không được thay đổi), mật khẩu.

<b> ĐỐI TƯỢNG SỬ DỤNG: Sau khi đăng nhập thì tất cả người dùng có thể</b>

sử dụng chức năng này.

<b>2.3 SƠ ĐỒ TRIỂN KHAI VÀ YÊU CẦU HỆ THỐNG2.3.1 SƠ ĐỒ TRIỂN KHAI</b>

<b>2.3.2 YÊU CẦU HỆ THỐNG</b>

 Min SDK: 16.  JDK: 1.8+.  SQLite.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>3 THIẾT KẾ ỨNG DỤNG</b>

<b>3.1 MƠ HÌNH CÔNG NGHỆ ỨNG DỤNG</b>

 GUI: Graphic User Interface: Thiết kế giao diện cho người sử dụng.

 Business Logic Programming: Lập trình các chức năng nghiệp vụ trong ứng dụng.

o Controllers: Xử lý nghiệp vụ (Business Logic). o Entity, DAO: Thực thể và Data Access Object. o SQLiteOpenHelper: Class hỗ trợ SQLite.  SQL: Database: Thiết kế CSDL cho ứng dụng.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>3.2.2.1 USER</b>

<b>TÊN CỘTKIỂU DỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MƠ TẢ</sup></b>

AI <sup>Mã thành viên, khóa chính, tự</sup>sinh

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>3.2.2.2 SẢN PHẨM</b>

<b>TÊN CỘTKIỂU DỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MƠ TẢ</sup></b>

MaLoaiSach int PK, not null Mã loại sách, khóa chính, tự sinh

<b>3.2.2.3 DANH MỤC</b>

<b>TÊN CỘTKIỂU DỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MÔ TẢ</sup></b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>3.2.2.4 ĐƠN HÀNG</b>

<b>TÊN CỘTKIỂU DỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MÔ TẢ</sup></b>

MaTG int PK, not null Mã tác giả, khóa chính, tự sinh

<b>3.2.2.5 CHI TIẾT SẢN PHẨM</b>

<b>TÊN CỘT KIỂUDỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MÔ TẢ</sup></b>

MaSach int PK, not null Mã sách, khóa chính, tự sinh

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>3.2.2.6 GIỎ HÀNG</b>

<b>TÊN CỘT KIỂUDỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MƠ TẢ</sup></b>

tự sinh

<b>3.2.2.7 BÌNH LUẬN</b>

<b>TÊN CỘT KIỂUDỮ</b>

<b>LIỆU<sup>RÀNG BUỘC MÔ TẢ</sup></b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

MaUser int PK, not null Mã user, khóa chính, tự sinh

<b>3.3 GIAO DIỆN</b>

<b>3.3.1 SƠ ĐỒ TỔ CHỨC GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Click Menu <sup>Show Navigation Drawer</sup>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

quanlythanhvie n

quanlyuser <sup>Click</sup> <sup>Chuyển FragmentUser</sup> 7 @+id/thongke Click Chuyển FragmentThongKe

<b>3.3.3 GIAO DIỆN QUẢN LÝ</b>

<b>3.3.3.1 Màn hình Home</b>

<b> GIAO DIỆN</b>

<b> MƠ TẢ HOẠT ĐỘNG</b>

<b>TT@IDS KI NỰỆMÔ T HO T Đ NGẢẠỘ</b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

change_avatar <sup>Click</sup> <sup>Hiện dialog đổi avatar</sup>

3 @+id/update Click Hiện dialog cập nhật thông tin

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Ẩn nút thêm, trượt lên trên cùng hiện ra (không che nút xóa và sửa)

Hiện dialog xác nhận xóa. Hiện dialog sửa phiếu mượn

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Ẩn nút thêm, trượt lên trên cùng hiện ra (không che nút xóa và sửa)

Hiện dialog xác nhận xóa. Hiện dialog sửa sách.

3 @+id/search Click Tìm kiếm sách theo tên sách

<b> MÀN HÌNH LO I SÁCHẠ</b>

<b><small>O</small>GIAO DI NỆ</b>

<b><small>O</small>MƠ T HO T Đ NGẢẠỘ</b>

<b>TT@IDS KI NỰỆMÔ T HO T Đ NGẢẠỘ</b>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Ẩn nút thêm, trượt lên trên cùng hiện ra (khơng che nút xóa và sửa)

Hiện dialog xác nhận xóa. Hiện dialog sửa loại sách.

3 @+id/search Click Tìm kiếm loại sách theo tên

<b> MÀN HÌNH TÁC GIẢ</b>

<b><small>O</small>GIAO DI NỆ</b>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Ẩn nút thêm, trượt lên trên cùng hiện ra (khơng che nút xóa và sửa)

Hiện dialog xác nhận xóa Hiện dialog sửa tác giả 3 @+id/search Click Tìm kiếm tác giả theo tên

<b> MÀN HÌNH NHÀ XU T B NẤẢ</b>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Ẩn nút thêm, trượt lên trên cùng hiện ra (không che nút xóa và sửa)

Hiện dialog xác nhận xóa. Hiện dialog sửa NXB.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

3 @+id/search Click Tìm kiếm NXB theo tên

Ẩn nút thêm, trượt lên trên cùng hiện ra (khơng che nút xóa và sửa)

Hiện dialog xác nhận xóa.

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

btnXoaTV <sub>Click</sub> <sub>Hiện dialog sửa thành viên.</sub> 3 @+id/search Click Tìm kiếm thành viên theo tên

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

3 @+id/search Click Tìm kiếm user theo username

menu_top10 <sup>Click</sup> <sup>Chuyển Fragment thống kê top 10 sách</sup>có doanh thu cao nhất.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

4 @+id/btnLogin Click Nếu tài khoản mật khẩu chính xác chuyển đến màn hình chính, nếu sai báo

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

Toolbar @+id/toolbar android:layout_width="match_parent"

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

LinearLayout @+id/

change_password <sup>android:layout_width="match_parent"</sup><sub>android:layout_height="wrap_content"</sub> LinearLayout @+id/change_avatar android:layout_width="match_parent"

android:layout_height="wrap_content" LinearLayout @+id/update android:layout_width="match_parent"

android:layout_height="wrap_content"

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

LinearLayout @+id/logout android:layout_width="match_parent" android:layout_height="wrap_content" RecyclerView @+id/

recyclerDanhMuc <sup>android:layout_width="match_parent"</sup><sub>android:layout_height="300dp"</sub>

<b>4.1.2.2 Màn hình quản lý Phiếu Mượn(fragment_phieu_muon)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

Button <sup>@+id/</sup>ThemPhieuMuon <sup>android:layout_width=" wrap_content"</sup><sub>android:layout_height="wrap_content"</sub>

<b>4.1.2.3 Màn hình quản lý Sách (fragment_sach)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

Button <sup>@+id/ThemSach</sup> <sup>android:layout_width=" wrap_content"</sup><sub>android:layout_height="wrap_content"</sub>

<b>4.1.2.4 Màn hình quản lý Loại Sách (fragment_loai_sach)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

RecyclerView @+id/

recyclerLoaiSach <sup>android:layout_width="match_parent"</sup><sub>android:layout_width="match_parent"</sub> ImageView @+id/btnSuaLoaiSach android:layout_width="36dp"

android:layout_height="36dp" ImageView @+id/ android:layout_width="36dp"

</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">

ImageView @+id/btnXoaNXB android:layout_width="36dp" android:layout_height="36dp" FloatingAction

Button <sup>@+id/ThemNXB</sup> <sup>android:layout_width=" wrap_content"</sup><sub>android:layout_height="wrap_content"</sub>

<b>4.1.2.5 Màn hình quản lý Tác giả (fragment_tac_gia)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45">

Button <sup>@+id/ThemTG</sup> <sup>android:layout_width=" wrap_content"</sup><sub>android:layout_height="wrap_content"</sub>

<b>4.1.2.6 Màn hình quản lý Nhà xuất bản (fragment_nxb)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 46</span><div class="page_container" data-page="46">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 49</span><div class="page_container" data-page="49">

<b>4.1.2.8 Màn hình quản lý User (fragment_user)</b>

<b> GIAO DIỆN</b>

</div><span class="text_page_counter">Trang 50</span><div class="page_container" data-page="50">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">

frameLayoutThongKe <sup>android:layout_width="match_parent"</sup><sub>android:layout_width="match_parent"</sub> BottomNavigat @+id/naviga android:layout_width="match_parent"

</div><span class="text_page_counter">Trang 54</span><div class="page_container" data-page="54">

<b> ĐẶT TÊN CÁC ĐIỀU KHIỂN</b>

</div><span class="text_page_counter">Trang 55</span><div class="page_container" data-page="55">

Button @+id/btnLogin android:layout_width="150dp"

</div><span class="text_page_counter">Trang 56</span><div class="page_container" data-page="56">

<small>String table_PhieuMuon=</small>

<small> </small><b><small>"create table PhieuMuon (" </small></b><small>+</small>

<small> </small><b><small>"id_phieumuon INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " </small></b><small>+</small>

<small> </small><b><small>"id_user INTEGER NOT NULL, " </small></b><small>+ </small><b><small>"id_tv INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "id_sach INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "ngay_thu INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "thang_thu INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "nam_thu INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "trang_thai INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "ngay_tra TEXT)"; </small></b>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"PhieuMuon"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"PhieuMuon"</small></b><small>, values, </small><b><small>"id_phieumuon=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maPhieuMuon</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"PhieuMuon"</small></b><small>, </small><b><small>"id_phieumuon=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maPhieuMuon</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>PhieuMuon </small></b><small>WHERE </small><b><small>id_phieumuon=?" , new</small></b><small>String[]{ obj.</small><b><small>maPhieuMuon</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>PhieuMuon"</small></b><small>);</small>

<b>4.2.2.2 Bảng Sach</b>

<b> MÃ L NH T O B NGỆẠẢ</b>

<small>String table_Sach=</small>

<small> </small><b><small>"create table Sach (" </small></b><small>+</small>

<b><small>"id_sach INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " </small></b><small>+</small>

<b><small>"ten_sach TEXT NOT NULL, " </small></b><small>+</small>

</div><span class="text_page_counter">Trang 57</span><div class="page_container" data-page="57">

<small> </small><b><small>"id_TG INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "id_NXB INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "id_loai INTEGER NOT NULL, " </small></b><small>+</small>

<b><small> "gia_thue REAL NOT NULL)"</small></b><small>;db.execSQL(table_Sach);</small>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"Sach"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"Sach"</small></b><small>, values, </small><b><small>"id_sach=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maSach</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"Sach"</small></b><small>, </small><b><small>"id_sach=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maSach</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>Sach </small></b><small>WHERE </small><b><small>id_sach=?" , new</small></b><small>String[]</small>

<small> </small><b><small>"create table Sach (" </small></b><small>+</small>

<b><small>"id_loai INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " </small></b><small>+</small>

<b><small>"ten_loai TEXT NOT NULL)";</small></b>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"LoaiSach"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"LoaiSach"</small></b><small>, values, </small><b><small>"id_loai=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maLoaiSach</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"LoaiSach"</small></b><small>, </small><b><small>"id_sach=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maLoaiSach</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>LoaiSach </small></b><small>WHERE </small><b><small>id_loai=?" , new</small></b><small>String[]{</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>LoaiSach"</small></b><small>);</small>

</div><span class="text_page_counter">Trang 58</span><div class="page_container" data-page="58">

<b>4.2.2.4 Bảng TacGia</b>

<b> MÃ L NH T O B NGỆẠẢ</b>

<small>String table_TacGia=</small>

<small> </small><b><small>"create table TacGia (" </small></b><small>+</small>

<b><small>"id_TG INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "</small></b>

<b><small>"ten_TG TEXT NOT NULL)";</small></b>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"TacGia"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"TacGia"</small></b><small>, values, </small><b><small>"id_TG=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maTG</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"TacGia"</small></b><small>, </small><b><small>"id_TG=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maTG</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>TacGia </small></b><small>WHERE </small><b><small>id_TG=?" , new</small></b><small>String[]</small>

<b><small>db</small></b><small>.insert(</small><b><small>"NXB"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"NXB"</small></b><small>, values, </small><b><small>"id_nxb=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maNXB</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"NXB"</small></b><small>, </small><b><small>"id_nxb=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maNXB</small></b><small>});</small>

</div><span class="text_page_counter">Trang 59</span><div class="page_container" data-page="59">

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>NXB </small></b><small>WHERE </small><b><small>id_nxb=?" , new</small></b><small>String[]</small>

<small> </small><b><small>"create table ThanhVien (" </small></b><small>+</small>

<b><small>"id_tv INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " </small></b>

<b><small>"ten_tv TEXT NOT NULL, " </small></b><small>+</small>

<b><small>"ngay_sinh TEXT NOT NULL, " </small></b><small>+</small>

<b><small>"dia_chi TEXT NOT NULL)";</small></b>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"ThanhVien"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"ThanhVien"</small></b><small>, values, </small><b><small>"id_tv=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maTV</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"ThanhVien"</small></b><small>, </small><b><small>"id_tv=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maTV</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>ThanhVien </small></b><small>WHERE </small><b><small>id_tv=?" , new</small></b><small>String[]{</small>

<small> </small><b><small>"create table User (" </small></b><small>+</small>

<b><small>"id_user INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," </small></b><small>+</small>

<b><small>"ten_user TEXT, " </small></b><small>+</small>

</div><span class="text_page_counter">Trang 60</span><div class="page_container" data-page="60">

<b><small>"email TEXT, " </small></b><small>+</small>

<b><small>"avatar INTEGER, " </small></b><small>+</small>

<b><small>"user_name TEXT NOT NULL, " </small></b><small>+</small>

<b><small>"password TEXT NOT NULL)" </small></b><small>;db.execSQL(table_User);</small>

<b><small> CÂU L NH SQL C B NỆƠ Ả</small></b>

<b><small>db</small></b><small>.insert(</small><b><small>"User"</small></b><small>, </small><b><small>null</small></b><small>, values);</small>

<b><small>db</small></b><small>.update(</small><b><small>"User"</small></b><small>, values, </small><b><small>"id_user=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maUser</small></b><small>});</small>

<b><small>db</small></b><small>.delete(</small><b><small>"User"</small></b><small>, </small><b><small>"id_user=?"</small></b><small>, </small><b><small>new </small></b><small>String[]{obj.</small><b><small>maUser</small></b><small>});</small>

<b><small>db</small></b><small>.execSQL(</small><b><small>"</small></b><small>SELECT * FROM </small><b><small>User </small></b><small>WHERE </small><b><small>id_user=?" , new</small></b><small>String[]</small>

o SQLiteOpenHelper là lớp tiện ích hỗ trợ lập trình Android với SQLite. Khi kế thừ Lớp này cần ghi đè 2 phương thức được mô tả trong phần hướng dẫn sử dụng sau đây.

<b> HƯỚNG D N S D NGẪỬ Ụ</b>

o onCreate (SQLiteDatabase db): chứa các lệnh tạo table (có thể chèn dữ liệu test).

o onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion): chứa các lệnh xoá table và gọi lại onCreate khi nâng version.

<b>4.3.2 MODEL CLASS VÀ DAO</b>

<b>4.3.2.1 PhieuMuon và PhieuMuonDAO</b>

<b> SƠ ĐỒ</b>

</div><span class="text_page_counter">Trang 61</span><div class="page_container" data-page="61">

<b> DI N GI IỄẢ</b>

<b>THÀNH PH NẦMÔ TẢ</b>

PhieuMuon Là lớp thực thể mô tả dữ liệu phiếu mượn

PhieuMuonDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với

Sach Là lớp thực thể mô tả dữ liệu sách

SachDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng Sach

</div><span class="text_page_counter">Trang 62</span><div class="page_container" data-page="62">

<b>4.3.2.3 LoaiSach & LoaiSachDAO</b>

<b> SƠ ĐỒ</b>

<b> DI N GI IỄẢ</b>

<b>THÀNH PH NẦMƠ TẢ</b>

LoaiSach Là lớp thực thể mơ tả dữ liệu thể loại sách

LoaiSachDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với

LoaiSach Là lớp thực thể mô tả dữ liệu thể loại sách

LoaiSachDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng LoaiSach

</div><span class="text_page_counter">Trang 63</span><div class="page_container" data-page="63">

ThanhVien Là lớp thực thể mô tả dữ liệu thành viên

ThanhVienDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với

</div><span class="text_page_counter">Trang 64</span><div class="page_container" data-page="64">

User Là lớp thực thể mô tả dữ liệu user

UserDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với

</div><span class="text_page_counter">Trang 65</span><div class="page_container" data-page="65">

3 SachMau () Nếu sách khơng có dữ liệu thì thêm dữ liệu mẫu 4 ThanhVienMau () Nếu thành viên sách khơng có dữ liệu thì thêm dữ

setOnClicklistener <sup>Hiện dialog thêm phiếu mượn</sup>

2 xoa.onClicklistener Hiện dialog xác nhận xóa phiếu mượn 3 sua.onClicklistener Hiện dialog sửa phiếu mượn

4 search.setOnQueryTex

tListener <sup>Tìm kiếm phiếu mượn theo mã</sup>

<b>4.4.3.3 FragmentLoaiSach</b>

<b>TT METHOD/EVENTMƠ TẢ</b>

</div>

×