You are on page 1of 10

Person

- name : String // Họ tên


- address : String // Địa chỉ
 Person(name : String , address : String ) // Phương thức khởi tạo 2 tham số
 getName():String // Phương thức lấy thuộc tính họ tên
 getAddress():String // Phương thức lấy thuộc tính địa chỉ
 setAddress(address : String) : void // Phương thức thiết lập thuộc tính địa chỉ
 toString():String // Phương thức trả về tất cả thông tin của lớp Person

Student Teacher
- numCourses : int = 0 // Số môn học - numCourses : int = 0 // Số môn giảng dạy
- courses : String[ ] // Danh sách các môn học - courses : String[ ] // Danh sách các môn
- grades : Int[ ] // điểm số giảng dạy
 Student (name : String , address : String ) //  Teacher(name : String , address : String ) //
Phương thức khởi tạo 2 tham số trong đó mặc Phương thức khởi tạo 2 tham số , trong đó
định số môn học bằng 0 mặc định số môn giảng dạy = 0
 toString() : String // Phương thức trả về thuộc  toString() : String // Phương thức trả về
tính của Student thuộc tính của Teacher
 addCourseGrade( course : String , grade : int ) :  addCourse(course : String): boolean //
void // Phương thức thêm môn học với lớp (1 Phương thức thêm một môn giảng dạy (1
sinh viên không học quá 30 môn học) giảng viên không được dạy quá 5 khóa học
 printGrades() : void // Phương thức hiển thị đồng thời)
môn học và điểm cho Student  removeCourse(course : String ) :
 getAverageGrade() : double // Phương thức boolean // Phương thức xóa môn giảng
tính trung bình cho điểm của các môn học dạy

MSSV : 501210390

Phạm đăng khoa – cd21ct4 – lt_10

Code Person :

package LT_10 ;
/**
 * Xây dựng một lớp người (Person) , thuộc tính gồm họ tên
(name) , địa chỉ (address)
 * Xây dựng các phương thức :
 *  - Các phương thức tạo lập
 *  - Các phương thức truy cập dữ liệu
 *  - Phương thức trả về tất cả các thông tin của lớp
(toString())
 * @id 501210390
 * @author Phạm đăng khoa
 * @date 30/09/2003
 */
public class Person {
    // thuộc tính ===
    private String name ; // Họ tên
    private String address ; // Địa chỉ
   
    // phương thức ===

    /**
     * Phương thức khởi tạo 2 tham số
     * @param name - Họ tên
     * @param address - Địa chỉ
     */
    public Person(String name , String address){
        this.name = name ;
        this.address = address ;
    }// End Person(String name , String address)
    /**
     * Phương thức thiết lập thuộc tính họ tên
     * @param name String (name là kiểu chuỗi ký tự)
     */
    public void setName(String name) {
        this.name = name;
    }// End setName(String name)

    /**
     * Phương thức lấy thuộc tính họ tên
     * @return String - họ tên
     */
    public String getName() {
        return name;
    }// End getName()

    /**
     * Phương thức thiết lập thuộc tính địa chỉ
     * @param address String (address là kiểu chuỗi ký tự)
     */
    public void setAddress(String address) {
        this.address = address;
    }// End setAddress(String address)

    /**
     * Phương thức lấy thuộc tính địa chỉ
     * @return String - Địa chỉ
     */
    public String getAddress() {
        return address;
    }// End getAddress()

    /**
     * Phương thức trả về tất cả thông tin của lớp Person
     */
    @Override
    public String toString() {
        return name + "(" + address + ")" ;
    }// End toString()
}// End class Person

Code Student :

package LT_10;

import java.util.Scanner;

import org.omg.CORBA.portable.ValueOutputStream;

/**
 * Định nghĩa lớp sinh viên (Student) được kế thừa từ lớp
Person. Thuộc tính riêng
gồm: số môn học (munCourses), danh sách các môn học (courses) ,
điểm số (grades)
 * Các phương thức:
 - Các phương thức tạo lập
 - Các phương thức truy cập dữ liệu
 - Phươngthức thêm môn học với lớp
addCourseGrade(course:String,grade:int):void
 - Phương thức tính điểm trung bình getAverageGrade():double
 - Phương thức hiển thị điểm số và khóa học printGrades():void
 - Phương thức trả về tất cả các thông tin của lớp (toString())
 - Đối với sinh viên, chúng ta cần duy trì các khóa học đã học
và các điểm tương ứng; thêm một khóa học với lớp, in tất cả các
khóa học đã thực
hiện và tính trung bình. Giả sử rằng một sinh viên mất không
quá 30 khóa học cho
toàn bộ chương trình.
* @id 501210390
 * @author Phạm đăng khoa
 * @date 30/09/2003
 */
public class Student extends Person{
    private int numCourses = 0; // Số môn học
    private String[] courses; // Danh sách các môn học
    private int[] grades ; // điểm số
    /**
     * Phương thức khởi tạo 2 tham số trong đó mặc định số môn
học bằng 0
     * @param name String - họ tên
     * @param address String - địa chỉ
     */
    public Student(String name , String address){
        super(name, address);
        int maxcourses = 30 ;
        this.courses = new String[maxcourses];
        this.grades = new int[maxcourses] ;
    }// End Student(String name , String address)

    /**
     * Phương thức trả về thuộc tính của Student
     * @return - Họ tên ....... địa chỉ ..........
     */
    @Override
    public String toString() {
       String thongtin = "Student: " + super.toString() ;
       return thongtin ;
    }// End toString()

    /**
     * Phương thức thêm môn học với lớp (1 sinh viên không học
quá 30 môn học)
     * @param course String - Các Môn học
     * @param grade Int - Điểm số
     */
    public void addCourseGrade(String course , int grade){
        // Cập nhật danh sách các môn học
        courses[numCourses] = course ;
        // Cập nhật điểm các môn học
        grades[numCourses] = grade ;
        // Số môn học tăng thêm 1
        numCourses = numCourses + 1 ;
    }// End addCourseGrade(String course , int grade)
   

    /*
     * Phương thức hiển thị môn học và điểm cho Student
     */
    public void printGrades(){
        System.out.println("So mon hoc: " + numCourses );
        System.out.println("Danh sach mon hoc : " );
        for (int i = 0; i < this.numCourses; i++) {
            System.out.println(courses[i] + ":" + grades[i]);
        }
    } // End printGrades()
    /**
     * Phương thức tính trung bình cho điểm của các môn học
     * @return double - điểm trung bình
     */
    public double getAverageGrade(){
        int tb = 0 ;
        for ( int i = 0; i < courses.length; i++) {
            tb = tb + grades[i];
        }
        return (double)tb/numCourses ;
    }// End getAverageGrade()
}// End class Student

Code Teacher :
package LT_10;

import java.sql.Blob;
/**
 * Định nghĩa lớp giáo viên (Teacher) được kế thừa từ lớp
Person. Thuộc tính riêng
gồm: số môn giảng dạy (munCourses), danh sách các môn (courses)
 * Các phương thức:
 - Các phương thức tạo lập
 - Các phương thức truy cập dữ liệu
 - Phươngthức thêm môn giảng dạy
addCourse(course:String):boolean
 - Phương thức xóa môn giảng dạy
removeCourse(course:String):boolean
 - Phương thức trả về tất cả các thông tin của lớp (toString())
 - Đối với giáo viên, chúng ta cần phải duy trì các khóa học
được giảng dạy hiện nay và có thể thêm hoặc xóa một khóa học
được
giảng dạy. Giả sử rằng một giáo viên dạy không quá 5 khóa học
đồng thời.
 *@id 501210390
 * @author Phạm đăng khoa
 * @date 30/09/2003
 */
public class Teacher extends Person{
    // Thuộc tính ==========
    int numCourses = 0; // Số môn giảng dạy
    private String[] courses ; // Danh sách các môn giảng dạy
    // Phương thức =========
    /**
     * Phương thức khởi tạo 2 tham số , trong đó mặc định số
môn giảng dạy = 0 ;
     * @param name String - Họ tên
     * @param address String - Địa chỉ
     */
    public Teacher(String name , String address ){
        // Gọi phương thức khởi tạo từ lớp cha Person
        super(name, address);
        int maxcourses = 5 ;
        courses = new String[maxcourses];
    }// End Teacher(String name , String address)

    /**
     * Phương thức trả về thuộc tính của Teacher
     * @return String -Họ tên: ......địa chỉ ...... Số môn
giảng dạy .......
     * Danh sach mon hoc .......
     */
    @Override
    public String toString() {
        String thongtin = "Teacher: " + super.toString() + "\
nSo mon giang day : " + this.numCourses ;

       thongtin = thongtin + "\nDanh sach mon hoc: ";


       for (int i = 0; i < this.numCourses; i++) {
           thongtin = thongtin + this.courses[i] + " " ;
       }
       return thongtin ;
    }// End toString()

    /**
     * Phương thức thêm một môn giảng dạy (1 giảng viên không
được dạy quá 5 khóa học đồng thời)
     * @param course String - Môn giảng dạy
     * @return return boolean
     */
    public boolean addCourse(String course){
        // Kiểm tra xem số môn giảng dạy không lớn hơn 5
        if(this.numCourses >= 5){
            return false ;
        }
        // Kiểm tra có trùng tên giảng dạy không ?
        for (int i = 0; i < numCourses; i++) {
            if(courses[i].equals(course)){
                return false ;
            }
        }
        // Cập nhật môn giảng dạy vào danh sách
        courses[numCourses] = course ;
        // Tăng số môn đang giảng dạy lên 1
        numCourses = numCourses + 1 ;
        // Thông báo thêm thành công
        return true ;
    }// End addCourse(String course)

    /**
     * Phương thức xóa môn giảng dạy
     * @param course String - Môn giảng dạy
     * @return return boolean
     */
    public boolean removeCouse(String course){
        // Đặt cờ hó là false
        boolean flag = false ;
        int timkiem = -1 ;
        // Kiếm trả xem môn học muốn xóa có trùng với môn học
có sẵn chưa ? Nếu đúng cờ hó sẽ true
        for (int i = 0; i < numCourses; i++) {
            if(courses[i].equals(course)){
                timkiem = i ;
                flag = true ;
                break ;
            }
        }
        if(flag){
            for (int i = timkiem; i < numCourses-1; i++) {
                courses[i] = courses[i+1];
            }
            // Số môn giảng dạy trừ đi 1
            numCourses = numCourses -1 ;
            // thông báo thêm thành công
            return true ;
        } else {
            // thông báo thêm không thành công
            return false ;
        }
    }// End remove(String course)
}// End class Teacher

Test :
package LT_10;

import java.util.Scanner;

public class test {


    public static void main(String[] args) {
        // Student
    Student h1 =  new Student("khoa1","84D ben phu dinh");
    System.out.println(h1.toString());
    h1.addCourseGrade("A1", 5);
    h1.addCourseGrade("A2", 10);
    h1.addCourseGrade("A3", 25);
    h1.addCourseGrade("A4", 50);
    h1.printGrades();
    System.out.println("trung binh : " + h1.getAverageGrade());
    // Teacher
    Teacher h2 = new Teacher("Quynh anh", "hau giang q6");
    String[] courses = {"A101" , "A102" , "A103" , "A102"};
    for (String course : courses) {
        if(h2.addCourse(course)){
            System.out.println(course + " Them dc ");
        }else {
            System.out.println(course + " Ko dc ");
        }
    }
    System.out.println(h2.toString());
    for (String course : courses) {
        if(h2.removeCouse(course)){
            System.out.println(course + " da xoa");
        } else {
            System.out.println(course + " ko xoa dc");
        }
    }
    System.out.println(h2.toString());

}
}

You might also like