1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phát triển hệ thống tích hợp Đề tài ứng dụng quản lý sinh viên tích hợp rmi và jdbc

13 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Phát Triển Hệ Thống Tích Hợp Đề Tài Ứng Dụng Quản Lý Sinh Viên Tích Hợp RMI Và JDBC
Tác giả Nguyễn Văn Hà, Nguyễn Định Hoàng, Đào Đình Phúc
Người hướng dẫn Đào Bảo Phúc
Trường học Industrial University of Hochiminh City
Thể loại báo cáo
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 13
Dung lượng 1,37 MB

Nội dung

Ứng dụng quản lý sinh viên là một phân mềm quan trọng trong hệ thông giáo dục, giúp các trường đại học và các tô chức giáo dục khác quan ly thông tin về sinh viên một cách hiệu quả.. Tro

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HÒ CHÍ MINH

KHOA CNTT

—= [flÏ

A

INDUSTRIAL

J [aI UNIVERSITY

OF HOCHIMINH CITY

BAO CAO Mén: PHAT TRIEN HE THONG TICH HOP

Dé tai: Ung dung quan ly sinh vién tich

hgp RMI va JDBC

Giảng viên hướng dẫn : Đào Bá Phúc

Thành viên

Đào Đình Phúc

Trang 2

Ứng dụng quản lý sinh viên là một phân mềm quan trọng trong hệ thông giáo dục, giúp các trường đại học và các tô chức giáo dục khác quan ly thông tin về sinh viên một cách hiệu quả Trong báo cáo này, chúng tôi trình bày về quá trình thiết kế một ứng dụng quan ly sinh vién tich hop RMI (Remote Method Invocation) va JDBC (Java Database Connectivity)

+ Phân tích yêu cầu:

-_ Các Chức Năng Chính của ứng dụng:

I Thêm Sinh Viên: Thêm sinh viên mới vào hệ thống với thông tin chỉ tiết như tên,

tuôi, địa chỉ và điểm trung bình

2 Xóa Sinh Viên: Xóa sinh viên khỏi hệ thống dựa trên TD của sinh viên

3 Tìm Kiếm Sinh Viên: Tìm kiếm sinh viên trong hệ thống bằng cách nhập ID và

xem thông tin chi tiết của sinh viên

4 Cập Nhật Thông Tin Sinh Viên: Cập nhật thông tin của sinh viên như tên, tuôi, địa

chỉ và điểm trung bình

- Tinh Năng Đặc Biệt:

> Giao Diện Thân Thiện và Dễ Sử Dụng: Giao diện người dùng được thiết kế đơn giản và thân thiện, s1úp người dùng đề dàng tương tác với ứng dụng mà không cân

có kỹ năng đặc biệt

> Tính Linh Hoạt: Ứng dụng có khả năng linh hoạt và mở rộng, cho phép bạn thêm, sửa đôi hoặc xóa thông tin sinh viên một cách dê dàng

> An Toản và Bảo Mật: Dữ liệu sinh viên được lưu trữ một cách an toàn và bảo mật trong cơ sở đữ liệu, đảm bảo tính riêng tư của sinh viên

+ Nền Tang Ly Thuyét:

- RMI (Remote Method Invocation): RMI la m6t co ché trong Java cho phép goi cac phuong thức từ các đối tượng trên một máy chủ từ xa Nó cho phép việc gọi phương thức giống như việc gọi các phương thức trong củng một máy, mặc dù các đối tượng và phương thức đó có thê đang chạy trên các máy khác nhau

- JDBC (Java Database Connectivity): JDBC la mét API trong Java cho phép cac ứng dụng Java truy cập vả thao tac đữ liệu trong cơ sở dữ liệu Nó cung cấp các lớp và giao diện đề kết nồi va thao tác với các loại cơ sở dữ liệu khác nhau

+ Thiết Kế Hệ Thống

Trang 3

- Mo Hinh:

¢ H6é thống sẽ bao g6m ba thanh phan chinh: may chu, may khach va co sở dữ liệu

e _ Máy chủ sẽ chứa các phương thức để thực hiện các chức năng quản lý sinh viên và sử dụng RMI để cho phép máy khách gọi các phương thức này từ xa

® - Cơ sở đữ liệu sẽ lưu trữ thông tin về sinh viên và sử dụng JDBC đề kết nối và thao tác với cơ sở đữ liệu

- Giao Diện Người Dùng:

e - Giao diện người dùng sẽ cung cấp các chức năng quản lý cơ bản, bao gồm thêm, xóa, tìm kiếm va cập nhật sinh viên

© Giao diện sẽ pửi các yêu cầu đến máy chủ thông qua RMI để thực hiện các chức năng này

H MÔ HÌNH PHẦN TÍCH, TRIỄN KHAI ỨNG DỤNG

- Biéu do tong quat Use Case:

———-

i: —< cập nhật »)

g —_ „É_ đăng nhập ) `“

_—” e—.——S ,

t«include

người quân lý :

1 + Œ tìm kiếm >)

“= ye xt ff td despa ge

ˆ ~ ~~ l — )

C _thêm sinh viên _ 9 : ~~ Ầ

ot sinh vién

2 ¬

€ xóasinhveien )

Trang 4

Modelstudent

Class Diagram cua wng dung quan ly sinh vién

+d: int +name:Sinng

+implement

StudentManagementinterface

+addStudent(Obyect obj) Sinng

+deleteStudent(Odject obj) int +searchStudemtByID(Object obj): int

+updateStudent(Object obj)-int

Controller +proccessStudent( String

command) ‘

Sequence Diagram của chức năng của thêm sinh viên:

sd addstudent J

= a

1 Nhan" AddStudent” :

3 : actionPerformed : 2: addStudert i

4: Connect to MySQL }

Š - addStudent

[ 6 : Success ;

Showmessage † [ 8 : Student added successfully J

seq Connect Reusult J

9 - Print error

1*10 - Showmessage

: Failed to add student Please ty again :

Trang 5

- Sequence Diagram của chức năng của xóa sinh viên:

sd Deletestudent )

1! Nh&in™ DeleteStudent™

: 2: DeleteStudent

3; actionPerformed

ị ị ] 4: Connect to MySQL

5: DeleteStudent

L 6: Success

7 : Showmessaoe : 8: Student deleted successfully H

seq Connect Reusult

—¬

: : delete fail

10 : Showmessage :

11 : Failed to delete student Please try again ;

- Sequence Diagram cua chire nang tim kiém sinh vién:

sd Searchstudent J

1: Enter student ID }

2 : Nhãn" SearchStudent"

3: SearchStudent

]

4: searchStudentByID

5 : Connect to MySQL

— 6: SELECT * FROM Student WHERE id

7: Found

[ 8: ResultSet

9: Show Informatinon Student

seq Connect Reusult 10: Not Found

12 : Not found student :

Trang 6

Sequence Diagram của chức năng cập nhật Sinh viên

sd Searchstuderrt

=a

1: Enter student ID to update

2: SearchStudent

8 : Enter new student name

9: Enter new student age

10 : Enter new student address

11: Enter new student GPA

3 : searchStudentBylD

là Student WHERE id

1) Class Client

@Clientjava x ie ji a

1 package chat2;

2

[lì Serverjava

3*import java.awt.BonderLayout;[ |

12 ; Click “UpdateStudent” : 3 a

13 : updateStudent ;

14: addnewantorstudent

17: Success

[ 18: Showmes<age

| Suudent updated successfully : seq Connect Reusult J ‡—= =

20 : unsuccessful °s=== *

21 : Showmessage : =e

it update unsuccessful : r =

li Studenttjava li StudentManagementlnterface java

19

28 public class Client extends JFrame {

21

private JPanel contentPane;

23 private String correctUsername = “user1234567890";

24 private String correctPassword = "1234567890";

25

26° public Client() {

27 prepareGUI();

28

29

305 public static void main(String[] args) {

31 EventQueue.invokeLater(() -> {

32 Client demo = new Client();

33 demo showJFrameDemo( ) ;

34 ysl

35

37° private void prepareGUI() {

38

39 setTitle("Student manager");

46 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;

41 setSize(400, 300);

42 setLocationRelativeTo(null);

43

44 contentPane = new JPanel();

4s contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

46 setContentPane(contentPane) ;

47 contentPane.setLayout(new BorderLayout(@, @));

Trang 7

}

contentPane.add(controlPanel, BorderLayout.CENTER) ;

controlPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 1@));

3JButton loginButton = new JButton("Login");

controlPanel.add(loginButton) ;

loginButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { String username = JOptionPane.showInputDialog(null, “Enter username:");

String password = JOptionPane.showInputDialog(null, "Enter password:");

aif (username.equals(correctUsername) && password.equals(correctPassword)) { showFunctions();

} else { JOptionPane showMessageDialog(null, “Incorrect username or password Please try again.");

} });

private void showFunctions() {

}

Controller controller = new Controller(this) ;

JFrame frame = new JFrame("Actions");

frame setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) ;

frame.setSize(400, 300);

frame.setLocationRelativeTo(null);

panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));

frame.add(panel);

JButton btnAddStudent = new JButton("Add Student”);

btnAddStudent.setFont(new Font("Tahoma", Font.PLAIN, 18));

panel.add(btnAddStudent) ; JButton btnDeleteStudent = new JButton("Delete Student");

btnDeleteStudent.setFont(new Font("“Tahoma", Font.PLAIN, 18));

panel.add(btnDeleteStudent ) ;

JButton btnsearchStudentByID = new JButton("Search Students");

btnsearchStudentByID.setFont(new Font("Tahoma", Font.PLAIN, 18));

panel.add(btnsearchStudentByID) ; JButton btnupdateStudent = new JButton("Update Student");

btnupdateStudent.setFont(new Font(”Tahoma”, Font.PLAIN, 18));

panel.add(btnupdateStudent);

btnAddStudent.addActionListener(controller);

btnDeleteStudent addActionListener(controller);

btnsearchStudentByTD addActionListener(controller) ; btnupdateStudent addActionListener(controller);

frame.setVisible(true);

public void showJFrameDemo() {

}

setVisible(true) ;

Sử dụng phương thức main() dé khoi tao giao diện người dùng và hiển thi cửa số đăng nhập

Sử dụng các thành phần giao điện như JFrame, JPanel, và JButton dé tạo giao diện

Sử dụng phương thức addActionListener() để đăng ký sự kiện cho các nút nhắn trên giao dién

Sử dụng JOptionPane đề hiển thị thông báo và nhập dữ liệu từ người dùng

7

Trang 8

2) Class ConnectionMySql

public class ConnectionToMySql {

› public static java.sql.Connection getConnection()

//Ban dau tao 1 connection = null java.sql.Connection connection = null;

try {

//Đăng ký driver DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

//Tạo đường dẫn như bên dưới (học thuộc jdbc:mysq1://1ocalhost: 3398/yourDa String urlString = "jdbc:mysql://localhost:3300/new_schema";

String userName = "root";

String password = "1234";

//Tao két noi dén database connection = DriverManager.getConnection(urlString, userName, password); return connection;

} catch (Exception e) { // TODO: handle exception e.printStackTrace();

return null;

1

//đóng kết nối

public static void closeConnection(java.sql.Connection connection)

if (connection != null) {

try {

connection.close();

} catch (Exception e) { // TODO: handle exception e.printStackTrace();

1 Sử dung DriverManager.registerDriver() dé đăng ký trình điều khiển

MySQL

2 Sur dung DriverManager.getConnection() dé thiét lập kết nối đến cơ sở dữ

3 Su dung connection.close() dé dong két noi khi khéng cân thiết

Trang 9

3) Class Controller

e

public void searchStudentByID() {

int id = Integer parseInt(JOptionPane.showInputDialog(this.client, "Enter student ID to search:"));

try {

§ = ) Naming Lookup("rmi: // localhost: 1099/StudentManagementService");

String result = studentMa nt searchStudentByID( id);

if (result != null) {

JOptionPane.showessageDialog(this.client, result);

} else e {

JOptionPane.showMessageDialog(this.client, "Student not found.”);

} catch (Exception e)

@.printStackTrace();

}

public void updateStudent() {

int id = Integer.parseZnt(30ptionPane.showInputDialog(this.client, “Enter student ID to update:"));

String name = JOptionPane.showInputDialog(this.client, “Enter new student name:");

int age = Integer.parseInt(JOptionPane.showInputDialog(this.client, “Enter new student age: "3);

String address = JOptionPane.showInputDialog(this.client, “Enter new student address:"

double gpa = Double.parseDouble(JOptionPane.showInputDialog(this.client, "Enter new student 6PA: "));

try {

studentManagement updateStudent (id, nase, cee, address, gpa);

Pane showessageDialog(this.client, "Student updated successfully.");

} catch (Exception e) {

e.printStackTrace() ;

ace) Naming Lookup("rmi://localhost:1099/StudentManagementService");

import java.awt.event.ActionEvent; |

public class Controller implements ActionListener {

Client client;

public Controller(Client client) {

this.client = client;

@Override

public void actionPerformed(ActionEvent e) {

String command = e.getActionCommand() ; switch (command) {

case "Add Student":

addStudent();

break;

case "Delete Student”

deleteStudent();

break;

case "Search Students":

searchStudentByTD() ; break;

case "Update Student”

updateStudent();

break;

}

public void addStudent () {

String name = J0OptionPane.showTnputDiaLog(this.client, ”Enter student name:”);

public void sddstudent() {

ring name = JOptionPane.showInputDialog(this.client, "Enter student name:");

int age = — parseInt(JOptionPane.showInputDialog(this.client, “Enter student age:"));

String address = JOptionPane.showInputDialog(this.client, "Enter student address:");

double gpa = Double.parseDoubLe(JOptionPane.showInputDialog(this.client, “Enter student GPA:"));

try {

face student Interface) Naming lookup("“rmi: //localhost:1699/StudentManagementService"); studentManagement addStudent(name, age, address, gpa);

JOptionPane showMessageDialog(this.client, "Student added successfully.");

} catch (Exception e1) {

el.printStackTrace();

}

public void deleteStudent() {

int id = Integer.parseInt(JOptionPane.showInputDialog(this.client, "Enter student ID to delete:"));

try {

face studentManagement deleteStudent (id);

JOptionPane showMessageDialog(this.client, "Student deleted successfully.");

} catch (Exception e) {

e.printStackTrace();

= ¢ face) Naming Lookup("rmi: //localhost:1099/StudentManagementService");

Trang 10

1 Sử dụng phương thức actionPerformed() để bắt các sự kiện từ người dùng khi họ tương tác với ø1ao diện

2 Su dung switch-case đề xác định hành động cần thực hiện dựa trên sự kiện người dùng

3 Gọi các phương thức tương ứng để xử lý các hành động như thêm, xóa, tìm kiếm

và cập nhật sinh viên

4) Class ProccessStudents

@Override

public void addStudent(String name, int age, String address, double gpa) throws RemoteException {

try {

Connection connection = ConnectionToMySql.getConnection() ; String sql = “INSERT INTO Student (name, age, address, gpa) VALUES (?, PreparedStatement preparedStatement = connection.prepareStatement(sql);

preparedStatement.setString(1, name);

preparedStatement.setInt(2, age);

preparedStatement.setString(3, address);

preparedStatement.setDouble(4, gpa);

preparedStatement.executeUpdate();

connection.close();

} catch (SQLException e) {

e.printStackTrace();

}

P,P, PYG

@0verride

public void deleteStudent(int id) throws RemoteException {

try {

Connection connection = ConnectionToMySql.getConnection() ; String sql = "DELETE FROM Student WHERE id = ?";

PreparedStatement preparedStatement = connection.prepareStatement(sql);

preparedStatement.setInt(1, id);

preparedStatement.executeUpdate();

connection.close();

} catch (SQLException e) {

e.printStackTrace();

public String searchStudentByID(int id) throws RemoteException {

StringBuilder result = new StringBuilder();

try {

Connection connection = ConnectionTomysql getconnection();

string sql = "SEL EcT * FROM Student WHERE id

Preparedstatement preparedstatement preparedstatement.setint(1,

Resultset rs

= connection.preparestatement(sql);

id) preparedstatement executequery();

result.append("ID: “).append(rs.getint("id”)).append(", “) append(rs.getstring( name”

sappend(", Age: “).append(rs.getrnt("age"))-append(", Address: ") seetnd Cro esetotrdon(taddress" » .append(", GPA: “).append(rs.getDouble("gpa"))3

} else ( result.append("sStudent with 1D ”

) -append(id).append(" not found.");

connection.close();

} catch (SQLException e) {

rintStackTrace();

return result tostring();

@override

public void updatestudent(int id, string newName, int newAge, String newAddress, double newGpa) throws RemoteException {

ry {

= ConnectionToMySql.getConnection();

“UPDATE "student SET name - ?, age - ?, address - ?, gpa - ? WHERE id - ?"

connection preparestatement(sql) i

Connection connectior

paredStatement.setDouble(4, newGpa) 3

preparedstatement.setInt(5, id);

preparedstatement.executeUpdate();

connection.close();

} catch (SQLException e) {

e.printstackTrace();

+

10

Ngày đăng: 31/12/2024, 18:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w