TRƯỜNG ĐẠI HỌC MỞ HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN ---BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đề số 26: Quản lý thu học phí của Trung tâm tin học ngoại ngữ Giảng viên hướng dẫ
Trang 1TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề số 26:
Quản lý thu học phí của Trung tâm tin học ngoại ngữ
Giảng viên hướng dẫn : ThS Nguyễn Thành Huy
Sinh viên thực hiện : Mai Tuyết Anh - 2210A01
Hà Thị Anh Thư - 2210A04
Phạm Thanh Tùng - 2210A04
Trần Minh Hiếu - 2210A06
Trang 2PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN
HỌ VÀ TÊN CÔNG VIỆC ĐÁNH GIÁ
KẾT QUẢ
GHI CHÚ
Mai Tuyết Anh 1 Phân tích, đưa ra hướng giải quyết đề
2 Kiểm tra, bổ sung chức năng cho các lớp
3 Kiểm thử bộ dữ liệu test, test các chức năng
Hoàn thành
Hà Thị Anh Thư 1 Bổ sung chức năng cho các lớp
2 Hoàn thiện bản word báo cáo BTL
Hoàn thành
Phạm Thanh Tùng 1 Xác định, mô tả và cài đặt các lớp trong
chương trình
2 Test các chức năng
Hoàn thành
Trần Minh Hiếu 1 Xác định, mô tả và cài đặt các lớp trong
chương trình
2 Xác định sơ đồ lớp của bài toán
Hoàn thành
Trang 3I PHÁT BIỂU BÀI TOÁN:
1.Phát biểu bài toán:
Trung tâm tin học ngoại ngữ ABC có các môn học như Excel, PowerPoint,Word, IELTS,… mỗi môn học lại được chia thành các lớp được tổ chức theolịch học cụ thể trong tuần Mỗi lớp học theo lịch đều có một mức học phí khácnhau, muốn tham gia khóa học tại trung tâm cần chọn lớp để đăng kí và thanhtoán trước học phí để trở thành học viên Xây dựng hệ thống để quản lý việcthu học phí của trung tâm ABC gồm những đối tượng quản lý sau:
- Người thu tiền: Thực hiện thu học phí
- Học viên: Đăng kí lớp, nộp học phí và tham gia khóa học
- Hóa đơn: Chứa thông tin thanh toán của học viên
- Lịch học: Theo các ngày trong tuần
- Lớp: Mỗi lớp theo lịch lại có mức học phí khác nhau
+Constructor: hàm khởi tạo không tham số, có tham số
+Setter, getter: phương thức set, get cho các thuộc tính
+toString(): Override phương thức toString
Trang 7IV. MÔ TẢ THUẬT TOÁN VÀ CÁC BƯỚC THỰC HIỆN:
1 Khởi tạo đối tượng:
- Viết hàm khởi tạo không có tham số
- Viết hàm khởi tạo có tham số với các biến đầu vào tương ứng với các
thuộc tính được khai báo trong đối tượng
2.Nhập danh sách đối tượng:
- Nhập số lượng phần tử cần thêm
- Thực hiện gọi hàm thêm một phần tử vào danh sách
3.Hiện danh sách đối tượng:
- Sử dụng vòng lặp for lặp từ phần tử đầu tới phần tử cuối trong danh sách,
gọi phương thức hiện của đối tượng tương ứng
4.Ghi danh sách vào file:
- Implements giao diện Serializable trong đối tượng cần đọc
- Ghi danh sách vào file đối tượng tương ứng
Nếu ghi thành công in ra thông báo “Ghi file thành công”
5.Đọc danh sách từ file:
- Đọc file và lưu file vào danh sách đối tượng tương ứng
- In ra màn hình danh sách đối tượng tương ứng
6.Tìm kiếm theo mã:
- Nhập mã đối tượng cần tìm
- Dùng vòng lặp foreach và câu lệnh so sánh equals, nếu mã nhập vào trùng
với dữ liệu đã có thì hiện đối tượng ra màn hình
Trang 87.Sửa thông tin:
- Nhập mã đối tượng cần sửa thông tin
- Dùng vòng lặp for( duyệt theo chỉ số ) và câu lệnh so sánh equals, nếu mã
nhập vào trùng với dữ liệu đã có thì nhập lại các thông tin cần sửa của đối tượng ra
- Hiện lại danh sách đối tượng vừa sửa
8.Xóa theo mã:
- Nhập mã đối tượng cần xóa
- Dùng vòng lặp foreach và câu lệnh so sánh equals, nếu mã nhập vào trùng
với dữ liệu đã có thì gọi câu lệnh xóa remove
- Hiện lại danh sách đối tượng sau khi xóa
V. CÀI ĐẶT BÀI TOÁN:
1.Class LichHoc
package BaiTapLon;
import java.io.Serializable;
public class LichHoc implements Serializable{
private String thuHoc;
private String buoiHoc;
public LichHoc(String thuHoc, String buoiHoc) {
public String toString() {
return this.buoiHoc+" th "+ứ this.thuHoc;
Trang 9private String monHoc;
private double hocPhi;
private LichHoc lich;
public void nhapLop() {
Scanner sc = new Scanner(System.in);
Trang 10System.out.print("Mã l p: "); this.maLop =ớsc.nextLine();
System.out.print("Môn h c: "); this.monHoc =ọsc.nextLine();
System.out.print("H c phí: "); this.hocPhi =ọsc.nextDouble();
public String xemLichHoc() {
return this.lich.toString();
}
public String toString() {
return "\nMã l p: "+this.maLop+", Môn h c:ớ ọ
Trang 11public class DsLop {
private ArrayList<Lop> dsLop = new ArrayList<Lop>();
public ArrayList<Lop> getDsLop() {
public void nhapDsLop(){
Lop l = new Lop();
public void hienDsLop() {
for (Lop lop : dsLop) {
public void xoaLop() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p mã l p mu n xóa : ");ậ ớ ố String ml=sc.nextLine();
for (Lop lop:dsLop) {
Trang 12public void luuFile() throws FileNotFoundException,IOException {
File fname = new File("33.dat");
FileOutputStream fout = new FileOutputStream(fname);ObjectOutputStream out = new ObjectOutputStream(fout);out.writeObject(dsLop);
File fname = new File("33.dat");
FileInputStream fin = new FileInputStream(fname);ObjectInputStream in = new ObjectInputStream(fin);dsLop = new ArrayList<Lop>();
dsLop = (ArrayList) in.readObject();
public interface ILuong {
final double luongCB = 1450;
public abstract double tienluong();
public class Nguoi implements Serializable{
protected String hoTen;
protected String ngaySinh;
protected String gioiTinh;
protected String queQuan;
Trang 13public String getHoTen() {
public void nhap() {
Scanner sc = new Scanner(System.in);
System.out.print("Họ và tên: "); this.hoTen =sc.nextLine();
System.out.print("Ngày sinh: "); this.ngaySinh =sc.nextLine();
System.out.print("Gi i tính: "); this.gioiTinh =ớsc.nextLine();
System.out.print("Quê quán: "); this.queQuan =sc.nextLine();
}
public void hien() {
Trang 14private String maNTT;
private double heSoLuong;
public void nhap() {
Scanner sc = new Scanner(System.in);
System.out.println("Mã người thu ti n: "); this.maNTT =ềsc.nextLine();
super.nhap();
System.out.println("H s lệ ố ương: "); this.heSoLuong =sc.nextInt();
}
public void hien() {
Scanner sc = new Scanner(System.in);
Trang 15public class DsNguoiThuTien {
private ArrayList<NguoiThuTien> dsNTT = new
System.out.println("Không th thêm nhân viên ểnày do trùng mã!");
Trang 16public void hienDsNTT() {
System.out.println("\nDANH SÁCH NGƯỜI THU TI N");Ề
System.out.printf("%15s","MãNTT");
System.out.printf("%15s","TênNTT");
System.out.printf("%15s","Ngày sinh");
System.out.printf("%15s","Gi i tính");ớ
System.out.printf("%15s","Quê quán");
System.out.printf("%15s","H sl");ệ
System.out.printf("%15s","Ti n lề ương");
for (NguoiThuTien nguoiThuTien : this.dsNTT) {
System.out.print('\n');
nguoiThuTien.hien();
}
}
public void timkiemnguoitttheomntt(){
Scanner sc = new Scanner(System.in);
System.out.printf("%15s","Ngày sinh");
System.out.printf("%15s","Gi i tính");ớ
System.out.printf("%15s","Quê quán");
System.out.printf("%15s","H sl");ệ
System.out.printf("%15s","Ti n lề ương\n");
for(NguoiThuTien nguoiThuTien : dsNTT){
if(nguoiThuTien.getMaNTT().equals(n)==true){ nguoiThuTien.hien();
}
}
}
public void suaThongTinNguoithutien() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p vào mã ngậ ười thu ti n mu n s a ề ố ửthông tin"); String mntt = sc.nextLine();
Trang 17System.out.println("H s lệ ố ương: "); double
public void XoaNTT() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p mã ngậ ười thu ti n mu n xóa : ề ố
");
String mntt = sc.nextLine();
for(int j=0;j<dsNTT.size();j++) {
if(dsNTT.get(j).getMaNTT().equals(mntt)) { dsNTT.remove(j);
System.out.println("Xóa nhân viên thành công!!!");
File fname = new File("11.dat");
FileOutputStream fout = new FileOutputStream(fname); ObjectOutputStream out = new ObjectOutputStream(fout); out.writeObject(dsNTT);
File fname = new File("11.dat");
FileInputStream fin = new FileInputStream(fname); ObjectInputStream in = new ObjectInputStream(fin); dsNTT = new ArrayList<NguoiThuTien>();
Trang 18private String maHv;
private ArrayList<Lop> DsLopDaDangKy;
private ArrayList<NguoiThuTien> DsNguoiThuTien; private HoaDon hoaDonHocPhi = new HoaDon();
private int maHD=0;
private String maThu;
Trang 19public void setHoaDonHocPhi(HoaDon hoaDonHocPhi) {
this.hoaDonHocPhi = hoaDonHocPhi;
}
public void nhap() {
Scanner sc = new Scanner(System.in);
System.out.print("\nMã h c viên: "); ọ this.maHv = sc.nextLine();
public void DKLopHoc(ArrayList<Lop> dsl) {
Scanner sc = new Scanner(System.in);
for (Lop lop2 : DsLopDaDangKy) {
//làm thêm ch cứ năng đăng ký l pớ không b trùngị
l chị h cọ
if(lop.xemLichHoc().equals(lop2.xemLichHoc()))dem++;
Trang 20hoaDonHocPhi.congTienHoaDon(lop.getHocPhi());
hoaDonHocPhi.themVaoThongTinHoaDon(lop.toString());
}
}
}
public void hienLopDaDangKy() {
System.out.println(" -DANH SÁCH CÁC
public void xuatHoaDon() {
System.out.println(" -THÔNG TIN HÓA
public void LuuHoaDonVaoFile() {
try {
Trang 21PrintWriter pw = new PrintWriter("C:\\Bai tap lon\\Hoadon"+maHv +".txt", StandardCharsets.UTF_8);//có th tể ự
đ ngộ t oạ ra file n uế file không có s nẵ
pw.println("Mã h c viên: "+ọ this.maHv);
pw.println("H và tên: "+ọ this.hoTen);
pw.println("Ngày sinh: "+this.ngaySinh);
pw.println("Gi i tính: "+ớ this.gioiTinh);
pw.flush();//đ yẩ thông tin vào file
pw.close();//làm xong ph iả đóng file
public class DsHocVien {
ArrayList<HocVien> dsHocVien = new ArrayList<HocVien>(); private int demMaHoaDon = 1000000;
Trang 22public void nhapHocVien(){
HocVien hv = new HocVien();
hv.nhap();
for (HocVien hocVien : dsHocVien) {
if(hv.getMaHv().equals(hocVien.getMaHv())) { System.out.println("Không th thêm h c viên ể ọnày do b trùng mã h c viên!");ị ọ
public void hienDSHocVien() {
System.out.println("\nHI N DANH SÁCH H C VIÊN");Ệ Ọ
System.out.printf("%15s","MãHV");
System.out.printf("%15s","TênHV");
System.out.printf("%15s","Ngày sinh");
System.out.printf("%15s","Gi i tính");ớ
System.out.printf("%15s","Quê quán");
for (HocVien hocVien : dsHocVien) {
System.out.print('\n');
hocVien.hien();
}
}
public void dangKyLopHoc(ArrayList<Lop> dslop) {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p mã h c viên mu n đăng ký l p ậ ọ ố ớ
public void hienLopDaDangKy() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p vào mã h c viên mu n ki m tra ậ ọ ố ểcác l p đã đăng ký: ");ớ
String mhv = sc.nextLine();
for (HocVien hocVien : dsHocVien) {
Trang 23if (mhv.equals(hocVien.getMaHv()))
hocVien.hienLopDaDangKy();
}
}
public void xuatHoaDon() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p mã h c viên mu n xu t hóa đ n: ậ ọ ố ấ ơ
public void timkiemhocvientheomhv(){
Scanner sc = new Scanner(System.in);
public void suaThongTinHocVien() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p vào mã h c viên mu n s a thông ậ ọ ố ửtin"); String mhv = sc.nextLine();
for (HocVien hocVien : dsHocVien) {
Trang 24System.out.print("Quê quán: "); String queQuan
public void XoaHocVien() {
Scanner sc = new Scanner(System.in);
System.out.print("Nh p mã h c viên mu n xóa : ");ậ ọ ố String mhv = sc.nextLine();
for (int j = 0; j < dsHocVien.size(); j++) {
if (dsHocVien.get(j).getMaHv().equals(mhv)) { dsHocVien.remove(j);
System.out.println("Xóa h c viên thành ọcông!!!");
File fname = new File("22.dat");
FileOutputStream fout = new FileOutputStream(fname); ObjectOutputStream out = new ObjectOutputStream(fout); out.writeObject(dsHocVien);
File fname = new File("22.dat");
FileInputStream fin = new FileInputStream(fname); ObjectInputStream in = new ObjectInputStream(fin); dsHocVien = new ArrayList<HocVien>();
dsHocVien = (ArrayList) in.readObject();
in.close();
fin.close();
}
}
Trang 2510.Class HoaDon
package BaiTapLon;
import java.io.Serializable;
public class HoaDon implements Serializable{
private int maHoaDon;
private String thongTinHoaDon="";
private double tongTien;
public int getMaHoaDon() {
Trang 26import java.io.IOException;
import java.util.Scanner;
public class ClassChinh {
public static void main(String[] args) throwsFileNotFoundException, IOException, ClassNotFoundException {MenuTongQuat m = new MenuTongQuat();
public class MenuTongQuat {
DsLop dsl = new DsLop();
DsHocVien dshv = new DsHocVien();
DsNguoiThuTien dsntt = new DsNguoiThuTien();
Trang 27System.out.println("| 0 Quay v trang trề ước
Trang 28if (n2 < -1)
System.out.println("L a ch n sai, vui lòngự ọ
l a ch n l i!!!");ự ọ ạ
else {
Trang 29switch (n2) {case 1:
Trang 31Mã nv Họ tên Ngày sinh Giới tính Quê quán HSL
Nhân viên
Học viên
Mã hv Họ tên Ngày sinh Giới tính Quê quán
1 Quản lý danh sách học viên:
-Nhập và hiện danh sách học viên:
Trang 32-Thêm học viên vào danh sách học viên:
Trang 33-Xóa học viên theo mã học viên:
-Đăng kí lớp học:
-Hiển thị hóa đơn:
Trang 342 Quản lý danh sách người thu tiền:
Trang 35-Nhập và hiện danh sách thu tiền:
-Sửa thông tin người thu tiền theo mã người thu tiền:
Trang 36-Tìm kiếm người thu tiền theo mã người thu tiền:
-Xóa người thu tiền dựa theo mã người thu tiền:
3 Quản lý lớp học:
-Nhập và hiện danh sách lớp học:
-Thêm lớp vào danh sách lớp học:
Trang 38-Xóa lớp theo mã lớp: