Dich

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

Phân công

Khóa học: Lập trình hướng đối tượng

Mã khóa học: 503005

Chủ đề: Phân hệ quản lý quán cà phê

(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 để

quản lý hoạt động kinh doanh của quán.

Các tính năng mà học sinh cần thực hiện:

- Đọc hồ sơ danh sách nhân viên.

- 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.

II. Tài nguyên được cung cấp

Mã nguồn được cung cấp theo mặc định, bao gồm trong các tệp này:

- File đầu vào và đầu ra dự kiến: o Folder

nhập liệu gồm 5 ile: Drinks.txt:

chứa danh sách đồ uống InvoiceDetail.txt: chi

tiết hóa đơn Invoices.txt: chứa thông tin hóa

đơn Sta s.txt: chứa thông tin về nhân viên

Timekeeping.txt: chứa thời gian chấm công của nhân viên

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ụ

của các yêu cầu trong bài tập.

- Các tệp mã nguồn:

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

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

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.

III. Thứ tự thực hiện bài tập

- 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

3 lớp này SeasonalSta , FullTimeSta và Manager.

- 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

Nhân viên để thực hiện các yêu cầu phân công.

- 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

trong tệp Test.java được cung cấp.

- 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

trong bài tập.

IV. Mô tả lớp học

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 2/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 3/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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 .

- Giải thích một số thuộc tính và phương pháp: o Nhân viên

sID: ID nhân viên.

sName: tên nhân viên.

Phương thức trừu tượng paySalary (int workingTime).

toString (): trả về một chuỗi có định dạng: sID_sName o


Uống

dName: tên đồ uống

price: giá đồ uống

toString (): trả về một chuỗi có định dạng: dName_ price


o Hóa đơn

billID : ID hóa đơn

sta ID: nhân viên lập hóa đơn

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 4/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

date: ngày tạo hóa đơn, lưu chuỗi ở định dạng dd / mm / yyyy

toString (): trả về một chuỗi có định dạng: billID_sta ID_date


o InvoiceDetails

billID: ID hóa đơn

dName: tên đồ uống

qty: số lượng đồ uống trong hóa đơn

toString (): trả về một chuỗi có định dạng: billID_dName_qty

o StoreManagement

sta s: danh sách nhân viên

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.

StoreManagement (String sta Path, String workingTimePath, String ChemicalsPath, String

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.

loadDrinks (String loadInvoicesđường


(String
dẫn tập tin),ilePath), loadInvoicesDetails (String ilePath):

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ọ.

displaySta s (): in danh sách nhân viên vào cửa sổ lệnh.

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.

o FullTimeSta - Nhân viên chính thức

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

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

toString (): trả về một chuỗi có định dạng:

sID_sName_bonusRate_baseSalary

o SeasonalSta - Nhân viên bán thời gian

hourlyWage: lương theo giờ

paySalary (int workingHours): trả lại tiền lương, sẽ được mô tả

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.

toString (): trả về một chuỗi có định dạ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.

toString (): trả về một chuỗi có định dạng:

sID_sName_bonusRate_baseSalary_allowance

- Mô tả cách tính lương:


o FullTimeSta

Lương = Lương cơ sở * tỷ lệ thưởng + tiền thưởng

Cách tính tiền thưởng :

• 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ẽ

nhận 100.000 cho mỗi ngày làm việc.

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à:

10.000.000 * 1.2 + (3 * 100.000)

o Manager: FullTimeSta Người quản lý sẽ có thêm phụ cấp.

Lương = Lương FullTimeSta + phụ cấp


o SeasonalSta
Lương = lương theo giờ * giờ làm việc

Với giờ làm việc được làm việc Giờ.

V. Mô tả tệp đầu vào và đầu ra

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 6/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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

ID nhân viên, Tên nhân viên, Lương cơ bản, Tỷ lệ thưởng

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

ID nhân viên, tên nhân viên, lương theo giờ

- 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

“,” theo định dạng sau : o Uống

Tên đồ uống, giá đồ uống

o Hóa đơn

ID hóa đơn, ID nhân viên, ngày tạ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

ở định dạng dd / mm / yyyy.

o InvoiceDetails

ID hóa đơn, Tên đồ uống, Số lượng

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 7/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

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 đồ

uống trong danh sách đồ uống .

o Chấm công: chứa danh sách chấm công của tháng

ID nhân viên, thời gian làm việc

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

nhiệm thì thời gian làm việc là giờ làm việc.

- Đầ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 Req3.txt: kết quả của nhân viên có mức lương> 15.000.000.

o Req4.txt: kết quả doanh thu trong quý đầu tiên.

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

định dạng toString () của lớp tương ứng .

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 đó

tương đương với một lỗi biên dịch.

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 8/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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.

VI. Yêu cầu


Sinh viên không được bổ sung thêm thư viện, chỉ được sử dụng thư viện trong các tệp được cung cấ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

nếu họ sử dụng các phiên bản Java khác nhau.

1. YÊU CẦU 1 (2 ĐIỂM)

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.

2. YÊU CẦU 2 (2 ĐIỂM)

Phương pháp thực hiện:

public ArrayList <SeasonalSta > getTopFiveSeasonalSta sHighSalary ()

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 .

3. YÊU CẦU 3 (2 ĐIỂM)

Phương pháp thực hiện:

public ArrayList <FullTimeSta > getFullTimeSta sHaveSalaryGreaterThan (int LowerBound)

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 9/13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

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.

Lưu ý, người quản lý (Manager) là nhân viên chuyên trách.

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 .

4. YÊU CẦU 4 (2 ĐIỂM)

Phương pháp thực hiện:

tổng cộng gấp đôi công khaiInQuarter (int quý)

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

1, 2, 3, quý 2 bao gồm các tháng 4, 5, 6, quý 3 và 4 cũng vậy.

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 .

5. YÊU CẦU 5 (2 ĐIỂM)

Phương pháp thực hiện:

Nhân viên công nhận getSta HighestBillInMonth (trong tháng)

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 .

VII. Kiểm tra trước khi nộp

- 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.

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 10 /


13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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:

VIII. Hướng dẫn đệ trình

- 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.

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 11 /


13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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à:

o Tập tin nén:

o Bên trong tệp nén:

o Bên trong thư mục:

IX. Chấm điểm và các quy định

- 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

sẽ nhận được 0 điểm.

- 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.

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 12 /


13
Machine Translated by Google

Đại học Tôn Đức Thắng


Khoa Công nghệ Thông tin

- 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.

- Hạn nộp hồ sơ: 23h00 ngày 25/5/2022

-- CHẤM DỨT --

Quang DC - dungcamquang@tdtu.edu.vn | Lập trình hướng đối tượng (503005) - 2022 13 /


13

You might also like