Báo cáo bài tập lớn lập trình Java Phần mềm quản lý CLB tin học

61 84 0
Báo cáo bài tập lớn lập trình Java  Phần mềm quản lý CLB tin học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ý tưởng và chủ đề nghiên cứu: Chủ đề nghiên cứu: Xây dựng phần mềm quản lý câu lạc bộ tin học khoa CNTT. Ý tưởng: xây dựng 1 phần mềm để người quản lý có thể quản lý được thông tin và các hoạt động của các CLB trong câu lạc bộ tin học khoa CNTT; giúp cho các bạn sinh viên có thêm 1 sân chơi, 1 nơi học tập, trao đổi thông tin nhanh chóng và chính xác để phát huy được hết phẩm chất, năng lực của từng sinh viên. Các kiến thức, kỹ năng đã có để thực hiện chủ đề nghiên cứu: cách làm việc với môi trường và công cụ làm việc với Java cộng với các kiến thức về OOP, cách sử dụng các hàm, thao tác với mảng, dữ liệu. Các kỹ năng then chốt phải học trong chủ đề nghiên cứu: lập trình với cấu trúc Collection và lập trình với giao diện đồ họa GUI (Graphical User Interface).

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN - BÁO CÁO THÍ NGHIỆM/THỰC NGHIỆM LẬP TRÌNH JAVA XÂY DỰNG PHẦN MỀM QUẢN LÝ CÂU LẠC BỘ TIN HỌC KHOA CNTT GVHD: Sinh viên: Nhóm: Lớp: 20213IT6019001 … Khóa: 14 Hà Nội – Năm 2022 Mục lục Trang Phần mở đầu Ý tưởng chủ đề nghiên cứu: - Chủ đề nghiên cứu: Xây dựng phần mềm quản lý câu lạc tin học khoa CNTT - Ý tưởng: xây dựng phần mềm để người quản lý có thể quản lý được thông tin hoạt động CLB câu lạc tin học khoa CNTT; giúp cho bạn sinh viên có thêm sân chơi, nơi học tập, trao đổi thơng tin nhanh chóng xác để phát huy được hết phẩm chất, lực sinh viên Các kiến thức, kỹ có để thực chủ đề nghiên cứu: cách làm việc với môi trường công cụ làm việc với Java cộng với kiến thức OOP, cách sử dụng hàm, thao tác với mảng, dữ liệu Các kỹ then chốt phải học chủ đề nghiên cứu: lập trình với cấu trúc Collection lập trình với giao diện đồ họa GUI (Graphical User Interface) Phần kết nghiên cứu 2.1 Giới thiệu Khách hàng yêu cầu xây dựng “Phần mềm quản lý câu lạc tin học” Sản phẩm ứng dụng hoạt động được mơi trường Java Nhiệm vụ, cơng việc thực Bài tập lớn kết đạt được: ST T Nhiệm vụ Kết đạt Thu thập yêu cầu khách hàng Khảo sát hệ thống Mô hình hóa chức hệ thống Phân tích hệ thống Mơ hình hóa dữ liệu Cài đặt tốn Sản phẩm được xây dựng theo mơ hình mẫu: 2.2 Khảo sát hệ thống 2.2.1 Khảo sát sơ Các vấn đề cần giải quyết toán: - Admin: Quản lý câu lạc bộ, hoạt động, thành viên, thông tin, đánh giá thành viên - Sinh viên: Tham gia hoạt động, giải quyết vấn đề học tập, tìm hiểu thông tin câu lạc bộ, nhu cầu sinh hoạt tập thể sinh viên 2.2.2 Tài liệu đặc tả yêu cầu DangKy QuenMatKhau SinhVien HoiDap XemThongTin DangNhap QuanLyThanhVien Admin QuanLyDanhSachCuocThi QuanLyCauLacBo DanhGiaThanVien Hình 2.1: Biểu đồ usecase hệ thống CSDL DangKy QuenMatKhau DangNhap SinhVien CSDL (from Use Case View) (from Use Case View) (from Use Case View) HoiDap XemThongTin Hình 2.2: Biểu đồ usecase QuanLyThanhVien QuanLyDanhSachCuocThi DangNhap Admin CSDL (from Use Case Vi ew) (from Use Case View) (from Use Case Vi ew) DanhGiaThanVien QuanLyCauLacBo Hình 2.3: Biểu đồ usecase thứ cấp 2.2.2.1 Mô tả Use case Đăng Nhập Cho phép người dùng đăng nhập vào hệ thống • Luồng kiện ο Luồng bản: 1) Use case bắt đầu người dùng mở hệ thống Hệ thống hiển thị hình đăng nhập 2) Người dùng nhập đầy đủ thông tin đăng nhập nhấn nút đăng nhập Hệ thống kiểm tra thông tin tài khoản bảng TAIKHOAN Nếu đúng thì cho phép đăng nhập hệ thống Use case kết thúc ο Luồng rẽ nhánh: 1) Tại bước luồng nếu thông tin đăng nhập không đúng không tồn thì hệ thống thông báo trở bước luồng 2) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thơng báo lỗi usecase kết thúc • Các u cầu đặc biệt Khơng • Tiền điều kiện Khơng • Hậu điều kiện Không • Điểm mở rộng Không 2.2.2.2 Mô tả Use case Đăng Ký Cho phép người dùng đăng đăng ký tài khoản mới hệ thống • Luồng kiện ο Luồng bản: 1) Use case bắt đầu người dùng nhấn vào nút “Đăng ký” hình đăng nhập Hệ thống hiển thị hình đăng ký 2) Người dùng nhập đầy đủ thông tin đăng ký nhấn nút đăng ký Hệ thống kiểm tra tính hợp lệ thơng tin Nếu đúng thì hệ thống cập nhân thông tin vào bảng THANHVIEN bảng TAIKHOAN chuyển đến hình đăng nhập Use case kết thúc ο Luồng rẽ nhánh: 1) Tại bước luồng nếu thông tin đăng ký không hợp lệ tồn thì hệ thống thông báo trở bước luồng 2) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thơng báo lỗi usecase kết thúc • Các u cầu đặc biệt Khơng • Tiền điều kiện Khơng • Hậu điều kiện Nếu Usecase thành cơng thì thì thông tin tài khoản được thêm vào sở dữ liệu • Điểm mở rộng Khơng 2.2.2.3 Mơ tả Use case Quên Mật Khẩu Cho phép người dùng Thay đổi mật khẩu tài khoản • L̀ng kiện ο Luồng bản: 1) Use case bắt đầu người dùng nhấn vào nút “Quên mật khẩu” hình nhập Hệ thống hiển thị hình Xác thực thông tin 2) Người dùng nhập đầy đủ thông tin tìa khoản nhấn nút “Xác nhận” Hệ thống kiểm tra thông tin tài khoản bảng TAIKHOAN bảng THANHVIEN Nếu đúng thì chuyển đến hình cập nhật tài khoản 3) Người dùng nhập mạt khẩu mới Hệ thống kiểm tra tính hợp lệ Nếu hợp lệ thì cập nhật thông tin tài khoản bảng TAIKHOAN chuyển hình đăng nhập Usecase kết thúc ο Luồng rẽ nhánh: 1) Tại bước luồng nếu thông tin xác nhận không đúng không tồn thì hệ thống thông báo trở bước luồng 2) Tại bước luồng nếu thông tin không hợp lệ thì hệ thống thông báo chuyển bước luồng 3) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thông báo lỗi usecase kết thúc • Các u cầu đặc biệt Khơng • Tiền điều kiện Khơng • Hậu điều kiện Nếu usecase thực thành công thì thông tin tài khoản được cập nhạt sở dữ liệu • Điểm mở rộng Không 2.2.2.4 Mô tả Use case Hỏi Đáp Cho phép người dùng Hỏi đáp hệ thống • Luồng kiện ο Luồng bản: 1) Use case bắt đầu người dùng nhấn vào nút “Đăng bài” trang chủ Hệ thống hiển thị hình chức 2) Người dùng nhập đầy đủ thông tin đăng nhấn nút “Đăng bài” Hệ thống kiểm tra tính hợp lệ đăng Nếu hợp lệ thì cập nhạt đăng vào bảng BAIVIET cho phép đăng lên bảng tin Use case kết thúc ο Luồng rẽ nhánh: 1) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thơng báo lỗi usecase kết thúc • Các u cầu đặc biệt Khơng • Tiền điều kiện Đã đăng nhập • Hậu điều kiện Nếu usecase thành công thì hệ thống cập nhật thông tin viết sở dữ liệu • Điểm mở rộng Không 2.2.2.5 Mô tả Use case Xem Thông Tin Cho phép người dùng Xem thông tin hệ thống • Luồng kiện ο Luồng bản: 1) Use case bắt đầu người dùng nhán vào nút “Tài khoản” trang chủ Hệ thống hiển thị menu tài khoản 2) Người dùng nhấn nút “Xem thông tin tài khoản” Hệ thống hiển thị hình thông tin tài khoản tham chiếu từ bảng THANHVIEN Usecase kết thúc ο Luồng rẽ nhánh: 1) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thông báo lỗi usecase kết thúc • Các yêu cầu đặc biệt Không • Tiền điều kiện Đã đăng nhập • Hậu điều kiện Khơng • Điểm mở rộng Không 2.2.2.6 Mô tả Use case Quản Lý Thành Viên Cho phép Admin quản lí danh sách thành viên • L̀ng kiện ο L̀ng bản: Ca sử dụng bắt đầu Admin kích vào mục “Quản lí thành viên” Hệ thống truy xuất đến bảng THANHVIEN để hiển thị thông tin cho phép Admin có quyền chỉnh sửa thông qua trang web dành cho Admin 1) Thêm Thành Viên: a Khi Admin kích vào mục thêm mới thành viên Hệ thống hiển thị hình yêu cầu nhập thông tin bao gờm : Mã Thành Viên, Tên Thành Viên, Giới Tính, Số Điện Thoại Di Động, Ngày Sinh, Email, Câu lạc 10 b Admin viết thông tin: Tên Thành Viên, Giới Tính, Số Điện Thoại Di Động, Ngày Sinh, Email, Câu lạc kích vào nút “Thêm Mới Thành Viên”.Hệ thống nhận thông tin thành viên mới lên hình 2) Sửa Thành Viên: a Admin kích vào nút “Sửa” dịng Sinh Viên Hệ thống lấy thông tin Thành Viên Cũ được chọn bao gồm: Mã Thành Viên, Tên Thành Viên, Giới Tính, Số Điện Thoại Di Động, Ngày Sinh, Email Câu lạc b Admin nhập thơng tin mới Tên Thành Viên, Giới Tính, Số Điện Thoại Di Động, Ngày Sinh, Email, Câu lạc kích vào nút “Cập Nhật” Hệ thống nhận thông tin mới thành viên lên hình 3) Xóa Thành Viên: a Admin kích vào nút “Xóa” dòng Thành Viên Hệ thống hiển thị hình yêu cầu xác nhận xóa b Admin kích vào nút “Đờng Ý” Hệ thống xóa Thành Viên được chọn khỏi bảng THANHVIEN Ca sử dụng kết thúc ο Luồng rẽ nhánh: 1) Khi admin kích vào nút "Hủy" popup xác nhận Sửa Xóa, tiến trình dừng lại hiển thị lại danh sách thành viên 2) Tại bất kì thời điểm trông trình thực usecase nếu không kết nối được với sở dữ liệu thì hệ thống hiển thị thơng báo lỗi usecase kết thúc • Các u cầu đặc biệt Khơng • Tiền điều kiện Người sử dụng phải đăng nhập tài khoản admin • Hậu điều kiện Nếu use case thành công thì có thông báo hiển thị thông báo thành công thông tin được cập nhật database, nếu không hệ thống hiển thị thông báo thất bại database không thay đổi • Điểm mở rộng Khơng 47 4, Thơng tin tài khoản 4.1, Hàm show thông tin user vừa đăng nhập: - Lấy tên tài khoản từ biến Static "UserName" từ View_DangNhap để lấy thông tin tài khoản từ Database - Set dữ liệu cho trường textfield, combobox label từ đối tượng vừa lấy được từ username private void ShowInfor(){ String username = View_DangNhap.UserName; TVList = Modify_ThanhVien.findByUsername(username); Infor_ThanhVien member = new Infor_ThanhVien(); member = TVList.get(0); txtTen.setText(member.getTen()); txtNgaySinh.setText(member.getNgaySinh()); txtSdt.setText(member.getSdt()); txtEmail.setText(member.getEmail()); cbGioiTinh.setSelectedItem(member.GioiTinh); String Club_name = ""; CLBList = Modify_CLB.findAll(); for (Infor_CLB club : CLBList) { if(club.MaCLB == member.Ma_CLB){ Club_name = club.TenCLB; } } if(!Club_name.equals("")){ lbTenCLB.setText(Club_name); } } 4.2, Hàm cập nhật thông tin: - Validate thông tin có trường thông tin username vừa đăng nhập - Tạo JOptionPane để xác nhận xem người dùng có muốn đổi thông tin không - Nếu đồng ý thì thực thi hàm updateTaiKhoan() Modify_ThanhVien, nếu không đồng ý thì không có gì xảy private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(!CheckData().equals("")){ 48 JOptionPane.showMessageDialog(null, CheckData()); } else { String[] choice = {"Đồng ý", "Không"}; int x = JOptionPane.showOptionDialog(null, "Bạn có muốn sửa thông tin?", "Thông báo", 0, JOptionPane.QUESTION_MESSAGE, null, choice, EXIT_ON_CLOSE); Infor_ThanhVien mem = null; String username = View_DangNhap.UserName; //0:OK, 1:Ko if (x == 0) { TVList = Modify_ThanhVien.findByUsername(username); mem = TVList.get(0); mem.Ten = txtTen.getText(); mem.GioiTinh = cbGioiTinh.getSelectedItem().toString(); mem.NgaySinh = txtNgaySinh.getText(); mem.Email = txtEmail.getText(); mem.Sdt = txtSdt.getText(); Modify_ThanhVien.updateTaiKhoan(mem); JOptionPane.showMessageDialog(null, "Cập nhật thông tin thành công"); } } } 5, Đổi mật mã cấp hai + Tạo biến lấy thông tin từ form, validate dữ liệu + Nếu thỏa mãn hết điều kiện thì click đổi thì show JoptionPane để xác nhận + Nếu đồng ý thì gọi hàm updatePassTwo() Modify_ThanhVien, nếu không đồng ý thì không có gì xảy private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //lấy thông tin từ form String username = this.menuTaiKhoan.getText(); char[] pw = pwMatKhau.getPassword(); char[] old_pw2 = pwOldP2.getPassword(); char[] pw2 = pwPass2.getPassword(); char[] cpw2 = pwConfirmPass2.getPassword(); 49 String password = String.valueOf(pw); String old_pass2 = String.valueOf(old_pw2); String password_two = String.valueOf(pw2); String confirm = String.valueOf(cpw2); // validate TVList = Modify_ThanhVien.findByUsername(username); Infor_ThanhVien mem = TVList.get(0); if (password.equals("") || password_two.equals("") || confirm.equals("")) { JOptionPane.showMessageDialog(null, "Vui lòng nhập đầy đủ thông tin"); } else if(!mem.MaCapHai.equals(old_pass2)) { JOptionPane.showMessageDialog(null, "Mã cấp hai cũ không đúng"); } else if (!password_two.equals(confirm)) { JOptionPane.showMessageDialog(null, "Xác nhận mã cấp hai không đúng"); } else if(!mem.MatKhau.equals(password)) { JOptionPane.showMessageDialog(null, "Mật khẩu khơng xác"); } else { //tạo popup xác nhận String [] choice = {"Đồng ý", "Không"}; int x = JOptionPane.showOptionDialog(null, "Bạn có muốn sửa thông tin?", "Thông báo", 0, JOptionPane.QUESTION_MESSAGE, null, choice, EXIT_ON_CLOSE); if(x == 0){ Modify_ThanhVien.updatePassTwo(username, password_two); JOptionPane.showMessageDialog(null, "Đổi mật mã cấp hai thành công"); close(); View_CLB clb = new View_CLB(); clb.setVisible(true); } } } 6, Đổi mật 50 + Tạo biến lấy thông tin từ form, validate dữ liệu + Nếu thỏa mãn hết điều kiện thì click đổi thì gọi hàm doiMatKhau() Modify_ThanhVien để thao tác + Chuyển hướng người dùng đến trang đăng nhập nếu thành công private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: //lay du lieu tu form String username = txtUsername.getText(); char[] new_password = pwNew.getPassword(); String new_pw = String.valueOf(new_password); char[] old_password = pwOld.getPassword(); String old_pw = String.valueOf(old_password); char[] confirm_password = pwConfirm.getPassword(); String confirm_pw = String.valueOf(confirm_password); TVList = Modify_ThanhVien.findAll(); //tao bien boolean check tai khoan da ton tai chua boolean check_username = false; for (Infor_ThanhVien mem : TVList) { if(mem.TaiKhoan.equals(username)){ check_username = true; } } //tao bien boolean check mat khau va tai khoan co dung khong boolean check_password = false; for (Infor_ThanhVien mem : TVList) { if(mem.TaiKhoan.equals(username) && mem.MatKhau.equals(old_pw)){ check_password = true; } } if(username.equals("") || old_pw.equals("") || new_pw.equals("") || confirm_pw.equals("")){ JOptionPane.showMessageDialog(null, "Vui lịng điền đầy đủ thơng tin"); } else if(!new_pw.equals(confirm_pw)){ JOptionPane.showMessageDialog(null, "Xác nhận mật khẩu không đúng"); } else if(!check_username){ 51 JOptionPane.showMessageDialog(null, "Tài khoản không tồn tại"); } else if(!check_password){ JOptionPane.showMessageDialog(null, "Tài khoản mật khẩu không đúng"); } else { Modify_ThanhVien.doiMatKhau(username, new_pw); JOptionPane.showMessageDialog(null, "Đổi mật khẩu thành công"); //chuyen huong nguoi dung trang dang nhap close(); View_DangNhap dn = new View_DangNhap(); dn.setVisible(true); } } 7, Đăng xuất + đưa JOptionPane để xác nhận ý kiến người dùng + Nếu đồng ý thì đóng cửa sổ chuyển hướng người dùng tới trang đăng nhập, nếu không thì người dùng lại trang private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String [] choice = {"Đồng ý", "Không"}; int x = JOptionPane.showOptionDialog(null, "Bạn có muốn đăng xuất ?", "Thông báo", 0, JOptionPane.QUESTION_MESSAGE, null, choice, EXIT_ON_CLOSE); if(x == 0){ close(); View_DangNhap logout = new View_DangNhap(); logout.setVisible(true); } } 2.4.5 Chức quản lý thành viên admin 1, CheckData: + Kiểm tra trường thông tin có nhập đúng định dạng hay không private String CheckData() { if (!Pattern.matches("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19| 20)\\d\\d)", txtNgaySinh.getText())) { 52 return "Vui lòng nhập ngày sinh theo đúng định dạng (VD: 01/01/2001)"; } if (!Pattern.matches("[0]{1}\\d{9,10}", txtSdt.getText())) { return "Vui lòng nhập đúng định dạng số điện thoại (VD: 0912345678)."; } if (!Pattern.matches("^(.+)@(.+)$", txtEmail.getText())) { return "Vui lòng nhập đúng định dạng email (VD: example@gmail.com)."; } if (!Pattern.matches("[a-zA-Z]{3,}", txtTaiKhoan.getText())) { return "Tài khoản cần có nhất kí tự."; } if (!Pattern.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()– [{}]:;',?/*~$^+=]).{8,20}$", txtMatKhau.getText())) { return "Mật khẩu có từ 8-20 kí tự Có nhất số, chữ, chữ viết hoa kí tự đặc biệt ( VD: ! ( ) @ # & )"; } return ""; } 2, Thêm Thành Viên + Lấy thông tin được nhập vào textbox combobox + Kiểm tra trường thông tin có nhập đầy đủ đúng định dạng hay không + Lưu thành viên mới vào CSDL hiển thị lên giao diện private void btnThemActionPerformed(java.awt.event.ActionEvent evt) { CLBList = Modify_CLB.findAll(); Infor_CLB chon_clb = null; for (Infor_CLB club : CLBList) { if(club.TenCLB.equals(cbCLB.getSelectedItem().toString())){ chon_clb = club; } } StringBuilder sb = new StringBuilder(); String error = ""; if (txtTenThanhVien.getText().trim().equals("")) { 53 error += "Không để trống thành viên!\n"; } if (txtNgaySinh.getText().trim().equals("")) { error += "Không để trống Ngày sinh!\n"; } if (txtSdt.getText().trim().equals("")) { error += "Không để trống số điện thoại\n"; } if (txtEmail.getText().trim().equals("")) { error += "Không để trống Email!\n"; } if (txtTaiKhoan.getText().trim().equals("")) { error += "Không để trống tài khoản!\n"; } if (txtMatKhau.getText().trim().equals("")) { error += "Không để trống mật khẩu!\n"; } if (txtMatKhauHai.getText().trim().equals("")) { error += "Không để trống mật khẩu cấp 2!"; } if (error != "") { sb.append(error); JOptionPane.showMessageDialog(this, sb.toString(), "Invalidation", JOptionPane.ERROR_MESSAGE); } if (!CheckData().equals("")) { JOptionPane.showMessageDialog(this, CheckData()); } else { int MaCLB = chon_clb.getMaCLB(); String Ten = txtTenThanhVien.getText(); String GioiTinh = cbCLB.getSelectedItem().toString(); String NgaySinh = txtNgaySinh.getText(); String Sdt = txtSdt.getText(); String Email = txtEmail.getText(); String TK = txtTaiKhoan.getText(); String MK = txtMatKhau.getText(); String MCH = txtMatKhauHai.getText(); Infor_ThanhVien tv = new Infor_ThanhVien(MaCLB, Ten, GioiTinh, NgaySinh, Sdt, Email, TK, MK, MCH); Modify_ThanhVien.ThemTV(tv); Modify_CLB.SoThanhVien(MaCLB); 54 showtv(); } } 3, Sửa Thành viên + Lấy thông tin thành viên được chọn table + Lấy thông tin được nhập vào textbox combobox + Kiểm tra trường thông tin có nhập đầy đủ đúng định dạng hay không + Sửa thành viên mới lưu vào CSDL hiển thị lên giao diện private void btnSuaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: StringBuilder sb = new StringBuilder(); String error = ""; CLBList = Modify_CLB.findAll(); //dinh nghia clb duoc select va ma clb duoc chon Infor_CLB chon_clb = null; for (Infor_CLB club : CLBList) { if(club.TenCLB.equals(cbCLB.getSelectedItem().toString())){ chon_clb = club; } } if (txtTenThanhVien.getText().trim().equals("")) { error += "Không để trống thành viên!\n"; } if (txtNgaySinh.getText().trim().equals("")) { error += "Không để trống Ngày sinh!\n"; } if (txtSdt.getText().trim().equals("")) { error += "Không để trống số điện thoại\n"; } if (txtEmail.getText().trim().equals("")) { error += "Không để trống Email!\n"; } if (txtTaiKhoan.getText().trim().equals("")) { error += "Không để trống tài khoản!\n"; } if (txtMatKhau.getText().trim().equals("")) { error += "Không để trống mật khẩu!\n"; } if (txtMatKhauHai.getText().trim().equals("")) { 55 error += "Không để trống mật khẩu cấp 2!"; } if (error != "") { sb.append(error); JOptionPane.showMessageDialog(this, sb.toString(), "Invalidation", JOptionPane.ERROR_MESSAGE); } if (!CheckData().equals("")) { JOptionPane.showMessageDialog(this, CheckData()); } else { int selectedIndex = tblThanhVien.getSelectedRow(); if (selectedIndex >= 0) { Infor_ThanhVien std = tvList.get(selectedIndex); int option = JOptionPane.showConfirmDialog(this, "Bạn chắn muốn sửa thành viên chứ?"); int MaSV = std.getMaSV(); int MaCLB = chon_clb.getMaCLB(); String Ten = txtTenThanhVien.getText(); String GioiTinh = cbbGT.getSelectedItem().toString(); String NgaySinh = txtNgaySinh.getText(); String Sdt = txtSdt.getText(); String Email = txtEmail.getText(); String TK = txtTaiKhoan.getText(); String MK = txtMatKhau.getText(); String MCH = txtMatKhauHai.getText(); Infor_ThanhVien tv = new Infor_ThanhVien(MaSV, MaCLB, Ten, GioiTinh, NgaySinh, Sdt, Email, TK, MK, MCH); if (option == 0) { Modify_ThanhVien.SuaTV(tv); showtv(); } } } } 4, Tìm thành viên + Nhập tên thành viên vào hộp input, hệ thống tìm những thành viên có tên giống nhất hiển thị lên table 56 private void btnTimActionPerformed(java.awt.event.ActionEvent evt) { String input = JOptionPane.showInputDialog(this, "Nhập tên thành viên: "); if (input != null && input.length() > 0) { tvList = Modify_ThanhVien.timten(input); tableModel.setRowCount(0); tvList.forEach((tv) -> { tableModel.addRow(new Object[]{tv.getMaSV(), tv.getTen(), tv.getGioiTinh(), tv.getNgaySinh(), tv.getSdt(), tv.getEmail(), tv.getTaiKhoan(), tv.getMatKhau(), tv.getMaCapHai()}); }); } else { showtv(); } } 5, Làm textbox + Xóa hết dữ liệu có textbox show dữ liệu ban đầu private void btnLamMoiActionPerformed(java.awt.event.ActionEvent evt) { txtTenThanhVien.setText(""); cbCLB.setSelectedIndex(0); cbbGT.setSelectedIndex(0); txtNgaySinh.setText(""); txtSdt.setText(""); txtEmail.setText(""); txtTaiKhoan.setText(""); txtMatKhau.setText(""); txtMatKhauHai.setText(""); showtv(); } 6, Show thành viên Combobox CLB private void showtv() { tvList = Modify_ThanhVien.findAll(); tableModel.setRowCount(0); tvList.forEach(tv -> { tableModel.addRow(new Object[]{tv.getMaSV(), LaytenCLB(tv.getMa_CLB()), tv.getTen(), tv.getGioiTinh(), 57 tv.getNgaySinh(), tv.getSdt(), tv.getEmail(), tv.getTaiKhoan(), tv.getMatKhau(), tv.getMaCapHai()}); }); } // Lấy dữ liệu CLB show lên combobox private String LaytenCLB(int id){ CLBList = Modify_CLB.findAll(); String str = ""; for (Infor_CLB clb : CLBList) { if(clb.getMaCLB() == id) str += clb.getTenCLB(); } return str; } private void showComboCLB(){ CLBList = Modify_CLB.findAll(); CLBList.forEach((clb) -> { cbCLB.addItem(clb.TenCLB); }); } 2.4.6 Chức quản lý thi admin xem thi thành viên 1) Đổ danh sách thi combo box private void showTenCLB(){ CLBList = Modify_CLB.findAll(); for (Infor_CLB club : CLBList) { cbCLB.addItem(club.getTenCLB()); } } 2) Show danh sách thi đọc từ database bảng private void showCuocThi(){ CuocThiList = Modify_CuocThi.findAll(); 58 tableModel.setRowCount(0); CuocThiList.forEach((thi) -> { tableModel.addRow(new Object[]{thi.getMaCuocThi(), thi.getTenCLB(), thi.getTenCuocThi(), thi.getDiaDiem(), thi.getNgay(), thi.getMota()}); }); } 3) Xóa trắng form input chức thêm thi private void clear(){ txtDiaDiem.setText(""); txtMoTa.setText(""); txtNgay.setText(""); txtTen.setText(""); cbCLB.setSelectedIndex(0); lbMaCLB.setText("Mã CLB"); } 4) Hàm validate + Kiểm tra định dạng ngày diễn thi trước gửi + Nếu không hợp lệ hiển thị thông báo lỗi private String CheckData(){ if(!Pattern.matches("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19| 20)\\d\\d)", txtNgay.getText())){ return "Vui lòng nhập ngày theo đúng định dạng (VD: 01/01/2001)"; } return ""; } 5) Hàm thêm thi + Lấy dữ liệu từ ô input kiểm tra xem hợp lệ không + Nếu không hợp lệ hiển thị thông báo lỗi yêu cầu nhập lại + Hợp lệ thì gửi thêm vào bảng cuoc_thi database private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String TenCLB = cbCLB.getSelectedItem().toString(); String TenCuocThi = txtTen.getText(); String DiaDiem = txtDiaDiem.getText(); String Ngay = txtNgay.getText(); String MoTa = txtMoTa.getText(); 59 if(TenCLB.equals("") || TenCuocThi.equals("") || DiaDiem.equals("") || Ngay.equals("") || MoTa.equals("")){ JOptionPane.showMessageDialog(null, "Vui lịng điền đầy đủ thơng tin"); } else if (!CheckData().equals("")) { JOptionPane.showMessageDialog(null, CheckData()); } else{ Infor_CuocThi thi = new Infor_CuocThi(TenCLB, TenCuocThi, DiaDiem, Ngay, MoTa); Modify_CuocThi.themCuocThi(thi); JOptionPane.showMessageDialog(null, "Thêm thi mới thành công"); clear(); showCuocThi(); } } 6) Làm form nhập thi private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: clear(); } 7) Hàm xóa thi + Chọn thi bảng thi + Ấn xóa lên option để xác nhận xóa hay không + Nếu xác nhận thì xóa thi chọn khỏi bảng cuoc_thi database hiển thị lại bảng thi private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int selectedIndex = tblCuocThi.getSelectedRow(); CuocThiList = Modify_CuocThi.findAll(); if(selectedIndex >= 0){ Infor_CuocThi cuocthi = CuocThiList.get(selectedIndex); int option = JOptionPane.showConfirmDialog(this, "Bạn chắn muốn xóa thi chứ?"); if (option == 0) { Modify_CuocThi.xoaCuocThi(cuocthi.getMaCuocThi()); showCuocThi(); 60 } } } 8) Hàm sửa thi + Sau chọn hiển thị thông tin thi lên form ta có thể tiến hành cập nhật + Ấn sửa lên option để xác nhận sửa hay không + Nếu xác nhận thì sửa thi chọn bảng cuoc_thi database hiển thị lại bảng thi private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int MaCuocThi = 0; String TenCLB = cbCLB.getSelectedItem().toString(); String TenCuocThi = txtTen.getText(); String DiaDiem = txtDiaDiem.getText(); String Ngay = txtNgay.getText(); String MoTa = txtMoTa.getText(); int selectedIndex = tblCuocThi.getSelectedRow(); CuocThiList = Modify_CuocThi.findAll(); if(TenCLB.equals("") || TenCuocThi.equals("") || DiaDiem.equals("") || Ngay.equals("") || MoTa.equals("")){ JOptionPane.showMessageDialog(null, "Vui lịng điền đầy đủ thơng tin"); } else if (!CheckData().equals("")) { JOptionPane.showMessageDialog(null, CheckData()); } else{ if(selectedIndex >= 0){ Infor_CuocThi cuocthi = CuocThiList.get(selectedIndex); MaCuocThi = cuocthi.getMaCuocThi(); } Infor_CuocThi thi = new Infor_CuocThi(MaCuocThi, TenCLB, TenCuocThi, DiaDiem, Ngay, MoTa); int option = JOptionPane.showConfirmDialog(this, "Bạn chắn muốn sửa thi chứ?"); if (option == 0) { Modify_CuocThi.suaCuocThi(thi); 61 JOptionPane.showMessageDialog(null, "Sửa thi mới thành công"); clear(); showCuocThi(); } } } Kết luận Trong môn học Java vừa rồi chúng em học được những kiến thức hướng đối tượng, những ngôn ngữ lập trình Java kèm số kiến thức khác Thông qua tập nhóm này, nhóm chúng em hoàn thiện kỹ làm việc nhóm, đề cao trách nhiệm thân ln ln hồn thành cơng việc đúng giờ xác nhất có thể Sau làm tập nhóm, chúng em nhận thấy thân non nớt, chưa có kinh nghiệm nhiều công tác thiết kế xây dựng ứng dụng hoàn chỉnh, tương lai chúng em cố gắng học hỏi lao vào thực chiến để khắc phục vấn đề Tài liệu tham khảo - Giáo trình Lập trình HĐT với Java, Nguyễn Bá Nghiễn, Ngô Văn Bình, Vương Quốc Dũng, Đỗ Sinh Trường; NXB Thống kê, 2020 - Bộ slide giảng lập trình java- Bộ môn CMPM- trường ĐHCN HN - Lập trình hướng đối tượng với Java; Đoàn Văn Ban; NXB Khoa học Kỹ thuật, Hà Nội 2006 (Tái bản) - Lập trình Java nâng cao, Đoàn Văn Ban, NXB Khoa học Kỹ thuật, Hà Nội 2006 ...2 Phần mở đầu Ý tưởng chủ đề nghiên cứu: - Chủ đề nghiên cứu: Xây dựng phần mềm quản lý câu lạc tin học khoa CNTT - Ý tưởng: xây dựng phần mềm để người quản lý có thể quản lý được thông tin. .. 2.32: Giao diện quản lý câu lạc Hình 2.33: Giao diện quản lý thi 34 Hình 2.34: Giao diện quản lý thành viên Hình 2.35: Giao diện chat 35 2.4.2 Chức quản lý clb trò chuyện - Quản lý Câu lạc //... jButton4ActionPerformed (java. awt.event.ActionEvent evt) { // lay danh sach clb CLBList = Modify _CLB. findAll(); //dinh nghia clb duoc select va ma clb duoc chon Infor _CLB chon _clb = null; int ma _clb = 0; for (Infor_CLB

Ngày đăng: 07/03/2022, 10:19

Từ khóa liên quan

Mục lục

  • 1. Phần mở đầu

  • 2. Phần kết quả nghiên cứu

    • 2.1. Giới thiệu

    • 2.2. Khảo sát hệ thống

      • 2.2.1. Khảo sát sơ bộ

      • 2.2.2. Tài liệu đặc tả yêu cầu

        • 2.2.2.1. Mô tả Use case Đăng Nhập

        • 2.2.2.2. Mô tả Use case Đăng Ký

        • 2.2.2.3. Mô tả Use case Quên Mật Khẩu

        • 2.2.2.4. Mô tả Use case Hỏi Đáp

        • 2.2.2.5. Mô tả Use case Xem Thông Tin

        • 2.2.2.6. Mô tả Use case Quản Lý Thành Viên

        • 2.2.2.7. Mô tả Use case Quản Lý Danh Sách Cuộc Thi

        • 2.2.2.8. Mô tả Use case Quản Lý Câu Lạc Bộ

        • 2.2.2.9. Mô tả Use case Đánh Giá Thành Viên

        • 2.3. Phân tích hệ thống

          • 2.3.1. Mô hình hóa chức năng hệ thống

          • 2.3.2. Mô hình hóa dữ liệu và cài đặt hệ thống

          • 2.4. Thực hiện bài toán

            • 2.4.1. Giao diện sản phẩm

              • 2.4.1.1. Giao diện của thành viên

              • 2.4.1.2. Giao diện của Admin

              • 2.4.2. Chức năng quản lý clb và trò chuyện

              • 2.4.3. Chức năng của thành viên: xem clb, xem thành viên, tìm kiếm thành viên

              • 2.4.4. Chức năng của thành viên: đăng ký, đăng nhập, quên mật khẩu, thông tin tài khoản, đổi mật mã cấp hai, đổi mật khẩu, đăng xuất

              • 2.4.5. Chức năng quản lý thành viên của admin

Tài liệu cùng người dùng

Tài liệu liên quan