Bài tập Java OOP: Chương trình quản lý Album CD
Trong bài tập này chúng ta sẽ thực hiên chương trình quản lý Album CD bằng ngôn ngữ Java.
Đây là một bài tập quản lý khá chi tiết, trong bài toán này cần xây dựng các phương thức quản lý CD và tạo Menu theo yêu cầu của đề bài.
Đề bài: Chương trình quản lý Album CD.
Viết chương trình xây dựng đối tượng CD gồm có các thuộc tính sau:
- Mã CD là số nguyên.
- Tựa CD: chuỗi ký tự.
- Ca sỹ: chuỗi ký tự.
- Số bài hát: số nguyên (>0).
- Giá thành : số thực (>0).
Các thuộc tính khai báo private, định nghĩa các phương thức get/set cho từng thuộc tính.
Bài viết này được đăng tại [free tuts .net]
Viết các constructor để khởi tạo đối tượng CD.
Override phương thức toString của lớp Object.
Xây dựng lớp lưu danh sách các CD (dùng mảng).
- Phương thức thêm 1 CD vào danh sách, thêm thành công nếu không trùng mã CD và kích thước mảng còn cho phép.
- Tính số lượng CD có trong danh sách.
- Tình tổng giá thành của các CD.
- Phương thức sắp xếp danh sách giảm dần theo giá thành.
- Phương thức sắp xếp danh sách tăng dần theo tựa CD.
- Phương thức xuất toàn bộ danh sách
Viết lớp cho phần kiểm nghiệm. Dùng menu case thực hiện các chức năng theo yêu cầu.
Chương trình quản lý Album CD.
Hướng dẫn:
Chúng ta sẽ đi theo lần lượt các yêu cầu của đề bài:
- Đầu tiên chúng ta sẽ tạo class Album với các thuộc tính maCD, tenCD, caSy, soBH, giaThanh.
- Khởi tạo constructor mặc định và constructor có tham số.
- Khởi tạo các phương thức getter và settter.
- khởi tạo phương thức toSring để hiển thị kết quả dưới dạng chuỗi.
- Tiếp đến xây dụng phương thức thêm CD.
- Xây dụng phương thức tính tổng số lượng CD có trong Album.
- Xây dựng phương thức tính tổng giá thành.
- Xây dựng phương thức sắp xếp theo giá thành và tựa CD.
- Xây dụng phương thức xuất danh sách Album.
- Cuối cùng sẽ tạo class Main với các menu như đề bài yêu cầu.
public class Album { //khai báo các thuộc tính private int maCD; private String tenCD; private String caSy; private int soBH; private float giaThanh; //khởi tạo constructor mặc định public Album() { } //khởi tạo constructor có tham số public Album(int cD, String tenCD, String caSy, int soBH, float giaThanh) { this.maCD = maCD; this.tenCD = tenCD; this.caSy = caSy; this.soBH = soBH; this.giaThanh = giaThanh; } //------------begin getter and setter-------------- public int getMaCD() { return maCD; } public void setMaCD(int maCD) { this.maCD = maCD; } public String getTenCD() { return tenCD; } public void setTenCD(String tenCD) { this.tenCD = tenCD; } public String getCaSy() { return caSy; } public void setCaSy(String caSy) { this.caSy = caSy; } public int getSoBH() { return soBH; } public void setSoBH(int soBH) { this.soBH = soBH; } public float getGiaThanh() { return giaThanh; } public void setGiaThanh(float giaThanh) { this.giaThanh = giaThanh; } //------------end getter and setter-------------- @Override public String toString() { return "Album{" + "cD=" + maCD + ", tenCD='" + tenCD + ''' + ", caSy='" + caSy + ''' + ", soBH=" + soBH + ", giaThanh=" + giaThanh + '}'; } //khởi tạo phương thức hiện thị theo format public void hienThiAlbum(){ System.out.printf("%-10d %-20s %-20s %-10d %-20.1f \n",maCD,tenCD,caSy,soBH,giaThanh); } }
import org.w3c.dom.ls.LSOutput; import java.security.spec.RSAOtherPrimeInfo; import java.util.Scanner; public class Main { static Scanner sc = new Scanner(System.in); static void nhapAlbum(Album ab) { System.out.print("Nhập mã CD: "); ab.setMaCD(sc.nextInt()); sc.nextLine(); System.out.print("Nhập tên CD : "); ab.setTenCD(sc.nextLine()); System.out.print("Nhập tên ca sĩ : "); ab.setCaSy(sc.nextLine()); System.out.print("Nhập số lượng bài hát : "); ab.setSoBH(sc.nextInt()); System.out.print("Nhập giá thành : "); ab.setGiaThanh(sc.nextFloat()); } public static void main(String[] args) { Album alb[] = null; int a, n = 0; boolean flag = true; do { System.out.println("Bạn chọn làm gì?"); System.out.println("1.Nhập thông tin CD \n" + "2.Xuất danh sách Album.\n" + "3.Tính tổng giá thành \n" + "4.Tổng số lượng CD \n" + "5.Sắp xếp giảm dần theo giá thành\n"+"6.Sắp xếp tăng dần theo tựa CD\n"+"Nhập số khác để thoát"); a = sc.nextInt(); switch (a) { case 1: System.out.println("Nhập số lượng CD : "); n = sc.nextInt(); alb = new Album[n]; for (int i = 0; i < n; i++) { System.out.println("CD thứ " + (i + 1)+": "); alb[i] = new Album(); nhapAlbum(alb[i]); } break; case 2: System.out.printf("%-10s %-20s %-20s %-10s %-20s \n", "Mã CD", "Tên CD", "Tên ca sỹ", "Số bài hát", "Giá thành"); for (int i = 0; i < n; i++) { alb[i].hienThiAlbum(); } break; case 3: int tong = 0; for (int i = 0; i < n; i++) { tong += alb[i].getGiaThanh(); } System.out.println("" + "Tổng giá thành là : " + tong); break; case 4: System.out.println("Tổng số lượng CD là : " + n); break; case 5: Album temp = alb[0]; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (alb[i].getGiaThanh() < alb[j].getGiaThanh()) { temp = alb[j]; alb[j] = alb[i]; alb[i] = temp; } } } System.out.println("Sắp xếp thành công, Nhập số 2 để kiểm tra!"); break; case 6: temp = alb[0]; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (alb[i].getTenCD().compareTo(alb[j].getTenCD())>0) { temp = alb[j]; alb[j] = alb[i]; alb[i] = temp; } } } System.out.println("Sắp xếp thành công, Nhập số 2 để kiểm tra!"); break; default: System.out.println("Goodbye"); flag = false; break; } }while (flag) ; } }
Kết quả:
1.Nhập thông tin CD.
2.Xuất danh sách Album.
3.Tính tổng giá thành.
4.Tổng số lượng CD.
5.Sắp xếp giảm dần theo giá thành.
6.Sắp xếp tăng dần theo tựa CD.
Như vậy là chúng ta đã thực hiện xong chương trình quản lý Album CD. Chúc các bạn thực hiện thành công!!!