Giải Bài Toán - Chương Trình Quản Lý Người Yêu - Java

Thông báo:

Bạn muốn website của mình xuất hiện tại thanh bên phải tại QuangNinhBay.Com đặt liên kết tại bài viết dưới đây.




Đề bài: Viết 1 chương trình quản lý Người Yêu:

Trong Class: NguoiYeu:
MaNY - String,TenNY – String, NamSinh – Int, NgayBatDau - String, NgayKeThuc – String

Bao gồm các chức năng sau:
1 – Tạo ngẫu nhiên 3 đối tượng người yêu. 
2 – Thêm người yêu mới theo các thuộc tính trên. 
3 – Sửa Năm Sinh người yêu và ngày kết thúc. 
4 – Xóa NY 
5- Xuất danh sách NY gồm đầy đủ thông tin và Tuổi của NY 
6 - Sắp xếp người yêu theo năm sinh. 
7 -Sắp xếp ngược theo năm sinh Check lỗi: 
Check trùng Mã NY, Check năm sinh kiểu số.

Cách Giải:

Đầu tiên theo đề bài chúng ta sẽ tạo 2 Class là: Main NguoiYeu4.
Tiếp đến bạn tiến hành khai báo cho class NguoiYeu (xem code dưới mình có hướng dẫn chi tiết trong code):

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package NguoiYeu4;

/**
 *
 * @author QuangNinhBay.Com
 */
public class NguoiYeu4 {
//    Tiến hành khai báo các biến như đề bài:
//    MaNY - String,TenNY – String, NamSinh – Int, NgayBatDau - String, NgayKeThuc – String
//    thuộc tính private để 1 đối tượng bao đóng chính nó và ẩn dữ liệu với bên ngoài, giúp an toàn dữ liệu với bên ngoài(xem thêm tại link dưới code này)
    private String MaNY, TenNY, NgayBatDau, NgayKetThuc;
    private int NamSinh;
//    Tạo 1 Contructor không tham số
//    Alt + insert

    public NguoiYeu4() {
    }
    
//    Tạo 1 Contructor có tham số
//    Alt + insert

    public NguoiYeu4(String MaNY, String TenNY, String NgayBatDau, String NgayKetThuc, int NamSinh) {
        this.MaNY = MaNY;
        this.TenNY = TenNY;
        this.NgayBatDau = NgayBatDau;
        this.NgayKetThuc = NgayKetThuc;
        this.NamSinh = NamSinh;
    }
//    Thêm setter và getter
//     Alt + insert

    public String getMaNY() {
        return MaNY;
    }

    public void setMaNY(String MaNY) {
        this.MaNY = MaNY;
    }

    public String getTenNY() {
        return TenNY;
    }

    public void setTenNY(String TenNY) {
        this.TenNY = TenNY;
    }

    public String getNgayBatDau() {
        return NgayBatDau;
    }

    public void setNgayBatDau(String NgayBatDau) {
        this.NgayBatDau = NgayBatDau;
    }

    public String getNgayKetThuc() {
        return NgayKetThuc;
    }

    public void setNgayKetThuc(String NgayKetThuc) {
        this.NgayKetThuc = NgayKetThuc;
    }

    public int getNamSinh() {
        return NamSinh;
    }

    public void setNamSinh(int NamSinh) {
        this.NamSinh = NamSinh;
    }
//    tạo ToString để in ra màn hình nhanh
//    Alt + insert

    @Override
    public String toString() {
        return "NguoiYeu4{" + "MaNY=" + MaNY + ", TenNY=" + TenNY + ", NgayBatDau=" + NgayBatDau + ", NgayKetThuc=" + NgayKetThuc + ", NamSinh=" + NamSinh + '}';
    }
    
}

Chúng ta bắt đầu vào xây dựng chương trình trong hàm main nhé:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package NguoiYeu4;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @author QuangNinhBay.Com
 */
public class main {
//    static: phải dùng vì các lớp static mới có thể gọi đến nhau

    static Scanner sc = new Scanner(System.in); // gọi scanner để ta có thể nhập dữ liệu từ bàn phím
    static ArrayList arrayListNguoiYeu4 = new ArrayList(); //tạo mảng Arrlist

    public static void main(String[] args) {
        ChonChucNang(); //gọi hàm ChonChucNang() ở dưới vào hàm main
    }

    static void ChonChucNang() {
        String input;
        do {
            menu(); //gọi hàm menu(); ở dưới vào hàm main
            System.out.println("Xin mời chọn chức năng: ");
            input = sc.nextLine();
            switch (input) {//dùng switch case rồi truyền input vào nó
                case "1":
                    Tao3NguoiYeu();
                    break;
                case "2":
                    ThemNY();
                    break;
                case "3":
                    Sua();
                    break;
                case "4":
                    Xoa();
                    break;
                case "5":
                    Xuat();
                    break;
                case "6":
                    SapXep();
                    break;
                case "7":
                    SapXepNguoc();
                    break;
                case "8":
                    System.out.println("Bạn đã thoát chương trình");
                    break;
                default:
                    System.out.println("Chức năng không tồn tại");
            }

        } while (!input.equals("8"));// điều khiện input khác 8 sẽ lặp lại bằng 8 sẽ kết thúc vòng lặp

    }
//    Tạo 1 menu hiện đầy đủ các chức năng như đề bài

    static void menu() {
        System.out.println("--------------------------------");
        System.out.println("1. Tạo Ngẫu Nhiên 3 Người Yêu");
        System.out.println("2. Thêm Từng Người");
        System.out.println("3. Sửa Năm Sinh người yêu và ngày kết thúc");
        System.out.println("4. Xoá NY");
        System.out.println("5. Xuất danh sách NY gồm đầy đủ thông tin và Tuổi của NY");
        System.out.println("6. Sắp xếp người yêu theo năm sinh");
        System.out.println("7. Sắp xếp ngược theo năm sinh");
        System.out.println("8. Thoát");
        System.out.println("--------------------------------");
    }

    static void Tao3NguoiYeu() {
        // khai báo 3 đối tượng NguoiYeu
        NguoiYeu4 ny1 = new NguoiYeu4("QN1", "Nguyễn Minh Anh", "1-1-2020", "2-1-2020", 1998);
        NguoiYeu4 ny2 = new NguoiYeu4("QN2", "Trần Lan Anh", "1-1-2019", "2-1-2019", 1995);
        NguoiYeu4 ny3 = new NguoiYeu4("QN3", "Vũ Minh Ngọc", "1-1-2010", "2-1-2010", 2000);
//        add vào mảng
        arrayListNguoiYeu4.add(ny1);
        arrayListNguoiYeu4.add(ny2);
        arrayListNguoiYeu4.add(ny3);
        System.out.println("Tạo 3 người yêu thành công");
    }

    static void ThemNY() {
        int input;
        System.out.println("Nhập vào số người yêu muốn tạo");
        input = Integer.parseInt(sc.nextLine());
        for (int i = 0; i < input; i++) {
//            Tạo ra 5 biến chứa giá trị ở đây là String
            String MNY, TNY, NBD, NKT, NamSinh;
            do {
                System.out.println("Mã Người yêu thứ " + i);
                MNY = sc.nextLine();
            } while (Checkma(MNY));// nếu điều kiện trả về true thì lặp lại

            System.out.println("Tên Người yêu thứ " + i);
            TNY = sc.nextLine();
            System.out.println("Ngày bắt đầu Người yêu thứ " + i);
            NBD = sc.nextLine();
            System.out.println("Ngày kết thúc Người yêu thứ " + i);
            NKT = sc.nextLine();
            do {
                System.out.println("năm sinh Người yêu thứ " + i);
                NamSinh = sc.nextLine();
            } while (!checkNS(NamSinh));// nếu điều kiện trả về true thì lặp lại
            int EpKieuintNamSinh = Integer.parseInt(NamSinh);//ép kiểu năm sinh từ String sang int vì đề bài yêu cầu chúng ta năm sinh là int
            NguoiYeu4 ny = new NguoiYeu4(MNY, TNY, NBD, NKT, EpKieuintNamSinh);//tạo 1 đối tượng người yêu chứa những thuộc tính ta vừa nhập vào
            arrayListNguoiYeu4.add(ny); //ép đối tượng vừa nhập vào mảng
        }
    }

    static void Sua() {
//        chưa có dữ liệu trong mảng sẽ return lại và không chạy tiếp
        if (arrayListNguoiYeu4.isEmpty()) {
            System.out.println("Dữ liệu trống");
            return;
        }
        String input = "";
        System.out.println("Nhập vào Mã Người Yêu muốn sửa: ");
        input = sc.nextLine();
        for (int i = 0; i < arrayListNguoiYeu4.size(); i++) {// arrayListNguoiYeu4.size() lặp số lần bằng kích thước mảng hiện có
            if (input.equalsIgnoreCase(arrayListNguoiYeu4.get(i).getMaNY())) {//nếu input bằng với mã sinh viên đã tồn tại thì chạy bên trong if. equalsIgnoreCase: so sánh 2 chuỗi không phân biệt in hoa in thường
                System.out.println("Mời bạn sửa năm sinh của người yêu có mã " + arrayListNguoiYeu4.get(i).getMaNY());
                int NamSinh = Integer.parseInt(sc.nextLine());//nhập vào năm sinh
                arrayListNguoiYeu4.get(i).setNamSinh(NamSinh);//set vào mảng arrlist tại vị trí thứ i
                System.out.println("Mời bạn sửa ngày kết thúc của người yêu có mã " + arrayListNguoiYeu4.get(i).getMaNY());
                input = sc.nextLine();
                arrayListNguoiYeu4.get(i).setNgayKetThuc(input);
                System.out.println("Đã sửa thành công");
                break;
            }
        }
    }

    static void Xoa() {
        if (arrayListNguoiYeu4.isEmpty()) {
            System.out.println("Dữ liệu trống");
            return;
        }
        String input = "";
        System.out.println("Nhập vào mã người yêu muốn xoá: ");
        input = sc.nextLine();
        for (int i = 0; i < arrayListNguoiYeu4.size(); i++) {
            if (input.equalsIgnoreCase(arrayListNguoiYeu4.get(i).getMaNY())) {
                arrayListNguoiYeu4.remove(i);
                System.out.println("Xoá thành công");
                break;
            }
        }
    }
//    Dùng Collections.sort để sắp xếp

    static void Xuat() {
        if (arrayListNguoiYeu4.isEmpty()) {
            System.out.println("Dữ liệu trống");
            return;
        }
        for (NguoiYeu4 x : arrayListNguoiYeu4) {
            System.out.println(x.toString());
        }
    }

    static void SapXep() {
        Collections.sort(arrayListNguoiYeu4, new Comparator() {
            @Override
            public int compare(NguoiYeu4 o1, NguoiYeu4 o2) {
                if (o1.getNamSinh() > o2.getNamSinh()) {
                    return 1;
                } else if (o1.getNamSinh() < o2.getNamSinh()) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });
        System.out.println("Đã sắp xếp");
        for (NguoiYeu4 x : arrayListNguoiYeu4) {
            System.out.println(x.toString());
        }
    }

    static void SapXepNguoc() {
        Collections.sort(arrayListNguoiYeu4, new Comparator() {
            @Override
            public int compare(NguoiYeu4 o1, NguoiYeu4 o2) {
                if (o1.getNamSinh() > o2.getNamSinh()) {
                    return -1;
                } else if (o1.getNamSinh() < o2.getNamSinh()) {
                    return 1;
                } else {
                    return 0;
                }
            }
        });
        System.out.println("Đã sắp xếp ngược");
        for (NguoiYeu4 x : arrayListNguoiYeu4) {
            System.out.println(x.toString());
        }
    }
    
    static boolean Checkma(String MNY) {
        for (int i = 0; i < arrayListNguoiYeu4.size(); i++) {
            if (MNY.equalsIgnoreCase(arrayListNguoiYeu4.get(i).getMaNY())) {
                System.out.println("Trùng rồi bạn ây");
                return true;
            }
        }
        return false;
    }

    static boolean checkNS(String DuLieu) {
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(DuLieu);
        return matcher.matches();
    }
}

Chúc các bạn thành công
Có gì khó hiểu bình luận dưới bài viết nhé.

CÓ THỂ BẠN ĐANG TÌM