Tải bản đầy đủ (.doc) (40 trang)

Đồ án quản lý hồ sơ sinh viên theo mô hình client server

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.67 MB, 40 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN MẠNG VÀ TRUYỀN THÔNG
 
ĐỒ ÁN LẬP TRÌNH MẠNG
Đề tài:
CHƯƠNG TRÌNH QUẢN LÝ HỒ SƠ SINH VIÊN
THEO MÔ HÌNH CLIENT SERVER
Sinh viên : LÊ LONG BẢO
NGUYỄN HÀ ANH
Lớp : 12TLT.CNTT
Cán bộ hướng dẫn : ThS. TRẦN HỒ THỦY TIÊN
Đà Nẵng 2013
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
LỜI CẢM ƠN
Chúng em xin gởi lời cảm ơn sâu sắc đến TS Trần Hồ Thủy Tiên, giảng viên
trường Đại Học Bách Khoa, đã trực tiếp hướng dẫn, chỉ bảo tận tình cho chúng em
trong suốt quá trình thực hiện đề tài.
Tuy đã có nhiều cố gắng trong quá trình thưc hiện, nhưng sẽ không tránh
khỏi những thiếu sót. Chúng em mong nhận đựơc sự đóng góp ý kiến của cô.
Sinh viên thực hiện
Lê Long Bảo
Nguyễn Hà Anh
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 2
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
MỤC LỤC
MỤC LỤC 3
CHƯƠNG 1. DANH MỤC HÌNH VẼ 4
CHƯƠNG 2. LỜI MỞ ĐẦU 6
CHƯƠNG 3. CƠ SỞ LÝ THUYẾT 7
CHƯƠNG 4. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 19


CHƯƠNG 5. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 25
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 39
TÀI LIỆU THAM KHẢO 40
[1] PGS Huỳnh Công Pháp, Slide bài giảng lập trình mạng , 2013 40
[2] Addison Wesley, Java™ Network Programming and Distributed
Computing, 2002 40
[3] 40
[4] 40
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 3
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
CHƯƠNG 1. DANH MỤC HÌNH VẼ
Hình 1.1. Mô hình mạng ngang hàng 7
Hình 1.2. Mô hình Client – Server 7
Hình 1.3. Mô tả các tiến trình gửi và nhận 9
Hình 1.4. Client/Server hai tầng 11
Hình 1.5. Client/ Server ba tầng 11
Hình 1.6. TCP UDP Socket 13
Hình 1.7. Mô tả về hoạt động socket 13
Hình 1.8. Mô tả TCP Socket 14
Hình 1.9. Thuật toán chung của TCP Socket 16
Hình 1.10. Mô tả trao đổi gói dữ liệu UDP 17
Hình 1.11. Thuật toán chung của UDP Socket 18
Hình 2.12. Mô hình chức năng 20
Hình 2.13. Sơ đồ quan hệ table hồ sơ sinh viên 20
Hình 2.14. Mô hình quan hệ cơ sở dữ liệu tổng thể 21
Hình 3.15. Server khi khởi động chương trình 25
Hình 3.16. Màn hình đăng nhập ở chương trình client 26
Hình 3.17. Màn hình đăng nhập thành công 26
Hình 3.18. Sửa hồ sơ sinh viên 27
Hình 3.19. Kết quả sửa hồ sơ sinh viên 28

Hình 3.20. Kiểm chứng kết quả sửa hồ sơ ở server 29
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 4
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Hình 3.21. Màn hình đăng nhập cho user quản lý 29
Hình 3.22. User quản lý cập nhập thông tin sinh viên 30
Hình 3.23. User quản lý chỉnh sửa thông tin sinh viên 31
Hình 3.24. Kết quả chỉnh sửa thông tin sinh viên 32
Hình 3.25. Kiểm chứng kết quả sửa thông tin sinh viên ở server 33
Hình 3.26. User quản lý thêm hồ sơ sinh viên 34
Hình 3.27. Kiểm chứng thêm hồ sơ sinh viên ở server 35
Hình 3.28. Tìm kiếm thông tin sinh viên 36
Hình 3.29. Kết quả tìm kiếm thông tin sinh viên 37
Hình 3.30. Kiểm chứng tìm kiếm hồ sơ sinh viên ở server 38
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 5
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
CHƯƠNG 2 LỜI MỞ ĐẦU
Quản lý hồ sơ sinh viên là một công tác rất quan trọng và phức tạp mà bất kỳ đơn
vị đào tạo nào cũng phải thực hiện. Bắt đầu từ việc làm thủ tục nhập học cho sinh viên,
tiếp đó là theo dõi, quản lý thông tin về sinh viên trong suốt khóa học cũng như việc hệ
thống hóa, lưu trữ và bảo quản thông tin kết quả của sinh viên một cách an toàn.
Việc quản lý này hầu như đã được thực hiện hầu hết ở các đơn vị đào tạo. Tuy
nhiên, thông tin ở dạng này chỉ dừng ở mức lưu trữ và mang tính thủ công, chưa thực
sự linh hoạt trong việc quản lý. Việc quản lý hồ sơ sinh viên cần tính đến các hoạt động
tích cực hơn nữa, chẳng hạn như việc nhập xuất dữ liệu, theo dõi thời khóa biểu, lịch
học, bảng điểm và các thông tin của sinh viên. Ngoài ra, để linh hoạt trong quản lý thì
việc ứng dụng mô hình client – server sẽ giúp người quản lý có thể truy cập và quản lý
sinh viên một cách dễ dàng và hiệu quả hơn.
Từ những khó khăn và nhu cầu như trên, nhóm chúng tôi chọn đề tài “Sử dụng
socket trong java xây dựng chương trình quản lý hồ sơ sinh viên theo mô hình
client server”, nhằm mục đích cải thiện những khó khăn và quản lý hồ sơ sinh viên

môt cách dễ dàng nhất.
Nội dung đề tài gồm 3 phần:
Chương 1: Cơ sở lý thuyết.
Chương 2: Thiết kế và xây dựng chương trình
Chương 3: Triển khai và đánh giá kết quả
Kết luận và hướng phát triển.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 6
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
CHƯƠNG 3. CƠ SỞ LÝ THUYẾT
I.1. Tổng quan về lập trình mạng
Mạng máy tính là tập hợp các máy tính độc lập kết nối với nhau theo một chuẩn
kỹ thuật nhất định. Hai máy tính gọi là nối mạng với nhau nếu chúng có khả năng trao
đổi thông tin. Phương tiện kết nối có thể là cáp đồng, cáp quang, sóng viba, hồng ngoại
hoặc vệ tinh.
Mạng máy tính có nhiều kích cỡ, cấu trúc và hình thức tổ chức khác nhau tùy
thuộc vào từng ứng dụng cụ thể của mạng máy tính. Tuy nhiên, chúng có thể phân
thành hai loại chính là: mạng có cấu trúc ngang hàng và mạng có cấu trúc Client –
Server (máy trạm – máy chủ)
Hình 1.1. Mô hình mạng ngang
hàng
Hình 1.2. Mô hình Client –
Server
Có hai phương thức truyền dẫn được sử dụng phổ biến đó là: truyền quảng bá và
truyền điểm-nối-điểm. Truyền quảng bá là phương thức sử dụng kênh thông tin đơn
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 7
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
chung cho tất cả các máy trạm trên mạng. Gói dữ liệu được gửi từ một máy trạm mong
muốn thì gói dữ liệu đó sẽ được xử lý, nếu không sẽ được bỏ qua. Một hệ thống mạng
truyền quảng bá hỗ trợ việc truyền dữ liệu đến một tập hợp các máy trạm, thì được gọi
là truyền đa điểm

Đối với phương thức truyền điểm-nối-điểm, mạng máy tính sử dụng phương thức
này bao gồm tập hợp nhiều kết nối giữa các máy trạm. Gói dữ liệu từ đầu phát dữ liệu
đến đầu thu dữ liệu có thể sẽ đi qua một hoặc nhiều máy trạm trung gian theo nhiều
tuyến truyền dẫn khác nhau với độ dài khác nhau.
Trường hợp mạng máy tính sử dụng phương thức truyền điểm-nối-điểm với một
đầu phát và một đầu thu được gọi là phương thức truyền unicasting
Phương thức phân loại thứ hai dựa vào quy mô mạng hay kích thước vật lý của
mạng. Theo quy mô từ nhỏ đến lớn ta có các loại mạng sau:
- Mạng cá nhân (Personal Are Network-PAN)
- Mạng LAN (Local Area Network)-mạng cục bộ: kết nối các nút trên một phạm
vi giới hạn. Phạm vi này có thể là một công ty, hay một tòa nhà.
- Mạng WAN (Wide Area Network): nhiều mạng LAN kết nối với nhau tạo thành
mạng WAN.
- MAN (Metropolitan Area Network), tương tự như WAN, nó cũng kết nối nhiều
mạng LAN. Tuy nhiên, một mạng MAN có phạm vi là một thành phố hay một đô thị
nhỏ. MAN sử dụng các mạng tốc độ cao để kết nối các mạng LAN của trường học,
chính phủ, công ty, , bằng cách sử dụng các liên kết nhanh tới từng điểm như cáp
quang.
I.2. Tổng quan về mô hình client server
Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, và là mô
hình được áp dụng rất rộng rãi. Ý tưởng của mô hình này là máy con (đóng vài trò là
máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch
vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 8
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Hình 1.3. Mô tả các tiến trình gửi và nhận
Quá trình giao tiếp client và server có thể diễn ra theo một trong hai chế độ: bị
phong tỏa (blocked) và không bị phong tỏa (non-blocked).
+ Chế độ bị phong tỏa (blocked):
Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra lệnh gửi dữ

liệu (send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát
ra lệnh nhận dữ liệu (receive).
Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc server)
phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi
của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới.
+ Chế độ không bị phong tỏa (non-blocked):
Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự,
việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến
trình nào phát ra lệnh nhận dữ liệu đó hay không.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 9
Tiến trình đang phong
tỏa
Tiến trình đang xử

Request
message
Request
message
Reply
Execution
Wait
Server
Client
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó
sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan
tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không.
+Kiến trúc hai tầng
Kiến trúc client/server đơn giản nhất là kiến trúc hai tầng. Trong thực tế hầu hết
các kiến trúc client/server là kiến trúc hai tầng. Một ứng dụng hai tầng cung cấp nhiều

trạm làm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu trữ
dữ liệu tập trung. Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là
server.
Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các
ứng dụng hai tầng. Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng
client/server có xu thế sử dụng kiến trúc này.
Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành cho
phía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát
luồng vào ra giữa ứng dụng và dữ liệu. Kết quả là không chỉ hiệu năng của ứng dụng bị
giảm đi do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng
tăng theo. Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng bắt buộc phải yêu
cầu nhiều dữ liệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng. Nhiều yêu
cầu dữ liệu cũng làm giảm hiệu năng của mạng. Một vấn đề thường gặp khác đối với
ứng dụng hai tầng là vấn đề bảo trì. Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng
cần phải thay đổi lại toàn bộ ứng dụng client và server.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 10
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Hình 1.4. Client/Server hai tầng
Ta có thể tránh được các vấn đề của kiến trúc client/server hai tầng bằng cách mở rộng
kiến trúc thành ba tầng. Một kiến trúc ba tầng có thêm một tầng mới tác biệt việc xử lý
dữ liệu ở vị trí trung tâm.
Hình 1.5. Client/ Server ba tầng
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 11
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về
mặt logic.
Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa. Tầng thứ
hai, còn được gọi là tầng trung gian hay tầng tác nghiệp. Tầng thứ ba chứa dữ liệu cần
cho ứng dụng. Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để tìm
kiếm dữ liệu cần thiết. Tầng trình diễn nhận dữ liệu và định dạng nó để hiển thị. Sự

tách biệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho việc thiết kế
ứng dụng. Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay
đổi logic ứng dụng.
Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng. Dữ liệu này có thể bao gồm bất
kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server hoặc tài liệu
XML.
Kiến trúc n-tầng
Kiến trúc n-tầng được chia thành các tầng như sau:
+ Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng
+ Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các
yêu cầu của người dùng được quản lý như thế nào.
+ Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp,
+ Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụng
như các thành phần (truyền thông điệp, hỗ trợ giao tác).
I.3. Tổng quan về lập trình socket
I.3.1.Khái niệm socket
Để xây dựng được một chương trình theo mô hình client-server, cho phép truyền
nhận dữ liệu qua mạng, người lập trình chỉ cần viết chương trình ở tầng ứng dụng và
tìm cách giao tiếp với một trong hai giao thức ở tầng vận chuyển là TCP hoặc UDP. Để
làm được việc này, các hệ điều hành cung cấp một phương tiện cho phép ứng dụng
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 12
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
người dùng giao tiếp được với các giao thức TCP và UDP một cách dễ dàng. Phương
tiện đó được gọi là Socket, được biểu diễn như hình vẽ bên dưới.
Hình 1.6. TCP UDP Socket
Socket được xem như điểm giao tiếp của ứng dụng mạng, do đó chương trình
client/server sẽ thực hiện hai thao tác cơ bản sau.
- Để truyền dữ liệu, chương trình chỉ cần gửi dữ liệu vào socket.
- Để nhận dữ liệu, chương trình chỉ cần đọc dữ liệu từ socket.
Có hai loại socket: socket nối với giao thức TCP còn được gọi là TCP Socket,

và tương tự như vậy socket nối với giao thức UDP được gọi là UDP Socket. Có thể nói
một kênh kết nối giữa hai chương trình được thiết lập nhờ vào hai socket được gắn ở
hai chương trình.
Hình 1.7. Mô tả về hoạt động socket
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 13
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
I.3.2.TCP Socket
Giao thức TCP là giao thức truyền thông có kết nối và tin cậy. Truyền thông có
kết nối có nghĩa là trước khi truyền dữ liệu, giao thức TCP gửi và giao thức TCP nhận
phải thiết lập kênh truyền trước khi gửi, nhận dữ liệu và trong suốt quá trình trao đổi
dữ liệu hai giao thức gửi, nhận phải duy trì kênh truyền đã được thiết lập.
Quá trình thiết lập kênh truyền được thực hiện cụ thể bởi một quá trình gọi là
quá trình bắt tay ba bước như sau:
- Trước hết giao thức TCP phía máy gửi phải yêu cầu thiết lập một kênh truyền
bằng cách gửi một phân đoạn (segment) gọi là syn đến giao thức TCP phía máy nhận.
- Giao thức TCP phía máy nhận trả lại một phân đoạn (segment) gọi là ACK để
xác nhận đã nhận được thành công.
- Giao thức TCP phía máy gửi tiếp tục gửi một phân đoạn ACK để xác nhận và
sau đó là quá trình gửi dữ liệu.
Truyền thông tin cậy có nghĩa là nút gửi biết được gói tin đã được gửi đến đích
hay chưa. Nếu không đến được, nút gửi phải gửi lại gói tin. Nếu gói tin đã được gửi
thành công thì gửi gói tin tiếp theo. Cụ thể của quá trình này được thực hiện bằng cách
mỗi gói tin được đánh một số thứ tự. Mỗi khi nhận được gói tin, nút nhận phải gửi một
phản hồi cho nút gửi để thông báo đã nhận được thành công gói tin.
Hình 1.8. Mô tả TCP Socket
Việc xây dựng chương trình client-server sử dụng giao thức TCP của tầng vận
chuyển được thực hiện thông qua TCP socket. Do vậy, người lập trình chỉ cần viết mã
lệnh để đọc và ghi dữ liệu giữa chương trình và TCP Socket, sau đó TCP socket sẽ có
nhiệm vụ liên lạc và gửi, nhận dữ liệu với TCP socket phía đầu còn lại.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 14

Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Các hoạt động của TCP Socket sẽ bao gồm như sau:
- TCP Socket phía server
o Lắng nghe yêu cầu kết nối từ socket client
o Chấp nhận kết nối từ socket client
o Gửi dữ liệu
o Nhận dữ liệu
o Đóng kết nối
- TCP Socket phía client
o Yêu cầu kết nối với socket phía server
o Gửi dữ liệu
o Nhận dữ liệu
o Đóng kết nối
Để TCP socket phía client có thể liên lạc được với TCP socket phía server thì
TCP socket phía server phải được gắn với một cổng (port). Sauk hi TCP Socket phía
server được gắn một cổng, nó sẽ chờ và lắng nghe yêu cầu tạo kênh kết nối từ TCP
socket phía client gửi đến.
Thực tế, socket được tồn tại dưới dạng các thư viện API do các hệ điều hành
hoặc các ngôn ngữ lập trình cung cấp cho phép người dùng lập trình sử dụng chúng để
xây dựng chương trình client – server.
Chẳng hạn, hệ điều hành Unix cung cấp thư viện có tên Berkeley socket dưới
dạng các API trong khi đó hệ điều hành Windows cung cấp thư viện API có tên là
Windows Socket (còn gọi là Winsock). Trong ngôn ngữ lập trình java có gói java.net,
trong khi đó ngôn ngữ lập trình C có thư viện sys/socket.h
Người lập trình chỉ cần sử dụng các thư viện chương trình của socket được cung
cấp cho hệ điều hành hoặc ngôn ngữ lập trình để xây dựng chương trình theo mô hình
client-server.
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 15
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Hình 1.9. Thuật toán chung của TCP Socket

I.3.3.UDP Socket
Giao thức UDP được viết tắt từ cụm từ User Datagram Protocol, là giao thức
truyền thông không kết nối (connectionless) và không tin cậy. Truyền thông không kết
nối có nghĩa là giao thức UDP gửi và giao thức UDP nhận không cần thiết lập kênh
truyền để gửi/nhận dữ liệu. Điều đó có nghĩa là giữa giao thức UDP gửi và giao thức
UDP nhận không tồn tại một kênh kết nối cố định nào trong quá trình dữ liệu. Chính vì
thế mà giao thuwcsUDP hỗ trợ cả phương thức truyền điểm – điểm và điểm – nhiều
điểm. Do đó, một chương trình server sử dụng giao thức UDP có thể kết nối và trao đổi
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 16
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
dữ liệu với nhiều client tịa một thời điểm mà không cần người lập trình phải sử dụng
kỹ thuật đa tuyến như lập trình với giao thức TCP.
Giao thức UDP là giao thức truyền thông không tin cậy có nghĩa là giao thức
UDP gửi hoàn toàn không biết gói tin có đến đích thành công hay không. Do giao thức
UDP không thực hiện cơ chế bắt tay ba bước như giao thức TCP, nên giao thức UDP
nhận, không gửi bất cứ phản hồi ACK nào để xác nhận đã nhận được gói tin cho UDP
gửi. Giao thức TCP thực hiện việc truyền dữ liệu theo cách tuần tự, mỗi lần chỉ gửi
một gói tin trên kênh truyền cố định đã được thiết lập. Để gửi gói tin thứ n thì giao thức
TCP gửi phải biết chắc gói tin n-1 đã đến đích thành công, do đó trật tự gói tin đến đích
đúng với trật tự gói tin được gửi phía giao thức TCP gửi. Trong khi đó, giao thức UDP
thực hiện việc truyền dữ liệu theo cách song song,, mỗi lần có thể gửi nhiều gói tin trên
những lộ trình khác nhau, do đó trật tự gói tin đến đích có thể khác so với trật tự gói tin
phía giao thức UDP gửi. Thậm chí, theo cách này, giao thức UDP có thể không nhận
đầy đủ gói tin.
Để xây dựng một chương trình theo mô hình client-server sử dụng giao thức
UDP, người lập trình chỉ cần viết chương trình ở tầng ứng dụng và tìm cách giao tiếp
với giao thức (dịch vụ) UDP. Tương tự như lập trình với giao thức TCP, việc giao tiếp
giữa chương trình với giao thức UDP cũng thông qua socket. Socket giao tiếp với giao
thức UDP được gọi là UDP socket.
Hình 1.10. Mô tả trao đổi gói dữ liệu UDP

Để UDP socket phía client có thể gửi được dữ liệu đến UDP socket phía server
thì UDP socket phía server phải được gắn với một cổng (port). Tuy nhiên, UDP socket
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 17
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
phía server không phải chờ, lắng nghe yêu cầu kết nối và cũng không có chấp nhận kết
nối mà UDP socket phía server chỉ chờ gói tin được gửi đến từ các client.
Hình 1.11. Thuật toán chung của UDP Socket
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 18
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
CHƯƠNG 4. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG
TRÌNH
II.1. Phân tích yêu cầu
- Đối với client
o Phải có 2 tài khoản, một cho người quản trị và 1 cho sinh viên.
o Tài khoản sinh viên: chỉ có quyền đăng nhập, xem chính thông tin hồ sơ
của mình và chỉnh sửa thông tin của chính sinh viên .
o Tài khoản quản trị: có quyền đăng nhập, xem, chỉnh sửa và thêm thông
tin hồ sơ của một sinh viên bất kỳ. Ngoài ra còn có thể, tìm kiếm thông
tin hồ sơ theo lớp hoặc theo mã sinh viên.
o Giao diện phải dễ sử dụng và có hiển thị tên user đăng nhập lên màn hình
- Đối với server
o Server phải xử lý được các yêu cầu gửi đến từ client như: yêu cầu đăng
nhập, thêm, sửa, xem hồ sơ. Kiểm tra được tài khoản đăng nhập có quyền
gì, và hiển thị thông tin đã xử lý của client gửi đến lên màn hình.
II.2. Phân tích các chức năng
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 19
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Hình 2.12. Mô hình chức năng
II.1.1. Chức năng đăng nhập
- Gồm các trường thông tin như userid, username, password, quyền, ngày tạo,

ngày update
- Có chức năng dùng tài khoản sinh viên hoặc tài khoản quản lý để đăng nhập và
sử dụng chương trình.
II.1.2. Chức năng cập nhập hồ sơ sinh viên
Chức năng chính dùng để xem hồ sơ, thêm hồ sơ sinh viên và cập nhập lại hồ sơ
sinh viên và thông tin thân nhân của sinh viên và chỉ dùng được cho tài khoản quản lý
đăng nhập để quản lý. Đối với tài khoản sinh viên thì user sinh viên chỉ có quyền xem
và sửa thông tin của chính sinh viên đó.
- Sơ đồ quan hệ
Hình 2.13. Sơ đồ quan hệ table hồ sơ sinh viên
Bảng dữ liệu:
- Table hồ sơ sinh viên: ID, MaSV, DanToc, MaNganh, MaLop, HoTen,
NamSinh, NgaySinh, GioiTinh, MaNoiSinh, DiaChi, SoDienThoai, CMND,
Email, MaQuocTich
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 20
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
- Table ngành: ID, MaNganh, TenNganh
- Table lớp: ID, MaLop, TenLop
- Table thành phố: ID, TenThanhPho.
- Table quốc gia: ID, TenQuocGia, MaQuocGia
- Table thân nhân: ID, TenThanNhan, MaQuocGia,DanToc, TonGiao,
HoKhauThuongTru, NgheNghiep, QuanHe, MaSinhVien
II.1.3. Chức năng tìm kiếm hồ sơ sinh viên
Có chức năng tìm kiếm hồ sơ sinh viên: theo mã sinh viên hoặc theo lớp đang
học, chức năng này chỉ có ở tài khoản quản lý. Đối với tài khoản sinh viên, user sinh
viên không có quyền thực hiện chức năng này.
II.3. Mô hình quan hệ cơ sở dữ liệu
Hình 2.14. Mô hình quan hệ cơ sở dữ liệu tổng thể.
II.4. Thuật toán của bài toán xử lý cho server và client
 Server:

Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 21
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Bước 1 Tạo biến luồng dữ liệu
- Khai báo ServerSocket :
ServerSocket server = new ServerSocket(cổng);
- Khai báo mảng ArrayList hoặc HashTable:
public Hashtable<String, ThreadHandler>
Bước 2 Lắng nghe kết nối.
- Sử dụng vòng lặp và tạo luồng ThreadHandler
While(true)
{
Try{
Socket sk =server.accept();
ThreadHandler srvThread = new ThreadHandler(sk,this);
srvThread.start();}
Catch(Exception e)
{ /*Ghi log vào server và in ra thông báo lỗi*/ }}
Bước 3 Trao đổi dữ liệu với Client
- Xác định yêu cầu của client
If (codeProcess == GiaoThucDieuKhien.YEUCAU_<NỘI
DUNG>)
{
/* Xử lý yêu cầu và trả về kết quả */
}
Bước 4 Giải phóng tài nguyên
stream_in.Close();
stream_out.Close();
socketClient.Close();
 Client
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 22

Chương trình quản lý hồ sơ sinh viên theo mô hình client server
Bước 1 Khai báo biến luồng dữ liệu, socket để kết nối
- Khởi tạo kết nối : Socket client = new Socket (cổng)
- Khai báo biến truyền nhận dữ liệu:
private DataInputStream stream_in;
private DataOutputStream stream_out;
private ObjectInputStream ois;
private ObjectOutputStream stream_oos;
- Kiểm tra kết nối dùng truy catch
Try
{ /* Xử lý các chức năng*/}
Catch(Exception e)
{/* In thông báo lỗi nếu kết nối không thành công */
- Đăng nhập và kiểm tra tài khoản với quyền gì
switch(quyen)
{ case "sinhvien":
/*Gọi form sinh viên*/
case "quanly":
/*Gọi form quản lý*/ }
Bước 2 Xử lý trao đổi dữ liệu với server
- Gửi mã code xác định yêu cầu truy vấn đến server
o Tạo mã code
Class GiaoThucDieuKhien
{public static final int YEUCAU_<NỘI DUNG> = NUMBER;}
o Tạo hàm gửi mã code xác định truy vấn
protected void SendProcessCode(int processCode)
{ dos.writeInt(processCode) ;}
- Xử lý kết quả trả về
o Nếu là bảng dữ liệu thì đọc dữ liệu từ đối tượng được gửi về và lưu
vào mảng

ArrayList<Đối tượng> tên biến = (ArrayList<Đối tượng>)stream_ois.readObject();
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 23
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
o Nếu là đối tượng thực thi
<Đối tượng> tên biến =(Đối tượng)ois.readObject();
Bước 3 Giải phóng tài nguyên
stream_in.Close();
stream_out.Close();
socketClient.Close();
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 24
Chương trình quản lý hồ sơ sinh viên theo mô hình client server
CHƯƠNG 5. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT
QUẢ
III.1. Môi trường triển khai
- Môi trường Windows có cài đặt Java hoặc Netbeans.
- Môi trường mạng LAN.
III.2. Kết quả các chức năng
Hình 3.15. Server khi khởi động chương trình
Sinh viên thực hiện: Lê Long Bảo – Nguyễn Hà Anh – 12TLT.CNTT Trang 25

×