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

XÂY DỰNG PHẦN MỀM XEM ĐIỂM THI CỦA 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 (648.78 KB, 23 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN
XÂY DỰNG PHẦN MỀM XEM ĐIỂM THI CỦA
SINH VIÊN THEO MÔ HÌNH CLIENT SERVER
Môn học: LẬP TRÌNH MẠNG
Giáo viên hướng dẫn: ĐẶNG NHÂN CÁCH
Thành viên của nhóm:
1. Phan Quang Hà
2. Trần Hữu Tài.
3. Phạm Hồng Ân
4. Phạm Quốc Tuấn
5. Huỳnh Sơn Tùng
Năm học 2008 – 2009
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
1
Mục lục
Mục lục 2
1.Tóm tắt hệ thống:_____________________________________________________________________3
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
2
Chương I: Giới thiệu
1. Tóm tắt hệ thống:
-Nhu cầu hiện nay là tra cứu điểm kiểm tra, điểm thi kết thúc, điểm giữa kì của đông
đảo sinh viên trong các trường ĐH-CĐ cũng như phụ huynh muốn biết điểm trong
quá trình học tập của con em mình.
-Hiện nay việc này thường được làm bằng tay như các khâu kiểm duyệt, in bảng điểm
nên rất mất thời gian. Trung bình sinh viên cần chờ trong một ngày để nhận kết quả.
-Dựa trên nhu cầu đó chúng tôi đã ra mắt phần mềm tra cứu điểm học tập trực tuyến
này. Với chương trình này bạn có thể theo dõi điểm của sinh viên một cách dễ dàng
và nhanh chóng.


2. Nguyên tắc nghiệp vụ:
- Server được chạy trên máy server của trường, do cán bộ trường điều khiển.
- Client là cài đặt trên các máy cá nhân, có kết nối với mạng của trường. Client gửi
mã số sinh viên lên server và hiển thị kết quả trả về.
2.1 Use case
Các use case của chương trình
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
3
2.2 Sequence Diagram
Xem điểm thi ở client
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
4
Khởi động và đóng server
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
5
Tương tác giữa client và server
2.3 Cơ sở dữ liệu để quản lý thông tin học sinh
Tại máy server, chúng ta tiến hành cài đặt cơ sở dữ liệu để quản lý điểm học
sinh, ở đây dùng SQL server 2008. Sau khi phân tích các chức năng của hệ thống,
nhóm chúng em đã tiến hành phân tích cơ sở dữ liệu và đưa ra 5 table như sau:
1. Table SINHVIEN bao gồm các thuộc tính sau:
a. MSSV
b. HOTEN
c. QUEQUAN
d. LOP (references MALOP)
e. NGAYSINH
2. Table LOP bao gồm các thuộc tính sau:
a. MALOP
b. MAKHOA (references MAKHOA)
3. Table KHOA bao gồm các thuộc tính sau:

a. MAKHOA
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
6
b. TENKHOA
4. Table MONHOC bao gồm các thuộc tính sau:
a. MAMH
b. TENMH
5. Table CHITIETMH bao gồm các thuộc tính sau:
a. MASV (references MSSV từ table SINHVIEN)
b. MAMH (references MAMH từ table MONHOC)
c. DIEMTHILAN1
d. DIEMTHILAN2
Sơ đồ mối quan hệ giữa các table
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
7
Chương II: Cơ sở lý thuyết
1.Kết nối:
-Kết nối client-server theo giao thức TCP dựa trên ngôn ngử C#.
-Đối tượng kết nối cần hai thông số địa chỉ và cổng.
-Server:
+Class sử dụng: TcpListener,TcpClient.
. TcpListener chấp nhận một kết nối tới và trả về kiểu TcpClient.
.Hai class đều không có hàm send dữ liệu. TcpClient có hàm trả về dòng
đọc ghi dữ liệu text.
.Ngoài ra có thể sử dụng class Socket, có phương thức nhận và gữi chuổi
byte.
+Khởi tạo kết nối:
TcpListener server =
new TcpListener(IPAddress.Parse(ip_add_string), port);


+Bắt đầu lắng nghe và chấp nhận kết nối từ client:
server.Start();
TcpClient client = server.AcceptTcpClient();
.Client là socket kết nối tới máy khách.
+Gữi nhận dữ liệu:
.Dòng ghi đọc dữ liệu:
StreamReader Sr = new StreamReader(client.GetStream());
StreamWriter Sw = new StreamWriter(client.GetStream());
.Thao tác gữi nhận:
String ketqua = Sr.ReadLine();
Sw.WriteLine(“Thông tin cần gữi”);
+Kết thúc và đóng kết nối:
Server.Close();
-Client:
+Class sử dụng: TcpClient.
+Khởi tạo và kết nối:
TcpClient client = new TcpClient();:
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ip), 1234);
client.Connect(ipe);
.IPEndPoint chứa thông tin địa chỉ cần kết nối tới.
.Có thể kết nối bằng các tham số khác như string address, int port,
IPAddress.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
8
+Gữi nhận dữ liệu: tương tự phía server.
+Kết thúc và đóng kết nối:
client.Close();
2.Đa tiến trình:
-Class sử dụng: System.Threading.
-Một tiến trình được khởi tạo khi có một kết nối đến khi có một kết nối từ client

đến. Tiến trình này phụ trách giao tiếp với client này. Thao tác gữi, nhận dữ
liệu được thực hiện trên tiến trình này.
-Khởi tạo:
Thread thr = new Thread(new ThreadStart(Void ham_thread));
Thr.Start();
Ví dụ:
thr = new Thread(new ThreadStart(ConnectionThread));
thr.Start();
-Kết thúc:
Thr.Abort();
-Các hàm khác:
Thr.Sleep(int time);
Thr.Resume();
3.Hàm ủy quyền:
-Chức năng: ủy quyền cho một đối tượng khác thực hiện chức năng của đối
tượng truyền.
-Hàm ủy quyền được sử dụng khi chương trình cần một tiến trình khác thực
hiện các hàm của nó (ví dụ: form cha cần nhận dữ liệu từ form con).
-Trong phạm vi đề tài này, hàm ủy quyền được dùng để thực hiện hàm khi đang
ở một thread khác.
-Hàm được ủy quyền phải cùng dạng với khai báo của hàm ủy quyền (tham số
và kiểu trả về).
-Khai báo:
[modifier] delagate (return_type) void_name(argurments);
Ví dụ:
private delegate void dlgAddStatus(string s);
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
9
-Truyền ủy quyền: truyền như một tham số khi khởi tạo đối tượng.
Formcon mh = new Formcon(AddStatus);

//AddStatus là một hàm được khai báo trên Formcha.
-Sử dụng hàm ủy quyền:
+Khai báo delagate đồng dạng hàm được ủy quyền.
private delegate void dlgAddStatus(string s);
+Khai báo biến delagate đại diện cho hàm.
dlgAddStatus abc = AddStatus;
//AddStatus là hàm được truyền trong tham số khởi tạo phía trên.
-Khi đang ở một thread khác mà gọi hàm của thread khởi tạo ta cần :
+Invoke delagate này tại thread chính.
if (this.lstStatus.InvokeRequired)
{
//Thực thi hàm ủy quyền trên thread tạo ra hàm này.
this.Invoke(new delagate_name(void_name), parameter[]);
}
+Ví dụ:
if (this.lstStatus.InvokeRequired)
{
this.Invoke(new dlgAddStatus(AddStatus), s);
}
4.Kết nối csdl:
-Mô hình kết nối ADO.Net.
-Các đối tượng và cách sử dụng:
+Thư viện: System.Data
System.Data.SqlClient
+ SqlConnection: tạo kết nối đến sql server.
.Khởi tạo:
SqlConnection sql_con = new SqlConnection(sql_string);
//Sql_string: chuổi kết nối chứa thông tin server, database và đăng nhập.
.Kết nối và đóng kết nối:
sql_con.Open();

sql_con.Close();
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
10

+ SqlCommand: lệnh truy vấn đến sql server. Trả về hoặc không trả về giá trị
(tùy vào kiểu truy vấn thêm, xóa, sửa)
.Khởi tạo:
SqlCommand sqlCmd = new SqlCommand(string_command);
// string_command: chuổi lệnh thực thi.

+ SqlDataAdapter: đối tượng thực thi lệnh truy vấn và lấy thông tin từ server.
.Khởi tạo:
SqlDataAdapter sqlDA = new SqlDataAdapter(string_command,
sql_connecttion);
// string_command: lệnh select dữ liệu.
// sql_connecttion: kết nối.

+System.Data.DataSet: chứa đựng dữ liệu.
.Khởi tạo:
DataSet dS = new DataSet();
.Truyền dữ liệu:
sqlDA.Fill(dS);
.Truy xuất dữ liệu:
dS.Tables[int index].Rows[int index].Columns[int index];
//dS.Tables[i] : bảng thứ i trong tập các bảng trong dataset.
// dS.Tables[i].Rows : tập các dòng trong bảng thứ i của dataset.
// dS.Tables[i].Rows[j].Columns : tập các cột trong dòng thứ j của
bảng thứ i trong dataset.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
11

Chương III: Hiện thực chương trình
1. Client:
- frmClient hiện ra khi khởi chạy client. User sẽ nhập vào IP của server, nhập
vào Mã sinh viên cần xem thông tin.
frmClient
- Sau khi nhập xong sẽ nhấn nút Xem, frmClient đóng, hiện ra frmXemTT.
Trong khi frmXemTT được khởi tạo, client gởi mã sinh viên lên server có IP đã
nhập, nếu IP sai sẽ thông báo cho client, hoặc server chưa khởi chạy cũng sẽ
thông báo và tắt client, yêu cầu mở lại client.
- Nếu kết nối tới server thành công, client sẽ chờ server trả về chuỗi thông báo là
có truy xuất thông tin sinh viên với mã sinh đó được hay không, nếu được sẽ
bắt đầu nhận lần lượt các thông tin cũng như điểm của server và hiển thị lên
frmXemTT, nếu không sẽ đóng frmXemTT, hiển thị lại frmClient, thông báo
yêu cầu user kiểm tra và nhập lại mã sinh viên cho đúng.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
12
frmXemTT
- Kết quả nhận được từ server đều được hiển thị đầy đủ trên frmXemTT, riêng
Chương điểm, nếu điểm thi lần 2 không có hoặc chưa nhập sẽ thêm vào là chưa
có dữ liệu.
2. Server:
- frmServer gồm 1 button Start Server làm nhiệm vụ khởi động server, tạo thread
chờ cho có client kết nối đến, button Stop Server có nhiệm vụ đóng hết tất cả
mọi kết nối, hủy chờ và dừng thread, 1 Listbox để hiện thi 1 thông tin khi
server làm việc gì khác ( thay đổi status bằng code -> hiển thị để người dùng
biết)
frmServer
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
13
- Khi người sử dụng nhấn nút StartServer thì sẽ thêm 1 status với nội dung “ngày

giờ start server”, và hiện ra form DataConnectConfiguration, mục đích của
form này là để người dùng nhập vào các thông tin để kết nối với SQL server,
bao gồm: tên Server, Username và password để đăng nhập, tên csdl để truy
xuất, sau đó người dùng nhấn TestConnection để kiểm tra kết nối, button OK sẽ
hiện ra, ấn OK để hide form, thêm status vào frmServer, enable nút STOP và
chương trình sẽ tự động thay đổi chuỗi kết nối sao cho phù hợp, để có thể truy
vấn được từ cơ sở dữ liệu.
frmConfig
- ConnectionThread được tao ra để chờ kết nối từ client, tao ra 2 dòng dữ liệu gởi
và nhận. Khi đã có kết nối sẽ nhận mã sinh viên từ client gởi lên, dùng mã sinh
viên đó truy vấn thông tin sinh viên từ cơ sở dữ liệu, đưa vào dataset. Nếu
dataset không có dữ liệu thì gởi chuỗi “false” về client, còn có thì gởi chuỗi
“true” sau đó gởi lần lượt từ dữ liệu trong bảng dữ liệu của dataset trên về
client. Khi gởi xong tất cả sẽ đóng luôn kết nối với client đó. Do sử dụng thread
nên cùng lúc có thể phục vụ nhiều client kết nối đến, và mỗi sinh viên có thể
xem cùng lúc nhiều mã sinh viên khác nhau-> có thể so sánh điểm số.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
14
Chương IV: Kiểm thử và nhận xét
1. Test case và kết quả:
1.1 Server:
Test case Input value Expect
value
Output value
Chuổi kết
nối
Server=”sad”,
user=”test”,
pass=”123”, database
= “qlsv”

Báo lổi
chuổi kết
nối.
Chuổi kết nối không chính xác,
yêu cầu nhập lại. (pass)
Chuổi kết
nối
Server=”.”, user=”sa”,
pass=”1234”, database
= “qlsv”
Kết nối
thành công.
Hiển thị MessageBox “Click Ok
để chạy server.”,“Kết nối thành
công” (pass)
Trả kết
quả cho
client
Client send “sv1” Thông báo
cho client
không tìm
thấy sinh
viên.
Client thông báo không tìm được
sinh viên (Pass)
Trả kết
quả cho
client
Client send “sv0005” Thống báo
tìm thấy và

gữi bảng
điểm của
sinh viên.
Client hiển thị bảng điểm của sinh
viên Phan Quang Hà (pass)
1.2 Client:
Test case Input value Expect
value
Output value
Nhập ip “ip_máy server” Báo lổi
nhập sai ip.
Client thông báo: “Ip sai. Đóng
Client.” (pass)
Nhập ip “127.0.0.1” Kết nối Client kết nối đến server và gữi
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
15
thành công. msv cho server. (pass)
Nhập msv “msv_01” Không tìm
thấy thông
tin sinh
viên này
Client hiển thông báo: “Không tìm
thấy mã sinh viên.” (pass)
Nhập msv “sv0005” Hiển thị
thông tin
sinh viên
sv0005
Client hiển thị bảng điểm của
Phan Quang Hà (pass)
2.Nhận xét:

-Không có từng test case riêng cho các thông tin trong chuổi kết nối vì chỉ test
được tính đúng sai của chuổi kết nối.
-Chưa có biện pháp test hàm getDS(string msv).
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
16
Chương V: Cài đặt và sử dụng
1.Cài đặt:
-Cài đặt NetFrameWork 3.5.
-Cài đặt SQL Server 2008.
-Vào thư mục Setup\Server. double click setup.exe . click Install để hoàn
thành cài đặt server.
Hình 5.1.1 Cài đặt server.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
17
-Vào thư mục Setup\Client. double click setup.exe . click Install để hoàn thành
cài đặt client.
Hình 5.1.2 Cài đặt client.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
18
2.Sử dụng:
2.1 Cài đặt cơ sở dữ liệu trên server
Chương trình sử dụng SQL server 2008 để quản lý cơ sở dữ liệu.
Nên để sử dụng được chương trình máy cần cài sql server 2008 và attach cơ sở dữ
liệu qlsv. File qlsv.mdf chứa trong thư mục database.
Hình 4.1.1 Attack database vào sql server.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
19
Hình 4.1.2 Chọn file cơ sơ dữ liệu.
.Click Ok để attack cớ sở dữ liệu.
2.2 Server

Sau khi cài đặt server và attach cơ sở dữ liệu, chúng ta khởi chạy
server. Ấn nút Start, nhập thông tin cần thiết cho Chương kết nối database, kiểm tra
kết nối và đóng form. Sau đó chờ cho client kết nối đến.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
20
Hình 5.2.1 Chạy server.
Hình 5.2.1 Server chờ đợi kết nối.
2.3 Client
Client cài đặt bằng file setup.exe trong thư mục cài đặt, sau đó
chạy xemdiemClient.exe trong thư mục cài đặt, nhập IP của server (!?), nhập mã sinh
viên cho đúng sau đó nhấn OK để xem kết quả mà server gởi về.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
21
Hình 5.2.1 Thực thi tại client.
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
22
Chương VI: Tổng kết
-Chương trình có thể phát triển thêm các các nội dung sau:
+Form nhập kết nối thân thiện hơn, cho phép người dùng chọn database
từ cơ sở dữ liệu.
+Công cụ quản lý thông tin sinh (Thêm, xóa, sữa.)
+Chức năng cho phép người dùng có thể tra cứu điểm của từng năm,
từng học kì cụ thể.
Đây là lần đầu chúng em làm 1 project về lập trình mạng nên không thể không
tránh khỏi những thiếu sót, mong thầy xem xét và cho ý kiến để chúng em hoàn thiện
hơn.
Do thời gian không cho phép chương trình của chúng em vẫn còn thiếu rất
nhiều chức năng như thêm xóa sửa cơ sở dữ liệu từ server, cho sinh viên update lại
thông tin cá nhân từ client… Chúng em vẫn đang cố gắng hoàn thiện hơn chương
trình để mong một ngày nào đó có thể áp dụng vào thực tế. Cảm ơn thầy và tất cả các

bạn trong lớp.
_____________________________________
Đồ án môn LẬP TRÌNH MẠNG – NETWORK PROGRAMMING
23

×