Tải bản đầy đủ (.pdf) (60 trang)

Bài tập thực hành Công nghệ phần mềm

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 (3.89 MB, 60 trang )

Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

NỘI DUNG THỰC HÀNH
 Ngôn ngữ: C#.NET
 Mơi trường lập trình: Visual studio .NET 2005/2008/2010
 Hệ quản trị CSDL: SQL Server 2005/2008
 Lịch trình thực hành (30 tiết):


Trong 6 tiết đầ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 18 tiết tiếp theo giáo viên hướng dẫn sinh viên làm từng bước 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).



Phần bài tập về nhà, sinh viên tự thực hành ở nhà



6 tiết cuối cùng sinh viên nộp đề tài và giáo viên vấn đáp trực tiếp.

 Đánh giá:
Nộp đồ án môn học (source code của phần mềm) + 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 sinh viên tự đề xuất.
Mỗi nhóm đăng ký 1 đề tài, số lượng sinh viên trong một nhóm: 2SV
Yêu cầu:
1. Thiết kế dữ liệu: Tạo bảng, khóa, quan hệ.
2. Thiết kế giao diện


-

Màn hình chính + thực đơn

-

Màn hình đăng nhập, thay đổi qui định

-

Màn hình nhập (Danh mục, 1- Nhiều và Nhiều - nhiều)

-

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 tốn theo nghiệp vụ bài tốn.
6. Tạo report (Crystal report)
7. Tạo help
8. Đóng gói chương trình.
DANH SÁCH ĐỀ TÀI GỢI Ý
***
1. Phần mềm quản lý học sinh cấp 3.
2. Phần mềm quản lý nhà sách (bán sách).
3. Phần mềm quản lý khách sạn.
4. Phần mềm quản lý nhà hàng-bar.

Giảng viên ThS. Dương Thành Phết -

Trang 1/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

5. Phần mềm quản lý phòng mạch tư.
6. Phần mềm quản lý sổ tiết kiệm.
7. Phần mềm quản lý giải vơ địch bóng đá.
8. Phần mềm quản lý bán vé chuyến bay.
9. Phần mềm quản lý các đại lý.
10. Phần mềm quản lý Gaga ô tô.
11. Phần mềm quản lý Tiệc cưới.
12. Phần mềm quản lý thu tiền điện.
13. Phần mềm quản lý chuyến du lịch
14. Phần mềm quản lý tuy n sinh đại học.
15. Phần mềm quản lý trư ng mẫu giáo
16. Phần mềm quản lý nhân sự
17. Phần mềm quản lý bán hàng
18. Phần mềm quản gia
19. Phần mềm quản lý cổ đông
20. Phần mềm cây gia phả.
21. Phần mềm thi tr c nghiệm
22. Phần mềm quản lý trung tâm tin học ngoại ngữ
23. Phần mềm quản lý đào tạo trư ng TC chuyên nghiệp.
Ghi chú: Tất cả các phần mềm trên hiện đã có trên thị trư ng, một số cho download về dùng
thử. Sinh viên nên sử dụng google tìm kiếm download về tham khảo.

Giảng viên ThS. Dương Thành Phết -


Trang 2/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Phần 1. BÀI TẬP CƠ BẢN
Bài tập 1. Viết chương trình theo yêu cầu sau:

Thực hiện các u cầu sau:
- Khi nhấn nút “Tính”, chương trình sẽ giải và biện luận phương trình bậc 2, và hiện thị kết quả
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 “Thốt” chương trình sẽ kết thúc (có hỏi trước khi thoát).
- 2 Textbox X1, X2 dùng đ hiện thị kết quả ngư i dùng không được thao tác dữ liệu
- Có ki m tra giá trị nhập cho A, B, C là số nguyên.
Bài tập 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

Giảng viên ThS. Dương Thành Phết -


Trang 3/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Bài tập 3. 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:
-

-

Khi nhập dữ liệu vào Textbox Họ và tên và nhấn Enter(hoặc click vào Cập Nhật) thì dữ
liệu 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
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 tập 4. Xây dựng chương trình thao tác với mảng

Yêu cầu:
-

-

Chỉ cho nhập số nguyên vào textbox Nhập số nguyên

Khi nhập dữ liệu vào Textbox Nhập số nguyên và nhấn Enter(hoặc click vào Nhập) thì
số mới nhập này được thêm vào Textbox nhập mảng đồng th i dữ liệu trong Textbox
Nhập số nguyên bị xóa và focus được chuy n về Textbox nhập số nguyên.
2 Textbox đ hi n thị mảng và kết quả, không được nhập giá trị trực tiếp

Giảng viên ThS. Dương Thành Phết -

Trang 4/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Bài tập 5. 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 Nhập dữ liệu.
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 khơng)
 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ế


Giảng viên ThS. Dương Thành Phết -

Trang 5/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Bài tập 6. Thao tác với listview

Tên Control
lsvNhanVien

Loại
ListView

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

STT
1

Tên hàm xử lý
lsvNhanVien_SelectedIndexChanged

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)
Giảng viên ThS. Dương Thành Phết -

Trang 6/60



Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

3. Nút Sửa: Sửa 1 dòng trên listview (cập nhật dữ liệu trên các Thông tin chi tiết vào
listview)
4. Thốt: Thốt khỏi chương trình (có hỏi trước khi thốt)
5. 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, sửa.
Hướng dẫn :
- Tạo mới Listview
-

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

Giảng viên ThS. Dương Thành Phết -

Trang 7/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

if (lsvNhanVien.SelectedItems.Count > 0)
//ki m tra listview đã có dịng được chọn hay chưa?
{
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;
}


Giảng viên ThS. Dương Thành Phết -

Trang 8/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Phần 2. LẬP TRÌNH CƠ SỞ DỮ LIỆU
Bài tập 1. Làm việc với hệ quản trị CSDL Microsoft SQL Server 2005 /2008
 Lưu ý:
 Đ có th đăng nhập vào SQL Server bằng 2 cách Windows Authentication và SQL Server
Authentication khi cài đặt phải chọn chế độ Mixed Mode.

1. Tạo Database QLThuvien có sơ đồ như sau :

Giảng viên ThS. Dương Thành Phết -

Trang 9/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

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)
)
GO
--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)
)
GO
--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)
)
GO
--Tạo bảng Độc giả
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)
)
GO
--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)
)
GO
--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)

Giảng viên ThS. Dương Thành Phết -

Trang 10/60



Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành
)
GO
--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)
)
GO
--Tạo khoá ngoại
GO
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])
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]

Giảng viên ThS. Dương Thành Phết -

Trang 11/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

2. Nhập dữ liệu cho các bảng: Thực hiện câu lệnh Insert
USE ThuVien
GO
---Nhap lieu
insert into BANGCAP
insert into BANGCAP
insert into BANGCAP
insert into BANGCAP
insert into BANGCAP

values(N'TIẾN SĨ')
values(N'THẠC SĨ')
values(N'ĐẠI HỌC')
values(N'CAO ĐẲNG')
values(N'TRUNG CẤP')

insert into NHANVIEN values(N'PHẠM 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 DOCGIA values(N'NGUYỄN HỒNG NAM','02/21/1980',N'4 TRẦN ĐÌNH HƯNG
Q1 TPHCM',N'','12/22/2001','12/30/2012',150000)
insert into DOCGIA values(N'TRẦN THANH PHÚC','08/19/1993',N'TRƯƠNG ĐỊNH Qtb
TPHCM',N'','08/09/2001','11/22/2013',50000)
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')

Chú ý: Chúng ta nên sử dụng lệnh đ tạo Database và nhập liệu vì đây là phương pháp hiệu quả và
thuận lợi nhất.

Giảng viên ThS. Dương Thành Phết -

Trang 12/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

3. Các thao tác Quản trị CSDL.

a. Import CSDL từ CSDL trong file Access:
 Tạo database 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.

Giảng viên ThS. Dương Thành Phết -

Trang 13/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

- Chọn Copy data from…click Next.

- Chọn Select All…và click Next.

- Click Next, Finish.

- Kết quả như sau:

Giảng viên ThS. Dương Thành Phết -

Trang 14/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành


b. 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:
Cách 1: Attach database:
- 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
- Attach 2 file trên vào SQL Server khác (máy khác).
Cách 2: Backup & Restore
- Backup:


Right click lên database QLThuVien cần backup, chọn Task\Backup…



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



Nhấn Ok đ backup, sau đó chép file ThuVien.bak sang máy mới (SQL Server
khác) đ Restore.



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.


Giảng viên ThS. Dương Thành Phết -

Trang 15/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

- Restore:


Đầu tiên tạo database QLThuVien trong SQL Management Studio



Right click lên database vừa tạo, chọn Task\Restore\Database



Chọn From device chỉ đến file QLThuVien.bak

Giảng viên ThS. Dương Thành Phết -

Trang 16/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Giảng viên ThS. Dương Thành Phết -


Trang 17/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Giảng viên ThS. Dương Thành Phết -

Trang 18/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

Bài tập 2. Giao tiếp cơ sở dữ liệu 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, sửa, 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 = "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];
}
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++)
{
Giảng viên ThS. Dương Thành Phết -

Trang 19/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

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
Bài tập 3. Giao tiếp cơ sở dữ liệu với mô hình 3 lớp
Ta xây dựng 3 lớp như sau cho NHANVIEN:
1. Lớp thao tác 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 thao tác CSDL Database.cs
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.
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
sqlconn
Phư ng thức
Database
Execute
ExecuteNonQuery

Ý ngh a
Thuộc lớp SqlConnection
Ý ngh a
Hàm khởi tạo (Constructor)
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 ...
Thực thi một câu lệnh không quan tâm đến kết quả trả
về. Dùng cho các câu lệnh Insert, Delete, Update ...

Giảng viên ThS. Dương Thành Phết -

Trang 20/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

- Right-Click project ThuVien, chọn Add  Class…

- Nhập vào tên lớp là Database.cs và click Add.

- Viết code cho Database.cs như sau:
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;
//Contructor khởi tạo
public Database(string svrName, string dbName, bool intergratedMode, string usrName, string pwd)
{

Giảng viên ThS. Dương Thành Phết -

Trang 21/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành
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 đả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);
}
}
}

Bước 2 : Xây dựng lớp xử lý nghiệp vụ cho Nhân viên: Nhanvien.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

Giảng viên ThS. Dương Thành Phết -

Trang 22/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành
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
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);
}
}
}

Giảng viên ThS. Dương Thành Phết -

Trang 23/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành

 Bước 3: Xây dựng 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();
}
private void frmNhanVien_Load(object sender, EventArgs e)
{
HienThiDanhSachNV();
LoadDSBangCap();
setButton(true);
}
//thiết lập các nút trên form
public void setButton(bool value)
{
btnThem.Enabled = value;
btnXoa.Enabled = value;
btnSua.Enabled = value;
btnLuu.Enabled = !value;

Giảng viên ThS. Dương Thành Phết -

Trang 24/60


Bài tập thực hành Công nghệ phần mềm – Đại học Nguyễn Tất Thành
btnHuy.Enabled = !value;

btnThoat.Enabled = value;
}
//Xóa dữ liệu trên form
void clearForm()
{
txtHoten.Text = "";
txtDiaChi.Text = "";
dtpNgaySinh.Value = DateTime.Now;
txtDienThoai.Text = "";
cboBangCap.SelectedIndex = 0;
}
//Nạp danh sách bằng cấp vào combobox cboBangCap
public void LoadDSBangCap()
{
DataTable dt_bc = nv.LayDSBangCap();
//Việc lấy dữ liệu được ủy nhiệm cho biến thuộc lớp xử lý (
//lớp NhanVien) chứ không trực tiếp thực hiện ở đây
//Nạp dữ liệu lên combobox
cboBangCap.DataSource = dt_bc;
cboBangCap.DisplayMember = "TenBangCap";
cboBangCap.ValueMember = "MaBangCap";
if (cboBangCap.Items.Count > 0)
cboBangCap.SelectedIndex = 0;
}
//Hi n thị danh sách nhân viên lên Listview
public void HienThiDanhSachNV()
{
dt = nv.LayDSNhanVien();
lsvNhanVien.Items.Clear();
lsvNhanVien.View = View.Details;

for (int i = 0; i < dt.Rows.Count; i++)
{
ListViewItem lvi;
lvi = lsvNhanVien.Items.Add(dt.Rows[i]["MaNhanVien"].ToString());
lvi.SubItems.Add(dt.Rows[i]["Hotennhanvien"].ToString());
lvi.SubItems.Add(dt.Rows[i][2].ToString());
lvi.SubItems.Add(dt.Rows[i][3].ToString());
lvi.SubItems.Add(dt.Rows[i][4].ToString());
lvi.SubItems.Add(dt.Rows[i][5].ToString());
}
}
//khi nhấn vào nút thêm
private void btnThem_Click(object sender, EventArgs e)
{
themmoi = true;
setButton(false);
txtHoten.Focus();
}
//Sự kiện khi chọn 1 dịng trên Listview thì nội dung của dịng đó
//sẽ được nạp lên FORM
private void lsvNhanVien_SelectedIndexChanged(object sender, EventArgs e)
{
if (lsvNhanVien.SelectedIndices.Count > 0)
{
txtHoten.Text = lsvNhanVien.SelectedItems[0].SubItems[1].Text;
dtpNgaySinh.Value =

Giảng viên ThS. Dương Thành Phết -

Trang 25/60



×