I-Assignment full package ASSIGNMENT; import java.util.Scanner; //import gói để sử dụng các phương thức scanner public class Assigment { //Class chính trong chương trình Scanner vl = ne
Trang 1Giáo viên: Nguyễn Văn Định
Đà Nẵng, 2/2019
Trang 3Môn học: LẬP TRÌNH JAVA 1
Mã môn học: MOB1201
Họ và tên sinh viên: Hồ Ngọc Dũng
Mã số sinh viên: PD02792
GVHD: Nguyễn Văn Định
Ngày hoàn thành: Tháng 02 Năm 2019
Đánh
giá:………
………
……… ………
………
……… ………
………
………
……… ………
………
……… ………
………
………
………
………
………
FPT Polytechnic Đà Nẵng
PROJECT: QUẢN LÝ SINH VIÊN SINH VIÊN: Hồ Ngọc Dũng LỚP: PT14308 - MOB
Trang 4I-Assignment full
package ASSIGNMENT;
import java.util.Scanner;
//import gói để sử dụng các phương thức scanner
public class Assigment { //Class chính trong chương trình
Scanner vl = new Scanner(System.in);//Tạo đối tượng Scanner
public Sinhvien[] svien;//Khai báo mảng chưa có phần tử
public class Sinhvien {
public static void main(String[] args) {
System.out.println("\t\t\t*ĐỂ THỰC THI CÁC CHỨC NĂNG VUI LÒNG NHẬP THÔNG TIN TRƯỚC! ");
Trang 5Assigment obj = new Assigment();//tạo đối tượng "obj"trong class Assigment
Sinhvien[] hvien = obj.nhapHV();
obj.svien = hvien;
System.out.println(" -");
obj.menu();
}
public Sinhvien[] nhapHV() {
System.out.println("*Nhập danh sách học viên.");
Sinhvien[] svien = new Sinhvien[5];//Khởi tạo mảng svien với n phần tử
for (int i = 0; i < svien.length; i++) { //Khỏi chạy vòng lặp for cho các phần tử đầu vào Sinhvien sivn = new Sinhvien(); //Tạo đối tượng "sivn"
Scanner lc = new Scanner(System.in); //Tạo đối tượng Scanner để lấy dữ liêu từ bàn phím
System.out.println("~Sinh viên: " + (i + 1));//Xuất ra dòng Thông báo sinh viên thứ n System.out.println("Nhập mã số sinh viên: "); //Yêu cầu nhập MSSV từ bàn phím
String masosv = lc.nextLine();
while (!masosv.matches("[0-9]{4}")) {
//Sử dụng phương thức matches để xác định chuỗi nhập vào có phù hợp với biểu thức(regex) của MSSV hay không
System.err.println("MSSV vừa nhập không hợp lệ! Vui lòng nhập lại !");
//sử dụng điều kiện phủ định dùng toán tử "!" để xuất ra thông báo sai, nếu đúng thì tiếp tục masosv = lc.nextLine();//Vòng lặp while sẽ tiêp tục cho đến khi dữ liệu nhập đúng
Trang 7double diem = lc.nextDouble();
while (diem < 0 && diem > 10) {//Điều kiện của điểm là 0>=diem>=10 System.err.println("Điểm vừa nhập không hợp lệ! Vui lòng nhập lại"); diem = Double.parseDouble(lc.nextLine());
for (int i = 0; i < svien.length; i++) {
//Vòng lặp for sử dụng câu điều kiện if để phân loại học lực
Sinhvien sivn = svien[i];
Trang 8}
}
return svien;
}
public void menu() { //Danh sách tổng hợp các chức năng trong chương trình
while (true) {//Vòng lặp sẽ chạy liên tục mỗi khi thực hiện xong 1 chức năng
System.out.println(ANSI_PURPLE_BACKGROUND + "||1&2.Nhập và Xuất danh sách
học viên Thông tin xuất gồm: họ và tên, điểm, email và học lực ||");
System.out.println(ANSI_PURPLE_BACKGROUND + "||3 Tìm kiếm học viên theo
khoảng điểm nhập từ bàn phím ||");
System.out.println(ANSI_PURPLE_BACKGROUND + "4.Tìm kiếm học viên theo học
lực nhập từ bàn phím ||");
System.out.println(ANSI_PURPLE_BACKGROUND + "||5.Tìm học viên theo mã số và
cập nhật thông tin học viên ||");
System.out.println(ANSI_PURPLE_BACKGROUND + "||6.Sắp xếp học viên theo điểm
Trang 9System.out.println(ANSI_PURPLE_BACKGROUND + "||9 Xuất danh sách học viên có điểm trên điểm trung bình của lớp ||");
System.out.println(ANSI_PURPLE_BACKGROUND + "||10.Tổng hợp số học viên theo học lực ||");
int choice = lc.nextInt();
switch (choice) {//Sử dụng câu lệnh rẽ nhánh để tạo danh sách các chức năng riêng biệt case 1:
xuatDS();//Phương thức sẽ gọi 1 trong 10 chức năng (case) này
Trang 10default://case này sẽ thực hiện khi không một case nào trên có giá trị true
System.err.println("Chức năng vừa nhập không tồn tại \n Vui lòng nhập lại !");
Trang 11//Phương thức được gọi từ các case qua câu lệnh switch(chức năng xuất danh sách học viên) System.out.print("\tHọ tên \t| Điểm | Email \t\t |\t Học lực\n");
for (int i = 0; i < svien.length; i++) {
Sinhvien sivn = svien[i];
System.out.format("%20s %10.1f %20s %15s\n", sivn.hoten, sivn.diem, sivn.email, sivn.hocluc);
}
}
public void timKiemTimHocVienTheoHocLuc() {
////Phương thức được gọi từ các case qua câu lệnh switch(chức năng tìm kiếm học viên theo học lực)
System.out.println("3.Tìm kiếm học viên theo học lực nhập từ bàn phím");
System.out.print("nhập học lực(không dấu): ");
String hl = vl.nextLine();
for (int i = 0; i < svien.length; i++) {
Sinhvien sivn = svien[i];
if (hl.equalsIgnoreCase("yeu")) {
System.out.println("Họ và tên: " + sivn.hoten + " Học lực: " + sivn.hocluc);
} else if (hl.equalsIgnoreCase("Trung binh")) {
System.out.println("Họ và tên: " + sivn.hoten + " Học lực: " + sivn.hocluc);
} else if (hl.equalsIgnoreCase("Kha")) {
System.out.println("Họ và tên: " + sivn.hoten + " Học lực: " + sivn.hocluc);
} else if (hl.equalsIgnoreCase("Gioi")) {
System.out.println("Họ và tên: " + sivn.hoten + " Học lực: " + sivn.hocluc);
} else if (hl.equalsIgnoreCase("Xuat sac")) {
Trang 12System.out.println("Họ và tên: " + sivn.hoten + " Học lực: " + sivn.hocluc);
}
}
}
public void timKiemHocVienTheoKhoangDiem() {
//Phương thức được gọi từ các case qua câu lệnh switch(chức năng tìm kiếm học viên theo khoảng điểm)
System.out.println("4.Tìm kiếm học viên theo khoảng điểm nhập từ bàn phím: ");
System.out.println("*Nhập điểm tối thiểu: ");
Double diemtt = Double.parseDouble(vl.nextLine());
System.out.println("*Nhập điểm tối đa: ");
Double diemtd = Double.parseDouble(vl.nextLine());
for (int i = 0; i < svien.length; i++) {
Sinhvien sivn = svien[i];
if (diemtt <= sivn.diem && sivn.diem <= diemtd) {
System.out.println("Họ tên: " + sivn.hoten + "\t" + "Điểm: " + sivn.masosv);
Trang 13//Phương thức được gọi từ các case qua câu lệnh switch(chức năng tìm kiếm học viên theo MSSV)
System.out.println("5.Tìm học viên theo mã số và cập nhật thông tin học viên");
System.out.println("Nhập MSSV: ");
String mso = vl.nextLine();
for (int i = 0; i < svien.length; i++) {
if (svien[i].masosv.equals(mso)) {
Sinhvien ma = svien[i];
System.out.format("Họ tên: %10s\n", ma.hoten);
Sinhvien sivn = svien[i];
}
}
}
public void sapXepHocVienTheoDiem() {
//Phương thức được gọi từ các case qua câu lệnh switch(chức năng sắp sếp học viên theo điểm) System.out.println("6.Sắp xếp học viên theo điểm");
for (int i = 0; i < svien.length; i++) {
for (int j = i + 1; j < svien.length; j++) {
Trang 14for (int i = 0; i < svien.length; i++) {
Sinhvien hten = svien[i];
Sinhvien point = svien[i];
System.out.format("Họ tên: %10s Điểm: %10.1f", hten.hoten, point.diem);
}
}
public void Xuat5hociviendiemcao() {
//Phương thức được gọi từ các case qua câu lệnh switch(chức năng Xuất 5 học viên có điểm cao nhất)
System.out.println("5 học viên có điểm cao nhất");
for (int i = 0; i < svien.length; i++) {
Trang 15public void diemTBcualop() {
//Phương thức được gọi từ các case qua câu lệnh switch(chức năng tính điểm trung bình của lớp) System.out.println("8.Điểm trung bình của cả lớp");
Trang 16System.out.printf("Điểm trung bình của lớp = %.0f ", tong / dem);
}
public void DShocviendiemtrenTB() {
//Phương thức được gọi từ các case qua câu lệnh switch(chức năng xuất danh sách học viên trên điểm trung bình
System.out.println("9.Học viên có điểm trên điểm trung bình của lớp");
Trang 17//Phương thức được gọi từ các case qua câu lệnh switch(chức năng Tổng hợp số học viên theo học lực
System.out.println("10.Tổng hợp số học viên theo học lực");
int biendem = 0, yeu = 0, kha = 0, tbinh = 0, gioi = 0, xsac = 0;
for (int i = 0; i < svien.length; i++) {
System.out.println("Số sinh viên có học lực yếu: " + yeu);
System.out.println("Số sinh viên có học lực khá: " + kha);
System.out.println("Số sinh viên có học lực trung bình: " + tbinh);
System.out.println("Số sinh viên có học lực giỏi: " + gioi);
System.out.println("Số sinh viên có học lực suất sắc: " + xsac);
Trang 18}
}
Trang 19II-Kết quả in ra
Trang 201.Chức năng 1&2
Trang 229.Chức năng 10