BÀI TẬP LỚN MÔN, CÔNG NGHỆ JAVA, ĐỀ TÀI, Quản Lý Thí Sinh Dự Thi
Trang 1BỘ GIÁO DỤC VÀ ĐẠO TẠO TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI CƠ SỞ II
KHOA ĐIỆN-ĐIỆN TỬ
BÀI TẬP LỚN MÔN CÔNG NGHỆ JAVA
ĐỀ TÀI : Quản Lý Thí Sinh Dự Thi
GIẢNG VIÊN : Lê Nhật TùngSINH VIÊN : Nguyễn Ngọc TríLớp : CNTT-K55
MSV: 5551074045
Tp.Hồ Chí Minh ,ngày 12 tháng 5 năm 2016
Trang 2M C L C ỤC LỤC ỤC LỤC
CHƯƠNG I GIỚI THIỆU 3
1 Giới thiệu: 3
2Yêu cầu bài toán: 4
CHƯƠNG II CÔNG NGHỆ SỬ DỤNG 4
1 Java: 4
2MySQL: 5
CHƯƠNG III PHÂN TÍCH BÀI TOÁN 5
1Sơ đồ các lớp: 5
2Sơ đồ cơ sở dữ liệu: 7
CHƯƠNG IV HIỆN THỰC BÀI TOÁN 8
1 Sử dụng: 8
2Source Code: 12
CHƯƠNG 5 KẾT LUẬN 46
5.1 Ưu điểm: 46
5.2 Nhược điểm: 46
Trang 3CHƯƠNG I GIỚI THIỆU
1 Giới thiệu:
Java làVirtual Machine một nền tảng phát triển các ứng dụng phần mềm có vị trí rất
lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong ngành phần mềm Mô hình máy ảo đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau
JAVA là một ngôn ngữ lập trình được lập trình viên (nhà phát triển) sử dụng để viết ứng dụng dành cho máy tính mà chúng ta sử dụng hàng ngày Nếu chỉ đơn thuần là một ngôn ngữ lập trình thì chúng ta không cần quan tâm tới nó nhưng vấn đề là đôi khichúng ta tải một ứng dụng, một phần mềm nào đó mà máy tính yêu cầu thực thi Java, như vậy bắt buộc bạn sẽ phải cài nó trên máy tính Ngoài ra, Java cũng có plug-in cho trình duyệt web để một số ứng dụng có thể hiển thị ngay trong trình duyệt
Hiện nay với sự phát triển của công nghệ thông tin,thì việc áp dụng công nghệ thông tin vào công việc và học tập ngày càng nhiều và đa dạng, phong phú Vì thế nên trong giáo dục hiện nay tăng cường mở các nghành công nghệ thông tin, việc áp dụng công nghệ thông tin giúp quản Java lý thông tin bảo mật tốt hơn, đồng bộ hơn, hiệu quả hơn
và an toàn hơn Trong tuyển sinh, công nghệ thông tin cũng đã được áp dụng triệt để, đem lại hiệu quả to lớn
Trang 42Yêu cầu bài toán:
2.1Yêu cầu chức năng:
Nhập thông tin thí sinh
Nhập điểm của thí sinh
Xem thông tin hoặc điểm của thí sinh
Sửa thông tin hoặc điểm của thí sinh
Xóa thông tin hoặc điểm của thí sinh
2.2Yêu cầu sử dụng:
Chương trình có giao diện
Giao diệm đơn giản và dể sử dụng
Chương trình có khả năng nâng cấp
CHƯƠNG II CÔNG NGHỆ SỬ DỤNG
1 Java:
Ngôn ngữ Java được tạo ra bởi James Gosling trong dự án Green của Sun
MicroSystems nhằm phát triển phần mềm cho các thiết bị dân dụng Ngôn ngữ hoàn toàn hướng đối tượng Ngôn ngữ an toàn: hạn chế các thao tác nguy hiểm cho máy tínhthật
Khả năng Là một ngôn ngữ bậc cao như C, C++, Perl, SmallTalk, cho nên có thể
được dùng để tạo ra các ứng dụng để giải quyết các vấn đề về số, xử lý văn bản, tạo ra trò chơi, và nhiều thứ khác.Có các môi trường lập trình đồ họa như Visual Java, Symantec Cafe, Jbuilder, Jcreator, Có khả năng truy cập dữ liệu từ xa thông qua cầu nối JDBC (Java DataBase Connectivity)Hỗ trợ các lớp hữu ích, tiện lợi trong lập trình các ứng dụng mạng (Socket) cũng như truy xuất Web.Hỗ trợ lập trình phân tán
(Remote Method Invocation ) cho phép một ứng dụng có thể được xử lý phân tán trên các máy tính khác nhau
Đặc Điểm Ngôn ngữ hoàn toàn hướng đối tượng.Ngôn ngữ đa nền cho phép một
chương trình có thể thực thi trên các hệ điều hành khác nhau (MS Windows, UNIX,
Linux) mà không phải biên dịch lại chương trình Phương châm của java là "Viết một lần , Chạy trên nhiều nền" (Write Once, Run Anywhere).Ngôn ngữ đa luồng, cho
phép trong một chương trình có thể có nhiều luồng điều khiển được thực thi song songnhau, rất hữu ích cho các xử lý song song.Ngôn ngữ phân tán, cho phép các đối tượng của một ứng dụng được phân bố và thực thi trên các máy tính khác nhau.Ngôn ngữ động, cho phép mã lệnh của một chương trình được tải từ một máy tính về máy của người yêu cầu thực thi chương trình.Ngôn ngữ an toàn, tất cả các thao tác truy xuất
Trang 5vào các thiết bị vào ra đều thực hiện trên máy ảo nhờ đó hạn chế các thao tác nguy hiểm cho máy tính thật.Ngôn ngữ đơn giản, dễ học, kiến trúc chương trình đơn giản, trong sáng.
Sử Dụng Sử dụng để xem phim còn nhửng thứ khác thì Java đều tự động, nghỉa là bạn
chỉ cần thực hiện như thường miển là trong máy đả có java
2MySQL:
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được
các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ
sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều
hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử
dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi
lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
Khả năng: MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương
đương với SQL Server của Microsoft) MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó Nếu không, chúng ta sẽ không làm được gì cả giống như quyền chứng thực người dung trong SQL Server vậy
CHƯƠNG III PHÂN TÍCH BÀI TOÁN
1Sơ đồ các lớp:
Trang 6 Class: Aboutme
Nội dung: Thông tin về chương trình
Các thư viện: Java.Swing.*, Javax.awt.*
Thiện: Cửa sổ Jframe
Class: ConnectDatabase
Nội dung: Tạo một kết nối với cơ sở dữ liệu
Các thư viện: Java.sql.*
Thể hiện: Kết nối với CSDL, trả về kết quả kết nối: thành công/không thành công, ngắtkết nối với CSDL
Class: student
Nội dung: Giao diện chính của chương trình
Thư viện: Java.Swing.*, Javax.awt.*, : Java.sql.*
Thể hiện: Cửa sổ Jframe, thao tác với người dùng qua nhấp chuột, nhập text,…
Class: StudentDAO
Nội dung: Giao diện chính của chương trình
Thư viện: Java.sql.*
Thể hiện: Thao tác đưa dữ liệu vao cơ sở dữu liệu,
Thực hiện các nhiệm vụ xóa, thêm, sửa dữ liệu
Class: ThiSinh
Nội dung: lớp thí sinh chứa các thuộc tính của thí sinh
Các thuộc tính:
Trang 7Mathisinh intTenthisinh StringNgaysinh DateGioitinh boolean
Diemtoan doubleDiemly doubleDiemhoa double
Thư viện: Java.sql.*
Thể hiện: Các hàm khởi tạo, get, set
Class: TinhThanh
Nội dung: lớp tỉnh thành, chứ thông tin mã tỉnh và tên tỉnh
Các thuộc tính: matinh (int), tentinh (String)
Thể hiện: Các hàm khởi tạo, get, set
2Sơ đồ cơ sở dữ liệu:
Trang 9Giao diện chính của chương trình
-Danh sách các thí sinh ban đầu là các thí sinh đã có sẵn trong CSDL
-Tìm kiếm: nhập tên tỉnh thành/ mã sinh viên vào BirthPlace/StudentID và ấn nút FITLER
Trang 10-Thêm thí sinh: ấn nút INSERT điền vào các trường
ID,NAME,BIRTHPLACE,DATE,SEX ,MATH,….và nhấn OK
Trang 11 Xóa thí sinh: Chọn thí sinh cần xóa, ấn nút DELETE
Trang 12- Sửa thí sinh: Chọn thí sinh, ấn vào EDIT, điền các thông tin mới và ấn OK
Trang 13import java.awt.Color;
import javax.swing.border.LineBorder;
Trang 14import javax.swing.border.TitledBorder;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class aboutme extends JDialog {
private final JPanel contentPanel = new JPanel();
public static void main(String[] args) {
try {
aboutme dialog = new aboutme();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setLocationRelativeTo(null);
Trang 152.2 ConnectDatabase:
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectDatabase {
public static Connection getConnection() {
String dbName = "student";
String url = "jdbc:mysql://" + host + ":" + port + "/" + dbName;String user = "root";
Trang 17import javax.swing.table.DefaultTableModel;
import org.eclipse.wb.swing.FocusTraversalOnArray;
import java.awt.SystemColor;
public class student extends JFrame{
private JPanel contentPane;
private JTextField textField_BirthPlace;
private JTextField textField_StudentID;
private JTextField textField_ID;
private JTextField textField_Name;
private JTextField textField_Place;
private final ButtonGroup buttonGroup = new ButtonGroup();private JTextField textField_Math;
private JTextField textField_Physical;
private JTextField textField_Chemistry;
private JTextField textField_Total;
double tongDiem;
private JRadioButton rdbtnMale;
private JRadioButton rdbtnFemale;
private JComboBox comboBox_ngay;
private JComboBox comboBox_thang;
private JComboBox comboBox_nam;
private JPanel panel;
private JPanel panel_1;
private JPanel panel_2;
private JPanel panel_3;
private JComboBox comboBox_BirthPlace;
public static void main(String[] args) {
// Look And Feel
Trang 19JMenuBar menuBar = new JMenuBar();
Trang 20JMenuItem mnExit = new JMenuItem("Exit");
Trang 22Integer.parseInt(table.getValueAt(table.getSelectedRow(), 4).toString().substring(8, 10)) - 1);
comboBox_thang.setSelectedIndex(
Integer.parseInt(table.getValueAt(table.getSelectedRow(), 4).toString().substring(5, 7)) - 1);
comboBox_nam.setSelectedIndex(2050
Trang 23- Integer.parseInt(table.getValueAt(table.getSelectedRow(), 4).toString().substring(0, 4)));
Trang 24TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 255)));panel_2.setBounds(10, 406, 654, 165);
textField_ID = new JTextField();
textField_ID.setFont(new Font("Times New Roman", Font.PLAIN, 10));textField_ID.setForeground(new Color(0, 0, 139));
textField_ID.setBounds(78, 27, 246, 20);
panel_2.add(textField_ID);
textField_ID.setColumns(10);
textField_Name = new JTextField();
textField_Name.setFont(new Font("Times New Roman", Font.PLAIN, 10));textField_Name.setForeground(new Color(0, 0, 139));
Trang 25textField_Name.setBounds(78, 52, 246, 20);
panel_2.add(textField_Name);
textField_Name.setColumns(10);
textField_Place = new JTextField();
textField_Place.setFont(new Font("Times New Roman", Font.PLAIN, 12));textField_Place.setForeground(new Color(0, 0, 139));
Trang 28textField_Total.setColumns(10);
String[] mangNgay = new String[31];
for (int i = 0; i < 31; i++) {
String[] mangThang = new String[12];
for (int i = 0; i < 12; i++) {
String[] mangNam = new String[101];
for (int i = 2050; i > 1950; i ) {
// "03 - Bắc Giang", "04 - Bắc Kạn", "05 - Bạc Liêu", "06 - Bắc Ninh", "07 - Bến Tre", "08 - Bình Định",
// "09 - Bình Dương", "10 - Bình Phước", "11 - Bình Thuận",
"12 - Cà Mau", "13 - Cao Bằng", "14 - Đắk Lắk",
// "15 - Đắk Nông", "16 - Điện Biên", "17 - Đồng Nai", "18 - Đồng Tháp", "19 - Gia Lai", "20 - Hà Giang",
Trang 29// "21 - Hà Nam", "22 - Hà Tĩnh", "23 - Hải Dương", "24 - Hậu Giang", "25 - Hòa Bình", "26 - Hưng Yên",
// "27 - Khánh Hòa", "28 - Kiên Giang", "29 - Kon Tum", "30 - Lai Châu", "31 - Lâm Đồng", "32 - Lạng Sơn",
// "33 - Lào Cai", "34 - Long An", "35 - Nam Định", "36 - NghệAn", "37 - Ninh Bình", "38 - Ninh Thuận",
// "39 - Phú Thọ", "40 - Quảng Bình\t", "41 - Quảng Nam", "42
- Quảng Ngãi", "43 - Quảng Ninh",
// "44 - Quảng Trị", "45 - Sóc Trăng", "46 - Sơn La", "47 - Tây Ninh", "48 - Thái Bình",
// "49 - Thái Nguyên", "50 - Thanh Hóa", "51 - Thừa Thiên Huế", "52 - Tiền Giang", "53 - Trà Vinh",
// "54 - Tuyên Quang", "55 - Vĩnh Long", "56 - Vĩnh Phúc",
"57 - Yên Bái", "58 - Phú Yên\t",
// "59 - Cần Thơ", "60 - Đà Nẵng", "61 - Hải Phòng", "62 - Hà Nội", "63 -TP HCM" }));
Trang 31btnDelete.setFont(new Font("Times New Roman", Font.BOLD, 15));btnDelete.setForeground(new Color(0, 0, 255));
Trang 32String tenThiSinh = textField_Name.getText();
int maTinh = 0;
String tenTinh = textField_Place.getText();
TinhThanh maQueQuan = new TinhThanh(maTinh, tenTinh);
// String maQueQuan = textField_Place.getText();
int ngay = Integer.parseInt(comboBox_ngay.getSelectedItem() + "");
int thang = Integer.parseInt(comboBox_thang.getSelectedItem() + "");
int nam = Integer.parseInt(comboBox_nam.getSelectedItem() + "");
Date ngaySinh = new Date(nam - 1900, thang - 1, ngay);
boolean gioiTinh = rdbtnFemale.isSelected() ? true : false;
double diemToan = Double.parseDouble(textField_Math.getText());
double diemLy = Double.parseDouble(textField_Physical.getText());
double diemHoa = Double.parseDouble(textField_Chemistry.getText());
ThiSinh thiSinh = new ThiSinh(maThiSinh, tenThiSinh, maQueQuan, ngaySinh, gioiTinh, diemToan,
Trang 33int maThiSinh = Integer.parseInt(textField_ID.getText());
String tenThiSinh = textField_Name.getText();
int maTinh = 0;
String tenTinh = textField_Place.getText();
TinhThanh maQueQuan = new TinhThanh(maTinh, tenTinh);
// String maQueQuan = textField_Place.getText();
int ngay = Integer.parseInt(comboBox_ngay.getSelectedItem() + "");
int thang = Integer.parseInt(comboBox_thang.getSelectedItem() + "");
int nam = Integer.parseInt(comboBox_nam.getSelectedItem() + "");
Date ngaySinh = new Date(nam - 1900, thang - 1, ngay);
boolean gioiTinh = rdbtnFemale.isSelected() ? true : false;
double diemToan = Double.parseDouble(textField_Math.getText());
double diemLy = Double.parseDouble(textField_Physical.getText());
double diemHoa = Double.parseDouble(textField_Chemistry.getText());
ThiSinh thiSinh = new ThiSinh(maThiSinh, tenThiSinh, maQueQuan, ngaySinh, gioiTinh, diemToan,
Trang 34JOptionPane.showMessageDialog(student.this, "Sua khong thanh cong");
} catch (Exception e2) {
public static void loadThiSinh() {
ArrayList<ThiSinh> danhsach = StudentDAO.getThiSinh();
// DefaultTableCellRenderer centerRenderer = new
DefaultTableCellRenderer();
Trang 35centerRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);DefaultTableModel model = new DefaultTableModel();
for (ThiSinh thiSinh : danhsach) {
Object[] obj = new Object[] { i, thiSinh.getMaThiSinh(), thiSinh.getTenThiSinh(),thiSinh.getQueQuan().getTenTinh(), thiSinh.getNgaySinh(), thiSinh.getGT(), thiSinh.getDiemToan(),
public static void loadThiSinhTheoID(String ID) {
ArrayList<ThiSinh> danhsach = StudentDAO.getThiSinhTheoID(ID);
DefaultTableModel model = new DefaultTableModel();
Trang 36for (ThiSinh thiSinh : danhsach) {
Object[] obj = new Object[] { i, thiSinh.getMaThiSinh(), thiSinh.getTenThiSinh(),thiSinh.getQueQuan().getTenTinh(), thiSinh.getNgaySinh(), thiSinh.getGT(), thiSinh.getDiemToan(),
for (ThiSinh thiSinh : danhsach) {
Object[] obj = new Object[] { i, thiSinh.getMaThiSinh(), thiSinh.getTenThiSinh(),thiSinh.getQueQuan().getTenTinh(), thiSinh.getNgaySinh(), thiSinh.getGT(), thiSinh.getDiemToan(),
public static void loadThiSinhTheoNoiSinhVaID(String noiSinh, int ID) {
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();