Header Ads

Bài tập lập trình Java-2 -DHTH8A

Bài Tập 2. Viết chương trình xây dựng đối tượng Sinh viên gồm có các thuộc tính sau:

 Mã sinh viên là số nguyên,
 Họ tên: chuỗi ký tự,
 Địa chỉ: chuỗi ký tự,
 Số điện thoại: là số bao gồm 7 chữ số,

1. 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, override phương thức equals và toString của lớp Object.

2. Viết các constructor để khởi tạo đối tượng (constructor mặc định, constructor có tham số).

3. Xây dựng lớp cho phép nhập vào N sinh viên. Xuất danh sách trên ra màn hình theo thứ tự tăng dần của mã sinh viên.

CODE : 
Tạo 1 project mới ten  : Student

Student.java

public class Student {

    private int id, sdt;
    private String name, andress;
    
    public Student(int id, int sdt, String name, String andress) { 
     /**contructor day du tham so*/
        super();
        this.id = id;
        this.sdt = sdt;
        this.name = name;
        this.andress = andress;
    }
    public Student() {    /**contructor khong tham so*/
        super();
    }
    
    /**Cac phuong thuc set get*/
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getSdt() {
        return sdt;
    }
    public void setSdt(int sdt) {
        this.sdt = sdt;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAndress() {
        return andress;
    }
    public void setAndress(String andress) {
        this.andress = andress;
    }
    
    @Override
    public boolean equals(Object arg0) {
        // TODO Auto-generated method stub
        return super.equals(arg0);
    }
    
    /**overide phuong thuc toSring*/
    @Override
    public String toString() {
        return "Student [id=" + id 
        + ", sdt=" + sdt
        + ", name=" + name
        + ", andress=" + andress + "]";
    }
    
}


StudentManagement.java

package com.thanhcs.student;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class StudentManagement {

    /**doi tuong Student tao ra tu class Student*/
    private Student mStudent; 
    /**doi tuong Student tao ra tu class Student*/
    private ArrayList<Student> arrStudent;
    /**Phuong thuc nhap tu ban phim*/
    Scanner sc ;
    
    /**Contructor khoi tao*/
    public StudentManagement() {
        super();
         mStudent = new Student();
        arrStudent =  new ArrayList<Student>();
        sc = new Scanner(System.in);
    }
    
    /**Xây dựng lớp cho phép nhập vào N sinh viên*/
    public void InputStudent(int n)
    {
        for(int i = 0 ; i < n ; i ++)
        {
            
            System.out.println("Student ID : ");
            int Id = sc.nextInt(); sc.nextLine();
            System.out.println("Student's Name : ");
            String name = sc.nextLine();
            System.out.println("Student Number : ");
            int sdt = sc.nextInt();sc.nextLine();
            System.out.println("Student's Andress : ");
            String andress = sc.nextLine();
            mStudent = new Student(Id,sdt,  name, andress);
            arrStudent.add(mStudent);
            
            /**de test :P */
//            Student a =  new Student(12, 123, "Thanh", "qqqqq");
//            Student a1 =  new Student(112, 3, "Thanh", "qqqqq");
//            Student a2 =  new Student(2, 13, "Thanh", "qqqqq");
//            Student a3 =  new Student(124, 23, "Thanh", "qqqqq");
//            arrStudent.add(a);
//            arrStudent.add(a1);
//            arrStudent.add(a2);
//            arrStudent.add(a3);
            
        }
    }
    
    /**Xuat toan bo thong tin hs*/
    public void OutputStudent()
    {
        for(int i = 0 ; i < arrStudent.size() ; i ++)
        {
            
            System.out.println(arrStudent.get(i));
            
        }
    }
    
    /**Sap xep theo thứ tự tăng dần của mã sinh viên.*/
    public void SortByID()
    {
        /** xem SortByStudentID.java
         *  Xem lai cach su dung Collections nha.
         *  */
        Collections.sort(arrStudent,new SortByStudentID());
    }
    
    
}

Chu Y :    

Khi dùng Scanner để nhập dữ liệu trong Java rất có khả năng bị trôi lệnh. Ví dụ đơn giản như bạn nhập số trước rồi mới nhập xâu ký tự, khi đó ký tự “n” (enter) khi bạn nhập số vẫn trong bộ đệm mà không được lấy ra, kết quả là khi thực hiện lệnh tiếp theo nhập xâu nó sẽ lấy ký tự “n” làm bạn không nhập vào được. Để giải quyết vấn đề này ta làm như sau:
int age = Integer.parseInt(scan.nextLine());   
// tranh troi lenh nhu khi dung age = scan.nextInt()
String name = scan.nextLine();

Hoặc sau mỗi lần nhập số bạn sử dụng lệnh sc.nextLine();

vd: int Id = sc.nextInt(); sc.nextLine();


SortByStudentID.java

package com.thanhcs.student;
import java.util.Comparator;
public class SortByStudentID implements Comparator<Student>{
    
    @Override
    public int compare(Student o1, Student o2) {
        //sap xep theo thu tu tang dan cua id
        return (o1.getId()>o2.getId()) ? 1 
              : ((o1.getId()<o2.getId()) ? -1 : 0);
    }
    
}

MainControl.java


public class MainControl {

    public static void main(String[] args) {
    
        StudentManagement mS = new StudentManagement();
        mS.InputStudent(3); /**Nhap vao 3 sinh vien */
        mS.SortByID(); /**sap sep theo id*/
        mS.OutputStudent(); /**Xuat danh sach sinh vien*/
        
    }
}


No comments:

Powered by Blogger.