Tài liệu học Java từ cơ bản đến nâng cao

Tài liệu học Java từ cơ bản đến nâng cao cho người mới

Trong các series bài tập trước chúng ta đã được làm khá nhiều các bài tập cơ bản để làm quen với cú pháp Java. Trong bài hôm nay mình sẽ chia sẻ cho mọi người tài liệu học Java từ cơ bản đến nâng cao bằng các bài tập khó hơn, phức tạp hơn nhé!

Tài liệu học Java từ cơ bản đến nâng cao

Đề bài

Xây dựng ứng dụng quản lý danh sách trung tâm. Trong đó có các chức năng sau:

  1. Chức năng quản lý sinh viên.
  • Mỗi sinh viên có các thuộc tính bao gồm mã sinh viên, họ tên, ngày sinh, điểm và lớp.
  • Các chức năng để quản lý thông tin một sinh viên bao gồm
    • Xem danh sách toàn bộ sinh viên
    • Tìm kiếm sinh viên theo mã sinh viên
    • Thêm sinh viên
    • Cập nhật thông tin sinh viên
    • Xóa sinh viên
  1. Chức năng quản lý lớp học.
  • Mỗi lớp học có các thuộc tính bao gồm: mã lớp, tên lớp
  • Các chức năng để quản lý thông tin một lớp học bao gồm:
    • Hiển thị danh sách lớp đang có
    • Hiển thị danh sách học viên của một lớp
    • Thêm lớp học
    • Cập nhật thông tin lớp học
    • Xóa lớp học
    • Thống kê mỗi lớp có bao nhiêu bạn học sinh.

Lời giải

Cùng xem lời giải cho các bài tập trên ở dưới đây nha!

Xây dựng ứng dụng quản lý danh sách trung tâm. Trong đó có các chức năng sau:

  1. Chức năng quản lý sinh viên.
  • Mỗi sinh viên có các thuộc tính bao gồm mã sinh viên, họ tên, ngày sinh, điểm và lớp.
  • Các chức năng để quản lý thông tin một sinh viên bao gồm
    • Xem danh sách toàn bộ sinh viên
    • Tìm kiếm sinh viên theo mã sinh viên
    • Thêm sinh viên
    • Cập nhật thông tin sinh viên
    • Xóa sinh viên
  1. Chức năng quản lý lớp học.
  • Mỗi lớp học có các thuộc tính bao gồm: mã lớp, tên lớp
  • Các chức năng để quản lý thông tin một lớp học bao gồm:
    • Hiển thị danh sách lớp đang có
    • Hiển thị danh sách học viên của một lớp
    • Thêm lớp học
    • Cập nhật thông tin lớp học
    • Xóa lớp học
    • Thống kê mỗi lớp có bao nhiêu bạn học sinh.

Chương trình:

Student.class

package com.company.model;

public class Student {
private String id;

private String name;

private String birthday;

private double mark;

private Clazz clazz;

public Student(String id, String name, String birthday, double mark) {
this.id = id;
this.name = name;
this.birthday = birthday;
this.mark = mark;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getBirthday() {
return birthday;
}

public void setBirthday(String birthday) {
this.birthday = birthday;
}

public double getMark() {
return mark;
}

public void setMark(double mark) {
this.mark = mark;
}

public Clazz getClazz() {
return clazz;
}

public void setClazz(Clazz clazz) {
this.clazz = clazz;
}

@Override
public String toString() {
return id + "," + name + "," + birthday + "," + mark + "," + clazz;
}
}

Clazz.class

package com.company.model;

public class Clazz {
private String id;

private String name;

public Clazz(String id, String name) {
this.id = id;
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return id + "," + name;
}
}

IGeneralManagement

package com.company.controller;

public interface IGeneralManagement<T> {
void showAll();

void addNew(T t);

void updateById(String id, T t);

void removeById(String id);

int findById(String id);
}

StudentManagement.class

package com.company.controller;

import com.company.model.Clazz;
import com.company.model.Student;

import java.util.ArrayList;
import java.util.List;

public class StudentManagement implements IGeneralManagement<Student> {
private List<Student> students = new ArrayList<>();

public List<Student> getStudents() {
return students;
}

public void setStudents(List<Student> students) {
this.students = students;
}

@Override
public void showAll() {
for (Student student : students) {
System.out.println(student);
}
}

@Override
public void addNew(Student student) {
students.add(student);
}

@Override
public void updateById(String id, Student student) {
int index = findById(id);
if (index != -1) {
students.set(index, student);
} else {
System.out.println("Không có mã sinh viên này");
}
}

@Override
public void removeById(String id) {
int index = findById(id);
if (index != -1) {
students.remove(index);
} else {
System.out.println("Không có mã sinh viên này");
}
}

@Override
public int findById(String id) {
int index = -1;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(id)) {
index = i;
break;
}
}
return index;
}

public void addStudentToClass(int index, Clazz clazz) {
Student student = students.get(index);
student.setClazz(clazz);
students.set(index, student);
}

public int countStudentInClass(Clazz clazz) {
int count = 0;
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
if (student.getClazz().getId().equals(clazz.getId())) {
count++;
}
}
return count;
}
}

ClassManagement.class

package com.company.controller;

import com.company.model.Clazz;

import java.util.ArrayList;
import java.util.List;

import static com.company.view.StudentMenu.studentManagement;

public class ClassManagement implements IGeneralManagement<Clazz> {
private List<Clazz> classList = new ArrayList<>();

public List<Clazz> getClassList() {
return classList;
}

public void setClassList(List<Clazz> classList) {
this.classList = classList;
}

@Override
public void showAll() {
for (Clazz clazz : classList) {
System.out.println(clazz);
}
}

@Override
public void addNew(Clazz clazz) {
classList.add(clazz);
}

@Override
public void updateById(String id, Clazz clazz) {
int index = findById(id);
if (index != -1) {
classList.set(index, clazz);
} else {
System.out.println("Không tồn tại mã lớp này!");
}
}

@Override
public void removeById(String id) {
int index = findById(id);
if (index != -1) {
classList.remove(index);
} else {
System.out.println("Không tồn tại mã lớp này!");
}
}

@Override
public int findById(String id) {
int index = -1;
for (int i = 0; i < classList.size(); i++) {
if (classList.get(i).getId().equals(id)) {
index = i;
break;
}
}
return index;
}

public Clazz findById(int index) {
return classList.get(index);
}

public void showNumberOfStudentInClass() {
for (Clazz clazz : classList) {
int count = studentManagement.countStudentInClass(clazz);
System.out.println("Lớp " + clazz.getName() + " có " + count + " học viên");
}
}
}

StudentMenu.class

package com.company.view;

import com.company.controller.StudentManagement;
import com.company.model.Student;

import static com.company.Main.scanner;

public class StudentMenu {
public static StudentManagement studentManagement = new StudentManagement();

public void run() {
int choice;
do {
menu();
System.out.println("Nhập lựa chọn của bạn:");
choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1: {
showAllStudent();
break;
}
case 2: {
addNewStudent();
break;
}
case 3: {
updateStudent();
break;
}
case 4: {
removeStudent();
break;
}
}
} while (choice != 0);
}

private void removeStudent() {
System.out.println("Nhập mã sinh viên cần chỉnh sửa:");
String id = scanner.nextLine();
studentManagement.removeById(id);
}

private void updateStudent() {
System.out.println("Nhập mã sinh viên cần chỉnh sửa:");
String id = scanner.nextLine();
Student student = inputStudentFromKeyBoard();
studentManagement.updateById(id, student);
}

private void addNewStudent() {
Student student = inputStudentFromKeyBoard();
studentManagement.addNew(student);
}

private Student inputStudentFromKeyBoard() {
System.out.println("Nhập mã sinh viên:");
String id = scanner.nextLine();
System.out.println("Nhập tên sinh viên:");
String name = scanner.nextLine();
System.out.println("Nhập điểm:");
double mark = scanner.nextDouble();
scanner.nextLine();
System.out.println("Nhập ngày sinh:");
String birthday = scanner.nextLine();
Student student = new Student(id, name, birthday, mark);
return student;
}

private void showAllStudent() {
studentManagement.showAll();
}

private void menu() {
System.out.println("QUẢN LÝ SINH VIÊN");
System.out.println("1. Hiển thị danh sách sinh viên");
System.out.println("2. Thêm sinh viên");
System.out.println("3. Cập nhật thông tin sinh viên");
System.out.println("4. Xóa sinh viên");
System.out.println("5. Sắp xếp");
System.out.println("6. Hiển thị 5 sinh viên điểm cao nhất");
System.out.println("0. Quay lại");
}
}

ClassMenu.class

package com.company.view;

import com.company.controller.ClassManagement;
import com.company.controller.StudentManagement;
import com.company.model.Clazz;
import com.company.model.Student;

import static com.company.Main.scanner;
import static com.company.view.StudentMenu.studentManagement;

public class ClassMenu {
private ClassManagement classManagement = new ClassManagement();

public void run() {
int choice;
do {
menu();
System.out.println("Nhập lựa chọn:");
choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1: {
showAllClass();
break;
}
case 2: {
addNewClass();
break;
}
case 3: {
updateClassInfo();
break;
}
case 4: {
removeClass();
break;
}
case 5: {
addStudentToClass();
break;
}
case 6: {
showStudentInClass();
break;
}
}
} while (choice != 0);
}

private void showStudentInClass() {
classManagement.showNumberOfStudentInClass();
}

private void addStudentToClass() {
System.out.println("Nhập mã lớp muốn thêm sinh viên vào:");
String id = scanner.nextLine();
int index = classManagement.findById(id);
if (index == -1) {
System.out.println("Không có mã lớp này");
} else {
studentManagement.showAll();
Clazz clazz = classManagement.findById(index);
System.out.println("Nhập mã sinh viên mà bạn muốn thêm vào trong lớp:");
String studentId = scanner.nextLine();
int studentIndex = studentManagement.findById(studentId);
studentManagement.addStudentToClass(studentIndex, clazz);
}
}

private void removeClass() {
System.out.println("Nhập mã lớp cần chỉnh sửa:");
String id = scanner.nextLine();
classManagement.removeById(id);
}

private void updateClassInfo() {
System.out.println("Nhập mã lớp cần chỉnh sửa:");
String id = scanner.nextLine();
Clazz clazz = inputClassFromKeyboard();
classManagement.updateById(id, clazz);
}

private void addNewClass() {
Clazz clazz = inputClassFromKeyboard();
classManagement.addNew(clazz);
}

private Clazz inputClassFromKeyboard() {
System.out.println("Nhập mã lớp:");
String id = scanner.nextLine();
System.out.println("Nhập tên lớp:");
String name = scanner.nextLine();
return new Clazz(id, name);
}

private void showAllClass() {
classManagement.showAll();
}

private void menu() {
System.out.println("QUẢN LÝ LỚP HỌC");
System.out.println("1. Hiển thi danh sách lớp");
System.out.println("2. Thêm lớp học mới");
System.out.println("3. Chỉnh sửa thông tin lớp học");
System.out.println("4. Xóa lớp học");
System.out.println("5. Thêm sinh viên vào lớp học");
System.out.println("6. Thống kê mỗi lớp có bao nhiêu sinh viên");
System.out.println("0. Quay lại");
}
}

MainMenu.class

package com.company;

import com.company.view.ClassMenu;
import com.company.view.StudentMenu;

import java.util.Scanner;

public class Main {
public static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
int choice;
ClassMenu classMenu = new ClassMenu();
StudentMenu studentMenu = new StudentMenu();
do {
menu();
System.out.println("Nhập lựa chọn:");
choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1: {
classMenu.run();
break;
}
case 2: {
studentMenu.run();
break;
}
}
} while (choice != 0);
}

private static void menu() {
System.out.println("MENU QUẢN LÝ");
System.out.println("1. Quản lý lớp học");
System.out.println("2. Quản lý sinh viên");
System.out.println("0. Thoát");
}
}

KHÓA HỌC LẬP TRÌNH CĂN BẢN CHO NGƯỜI MỚI BẮT ĐẦU!


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Bài viết liên quan

Leave a Reply

Your email address will not be published.

TÀI LIỆU DEV WORLD
Cẩm nang phát triển bền vững với nghề lập trình!