HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN I ------------------------------------- BÁO CÁO BÀI TẬP LỚN ĐỀ TÀI: HỆ THỐNG QUẢN LÝ DỊCH VỤ ĐIỆN Nhóm lớp : 4 Nhóm bài tập : 20 Module : Nhân viên nhập số điện hàng tháng và lên hóa đơn hàng tháng cho khách hàng Cập nhật các hóa đơn khách hàng thanh toán Offline Nhân viên nhận tiền công theo hoa hồng thu hóa đơn và ghi số Họ và tên: Nguyễn Hoàng Dương : B21DCCN558 Yêu cầu buổi học: Báo cáo tổng hợp Hà Nội 2024 I. Nhân viên nhập số điện hàng tháng và lên hóa đơn hàng tháng cho khách hàng 1. Biểu đồ UC và mô tả Mô tả hoạt động chức năng: NV đăng nhập trên GD đăng nhập Nếu thành công -> GD chính của nhân viên có các lựa chọn nhập số điện, lên hóa đơn, xem lịch sử hóa đơn, cập nhật thông tin hóa đơn, quản lý thông tin khách hàng Nếu không thành công -> Thông báo lỗi -> quay lại GD đăng nhập NV chọn Nhập số điện từ GD chính của NV -> GD danh sách KH hiện ra bao gồm danh sách các khách hàng và ô tìm kiếm KH theo tên ( mã KH) NV chọn 1 KH từ danh sách -> GD Nhập số điện gồm thông tin chi tiết của KH, số điện tháng trước, ô nhập số điện tháng này và nút xác nhận: + NV kiểm tra thông tin và nhập số điện tháng này vào + ấn Xác nhận -> GD xem hóa đơn hiện ra bao gồm thông tin KH, số điện tháng trước, số điện tháng này, tổng tiền thanh toán và nút xác nhận + NV kiểm tra và ấn xác nhận để lưu và gửi hóa đơn cho KH -> thông báo thành công và quay lại GD Xem danh sách KH Xác định Use-case: UC đăng nhập: quản lý thông tin đăng nhập hệ thống UC xem GD chính của NV: cho NV xem GD chính của mình UC xem GD danh sách khách hàng: cho phép NV xem danh sách các khách hàng cần nhập số điện UC xem GD nhập số điện: cho phép NV nhập số điện cho khách hàng UC xem GD hóa đơn: cho phép NV lập và xem hóa đơn UC xác nhận : cho phép NV xác nhận hóa đơn và gửi cho quản lý Sơ đồ: 2. Kịch bản chuẩn và ngoại lệ Scenario Nhân viên nhập số điện hàng tháng và lên hóa đơn Actor Nhân viên Pre-Conditon NV có tài khoản kiểu nhân viên và trong thời gian cho phép nhập số điện(30 hàng tháng) Post-Condition NV nhập thành công các số điện và lên các hóa đơn cho khách hàng Main event 1.NV A nhập username = a, password = nv@1 vào GD đăng nhập để vào hệ thống để nhập số điện và lên hóa đơn 2.HT hiện ra GD chính của nhân viên có lựa chọn nhập số điện 3.Nhân viên chọn chức năng nhập số điện 4.HT hiện ra GD danh sách KH và một thanh tìm kiếm khách hàng theo tên, mã KH TT Mã KH Tên Địa chỉ Số điện tháng trước 1 D01 A HaDong 1000 2 D02 B ThanhTri 1200 3 D03 C DongDa 1300 5.NV chọn KH có tên A từ danh sách(dòng số 1) 6.HT hiện ra GD nhập số điện gồm: + thông tin khách hàng: Mã KH: D01, tên: A, địa chỉ: HaDong, số điện tháng trước: 1000 + ô nhập liệu số điện tháng này + các lựa chọn Xác nhận/ Hủy bỏ.NV nhập số điện tháng này = 1100 vào ô nhập liệu và ấn nút lưu 8.HT hiện ra GD xem hóa đơn gồm + thông tin khách hàng: Mã KH: D01, tên: A, địa chỉ: HaDong, số điện tháng trước: 1000, số điện hiện tại: 1100 + tổng số tiền phải thanh toán(HT tự động tính) = 300.000 + Nút lựa chọn Xác nhận/Hủy 9.HT thông báo thành công 11.NV click OK trên thông báo 12.HT quay về GD chính của NV (bước 2) Exception 1.1 NV nhập sai thông tin username và password 1.2 HT hiện thông báo lỗi đăng nhập 1.3 NV click OK trên thông báo 1.4 HT quay lại GD đăng nhập 5.1 NV không chọn được khách hàng mong muốn (KH có tên X, mã KH D101) từ bảng do bảng chỉ hiển thị 3 KH 1 lúc, NV nhấn vào thanh tìm kiếm và tìm mã KH = “01”.2 HT hiện ra danh sách các KH có mã KH có từ khóa = “01” dưới dạng bảng TT Mã KH Tên Địa chỉ Số điện tháng trước 1 D01 A HaDong 1000 2 D101 X HoanKiem 1500 5.3NV chọn KH có mã KH = D101 (dòng số 2) 3.
Trích lớp thực thể - Mô tả: Thành viên -> đề xuất lớp Member(username, password, name, role) Nhân viên -> đề xuất lớp Staff Khách hàng -> đề xuất lớp Customer(username, password, name, address, tel) Căn hộ -> lớp Apartment(address, type) Loại điện -> ElectricityType(TypeName, pricePerKwh) Hóa đơn -> lớp Bill(totalAmount, dueDate, status) Ghi số hàng tháng -> lớp MonthlyReading(readingDate, startReading, endReading, totalUse) 1 NV có thể nhập số điện nhiều lần -> Staff và MonthlyReading là quan hệ 1-n 1 Căn hộ có thể được ghi số điện nhiều lần bởi NV -> Apartment và MonthlyReading là quan hệ 1-n 1 KH có thể có nhiều căn hộ -> Customer và Apartment là quan hệ 1-n 1 lần ghi số điện sẽ tạo ra 1 hóa đơn -> MonthlyReading và Bill là quan hệ 1-1 1 căn hộ chỉ có thể sử dụng 1 loại dịch vụ điện duy nhất -> Apartment và ElectricityType là quan hệ 1-1 4. Biểu đồ trạng thái + Từ GD chính của NV, nếu chọn chức năng nhập số điện thì chuyển sang GD danh sách KH (HT lấy danh sách các KH) + Từ GD danh sách KH, NV chọn 1 KH trong danh sách hoặc tìm KH theo tên (HT lấy danh sách KH theo từ khóa) thì chuyển sang GD Nhập chi tiết số điện (HT lấy thông tin chi tiết của KH) + Từ GD nhập chi tiết số điện, NV nhập số điện của KH và ấn Next thì chuyển sang GD xem hóa đơn (HT tính toán và cập nhật thông tin hóa đơn) + Tại GD lập hóa đơn NV click xác nhận thì quay về GD chính của NV và kết thúc (HT lưu thông tin vào CSDL). Biểu đồ lớp pha phân tích Đề xuất các lớp biên: - GD đăng nhập -> đề xuất lớp LoginView + Nhập tên đăng nhập -> inUsername + Nhập mật khẩu -> inPassword + nút Đăng nhập -> subLogin - HT kiểm tra thông tin đăng nhập -> cần hàm CheckLogin() + input: username, password (Staff) + output: boolean Gán cho lớp Staff - Đăng nhập thành công -> GD chính của NV -> đề xuất lơp StaffHomeView + thông tin nhân viên: outStaffInfor + nút nhập số điện: subReadingElecNumber - Để lấy thông tin NV để hiển thị ở GD chính -> cần hàm GetStaffInfor() + input: username + output: thông tin chi tiết của nhân viên Gán cho lơp Staff - Chọn nhập số điện -> GD danh sách các khách hàng -> đề xuất lớp ListCustomerView + Danh sách các khách hàng: outsubListCustomer + ô nhập tên để tìm kiếm: inName + nút tìm kiếm: subSearch - Sau khi vào GD, hệ thống tự động lấy danh sách các khách hàng cần ghi số -> cần hàm getListCustomer() + input: không có + output: danh sách các khách hàng Gán cho lớp Customer - Để lấy danh sách các khách hàng có từ khóa trong mục tìm kiếm -> cần hàm getCustomerByName() + input: từ khóa: string + output: danh sách các khách hàng Gán cho lớp Customer - NV click 1 khách hàng -> GD nhập chi tiết số điện -> đề xuất lớp DetailENumberView + thông tin chi tiết khách hàng -> outCustomerInfor + ô nhập số điện -> inReadingENumber + nút tiếp tục -> subNext + nút quay lại -> subBack - Để lấy thông tin chi tiết của 1 KH -> cần hàm getCustomerInfor() + input: tên, username của KH + output: thông tin chi tiết KH Gán cho lớp Customer - NV nhập số điện, ấn Next -> GD xem hóa đơn -> đề xuất lớp CreateBillView + thông tin khách hàng -> outCustomerInfor + thông tin NV -> outStaffInfor + tổng số tiền -> outTotalPrice + nút xác nhận-> subConfirm + nút hủy bỏ -> subCancel - Để tính toán tổng số tiền để hiện lên GD xem hóa đơn -> cần hàm CalculatePrice() + input: tổng số điện sử dụng (totalUse) -> lớp MonthlyReading + output: totalPrice (Bill) Gán cho lớp Bill - NV ấn xác nhận ->Hệ thống cập nhật thông tin hóa đơn -> cần hàm saveBill() + input: thông tin hóa đơn (Bill) + output: boolean Gán cho lớp Bill 6. Biểu đồ giao tiếp pha phân tích Kịch bản chuẩn v2: 1.Tại GD chính của NV sau khi đăng nhập, NV click chọn Nhập số điện 2.
Lớp StaffHomeView Gọi Lớp ListCustomerView 3. Lớp ListCustomerView gọi lớp Customer để lấy danh sách các Khách hàng 4. Lớp Bill gọi hàm getListCustomer() 5. Lớp Bill trả kết quả cho lớp ListCustomerView 6.
Lớp ListCustomerView hiển thị cho NV 7. NV click chọn 1 dòng 8. Lớp ListCustomerView gọi lớp DetailEnumberView 9. Lớp DetailEnumberView gọi lớp Customer để lấy thông tin KH 10.
lớp Customer gọi hàm GetCustomerInfor() 11. Lớp Customer trả kết quả về cho lớp DetailEnumberView 12. Lớp DetailEnumberView hiển thị lên cho NV 13. NV nhập số điện + ấn Next 14.
Lớp DetailEnumberView gọi lớp CreateBillView 15. Lớp CreateBillView gọi lớp Bill để tính tổng tiền phải trả 16. Lớp Bill gọi hàm CalculatePrice() 17. Lớp Bill trả về kết quả cho lớp CreateBillView 18.
Lớp CreateBillView hiển thị cho NV 19. NV click Xác nhận 20. Lớp CreateBillView gọi Bill để lưu thông tin hóa đơn 21. Lớp Bill gọi hàm saveBill() 22.
lớp Bill trả về kết quả cho lớp CreateBillView 23. lớp CreateBillView hiển thị thành công cho NV 7. Thiết kế lớp thực thể - Các lớp được bổ sung thuộc tính id: trừ Staff, Customer - Bổ sung kiểu thuộc tính cho các lớp - Bổ sung thuộc tính thành phần của các quan hệ aggregation/composition + Customer là thành phần của Apartment thuộc loại 1-n => Apartment có 1 Customer + ElectricityType là thành phần của Apartment loại 1-1 => Apartment có 1 ElectricityType + Staff là thành phần của MonthlyReading loại 1-n => 1 MonthlyReading có 1 Staff + Apartment là thành phân của MonthlyReading loại 1-n => 1 MonthlyReading chứa 1 Apartment + MonthlyReading là thành phần của Bill loại 1-1 => 1 Bill chứa 1 MonthlyReading 8.