You are on page 1of 3

ÔN TẬP LẬP TRÌNH CƠ BẢN

Bài 1: Một trang web cung cấp dịch vụ nghe nhạc số cần quản lý thông tin sau:
Thông tin về các bài hát (Song) bao gồm tựa bài hát (title), tên nhạc sĩ sáng tác (actor),
thể loại (genre). Thông tin về các bản nhạc số (MusicItem) bao gồm bài hát (song), tập tin
nhạc số (file), số lần truy cập (hitCounts), tên ca sĩ (singer). Thông tin về tập tin nhạc số
(SourceFile) gồm tên (fileName), kích thước (size), thời gian phát (duration). Thông tin
về thời gian phát là dữ liệu thời gian (ClockTime) gồm có phút (minute) và giây (second).
Các bản nhạc số được tổ chức thành các tuyển tập (Album). Thông tin album gồm tựa (title),
năm phát hành (publishedYear), và danh sách các bản nhạc số (musicItems). Có 2 loại
album: album của một ca sĩ, và album tổng hợp. Album của ca sĩ có thêm thông tin tên ca sĩ
(singer).
Ví dụ: Album ca sĩ: “Con Đường Có Lá Me Bay”, 2011 của Quang Dũng gồm các bản nhạc:
 Khát vọng, Phạm Minh Tuấn, Cách Mạng, khatvong.mp3, 5043 bytes, 4:48, 15350, Quang Dũng.
 Nơi anh gặp em, Hoàng Hiệp, Trữ tình, noigapem.mp3, 4230 bytes, 4:12, 2651, Quang Dũng, Mỹ
Tâm.
 Con đường có lá me bay, Hoàng Hiệp, Cách mạng, mebay.mp3, 5130 bytes, 4:36, 198, Quang
Dũng.
 Sao biển, Phạm Minh Tuấn, Trữ tình, saobien.mp3, 48711 bytes, 4:17, 5361, Quang Dũng.
Album tổng hợp “Top bài hát Việt” gồm các bản nhạc số:
 Nắm Lấy Tay Anh, Tú Nguyễn, Trữ tình, namlay.mp3, 5011 bytes, 4:30, 32912, Tuấn Hưng
 Người Yêu Tuyệt Vời, Trịnh Thăng Bình, Trữ tình, nguoiyeutv.mp3, 6110 bytes, 5:02, 1212, Trịnh
Thăng Bình
 Anh Sợ Mất Em, OnlyC – JongKay, Trữ tình, anhsomatem.mp3, 4120 bytes, 4:13, 59201, The Men
 Anh Nhớ Em Người Yêu Cũ, Khánh Đơn, Trữ tình, nhonguoiyeucu.mp3, 5612 bytes, 4:45, 3592,
Minh Vương M4U
 Lời Hứa Chỉ Là Lời Hứa, Bình Nguyên, Trữ tình, chilaloihua.mp3, 4350 bytes, 4:20, 35270, Nam
Du

Yêu cầu:
1. Định nghĩa dữ liệu để biểu diễn thông tin về danh sách các bản nhạc số và album.
2. Thiết kế phương thức moreFavouriteThan để xác định xem một bản nhạc số có số lượng
truy cập nhiều hơn một bản nhạc số khác hay không.
3. Thiết kế phương thức longerThan để xác định xem một bản nhạc số có thời gian phát dài
hơn một thời gian cho trước không.
4. Thiết kế phương thức favouriteRate tính mức độ ưa thích của bản nhạc số: nếu số lần
truy cập lớn hơn hay bằng 40000 thì mức độ ưa thích là “Hot”, nếu số lần truy cập từ 2000
đến nhỏ hơn 40000 thì mức độ ưa thích là “Phổ biến”, các trường hợp khác là rỗng.
5. Thiết kế phương thức howMany để đếm số bản nhạc số trong một album (1đ)
6. Thiết kế phương thức totalTime để tính tổng thời gian phát nhạc tất cả các bản nhạc số
trong một album
7. Thiết kế phương thức thisActor để xuất ra một danh sách các bản nhạc số của album
mà do một nhạc sĩ cho trước sáng tác.
8. Thiết kế phương thức sortByTime để sắp xếp các bản nhạc số trong album theo thứ tự
thời gian phát nhạc tăng dần.
Bài 2: Một thư viện cần quản lý thông tin về các mục thư viện ( LibraryItem) bao gồm các loại
sách (Book), CD và tạp chí (Magazine). Thông tin cơ bản của các mục thư viện bao gồm số
thứ tự mục (catID), tựa (title), nhà xuất bản (publisher), số ngày tối đa được mượn
(dueDays). Ngoài ra, với sách người ta cần lưu trữ thêm thông tin loại sách ( category): nông
nghiệp, tin học, kinh tế…, tên tác giả ( author), năm cuốn sách được xuất bản
(publishedYear). Với CD người ta quan tâm thêm thông tin về nghệ sĩ biểu diễn (artist). Với
tạp chí người ta lưu trữ thêm thông tin số ấn bản (no).
Các ví dụ:
 Book: 102, How to design class hierarchies, MIT Press, 5, Tin học, Matthias Felleisen, 2004
 CD: 1023, Nỗi Lòng Người Đi, 7, Anh Thơ
 Magazine: 143, Thế giới vi tính, PC World VN, 3, 20
Yêu cầu:
a. Định nghĩa dữ liệu để biểu diễn thông tin của bài toán
b. Viết phương thức smallerThan để xác định xem một mục thư viện có thứ tự mục catID
nhỏ hơn một mục thư viện khác hay không
c. Viết phương thức overdueDays để tính số ngày mượn quá hạn khi cho trước số ngày
mượn (rentDays). Biết overdueDays = rentDays – dueDays.
d. Viết phương thức fine để tính tiền phạt mượn quá hạn cho một mục thư viện khi cho
trước số ngày mượn (rentDays). Cách tính cho từng loại mục thư viện như sau:
 Đối với sách: Phải trả 4000đ cho mỗi ngày quá hạn nhưng không quá 50000đ.
 Đối với CD: Phải trả 2000đ cho mỗi ngày quá hạn nhưng không quá 10000đ.
 Đối với tạp chí: Phải trả 1000đ cho mỗi ngày quá hạn.

Bài 3: Giả sử công ty muốn quản lý việc bán các sản phẩm công cụ trong công ty. Từng sản
phẩm (ProductItem) đều có mã sản phẩm (pid), tên sản phẩm (name), nhà sản xuất
(producer), quốc gia sản xuất (nation), trọng lượng (weight), giá sản phẩm (price). Có 3
loại sản phẩm: sản phẩm cầm tay (HandTool), máy phát điện (Generator) và máy cắt
(CuttingMachine). Sản phẩm cầm tay cần cho biết thuộc thể loại nào (category) và máy
phát điện cần biết ngày sản xuất (madeDate). Thông tin nhà sản xuất gồm tên (name), năm
thành lập (birthYear). Mỗi khách hàng có thể mua một hoặc nhiều sản phẩm. Thông tin
mua sản phẩm (BuyItems) bao gồm mã sản phẩm (item) và số lượng (quantity). Thông tin
khách hàng gồm tên (name), email, danh sách các sản phẩm đã mua (BuyItems).
Các ví dụ:
Sản phẩm cầm tay:
 6307, Máy khoan 13mm, Makita, 1,4kg, Nhật Bản, 1150000 VND, Điện
 201, Bộ sản phẩm máy khoan,vặn vít, MAKITA, 3kg, Trung Quốc, 700000 VND, Pin
Máy phát điện:
 MM30N, Mô tơ điện 1 pha vỏ gang 3HP 2.2KW, TGM, 23kg, Vietnam, 1500000 VND, 1/5/2018
 MM30C, Mô tơ điện 1 pha vỏ nhôm 3HP 2.2KW ,TGM, 20kg, Vietnam, 2000000 VND, 1/4/2018
 MA40N, Mô tơ điện 1 pha vỏ nhôm 4HP 3.0Kw ,TGM, 21kg, Vietnam, 1000000 VND, 3/4/2018
Máy cắt:
 D28720, Máy cắt sắt 355mm, Dewalt, 20kg, 6500000 VND, Trung Quốc
 MT413, Máy cắt đá 110mm 1250W, Maktec, 2,9kg, 1160000 VND, Trung Quốc
Danh sách các đơn hảng khách hàng:
 Nguyen Tai taing@gmail.com
- item=(201, Bộ sản phẩm máy khoan,vặn vít, …), quantity=4
- item=( MM30N, Mô tơ điện 1 pha vỏ gang 3HP 2.2KW, …), quantity=3
 Tran Bao, tranbao@gmail.com
- Item=(6307, Máy khoan 13mm ,…), quantity =10
- item=( MT413, Máy cắt đá 110mm 1250W,…), quantity =3

Yêu cầu:
1) Định nghĩa các lớp biểu diễn dữ liệu dựa vào lược đồ thiết kế lớp ở trên
2) Viết phương thức getName xác định tên của sản phẩm
3) Viết phương thức isProducer xác định xem một ấn phẩm có phải do một nhà sản xuất có
tên cho trước sản xuất không
4) Viết phương thức promotionFee tính giá khuyến mải một sản phẩm khi được khuyến mãi
(1.5đ), biết rằng, với:
- Máy cắt = 0.8 * Đơn giá.
- Sản phẩm cầm tay hay máy phát điện = Đơn giá * 0.75
5) Viết phương thức howManyHandToolsandGenerator đếm số sản phẩm cầm tay và máy
phát điện trong danh sách các sản phẩm
6) Viết phương thức getItemsOfNation trong danh sách lấy danh sách các sản phẩm của
một quốc gia cho trước
7) Viết phương thức sortByProducer sắp xếp danh sách các sản phẩm theo thứ tự tăng dần
tên của nhà sản xuất
8) Viết phương thức finetotal tính tổng tiền trong một đơn hang của khách hàng

You might also like