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
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: