Phần mềm quản lí điểm sinh viên với Java | Học phần lập trình hướng đối tượng với Java giúp sinh viên năm được phương pháp lập trình hướng đối tượng (OOP) và ngôn ngữ lập trình Java cơ bản. Bài tập lớn môn học là tổng hợp kiến thức, kỹ năng về phương pháp lập trình hướng đối tượng và ngôn ngữ lập trình Java. Nội dung bài tập lớn gồm: Phân tích bài toán, giới thiệu tông quan về phương pháp lập trình hướng đối tượng, đặc trưng của ngôn ngữ lập trình Java, cài đặt phần mềm với ngôn ngữ Java trong đó sử dụng các lớp kế thừa, lớp trừu tượng vào giao diện (interface) của lập trình hướng đối tượng. Bài tập lớn là tài liệu tham khảo hữu ích cho SV ngành CNTT. Lập trình Java, bài tập lớn, đồ án môn học, lập trình hướng đối tượng
Trang 1HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG QUẢN LÍ ĐIỂM SINH VIÊN
Trang 2TÊN: QUẢN LÍ ĐIỂM SINH VIÊN
Trang 3MỤC LỤC (Trình bầy trong trang riêng)
PHẦN I: CƠ SỞ LÍ THUYẾT
Trang 4Khái niệm Java:
Ngôn ngữ lập trình Java là gì?
Java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class), ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995 Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết
kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy
Đặc điểm của ngôn ngữ lập trình Java?
Là một ngôn ngữ lập trình hướng đối tượng vì vậy Java cũng có 4 đặc điểm chung sau đây:
Tính trừu tượng (Abstraction): Là tiến trình xác định và nhóm các thuộc tính, các hành động
liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển
Tính đa hình (Polymorphism): Cho phép một phương thức có các tác động khác nhau trên
nhiều loại đối tượng khác nhau Với tính đa hình, nếu cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những kết quả khác nhau Bản chất của sự việc chính là phương thức này bao gồm cùng một số lượng các tham số
Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính
sẵn có mà không phải tiến hành định nghĩa lại
Tính đóng gói (Encapsulation): Là tiến trình che giấu việc thực thi những chi tiết của một đối
tượng đối với người sử dụng đối tượng ấy
Ứng dụng của ngôn ngữ lập trình Java?
Các ứng dụng yêu cầu tính bảo mật cao
Các ứng dụng cho hệ điều hành Android
Điện toán đám mây
Không gian nhúng
Trong lĩnh vực giao dịch chứng khoán
Trang 5Nói về môn học
Lập trình hướng đối tượng (OOP) là gì?
• Lập trình hướng đối tượng (OOP) là một kỹ thuật lập trình cho phép lập trình viên tạo
ra các đối tượng trong code trừu tượng hóa các đối tượng
Đối tượng
Một đối tượng bao gồm 2 thông tin: thuộc tính và phương thức
• Thuộc tính chính là những thông tin, đặc điểm của đối tượng Ví dụ: con người có
các đặc tính như mắt, mũi, tay, chân…
• Phương thức là những thao tác, hành động mà đối tượng đó có thể thực hiện Ví dụ:
một người sẽ có thể thực hiện hành động nói, đi, ăn, uống,
Lớp
Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước Đây là sự trừu tượng hóa của đối tượng Khác với kiểu dữ liệu thông thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp giữa các phương thức và các thuộc tính Hiểu nôm
na hơn là các đối tượng có các đặc tính tương tự nhau được gom lại thành một lớp đối tượng
Sự khác nhau giữa đối tượng và lớp
Lớp bạn có thể hiểu nó như là khuôn mẫu, đối tượng là một thực thể thể hiện dựa trên khuôn mẫu đó Ví dụ: Ta nói về loài chó, bạn có thể hiểu nó là class (lớp) chó có:
• Các thông tin, đặc điểm: 4 chân, 2 mắt, có đuôi, có chiều cao, có cân nặng, màu lông…
• Các hành động như: sủa, đi, ăn, ngủ…
Đối tượng thì chính là con chó Phú Quốc ta đang nuôi trong nhà cũng mang đặc tính của lớp chó
Trang 6Các công cụ cho dự án: Netbeen, sql, mysql
- Để cụ thể hóa ý tưởng ấy, nhóm em đã chia dự án thành 3 class như sau:
2.1 Class SinhVien:
- Phần khai báo các đối tượng, thuộc tính:
+ Nhóm em sử dụng private cho tất cả các thuộc tính của lớp SinhVien với mục đích nhằm bảo mật thông sinh về sinh viên nhất có thể
- Get-Set:
Trang 7+ Phương thức Get-Set sẽ cho phép nhập, lấy dữ liệu từ các đối tượng, thuộc tính của lớp SinhVien đã được khai báo ở trên Tuy sẽ hơi cầu kỳ, phức tạp một chút nhưng nó sẽ đạt được hiệu quả cao về bảo mật thông tin
- Phần khởi tạo:
+ Nhóm em chia thành 2 kiểu: không tham số và đầy đủ tham số
Trang 8+ Mục đích chính của việc khởi tạo để cho phép tạo các đối tượng của lớp đồng thời đảm bảo rằng các đối tượng ấy được sinh ra một cách hợp lệ theo đúng như giá trị mà nó đã được khởi tạo từ trước
- Tổng thể class:
Trang 102.2 Class Database
- Để có thể lưu trữ thông tin, truy xuất dữ liệu đòi hỏi phải có một nơi để lưu trữ chúng Nếu thông tin không được lưu trữ thì việc nhập dữ liệu vào sẽ không cnf ý nghĩa gì bởi khi tắt ứng dựng, mọi thông tin được nhập vào trước đó sẽ biến mất hoàn toàn mà không thể lấy lại được Do đó đòi hỏi phải có sự tham gia của
database hay nói cách khác là cơ sở dữ liệu để lưu trữ thông tin
- Với lớp Database, nhóm em chỉ đơn gian là tạo 2 hàm là openConnection() và HienThi()
- Hàm openConnection() sẽ tạo kết nối tới bảng được tạo sẵn trên database với dữ
liệu phù hợp
- Hàm HienThi() sẽ thực hiện việc hiện thị dữ liệu từ database ra table tạo trước để
thuận tiện cho việc theo dõi dữ liệu bằng cách:
+ Mở kết với cơ sở dữ liệu qua câu lệnh Connection
+ Tạo câu lệnh hiển thị SELECT*FROM hienthikq tới cơ sở dữ liệu
- Tổng thể class:
Trang 122.3 Class ChucNang
- Để thực hiện, tương tác được với dữ liệu trong database cũng như trên app đòi hỏi phải có một phương thức để tạo kết nối giữa người và máy trong quá trình sử dụng Do đó nhóm em tạo lớp ChucNang để thực hiện việc đó
*Note: Để thống nhất cho các tác vụ cũng như tiện dụng nhất có thể, nhóm em xin
phép sử dụng mã sinh viên làm từ khóa chính cho các thao tác với cơ sở dữ liệu
- Lưu thông tin sinh viên được nhập vào từ bàn phím
+ Nhập câu lệnh SQL từ bàn phím bằng câu lệnh String sql=“”
+ Mở kết nối với cơ sở dữ liệu thông qua câu lệnh Connection và gọi hàm đã có
trước là openConnection()
+ Gán lệnh SQL đã tạo vào câu lệnh PreparedStatement để tiến hành thực hiện
+ Lần lượt thiết lập các giá trị cho các cột trong cơ sở dũ liệu bằng câu lệnh
setString
+ Trả về bảng mới vừa được cập nhật
+ Tất cả sẽ được đặt trong lệnh try nhằm tránh việc phát sinh lỗi gây treo hệ thống
- Tìm kiếm sinh viên theo mã sinh viên
Trang 13+ Nhập câu lệnh SQL từ bàn phím bằng câu lệnh String sql=“”
+ Mở kết nối với cơ sở dữ liệu thông qua câu lệnh Connection và gọi hàm đã có
trước là openConnection()
+ Gán lệnh SQL đã tạo vào câu lệnh PreparedStatement để tiến hành thực hiện + Thiết lập tìm kiếm với mã sinh viên qua câu lệnh prstm.setString và
prstm.executeQuery
+ Nếu tìm thấy mã sinh viên tương ứng sẽ thực hiện in toàn bộ thông tin của sinh
viên đó ra giao diện sử dụng qua câu lệnh if với điều kiện là tìm thấy sinh viên
(rs.next())
+ Tất cả sẽ được đặt trong lệnh try nhằm tránh việc phát sinh lỗi gây treo hệ thống
- Cập nhật thông tin sinh viên
Trang 14+ Nhập câu lệnh SQL từ bàn phím bằng câu lệnh String sql=“”
+ Mở kết nối với cơ sở dữ liệu thông qua câu lệnh Connection và gọi hàm đã có
trước là openConnection()
+ Gán lệnh SQL đã tạo vào câu lệnh PreparedStatement để tiến hành thực hiện
+ Lần lượt thiết lập các giá trị mới cho các cột trong cơ sở dũ liệu bằng câu lệnh
setString
+ Trả về bảng mới vừa được cập nhật
+ Tất cả sẽ được đặt trong lệnh try nhằm tránh việc phát sinh lỗi gây treo hệ thống
- Xóa thông tin sinh viên khỏi cơ sở dữ liệu
+ Nhập câu lệnh SQL từ bàn phím bằng câu lệnh String sql=“”
+ Mở kết nối với cơ sở dữ liệu thông qua câu lệnh Connection và gọi hàm đã có
Trang 163 Các chức năng chính
3.1 Lưu thông tin sinh viên
- Dòng 309-401: Kiểm tra mã sinh viên nhập vào có hợp lệ hay không Nếu mã sinh viên trống sẽ hiện thông báo đồng làm đỏ ô mã sinh viên để người dùng biết
- Dòng 404-411: Lấy các giá trị được người dùng nhập vào từ bàn phím để lưu trữ vào cơ sở dữ liệu
- Dòng 413-417: Tiến hành lưu thông tin được nhập và hiển thị kết quả ra màn hình
- Tất cả sẽ được đặt trong khối lệnh try catch nhằm tránh việc phát sinh lỗi gây treo
hệ thống
- Gọi hàm btnHuyActionPerformed(evt) để tiền hành xóa trắng thông tin vừa được
nhập trên giao diện để bảo mật tối đa
Trang 173.2 Hủy các thông tin vừa nhập
- Ở thao tác này, nhóm em chỉ tiến hành thiết lập cho toàn bộ các ô nhập
liệu(textField) về trạng thái rỗng
3.3 Cập nhật thông tin sinh viên
- Dòng 460-467: Kiểm tra mã sinh viên nhập vào có hợp lệ hay không Nếu mã sinh viên trống sẽ hiện thông báo đồng làm đỏ ô mã sinh viên để người dùng biết
- Dòng 469-471: Do vấn đề về thông tin đều rất quan trọng trong bất kỳ dự án nào nên sẽ tiến hành xác nhận người dùng có thực sự muốn cập nhật thông tin hay không
- Dòng 473-480: Lấy các giá trị được người dùng nhập vào từ bàn phím để lưu trữ vào cơ sở dữ liệu
Trang 18- Dòng 482-484: Tiến hành cập nhật và hiển thị kết quả ra màn hình
- Tất cả sẽ được đặt trong khối lệnh try catch nhằm tránh việc phát sinh lỗi gây treo
hệ thống
- Gọi hàm btnHuyActionPerformed(evt) để tiền hành xóa trắng thông tin vừa được
nhập trên giao diện để bảo mật tối đa
Trang 193.4 Xóa sinh viên
- Dòng 495-503: Kiểm tra mã sinh viên nhập vào có hợp lệ hay không Nếu mã sinh viên trống sẽ hiện thông báo đồng làm đỏ ô mã sinh viên để người dùng biết
- Dòng 504-506: Do vấn đề về thông tin đều rất quan trọng trong bất kỳ dự án nào nên sẽ tiến hành xác nhận người dùng có thực sự muốn cập nhật thông tin hay không
- Dòng 508-515: Lấy các giá trị được người dùng nhập vào từ bàn phím để lưu trữ vào cơ sở dữ liệu
- Dòng 517-519: Tiến hành xóa và hiển thị kết quả ra màn hình
- Tất cả sẽ được đặt trong khối lệnh try catch nhằm tránh việc phát sinh lỗi gây treo
hệ thống
- Gọi hàm btnHuyActionPerformed(evt) để tiền hành xóa trắng thông tin vừa được
nhập trên giao diện để bảo mật tối đa
Trang 204 Các chức năng phụ
4.1 Tính điểm trung bình cho 4 năm
- Dòng 531-538: Kiểm tra sinh viên đã có đầy đủ điểm cho 4 năm hay chưa Nếu chưa thì hiển thị thông báo cho người dùng biết
- Dòng 540-545: Tiến hành tính toán và in kết quả ra vị trí đã được thiết lập sẵn
4.2 Tìm kiếm sinh viên
Trang 21- Dòng 549-555: Kiểm tra mã sinh viên đã được nhập hay chưa Nếu chưa sẽ tiến hành thông báo cho người dùng biết
- Dòng 558-568: Tiến hành tìm kiếm sinh viên theo mã được nhập
- Tất cả sẽ được đặt trong khối lệnh try catch nhằm tránh việc phát sinh lỗi gây treo
hệ thống
Trang 225 Kết quả:
5.1 Giao diện:
- Do nhóm em có demo trước nên trong phần database sẽ có sẵn dữ liệu
Trang 235.2 Lưu thông tin sinh viên
- Thông tin được lưu thành công
- Sau khi lưu, xóa trắng toàn bộ thông tin
Trang 255.3 Hủy thông tin sinh viên đã nhập
- Nhập thông tin vào
- Thông tin bị hủy sau khi click nút “Hủy”
Trang 275.4 Tìm kiếm sinh viên theo mã
- Mã sinh viên trống
Trang 28- Mã sinh viên không tồn tại
Trang 29- Đúng mã sinh viên
Trang 315.5 Cập nhật thông tin sinh viên
Trang 32- Thông tin được xóa trắng sau khi cập cập nhật xong
Trang 345.6 Tính điểm trung bình 4 năm
- Chưa nhập điểm
- Nhập đầy đủ điểm
Trang 365.7 Xóa sinh viên
- Hộp thoại xác nhận hiện lên để thông báo tới người dùng
- Nếu người dùng ấn Yes sẽ tiến hành xóa sinh viên khỏi cơ sở dữ liệu