Giới thiệu: Trên thế giới cũng như ở Việt Nam, công nghệ thông tin đã trở thành mộtcông nghệ mũi nhọn, nó là ngành khoa học kỹ thuật không thể thiếu trong việc áp dụng vào các hoạt động
Trang 1BÀI TẬP LỚN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
LỜI CẢM ƠN
Để hoàn thành bài báo cáo học phần Lập trình hướng đối tượng này trước tiên nhóm
em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Hoàng Anh (giảng viên phụ trách bộ môn Lập trình hướng đối tượng) - người đã tận tình hướng dẫn, giúp đỡ trong việc nâng cao kiến thức chuyên môn, phát huy cho chúng em tính tự học, tự tìm hiểu, từ đó hình thành cho chúng em phương pháp nghiên cứu, tìm tòi, tiếp cận với khoa học công nghệ Đồng thời trau dồi cho chúng em kỹ năng học tập năng động và sáng tạo Chúng em cũngxin gửi lời cảm ơn chân thành đến Khoa CNTT1 và Trường đã tạo điều kiện thuận lợi cho chúng em học tập và hoàn thành đề tài nghiên cứu này
Vì kiến thức còn hạn chế, trong quá trình tìm hiểu về đề tài này chúng em không thểtránh những sai sót Chúng em rất mong nhận được những nhận xét, đánh giá, đóng góp ýkiến từ thầy cô để rút ra kinh nghiệm từ bài báo cáo học phần này và chuẩn bị tốt cho những bài báo cáo học phần sau
Chúng em xin chân thành cảm ơn!
Hà Nội, ngày 23 tháng 11 năm 2022
Trang 2Mục lục
1 Danh sách thành viên nhóm và nhiệm vụ 4
2 Danh mục hình vẽ 5
3 Giới thiệu ứng dụng 6
a Giới thiệu 6
b Tổng quan ứng dụng 6
c Phát biểu bài toán 6
4 Phân tích đặc tả yêu cầu hệ thống 7
a Sơ đồ quan hệ thực thể 7
b Class diagram 8
c Sơ đồ chức năng hệ thống 9
d EER diagram 10
5 Mô tả chức năng hệ thống 10
a Quản lý sinh viên 10
b Quản lý phiếu mượn 10
c Quản lý sách 11
d Quản lý vi phạm 11
e Quản lý thống kê báo cáo 12
6 Các class được khai báo 12
7 Mô tả thuật toán thao tác 15
8 Cài đặt và triển khai 18
9 Các cập nhật và hạn chế 22
10 Kết luận 23
11 Tài liệu tham khảo 23
Trang 31 Danh sách thành viên nhóm và nhiệm vụ
Trang 4Danh mục hình vẽ
Hình 1: Sơ đồ thực thể quan hệ 7
Hình 2: Class diagram 8
Hình 3: Sơ đồ chức năng hệ thống 9
Hình 4: EER diagram 10
Hình 5: Giao diện đăng nhập ứng dụng 18
Hình 6: Màn hình chính ứng dụng 19
Hình 7: Giao diện quản lý thức uống 20
Hình 8: Giao diện quản lý nhân viên 21
Hình 9: Giao diện quản lý đặt bàn 21
Hình 10: Giao diện chức năng đặt bàn 22
Hình 11: Giao diện thống kê 22
Hình 12: Hoá đơn xuất ra 23
Trang 53 Giới thiệu ứng dụng:
a Giới thiệu:
Trên thế giới cũng như ở Việt Nam, công nghệ thông tin đã trở thành mộtcông nghệ mũi nhọn, nó là ngành khoa học kỹ thuật không thể thiếu trong việc áp dụng vào các hoạt động xã hội như: quản lý hệ thống thư viện sách, quán cà phê, kinh tế, thông tin, kinh doanh, và mọi hoạt động trong lĩnh vực nghiên cứu…
Ở nước ta hiện nay, việc áp dụng vi tính hóa trong quản lý tại các cơ quan,
xí nghiệp, tổ chức đang rất phổ biến và trở nên cấp thiết, bởi ngành nghề nào cũng đòi hỏi con người phải xử lý khối lượng công việc khổng lồ, và những kiến thức, những suy nghĩ, những đào tạo chuyên sâu Một vấn đề cấp thiết đặt ra trong quản lý là làm thế nào để chuẩn hóa cách xử lý dữ liệu ở trường học, chính
vì thế chúng em chọn đề tài “Phân tích thiết kế hệ thống quản lý quán cà phê”
b Tổng quan ứng dụng:
Quản lý quán cà phê là phần mềm được phát triển để ứng dụng công nghệ vào việc quản lý kinh doanh quán cafe Thông qua hệ thống phần mềm này, chủ cửa hàng dễ dàng thực hiện các nghiệp vụ tối ưu hóa quá trình vận hành cơ sở Ứng dụng gồm những tính năng chính như:
+ Nhân viên:
- Quản lí thức uống của cửa hàng
- Quản lí bàn, thông tin order, thông tin giao dịch, thông tin khách
- Thống kê và xuất hóa đơn
+ Admin:
- Quản lí thức uống của cửa hàng
- Quản lí bàn, thông tin order, thông tin giao dịch, thông tin khách
- Thống kê và xuất hóa đơn
- Quản lí nhân viên
Ứng dụng được viết bằng ngôn ngữ lập trình Java, sử dụng thư viện JavaSwing để thiết kế giao diện đồ họa người dùng (Graphical User Interface), sử dụng MySQL server để quản trị cơ sở dữ liệu
c Phát biểu bài toán:
Xây dựng phần mềm dựa trên các yêu cầu sau:
- Giao diện phải đẹp, thân thiện, dễ sử dụng
- Tốc độ xử lý phải nhanh, không để khách hàng chờ quá lâu
- Khi thay đổi chức năng và giao diện dễ dàng
Trang 6- Cập nhật đồ uống mới.
- Giúp khách hàng cảm thấy thoải mái và nhanh chóng khi đặt đồ uống vàthanh toán
- Cho biết bàn trống, số nguyên liệu còn lại trong kho
4 Phân tích đặc tả yêu cầu hệ thồng:
a Sơ đồ quan hệ thực thể:
Hình 1 Sơ đồ quan hệ thực thể
Trang 7b Class Diagram:
Hình 2 Class diagram
Trang 8c Sơ đồ chức năng hệ thống:
Hình 3 Sơ đồ chức năng hệ thống
Trang 9d EER diagram:
Hình 4 EER diagram
5 Mô tả chức năng hệ thống:
a Quản lý thức uống:
- Miêu tả: Quản lý đồ uống còn lại trong kho, cho phép tùy chỉnh các loại đồ
uống, bao gồm các tính năng thêm đồ uống, chỉnh sửa thông tin đồ uống nếu nhận thấy có sai sót, xóa đồ uống trong kho
- Đầu vào: Nhập từ bàn phím.
- Xử lý: Sau khi lấy thông tin từ người nhập, phần mềm sẽ truy xuất vào CSDL,
sau đó thực hiện các tác vụ tương ứng với người nhập yêu cầu: thêm, sửa, xóa CSDL
- Xuất: Thông tin toàn bộ kho của quán Cà phê sau khi cập nhật dữ liệu.
b Quản lý Nhân viên:
Trang 10- Miêu tả: Quản lý toàn bộ nhân viên của quán Cà phê, có các tính năng tùy
chỉnh như thêm nhân viên, sửa lại thông tin nhân viên, xóa nhân viên nếu nhân viên đó không còn trong sự quản lý của quán, đăng kí Tài khoản, Mật khẩu chonhân viên để có thể truy cập được vào phần mềm
- Đầu vào: Nhập từ bàn phím.
- Xử lý: Sau khi lấy thông tin từ người nhập, phần mềm sẽ truy xuất vào CSDL,
sau đó thực hiện các tác vụ tương ứng với người nhập yêu cầu: thêm, sửa, xóa CSDL
- Xuất: Thông tin cá nhân của toàn bộ nhân viên có trong của quán Cà phê (trừ
tài khoản mật khẩu của nhân viên) sau khi cập nhật dữ liệu
c Đặt bàn:
- Miêu tả: Quản lý, ghi chú thông tin đặt bàn của khách cho quán Cà phê, có các
chức năng tùy chỉnh như thêm thông tin đặt bàn trước, chỉnh sửa lại thông tin khách hàng đặt bàn, xóa thông tin đặt bàn nếu khách đã tới hoặc hủy đặt bàn trước khi tời thời gian đặt bàn
- Đầu vào: Nhập từ bàn phím.
- Xử lý: Sau khi lấy thông tin từ khách tới đặt bàn, người nhập sẽ nhập thông tin
đặt bàn của khách vào phần mềm, phần mềm sẽ truy xuất vào CSDL, sau đó thực hiện các tác vụ tương ứng với người nhập yêu cầu: thêm, sửa, xóa CSDL
- Xuất: Thông tin cá nhân, thời gian đặt bàn khách.
d Bán hàng:
- Miêu tả: Quản lý tình trạng bàn trong thời gian thực (Ví dụ như bàn đang
trống, bàn đã có người ngồi, bàn được đặt trước của khách, bàn đang thao tác tính tiền) Thực hiện các tác vụ gọi đồ uống, xác nhận đồ uống của bàn, tính tổng tiền đồ uống của bàn, tính tiền thừa cho khách, xuất hóa đơn đồ uống
- Đầu vào: CSDL các khách đặt bàn trước Lựa chọn trên màn hình bàn còn
người ngồi để thao tác lựa chọn đồ uống và xác nhận đồ uống Lựa chọn trên màn hình các bàn có người ngồi để tính tiền
- Xử lý: Sau khi lấy thông tin từ người nhập, phần mềm sẽ truy xuất vào CSDL,
sau đó thực hiện các tác vụ tương ứng với người nhập yêu cầu: thêm, sửa, xóa CSDL Dữ liệu này sẽ làm nền tảng để in ra hóa đơn sau khi khách trả tiền, xử
lý và lưu dữ liệu cho phần thống kê của quán cuối ngày hoặc cuối tháng, cuối năm
- Xuất: Thông tin đồ uống của từng bàn, số tiền khách phải trả, số tiền thừa
khách nhận lại, thông tin hóa đơn
Trang 11e Thống kê:
- Miêu tả: Quản lý hóa đơn, tổng thu nhập của quán sau mỗi ngày, mỗi tháng và
mỗi năm
- Đầu vào: CSDL của hóa đơn phần Bán hàng Lựa chọn tùy chỉnh hình thức
thống kê (theo ngày, theo tháng hay theo năm)
- Xử lý: Lấy thông tin lựa chọn tùy chỉnh hình thức thống kê của người nhập,
- Thuộc tính: int soBanDoc, int soBanNgang, int Button_Width, int
Button_Height, int distance
c Class DatbanFr:
- Thuộc tính: String server, String user, String password, String db, Integer port,
SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, String sql
- Phương thức:
+ Constructor: khởi tạo và trả về đối tượng của Class nó được định nghĩa
+ Load: Hiển thị thông tin khách hàng.
+ reset: Tải lại các thông tin hiển thị.
+ checkNull: Kiểm tra xem người nhập đã nhập đầy đủ thông tin khách hàng
chưa
+ checkThanhtoan: Kiểm tra thanh toán.
+ loadBan, loadHours, loadMinute: Hiển thị thông tin phần bàn, thời gian + addCustomer, editCustomer, btnDelActionPerformed: Chỉnh sửa khách đặt
bàn
+ check: Kiểm tra xem khách có trùng không.
+ btnHomeActionPerformed: Trờ về màn hình chính.
Trang 12+ tableDatbanMouseClicked: Lựa chọn khách hàng trên bảng dữ liệu để
chỉnh sửa
+ btnCancelActionPerformed: Hủy thao tác hiện thời.
d Class LoginFr:
- Thuộc tính: String server, String user, String password, String db, Integer port,
SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, String sql
- Phương thức:
+ Constructor: khởi tạo và trả về đối tượng của Class nó được định nghĩa.+ checkNull: Kiểm tra xem đã nhập đầy đủ thông tin tài khoản mật khẩu chưa
+ btnQLNuocActionPerformed: Lối vào giao diện quản lý đồ uống
+ btnQLNVActionPerformed: Lối vào giao diện quản lý nhân viên
+ btnBanhangActionPerformed: Lối vào giao diện bán hàng
+ btnDatbanActionPerformed: Lối vào giao diện đặt bàn
+ btnThongkeActionPerformed: Lối vào giao diện thống kê
+ btnAboutActionPerformed: Lối vào giao diện About
+ btnLogoutActionPerformed: Đăng xuất khỏi tài khoản
f Class ThongKeFr:
- Thuộc tính: String server, String user, String password, String db, Integer port, SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, boolean leapYear, boolean Year, boolean Month, boolean Day, String sql
- Phương thức:
+ load: Hiển thị toàn bộ dữ liệu thống kê thu nhập quán Cà phê
+ convertedToNumbers: chuyển tiền nhập từ String sang kiểu số nguyên.+ Refresh: Hiển thị lại dữ liệu
Trang 13+ checkOption: kiểm tra tùy chọn hiện thị (Xem theo ngày, theo tháng hay theo năm).
+ addDay: thêm lựa chọn xem theo ngày
+ FindDay, FindMonth, FindYear: tìm dữ liệu theo ngày, tháng, năm
+ getDay, getMonth, getYear: lấy dữ liệu theo ngày, tháng, năm
+ btnHomeActionPerformed: Trờ về màn hình chính.
g Class banhangFr:
- Thuộc tính: String server, String user, String password, String db, Integer port, SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, boolean leapYear, boolean Year, boolean Month, boolean Day, String sql, boolean Pay,
ImageIcon icon1, ImageIcon icon2, ImageIcon icon3
- Phương thức:
+ Constructor: khởi tạo và trả về đối tượng của Class nó được định nghĩa + getHours, getMinute: lấy ngày giờ từ String.
+ checkStatus: Kiểm tra tình trạng bàn theo ngày giờ.
+ taoBan, veBan: Hiển thị bàn trên giao diện.
+ checkBill: Kiểm tra hóa đơn.
+ loadLoainuoc: Hiển thị nước để người nhập lựa chọn.
+ Update: Hiển thị lại sau khi thêm nước.
+ deleteThongTinHoaDon, deleteHoaDon: xóa thông tin hóa đơn và thống
kê
+ loadData: Hiển thị tên thức uống mà bàn đó đã đặt.
+ checkTinhTrangban: Kiểm tra xem bàn đó còn trống hay đã có người
ngồi, người đặt bàn trước chưa
+ checkSoLuongHang: Kiểm tra còn hàng trong kho để bán cho khách
không
+ tinhTongTien: Tính tiền toàn bộ đồ uống của bàn đó.
+ luuThongKe: Sau khi thanh toán xong ta lưu lại dữ liệu doanh thu của
hóa đơn đó
+ addThucUong: Thêm thức uống.
+ addHoaDon: Thêm hóa đơn vào database.
+ btnHomeActionPerformed: Trờ về màn hình chính.
+ btnPrintActionPerformed: In hóa đơn.
+ tfTienNhanCuaKachKeyReleased: Tính tiền thừa khách nhận lại.
h Class qlnuocFr:
Trang 14- Thuộc tính: String server, String user, String password, String db, Integer port,
SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, String sql
- Phương thức:
+ Constructor: Khởi tạo và trả về đối tượng của Class nó được định nghĩa.
+ loadLoaiNuoc: Hiển thị lựa chọn các loại nước
+ loadData: Truy xuất dữ liệu đồ uống hiện có
+ reset: Hiển thị lại dữ liệu
+ checkNull: Kiểm tra xem đã nhập đầy đủ thông tin của đồ uống chưa.+ addDrink, editDrink, btnDelActionPerformed: Chỉnh sửa thông tin đồ uống
+ tableDrinkMouseClicked: Bảng đồ uống để lựa chọn chỉnh sửa
+ btnFindActionPerformed: Tìm thức uống theo tên hoặc theo mã
+ btnHomeActionPerformed: Trờ về màn hình chính.
i Class qlnvFr:
- Thuộc tính: String server, String user, String password, String db, Integer port,
SQLServerDataSource ds, Connection conn, PreparedStatement statement, Detail detail, ResultSet rs, boolean add, boolean change, String sql
- Phương thức:
+ Constructor: Khởi tạo và trả về đối tượng của Class nó được định nghĩa.+ loadData: Hiển thị dữ liệu thông tin nhân viên
+ reset: Hiển thị lại trạng thái
+ checkNull: Kiểm tra xem đã nhập đầy đủ thông tin nhân viên chưa.+ addNV, changeNV, btnDelActionPerformed: Chỉnh sửa, thêm nhân viên nhân viên vào database
+ tableNVMouseClicked: Hiện bảng đển click nhân viên muốn tùy chỉnh.+ btnSaveActionPerformed: Lưu lại thông tin nhân viên đã thêm hoặc đã chỉnh sửa
+ btnFindActionPerformed: Tìm kiếm nhân viên theo tên hoặc theo mã nhân viên
Trang 157 Mô tả thuật toán thao tác:
b Quản lý nhân viên:
- Thuật toán tìm nhân viên theo tên, mã hoặc theo giới tính bằng câu truy xuất SQL, sau đó hiển thị kết quả
Trang 16- Thuật toán kiểm tra lại số nước trong kho để bán cho khách Trong trường hợp thực tế trước khi chọn số lượng đồ uống và xác nhận, ta cần kiểm tra lại xem còn hàng để làm đồ uống đó không Cách thực hiện, ta kết nối với CSDL bảng
Trang 17QLNuoc, sau đó sử dụng con trỏ kiểm tra xem số lượng đồ uống Nếu số lượngbằng 0 hoặc yêu cầu không đủ, ta ẩn thức uống đó đi và người bán hàng sẽ không thể thao tác với thức uống đó nữa.
8 Cài đặt và triển khai
a Yêu cầu kỹ thuật
Các công cụ:
- Java JDK 18
- Microsoft SQL để kết nối tới DB
- IDE hỗ trợ Java như IntellJ, NetBeans,…
- Nhập Database đi kèm “data.sql”
- Thư viện jcalender, mssql-jdbc, iReport
b Triển khai ứng dụng
Đầu tiên khi bắt đầu chạy, màn hình đăng nhập hiện ra, yêu cầu người dùng cần đăng nhập tài khoản
Trang 18
Hình 5: Giao diện đăng nhập ứng dụng Sau khi đăng nhập tài khoản người dùng sẽ được đưa đến màn hình chính của ứngdụng quản lý quán café Ứng dụng có các chức năng: quản lý đồ uống, quản lý nhân viên, bán hang, đặt bàn, thống kê
Hình 6: Màn hình chính ứng dụng
Trang 19Hình 7: Giao diện quản lý thức uống
Hình 8: Giao diện quản lý nhân viên
Trang 20Hình 9: Giao diện quản lý đặt bàn
Hình 10: Giao diện chức năng đặt bàn
Trang 21Hình 11: Giao diện thống kê
Hình 12: Hoá đơn xuất ra
9 Cập nhật và hạn chế
a Tính năng được cập nhật
- Đã sửa chữa các lỗi từ nguồn code tham khảo và chạy được ứng dung
- Thêm chức năng thống kê
- Thêm chức năng in hoá đơn
b Hạn chế
Trang 22- Giao diện ứng dụng chưa bắt mắt
- Phần xử lý chưa được tối ưu hoàn toàn, dẫn đến có thể gây rối ở một số trường hợp, cũng như làm cho UML trở nên quá lớn
10 Kết luận
Mặc dù còn những mặt hạn chế, nhưng ứng dụng này đã có thể giúp quản lý quán café với các yêu cầu thiết yếu như quản lý nhân viên, quản lý nước uống, quản lý đặt bàn, thống kê
11 Tài liệu tham khảo
- Mô hình quản lý quán cafe và một số tính năng:
https://www.youtube.com/watch?v=4LZMnLIVzC0
- Source code tham khảo:
https://drive.google.com/file/d/18QAueeS3xgV5w4ES3J8GlJeAL9Rzp9h9/view
- Link sản phẩm : https://github.com/huytre123qwe/QLCF_2