TỔNG QUAN VỀ LẬP TRÌNH JAVA
Giới thiệu về ngôn ngữ Java
Java là một ngôn ngữ lập trình cao cấp, ban đầu được phát triển bởi Sun Microsystems và giới thiệu vào tháng 6 năm 1995 Java chạy trên nhiều nền tảng, chẳng hạn như Windows, Mac OS và các phiên bản khác nhau của UNIX.
Phiên bản mới nhất của Java Standard Edition là Java SE 8 Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó, nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau Ví dụ: J2EE cho các ứng dụng doanh nghiệp, J2ME cho các ứng dụng di động.
Các phiên bản J2 mới đã được đổi tên thành Java SE, Java EE và Java ME. Java được đảm bảo là Write Once, Run Anywhere.
Từ đó, Java đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++, do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++.
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng
… Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU.
Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt, vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 được đổi tên thành Java Mặc dù mục tiêu ban đầu không phải cho
Một số đặc trưng cơ bản của ngôn ngữ Java
Java là ngôn ngữ lập trình được phát triển từ ngôn ngữ lập trình C/C++ Nó kế thừa, phát huy các thế mạnh của ngôn ngữ C/C++ và lược bỏ đi các cú pháp phức tạp của C/C++ Ngôn ngữ lập trình Java có một số đặc trưng tiêu biểu: đơn giản, hướng đối tượng, độc lập phần cứng và hệ điều hành, mạnh mẽ, bảo mật, phân tán, đa luồng và linh động.
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số người lập trình Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++ như:
- Loại bỏ thao tác con trỏ, thao tác định nghĩa nạp chồng toán tử
- Không cho phép đa kế thừa mà sử dụng các giao diện
- Không sử dụng lệnh “goto” cũng như file header (.h)
- Loại bỏ cấu trúc “struct” và “union”
2.2 Tính hướng đối tượng (OOP)
Java là ngôn ngữ lập trình thuần hướng đối tượng, mọi chương trình viết trên Java đều phải được xây dựng trên các đối tượng Nếu trong C/C++ ta có thể tạo ra các hàm (chương trình con không gắn với đối tượng nào) thì trong Java ta chỉ có thể tạo ra các phương thức (chương trình con gắn liền với một lớp cụ thể) Trong Java không cho phép các đối tượng có tính năng đa kế thừa mà được thay thế bằng các giao diện (interface)
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu.
- Kiểu dữ liệu phải khai báo tường minh.
- Java không sử dụng con trỏ và các phép toán con trỏ.
- Java kiểm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm bảo rằng các truy nhập đó không ra ngoài giới hạn kích thước
- Trong các môi trường lập trình truyền thống, lập trình viên phải tự mình cấp phát bộ nhớ, trước khi chương trình kết thúc thì phải tự giải phóng bộ nhớ đã cấp Vấn đề có thể nảy sinh khi lập trình viên quên giải phóng bộ nhớ đã xin cấp trước đó Trong chương trình Java, lập trình viên không phải bận tâm đến việc cấp phát bộ nhớ Quá trình cấp phát, giải phóng được thực hiện tự động, nhờ dịch vụ thu nhặt những đối tượng không còn sử dụng nữa (garbage collection).
- Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và hồi phục sau lỗi.
Java cung cấp một môi trường quản lý thực thi chương trình với nhiều mức để kiểm soát tính an toàn:
- Ở mức thứ nhất, dữ liệu và các phương thức được đóng gói bên trong lớp Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cấp.
- Ở mức thứ hai, trình biên dịch kiểm soát để đảm bảo mã là an toàn, và tuân theo các nguyên tắc của Java.
- Mức thứ ba được đảm bảo bởi trình thông dịch chúng kiểm soát xem bytecode có đảm bảo các quy tắc an toàn trước khi thực thi không.
- Mức thứ tư kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống.
Java được thiết kế để hỗ trợ các ứng dụng chạy trên mạng bằng các lớp mạng(java.net) Hơn nữa, Java hỗ trợ nhiều nền chạy khác nhau nên chúng được sử dụng rộng rãi như là công cụ phát triển trên Internet - nơi sử dụng nhiều nền khác nhau.
Chương trình Java cung cấp giải pháp đa luồng (Multithreading) để thực thi các công việc đồng thời Chúng cũng cung cấp giải pháp đồng bộ giữa các luồng Đặc tính hỗ trợ đa luồng này cho phép xây dựng các ứng dụng trên mạng chạy hiệu quả.
Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường mở Các chương trình Java chứa rất nhiều thông tin thực thi nhằm kiểm soát và truy nhập đối tượng lúc chạỵ Điều này cho phép khả năng liên kết mã động.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG VÀ̀ XÂY DỰNG CHƯƠNG TRÌNH
Phân tích thiết kế hệ thống
Phân chia lịch thực hành cho các lớp, các giáo viên hướng dẫn ở mỗi phòng lab vào ngày giờ để đảm bảo lịch không bị trùng lặp, vừa đảm bảo việc dạy và học không bị dán đoạn Mỗi phòng thực hành có một số trang thiết bị phù hợp với mỗi môn thực hành Vì thế cần nắm bắt cơ cấu tổ chức của các phòng qua đó có thể phân lịch thực hành phù hợp với từng môn học.
1.2 Yêu cầu phi chức năng
Giao diện đơn giản, đẹp mắt và dễ sử dụng.
2 Phân tích và thiết kế hệ thống
Phần mềm quản lịch thực hành của giảng viên gồm các chức năng:
- Quản lý giảng viên: Quản lý thông tin giảng viên.
- Quản lý môn học: Quản lý lịch của giảng viên theo môn học.
- Quản lý lớp học: Quản lý thtoong tin lớp thực hành của giảng viên.
- Quản lý khoa: Quản lý các khoa của trường.
- Quản lý người dùng: Quản lý thông tin người dùng hệ thống.
- Quản lý thời khóa biểu: Quản lý chi tiết lịch và các môn học.
- Quản lý phòng: Quản lý phòng thực hành.
2.2 Thiết kế cơ sở dữ liệu
- Diagram cơ dử dữ liệu:
- Thiết kế chi tiết cơ sử dữ liệu
o Bảng Khoa: o Bảng Giảng Viên: o Bảng Phòng: o Bảng Thời Khóa Biểu: o Bảng Lớp: o Bảng Người Dùng: o Bảng Môn Giảng Viên: o Bảng Môn Học:
2.3 Xây dựng các chức năng
Mô tả chi tiết xây dựng các chức năng trong phần mềm quản lý lịch thực hành giảng viên.
- Quản lý giảng viên: o Liệt kê danh sách giảng viên và hiển thị dữ liệu lên table. o Thêm mới một sinh viên bao gồm cac thông tin: Mã giảng viên, Họ và tên, Số diện thoại. o Cập nhật thông tin một giảng viên.
- Quản lý người dùng: o Liệt kê danh sách người dùng và hiển thị dữ liệu lên table. o Thêm mới người dùng bao gồm các thông tin: tên đăng nhập, mật khẩu, vai trò. o Cập nhật thông tin một người dùng. o Xóa một người dung: Xóa thông tin về người dùng.
- Quản lý môn học: o Liệt kê danh sách môn học và hiển thị dữ liệu lên table. o Thêm mới môn học bao gồm các thông tin: mã môn, tên môn, mã khoa. o Cập nhật thông tin một môn học. o Xóa một môn học: Xóa thông tin về môn học.
- Quản lý lớp: o Liệt kê danh sách lớp và hiển thị dữ liệu lên table. o Thêm mới lớp bao gồm các thông tin: mã lớp, tên lớp, sĩ số. o Cập nhật thông tin một lớp. o Xóa một lớp: Xóa thông tin về lớp.
- Quản lý phòng: o Liệt kê danh sách phòng và hiển thị dữ liệu lên table. o Thêm mới phòng bao gồm các thông tin: mã phòng, tên phòng, chức năng, sĩ số, số lượng. o Cập nhật thông tin một phòng.
- Quản lý khoa: o Liệt kê danh sách khoa và hiển thị dữ liệu lên table. o Thêm mới khoa bao gồm các thông tin: mã khoa, tên khoa, số điện thoại khoa. o Cập nhật thông tin một khoa. o Xóa một khoa: Xóa thông tin về khoa.
- Quản lý thời khóa biểu: o Liệt kê danh sách thời khóa biểu và hiển thị dữ liệu lên table. o Thêm mới thời khóa biểu bao gồm các thông tin: ngày dạy, mã môn học, mã phòng, từ tiết, đến tiết, bài dạy, ghi chú. o Cập nhật thông tin một thời khóa biểu. o Xóa một thời khóa biểu: Xóa thông tin về thời khóa biểu.
- Giao diện quản lý giảng viên.
- Giao diện quản lý lớp học.
- Giao diện quản lý môn học.
2.5 Một số đoạn code mẫu.
- Xóa dữ liệu private void btnXoaMouseClicked (java.awt.event.MouseEvent evt) {
/ TODO add your handling code here: String NGAYDAY=txtNgayDay.getText(); try { if (NGAYDAY.length() ==0) JOptionPane.showMessageDialog (null,"Chon 1 muc de xua", "Thong bao",1); else if (JOptionPane.showConfirmDialog (null, "Ban muon xua muc " + NGAYDAY + " nay hay không?","Thong bao",2)==0)
THOIKHOABIEU.DeleteData (NGAYDAY);//goi ham xua du lieu theo ma loai Clearata (0://Xoa du lieu trong tableModel ShowData(); //Do du lieu vao table
Model setNull();//Xua trang Textfield catch (SQLException ex) { JOptionPane.showMessageDialog(null,"Xóa thất bại","Thong bao",1);
-Thêm dữ liệu. private void btnThemMouseClicked (java.awt.event.MouseEvent evt) {
/ TODO add your handling code here: setNull0://Xoa trang TextField setKhoa
(false)://Mo khoa TextField setButton(false);//Goi ham chua cac Button cothem=true;
-Sửa dữ liệu. private void btnSuaMouseClicked(java.awt.event.MouseEvent evt) {
/ TODO add your handling code here: String NGAYDAY=txtNgayDay.getText(); if (NGAYDAY.length()==0) Chua Chon Ma loai
JOptionPane.showMessageDialog (null,"Vui lòng chọn loi can sua", "Thong bao",1); else
{ setKhoa (false);//Mo khoa cac TextField this.txtNgayDay.enable(false); setButton (false); //Khoa cac Button cothemse; // Gan co themse de ghi nhan trang thai la sua
PrivatevoidbtnLuuMouseClicked(java.awt.event.MouseEve nt evt)
/ TODO add your handling code here: String
NGAYDAY=txtNgayDay.getText(); String MAMH=txtMaMH.getText(); String
MAPH=txtMaPH.getText(); String TUTIET=txtTuTiet.getText(); String
DENTIET=txtDenTiet.getText(); String BAIDAY=txtBaiDay.getText(); String
{ if (cothem==true)//Luu cho them moi THOIKHOABIEU.Insert Data
(NGAYDAY, MAMH, MAPH, TUTIET, DENTIET, BAIDAY, GHICHU); else
THOIKHOABIEU.EditData (NGAYDAY, MAMH, MAPH,
ClearData(); /goi ham xua du lieu tron tableModel
ShowData(); //Do lai du lieu vao Table Model } catch (SQLException ex)
JOptionPane showMessageDialog(null, "Cap nhat that bai", "Thong bao", 1); setKhoa (false); setButton(true);
-Không lưu dữ liệu. private void btnKluuMouseClicked (java.awt.event.MouseEvent evt) {
/ TODO add your handling code here: setNull(); setKhoa (true); setButton (true);
-Thoát. private void btnThoatActionPerformed (java.awt.event.ActionEvent evt) {
/ TODO add your handling code here: this.dispose();
Ham do du lieu vao tableModel public void ShowData() throws
SQLException ResultSet result= PHONG while (result.next ()) { // nếu còn đọc tiếp được một dòng dữ liệu
String rows[] = new String[5]; rows [0] = result.getString (1); // lấy dữ liệu tại Cột Số 1 (ứng với mã hàng) rows[1]
= result.getString (2); // lấy dữ liệu tai Cột SỔ 2 ứng với tên hàng rows[2] result.getString (3); // lấy dữ liệu tai cột sổ 2 ứng với tên hàng rows [3] = result.getString (4); rows [4] = result.getString(5); tableModel.addRow (rows); // đưa dòng dữ liệu vào tableModel
//mỗi lần có sự thay đổi dữ liệu ở tableModel thì Jtable sẽ tự động update
Với kiến thức nền tảng đã được học ở trường và bằng sự nỗ lực của mình,chúng em đã hoàn thành đề tài “Quản lý lịch thực hành giảng viên” Mặc dù đã cố gắng rất nhiều nhưng do thời gian và kiến thức có hạn nên chưa giải quyết được các vấn đề đặt ra Chúng em rất mong nhận được sự thông cảm và góp ý của thầy cô để đề tài của chúng em được hoàn thiện hơn.