



















Preview text:
ĐẠI HỌC DUY TÂN
TRƯỜNG KHOA HỌC MÁY TÍNH
KHOA KHOA HỌC MÁY TÍNH ĐỒ ÁN CÁ NHÂN MÔN HỌC :
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – CS311
GIẢNG VIÊN HƯỚNG DẪN
: NGUYỄN MINH NHẬT
SINH VIÊN THỰC HIỆN
: NGUYỄN DI ĐAN MSSV : 29211321747 LỚP MÔN HỌC : CS311 AI LỚP SINH HOẠT : K29TKM2 Đà Nẵng, 12/2024
CHƯƠNG I GIỚI THIỆU BÀI TOÁN
1.1. Giới thiệu bài toán
Để quản lý hồ sơ học sinh của trường THPT nhà trường cần các thông tin sau: Lớp và các
thông tin về cá nhân của mỗi học sinh.
Mỗi học sinh có các thông tin sau: Mã, Họ tên, năm sinh, quê quán.
Yêu cầu 1: Xây dựng HocSinh để quản lý thông tin của mỗi học sinh.
Yêu cầu 2: Xây dựng các phương thức thêm, hiển thị thông tin của mỗi học sinh.
Yêu cầu 3: Cài đặt chương trình có các chức năng sau: Thêm học sinh mới.
Hiển thị các học sinh 20 tuổi.
Cho biết số lượng các học sinh có tuổi là 23 và quê ở DN. Xoá học sinh theo
Thoát chương trình Hãy thực hiện:
Thiết kế giao diện GUI để thực hiện được tất cả các chức năng nêu trên
Thiết kế cơ sở dữ liệu phù hợp cho project. Dữ liệu đọc và lưu từ file hoặc từ Hệ
Quản Trị CSDL như: MS. Access, SQL Server, MySQL v.v… 1.2.1. Đầu vào +Cơ sở dữ liệu:
Lựa chọn Hệ thống file văn bản, gồm các file: HocSinh.txt : Ma :HoTen :QueQuan :NamSinh 01 :Nguyễn Di Đan :Hà Tĩnh :2003 02 :Nguyễn Bá Anh Huy :Đà Nẵng :2005 03 :Nguyễn Dương Phú :Quảng Bình :2005 1.2.2. Đầu ra Xây dựng các lớp: +HocSinh class.
Xây dựng lớp HSHocSinh (hồ sơ học sinh) với các phương thức: Thêm học sinh mới.
Hiển thị danh sách học sinh.
Hiển thị các học sinh 20 tuổi.
Cho biết số lượng các học sinh có tuổi là 23 và quê ở DN. Xoá học sinh theo mã. Thoát chương trình.
CHƯƠNG II PHÂN TÍCH VÀ THIẾT KẾ
1.1. Phân tích
1.1.1. Lựa chọn ngôn ngữ lập trình
Ngôn ngữ lập trình: Java
Công cụ phát triển: NetBean (hoặc Eclipse hoặc Visual Code v.v..)
Môi trường vận hành: Thực hiện PC, Desktop với hệ điều hành Window X.
1.2. Thiết kế
1.2.1. Thiết kế cơ sở dữ liệu
Hệ thống lưu trữ: Hệ thống File văn bản (dạng *.txt)
Gồm các file có cấu trúc như sau: a. HocSinh.txt: Ma :HoTen :QueQuan :NamSinh 01 :Nguyễn Di Đan :Hà Tĩnh :2003 02 :Nguyễn Bá Anh Huy :Đà Nẵng :2005 03 :Nguyễn Dương Phú :Quảng Bình :2005
1.2.2. Thiết kế giao diện
1.2.2.1. Giao diện Command Line
CHƯƠNG TRÌNH QUẢN LÝ HỌC SINH 1 .Thêm học sinh.
2 .Hiển thị danh sách học sinh.
3 .Hiển thị các học sinh 20 tuổi
4 .Hiển thị số lượng học sinh 23 tuổi và quê quán DN. 5 .Xóa học sinh theo mã. 6 .Thoát
Vui lòng lựa chọn chức năng:____
Hình 1. Giao diện chinh dạng Command Line
1.2.2.2. Giao diện GUI
Hình 2. Giao diện chinh dạng đồ hoạ
1.2.3. Thiết kế lớp 1.2.3.1. Thiết kế lớp a. Lớp HocSinh : Tên lớp : HocSinh.java Thuộc tính < String ma; String hoTen, queQuan; int namSinh; > Phương thức < public HocSinh() { }
public HocSinh(String ma, String hoTen, String queQuan, int namSinh) {
this.ma = ma; this.hoTen = hoTen; this.queQuan = queQuan; this.namSinh = namSinh; } public String getMa() { return ma; }
public void setMa(String ma) { this.ma = ma; } public String getHoTen() { return hoTen; }
public void setHoTen(String hoTen) { this.hoTen = hoTen; } public String getQueQuan() { return queQuan; }
public void setQueQuan(String queQuan) { this.queQuan = queQuan; } public int getNamSinh() { return namSinh; }
public void setNamSinh(int namSinh) { this.namSinh = namSinh; } public void nhapThongTin(){
Scanner sc = new Scanner(System.in);
System.out.print("Nhap ma hoc sinh: "); this.ma = sc.nextLine();
System.out.print("Nhap ho ten: "); this.hoTen = sc.nextLine();
System.out.print("Nhap que quan: "); this.queQuan = sc.nextLine();
System.out.print("Nhap nam sinh: "); this.namSinh = sc.nextInt(); sc.nextLine(); }
@Override public String toString() { return "HocSinh{" + "ma=" +
ma + ", hoTen=" + hoTen + ", queQuan=" + queQuan + ", namSinh=" + namSinh + '}'; } }>
Hình 3. Hình code HocSinh trong NeaBeans trong lớp HocSinh b. Lớp HSHocSinh Tên lớp :HSHocSinh.java Thuộc tính < String lop;
ArrayList danhSach = new ArrayList<>();
Scanner sc = new Scanner(System.in); >
Phương thức File f = new File("HocSinh.txt"); Scanner scf = new Scanner(f); while(scf.hasNextLine()){ String line = scf.nextLine();
if(line.contains("Ma")) continue;
String[] part = line.split("\\:");// cắt lấy chuỗi String {Ma,
Hoten,QueQuan, Namsinh} tới dấu : là 1 String mới nằm trong mảng String part
HocSinh hs = new HocSinh(part[0].trim(),part[1].trim(), part[2].trim(),
Integer.parseInt(part[3].trim())); danhSach.add(hs); } }catch(IOException e){
System.out.println("Loi: "+e.getMessage()); } } public void nhapLop(){
Scanner sc = new Scanner(System.in);
System.out.print("Nhap lop: "); this.lop = sc.nextLine(); } public void themHocSinh(){
HocSinh hocSinh = new HocSinh(); hocSinh.nhapThongTin(); this.danhSach.add(hocSinh);
System.out.println("Da them hoc sinh."); } public void hienThi(){
for (HocSinh hocSinh : danhSach) {
System.out.println(hocSinh.toString() + "Lop: " + this.lop); } }
public void hienThiHocSinh20Tuoi(){ for (HocSinh hocSinh :
danhSach) { if(hocSinh.namSinh == 2004)
System.out.println(hocSinh.toString()
+ "Lop: " + this.lop); else System.out.println("Khong co hoc sinh nao 20 tuoi"); } }
public void soLuongHocSinh23TuoiQueDN(){ int count = 0; for (HocSinh hocSinh : danhSach) {
if(hocSinh.namSinh == 2001 && hocSinh.getQueQuan().equals("Da Nang")) count++; }
System.out.println("So hoc sinh 23 tuoi va que o DN la: " + count); } boolean check = false;
public void xoaHocSinhTheoMa(){
System.out.print("Nhap ma hoc sinh can xoa: ");
String maXoa = sc.nextLine();
Iterator iterator = danhSach.iterator(); while(iterator.hasNext()){
HocSinh hocSinh = iterator.next();
if(hocSinh.getMa().equals(maXoa)) iterator.remove(); check = true;} } if(check){
System.out.println("Da xoa hoc sinh co ma: " + maXoa); }
else System.out.println("Khong co hoc sinh nay."); } public void setUpFile(){ try{
FileOutputStream fos = new FileOutputStream("HocSinh.txt");
String header = String.format("%-5s\t:%-20s\t:%-15s\t:%-10s",
"Ma", "HoTen","QueQuan","NamSinh"); fos.write(header.getBytes()); }catch(IOException e){
System.out.println("Loi: "+e.getMessage()); } } public void writeFile(){ try{
FileOutputStream fos = new FileOutputStream("HocSinh.txt", true); for(HocSinh hs : danhSach){
String line = String.format("\n%-5s\t:%-20s\t:%-15s\t:%-10d",
hs.ma, hs.hoTen, hs.queQuan, hs.namSinh); fos.write(line.getBytes()); } }catch(IOException e){
System.out.println("Loi: "+e.getMessage()); } } }
Hình 4. Hình code trong NeaBeans lớp HSHocSinh c. Lớp GUI_QLHS Tên lớp : GUI_QLHS.java
Hình 5.. Hình code trong NeaBeans lớp GUI_QLHS 1.2.4. Sơ đồ lớp
Hình 6.. Hình ảnh sơ đồ lớp CHƯƠNG III
CÀI ĐẶT VÀ KIỂM THỬ
3.1. GIAO DIỆN CHÍNH
3.1.1. Giao diện Comman Line
1. Chức năng thêm học sinh
Đã thêm học sinh thành công.
2. Chức năng hiển thị danh sách.
Hiển thị danh sách thành công.
3. Chức năng hiển thị các học sinh 20 tuổi. Hiển thị thành công.
4. Chức năng hiển thị số lượng học sinh 23 tuổi và quê ở Đà Nẵng. Hiển thị thành công.
5. Chức năng xóa học sinh.