Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 7: Thiết kế và xây dựng phần mềm theo mô hình 3 tầng xử lý

Phân tích, thiết kếchức năng của phần mềm theo mô hình 3 tầng xửlý

Dựa vào hướng dẫn thiết kếtheo mô hình ba tầng trên lớp lý thuyết, sinh

viên phải phân tích, thiết kế

- Xác định và mô tảphát thảo các lớp đối tượng

- Lập sơ đồlớp mức phân tích

- Lập sơ đồlớp mức thiết kế

- Mô tảchi tiết các lớp đối tượng

- Lập sơ đồkiến trúc tổng thểcủa phần mềm

- Lập sơ đồphối hợp của các biến cố

pdf8 trang | Chuyên mục: Visual C# | Chia sẻ: dkS00TYs | Lượt xem: 1885 | Lượt tải: 1download
Tóm tắt nội dung Xây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 7: Thiết kế và xây dựng phần mềm theo mô hình 3 tầng xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
HƯỚNG DẪN THỰC HÀNH TUẦN 7 
(Thiết kế và xây dựng phần mềm theo mô hình 3 tầng xử lý) 
1. Mục đích: 
Lưu trữ dữ liệu
Xử lý thông tin
Giao diện người dùng
2. Thiết kế CSDL: 
a. Sử dụng lại CSDL của tuần thứ 6 (QLHOCSINH.mdb) 
HOCSINH 
STT Tên trường Kiểu dữ liệu Ghi chú 
1 MaHS Text(10) PrimaryKey 
2 TenHS Text(255) 
3 NgaySinh Date/Time 
4 DiaChi Text(255) 
5 DTB Number 
6 MaLop Text(10) ForeignKey (tham chiếu đến 
Lop(MaLop) 
LOP 
STT Tên trường Kiểu dữ liệu Ghi chú 
1 MaLop Text(10) PrimaryKey 
2 TenLop Text(255) 
3 SiSo Number 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
3. Phân tích, thiết kế chức năng của phần mềm theo mô hình 3 tầng xử lý 
Dựa vào hướng dẫn thiết kế theo mô hình ba tầng trên lớp lý thuyết, sinh 
viên phải phân tích, thiết kế 
- Xác định và mô tả phát thảo các lớp đối tượng 
- Lập sơ đồ lớp mức phân tích 
- Lập sơ đồ lớp mức thiết kế 
- Mô tả chi tiết các lớp đối tượng 
- Lập sơ đồ kiến trúc tổng thể của phần mềm 
- Lập sơ đồ phối hợp của các biến cố 
4. Cài đặt: 
a. Tạo project “QLHocSinh” 
b. Mô hình 3 tầng của chương trình: 
c. Tạo lớp DataProvider để quản lý việc kết nối và truy vấn cơ sở dữ 
liệu: 
Việc kết nối cơ sở dữ liệu có thể được thực hiện qua nhiều dạng 
Provider khác nhau như SqlClient, OleDb, Odbc… Do đó, để có thể dễ dàng 
thay đổi Provider khi hệ quản trị cơ sở dữ liệu thay đổi, ta cần thiết lập một 
lớp DataProvider riêng với các hàm tương ứng. 
Các bước thực hiện: 
- Chọn Project -> Add Class: Đặt tên cho class là DataProvider. 
- Ở đây ta kết nối với cơ sở dữ liệu Microsoft Access nên ta sử dụng 
OleDb để kết nối. Thêm 2 dòng lệnh sau vào đầu file DataProvider.cs: 
Giao diện 
Cơ sở dữ liệu 
HocSinhCtl 
HocSinhData 
DataProvider 
HocSinhInfo 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
using System.Data; 
using System.Data.OleDb; 
Với mỗi lần kết nối, ta sử dụng cùng một connectionString chung. 
Khai báo một biến static và một property để lưu giữ connection string 
xuyên suốt trong chương trình. 
protected static string _connectionString; 
public static string ConnectionString 
{ 
 get 
 { 
 return _connectionString; 
 } 
 set 
 { 
 _connectionString = value; 
 } 
} 
Đồng thời ta cần khai báo các biến để thực hiện thao tác trên cơ sở dữ liệu 
bao gồm: 
protected OleDbConnection connection; 
protected OleDbDataAdapter adapter; 
protected OleDbCommand command; 
Tương tự như bài trước, ta viết hàm kết nối CSDL: 
public void connect() 
{ 
 connection = new OleDbConnection(_connectionString); 
} 
Và hàm ngắt kết nối CSDL: 
public void disconnect() 
{ 
 connection.Close(); 
} 
Để thực hiện truy vấn dữ liệu với các câu truy vấn dữ liệu có sẵn, ta tạo 
hàm truy vấn executeQuery để trả ra 1 DataReader 
public IDataReader executeQuery(string sqlString) 
{ 
 command = new OleDbCommand(sqlString, connection); 
 return command.ExecuteReader(); 
} 
public void executeNonQuery(string sqlString) 
{ 
 command = new OleDbCommand(sqlString, connection); 
 command.ExecuteNonQuery(); 
} 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
public object executeScalar(string sqlString) 
{ 
 command = new OleDbCommand(sqlString, connection); 
 return command.ExecuteScalar(); 
} 
d. Tạo lớp HocSinhData (add class HocSinhData.cs) để thực hiện các 
thao tác cập nhật cơ sở dữ liệu với dữ liệu học sinh tương ứng 
Lớp HocSinhData sẽ chịu trách nhiệm thực hiện cập nhật CSDL 
thông qua DataProvider đã có. 
Mỗi đối tượng HocSinhData sẽ giữ một Data Provider để thực hiện 
truy xuất CSDL 
using System.Data; 
using System.Data.OleDb; 
namespace QLHocSinh 
{ 
 class DataProvider 
 { 
 protected static string _connectionString; 
 protected OleDbConnection connection; 
 protected OleDbDataAdapter adapter; 
 protected OleDbCommand command; 
 public static string ConnectionString 
 { 
 get 
 { 
 return _connectionString; 
 } 
 set 
 { 
 _connectionString = value; 
 } 
 } 
 public void connect() 
 { 
 connection = new OleDbConnection(_connectionString); 
 } 
 public void disconnect() 
 { 
 connection.Close(); 
 } 
 public IDataReader executeQuery(string sqlString) 
 { 
 command = new OleDbCommand(sqlString, connection); 
 return command.ExecuteReader(); 
 } 
 public void executeNonQuery(string sqlString) 
 { 
 command = new OleDbCommand(sqlString, connection); 
 command.ExecuteNonQuery(); 
 } 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
 public object executeScalar(string sqlString) 
 { 
 command = new OleDbCommand(sqlString, connection); 
 return command.ExecuteScalar(); 
 } 
 } 
} 
e. Xử lý tính toán: 
To lp HocSinhInfo cha các thông tin ca mt hc sinh 
vi ràng buc nghip v tương ng 
Lớp HocSinhInfo chứa các thông tin lưu trữ của một đối tượng học 
sinh. Lớp này chỉ gồm các biến và thuộc tính (hoạt động tương tự như một 
struct). Đây chính là lớp truyền tải dữ liệu giữa tầng giao diện và tầng xử lý 
tính tóan 
using System; 
namespace QLHocSinh 
{ 
 class HocSinhInfo 
 { 
 private string _maHS; 
 private string _tenHS; 
 private string _diachi; 
 private DateTime _ngaysinh; 
 private float _dtb; 
 private string _maLop; 
 public string MaHS 
 { 
 get 
 { 
 return _maHS; 
 } 
 set 
 { 
 if (value == null) 
 throw new Exception("Ma HS khong duoc rong"); 
 _maHS = value; 
 } 
 } 
 public string TenHS 
 { 
 get 
 { 
 return _tenHS; 
 } 
 set 
 { 
 if (value == null) 
 throw new Exception("Ten HS khong duoc rong"); 
 _tenHS = value; 
 } 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
 } 
 public string Diachi 
 { 
 get 
 { 
 return _diachi; 
 } 
 set 
 { 
 _diachi = value; 
 } 
 } 
 public DateTime Ngaysinh 
 { 
 get 
 { 
 return _ngaysinh; 
 } 
 set 
 { 
 _ngaysinh = value; 
 } 
 } 
 public float DTB 
 { 
 get 
 { 
 return _dtb; 
 } 
 set 
 { 
 if (value 10) 
 throw new Exception("DTB phai >=0 va <=10"); 
 _dtb = value; 
 } 
 } 
 public string MaLop 
 { 
 get 
 { 
 return _maLop; 
 } 
 set 
 { 
 _maLop = value; 
 } 
 } 
 } 
} 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
f. Tạo lớp HocSinhCtl để thực hiện các công việc nghiệp vụ: 
Trong mỗi đối tượng HocSinhCtl giữ các đối tượng HocSinhInfo và 
HocSinhData. Thông qua đối tượng HocSinhInfo truyền nhận dữ liệu với 
HocSinhData để thực hiện tương tác với tầng cơ sở dữ liệu. 
 using System; 
namespace QLHocSinh 
{ 
 class HocSinhCtl 
 { 
 private HocSinhInfo info = new HocSinhInfo(); 
 private HocSinhData data = new HocSinhData(); 
 public HocSinhInfo HocSinh 
 { 
 get 
 { 
 return info; 
 } 
 set 
 { 
 info = value; 
 } 
 } 
 public void insert() 
 { 
 data.insert(info.MaHS, info.TenHS, info.Ngaysinh, 
 info.Diachi, info.DTB, info.MaLop); 
 } 
 public void delete() 
 { 
 data.delete(info.MaHS); 
 } 
 public void update() 
 { 
 data.update(info.MaHS, info.TenHS, info.Ngaysinh, 
 info.Diachi, info.DTB, info.MaLop); 
 } 
 } 
} 
Xây dựng phần mềm hướng đối tượng GVHD: Trần Anh Dũng 
g. Thiết kế lại Form “Nhập thông tin học sinh” như màn hình sau: 
5. Bài tập: 
- Hoàn chỉnh tầng giao diện của ứng dụng. (gợi ý: trong tầng giao diện chỉ sử 
dụng các lớp HocSinhCtl, HocSinhInfo) 
- Viết cấu trúc lớp LopInfo để binding danh sách lớp vào combobox. 
- Viết các lớp để xử lý thêm , xóa, sửa Lop 
- … 

File đính kèm:

  • pdfXây dựng phần mềm hướng đối tượng - Hướng dẫn thực hành tuần 7 Thiết kế và xây dựng phần mềm theo mô hình 3 tầng xử lý.pdf
Tài liệu liên quan