Xây dựng chương trình quản lý điểm sinh viên có thể giải quyết được hầu hết cácvấn đề cơ bản mà một chương trình quản lý nói chung yêu cầu đó là: Dễ sử dụng.. Nó là ngôn ngữ lập trình
Trang 1TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC LẬP TRÌNH JAVA
Trang 2TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN MÔN HỌC LẬP TRÌNH JAVA
Trang 3Lời đầu tiên, em xin gửi lời cảm ơn đến toàn thể quý thầy cô khoa Công nghệthông tin trường Đại học Tài chính – Marketing đã giảng dạy và truyền đạt cho em cáckiến thức bổ ích Thầy cô luôn tạo điều kiện thuận lợi cho em hoàn thành tốt đề tài
“Chương trình quản lý điểm thi sinh viên trường Đại Học Tài Chính – Marketing”
Đặc biệt, em xin gửi lời cảm ơn sâu sắc và chân thành nhất đến thầy Đinh XuânThọ đã trực tiếp hướng dẫn, tận tình chỉ dạy Thầy luôn giải thích các thắc mắc, góp ý
và sửa chữa những phần còn thiếu sót, giúp đỡ em về mọi mặt trong suốt quá trìnhthực hiện đề tài để bài làm đạt được kết quả tốt nhất
Do thời gian thực hiện cùng với kinh nghiệm và kiến thức còn hạn chế nên khôngtránh khỏi những sai sót Kính mong nhận được những ý kiến, nhận xét của quý thầy
cô để em có thể bổ sung, hoàn thiện kiến thức của bản thân
Cuối cùng, chúc thầy cô trong nhà trường cùng toàn thể ban lãnh đạo trường Đạihọc Tài chính – Marketing nói chung và quý thầy cô khoa Công nghệ thông tin nóiriêng lời chúc sức khỏe, luôn thành công trong sự nghiệp của mình
Em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, tháng 08 năm 2021
Sinh viên thực hiện
Nguyễn Võ Quốc Huy
Trang 4
- Điểm số:
- Điểm chữ:
Tp Hồ Chí Minh, tháng 08 năm 2021 Giảng viên phụ trách học phần
(Ký và ghi rõ họ tên)
Trang 5Bảng 3.1: Bảng thông tin sinh viên 26
Bảng 3.2: Bảng thông tin môn học 26
Bảng 3.3: Bảng thông tin khoa 27
Bảng 3.4: Bảng thông tin lớp 27
Bảng 3.5: Bảng thông tin điểm sinh viên 28
Bảng 3.6: Bảng thuộc tính của lớp ConnectionToSQL 31
Bảng 3.7: Bảng thuộc tính của lớp EffectOfMouse 36
Bảng 3.8: Bảng thuộc tính của lớp Table 39
Bảng 3.9: Bảng thuộc tính của lớp Classroom 41
Bảng 3.10: Bảng thuộc tính của lớp Department 42
Bảng 3.11: Bảng thuộc tính của lớp Mark 43
Bảng 3.12: Bảng thuộc tính của lớp trừu tượng Person 45
Bảng 3.13: Bảng thuộc tính của lớp Student 46
Bảng 3.14: Bảng thuộc tính của lớp Subject 47
Bảng 3.15: Bảng thuộc tính của lớp ClassroomListPanela 49
Bảng 3.16: Bảng thuộc tính của lớp ConnectionSettingFrame 52
Bảng 3.17: Bảng thuộc tính của lớp DepartmentListPanel 54
Bảng 3.18: Bảng thuộc tính của lớp DetailsOfStudent 56
Bảng 3.19: Bảng thuộc tính của lớp FilterForm 59
Bảng 3.20: Bảng thuộc tính của lớp HomeFrame 61
Bảng 3.21: Bảng thuộc tính của lớp LoginFrame 63
Trang 6Bảng 3.23: Bảng thuộc tính của lớp MarkListPanel 68 Bảng 3.24: Bảng thuộc tính của lớp StudentListPanel 71 Bảng 3.25: Bảng thuộc tính của lớp SubjectListPanel 73
Trang 7Hình 1.1: Trường Đại Học Tài Chính – Marketing 2
Hình 1.2: Sơ đồ tổ chức trường Đại Học Tài Chính – Marketing 2
Hình 2.1: Ngôn ngữ lập trình Java 7
Hình 2.2: Bốn tính chất quan trọng trong lập trình hướng đối tượng 11
Hình 2.3: Cấu trúc phân cấp trong Java Swing 14
Hình 2.4: Sơ đồ JDBC 15
Hình 2.5: Bộ dụng cụ trong JDK bao gồm những gì ? 18
Hình 2.6: JRE – môi trường thời gian chạy Java trong JDK như thế nào ? 19
Hình 2.7: NetBeans IDE 22
Hình 2.8: Microsoft SQL Server 23
Hình 3.1: Dữ liệu bảng thông tin sinh viên 28
Hình 3.2: Dữ liệu bảng thông tin môn học 29
Hình 3.3: Dữ liệu bảng thông tin khoa 29
Hình 3.4: Dữ liệu thông tin bảng lớp 29
Hình 3.5: Dữ liệu bảng thông tin điểm 30
Hình 3.6: Diagram quản lý điểm sinh viên 30
Hình 3.7: Các lớp trong package control 31
Hình 3.8: Các lớp trong package model 40
Hình 3.9: Các lớp trong package view 48
Hình 3.10: Thiết kế giao diện cho lớp ClassroomListPanel 49
Hình 3.11: Thiết kế giao diện cho lớp ConnectionSettingFrame 51
Trang 8Hình 3.13: Thiết kế giao diện cho lớp DetailsOfStudent 55
Hình 3.14: Thiết kế giao diện cho lớp FilterForm 58
Hình 3.15: Thiết kế giao diện cho lớp HomeFrame 60
Hình 3.16: Thiết kế giao diện cho lớp LoginFrame 62
Hình 3.17: Thiết kế giao diện cho lớp ManagementPanel 64
Hình 3.18: Thiết kế giao diện cho lớp MarkListPanel 67
Hình 3.19: Thiết kế giao diện cho lớp StudentListPanel 70
Hình 3.20: Thiết kế giao diện cho lớp SubjectListPanel 72
Hình 4.1: Giao diện đăng nhập 75
Hình 4.2: Thực hiện chức năng hiện thị mật khẩu 76
Hình 4.3: Thực hiện thành công chức năng đăng nhập 77
Hình 4.4: Thực hiện thất bại chức năng đăng nhập 77
Hình 4.5: Thực hiện chức năng thay đổi kết nối cơ sở dữ liệu 78
Hình 4.6: Giao diện thay đổi kết nối cơ sở dữ liệu 79
Hình 4.7: Thực hiện thành công chức năng thay đổi cơ sở dữ liệu 80
Hình 4.8: Thực hiện thất bại thay đổi cơ sở dữ liệu 80
Hình 4.9: Giao diện chính của chương trình 81
Hình 4.10: Thực hiện chức năng hiển thị giao diện quản lý thông tin của các đối tượng liên quan đến quản lý điểm sinh viên 82
Hình 4.11: Thực hiện chức năng đăng xuất trên giao diện chính 82
Hình 4.12: Giao diện quản lý thông tin sinh viên 83
Hình 4.13: Thực hiện thành công chức năng thêm thông tin sinh viên 83
Trang 9Hình 4.15: Thực hiện thành công chức năng xóa thông tin sinh viên 84
Hình 4.16: Thực hiện thất bại chức năng xóa thông tin sinh viên 85
Hình 4.17: Thực hiện thành công chức năng sửa thông tin sinh viên 85
Hình 4.18: Thực hiện thất bại chức năng sửa thông tin sinh viên 86
Hình 4.19: Thực hiện thành công chức năng tìm kiếm thông tin sinh viên theo mã sinh viên 86
Hình 4.20: Thực hiện thất bại chức năng tìm kiếm thông tin sinh viên theo mã sinh viên 87
Hình 4.21: Thực hiện thành công chức năng tìm kiếm thông tin sinh viên theo tên sinh viên 87
Hình 4.22: Thực hiện thất bại chức năng tìm kiếm thông tin sinh viên theo tên sinh viên 88
Hình 4.23: Giao diện quản lý thông tin điểm sinh viên theo thang điểm 10 89
Hình 4.24: Giao diện quản lý thông tin điểm sinh viên theo thang điểm 4 89
Hình 4.25: Thực hiện thành công chức năng thêm thông tin điểm sinh viên 89
Hình 4.26: Thực hiện thất bại chức năng thêm thông tin điểm sinh viên 90
Hình 4.27: Thực hiện thành công chức năng xóa thông tin điểm sinh viên 90
Hình 4.28: Thực hiện thất bại chức năng xóa thông tin điểm sinh viên 91
Hình 4.29: Thực hiện thành công chúc năng sửa thông tin điểm sinh viên 91
Hình 4.30: Thực hiện thất bại chức năng sửa thông tin điểm sinh viên 92
Hình 4.31: Thực hiện thành công chức năng tìm kiếm thông tin điểm sinh viên theo mã sinh viên 92
Trang 10mã sinh viên 93
Hình 4.33: Thực hiện thành công chức năng tìm kiếm thông tin điểm sinh viên theo mã môn học 93
Hình 4.34: Thực hiện thất bại chức năng tìm kiếm thông tin điểm sinh viên theo mã môn học 94
Hình 4.35: Giao diện lọc danh sách sinh viên theo yêu cầu 94
Hình 4.36: Thực hiện mở giao diện lọc danh sách điểm sinh viên theo yêu cầu
95
Hình 4.37: Thực hiện chức năng lọc danh sách dựa trên tiêu chí “Xếp loại học lực” 95
Hình 4.38: Kết quả sau khi lọc danh sách dựa trên tiêu chí “Xếp loại học lực”
96
Hình 4.39: Thực hiện chức năng lọc danh sách dựa trên tiêu chí “Thang điểm 10” 96
Hình 4.40: Kết quả sau khi lọc danh sách dựa trên tiêu chí “Thang điểm 10”
97
Hình 4.41: Thực hiện chức năng lọc danh sách dựa trên tiêu chí “Thang điểm 4” .97
Hình 4.42: Kết quả sau khi lọc danh sách dựa trên tiêu chí “Thang điểm 4” 98
Hình 4.43: Giao diện xem chi tiết thông tin sinh viên trên giao diện quản lý điểm sinh viên 99
Hình 4.44: Thực hiện mở giao diện xem chi tiết thông tin sinh viên 99
Hình 4.45: Thực hiện thành công chức năng cập nhật thông tin sinh viên 100
Hình 4.46: Giao diện quản lý thông tin môn học 100
Trang 11Hình 4.48: Thực hiện thất bại chức năng thêm thông tin môn học 101
Hình 4.49: Thực hiện thành công xóa thông tin môn học 102
Hình 4.50: Thực hiện thất bại chức năng xóa thông tin môn học 102
Hình 4.51: Thực hiện thành công chức năng sửa thông tin môn học 103
Hình 4.52: Thực hiện thất bại chức năng sửa thông tin môn học 103
Hình 4.53: Thực hiện thành công chức năng tìm kiếm thông tin môn học theo mã môn học 104
Hình 4.54: Thực hiện thất bại chức năng tìm kiếm thông tin môn học theo mã môn học 104
Hình 4.55: Thực hiện thành công chức năng tìm kiếm thông tin môn học theo tên môn học 105
Hình 4.56: Thực hiện thất bại chức năng tìm kiếm thông tin môn học theo tên môn học 105
Hình 4.57: Giao diện quản lý thông tin lớp học 106
Hình 4.58: Thực hiện thành công chức năng thêm thông tin lớp học 106
Hình 4.59: Thực hiện thất bại thêm thông tin lớp học 107
Hình 4.60: Thực hiện thành công chức năng xóa thông tin lớp học 107
Hình 4.61: Thực hiện thất bại chức năng xóa thông tin lớp học 108
Hình 4.62: Thực hiện thành công chức năng sửa thông tin lớp học 108
Hình 4.63: Thực hiện thất bại chức năng sửa thông tin lớp học 109
Hình 4.64: Thực hiện thành công chức năng tìm kiếm thông tin lớp học theo mã lớp học 109
Trang 12học 110
Hình 4.66: Thực hiện thành công chức năng tìm kiếm thông tin lớp học theo tên lớp học 110
Hình 4.67: Thực hiện thất bại chức năng tìm kiếm thông tin lớp học theo tên lớp học 111
Hình 4.68: Giao diện quản lý thông tin khoa 111
Hình 4.69: Thực hiện thành công chúc năng thêm thông tin khoa 112
Hình 4.70: Thực hiện thất bại chức năng thêm thông tin khoa 112
Hình 4.71: Thực hiện thành công chức năng xóa thông tin khoa 113
Hình 4.72: Thực hiện thất bại chức năng xóa thông tin khoa 113
Hình 4.73: Thực hiện thành công chức năng sửa thông tin khoa 114
Hình 4.74: Thực hiện thất bại chức năng sửa thông tin khoa 114
Hình 4.75: Thực hiện thành công chức năng tìm kiếm thông tin khoa theo mã khoa 115
Hình 4.76: Thực hiện thất bại chức năng tìm kiếm thông tin khoa theo mã khoa 115
Hình 4.77: Thực hiện thành công chức năng tìm kiếm thông tin khoa theo tên khoa 116
Hình 4.78: Thực hiện thất bại chức năng tìm kiếm thông tin khoa theo tên khoa 116
Trang 13ANSI American National Standards Institute
API Application Programing Interface
GUI Graphical User Interface
ISO International Organization for StandardizationJDBC Java Database Connectivity
JVM Java Virtual Machine
OOP Object Oriented Programing
RDBMS Relational Database Management SystemSQL Structure Query Language
XML eXtensible Markup Language
Trang 14Abstraction Trừu tượng
Trang 15LỜI CẢM ƠN i
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN ii
DANH MỤC BẢNG iii
DANH MỤC HÌNH v
DANH MỤC TỪ VIẾT TẮT xi
DANH MỤC THUẬT NGỮ ANH – VIỆT xii
MỤC LỤC xiii
Chương 1: GIỚI THIỆU TỔNG QUAN 1
1.1 Giới thiệu đơn vị nghiên cứu 1
1.1.1 Lịch sử hình thành 1
1.1.2 Tổ chức hoạt động của nhà trường 2
1.2 Lý do hình thành đề tài 3
1.3 Mục tiêu đề tài 4
1.4 Nội dung đề tài 4
1.5 Đối tượng và phạm vi đề tài 5
1.6 Phương pháp nghiên cứu 5
1.7 Dự kiến kết quả đạt được 6
Chương 2: CƠ SỞ LÝ THUYẾT 7
2.1 Tổng quan về lập trình Java 7
2.1.1 Ngôn ngữ lập trình Java 7
2.1.1.1 Khái niềm về ngôn ngữ lập trình Java 7
Trang 162.1.1.3 Lập trình hướng đối tượng trong ngôn ngữ lập trình Java 9
2.1.1.4 Ưu và nhược điểm của ngôn ngữ lập trình Java 11
2.1.2 Java Swing 13
2.1.2.1 Khái niệm về Java Swing 13
2.1.2.2 Ứng dụng của Java Swing 13
2.1.2.3 Cấu trúc phân cấp trong Java Swing 14
2.1.3 JDBC 15
2.1.3.1 Khái niệm về JDBC 15
2.1.3.2 Kiến trúc của JDBC 15
2.1.3.3 Các thành phần của JDBC 16
2.1.4 JDK 16
2.1.4.1 Khái niệm về JDK 16
2.1.4.2 JRE – môi trường thời gian chạy Java trong JDK như thế nào ?
19
2.1.4.3 Các bộ công cụ hỗ trợ phát triển ứng dụng trong JDK 20
2.2 Tổng quan về công cụ hỗ trợ 21
2.2.1 Apache NetBeans IDE 21
2.2.2 Microsoft SQL Server 23
2.2.2.1 Khái niệm về Microsoft SQL Server 23
2.2.2.2 Ưu và nhược điểm của Microsoft SQL Server 24
Chương 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 25
3.1 Phân tích thiết kế hệ thống 25
Trang 173.1.2 Phạm vi của hệ thống 25
3.2 Thiết kế cơ sở dữ liệu 25
3.2.1 Thiết kế các bảng 25
3.2.2 Dữ liệu cho các bảng 28
3.2.3 Diagram 30
3.3 Thiết kế các lớp 30
3.3.1 Package control 30
3.3.1.1 Lớp ConnectionToSQL 31
3.3.1.2 Lớp MouseEffect 35
3.3.1.3 Lớp Table 38
3.3.2 Package model 40
3.3.2.1 Lớp Classroom 40
3.3.2.2 Lớp Department 41
3.3.2.3 Lớp Mark 43
3.3.2.4 Lớp trừu tượng Person 44
3.3.2.5 Lớp Student 46
3.3.2.6 Lớp Subject 47
3.3.3 Package view 48
3.3.3.1 Lớp ClassroomListPanel 48
3.3.3.2 Lớp ConnectionSettingFrame 51
3.3.3.3 Lớp DepartmentListPanel 53
Trang 183.3.3.5 Lớp FilterForm 58
3.3.3.6 Lớp HomeFrame 60
3.3.3.7 Lớp LoginFrame 62
3.3.3.8 Lớp ManagementPanel 64
3.3.3.9 Lớp MarkListPanel 66
3.3.3.10 Lớp StudentListPanel 69
3.3.3.11 Lớp SubjectListPanel 72
Chương 4: HIỆN THỰC CHƯƠNG TRÌNH 75
4.1 Giao diện đăng nhập 75
4.2 Giao diện thay đổi kết nối cơ sở dữ liệu 78
4.3 Giao diện chính của chương trình 81
4.4 Giao diện quản lý thông tin sinh viên 82
4.5 Giao diện quản lý thông tin điểm sinh viên 88
4.6 Giao diện lọc danh sách điểm sinh viên theo yêu cầu 94
4.7 Giao diện xem chi tiết thông tin của sinh viên trên giao diện quản lý điểm sinh viên
98 4.8 Giao diện quản lý thông tin môn học 100
4.9 Giao diện quản lý thông tin lớp học 105
4.10 Giao diện quản lý thông tin khoa 111
Chương 5: KẾT LUẬN 117
5.1 Kết luận 117
Trang 195.1.2 Hạn chế 117
5.2 Hướng phát triển 117
5.2.1 Hướng khắc phục các hạn chế 117
5.2.2 Hướng mở rộng đồ án môn học 117
TÀI LIỆU THAM KHẢO 119
Trang 20Chương 1: GIỚI THIỆU TỔNG QUAN1.1 Giới thiệu đơn vị nghiên cứu
1.1.1 Lịch sử hình thành
Tiền thân của Trường Đại học Tài chính - Marketing hiện nay là Trường Cán bộVật giá Trung ương tại miền Nam, được thành lập theo Quyết định số 210/VGNN-TCĐT ngày 01/9/1976 của Ủy ban Vật giá Nhà nước
Năm 1978, Trường Cán bộ Vật giá Trung ương tại miền Nam được chuyển thànhTrường Trung học Vật giá số 2 theo Quyết định số 175/VGNN-TCCB ngày 23/8/1978của Ủy ban Vật giá Nhà nước
Năm 1992, Trường Trung học Vật giá số 2 được đổi tên thành Trường trung họcchuyên nghiệp Marketing theo Quyết định số 37/VGNN-TCCB ngày 13/3/1992 của
Ủy ban Vật giá Nhà nước
Năm 1994, Trường Cao đẳng Bán công Marketing được thành lập trên cơ sởTrường trung học chuyên nghiệp Marketing trực thuộc Ban Vật giá Chính phủ theoQuyết định số 641/QĐ-TTg ngày 04/11/1994
Năm 2003, Trường Cao đẳng Bán công Marketing được chuyển vào trực thuộc
Bộ Tài chính theo Quyết định số 116/2003/QĐ-BTC ngày 25/7/2003
Năm 2004, Trường Đại học Bán công Marketing được thành lập trên cơ sởTrường Cao đẳng Bán công Marketing theo Quyết định số 29/2004/QĐ-TTg ngày05/03/2004 của Thủ tướng Chính phủ
Năm 2009, Trường Đại học Bán công Marketing được đổi tên thành Trường Đạihọc Tài chính - Marketing theo Quyết định số 395/QĐ-TTg ngày 25/03/2009 của Thủtướng Chính phủ
Năm 2015, Trường Đại học Tài chính - Marketing được Thủ tướng Chính phủphê duyệt Đề án thí điểm đổi mới cơ chế hoạt động giai đoạn giai đoạn 2015 - 2017 tại
Trang 21Quyết định số 378/QĐ-TTg ngày 23/3/2015, trở thành 1 trong 5 trường đại học cônglập đầu tiên được giao thí điểm đổi mới cơ chế hoạt động theo Nghị quyết số 77/NQ-
CP ngày 24/10/2014 của Chính phủ
Hình 1.1: Trường Đại Học Tài Chính – Marketing
1.1.2 Tổ chức hoạt động của nhà trường
Hình 1.1: Sơ đồ tổ chức trường Đại Học Tài Chính – Marketing
Trang 221.2 Lý do hình thành đề tài
Trong thời đại Công nghệ thông tin bùng nổ trên toàn cầu thì các quốc gia trênthế giới dù là phát triển hay đang phát triển đều cố gắng áp dụng tin học vào mọi mặtcủa đời sống xã hội Tin học luôn có mặt mọi lúc, mọi nơi nhằm hỗ trọ cho các ngànhnghiên cứu đạt được những thành tựu to lớn cũng như để hiện đại hóa quy trình quản
lý sản xuất kinh doanh nhằm đạt hiệu quả kinh tế cao nhất Chính vì vậy, trong thờigian gần đây mọi ngành nghề đã chú trọng đến việc xây dựng các phần mềm ứng dụngtin học trong công tác quản lý
Với những lợi ích hiển nhiên do Công nghệ thông tin mang lại, các nhà quản lý
đã kịp thời đưa những ứng dụng tin học vào phục vụ cho công tác quản lý kinh doanh.Tùy thuộc vào quy mô, mục đích thị trường, mức độ phục vụ, quyền sở hữu mà taphân tích thiết kế sao cho người quản lý nắm được nhanh chóng chính xác đồng thờigiảm được các chi phí, các thao tác thủ công và đạt được hiệu quả kinh tế cao nhất.Phần mềm tin học được ứng dụng rộng rãi trong quản lý, học tập,… Nó giúp chocon người sử dụng có được những thông tin nhanh chóng và chính xác, từ đó mà chấtlượng công việc đạt hiệu quả cao
Bài toán “Quản lý điểm sinh viên” nhằm giải quyết và đáp ứng một cách hiệuquả các nhu cầu về mặt quản lý thông tin trong các trường Đại Học Với vốn kiến thức
đã được học tại trường, em mong muốn thiết kế một chương trình có thể ứng dụng
được vào thực tế Chính vì vậy, đề tài “Chương trình quản lý điểm thi sinh viên
trường Đại Học Tài Chính – Marketing” sẽ phần nào đưa ra được những nhận xét,
những đánh giá tổng thể và từ đó đưa ra được hệ thống mới với các chức năng nhập,tìm kiếm, xem, sửa, xóa Trong công tác quản lý dựa trên sự hỗ trợ của máy tính Hệthống quản lý sẽ được xây dựng trên ngôn ngữ lập trình Java và cả Hệ thống quản lý
dữ liệu, tính linh hoạt cùng với mọi mức người dùng và rất dễ sử dụng
Trang 231.3 Mục tiêu đề tài
Quản lý điểm sinh viên là công việc nhằm quản lý tất cả quá trình hoạt động vàhọc tập của sinh viên trong các trường Đại Học cũng để nâng cao về Công nghệ thôngtin
Trong quản lý điểm sinh viên có nhiều đầu điểm, có nhiều môn và có điểm củanhiều lần thi
Chương trình “Quản lý điểm sinh viên” gồm nhiều lĩnh vực như quản lý họ tên,ngày sinh, mã số sinh viên, điểm thi,…
Xây dựng chương tình “Quản lý điểm sinh viên” nhằm hỗ trợ cho công tác quản
lý họ tên, ngày sinh, điểm Bài toán đặt ra là phân tích thiết kế hệ thống thông tin vấn
đề đặt ra là tại sao phải quản lý ? Và quản lý cái gì và quản lý như thế nào để công việc
có hiệu quả, tiết kiệm được thời gian cho cán bộ công nhân viên
1.4 Nội dung đề tài
Trong lĩnh vực quản lý điểm sinh viên việc điều chỉnh và bổ sung thông tin thựchiện rất khó khan và không rõ ràng, việc tìm kiếm thông tin mất nhiều thời gian, độchính xác kém
Do đó việc Tin học hóa các hoạt động trong nhà trường vào “Quản lý điểm sinhviên” ngày càng trở nên cần thiết Việc ứng dụng Tin học trong công tác quản lý giúpcho con người thoat khỏi lao động thủ công, nâng cao hiệu quả của công việc, tiếtkiệm rất nhiều thời gian
Đề tài “Chương trình quản lý điểm thi sinh viên trường Đại Học Tài Chính –
Marketing” xây dựng một phần mềm giúp các trường Đại Học quản lý điểm sinh viên
một cách dễ dàng, thuận tiện và thống nhất Chương trình quản lý này thay thế quytrình quản lý điểm thủ công áp dụng cho tất cả các trường
Chương trình “Quản lý điểm sinh viên” giúp giảm bớt phần lớn các công việc thủcông trong nghiệp vụ quản lý điểm Ngoài ra, chương trình phải đảm bảo xử lý các dữ
Trang 24liệu một cách chính xác, nhanh chóng và có thể đưa ra các báo cáo tổng kết theo yêucầu nghiệp vụ quản lý điểm.
1.5 Đối tượng và phạm vi đề tài
Đối tượng nghiên cứu là các vấn đề liên quan đến nghiệp vụ quản lý điểm như lànhập điểm, sửa điểm, xóa điểm, tìm kiếm điểm,…của các sinh viên học tại trường ĐạiHọc Tài Chính – Marketing
1.6 Phương pháp nghiên cứu
Để xây dựng được một phần mềm quản lý điểm sinh viên, em đã nghiên cứu kĩcác nội dung liên quan đến xây dựng phần mềm quản lý trên các trang web về lậptrình Kết hợp với việc tìm hiểu chuyên sâu các đặc thù quản lý điểm sinh viên, cáccông việc cần làm Qua đó đưa ra các giải pháp xây dựng một hệ thống phần mềmquản lý điểm sinh viên phù hợp
Một số phương pháp nghiên cứu mà em áp dụng vào đề tài để xây dựng chươngtrình quản lý điểm sinh viên:
Nghiên cứu và tham khảo một số tài liệu liên quan tới môn Phân tích thiết
kế hệ thống thông tin, tiến hành phân tích và thiết kế hệ thống thông tinquản lý điểm sinh viên
Phương pháp phân tích và tổng hợp
Phương pháp quan sát, tiềm hiểu nghiệp vụ quản lý điểm sinh viên trongthực tế
Trang 251.7 Dự kiến kết quả đạt được
Tìm hiểu cơ sở lý thuyết để phục vụ cho phân tích và thiết kê hệ thống, đặc tả cácchức năng của hệ thống quản lý điểm sinh viên
Xây dựng chương trình quản lý điểm sinh viên có thể giải quyết được hầu hết cácvấn đề cơ bản mà một chương trình quản lý nói chung yêu cầu đó là:
Dễ sử dụng
Khả năng cập nhật và xử lý dữ liệu chính xác và nhanh chóng
Cung cấp các công cụ hữu ích cho nghiệp vụ quản lý điểm, quản lý sinhviên
Tích lũy kinh nghiệm cải thiện kĩ năng thực hiện đề tài cho các môn học kế tiếp
Trang 26Chương 2: CƠ SỞ LÝ THUYẾT2.1 Tổng quan về lập trình Java
2.1.1 Ngôn ngữ lập trình Java
2.1.1.1 Khái niềm về ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để cócàng ít phụ thuộc thực thi càng tốt Nó là ngôn ngữ lập trình có mục đích chung chophép các nhà phát triển ứng dụng viết một lần, chạy ở mọi nơi (WORA), nghĩa là mãJava đã biên dịch có thể chạy trên tất cả các nền tảng hỗ trợ Java mà không cần biêndịch lại Các ứng dụng Java thường được biên dịch thành bytecode có thể chạy trên bất
kỳ máy ảo Java (JVM) nào bất kể kiến trúc máy tính bên dưới Cho phép tạoApplication hoặc Applet (chạy trên trình duyệt có hỗ trợ Java) Sử dụng hai cơ chế:Interpreter (Thông dịch) và Compiler (Biên dịch)
Hình 2.1: Ngôn ngữ lập trình Java
2.1.1.2 Đặc điểm của ngôn ngữ lập trình Java
Đơn giản:
Java được thiết kế để dễ học, quen thuộc Nếu hiểu được những khái niệm cơ bản
về OOP, sẽ dễ dàng làm chủ Java Loại bỏ những đặc trưng phức tạp: Con trỏ, địnhnghĩa chồng toán tử, đa kế thừa thay bằng interface, loại bỏ struct và union
Trang 27Hướng đối tượng:
Mọi thứ là một đối tượng Java có thể dễ dàng mở rộng kể tử khi nó được dựatrên mô hình đối tượng
Độc lập phần cứng và hệ điều hành:
Khi Java được biên dịch, nó không được biên dịch vào một nền tảng cụ thể mà làbytecode Bytecode này được thông dịch bởi máy ảo (JVM) tùy vào nên tảng mà nóđang thực thi nên không cần biên dịch lại mã nguồn
Bảo mật:
- Dữ liệu và phương thức được đóng gói bên trong lớp
- Trình biên dịch kiểm soát mã an toàn và kiểm soát tuân thủ đúng quy tắc củaJava
- Trình thông dịch kiểm soát bytecode đảm bảo quy tắc an toàn trước khi thựcthi
- Kiểm soát việc nạp vào bộ nhớ, giới hạn truy xuất trước khi nạp vào hệ thống
Mạnh mẽ:
- Java nỗ lực loại trừ tình huống dễ bị lỗi bằng cách nhấn mạnh chủ yếu vào việckiểm tra lỗi thời điểm biên dịch và thực thi
- Khai bái kiểu dữ liệu tường minh
- Không dung con trỏ và phép toán con trỏ
- Kiểm soát việc truy xuất ngoài phạm vi dữ liệu mảng
- Cấp phát và giải phóng bộ nhớ được thực hiện tự động (Garbage collection)
- Cơ chế bẫy lỗi giúp kiểm soát và đơn giản trong xử lý lỗi và phục hồi sau lỗi
Đa luồng:
- Có thể viết chương trình có thể làm nhiều việc cùng một lúc
Trang 28- Cho phép các nhà phát triển xây dựng các ứng dụng tương tác chạy đồng thời &đồng bộ.
Hiệu suất cao:
Với việc sử dụng các trình biên dịch Just-In Time (bytecode → machine code)
2.1.1.3 Lập trình hướng đối tượng trong ngôn ngữ lập trình Java
Lập trình hướng đối tượng(OOP) là phương pháp lập trình hướng đến việc triểnkhai các thực thể trong thế giới thực OOP được xem là giúp tăng năng suất, đơn giảnhóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phép lập trìnhviên tập trung vào các đối tượng phần mềm ở bậc cao hơn
Các tính chất trong lập trình hướng đối tượng:
Object:
Các thực thể có trạng trái hành vi được gọi là object vd: cây bút, con người, conchim…
Class
Trang 29Class là một bản vẽ thiết kế của các object (blueprint) Ví dụ khi nói đến xe đạpthì chúng ta có hàng ngàn chiếc xe đạp thế nhưng mà mỗi chiếc đều khác nhau có thể
về giá, chất liệu, thiết kế… nhưng chúng vẫn là xe đạp
Vậy là xe đạp được hiểu như là một class và hàng ngàn chiếc xe đạp kia mỗichiếc là một instance
Trừu tượng (Abstraction)
Trừu tượng cho phép ẩn đi quá trình thực thi bên trong và chỉ hiển thị nhữngchức năng
Ví dụ: Khi bạn dùng một chiếc điện thoại di dộng có thể gọi điện và nhắn tin vàbạn dùng nó để gọi điện và nhắn tin cho bạn bè, thế nhưng bạn không biết được bêntrong điện thoại nó làm những gì để thực hiện các yêu cầu gọi và nhắn tin cho chúng taphải không nào
Đóng gói (Encapsulation)
Trong lập trình hướng đối tượng việc liên kết dữ liệu và method lại với nhau vàgiữ chúng an toàn khỏi những tác động bên ngoài gọi là tính đóng gói
Trang 30Trong java một class có thể cấp quyền cho một thuộc tính hay một phương thức
ra bên ngoài dựa vào các từ khoá:
public: Cho phép truy cập ở mọi phạm vi.
private: Cho phép truy cập trong nội bộ class.
protected: Chỉ cho phép các class kế thừa truy cập.
default: Chỉ cho phép truy cập nội bộ class và cùng package.
Hình 2.1: Bốn tính chất quan trọng trong lập trình hướng đối tượng
2.1.1.4 Ưu và nhược điểm của ngôn ngữ lập trình Java
Ưu điểm:
Dễ học tập: Con đường học tập đối với ngôn ngữ lập trình Java là cực kỳ ngắn.
Java dễ viết, dễ biên dịch và gỡ lỗi hơn các ngôn ngữ lập trình chính khác như C ++,Objective-C, C # Đó là một thế mạnh to lớn, bởi vì điều này đảm bảo rằng các lậptrình viên Java có thể làm việc hiệu quả trong một khoảng thời gian không quá dài đểhọc tập Bên cạnh đó, những điều cũng làm cho Java hấp dẫn hơn là cú pháp giốngnhư tiếng Anh viết và nói hàng ngày Điều này có nghĩa là Java rất dễ đọc và logic
Lập trình hướng đối tượng: Ở đây có một lợi thế thú vị khác khi sử dụng Java.
Đó là Java cho phép bạn tạo các chương trình mô-đun và mã có thể tái sử dụng để giữcho hệ thống có thể mở rộng cũng như linh hoạt
Trang 31API phong phú: Java cung cấp các API cho các hoạt động khác nhau như kết nối
cơ sở dữ liệu, kết nối mạng, I / O, phân tích cú pháp XML, các tiện ích và hơn thế nữa
Công cụ mã nguồn mở mạnh mẽ phát triển nhanh chóng: Một số lượng lớn
các công cụ phát triển mã nguồn mở sử dụng Java đã làm cho Java trở thành một lựachọn mạnh mẽ hơn cho các nhà phát triển, ví dụ như Eclipse và Netbeans Chúng lànhững nền tảng cực kỳ mạnh mẽ và đã đóng góp hiệu quả trong việc tạo ra Java thànhcông như ngày hôm nay Nó làm cho mã hóa đơn giản hơn, và cung cấp khả năng cực
kỳ “khủng” để gỡ lỗi
Thư viện mã nguồn mở: Số lượng lớn các thư viện nguồn mở và trưởng thành
với sự hỗ trợ công nghiệp cũng đảm bảo rằng Java được sử dụng ở mọi nơi Một sốthư viện này đã được đóng góp bởi nhiều tổ chức phổ biến như Apache, Google,Yahoo, Facebook, LinkedIn,… Điều đó làm cho Java trở nên phổ biến hơn
Miễn phí: Chúng ta không thể bỏ lỡ yếu tố này Khi nói đến sự phát triển, chúng
ta đang phải đối mặt với sự cạnh tranh khốc liệt Nhiều doanh nghiệp vừa và nhỏ muốnphát triển phần mềm và/ hoặc phát triển ứng dụng web được áp dụng cho doanhnghiệp của họ, nhưng họ không thực sự có một ngân sách lớn cho điều đó Miễn phígiúp mang lại hiệu quả chi phí cho doanh nghiệp
Hỗ trợ cộng đồng: Cuối cùng, có một cộng đồng hỗ trợ Java lớn mà ngôn ngữ
này tập hợp được Cọng đồng này sẽ giúp đồng nhành cùng các Java developer để học
về nghệ thuật lập trình cũng như để làm việc hiệu quả hơn
Nhược điểm:
+ Trình biên dịch Java chưa được tối ưu hóa tốt so với C ++
+ Không có sự tách biệt đặc điểm kỹ thuật khi triển khai
+ Quản lý bộ nhớ, với Java, là khá tốn kém
+ Việc thiếu các template có thể hạn chế khả năng của Java để tạo ra các cấu trúc
dữ liệu chất lượng cao
Trang 32+ Người ta có thể tìm thấy một số lỗi trong trình duyệt và các chương trình ví dụ.
2.1.2 Java Swing
2.1.2.1 Khái niệm về Java Swing
Java Swing là cách gọi rút gọn khi người ta nhắc đến Swing của Java Foundation(JFC) Nó là bộ công cụ GUI mà Sun Microsystems phát triển để xây dựng các ứngdụng tối ưu dùng cho window (bao gồm các thành phần như nút, thanh cuộn,…)
Swing được xây dựng trên AWT API và hoàn toàn được viết bằng Java Tuynhiên, nó lại khác với AWT ở chỗ bộ công cụ này thuộc loại nền tảng độc lập, baogồm các thành phần nhẹ và phức tạp hơn AWT
Các gói javax.swing bao gồm các lớp cho Java Swing API như JMenu, JButton,JTextField, JRadioButton, JColorChooser,…
Việc xây dựng ứng dụng sẽ trở nên dễ dàng hơn với Java Swing vì chúng ta cócác bộ công cụ GUI giúp đỡ công việc
Swing được chính thức phát hành vào tháng 3/1998 Nó đi kèm với thư việnSwing 1.0 với hơn 250 lớp, 80 giao tiếp
2.1.2.2 Ứng dụng của Java Swing
Java Swing được dùng để hỗ trợ tạo giao diện đồ hoạ người dùng (với Java).Bộcông cụ này cung cấp các bộ điều khiển nâng cao như thanh trượt, colorpicker, Tree,TabbedPane và bảng điều khiển,
Trang 33Ngoài ra bạn cũng có thể tùy chỉnh các điều khiển xoay một cách dễ dàng màkhông ảnh hưởng đến các thành phần khác.
2.1.2.3 Cấu trúc phân cấp trong Java Swing
Phân cấp của API Java swing như liệt kê ở hình dưới đây:
Hình 2.1: Cấu trúc phân cấp trong Java Swing
Tất cả các thành phần trong swing được kế thừa từ lớp Jcomponent như JButton,JComboBox, JList, JLabel đều có thể được thêm vào lớp Container
Container là các window như Frame và Dialog Các container này chỉ có thểthêm một thành phần vào chính nó
Trang 34JDBC API sử dụng JDBC driver để làm việc với database gồm 4 loại:
- JDBC-ODBC Bridge Driver
JDBC Driver API: Hỗ trợ JDBC Manager đến Driver connection:
JDBC driver đảm bảo cho JDBC API kết nối đến database mà nó cần Đối vớimỗi database sẽ có JDBC driver riêng mà JDBC API có thể chỉ định để làm việc vớinó
Trang 352.1.3.3 Các thành phần của JDBC
JDBC API cung cấp các Class và Interface sau:
DriverManager: Lớp này quản lý các Database Driver Ánh xạ các yêu cầu kết
nối từ ứng dụng Java với Data driver thích hợp bởi sử dụng giao thức kết nối phụ
Driver: Interface này xử lý các kết nối với Database Server Hiếm khi, bạn tương
tác trực tiếp với các đối tượng Driver này Thay vào đó, bạn sử dụng các đối tượngDriverManager để quản lý các đối tượng kiểu này
Connection: Đối tượng Connection biểu diễn ngữ cảnh giao tiếp Interface này
chứa nhiều phương thức đa dạng để tạo kết nối với một Database
Statement: Bạn sử dụng các đối tượng được tạo từ Interface này để đệ trình các
lệnh SQL tới Database Ngoài ra, một số Interface kết thừa từ nó cung chấp nhận thêmcác tham số để thực thi các thủ tục đã được lưu trữ
ResultSet: Các đối tượng này giữ dữ liệu được thu nhận từ một Database sau khi
bạn thực thi một truy vấn SQL Nó nóng vai trò như một Iterator để cho phép bạn vọcqua dữ liệu của nó
SQLException: Lớp này xử lý bất cứ lỗi nào xuất hiện trong khi làm việc với
JDK chính là một công nghệ và trong đó là tập hợp một loạt các công cụ nhằm
hỗ trợ cho người dùng trong việc viết lên các chương trình ứng dụng dưới dạng ngônngữ lập trình
Trang 36JDK dùng để viết ứng dụng mà trong đó bao gồm JRE - dùng để chạy các ứngdụng mà JDk cần đến, để góp phần làm nên các ứng dụng trong một hệ ngôn ngữ lậptrình mà trong đó JDK có được sự hỗ trợ từ các chương trình có sẵn trong JRE.
Sự ra đời của JDK như thế nào ?
Từ khi ngôn ngữ lập trình Java ra đời cũng đồng nghĩa với sự hình thành và pháttriển của bộ công cụ hỗ trợ này ngay sau đó Đây là một trong những bộ công cụ thôngdụng và được sử dụng rộng rãi và phổ biến bậc nhất đi cùng với sự phát triển của ngônngữ lập trình JAVA
JDK cũng là một công nghệ được phát triển bởi Sun Microsystem và được tuyên
bố cấp phép bởi GNU vào ngày 11/7/2006 - giấy phép về công đồng GNU – một dạnggiấy phép về phần mềm tự do cho phép người dùng có thể chia sẻ, sửa đổi và nghiêncứu về các loại phần mềm và được sử dụng rất phổ biến JDK đã được cung cấp nguồn
mở và trở thành một phần mềm tự do Nguồn mở miễn phí - Openjdk được phát hànhvào năm 2007 ngay sau đó
- Thứ hai đó chính là trình biên dịch hỗ trợ trong việc biên dịch ngôn ngữ lậptrình từ ngôn ngữ nguồn(mã nguồn sang ngôn ngữ đích Thông thường các ngôn ngữnguồn thường sẽ đơn giản hơn các ngôn ngữ được biên dịch ra ngôn ngữ đích.(JavaCompile)
Trang 37- Thứ ba là trình tạo bản phân phối cho phép tất cả các tệp thành một bản duynhất việc làm này có tác dụng rất lớn trong việc tiết kiệm dung lượng trong quá trình
sử dụng các ứng dụng và việc lưu trữ dữ liệu hay gửi đi một nơi khác trong thực tế trởnên nhỏ gọn và dễ dàng hơn, hay người ta gọi trình tạo bản phân phối này là JavaAchieved – nén các file lại thành một bản duy nhất với các đuôi Jay một cách đồng bộhóa
Hình 2.1: Bộ dụng cụ trong JDK bao gồm những gì ?
- Thứ 4 đó chính là trình sửa lỗi – Debug - chuyên đi phân tích và gỡ lỗi cho cácchương trình Java Hãy hiểu theo một cách hài hước hơn đây chính là giám thị trongcác phong thi, bất cứ ai phạm lỗi thì hãy mau mau hiện hình và chịu phạt
- Thứ 5 đó chính là trình tạo tài liệu - Java Doc
Trang 38các công cụ hỗ trợ chính đó chính là: Trình thông dịch trình biên dịch, trình sửa lỗi,trình chạy Applet (một ứng dụng thu nhỏ được viết dưới dạng ngôn ngữ lập trình vàđược biên dịch lại bằng ngôn ngữ Java Bytecode)và tài liệu nghiên cứu.
2.1.4.2 JRE – môi trường thời gian chạy Java trong JDK như thế nào ?
Được viết tắt là Java Runtime Environment – là môi trường để các ứng dụng thựcthi trên đó trong khoảng thời gian lập trình JRE có chứa các thư viện lớp Java, trình tảilớp và máy ảo Java 3 ứng dụng này có tác động trực tiếp và liên quan chặt chẽ vớinhau kết hợp với nhau một cách chặt chẽ để có thể tạo nên hệ thống thuận tiện nhấtcung cấp môi trường cho các ứng dụng khác chạy trên nó bằng cách thư viện lớp Java
là nguồn tài nguyên cho bất kỳ ứng dụng nào cần như một kho nguyên liệu để hoạtđộng, khi trình tải lớp tài mã đã được biên dịch vào bộ nhớ và sau đó các mã này kếtnối với các thư viện lớp Java Sau cùng, máy ảo Java hoạt động dựa trên kết quả côngviệc mà thư viện lớn và trình tải lớp đã chạy trước đó bằng cách cho phép các chươngtrình Java và cả các chương trình được lập trình bằng ngôn ngữ khác được chạy dựatrên JRE mà sau đó được biên dịch sang mã Bytes Java
Hình 2.1: JRE – môi trường thời gian chạy Java trong JDK như thế nào ?
Trang 39Như vậy công thức cho JRE = thư viện lớp Java trình tải lớp Java + máy ảo Java,Java Virtual Machine).
JRE là một trong những nền tảng để giúp cho JDK có thể phát triển và được chạytrên môi trường đó Hãy nói theo cách khác, JDK bao gồm JRE – là điều kiện bắt buộcphải có để có thể tạo nên được bộ công cụ phát triển chương trình Java hoàn chỉnh
Sự tạo dựng môi trường trong JRE chính là nền tảng cho máy ảo Java - JVMđược thực hiện theo một chu trình Hay nói cách khác, ta có thể hiểu được sự tạo dựngtrong sự liên kết giữa các chương trình này sẽ trở thành nguồn lực hỗ trợ cho sự pháttriển của JDK
JDK= JRE + JVM
2.1.4.3 Các bộ công cụ hỗ trợ phát triển ứng dụng trong JDK
Từ việc tìm hiểu về các bộ phận cấu thành nên JDK bao gồm JRE – môi trường –nền tảng chạy các ứng dụng và các công cụ hỗ trợ cho sự phát triển các chương trìnhứng dụng sẽ được phân tích kỹ hơn trong phần nội dung tiếp theo sau đây
Java Compiler – trình biên dịch Java – công cụ hỗ trợ trong JDK:
Trình biên dịch Java bao gồm các chương trình biên dịch ngôn ngữ trong đó cótình biên dịch Javac Đây chính là một công cụ | hỗ trợ khi mà người lập trình thườngviết mã bằng ngôn ngữ lập trình sau đó nó có thể được biên dịch thành mã bytecode.Trong
ngôn ngữ lập trình Java khi các ứng dụng được khởi động và thực thi các mãbytecode này lại trở thành mã máy tính nhờ sự hoạt động của máy ảo Java Chính vìvậy ta có thể thấy được rằn mã bytecode ở đây chỉ đóng một vai trò trung gian trongquá trình chuyển đổi ngôn ngữ lập trình với sự hỗ trợ của trình biên dịch Java
Trình lưu trữ Java – Achieved Java:
Trong thực tế đây là một ứng dụng rất thuận tiện khi các tệp nhỏ được nén lại vàlưu trữ trong cùng một tệp lớn mà người ta gọi đó chính là các định dạng tập tin gói
Trang 40Điều này làm cho việc giảm tải được nguồn lưu trữ và quản lý các file trong máy tínhđược trở nên dễ dàng hơn rất nhiều, và hơn nữa trình lưu trữ Java này cũng giúp choviệc đồng bộ hóa được các dạng tài liệu dưới định dạng đuôi Jar.
Trình gỡ lỗi – Buggeder tool – hay công cụ gỡ lỗi:
Đây là một trong những công việc mà bất cứ coder hay developer nào cũng cầnphải làm Trình gỡ bug cũng là một trong các công cụ rất hữu dụng trong JDK Điềunày có nghĩa khi sử dụng trình gỡ lỗi các lập trình viên cần phải đi kiểm tra cácchương trình đã được lập trình trước đó để phát hiện lỗi và gỡ lỗi từ các chương trìnhđích
Đây có thể là một trong những công đoạn quan trọng trong việc làm của một lậptrình viên
Trình tạo tài liệu Javadoc:
Javadoc trình tạo tài liệu chính là công cụ tạo ra các các tài liệu và hướng dẫn sửdụng API - Application Programming Interface - giao diện lập trình ứng dụng chophép việc tạo dựng chương trình dịch vụ hay việc trao đổi dữ liệu với nhau giữa cácmáy tính
2.2 Tổng quan về công cụ hỗ trợ
2.2.1 Apache NetBeans IDE
Apache NetBeans IDE là một công cụ hỗ trợ lập trình viết mã code miễn phí
được cho là tốt nhất hiện nay, được sử dụng chủ yếu cho các lập trình viên phát triểnJava tuy nhiên phần mềm có dung lượng khá là nặng dành cho các máy cấu hình cóRAM, CPU tương đối cao để vận hành
Apache NetBeans IDE là môi trường phát triển tích hợp và cực kỳ cần thiết cho
các lập trình viên, công cụ này có thể hoạt động tốt với rất nhiều nền tảng hệ điều hànhkhác nhau như Linux, Windows, MacOS, là một mã nguồn mở cung cấp các tínhnăng cần thiết nhất nhăm tại ra các ứng dụng web, thiết bị di động, desktop