Professional Documents
Culture Documents
Dich
Dich
Dich
Phân công
(Học viên vui lòng đọc kỹ tất cả các hướng dẫn trước khi bắt đầu bài
tập)
I. Giới thiệu
Một giám đốc cửa hàng cà phê cần quản lý sản phẩm, khách hàng và đơn đặt hàng của họ. Nhân viên của quán được chia làm
2 loại: nhân viên chính thức và nhân viên bán thời gian. Trong bài tập này, học viên sẽ lập trình một số tính năng để
- Dựa vào thông tin từ tệp, thực hiện các truy vấn dựa trên yêu cầu.
Mã nguồn được cung cấp theo mặc định, bao gồm trong các tệp này:
trong tháng
o Đầu ra của thư mục bao gồm: 5 tệp Req1.txt, Req2.txt, Req3.txt, Req4.txt và Req5.txt chứa đầu ra ví dụ
o Test.java: tạo các đối tượng và gọi các phương thức mà học sinh sẽ định nghĩa. o
Sta .java: chứa lớp Nhân viên được xác định trước. Học sinh không được chỉnh sửa tệp này.
o Drink.java, Invoice.java, InvoiceDetails.java: chứa các lớp được xác định trước để tạo
đối tượng tương ứng. Học sinh không được chỉnh sửa các tệp này.
o StoreManagement.java: chứa lớp StoreManagement với các nhân viên thuộc tính được xác định trước để chứa
danh sách sinh viên, các thuộc tính khác để chứa danh sách khác đọc từ
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 1/13
Machine Translated by Google
tệp, hàm tạo, phương thức đọc và ghi tệp và một số phương thức trống. Học sinh sẽ thực hiện các
phương thức trống đó và không chỉnh sửa các phương thức được xác định trước.
- Sinh viên tải về và trích xuất các nguồn tài liệu được cung cấp.
- Trong cùng một thư mục với 3 tệp đã cho, học sinh tạo 3 tệp tương ứng với
- Sinh viên triển khai các lớp SeasonalSta , FullTimeSta và Manager và thêm các triển khai của họ vào
StoreManagement của lớp dựa trên các yêu cầu trong các phần sau
- Thực hiện phương pháp đọc tệp để đọc thông tin Nhân viên để lập danh sách nhân viên.
- Đọc kỹ danh sách Đồ uống, Hóa đơn, InvoiceDetail được cung cấp và kết hợp các danh sách này với danh sách
- Sau khi thực hiện các phương thức trong lớp StoreManagement , sinh viên biên dịch và chạy phương thức main
trong tệp Test.java . Học sinh thực hiện các yêu cầu trong các phần sau và so sánh kết quả của mình với
kết quả được cung cấp trong thư mục đầu ra.
- Đối với các yêu cầu mà sinh viên không thể thực hiện, vui lòng không xóa các phương pháp có liên quan đến
các yêu cầu đó và đảm bảo rằng chương trình của bạn có thể chạy với chính
- Liên kết Google Drive cũng sẽ chứa tệp version.txt . Học sinh thường nên kiểm tra tệp này. Nếu có những
thay đổi mới, học sinh nên đọc kỹ các thay đổi đó và tải lại (các) tệp mới nhất. Tệp version.txt này
được sử dụng để thông báo những gì đã được thay đổi và ngày nó được thay đổi trong trường hợp xảy ra lỗi
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 2/13
Machine Translated by Google
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 3/13
Machine Translated by Google
- Lớp SeasonalSta và lớp FullTimeSta kế thừa từ lớp Nhân viên , lớp Quản lý
kế thừa lớp FullTimeSta .
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 4/13
Machine Translated by Google
date: ngày tạo hóa đơn, lưu chuỗi ở định dạng dd / mm / yyyy
o StoreManagement
workingTime: danh sách thời gian làm việc, danh sách này được cung cấp dưới dạng danh sách
của Chuỗi.
Hóa đơn: danh sách hóa đơn, danh sách này được cung cấp dưới dạng danh sách hóa đơn.
billDetails: danh sách chi tiết hóa đơn, danh sách này được cung cấp dưới dạng danh sách
InvoiceDetails.
đồ uống: danh sách đồ uống, danh sách này được cung cấp dưới dạng danh sách Đồ uống.
detailsPath, String drinkPath): phương thức khởi tạo, thực hiện lệnh gọi các phương thức
đọc tệp để đọc thông tin đến các thuộc tính tương ứng.
getSta s (), setSta s (ArrayList <Sta > sta s): dùng để lấy danh sách Nhân viên
và chỉ định lại danh sách Nhân viên. Hai phương pháp này dùng để đánh dấu bài làm.
Học sinh không được phép chỉnh sửa các phương pháp này.
các phương thức dùng để đọc các tập tin thành danh sách. Học sinh không được phép sửa
các phương thức này.
public static ArrayList <String> loadFile (String ilePath): phương thức trợ giúp để đọc
thông tin từ các tập tin. Học sinh có thể sử dụng phương pháp này trong việc thực hiện
của họ.
writeFile (Đường dẫn chuỗi, danh sách ArrayList <E>): ghi vào tệp danh sách đã cung cấp.
Học sinh không được phép chỉnh sửa phương pháp này.
writeFile (Đường dẫn chuỗi, đối tượng E): ghi a vào tệp đối tượng được cung cấp.
Học sinh không được phép chỉnh sửa phương pháp này.
baseSalary: mức lương cơ bản của nhân viên toàn thời gian
bonusRate: tỷ lệ thưởng của nhân viên chính thức
paySalary (int workingDays): trả lại tiền lương, sẽ được mô tả trong các phần bên dưới.
Với Ngày làm việc là thông số về số ngày mà nhân viên đó đã làm việc trong tháng.
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 5/13
Machine Translated by Google
sID_sName_bonusRate_baseSalary
trong các phần bên dưới. Với giờ đã làm việc là thông số về số giờ mà nhân viên đã làm
việc trong tháng.
sID_sName_hourlyWage
o Lớp Manager - Người quản lý: Người quản lý là nhân viên chính thức.
trợ cấp: trợ cấp
paySalary (int workingDays): trả lại tiền lương, sẽ được mô tả trong các phần bên dưới.
Với Ngày làm việc là thông số về số ngày mà nhân viên đó đã làm việc trong tháng.
sID_sName_bonusRate_baseSalary_allowance
• Nếu nhân viên có số ngày làm việc (ngày làm việc) <= 21: không có thưởng.
• Nếu nhân viên có số ngày làm việc (Ngày làm việc)> 21: từ ngày 22 sẽ
Ví dụ, nếu một nhân viên chính thức có mức lương cơ sở là 10.000.000, có mức thưởng là
1,2 và làm việc 24 ngày trong tháng thì tổng mức lương của nhân viên này sẽ là:
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 6/13
Machine Translated by Google
- Tập tin đầu vào có tên Sta s.txt chứa danh sách nhân viên với mỗi dòng tương ứng với
thuộc tính của một nhân viên được phân tách bằng dấu “,” ở định dạng sau: o
FullTimeSta
o Người quản lý
Mã nhân viên, Tên nhân viên, Lương cơ bản, Tỷ lệ thưởng, Phụ cấp
o SeasonalSta
- Các tệp đầu vào có tên Drinks.txt, InvoiceDetails.txt, Invoices.txt và Timekeeping.txt chứa danh sách các
mặt hàng tương ứng của từng lớp, mỗi dòng tương ứng với thuộc tính của từng lớp được phân tách bằng dấu
o Hóa đơn
Với ID nhân viên giống với ID nhân viên trong danh sách nhân viên , ngày tạo hóa đơn được lưu
o InvoiceDetails
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 7/13
Machine Translated by Google
Với ID hóa đơn giống với ID hóa đơn trong danh sách hóa đơn , tên đồ uống giống với tên đồ
Nếu là nhân viên chuyên trách thì thời gian làm việc là ngày làm việc, nếu là nhân viên kiêm
- Đầu ra bao gồm 5 tệp chứa đầu ra ví dụ được cung cấp cho các yêu cầu:
o Req1.txt: kết quả danh sách nhân viên được đọc từ tệp.
o Req2.txt: kết quả của năm nhân viên bán thời gian có mức lương cao nhất trong tháng.
o Req5.txt: kết quả nhân viên có số lượng hóa đơn được tạo nhiều nhất trong tháng 6.
- Mỗi dòng trong đầu ra Req1, Req2, Req3 và Req5 tương ứng với một đối tượng với
Ghi chú:
- Học sinh có thể thêm nhiều dữ liệu vào tệp đầu vào để kiểm tra nhiều trường hợp hơn nhưng hãy nhớ rằng đã thêm
dữ liệu phải tuân theo định dạng được xác định ở trên.
- HS đọc kỹ phương pháp chính để xác định đúng trình tự thực hiện
các lớp và phương thức.
- Học sinh có thể thêm mã vào phương thức chính để kiểm tra việc triển khai của bạn nhưng hãy đảm bảo rằng
chương trình của bạn có thể chạy trên mặc định được cung cấp bởi phương thức chính.
- Học sinh có thể thêm các phương pháp mới để trợ giúp việc triển khai của bạn nhưng hãy đảm bảo rằng
chương trình của sinh viên vẫn có thể chạy với tệp Test.java được cung cấp.
- Học sinh không được thực hiện một đường dẫn tuyệt đối khi xác định các phương thức liên quan đến việc đọc tệp.
Nếu học sinh xác định một đường dẫn tuyệt đối dẫn đến không thể đọc một tệp trong khi đánh dấu, điều đó
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 8/13
Machine Translated by Google
- Học sinh không được chỉnh sửa tên lớp và tên phương thức trong bất kỳ trường hợp nào .
được định nghĩa ban đầu (việc đặt tên luôn tuân theo sơ đồ lớp ở trên).
- Sinh viên không thực hiện thay đổi các hồ sơ không thuộc diện phải nộp.
Học sinh thực hiện bài tập của bạn bằng Java 11 hoặc Java 8. Học sinh không được sử dụng kiểu dữ liệu var.
Phần thực hiện của học sinh sẽ được tính điểm trong Java 11; học sinh sẽ chịu trách nhiệm về tất cả các lỗi xảy ra
Sinh viên thực hiện phương thức public ArrayList <Sta > loadSta s (String ilePath) để đọc các sta từ tệp
Sta .txt, tạo các đối tượng Sta và nhập chúng vào thuộc tính sta s.
Học sinh triển khai phương thức, câu lệnh gọi phương thức khởi tạo của StoreManagement trong phương thức main sẽ gọi
phương thức đọc tệp, nếu học sinh thực hiện đúng phương thức tệp đọc cho các nhân viên thuộc tính, thì phương thức
ghi tệp được xác định trước sẽ ghi vào “Req1. txt ”. Sinh viên so sánh tệp này với tệp đầu ra dự kiến Req1.txt trong
đầu ra
thư mục.
Lưu ý: Đây là phương pháp mà sinh viên phải xác định được mới đủ điều kiện cho điểm, nếu sinh viên không đọc được
hồ sơ để làm danh sách Cán bộ thì các yêu cầu dưới đây sẽ không được tính điểm.
Các yêu cầu bên dưới tùy thuộc vào danh sách được đọc từ các tệp.
trả lại danh sách 05 cán bộ kiêm nhiệm có mức lương cao nhất trong danh sách.
Học sinh triển khai phương thức để khi gọi phương thức chính , kết quả đầu ra chính xác sẽ được ghi vào “Req2.txt”.
Sinh viên so sánh tệp này với tệp đầu ra dự kiến Req2.txt trong thư mục đầu ra .
Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 9/13
Machine Translated by Google
trả về danh sách nhân viên có mức lương cao hơn mức lương thấp hơn đã thông qua . Ví dụ, đã cung cấp
lowBound là 15000000 thì danh sách trả về sẽ chứa những nhân viên có mức lương> 15.000.000.
Học sinh triển khai phương thức để khi gọi phương thức chính , kết quả chính xác sẽ được ghi vào “Req3.txt”.
Sinh viên so sánh tệp này với tệp đầu ra dự kiến Req3.txt trong thư mục đầu ra .
trả lại tổng doanh thu của quý đã qua. Biết rằng quý đầu tiên bao gồm các tháng
Tổng doanh thu là tổng số hóa đơn của các tháng trong quý đó. Tổng chi phí của một hóa đơn là tổng chi phí
đồ uống trong hóa đơn. Tổng chi phí của một đồ uống là giá của đồ uống đó nhân với số lượng trong hóa đơn.
Học sinh thực hiện phương thức để khi gọi phương thức chính , kết quả đầu ra chính xác sẽ được ghi vào
“Req4.txt”. Sinh viên so sánh tệp này với tệp đầu ra dự kiến Req4.txt trong thư mục đầu ra .
trả lại nhân viên có tổng chi phí hóa đơn cao nhất trong tháng. Tổng chi phí xuất hóa đơn của nhân viên
trong tháng được tính bằng cách cộng tổng chi phí của từng hóa đơn nhân viên đã lập trong tháng.
Học sinh triển khai phương thức để khi gọi phương thức chính , kết quả đầu ra chính xác sẽ được ghi vào
“Req5.txt”. Sinh viên so sánh tệp này với tệp đầu ra dự kiến Req5.txt trong thư mục đầu ra .
- Nếu học sinh không thể thực hiện một số yêu cầu, vui lòng để nguyên các phương pháp liên quan đến các
yêu cầu đó. Sinh viên KHÔNG ĐƯỢC XÓA (S) PHƯƠNG THỨC YÊU CẦU sẽ dẫn đến sai sót khi chạy phương
thức chính . Trước khi nộp, sinh viên phải kiểm tra xem chương trình có thể chạy bằng chính được
cung cấp
phương pháp.
- Tất cả các tệp ReqX.txt (X = {1,2,3,4,5}) được viết ở cùng cấp với thư mục mã nguồn. Đối
với sinh viên sử dụng IDE (Eclipse, Netbeans,…), hãy đảm bảo rằng chương trình có thể
chạy bằng các lệnh trong dấu nhắc lệnh, đảm bảo rằng chương trình không tồn tại bên
trong một gói, vị trí cho tệp được viết ReqX.txt phải nằm trong cùng cấp với thư mục
mã nguồn.
- Cấu trúc đúng của ile ghi khi chạy chương trình sẽ như hình sau:
- Khi nộp, sinh viên nộp FullTimeSta .java, Manager.java, SeasonalSta .java,
và tệp StoreManagement.java, không bao gồm bất kỳ tệp nào khác và không được chỉnh sửa
tên của các tệp này.
- Sinh viên đặt 4 ile này vào thư mục có tên MSSV_HoTen (Họ và tên ghi không dấu cách,
không dấu) nén với định dạng .zip và nộp theo hướng dẫn của giảng viên thực hành.
- Trường hợp nộp sai (đặt tên thư mục sai, không đặt tệp vào thư mục, nhiều tệp hơn yêu
cầu,…) thì học sinh sẽ bị 0 điểm.
- Cấu trúc tệp đúng sẽ là:
- Phần thực hiện của bạn sẽ được chấm điểm tự động thông qua các tủ kiểm tra (tệp đầu vào
và tệp đầu ra sẽ có định dạng như mô tả ở trên) nên học viên sẽ chịu trách nhiệm nếu
không tuân thủ hướng dẫn nộp bài hoặc thay đổi tên phương pháp dẫn đến chương trình
không biên dịch được .
- Đối với tất cả các trường hợp học sinh sử dụng đường dẫn tệp tuyệt đối trong quá trình đọc tệp, học sinh
- Tủ kiểm tra dùng để chấm điểm chương trình là tệp có định dạng giống như mô tả, có nội
dung khác với tệp đầu vào cung cấp cho học sinh. Học sinh sẽ chỉ nhận được điểm cho
Yêu cầu nếu kết quả thực hiện của bạn là hoàn toàn chính xác.
- Nếu phần biên soạn thực hiện của học sinh có sai sót sẽ bị 0 điểm.
cho tất cả các yêu cầu.
- Tất cả mã của bạn sẽ được kiểm tra xem có đạo văn hay không. Mọi hành vi sao chép mã từ
Internet, sao chép mã của bạn bè, cho phép bạn bè sao chép mã của bạn nếu bị phát hiện
sẽ bị 0 điểm toàn bộ Quy trình 2 điểm hoặc không được tham gia thi cuối kỳ.
- Nếu sinh viên thực hiện có dấu hiệu sao chép mã từ Internet hoặc sao chép lẫn nhau, sinh
viên sẽ được gọi phỏng vấn mã để chứng minh việc triển khai thực sự là của mình.
-- CHẤM DỨT --