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

Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm potx

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.82 MB, 55 trang )

Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
NỘI DUNG THỰC HÀNH
Ngôn ngữ: C#.NET
Môi trường lập trình: Visual studio .NET
Hệ quản trị CSDL: SQL Server.
Đánh giá:
Hình thức: Nộp đồ án (báo cáo + source code của phần mềm) + thi vấn đáp trực tiếp trên máy
dựa trên các đề tài mà giáo viên lý thuyết đề nghị hoặc các em tự đề xuất.
Tiêu chí: Phần mềm của các bạn phải thoả các tính chất sau:
1. Tính đúng đắn
2. Tính tiện dụng
3. Tính hiệu quả
4. Tính tiến hóa
5. Tính bảo mật
Nội dung:
1. Thiết kế dữ liệu: Tạo bảng, khóa, quan hệ.
2. Thiết kế giao diện
a. Màn hình chính + thực đơn
b. Màn hình đăng nhập, thay đổi qui định
c. Màn hình nhập (Danh mục, 1- Nhiều và Nhiều - nhiều)
d. Màn hình tra cứu
3. Kết nối CSDL
4. Debug Chương trình.
5. Cài đặt các hàm xử lý
a. Thêm, Xóa, Cập nhật và Lấy dữ liệu.
b. Tính toán theo nghiệp vụ bài toán.
6. Tạo report (Crystal report)
7. Tạo help
8. Đóng gói chương trình.
Thời gian thực hành:
- Trong 2 tuần đầu giáo viên hướng dẫn sinh viên làm bài tập phần căn bản.


- Trong 6 tuần tiếp theo giáo viên hướng dẫn sinh viên xây dựng phần mềm quản lý thư viện
(các phần tương tự sinh viên tự thực hiện).
- Tuần cuối cùng sinh viên nạp bài và giáo viên hỏi vấn đáp trực tiếp.
1
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Phần 1. bài tập căn bản
Bài 1. Viết chương trình theo yêu cầu sau:
Thực hiện các yêu cầu sau:
- Khi nhấn nút “Tính”, chương trình sẽ giải phương trình bậc 2, và hiển thị kết qủa trong textbox
kết quả X1 hoặc X2.
- Khi nhấn nút “Bỏ qua” các textbox sẽ được xóa trắng, con trỏ sẽ chuyển về textbox A.
- Khi nhấn nút “Thoát” chương trình sẽ kết thúc.
Bài 2. Xây dựng chương trình thao tác với Listbox như sau :
Yêu cầu:
- Chỉ cho nhập số vào textbox Nhập số
- Khi nhập dữ liệu vào textbox Nhập số và nhấn Enter(hoặc click vào Cập Nhật) thì
số mới nhập này được thêm vào Listbox đồng thời dữ liệu trong textbox bị xóa và
focus được chuyển về textbox
- Khi nhấn vào các phím chức năng, yêu cầu sẽ được thực hiện trên listbox
2
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
*Bài 3 (Bài tập làm thêm) : Xây dựng chương trình nhập danh sách sinh viên theo yêu cầu:
Yêu cầu:
- Nút > dùng để di chuyển các mục(còn gọi là item) được chọn từ listbox trái qua
listbox phải và ngược lại cho <
- Nút >> dùng để di chuyển tất cả các mục(kể cả không được chọn) từ listbox trái
qua listbox phải và ngược lại cho <<
- Nút Xóa dùng để xóa nhưng item được chọn trên textbox trái
Bài 4. Xây dựng chương trình thao tác với mảng
Yêu cầu:

- 2 textbox để hiển thị mảng và kết quả, ko được nhập giá trị trực tiếp
3
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
* Bài 5 (Bài tập làm thêm). Xây dựng chương trình xử lý chuỗi sau:
Yêu cầu:
- Khi vừa mở form chỉ có nút Thoát là sử dụng được, textbox nhập dữ liệu nhận
focus
- Khi textbox nhập dữ liệu vừa được nhập thì các nút sáng lên, đồng thời nếu xóa hết
dữ liệu trong textbox nhập thì các nút cũng mờ đi ngoại trừ nút Thoát=> viết trong
sự kiện change của textbox
- Khi các nút chức năng được nhấn thì kết quả sẽ hiển thị bên textbox Kết quả
Hướng dẫn:
Tìm kiếm : Instr(vị trí bắt đầu tìm, chuỗi chứa, chuỗi cần tìm, phân biệt hoa thường hay ko)
Thay thế : Replace(chuỗi chứa, chuỗi tìm, chuỗi thay thế, vị trí bắt đầu, số lần tìm và thay thế,
phân biệt hoa thường) : Trả về chuổi mới đã được thay thế
4
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Bài 6 : Thao tác với listview
STT Tên Control Loại Tên hàm xử lý
1 lsvNhanVien ListView lsvNhanVien_SelectedIndexChanged
2 txtHoTen TextBox
3 dtpNgaySinh DateTimePicker
4 txtDiaChi TextBox
5 txtDienThoai TextBox
6 cboBangCap ComboBox cboBangCap.SelectedValue.ToString()
7 btnThem Button btnThem_Click
8 btnXoa Button btnXoa_Click
9 btnCapNhat Button btnCapNhat_Click
10 btnSua Button btnSua_Click
11 btnHuy Button btnHuy_Click

12 btnThoat Form btnThoat_Click
13 frmNhanVien Form frmNhanVien_Load
Yêu cầu :
Nhập thông tin vào phần “thông tin chi tiết”, khi nhấn các nút lệnh sẽ thực hiện như sau:
1. Nút Thêm : Thêm các thông tin vào listview
Chú ý : kiểm tra thông tin họ tên nhân viên không được rỗng, nếu rỗng thì không cho thêm
2. Nút Xóa : Xóa 1 dòng trên listview (chú ý nếu người dùng chưa chọn 1 dòng trên
listview thì yêu cầu người dùng phải chọn rồi mới xóa)
3. Nút Sửa : Sửa 1 dòng trên listview
5
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
4. Thoát : thoát khỏi chương trình
Khi chọn 1 dòng trên listview thì nội dung của dòng được chọn sẽ được thể hiện trên các ô
“Thông tin chi tiết”
Chú ý : kiểm tra thông tin họ tên nhân viên không được rỗng, nếu rỗng thì không cho thêm
Hướng dẫn :
Bấm vào để hiện ra menu tùy chỉnh của listview, chọn Edit Columns
Thêm các tiêu đề cột cho listview
1. Thiết lập các tham số cho listview
a. FullRowSelect = true;//cho phép chọn 1 dòng
b. View = View.Details;//cho phép hiển thị thông tin chi tiết, bao gồm các
tiêu đề
c. Columns[“Tên Cột”].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
//cho phép tự động resize cột khi nội dung dài
2. Thêm vào 1 dòng cho listview : sử dụng ListViewItem
ListViewItem lvi = lsvNhanVien.Items.Add(txtHoten.Text);
lvi.SubItems.Add(dtpNgaySinh.Value.ToShortDateString());
lvi.SubItems.Add(txtDienThoai.Text);
lvi.SubItems.Add(txtDiaChi.Text);
3. Chọn 1 dòng trên listview : sử dụng sự kiện lsvNhanVien_SelectedIndexChanged

Chú ý : dùng 1 biến index để lưu lại dòng đang chọn
if (lsvNhanVien.SelectedItems.Count > 0)//kiểm tra listview đã có dòng
được chọn hay chưa?
{
6
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
txtHoten.Text = lsvNhanVien.SelectedItems[0].SubItems[0].Text;
dtpNgaySinh.Text = lsvNhanVien.SelectedItems[0].SubItems[1].Text;
txtDienThoai.Text = lsvNhanVien.SelectedItems[0].SubItems[2].Text;
txtDiaChi.Text = lsvNhanVien.SelectedItems[0].SubItems[3].Text;
}
4. Nhấn nút xóa : Dùng phương thức remove hoặc removeAt của listview
if (lsvNhanVien.SelectedItems.Count > 0)//kiểm tra listview đã có dòng được
chọn hay chưa?
{
lsvNhanVien.Items.Remove(lsvNhanVien.SelectedItems[0]);
}
5. Nhấn nút sửa : Cập nhật lại thông tin cho listview
if (lsvNhanVien.SelectedItems.Count > 0)
{
lsvNhanVien.SelectedItems[0].SubItems[0].Text = txtHoten.Text;
lsvNhanVien.SelectedItems[0].SubItems[1].Text =
dtpNgaySinh.Value.ToShortDateString();
lsvNhanVien.SelectedItems[0].SubItems[2].Text = txtDienThoai.Text;
lsvNhanVien.SelectedItems[0].SubItems[3].Text = txtDiaChi.Text;
}

7
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Phần 2. LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU

BÀI 1. LÀM VIỆC VỚI MICROSOFT SQL SERVER 2005 (2008)
• Lưu ý:
o Để cài đặt SQL Server 2005 chạy trên HĐH Window XP các bạn mua version SQL
Server 2005 Developer Edition hoặc sử dụng version SQL Server 2005 Express
Edition kèm theo đĩa cài đặt Visual Studio 2005.
o Để có thể đăng nhập vào SQL Server bằng 2 cách Windows Authentication và SQL
Server Authentication các bạn phải chọn chế độ Mixed Mode khi cài đặt.
• Các bạn xem file “Sams Teach Yourself Microsoft® SQL Server™ 2005 Express in 24
Hours.chm” để học cách cài đặt cũng như làm việc với SQL Server 2005.
1. Tạo Database
• Mở “SQL Server Management Studio” & Kết nối SQL Server: Khi cài đặt các bạn chọn
Mixed Mode thì bây giờ các bạn có thể “Connect to Server” bằng 2 cách: Windows
Authentication và SQL Server Authentication. Trong bài tập, chúng ta sẽ sử dụng chế độ
Windows Authentication để dễ dàng thực hiện, tuy nhiên trong thực tế, các bạn phải luôn
luôn chọn SQL Server Authentication để tăng độ bảo mật cho Phần mềm.
• Database có sơ đồ như sau :
8
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Lệnh SQL để tạo Database
CREATE DATABASE QLTHUVIEN
USE QLTHUVIEN
GO
Tạo bảng Tham số
CREATE TABLE [THAMSO](
[TenThamSo] [nvarchar](40) NOT NULL,
[GiaTri] [int] NULL,
CONSTRAINT [PK_THAMSO] PRIMARY KEY (TenThamSo)
)
Tạo bảng Bằng cấp
CREATE TABLE [BANGCAP](

[MaBangCap] int Identity(1,1),
[TenBangCap] [nvarchar](40) NULL,
CONSTRAINT [PK_BANGCAP] PRIMARY KEY (MaBangCap)
)
Tạo bảng Nhân viên
CREATE TABLE [NHANVIEN](
[MaNhanVien] int Identity(1,1),
[HoTenNhanVien] [nvarchar](50) NULL,
[NgaySinh] [datetime] NULL,
[DiaChi] [nvarchar](50) NULL,
[DienThoai] [nvarchar](15) NULL,
[MaBangCap] [int] NULL,
CONSTRAINT [PK_NHANVIEN] PRIMARY KEY (MaNhanVien)
)
Tạo bảng Độc giả
9
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
CREATE TABLE [DOCGIA](
[MaDocGia] int Identity(1,1),
[HoTenDocGia] [nvarchar](40) NULL,
[NgaySinh] [datetime] NULL,
[DiaChi] [nvarchar](50) NULL,
[Email] [nvarchar](30) NULL,
[NgayLapThe] [datetime] NULL,
[NgayHetHan] [datetime] NULL,
[TienNo] [float] NULL,
CONSTRAINT [PK_DOCGIA_1] PRIMARY KEY (MaDocGia)
)
Tạo bảng Phiếu thu tiền
CREATE TABLE [PHIEUTHUTIEN](

[MaPhieuThuTien] int Identity(1,1),
[SoTienNo] [float] NULL,
[SoTienThu] [float] NULL,
[MaDocGia] [int] NULL,
[MaNhanVien] [int] NULL,
CONSTRAINT [PK_PHIEUTHUTIEN] PRIMARY KEY (MaPhieuThuTien)
)
Tạo bảng Sách
CREATE TABLE [SACH](
[MaSach] int Identity(1,1),
[TenSach] [nvarchar](40) NULL,
[TacGia] [nvarchar](30) NULL,
[NamXuatBan] [int] NULL,
[NhaXuatBan] [nvarchar](40) NULL,
[TriGia] [float] NULL,
[NgayNhap] [datetime] NULL,
CONSTRAINT [PK_SACH] PRIMARY KEY (MaSach)
)
Tạo bảng Phiếu mượn sách
CREATE TABLE [PHIEUMUONSACH](
[MaPhieuMuon] int Identity(1,1),
[NgayMuon] [datetime] NOT NULL,
[MaDocGia] [int] NULL,
CONSTRAINT [PK_PHIEUMUONSACH] PRIMARY KEY (MaPhieuMuon)
)
Tạo bảng Chi tiết phiếu mượn
CREATE TABLE [CHITIETPHIEUMUON](
[MaSach] [int] NOT NULL,
[MaPhieuMuon] [int] NOT NULL,
CONSTRAINT [PK_CHITIETPHIEUMUON] PRIMARY KEY (MaSach,MaPhieuMuon)

)
Tạo khoá ngoại
ALTER TABLE [NHANVIEN] WITH NOCHECK ADD CONSTRAINT [FK_NHANVIEN_BANGCAP] FOREIGN
KEY([MaBangCap])
REFERENCES [BANGCAP] ([MaBangCap])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [NHANVIEN] CHECK CONSTRAINT [FK_NHANVIEN_BANGCAP]
GO
ALTER TABLE [PHIEUTHUTIEN] WITH CHECK ADD CONSTRAINT [FK_PHIEUTHUTIEN_DOCGIA]
FOREIGN KEY([MaDocGia])
REFERENCES [DOCGIA] ([MaDocGia])
GO
ALTER TABLE [PHIEUTHUTIEN] CHECK CONSTRAINT [FK_PHIEUTHUTIEN_DOCGIA]
GO
ALTER TABLE [PHIEUTHUTIEN] WITH CHECK ADD CONSTRAINT [FK_PHIEUTHUTIEN_NHANVIEN]
FOREIGN KEY([MaNhanVien])
REFERENCES [NHANVIEN] ([MaNhanVien])
10
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [PHIEUTHUTIEN] CHECK CONSTRAINT [FK_PHIEUTHUTIEN_NHANVIEN]
GO
ALTER TABLE [PHIEUMUONSACH] WITH CHECK ADD CONSTRAINT [FK_PHIEUMUONSACH_DOCGIA]
FOREIGN KEY([MaDocGia])
REFERENCES [DOCGIA] ([MaDocGia])
ON UPDATE CASCADE

ON DELETE CASCADE
GO
ALTER TABLE [PHIEUMUONSACH] CHECK CONSTRAINT [FK_PHIEUMUONSACH_DOCGIA]
GO
ALTER TABLE [CHITIETPHIEUMUON] WITH CHECK ADD CONSTRAINT
[FK_CHITIETPHIEUMUON_PHIEUMUONSACH] FOREIGN KEY([MaPhieuMuon])
REFERENCES [PHIEUMUONSACH] ([MaPhieuMuon])
GO
ALTER TABLE [CHITIETPHIEUMUON] CHECK CONSTRAINT
[FK_CHITIETPHIEUMUON_PHIEUMUONSACH]
GO
ALTER TABLE [CHITIETPHIEUMUON] WITH CHECK ADD CONSTRAINT
[FK_CHITIETPHIEUMUON_SACH] FOREIGN KEY([MaSach])
REFERENCES [SACH] ([MaSach])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [CHITIETPHIEUMUON] CHECK CONSTRAINT [FK_CHITIETPHIEUMUON_SACH]
2. Nhập dữ liệu cho các bảng:
a. Cách 1: Thực hiện câu lệnh Insert
insert into BANGCAP values(N'TIẾN SĨ')
insert into BANGCAP values(N'THẠC SĨ')
insert into BANGCAP values(N'ÐẠI HỌC')
insert into BANGCAP values(N'CAO ÐẲNG')
insert into BANGCAP values(N'TRUNG CẤP')
insert into NHANVIEN values(N'PHẠM ĐÀO MINH VŨ','01/24/1980',N'163/30 Thành
Thái F.14 Q.10 TPHCM','0905646162',1)
insert into NHANVIEN values(N'NGUYỄN MINH THÀNH','04/05/1983',N'41/4 CALMETTE
Q1 TPHCM','0908373612',2)
insert into NHANVIEN values(N'NGUYỄN HÀ MY','04/13/1985',N'178 NAM KỲ KHỞI

NGHĨA Q4 TPHCM','0908783274',3)
insert into DOCGIA values(N'NGUYỄN HOÀNG MINH','02/23/1990',N'41/4 CALMETTE
Q1 TPHCM',N'','12/30/2000','12/30/2012',0)
insert into DOCGIA values(N'TRẦN VÃN CHÂU','08/29/1992',N'TRẦN HÝNG ÐẠO Q1
TPHCM',N'','11/22/2001','11/22/2013',0)
insert into SACH values(N'NHAP MON CNPM',N'PHẠM ÐÀO MINH VŨ',2007,N'NXB THỐNG
KÊ',70000,'12/18/2008')
insert into SACH values(N'KỸ THUẬT LẬP TRÌNH',N'TRẦN MINH THÁI',2005,N'NXB
GIÁO DỤC',50000,'02/12/2006')
insert into SACH values(N'CÔNG NGHỆ WEB',N'PHẠM ÐÀO MINH VŨ',2009,N'NXB
TRẺ',90000,'12/01/2009')
• Làm tương tự cho các bảng còn lại dựa theo file QLThuVien.mdb đính kèm.
11
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
• Chú ý : Chúng ta luôn luôn sử dụng lệnh để tạo Database và Dữ liệu phòng khi có
vấn đề thì ta sẽ nhanh chóng tạo dựng lại được
b. Cách 2:
• Tạo database QLThuVien mới (rỗng).
• Right click lên database ThuVien chọn Task\Import Data…
• Chọn Data Source, File name và click Next.
• Chọn Destination, Server name (nếu bạn dùng máy local có thể đánh vào dấu ‘.’)
Connect bằng Windows hay SQL Server Authentication là tuỳ bạn và click Next.
12
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
• Chọn Copy data from…click Next.
• Chọn Select All…và click Next.
• Click Next, Finish.
13
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
• Kết quả như sau:

3. Backup & Restore Database:
Việc mang 1 database từ máy này sang máy khác rất thường xuyên xảy ra (ví dụ: chép
bài từ trường về nhà và chép bài từ nhà lên trường,…). Có 2 cách để làm việc này:
1. Attach database:
a. Chép 2 file :
C:\Program files\Microsoft SQL Server\MSSQL.1\Data\QLThuVien.mdf
C:\Program files\Microsoft SQL Server\MSSQL.1\Data\QLThuVien_log.ldf
b. Attach 2 file trên vào SQL Server khác (máy khác).
2. Backup & Restore
• Backup:
o Right click lên database QLThuVien cần backup, chọn Task\Back Up…
14
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
o SQL Server sẽ mặc định backup database thư viện vào file ThuVien.bak theo
đường dẫn mặc định sau: C:\Program files\Microsoft SQL
Server\MSSQL.1\Backup\QLThuVien.bak
o Nhấn Ok để backup, sau đó chép file ThuVien.bak sang máy mới (SQL Server
khác) để Restore.
o Trong trường hợp muốn back up với 1 đường dẫn khác thì remove đường dẫn
trên và Add lại đường dẫn mới muốn back up đến.
• Restore:
o Đầu tiên tạo database QLThuVien trong SQL Management Studio
o Right click lên database vừa tạo, chọn Task\Restore\Database
15
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
o Chọn From device chỉ đến file QLThuVien.bak
16
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
17
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm

18
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Bài 2. GIAO TIẾP CƠ SỞ DỮ LIỆU
Bài 2.1. Giao tiếp CSDL với mô hình 1 lớp
Để load thông tin của nhân viên từ table NHANVIEN cũng như là thêm, cập nhật, xóa,
thì ta cần thực hiện như sau :
public partial class frmNhanVien : Form
{
SqlConnection sqlConn;//khai báo biến connection
SqlDataAdapter da; //khai báo biến dataAdapter
DataSet ds = new DataSet();//khai báo 1 dataset
public string srvName = "MINHVU-PC\\SQLEX"; //chỉ định tên server
public string dbName = "QLTHUVIEN";//chỉ định tên CSDL
void KetnoiCSDL()//thực hiện kết nối bằng chuỗi kết nối
{
string connStr = "Data source=" + srvName + ";database=" + dbName +
";Integrated Security = True";
sqlConn = new SqlConnection(connStr);
}
DataTable layDanhSachNhanVien()//lấy danh sách nhân viên
{
string sql = "Select * from NhanVien";
da = new SqlDataAdapter(sql, sqlConn);
da.Fill(ds);
return ds.Tables[0];
}
19
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
void LoadListview()
{

lsvNhanVien.FullRowSelect = true;//cho phép chọn 1 dòng
lsvNhanVien.View = View.Details;//cho phép hiển thị thông tin chi
tiết, bao gồm các tiêu đề
DataTable dt = layDanhSachNhanVien();
for (int i = 0; i < dt.Rows.Count; i++)
{
ListViewItem lvi = lsvNhanVien.Items.Add(dt.Rows[i]
["Hotennhanvien"].ToString());//dòng thứ i, tên cột là nhân viên
lvi.SubItems.Add(dt.Rows[i][2].ToString());//dùng chỉ số cột :
dòng thứ i,cột thứ 1
lvi.SubItems.Add(dt.Rows[i][4].ToString());
lvi.SubItems.Add(dt.Rows[i][3].ToString());
}
}
private void btnThem_Click(object sender, EventArgs e)
{
string sql = string.Format("insert into NhanVien values({0},{1},{2},
{3},{4},{5})", txtHoten.Text, dtpNgaySinh.Value.ToShortDateString, txtDiaChi.Text,
txtDienThoai.Text, 1);
SqlCommand cmd = new SqlCommand(sql, sqlConn);
cmd.ExecuteNonQuery();
}
….
Qua đây, chúng ta thấy rằng khi dùng mô hình 1 lớp kết nối CSDL thì không có sự phân
loại trong khi cài đặt. Code xử lý lưu trữ sql, code xử lý nghiệp vụ và code xử lý thể
hiện nằm chung với nhau, làm chương trình rất khó quản lý.
Để khắc phục các nhược điểm trên, chúng ta chuyển sang mô hình 3 lớp
20
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Bài 3.2. Giao tiếp CSDL với mô hình 3 lớp

Ta xây dựng 3 lớp như sau cho NHANVIEN:
1. Lớp chuyên xử lý thao tác trên CSDL : Database.cs
2. Lớp xử lý nghiệp vụ : NhanVien.cs
3. Lớp xử lý giao diện : frmNhanVien.cs
Bước 1: Xây dựng lớp giao tiếp CSDL Database.cs
1. Chức năng
• Lớp Database đảm nhiệm việc giao tiếp với cơ sở dữ liệu cho toàn ứng dụng. Tất cả việc
tương tác với CSDL dữ liệu diễn ra ở bất cứ nơi nào trong ứng dụng đều được thực hiện
thông qua lớp này.
2. Mục đích
• Sỡ dĩ chúng ta phải xây dựng lớp này là nhằm mang lại tính dễ bảo trì cũng như tính tiến
hóa cho hệ thống. Nếu sau này cần thay đổi môi trường ứng dụng (sang Oracle, Access,
Db2 ) thì chúng ta chỉ việc chỉnh sửa lớp Database này mà không cần quan tâm đến phần
còn lại của ứng dụng.
• Lớp Database gồm có các thành phần sau:
Thuộc tính Ý nghĩa
sqlconn Thuộc lớp SqlConnection
Phương thức Ý nghĩa
Database Hàm khởi tạo (Constructor)
Execute Thực thi một câu lệnh truy vấn và
trả về kết quả là một DataTable.
Dùng cho các câu lệnh Select *
From
ExecuteNonQuery Thực thi một câu lệnh truy vấn
không quan tâm đến kết quả
trả về. Dùng cho các câu lệnh
Insert, Delete, Update
• Right-Click project ThuVien, chọn Add  Class…
21
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm

• Nhập vào tên lớp là Database.cs và click Add.
• Viết code cho Database.cs như sau:
• C#.NET
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient; //SqlConnection,
using System.Data;//DataSet, DataTable,
namespace ThuVien
{
class Database
{
//Thuộc tính
SqlConnection sqlconn;
DataSet ds;
SqlDataAdapter da;
22
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
//Contructor khởi tạo
public Database(string svrName, string dbName, bool intergratedMode, string
usrName, string pwd)
{
string connStr;
if (intergratedMode == true)
{
//Đăng nhập SQL Server sử dụng Windows Authentication Mode.
connStr = "server=" + svrName + "; database=" + dbName + "; Integrated
Security = True";
}
else

{
//Đăng nhập SQL Server sử dụng SQL Server Authentication Mode.
connStr = "server=" + svrName + "; uid=" + usrName + "; pwd=" + pwd +
" ;database=" + dbName;
}
//Câu lệnh dùng để thiết lập kết nối đến SQL Server là ˜server=tên_svr;
database = tên_db;Integrated Security = True˜ hay ˜server=tên_svr; database = tên_db;
uid = tên_đăng_nhập;pwd = mật_khẩu; database = tên_db˜.
sqlconn = new SqlConnection(connStr);
}
public DataTable Execute(string strQuery)
{
//Câu lệnh này tạo mới một đối tượng SqlDataAdapter và
//cung cấp cho nó câu truy vấn cùng với kết nối hiện hành
da = new SqlDataAdapter(strQuery, sqlconn);
//DataSet đại diện cho một danh sách các DataTable (mỗi DataTable là 1
bảng dữ liệu)
ds = new DataSet();
//Dùng SqlDataAdapter đã tạo ra ở trên thực thi câu lệnh truy vấn đã cung cấp,
//và đưa kết quả trả về và ds
da.Fill(ds);
//Chúng ta chỉ lấy bảng đầu tiên
return ds.Tables[0];
}
public void ExecuteNonQuery(string strquery)
{
//SqlCommand là đối tượng chuyên đảm nhận việc thực hiện các câu lệnh truy
vấn
SqlCommand sqlcom = new SqlCommand(strquery, sqlconn);
sqlconn.Open(); //Mở kết nối

sqlcom.ExecuteNonQuery(); //Thực hiện câu lệnh truy vấn đã cung cấp ở trên
sqlconn.Close(); //Đóng kết nối
}
public void Update(string strQuery, DataTable table)
{
//Cập nhật 1 Datatable xuống CSDL
da = new SqlDataAdapter(strQuery, sqlconn);
SqlCommandBuilder sqlcb = new SqlCommandBuilder(da);
da.Update(table);
}
}
}
23
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Bước 2 : Xây dựng các màn hình danh mục
• Bước 2.1 : Viết lớp xử lý nghiệp vụ cho Nhân viên : Nhanvien.cs
NhanVien.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace QLThuVien
{
class NhanVien
{
Database db;
public NhanVien()
{
db = new Database(frmMDI.srvName, frmMDI.dbName,

frmMDI.IntergratedMode, frmMDI.userName, frmMDI.passWord);
}
//Lấy danh sách tất cả nhân viên
public DataTable LayDSNhanVien()
{//Trả về thông tin nhân viên và tên bằng cấp của nhân viên đó
return db.Execute("Select
Manhanvien,Hotennhanvien,ngaysinh,diachi,dienthoai,tenbangcap from NhanVien
n,bangcap b where n.MaBangCap=b.MaBangCap");
}
//Lấy danh sách bằng cấp->nạp vào combobox
public DataTable LayDSBangCap()
{
return db.Execute("select * from BangCap");
}
//Thêm 1 nhân viên mới
public void ThemNhanVien(string ten, string ngaysinh, string diachi, string
dienthoai, string index_bc)
{
string sql = string.Format("Insert Into NhanVien
Values(N'{0}','{1}',N'{2}','{3}',{4})",ten,ngaysinh,diachi,dienthoai,index_bc);
db.ExecuteNonQuery(sql);
}
//Xóa 1 nhân viên
public void XoaNhanVien(string index_nv)
{
string sql = "Delete from NhanVien where MaNhanVien = " + index_nv;
db.ExecuteNonQuery(sql);
}
//Cập nhật nhân viên
public void CapNhatNhanVien(string index_nv, string hoten, string ngaysinh,

string diachi, string dienthoai, string index_bc)
{
//Chuẩn bị câu lẹnh truy vấn
24
Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
string str = string.Format("Update NHANVIEN set HoTenNhanVien = N'{0}',
NgaySinh ='{1}',diachi = N'{2}', dienthoai = '{3}', MaBangCap = {4} where
MaNhanVien = {5}",hoten,ngaysinh,diachi,dienthoai,index_bc, index_nv);
db.ExecuteNonQuery(str);
}
}
}
• Bước 2.2 : Viết lớp xử lý giao diện cho frmNhanVien.cs
Thiết kế giao diện như sau, đặt tên là frmNhanVien
Xử lý Code cho frmNhanVien :
namespace QLThuVien
{
public partial class frmNhanVien : Form
{
NhanVien nv;//lớp xử lý nghiệp vụ nhân viên
DataTable dt;
bool themmoi = true;//=true là thêm mới, =false là cập nhật
public frmNhanVien()
{
InitializeComponent();
nv = new NhanVien();
dt = new DataTable();
}
25

×