Mỗi chức năng cần mô tả những vấn đề sau: Chức năng quản lý Loại Giầy được sử dụng để quản lý thông tin loại giầy.. Yêu cầu của chức năng này là liệt kê danh sách loại giầy, xem thông ti
Giới thiệu TBSD_SNEAKER
Cửa Hàng Giầy Sneaker có tên là TBDS_SNEAKER là một cửa hàng nhỏ, chuyên về các loại giầy phục vụ cho các bạn trẻ như: “NIKE”, “FAKE”,
Việc quản lý hiện đang được quản lý trên sổ sách bằng tay.
Công việc hiện tại đã gây khó khan cho cửa hàng, tốn thời gian ghi chép, và sai sót cho nhiều thông kê.
Yêu cầu của TBSD_SNEAKER
TBSD_SNEAKER cần phát triển một ứng dụng di động nhằm hỗ trợ chủ shop trong việc quản lý hiệu quả hơn, với các tính năng đáp ứng nhu cầu quản lý kinh doanh.
+ Quản lý khách hàng Thống kê:
+ Thống kê Top10 sản phẩm mua nhiều nhất.
+ Thống kê doanh thu theo thời gian tuỳ chọn (từ ngày – đến ngày).
+ Muốn truy cập vào ứng dụng, nhân viên và admin phải đăng nhập.
+ Nhân viên và admin có quyền thay đổi mật khẩu.
+ Admin có quyền quản lý nhân viên
+ Ứng dụng cài đặt trên điện thoại chạy hệ điều hành Android.
+ Hệ quản trị CSDL: SQLite.
Lập kế hoạch dự án
Lập kế hoạch kế hoạch dự án theo mẫu sau
TT H ẠNG MỤC B ẮT ĐẦU K ẾT THÚC K ẾT QUẢ
1 Phân tích yêu cầu khách hàng
1.1 Vẽ sơ đồ use cases
2.1 Thiết kế mô hình công nghệ
4.1 Xây dựng kịch bảng kiểm thử
2 PHÂN TÍCH YÊU CẦU KHÁCH HÀNG
Tiến hành phân tích yêu cầu khách hàng theo các bước sau đây
Sơ đồ Use Case
Thông Kê Doanh Thu
Yêu cầu của chức năng này là thống kê doanh thu mà cửa hàng bán được thông qua ứng dụng trong 1 khoảng thời gian chỉ định
Thông tin của thống kê gồm: Ngày bắt đầu, Ngày kết thúc, Tổng doanh thu từ ngày bắt đầu đến ngày kết thúc
Sau khi đăng nhập thì tất cả người dùng có thể sử dụng chức năng này.
Thông Kê Top
Chức năng Thống Kê TOP được sử dụng để thống kê TOP10 sản phẩm được mua nhiều nhất.
Thông tin của thống kê gồm: tên sản phẩm, số lượng mua.
Sau khi đăng nhập thì tất cả người dùng có thể sử dụng chức năng này.
Chức năng quản lý Khách Hàng giúp tổ chức và quản lý thông tin khách hàng một cách hiệu quả Nó bao gồm các yêu cầu như liệt kê danh sách khách hàng, xem thông tin chi tiết từng khách, thêm mới khách hàng, cập nhật thông tin hiện có, và xóa khách hàng không còn tồn tại.
Thông tin của Khách Hàng gồm: mã khách hàng, tên khách hàng, địa chỉ, sđt.
Sau khi đăng nhập thì tất cả người dùng có thể sử dụng chức năng này.
Sơ đồ triển khai và yêu cầu hệ thống
Sơ đồ triển khai
Đưa ra mô hình triển khai của ứng dụng trong thực tế
Yêu cầu hệ thống
Liệt kê các phần cứng, phần mềm cần thiết để hệ thống thực hiện được
+ Tất cả mọi nhân viên phải đăng nhập mới sử dụng được phần mềm.
+ Admin được thực hiện tất cả các chức năng.
+ Nhân viên không được thực hiện quản lý nhân viên của tiệm.
+ Ứng dụng phải được thực hiện trên Adroid.
+ Hệ quản trị CSDL: SQLite
Dựa vào tài liệu đã phân tích ở mục 2 để phác thảo: o Mô hình công nghệ o Giao diện o Thực thể
Mô hình công nghệ ứng dụng
Phác thảo mô hình công nghệ ứng dụng của hệ thống phần mềm Giải thích rõ các thành phần trong mô hình
Thực thể
Sơ đồ quan hệ thực thể (ERD)
Vẽ sơ đồ thể hiện mối quan hệ giữa các thực thể Nên chia thành 2 mức
(tổng quát và chi tiết) để dễ đọc, dễ hiểu.
Chi tiết thực thể
Thiết kế chi tiết thực thể đề cập đến việc xác định và thiết kế các thuộc tính cần thiết cho từng thực thể, dựa trên thông tin từ phần dữ liệu liên quan trong tài liệu yêu cầu phần mềm (SRS).
MaLoaiGiay INT Mã Loại Giầy
TenLoaiGiay String Tên Loại Giầy
MaLoaiGiay INT Mã Loại Giầy
GiaMua String Giá Mua Giầy
MoTa String Mô Tả Giầy
MaNV INT Mã Nhân Viên
UserName String Tên Đăng Nhập
HoTen String Họ Tên Nhân Viên
MatKhau String Mật khẩu Nhân Viên
SDT INT Số Điện Thoại Nhân Viên
DiaChi String Địa Chỉ Nhân Viên
MaHD INT Mã Hóa Đơn
MaNV INT Mã Nhân Viên
DiaChi String Địa Chỉ Đặt Hàng
Gía INT Tổng Gía Hóa Đơn
TrangThai INT Thanh Toán và Chưa Thanh Toán
MaKH INT Mã Khách Hàng
HoTen String Họ Tên Khách Hàng
SĐT String Số điện thoại
Giao diện
Sơ đồ tổ chức giao diện
Phác thảo sơ đồ liên kết giữa các giao diện chức năng trong ứng dụng
Giao diện MÀN HÌNH CHÍNH
Phác thảo giao diện cho màn hình chính và mô tả các hoạt động trên giao diện
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 Navigation Drawer Vuốt từ trái/
Click Menu icon Show Navigation Drawer
3 [nav_LoaiGiay] Click Chuyển Fragment_LoaiGiay
4 [nav_Giay] Click Chuyển Fragment_Giay
5 [nav_NhanVien] Click Chuyển Fragment_Người Dùng
6 [nav_ThongKe] Click Chuyển Fragment_ThongKe
7 [nav_HoaDon] Click Chuyển Fragment_HoaDon
8 [nav_doanhThu] Click Chuyển Fragment_DoangThu
9 BottomNavigation Click Chuyển Fragment Tương Ứng
Giao diện quản lý
Phác thảo giao diện cho tất cả các cửa sổ chức năng và các cửa sổ hỗ trợ tổ chức
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 Lv Click Chỉnh Sửa Hóa Đơn
3 Btt_nav Click Chuyển Fragment
3.3.3.2 Màn hình quản lý Loại Sản Phẩm
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN _ THEM C LICK T HÊM LOẠI MỚI
2 IMGDELETE CLICK X ÓA LOẠI CẦN XÓA
3 LV N HẤN G IỮ C HỈNH S ỦA L OẠI
4 btt_nav Click Chuyển Fragment
3.3.3.3 Màn hình quản lý Sản Phẩm
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN _ THEM C LICK T HÊM MỚI
2 IMGDELETE CLICK X ÓA CẦN XÓA
3 LV N HẤN G IỮ C HỈNH S ỦA
4 btt_nav Click Chuyển Fragment
3.3.3.4 Màn hình quản lý Nhân Viên
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN _ THEM C LICK T HÊM MỚI
2 IMGDELETE CLICK X ÓA CẦN XÓA
3 LV N HẤN G IỮ C HỈNH S ỦA
3.3.3.5 Màn hình thống kê Doanh Thu
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN _ DAU CLICK HIỆN RA THỜI MỐC ĐẦU ĐỂ THỐNG KÊ
2 BTN _ DUOI CLICK HIỆN RA THỜI GIAN C UỐI ĐỂ T HỐNG K Ê
3 BTN D OANH T HU C LICK T HỐNG K Ê RA T ỔNG D OANH T HU
3.3.3.6 Màn hình Quản Lý Khách Hàng
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN_XOA CLICK X ÓA CẦN XÓA
3 BTT _ NAV CLICK CHUYỂN FRAGMENT
4 LV NHẤN GIỮ CHỈNH SỬA
Các giao diện hỗ trợ khác
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
K HI VÀO ỨNG DỤNG SẼ CHUYỂN SANG MÀN HÌNH TIẾP THEO TRONG VÀI GIÂY
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 ED _ TK NHẬP TÊN ĐĂNG NHẬP S Ử D ỤNG C HO ỨNG DỤNG
2 ED _ MK NHẬP MẬT KHẨU S Ử D ỤNG C HO ỨNG DỤNG
CLICK KHI NHẬP THÔNG TIN BÊN TRÊN SẼ KIỂM TRA ĐỂ VÀO ỨNG DỤNG
3.3.4.3 Màn hình đổi mật khẩu
TT @ID S Ự KIỆN M Ô TẢ HOẠT ĐỘNG
1 BTN _ LUU CLCIK KHI NHẬP THÔNG TIN ĐÃ YÊU CẦU BÊN TRÊN SẼ ĐỔI
MẬT KHẨU CHO NGƯỜI DÙNG
2 BTN _ HUY CLICK SẼ HỦY THAO TÁC THAY ĐỔI MẬT KHẨU NGƯỜI DÙNG
Tạo giao diện
Màn hình chính (MainActivity)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
D RAWER L AYOUT DRAWER _ LAYOUT LAYOUT _ WIDTH =" MATCH _ PARENT "
C ONSTRAINT L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
F RAME L AYOUT FL C ONTENT LAYOUT _ WIDTH =" MATCH _ PARENT "
N AVIGATION V IEW NV V IEW MENU ="@ MENU / DRAWER _ VIEW "
HEADER L AYOUT ="@ LAYOUT / NAV _ HEADER "
B OTTOM N AVIGATION V IEW BTT _ NAV MENU ="@ MENU / MENU _ BOTTOM ” "
Các màn hình quản lý
4.1.2.1 Màn hình Hóa Đơn(fragment_hoadon)
Giao diện Đ ẶT TÊN CÁC ĐIỀU KHIỂN
VIEW ID C ÁC THUỘC TÍNH
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
F LOATING A CTION B UTTON FAB ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
4.1.2.2 Màn hình quản lý Loại Giày(fragment_loai_giay)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
F LOATING A CTION B UTTON FAB ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
4.1.2.3 Màn hình quản lý Giày (fragment_giay)
Giao diện Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
B OTTOM N AVIGATION V IEW BTT _ NAV MENU ="@ MENU / MENU _ BOTTOM ” "
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
4.1.2.4 Màn hình quản lý Khách
Giao diện Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
F LOATING A CTION B UTTON FAB ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
Màn hình thống kê top 10 (fragment_top)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
L IST V IEW ANDROID : ID ="@+ ID / LV T OP " ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
Màn hình thống kê doanh thu (fragment_doanh_thu)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
L INEAR L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT " ANDROID : ORIENTATION =" VERTICAL "
L INEAR L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
B UTTON ANDROID : ID ="@+ ID / BTN D OANH T HU
ANDROID : ID ="@+ ID / BTN D EN N GAY "
ANDROID : ID ="@+ ID / BTN T U N GAY "
ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
E DIT T EXT ANDROID : ID ="@+ ID / ED D EN N GAY "
ANDROID : ID ="@+ ID / ED T U N GAY "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
T EXT V IEW ANDROID : ID ="@+ ID / TV D OANH T HU " ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
Các giao diện hỗ trợ khác
4.1.5.1 Màn hình chào (activity_splash_screen)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
F RAME L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
I MAGE V IEW ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
4.1.5.2 Màn hình đăng nhập (activity_login)
Giao diện Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
L INEAR L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
I MAGE V IEW ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
E DIT T EXT ED U SER N AME
ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
C HECK B OX CHK R EMEMBER P ASS
ANDROID:LAYOUT_WIDTH="MATCH_PARENT" ANDROID:LAYOUT_HEIGHT="MATCH_PARENT"
B UTTON BTN L OGIN ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
4.1.5.3 Màn hình Nhân Viên (fragment_nhanvien)
Giao diện Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
L INEAR L AYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
LISTVIEW LVNHANVIEN ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT "
ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
4.1.5.4 Màn hình đổi mật khẩu (fragment_change_pass)
G IAO DIỆN Đ ẶT ID CÁC VIEW
VIEW ID C ÁC THUỘC TÍNH
L INEARLAYOUT ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" MATCH _ PARENT " ANDROID : ORIENTATION =" VERTICAL "
IMAGE ANDROID : ID ="@+ ID / IMAGE V IEW " ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ GRAVITY =" CENTER | TOP "
T EXT I NPUT E DIT T EXT ANDROID : ID ="@+ ID / ED P ASS N EW "
ANDROID : LAYOUT _ WIDTH =" MATCH _ PARENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT "
ANDROID : ID ="@+ ID / ED P ASS O LD " ANDROID : INPUT T YPE =" TEXT P ASSWORD "
B UTTON ANDROID : ID ="@+ ID / BTN C ANEL "
ANDROID : ID ="@+ ID / BTN S AVE "
ANDROID : LAYOUT _ WIDTH =" WRAP _ CONTENT "
ANDROID : LAYOUT _ HEIGHT =" WRAP _ CONTENT " ANDROID : LAYOUT _ WEIGHT ="1"
Tạo CSDL với SQLITE
Sơ đồ quan hệ
Hình: Sơ đồ quan hệ
Ràng buộc: Mô tả ràng buộc của các quan hệ
Chi tiết các bảng
Mỗi bảng cần viết theo hướng dẫn sau đây:
T ÊN CỘT K IỂU DỮ LIỆU R ÀNG BUỘC M Ô TẢ
Bảng dữ liệu nhân viên bao gồm các trường: Mã Nhân Viên (MaNV INT PK), Tên Nhân Viên (tenNV TEXT NOT NULL), Số Điện Thoại (sdtNV INT NOT NULL), Tên Đăng Nhập (name TEXT NOT NULL) và Mật Khẩu (matKhau TEXT NOT NULL).
"matKhau TEXT NOT NULL)"; db.execSQL(createTableNhanVien);
Basic SQL commands include inserting a new employee record with `db.insert("NhanVien", null, values);`, updating an existing employee's information using `db.update("NhanVien", values, "maNV=?", new String[]{obj.maNV});`, and deleting a record with `db.delete("NhanVien", "maNV=?", new String[]{id});` Additionally, you can retrieve specific employee details with `db.execSQL("SELECT * FROM NhanVien WHERE maNV=?", new String[]{obj.maNV});` or fetch all employee records using `db.execSQL("SELECT * FROM NhanVien");`.
Cột dữ liệu "maKH" là mã khách hàng, "tenKH" chứa tên khách hàng, "sdtKH" lưu trữ số điện thoại khách hàng, và "diaChi" ghi nhận địa chỉ khách hàng Tất cả các trường này đều không cho phép giá trị null, đảm bảo tính đầy đủ và chính xác của thông tin khách hàng.
"diaChi TEXT NOT NULL ) "; db.execSQL(createTableKhachHang);
Basic SQL commands include inserting a new customer with `db.insert("KhachHang", null, values)`, updating customer information using `db.update("KhachHang", values, "maKH=?", new String[]{obj.maKH})`, and deleting a customer record with `db.delete("KhachHang", "maKH=?", new String[]{id})` Additionally, you can retrieve specific customer details with `db.execSQL("SELECT * FROM KhachHang WHERE maKH=?", new String[]{obj.maKH})` or fetch all customer records using `db.execSQL("SELECT * FROM KhachHang")`.
T ÊN CỘT K IỂU DỮ LIỆU R ÀNG BUỘC M Ô TẢ maLoaiGiay INT PK Mã Loại Giày tenLoaiGiay TEXT NOT NULL Tên Loại Giày
"tenLoaiGiay TEXT NOT NULL)" ; db.execSQL(createTableLoaiGiay);
Basic SQL commands include inserting a new record into the "LoaiGiay" table with `db.insert("LoaiGiay", null, values);`, updating an existing record using `db.update("LoaiGiay", values, "maLoaiGiay=?", new String[]{obj.maLoaiGiay});`, and deleting a record with `db.delete("LoaiGiay", "maLoaiGiay=?", new String[]{id});` Additionally, you can retrieve data from the "LoaiGiay" table using `db.execSQL("SELECT * FROM LoaiGiay WHERE maLoaiGiay=?", new String[]{});`.
{obj.maLoaiGiay}); db.execSQL(“ SELECT * FROM LoaiGiay”);
Cột kiểu dữ liệu ràng buộc cho bảng giày bao gồm các trường như mã giày (INT PK), tên giày (tenGiay TEXT NOT NULL), giá mua giày (giaMua INT NOT NULL), mô tả giày (moTa TEXT NOT NULL), số lượng trong kho (soLuong TEXT NOT NULL) và mã loại giày (maLoaiGiay INT FK).
LoaiGiay(maLoaiGiay))"; db.execSQL(createTableGiay);
Basic SQL commands include inserting data with `db.insert("Giay", null, values);`, updating records using `db.update("Giay", values, "maGiay=?", new String[]{obj.mGiay});`, and deleting entries with `db.delete("Giay", "maGiay=?", new String[]{id});` Additionally, you can retrieve specific records with `db.execSQL("SELECT * FROM Giay WHERE maGiay=?", new String[]{obj.maGiay});` or fetch all records using `db.execSQL("SELECT * FROM Giay");`.
Trong cơ sở dữ liệu, bảng chứa các thông tin quan trọng liên quan đến hóa đơn mua hàng Các cột bao gồm: maHD (Mã Hóa Đơn), maNV (Mã Nhân Viên), maKH (Mã Khách Hàng), maGiay (Mã Giày), ngayMua (Ngày Mua), trangThai (Trạng Thái), và giaMua (Giá Mua) Trong đó, maHD là khóa chính, còn các mã nhân viên, khách hàng và giày là khóa ngoại Ngày Mua là kiểu dữ liệu DATE không cho phép giá trị NULL, và Trạng Thái cùng Giá Mua là các trường bắt buộc với kiểu dữ liệu INT.
"maGiay INTEGER REFERENCES Giay(maGiay),
"giaMua INTEGER NOT NULL)"; db.execSQL(createTableHoaDon);
Basic SQL commands include inserting data into a table with `db.insert("HoaDon", null, values);`, updating existing records using `db.update("HoaDon", values, "maHD=?", new String[]{obj.maHD});`, and deleting entries with `db.delete("HoaDon", "maHD=?", new String[]{id});` Additionally, retrieving specific records can be done using `db.execSQL("SELECT * FROM HoaDon WHERE maHD=?", new String[]{obj.maHD});` or fetching all entries with `db.execSQL("SELECT * FROM HoaDon");`.
Lập trình CSDL (SQLite+Model+DAO)
SQLite
Hướng dẫn sử dụng các phương thức tiện ích của SQLiteOpenHelper
Code DbHelper kế thừa SQLiteOpenHelper
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.
onCreate(SQLiteDatabase db): chứa các lệnh tạo table (có thể chèn dữ liệu test)
onUpgrade(SQLiteDatabase db, int i, int i1): chứa các lệnh xoá table và gọi lại onCreate khi nâng version
PUBLIC VOID ON C REATE (SQL ITE D ATABASE DB ) {
"maNV INTEGER PRIMARY KEY AUTOINCREMENT, " +
"matKhau TEXT NOT NULL)"; db.execSQL(createTableNhanVien);
"maKH INTEGER PRIMARY KEY AUTOINCREMENT, " +
"diaChi TEXT NOT NULL ) "; db.execSQL(createTableKhachHang);
"tenLoaiGiay TEXT NOT NULL)" ; db.execSQL(createTableLoaiGiay);
"maGiay INTEGER PRIMARY KEY AUTOINCREMENT, " +
LoaiGiay(maLoaiGiay))"; db.execSQL(createTableGiay);
"maHD INTEGER PRIMARY KEY AUTOINCREMENT, " +
"maNV INTEGER REFERENCES NhanVien(maNV), " +
"maKH INTEGER REFERENCES KhachHang(maKH), "+
"maGiay INTEGER REFERENCES Giay(maGiay), "+
"giaMua INTEGER NOT NULL)"; db.execSQL(createTableHoaDon);
PUBLIC VOID ON U PGRADE (SQL ITE D ATABASE DB , INT OLD V ERSION , INT
S TRING DROP T ABLE N HAN V IEN = " DROP TABLE IF EXISTS N HAN V IEN ";
DB EXEC SQL( DROP T ABLE N HAN V IEN );
S TRING DROP T ABLE K HACH H ANH = " DROP TABLE IF EXISTS K HACH H ANH ";
DB EXEC SQL( DROP T ABLE K HACH H ANH );
S TRING DROP T ABLE L OAI G IAY = " DROP TABLE IF EXISTS L OAI G IAY ";
DB EXEC SQL( DROP T ABLE L OAI G IAY );
S TRING DROP T ABLE G IAY = " DROP TABLE IF EXISTS G IAY ";
DB EXEC SQL( DROP T ABLE G IAY );
S TRING DROP T ABLE H OA D ON = " DROP TABLE IF EXISTS H OA D ON ";
DB EXEC SQL( DROP T ABLE H OA D ON );
Model Class và DAO
Mỗi mục cần làm rõ 2 vấn đề sau o Mô hình và mô tả lớp thực thể o Mô hình và mô tả lớp DAO
NhanVien Là lớp thực thể mô tả dữ liệu Nhân Viên
Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng Nhân Viên
KhachHang Là lớp thực thể mô tả dữ liệu KhachHang
Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng KhachHang
LoaiGiay Là lớp thực thể mô tả dữ liệu LoaiGiay
LoaiGiayDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng
Giay Là lớp thực thể mô tả dữ liệu Giay
GiayDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng
HoaDon Là lớp thực thể mô tả dữ liệu HoaDon
HoaDonDAO Là lớp DAO cụ thể hóa các hoạt động truy xuất CSDL với bảng
Lập trình chức năng
Màn hình chính (MainActivity)
TT P HƯƠNG THỨC / SỰ KIỆN M Ô TẢ
2 setSupportActionBar() Sử dụng toolbar setOnNavigationItemSelectedListener() Điều hướng BottomNavigation
Các giao diện hỗ trợ
1 Handler().postDelayed() Chuyển Activity trong thời gian chỉ định
4.4.2.2 Màn hình đăng nhập (LoginActivity)
1 checkLogin() Kiểm Tra Điều Kiện Để Đăng Nhập
2 SharedPreferences Lưu trữ và truy xuât dữ liệu
4.4.2.3 Màn hình đổi mật khẩu (ChangePassFragment)
1 validate() Kiểm Tra Điều Kiện Thông Tin Nhập
2 SharedPreferences Lưu trữ và truy xuât dữ liệu
4.4.2.4 Màn hình Nhân Viên (NhanVienFragment)
1 validate() Kiểm Tra Điều Kiện
3 capNhatLv() GetAll() và cập nhật dữ liệu lên ListView
Các màn hình quản lý
1 validate() Kiểm Tra Điều Kiện
3 capNhatLv() GetAll() và cập nhật dữ liệu lên ListView
1 validate() Kiểm Tra Điều Kiện
3 capNhatLv() GetAll() và cập nhật dữ liệu lên ListView
1 validate() Kiểm Tra Điều Kiện
3 capNhatLv() GetAll() và cập nhật dữ liệu lên ListView
4 OnDateSetListener Kiểu Định Dạng Cho Thời Gian
MÀN HÌNH THỐNG KÊ
1 setAdapter Hiện Thị Dự Liệu
1 DatePickerDialog Lấy Thời Gian Và Định Dạng
2 setOnClickListener Tạo Sự Kiện Khi Click
5 KIỂM THỬ PHẦN MỀM VÀ SỬA LỖI
LoginActivity
M Ô TẢ TÌNH HUỐNG D Ữ LIỆU MẪU K ẾT QUẢ TRÔNG ĐỢI F IX
1 Đăng nhập Bỏ Trống Yêu cầu nhập ok
2 Đăng nhập sai tên Teo, admin Sai tên đăng nhập ok
3 Đăng nhập sai mật khẩu admin, 123 Sai mật khẩu ok
4 Đăng nhập đúng admin, admin Longin thành công ok
NhanVienFragment
H M Ô TẢ TÌNH HUỐNG D Ữ LIỆU MẪU K ẾT QUẢ TRÔNG ĐỢI F IX
1 Thêm Người Dùng Bỏ Trống Bạn phải nhập đầy đủ thông tin
2 Thêm Người Dùng Nhập Đầy Đủ bạn thêm thành công Ok
3 Sửa Người Dùng Nhập Đầy Đủ Bạn đã sửa thành công
4 Xóa Người Dùng Hiện thị hộp thoại xác nhận xóa Bạn đã xóa thành công Ok
M Ô TẢ TÌNH HUỐNG D Ữ LIỆU MẪU K ẾT QUẢ TRÔNG ĐỢI F IX
1 Thay đổi mật khẩu Bỏ Trống Bạn phải nhập đầy đủ thông tin Ok
2 Nhập sai mật khẩu cũ Pass cũ không đúng Mật khẩu cũ sai Ok
3 Nhập sai mật khẩu mới Mật khẩu mới không đúng Mật khẩu mới không trùng khớp
4 Thay đổi mật khẩu Thông tin đầy đủ và chính xác
Mật khẩu thay đổi thành công ok
6 ĐÓNG GÓI VÀ TRIỂN KHAI
Sản phẩm phần mềm
1 TBDS_SNEAKER.apk File cài đặt
2 Readme.txt Hướng dẫn cài đặt
3 Guide.docx Hướng dẫn sử dụng
Hướng dẫn cài đặt
Bước 1: Download file về máy.
Bước 2: Nhấn vào file để cài đặt.
Bước 3: Mở file đã cài đặt và chạy.