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.. Xây dựng chương trình thao tác với Lis
Trang 1 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
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 toán theo nghiệp vụ bài toán
6 Tạo report (Crystal report)
Trang 25 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
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
Trang 3Phầ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 yê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 “Thoá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
Trang 4Bà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
Trang 5Bà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ế
Trang 6Bài tập 6 Thao tác với listview
STT Tên Control Loại Tên hàm xử lý
1 lsvNhanVien ListView lsvNhanVien_SelectedIndexChanged
3 dtpNgaySinh DateTimePicker
4 txtDiaChi TextBox
5 txtDienThoai TextBox
6 cboBangCap ComboBox cboBangCap.SelectedValue.ToString()
9 btnCapNhat Button btnCapNhat_Click
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)
Trang 73 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 Thoát: Thoát khỏi chương trình (có hỏi trước khi thoá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
Trang 8lsvNhanVien.SelectedItems[0].SubItems[2].Text = txtDienThoai.Text;
lsvNhanVien.SelectedItems[0].SubItems[3].Text = txtDiaChi.Text;
}
Trang 10
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( , ),
[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( , ),
[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( , ),
[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( , ),
[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( , ),
[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 )
Trang 11)
GO
Tạo bảng Phiếu mượn sách
CREATE TABLE [PHIEUMUONSACH] (
[MaPhieuMuon] int Identity( , ),
[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 )
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] )
ALTER TABLE [PHIEUMUONSACH] WITH CHECK ADD CONSTRAINT [FK_PHIEUMUONSACH_DOCGIA]
FOREIGN KEY( [MaDocGia] )
REFERENCES [DOCGIA] [MaDocGia] )
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] )
Trang 122 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 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 MINH VŨ','01/24/1980',N'163/30 Thành Thái
Trang 133 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
Trang 14- Chọn Copy data from…click Next
- Chọn Select All…và click Next
- Click Next, Finish
- Kết quả như sau:
Trang 15b 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
Trang 16- 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
Trang 19Bà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 :
publicpartialclassfrmNhanVien : Form
{
SqlConnection sqlConn; //khai báo biến connection
SqlDataAdapter da; //khai báo biến dataAdapter
DataSet ds = newDataSet(); //khai báo 1 dataset
publicstring srvName = "PC\\SQLEX"; //chỉ định tên server
publicstring 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 = newSqlConnection(connStr);
}
DataTable layDanhSachNhanVien() /lấy danh sách nhân viên
{
string sql = "Select * from NhanVien";
da = newSqlDataAdapter(sql, sqlConn);
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++)
{
Trang 20ListViewItem lvi = lsvNhanVien.Items.Add(dt.Rows[i]["Hotennhanvien"].ToString());
//dòng thứ i, tên cột là nhân viên
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 = newSqlCommand(sql, sqlConn);
Đ 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
Trang 21- 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,
//Contructor khởi tạo
public Database( string svrName, string dbName, bool intergratedMode, string usrName, string pwd) {
Trang 22string 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*/
//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)
//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);
da = new SqlDataAdapter (strQuery, sqlconn);
SqlCommandBuilder sqlcb = new SqlCommandBuilder (da);
Trang 23db = 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)
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);
}
}
}
Trang 24 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:
//thiết lập các nút trên form
public void setButton( bool value)
Trang 25//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
//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());
//khi nhấn vào nút thêm
private void btnThem_Click( object sender, EventArgs e)
//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)
Trang 26DateTime Parse(lsvNhanVien.SelectedItems[0].SubItems[2].Text); txtDiaChi.Text = lsvNhanVien.SelectedItems[0].SubItems[3].Text;
txtDienThoai.Text = lsvNhanVien.SelectedItems[0].SubItems[4].Text;
cboBangCap.SelectedIndex =
cboBangCap.FindString(lsvNhanVien.SelectedItems[0].SubItems[5].Text); }
}
//Xóa 1 dòng trên listview
private void btnXoa_Click( object sender, EventArgs e)
{
if (lsvNhanVien.SelectedIndices.Count > 0)
{
DialogResult dr = MessageBox Show( "Bạn có ch c xóa không?" ,
"Xóa bằng cấp" , MessageBoxButtons YesNo, MessageBoxIcon Question);
//Khi thực hiện lưu thông tin xuống CSDL
private void btnLuu_Click( object sender, EventArgs e)
{
string ngay = String Format( "{0:MM/dd/yyyy}" , dtpNgaySinh.Value);
//Định dạng ngày tương ứng với trong CSDL SQLserver
if (themmoi)
{
nv.ThemNhanVien(txtHoten.Text, ngay, txtDiaChi.Text,
txtDienThoai.Text, cboBangCap.SelectedValue.ToString()); MessageBox Show( "Thêm mới thành công" );
Trang 27private void btnHuy_Click( object sender, EventArgs e)
Chạy và ki m tra chương trình
Qua đây, ta nhận thấy rằng việc xử lý đã được phân loại rõ ràng các nhiệm vụ xử lý giúp ta dễ dàng quản lý chương trình hơn
Làm tư ng tự cho các màn hình danh mục hác :
Bằng cấp BangCap.cs Xử lý nghiệp vụ
frmBangCap.cs Xử lý giao diện
Lập thẻ đ c giả Docgia.cs Xử lý nghiệp vụ
frmDocGia.cs Xử lý giao diện
Tiếp nhận sách Sach.cs Xử lý nghiệp vụ
frmSach.cs Xử lý giao diện
…
M t cách hác để nhập bảng danh mục
Như đã nói ở trên, muốn viết cho 1 form đ xử lý thêm, xóa, sửa cho 1 bảng, chúng ta phải tạo 2 file : file cơ sở và file form Tuy nhiên, có 1 cách dùng khác là sử dụng 1 control có chức năng liên kết
dữ liệu 1 cách tự động với 1 bảng trong Database, đó là DataGrid
- Dùng DataGrid đ nhập trực tiếp (nhập theo dạng bảng)
- Sử dụng DataAdapter đ update dữ liệu từ bảng xuống CSDL
- Ví dụ thao tác trên bảng Độc Giả :
- Viết code cho form: frmDocGia.cs
Trang 28namespace QLThuVien
{
public partial class frmDocGia : Form
{
DocGia dg = new DocGia ();
Database db = new Database ( frmMDI srvName, frmMDI dbName, frmMDI IntergratedMode, "" , "" );
DataTable dt = new DataTable ();
db.Update( "Select * from DocGia" , dt);
MessageBox Show( "Cập nhật thành công" );
}
catch ( DataException de)
{
MessageBox Show( "Có lỗi khi cập nhật \n" + de.ToString(), "lỗi" ,
MessageBoxButtons AbortRetryIgnore, MessageBoxIcon Error); }
Trang 29Bài tập 4 Xây dựng màn hình chính
1 Tạo màn hình chính:
Có th thực hiện theo 2 cách sau:
- Từ menu, chọn project Add Windows Form…
- Right-Click project thư viện (trong Solution Explorer), chọn Add Windows Form
Chọn Templates: MDIParent và đặt tên form là frmMDI.cs
2 Thiết ế giao diện cho màn hình chính:
Kéo thả control Panel vào frmMDI
Trang 30 Kéo thả control Panel vào frmMDI và đặt tên là panelMenu
Chọn Left cho thuộc tính Dock của panelMenu
Kết quả
Kéo thả control GroupBox vào frmMDI và đặt tên (Name) là groupBoxDanhMuc và text là Danh mục