Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
2,3 MB
Nội dung
TRƯỜ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í 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 : Mai Tuyết Anh - 2210A01 Hà Thị Anh Thư - 2210A04 Phạm Thanh Tùng - 2210A04 Trần Minh Hiếu - 2210A06 PHÂ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 Phân tích, đưa hướng giải đề Kiểm tra, bổ sung chức cho lớp Kiểm thử liệu test, test chức Hoàn thành Hà Thị Anh Thư Bổ sung chức cho lớp Hoàn thiện word báo cáo BTL Hồn thành Phạm Thanh Tùng Xác định, mơ tả cài đặt lớp chương trình Test chức Hoàn thành Trần Minh Hiếu Xác định, mô tả cài đặt lớp chương trình Xác định sơ đồ lớp tốn Hồn thành I PHÁT BIỂU BÀI TỐN: 1.Phát biểu tốn: Trung tâm tin học ngoại ngữ ABC có môn học Excel, PowerPoint, Word, IELTS,… môn học lại chia thành lớp tổ chức theo lịch học cụ thể tuần Mỗi lớp học theo lịch có mức học phí khác nhau, muốn tham gia khóa học trung tâm cần chọn lớp để đăng kí tốn trước học phí để trở thành học viên Xây dựng hệ thống để quản lý việc thu học phí trung tâm ABC gồm đối tượng quản lý sau: - Người thu tiền: Thực thu học phí - Học viên: Đăng kí lớp, nộp học phí tham gia khóa học - Hóa đơn: Chứa thơng tin tốn học viên - Lịch học: Theo ngày tuần - Lớp: Mỗi lớp theo lịch lại có mức học phí khác 2.Xác định chức cần cài đặt: Nhập, Cập nhật: thêm, sửa, xóa Tính lương Đọc, ghi file II CÁC LỚP ĐỐI TƯỢNG CẦN QUẢN LÝ: LichHoc Thuộc tính: String thuHoc String buoiHoc Phương thức: +Constructor: hàm khởi tạo khơng tham số, có tham số +Setter, getter: phương thức set, get cho thuộc tính +toString(): Override phương thức toString Lop Thuộc tính: String maLop String monHoc double hocPhi LichHoc lich Phương thức: +Constructor +Setter, getter +nhapLop() +hienLop() +xemLichHoc() +toString() DsLop Thuộc tính: ArrayList dsLop Phương thức: +Setter, getter +nhapDsLop +hienDsLop +xoaLop(): xóa lớp theo mã lớp nhập từ bàn phím +luuFile() +docFile() Interface ILuong double luongCB = 1450 abstract double tienluong() Nguoi Thuộc tính: String hoTen String ngaySinh String gioiTinh String queQuan Phương thức: +Constructor +Setter, getter +nhap() +hien() NguoiThuTien extends Nguoi implements ILuong Thuộc tính: String maNTT double heSoluong Phương thức: +Constructor +Setter, getter +nhap() +tienluong()= luongCB*heSoLuong +hien() DsNguoiThuTien Thuộc tính: ArrayList dsNTT Phương thức: +nhapDsNTT() +hienDsNTT() + timkiemnguoitttheomntt(): tìm danh sách người thu tiền theo mã +suaThongTinNguoithutien(): sửa thơng tin người thu tiền theo mã +xoaDsNTT(): xóa người thu tiền theo mã nhập từ bàn phím +luuFile() +docFile() HocVien extends Nguoi Thuộc tính: String maHv ArrayList DsLopDaDangKy HoaDon hoaDonHocPhi Phương thức: +Constructor +Setter, getter +nhap() +hien() +DKLopHoc(ArrayList dsl) +hienLopDaDangKy() +ganMaHoaDon() +xuatHoaDon() +LuuHoaDonVaoFile() DsHocVien Thuộc tính: ArrayList dsHocVien Phương thức: +nhapDsHocVien() +hienDsHocVien() +dangKyLopHoc(ArrayList dsLop): thực chức đăng ký lớp học +hienLopDaDangKy(): lớp học viên vừa đăng ký +xuatHoaDon() +timkiemhocvientheomhv() +suaThongTinHocVien() +XoaHocVien() +luuFile() +docFile() HoaDon Thuộc tính: String maHoaDon String thongTinHoaDon double tongTien Phương thức: +Constructor +Setter, getter +themVaoThongTinHoaDon(String thongTin) +congTienHoaDon(double tien) +toString() III SƠ ĐỒ LỚP CỦA BÀI TỐN: IV MƠ TẢ THUẬT TỐN VÀ CÁC BƯỚC THỰC HIỆN: 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 biến đầu vào tương ứng với thuộc tính khai báo đố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 gọi hàm thêm 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 danh sách, gọi phương thức đối tượng tương ứng 4.Ghi danh sách vào file: - Implements giao diện Serializable đố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 thông báo “Ghi file thành công” 5.Đọc danh sách từ file: - Đọc file lưu file vào danh sách đối tượng tương ứng - In 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 câu lệnh so sánh equals, mã nhập vào trùng với liệu có đối tượng hình 7.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 số ) câu lệnh so sánh equals, mã nhập vào trùng với liệu có nhập lại thơng tin cần sửa đối tượng - 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 câu lệnh so sánh equals, mã nhập vào trùng với liệu có gọi câu lệnh xóa remove - Hiện lại danh sách đối tượng sau xóa V CÀI ĐẶT BÀI TỐ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) { this.thuHoc = thuHoc; this.buoiHoc = buoiHoc; } public LichHoc() { } public String getThuHoc() { return thuHoc; } public void setThuHoc(String thuHoc) { this.thuHoc = thuHoc; } public String getBuoiHoc() { return buoiHoc; } public void setBuoiHoc(String buoiHoc) { this.buoiHoc = buoiHoc; } @Override public String toString() { return this.buoiHoc+" thứ "+this.thuHoc; } 2.Class Lop package BaiTapLon; import java.io.Serializable; import java.util.Scanner; public class Lop implements Serializable{ private String maLop; private String monHoc; private double hocPhi; private LichHoc lich; public Lop() { this.lich = new LichHoc(); } public String getMaLop() { return maLop; } public void setMaLop(String maLop) { this.maLop = maLop; } public String getMonHoc() { return monHoc; } public void setMonHoc(String monHoc) { this.monHoc = monHoc; } public double getHocPhi() { return hocPhi; } public void setHocPhi(double hocPhi) { this.hocPhi = hocPhi; } public LichHoc getLich() { return lich; } public void setLich(LichHoc lich) { this.lich = lich; } public void nhapLop() { Scanner sc = new Scanner(System.in); System.out.print("Mã lớp: "); sc.nextLine(); System.out.print("Môn h ọc: "); sc.nextLine(); System.out.print("Học phí: "); sc.nextDouble(); sc.nextLine(); System.out.println("Lịch học "); System.out.print("Thứ: "); String thu = this.lich.setThuHoc(thu); System.out.print("Buổi: "); String buoi this.lich.setBuoiHoc(buoi); } this.maLop = this.monHoc = this.hocPhi = sc.nextLine(); = sc.nextLine(); public void hienLop() { System.out.println("Mã l ớp: "+this.maLop); System.out.println("Môn h ọc: "+this.monHoc); System.out.println("Học phí: "+this.hocPhi); System.out.println("Lịch học: "+this.lich.toString()); } public String xemLichHoc() { return this.lich.toString(); } public String toString() { return "\nMã lớp: "+this.maLop+", Môn h ọc: "+this.monHoc+", Lịch học: "+this.lich.toString()+", H ọc phí: "+this.hocPhi; } } 3.Class DsLop package BaiTapLon; import import import import import import import import import java.io.File; java.io.FileInputStream; java.io.FileNotFoundException; java.io.FileOutputStream; java.io.IOException; java.io.ObjectInputStream; java.io.ObjectOutputStream; java.util.ArrayList; java.util.Scanner; 10 System.out.print("Quê quán: "); String queQuan = sc.nextLine(); hocVien.setHoTen(hoTen); hocVien.setNgaySinh(ngaySinh); hocVien.setGioiTinh(gioiTinh); hocVien.setQueQuan(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!!!"); return; } } } public void luuFile() throws FileNotFoundException, IOException { File fname = new File("22.dat"); FileOutputStream fout = new FileOutputStream(fname); ObjectOutputStream out = new ObjectOutputStream(fout); out.writeObject(dsHocVien); out.close(); fout.close(); } public void DocFile() throws FileNotFoundException, IOException, ClassNotFoundException { File fname = new File("22.dat"); FileInputStream fin = new FileInputStream(fname); ObjectInputStream in = new ObjectInputStream(fin); dsHocVien = new ArrayList(); dsHocVien = (ArrayList) in.readObject(); in.close(); fin.close(); } } 24 10.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() { return maHoaDon; } public void setMaHoaDon(int maHoaDon) { this.maHoaDon = maHoaDon; } public String getThongTinHoaDon() { return thongTinHoaDon; } public void setThongTinHoaDon(String thongTinHoaDon) { this.thongTinHoaDon = thongTinHoaDon; } public double getTongTien() { return tongTien; } public void setTongTien(double TongTien) { this.tongTien += tongTien; } public void themVaoThongTinHoaDon(String thongTin) { this.thongTinHoaDon+=thongTin+""; } public void congTienHoaDon(double tien){ this.tongTien += tien; } public String toString() { return "\nMã hóa đơn: "+this.maHoaDon+"\n "+this.thongTinHoaDon+"\n -"+"\nTổng tiền: "+this.tongTien ; } } 11.Class ClassChinh package BaiTapLon; import java.io.FileNotFoundException; 25 import java.io.IOException; import java.util.Scanner; public class ClassChinh { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { MenuTongQuat m = new MenuTongQuat(); m.MenuTongQuat(); } } 12.Class MenuTongQuat package BaiTapLon; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; public class MenuTongQuat { DsLop dsl = new DsLop(); DsHocVien dshv = new DsHocVien(); DsNguoiThuTien dsntt = new DsNguoiThuTien(); int n = 0; public void MenuTongQuat() throws IOException, ClassNotFoundException { // // // FileNotFoundException, dshv.DocFile(); dsntt.DocFile(); dsl.DocFile(); { Scanner sc = new Scanner(System.in); System.out.println(" _MENU _"); System.out.println("| Qu ản lý học viên |"); System.out.println("| Quản lý nhân viên thu ti ền |"); System.out.println("| Quản lý lớp h ọc |"); System.out.println("| Thoát kh ỏi ch ương trình |"); System.out.println("| |"); 26 System.out.print("\n-> Vui lòng l ựa ch ọn: "); n = sc.nextInt(); System.out.println(); if (n < 0) System.out.println("Lựa chọn sai, vui lòng l ựa chọn lại!!!"); if (n == 1) { int n1 = 0; System.out.println(" H ỌC VIÊN "); System.out.println("| Thêm h ọc viên |"); System.out.println("| Xóa m ột học viên |"); System.out.println("| S ửa thông tin h ọc viên |"); System.out.println("| Tìm kiếm học viên |"); System.out.println("| Đăng ký lớp h ọc |"); System.out.println("| In hóa đ ơn |"); System.out.println("| Hi ển thị danh sách h ọc viên |"); System.out.println("| Quay v ề trang tr ước |"); System.out.println("| |"); { System.out.print("\n-> Vui lòng l ựa ch ọn: "); n1 = sc.nextInt(); if (n1 < -1) System.out.println("Lựa ch ọn sai, vui lòng lựa chọn lại!!!"); else { switch (n1) { case 1: dshv.nhapHocVien(); dshv.luuFile(); break; case 2: dshv.XoaHocVien(); dshv.luuFile(); break; case 3: dshv.suaThongTinHocVien(); 27 dshv.luuFile(); break; case 4: dshv.timkiemhocvientheomhv(); break; case 5: dshv.dangKyLopHoc(dsl.getDsLop()); dshv.luuFile(); dsl.luuFile(); break; case 6: dshv.xuatHoaDon(); break; case 7: dshv.hienDSHocVien(); break; } } } while (n1 != 0); } else if (n == 2) { int n2 = 0; System.out.println(" _NHÂN VIÊN "); System.out.println("| Thêm nhân viên |"); System.out.println("| Xóa m ột nhân viên |"); System.out.println("| Sửa thông tin nhân viên |"); System.out.println("| Tìm ki ếm nhân viên |"); System.out.println("| Hi ển th ị danh sách nhân viên |"); System.out.println("| Quay v ề trang tr ước |"); System.out.println("| |"); { System.out.print("\n-> Vui lòng l ựa ch ọn: "); n2 = sc.nextInt(); if (n2 < -1) System.out.println("Lựa ch ọn sai, vui lòng lựa chọn lại!!!"); else { 28 switch (n2) { case 1: dsntt.nhapNTT(); dsntt.luuFile(); break; case 2: dsntt.XoaNTT(); dsntt.luuFile(); break; case 3: dsntt.suaThongTinNguoithutien(); dsntt.luuFile(); break; case 4: dsntt.timkiemnguoitttheomntt(); break; case 5: dsntt.hienDsNTT(); break; } } } while (n2 != 0); } else if (n == 3) { int n3 = 0; System.out.println(" "); System.out.println("| Thêm m ột lớp h ọc |"); System.out.println("| Xóa m ột l ớp h ọc * |"); System.out.println("| Hiện danh sách l ớp học* |"); System.out.println("| Quay v ề trang tr ước |"); System.out.println("| |"); { System.out.print("\n-> Vui lòng l ựa ch ọn: "); n3 = sc.nextInt(); if (n3 < -1) System.out.println("Lựa ch ọn sai, vui lòng lựa chọn lại!!!"); else { switch (n3) { case 1: 29 dsl.nhapDsLop(); dsl.luuFile(); break; case 2: dsl.xoaLop(); dsl.luuFile(); break; case 3: dsl.hienDsLop(); break; } } } while (n3 != 0); } } while (n != 0); } VI KIỂM THỬ VÀ THỰC HIỆN CÁC CHỨC NĂNG: Bộ liệu test: 30 Mã nv Họ tên Ngày sinh Giới tính Quê quán HSL N1 Nguyễn Thị Như 1/2/1988 Nữ Hà Nội N2 Trần Văn Sang 1/3/1980 Nam An Giang 4.3 N3 Hoàng Tiến Dũng 4/8/1995 Nam Lào Cai Nhân viên Học viên Mã hv Họ tên Ngày sinh Giới tính Quê quán H1 Trần Văn Tân 3/5/2004 Nam Tuyên Quang H2 Đỗ Hà Anh 4/8/2003 Nữ Hà Giang H3 Nguyễn Yến Nhi 9/12/2004 Nữ Hịa Bình H4 Trần Thị Thảo 7/4/2000 Nữ Sơn La Lớp học Mã lớp Môn học Học phí Lịch học L1 IELTS 6000000 Thứ 2, buổi chiều L2 MS Excel 1500000 Thứ 2, buổi chiều L3 IELTS 6000000 Thứ 3, buổi sáng L4 MS Word 1500000 Thứ 7, buổi chiều Test chức năng: Quản lý danh sách học viên: -Nhập danh sách học viên: 31 -Thêm học viên vào danh sách học viên: 32 -Xóa học viên theo mã học viên: -Đăng kí lớp học: -Hiển thị hóa đơn: 33 Quản lý danh sách người thu tiền: 34 -Nhập danh sách thu tiền: -Sửa thông tin người thu tiền theo mã người thu tiền: 35 -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: Quản lý lớp học: -Nhập danh sách lớp học: -Thêm lớp vào danh sách lớp học: 36 37 -Xóa lớp theo mã lớp: 38