a) Combobox Tình trạng phòng nhận 2 giá trị: Có, Không; Combobox loại phòng
nhận 3 giá trị: Phòng đơn, Phòng đôi, Phòng ba; Combobox giới tính nhận 2 giá trị:
Nam, Nữ. Khi Load Form : Thông tin của những khách thuê phòng chưa thanh toán
đươc̣hiểnthi ̣lên lưới Chi tiếtkhách hàng . Khi kích choṇmột dòng trên lưới Chi tiết
khách hàng thìhiểnthi ̣thông tin khách hàng đó lên cácTextbox vàCombobox tương
ứng trong thông tin khách thuê phòng.
b) Nút Xem theo tiǹh traṇg: Khi ngườidùng choṇtrong Combo Tình traṇg phòng
rồinhấnvàonútXem theo tiǹh traṇg , thông tin vềcácphòng se ̃đươc̣hiểnthi ̣lên
lưới Chi tiếtphòng.
c) Nút Xem theo loại phòng : Khi ngườidùng choṇtrong Combo Loại phòng rồi
nhấnvàonútXem theo loại phòng , thông tin vềcácphòng se ̃đươc̣hiểnthi ̣lên lưới
Chi tiếtphòng.
d) Nút Nhập: Đưa toàn bộ các Mã Phòng có Tình trạng là “Không” vào Combobox
Mã Phòng. Nút nhập phải bổ sung được các thông tin về khách hàng vào bảng “KH”
trong cơ sở dữ liệu nếu khách hàng đó chưa có trong bảng “KH”; thông tin về thuê
phòng vào bảng “ThueP” và hiển thị lên lưới . Yêu cầu: ngày đến lấy theo ngày hiện
tại; ngày đi và tiền sử dụng dịch vụ để trống; đồng thời cập nhật Tình trạng của phòng
đó trong bảng “Phong” thành “Có”.
e) Nút Sƣ̉a: Phải sửa được các thông tin về họ tên, giới tính của bản ghi được chọn
trên lưới chi tiết khách hàng vào bảng „KH‟ và hiện thông tin vừa sửa lên lưới.
f) Nút Xóa: Phải xóa được thông tin thuê phòng trong bảng “ThueP” của các dòng
được chọn trên lưới; cập nhật Tình trạng của các phòng đó trong bảng “Phong” thành
“Không”; đồng thời cập nhật thông tin sau khi xóa lên lưới.
g) Nút Thoát: Phải hiển thị được hộp thoại xác nhận có muốn thoát không và xử lý
được việc đóng hoặc hủy việc đóng Form.
180 trang |
Chia sẻ: Tiểu Khải Minh | Ngày: 28/02/2024 | Lượt xem: 6 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tập bài giảng Thực hành kỹ thuật lập trình (Phần 2), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thực hiện việc tìm kiếm thông tin độc giả theo mã độc giả,
tên độc giả.
Tập bài giảng Thực hành kỹ thuật lập trình
253
Hình 3. 25
Yêu cầu:
- Form xuất hiện chính giữa màn hình
- Nhãn Tìm kiếm độc giả:
Font Microsoft Sans Serif,, Bold, 18
Căn giữa màn hình form tìm kiếm theo chiều ngang
Mầu chữ: Xanh
- Các nhãn Chọn khóa tìm kiếm, Mã độc giả
Font: Microsoft Sans Serif, size 9
Mầu chữ: Đen
- Nút lệnh Xem kết quả
Font: Microsoft Sans Serif, Bold, 9
Mầu chữ: Đen
Khi nhấn vào nút lệnh xem kết quả, chƣơng trình sẽ căn cứ vào giá trị lựa chọn
ở comboBox trong phần Chọn khóa tìm kiếm là Mã độc giả hay tên độc giả nếu tìm
kiếm theo mã độc giả thì tiếp theo sẽ chọn mã độc giả trong comboBox mã độc giả,
còn nếu tìm kiếm theo tên độc giả thì điều kiện tìm kiếm nhập trong textbox tên độc
giả. Phụ thuộc vào điều kiện tìm kiếm là theo mã độc giả hay tên độc giả chƣơng trình
sẽ đƣa ra kết quả tìm kiếm các độc giả gồm các thông tin: Mã độc giả, tên độc giả, cơ
quan, địa chỉ, số điện thoại của các độc giả và hiển thị ở trên ListView phía dƣới.
Tìm theo mã độc giả: Yêu cầu tìm chính xác theo mã độc giả thì mã độc giả
đƣợc nhập hoặc chọn trong ComboBox mã độc giả.
Tìm kiếm theo tên độc giả yêu cầu tìm gần giống, tên độc giả cần tìm đƣợc nhập
từ bàn phím vào ô textbox tên độc giả.
Nút thoát thực hiện đóng Form hiện thời.
Tập bài giảng Thực hành kỹ thuật lập trình
254
b) Form frTimkiem_Sach thực hiện việc tìm kiếm thông tin sách theo mã sách, tên
sách.
Hình 3. 26
Yêu cầu:
- Form xuất hiện chính giữa màn hình
- Nhãn Tìm kiếm sách:
Font Microsoft Sans Serif,, Bold, 18
Căn giữa màn hình form tìm kiếm theo chiều ngang
Mầu chữ: Xanh
- Các nhãn Chọn khóa tìm kiếm, Mã sách, tên sách
Font: Microsoft Sans Serif, size 9
Mầu chữ: Đen
- Nút lệnh Xem kết quả
Font: Microsoft Sans Serif, Bold, 9
Mầu chữ: Đen
Khi nhấn vào nút lệnh xem kết quả, chƣơng trình sẽ căn cứ vào giá trị lựa chọn
ở comboBox trong phần Chọn khóa tìm kiếm là Mã sách hay tên sách nếu tìm kiếm
theo mã sách thì tiếp theo sẽ chọn mã sách trong comboBox mã sách, còn nếu tìm
kiếm theo tên sách thì điều kiện tìm kiếm nhập trong textbox tên sách. Phụ thuộc vào
điều kiện tìm kiếm là theo mã sách hay tên sách chƣơng trình sẽ đƣa ra kết quả tìm
kiếm các sách gồm các thông tin: Mã sách, tên sách, tên tác giả, nhà xuất bản, năm
xuất bản và số lƣợng của các sách và hiển thị ở trên ListView phía dƣới.
Tìm theo mã sách hay tên tên sách: Yêu cầu tìm chính xác theo mã sách thì mã
sách đƣợc nhập hoặc chọn trong ComboBox mã sách hoặc tên sách đƣợc nhập từ bàn
phím vào ô textbox tên sách
Nút thoát thực hiện đóng Form hiện thời.
Công việc 4: Thiết kế form quản lý chung cho ứng dụng vừa xây dựng
Tập bài giảng Thực hành kỹ thuật lập trình
255
Yêu cầu:
Loại form: MDIForm
Tiêu đề: Quản lý thƣ Thƣ viện
Chế độ hiển thị: Lớn nhất
Thanh trạng thái: Có
Hỗ trợ xem trƣớc khi nhấn phím: Có
Công việc 5: Thiết kế menu trên form có sử dụng phím nóng để truy cập vào mục
chọn trên menu theo mẫu sau:
Hình 3. 27
Yêu cầu:
- Cấu trúc của menu nhƣ sau:
Thông tin sách
Thông tin độc giả
Tìm kiếm
Tìm kiếm thông tin độc giả
Tìm kiếm thông tin sách
Thoát
Công việc 6: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa tạo trên
form
Yêu cầu:
- Khi nhấn vào mục chọn Thông tin sách sẽ thi hành form frSach là form con của
form quản lý
- Khi nhấn vào mục chọn Thông tin độc giả sẽ thi hành form frDocgia là form
con của form quản lý
- Khi nhấn vào mục chọn Thoát sẽ đóng form quản lý và kết thúc ứng dụng
Tập bài giảng Thực hành kỹ thuật lập trình
256
- Khi nhấn vào mục chọn Tìm kiếm/Tìm kiếm thông tin độc giả sẽ hiển thị form
frTimkiem_DG là form con của form quản lý
- Khi nhấn vào mục chọn Tìm kiếm/Tìm kiếm thông tin sách sẽ hiển thị form
frtimkiemSach là form con của form quản lý
Hƣớng dẫn thực hiện:
Công việc 1: Thiết kế form frDocgia theo mẫu
1. Phân tích yêu cầu:
Theo yêu cầu trên thì phải có một form chứa:
- Các đối tƣợng có nội dung “THÔNG TIN ĐỘC GIẢ”, “Mã độc giả”, “Tên
độc giả”, “Cơ quan”, “Địa chỉ”, “ Số điện thoại” là các Label.
- Các đối tƣợng ô nhập mã độc giả, tên độc giả, cơ quan, địa chỉ, số điện thoại
là các Textbox.
- Các nút “Thêm” “Xóa”, “Sửa”, “Tìm kiếm”, “Thoát” là các Button
- Đối tƣợng thông tin chi tiết độc giả, danh sách độc giả là các GroupBox.
2. Hƣớng dẫn thực hiện
Nhƣ vậy, để thực hiện công việc thiết kế form có tên FrDocgia theo yêu cầu,
ngƣời lập trình thực các bƣớc nhƣ sau:
Bƣớc 1. Mở C#
Bƣớc 2. Tạo form mới
Trên thanh menu, chọn Project/Add New Item.
Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên
frDocgia vào ô Name rồi nhấn nút Add.
Bƣớc 3. Thiết kế form theo mẫu và gắn các điều khiển vào Form
a) Để tạo điều khiển label Thông tin độc giả theo yêu cầu thực hiện:
Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label
chọn Properties và thiết lập các thuộc tính cho Label này:
Text: THÔNG TIN ĐỘC GIẢ
Font: Microsoft Sans Serif
Font size: 18
Font STYLE: BOLD
Trên menu chọn Format/Center in form/Horizontally để căn giữa.
Thực hiện các thao tác tƣơng tự với các label khác nhƣ: Mã độc giả, tên độc giả,
cơ quan, địa chỉ, số điện thoại để thiết lập các thuộc tính về font name và font size.
b) Để tạo điểu khiển txt_madocgia tƣơng ứng với nhãn Mã độc giả theo yêu cầu
thực hiện:
Kéo điều khiển Textbox từ cửa sổ Toolbox vào form. Nháy phải chuột vào
textbox chon Properties và thiết lập các thuộc tính cho textbox này:
Tập bài giảng Thực hành kỹ thuật lập trình
257
Name: txt_maDG
Font name: Microsoft Sans Serif
Font size: 9
Thực hiện các thao tác tƣơng tự với các textbox khác nhƣ:
txt_tenDG,txt_coquan, txt_diachi, txt_sodienthoai.
c) Để tạo điểu khiển button thêm theo yêu cầu thực hiện:
Kéo điều khiển Button từ cửa sổ Toolbox vào form. Nháy phải chuột vào
Button chọn Properties và thiết lập các thuộc tính cho Button này:
Name: bt_them
Font name: Microsoft Sans Serif
Font size: 9
Làm tƣơng tự với các button còn lại.
d) Kéo điều khiển Listview từ cửa sổ Toolbox vào form và thêm 6 cột dữ liệu
là: Mã ĐG, Tên độc giả, cơ quan, địa chỉ và SĐT (số điện thoại)
Bƣớc 4. Kết quả thiết kế Form thông tin độc giả
Hình 3. 28
Bƣớc 5. Viết mã lệnh cho các nút điều khiển
Ở đây các nút sẽ phải thực hiện việc kết nối cơ sở dữ liệu và thực thi các câu
lệnh sql thƣờng xuyên. Vì vậy để đơn giản không phải viết đi viết lại đoạn code cho
việc truy vấn cơ sở dữ liệu và thực thi câu lệnh sql chúng ta sẽ xây dựng một lớp có
tên là ketnoi gồm các phƣơng thức
+ phƣơng thức taoketnoi() để thực hiện tạo 1 kết nối cơ sở dữ liệu và kết quả trả về
là một đối tƣợng thuộc lớp SqlConnection
+ Phƣơng thức truyvan(string sql) để thực hiện câu lệnh select
+Phƣơng thức thucthi(string sql) để thực thi câu lệnh: insert, delete, update
- Viết mã lệnh để kết nối cơ sở dữ liệu: Xây dựng lớp ketnoi nằm trong file ketnoi.cs
Tập bài giảng Thực hành kỹ thuật lập trình
258
Thực hiện chuột phải vào Project chọn add\class -> xuất hiện hộp thoại Add
new Item, trong hộp Name gõ tên file là ketnoi.cs. Ngay sau đó sẽ tạo đƣợc cấu trúc
lớp ketnoi nhƣ sau:
- Viết mã lệnh cho phƣơng thức trong lớp kết nối:
Chú ý: Trƣớc hết phải khai báo các thƣ viện sau:
using System.Data.SqlClient;
using System.Data;
Sau đó viết code cho lần lƣợt các phƣơng thức:
Mã lệnh của phƣơng thức tạo kết nối (taoketnoi()).
public static SqlConnection taoketnoi()
{
SqlConnection con = new SqlConnection(@"Data Source=admin-
vaio;Initial Catalog=qlThuvien;Integrated Security=True");
try
{
con.Open();
}
catch
{
MessageBox.Show("Lỗi kết nối", "Thông báo");
}
return con;
}
-Mã lệnh cho phƣơng thức thucthi
public static void thucthi(string sql)
{
SqlConnection con = ketnoi.taoketnoi();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = con;
cmd.ExecuteNonQuery();
Tập bài giảng Thực hành kỹ thuật lập trình
259
con.Close();
}
-Mã lệnh cho phƣơng thức truyvan
public static DataTable truyvan(string sql)
{
SqlConnection con = ketnoi.taoketnoi();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
- Viết mã lệnh việc load dữ liệu lên Listview
private void load_listviewdocgia()
{
string sql = "select *from tbldocgia";
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
foreach (DataRow dr in dt.Rows)
{
ListViewItem item = new ListViewItem();
item.Text = dr[0].ToString();
item.SubItems.Add(dr[1].ToString());
item.SubItems.Add(dr[2].ToString());
item.SubItems.Add(dr[3].ToString());
item.SubItems.Add(dr[4].ToString());
lst_docgia.Items.Add(item);
} }
- Viết mã lệnh để load form frDocgia
private void vohieuhoa(bool bt)
{
groupBox1_ttdocgia.Enabled = bt;
}
Tập bài giảng Thực hành kỹ thuật lập trình
260
private void frDocGia_Load(object sender, EventArgs e)
{
vohieuhoa(true);
load_listviewdocgia();
bnt_sua.Enabled = false;
bnt_xoa.Enabled = false;
}
- Viết mã lệnh cho nút thêm: Khi thêm có kiểm tra trùng mã, kiểm tra dữ liệu nhập vào
+ Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào
bool kiemtra_du_lieu()
{
if (kiemtra(txt_maDG.Text) || kiemtra(txt_tenDG.Text) || kiemtra(
txt_coquan.Text) || kiemtra(txt_diachi.Text) || kiemtra(txt_sodienthoai.Text))
return false;
// Kiem tra dien thoai hop le
string dt = txt_sodienthoai.Text;
if (dt.Length 10) return false;
for (int i = 0; i < dt.Length; i++)
if ((dt[i] '9')) return false;
if (dt[0] != '0') return false;
return true;
}
- Viết mã lệnh cho hàm kiểm tra chuỗi rỗng
bool kiemtra(string s)
{
if (s.Trim().Length==0) return true;
else return false;
}
- Viết mã lệnh cho hàm reset các textbox
void reset()
{
txt_diachi.ResetText();
txt_sodienthoai.ResetText();
txt_tenDG.ResetText();
txt_maDG.ResetText();
txt_coquan.Text = "";
Tập bài giảng Thực hành kỹ thuật lập trình
261
}
// kiểm tra trùng mã khi thêm vào bảng tbldocgia
private Boolean kttrung(string ma)
{
string sql="select madocgia from tbldocgia";
DataTable dt=new DataTable();
dt = ketnoi.truyvan(sql);
foreach( DataRow dr in dt.Rows)
{
if (string.Compare(ma.Trim(), dr[0].ToString().Trim()) == 0)
return true;
}
return false;
}
// Mã lệnh cho nút thêm
private void bnt_them_Click(object sender, EventArgs e)
{
if (string.Compare(bnt_them.Text, "Thêm") == 0)
{
vohieuhoa(true); txt_maDG.Focus();
bnt_them.Text = "Lƣu";
}
else
if (kiemtra_du_lieu() == true)
{
string madocgia, tendocgia, coquan, diachi, sodienthoai;
madocgia = txt_maDG.Text;
tendocgia = txt_tenDG.Text;
coquan = txt_coquan.Text;
diachi = txt_diachi.Text;
sodienthoai = txt_sodienthoai.Text;
if (kttrung(madocgia) == true)
{
MessageBox.Show("Trùng mã độc giả", "Thông báo");
txt_maDG.Focus();
Tập bài giảng Thực hành kỹ thuật lập trình
262
}
else
{
string sql = "insert into tbldocgia values ('" + madocgia + "',N'" +
tendocgia + "',N'" + coquan + "',N'" + diachi + "','" + sodienthoai + "')";
ketnoi.thucthi(sql);
lst_docgia.Items.Clear();
load_listviewdocgia();
bnt_them.Text = "Thêm";
}
} else
{
MessageBox.Show("Dữ liệu nhập vào không hợp lệ", "Thông báo
lỗi");
bnt_them.Text = "Lƣu";
}
}
- Viết mã lệnh cho nút xóa
private void bnt_xoa_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in lst_docgia.SelectedItems)
{
if (item.Selected == true)
{
string sql="delete from tbldocgia where madocgia='"+
item.Text.ToString()+"'";
ketnoi.thucthi(sql);
lst_docgia.Items.Clear();
load_listviewdocgia();
}
}
}
- Viết mã lệnh cho nút sửa
private void bnt_sua_Click(object sender, EventArgs e)
{
if (string.Compare(bnt_sua.Text, "Sửa") == 0)
{
vohieuhoa(true); txt_maDG.Enabled = false; txt_tenDG.Focus();
Tập bài giảng Thực hành kỹ thuật lập trình
263
bnt_sua.Text = "Cập nhật";
}
else if (kiemtra_du_lieu())
{
string madocgia, tendocgia, coquan, diachi, sodienthoai;
madocgia = txt_maDG.Text;
tendocgia = txt_tenDG.Text;
coquan = txt_coquan.Text;
diachi = txt_diachi.Text;
sodienthoai = txt_sodienthoai.Text;
string sql = "update tbldocgia set madocgia='" + madocgia +
"',tendocgia=N'" + tendocgia + "',coquan=N'" + coquan + "',diachi=N'" + diachi
+ "',tel='" + sodienthoai + "' where madocgia='" + madocgia + "'";
ketnoi.thucthi(sql);
lst_docgia.Items.Clear();
load_listviewdocgia();
bnt_sua.Text = "Sửa"; vohieuhoa(false); reset();
}
else
{ MessageBox.Show("Dữ liệu sửa không hợp lệ");
bnt_sua.Text = "Cập nhật";
}
}
- Viết mã lệnh cho nút thoát
private void btn_thoat_Click(object sender, EventArgs e)
{
this.Close();
}
- Viết mã lệnh cho hàm đƣa dữ liệu vào ListView
private void load_listviewdocgia()
{
string sql = "select *from tbldocgia";
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
foreach (DataRow dr in dt.Rows)
{
ListViewItem item = new ListViewItem();
item.Text = dr[0].ToString();
item.SubItems.Add(dr[1].ToString());
item.SubItems.Add(dr[2].ToString());
Tập bài giảng Thực hành kỹ thuật lập trình
264
item.SubItems.Add(dr[3].ToString());
item.SubItems.Add(dr[4].ToString());
lst_docgia.Items.Add(item);
}
}
- Viết mã lệnh cho sự kiện kích chọn phần tử trên ListView
private void lst_docgia_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListViewItem item in lst_docgia.SelectedItems)
{
if (item.Selected == true)
{ txt_maDG.Text=item.Text;
txt_tenDG.Text=item.SubItems[1].Text;
txt_coquan.Text=item.SubItems[2].Text;
txt_diachi.Text=item.SubItems[3].Text;
txt_sodienthoai.Text=item.SubItems[4].Text;
}
}
bnt_xoa.Enabled = true;
bnt_sua.Enabled = true;
}
- Viết mã lệnh cho sự kiện kích chuột vào nút tìm kiếm
private void bnt_timkiem_Click(object sender, EventArgs e)
{
frtimkiemDG fr = new frtimkiemDG();
fr.ShowDialog();
}
Bƣớc 6. Kết quả chạy Form thông tin độc giả FrDocgia
Tập bài giảng Thực hành kỹ thuật lập trình
265
Hình 3. 29
Công việc 2: Thiết kế form Thông tin Sách theo yêu cầu
1. Phân tích yêu cầu:
Theo yêu cầu trên thì phải có một form chứa:
- Các đối tƣợng có nội dung “THÔNG TIN SÁCH”, “Mã sách”, “Tên sách”,
“tên tác giả”, “nhà xuất bản”, “ Năm xuất bản”, “Số lƣợng” là các Label.
- Các đối tƣợng ô nhập mã sách, tên sách, tên tác giả, tên nhà xuất bản, năm
xuất bản, số lƣợng là các Textbox.
- Các nút “Thêm” “Xóa”, “Sửa”, “Tìm kiếm”, “Thoát” là các Button
2. Hƣớng dẫn thực hiện
Nhƣ vậy, để thực hiện công việc thiết kế form có tên FrSach theo yêu cầu,
ngƣời lập trình thực các bƣớc nhƣ sau:
Bƣớc 1. Mở C#
Bƣớc 2. Tạo form mới
Trên thanh menu, chọn Project/Add New Item.
Xuất hiện cửa sổ Add New Item. Chọn loại Windows Form, sau đó nhập tên
frDocgia vào ô Name rồi nhấn nút Add.
Bƣớc 3. Thiết kế form theo mẫu và gắn các điều khiển vào Form
a) Để tạo điều khiển label Thông tin độc giả theo yêu cầu thực hiện:
Kéo điều khiển Label từ của sồ Toolbox vào form. Nháy phải chuột vào Label
chọn Properties và thiết lập các thuộc tính cho Label này:
Tập bài giảng Thực hành kỹ thuật lập trình
266
Text: THÔNG TIN SÁCH
Font: Microsoft Sans Serif
Font size: 18
Font STYLE: BOLD
Trên menu chọn Format/Center in form/Horizontally để căn giữa.
Thực hiện các thao tác tƣơng tự với các label khác nhƣ: Mã sách, tên sách, tên
tác giả, nhà xuất bản, năm xuất bản, số lƣợng để thiết lập các thuộc tính về font name
và font size.
b) Để tạo điểu khiển txt_masach tƣơng ứng với nhãn Mã sách theo yêu cầu thực
hiện:
Kéo điều khiển Textbox từ cửa sổ Toolbox vào form. Nháy phải chuột vào
textbox chon Properties và thiết lập các thuộc tính cho textbox này:
Name: txt_masach
Font name: Microsoft Sans Serif
Font size: 9
Thực hiện các thao tác tƣơng tự với các textbox khác nhƣ:
txt_tensach,txt_tenTG, txt_nhaXB, txt_namXB, txt_soluong.
c) Để tạo điểu khiển button thêm theo yêu cầu thực hiện:
Kéo điều khiển Button từ cửa sổ Toolbox vào form. Nháy phải chuột vào
Button chọn Properties và thiết lập các thuộc tính cho Button này:
Name: bt_them
Font name: Microsoft Sans Serif
Font size: 9
Làm tƣơng tự với các button còn lại
Button Xóa với các thuộc tính
Name: bt_xoa
Font name: Microsoft Sans Serif
Font size: 9
Button sửa với các thuộc tính
Name: bt_sua
Font name: Microsoft Sans Serif
Font size: 9
Button Tìm kiếm với các thuộc tính
Name: bt_timkiem
Font name: Microsoft Sans Serif
Font size: 9
Button thoát với các thuộc tính
Tập bài giảng Thực hành kỹ thuật lập trình
267
Name: bt_thoát
Font name: Microsoft Sans Serif
Font size: 9
d) Kéo điều khiển Listview từ cửa sổ Toolbox vào form và thêm 6 cột dữ liệu
là: Mã sách, Tên sách, tên tác giả, nhà XB, năm XB, số lƣợng
Bƣớc 4. Kết quả thiết kế Form thông tin Sách
Hình 3. 30
Bƣớc 5. Viết mã lệnh cho các điều khiển
- Viết mã lệnh để load dữ liệu lên listview_sach
private void load_listview_sach()
{
string sql = "select *from tblsach";
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
foreach (DataRow dr in dt.Rows)
{
ListViewItem item = new ListViewItem();
item.Text = dr[0].ToString();
item.SubItems.Add(dr[1].ToString());
item.SubItems.Add(dr[2].ToString());
item.SubItems.Add(dr[3].ToString());
item.SubItems.Add(dr[4].ToString());
Tập bài giảng Thực hành kỹ thuật lập trình
268
item.SubItems.Add(dr[5].ToString());
listView1.Items.Add(item);
}
}
Viết mã lệnh cho hàm vô hiệu hóa các textbox
private void vohieuhoa(bool bt)
{
txt_masach.Enabled = bt;
txt_nhaxb.Enabled = bt;
txt_soluong.Enabled = bt;
txt_tentacgia.Enabled = bt;
txt_tensach.Enabled = bt;
txt_namxb.Enabled = bt;
}
Viết mã lệnh để load form thông tin sách (frsach)
void frsach_Load(object sender, EventArgs e)
{
load_listview_sach();
vohieuhoa(false);
bnt_xoa.Enabled = false;
bnt_sua.Enabled = false;
}
Viết lệnh cho sự kiện kích chuột vào nút sửa
private void bnt_sua_Click(object sender, EventArgs e)
{ if (string.Compare(bnt_sua.Text, "Sửa") == 0)
{
vohieuhoa(true); txt_masach.Enabled = false;
txt_tensach.Focus(); bnt_sua.Text = "Cập nhật";
}
else if (kiemtra_du_lieu())
{
string masach, tensach, tentg, nhaxb;
int namxb, soluong;
masach = txt_masach.Text;
tensach = txt_tensach.Text;
tentg = txt_tentacgia.Text;
Tập bài giảng Thực hành kỹ thuật lập trình
269
nhaxb = txt_nhaxb.Text;
namxb = int.Parse(txt_namxb.Text.ToString());
soluong = int.Parse(txt_soluong.Text.ToString());
string sql = "update tblsach set masach='" + masach +
"',tensach=N'" + tensach + "',tentacgia=N'" + tentg + "',nhaxb=N'" +
nhaxb + "',namxb=" + namxb + ",soluong=" + soluong + "where
masach='" + masach + "'";
ketnoi.thucthi(sql);
listView1.Items.Clear();
load_listview_sach();
bnt_sua.Text = "Sửa";
}
else
{
MessageBox.Show("Dữ liệu sửa không hợp lệ");
bnt_sua.Text = "Cập nhật";
}
}
- Viết mã lệnh cho hàm reset
private void reset()
{
txt_masach.ResetText();
txt_namxb.ResetText();
txt_nhaxb.ResetText();
txt_soluong.ResetText();
txt_tensach.ResetText();
txt_tentacgia.ResetText();
}
- Viết mã lệnh để kiểm tra xâu là rỗng
bool kiemtra(string s)
{
if (s.Trim().Length == 0) return true;
else return false;
}
- Viết mã lệnh để kiểm tra dữ liệu nhập trong các textbox là rỗng hay không
Tập bài giảng Thực hành kỹ thuật lập trình
270
bool kiemtra_du_lieu()
{
if (kiemtra(txt_masach.Text) || kiemtra(txt_tensach.Text) ||
kiemtra(txt_tentacgia.Text) || kiemtra(txt_nhaxb.Text) ||
kiemtra(txt_namxb.Text)||kiemtra(txt_soluong.Text)) return false;
// Kiem tra số lƣợng, năm xuất bản
string sl = txt_soluong.Text;
for (int i = 0; i < sl.Length; i++)
if ((sl[i] '9')) return false;
if (sl[0] == '0') return false;
string namxb = txt_namxb.Text;
try
{ int.Parse(namxb.ToString());
}
catch {//MessageBox.Show("Nam xuất bản nhập ko đúng","Thông
báo lỗi")
return false; }
return true;
}
Viết mã lệnh kiểm tra trùng mã sách khi thêm
private Boolean kttrung(string ma)
{
string sql = "select masach from tblsach";
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
foreach (DataRow dr in dt.Rows)
{
if (string.Compare(ma.Trim(), dr[0].ToString().Trim()) == 0)
return true;
}
return false;
}
Viết mã lệnh cho sự kiện click chuột vào nút thêm
private void bnt_them_Click(object sender, EventArgs e)
{ if (string.Compare(bnt_them.Text, "Thêm") == 0)
{
vohieuhoa(true); txt_masach.Focus(); bnt_them.Text = "Lƣu";
Tập bài giảng Thực hành kỹ thuật lập trình
271
reset();
}
else
if (kiemtra_du_lieu() == true)
{
string masach, tensach, tentg, nhaxb;
int namxb, soluong;
masach = txt_masach.Text;
tensach = txt_tensach.Text;
tentg = txt_tentacgia.Text;
nhaxb = txt_nhaxb.Text;
namxb = int.Parse(txt_namxb.Text.ToString());
soluong = int.Parse(txt_soluong.Text.ToString());
if (kttrung(masach) == true)
{
MessageBox.Show("Trùng mã sách", "Thông báo");
txt_masach.Focus();
}
else
{
string sql = "insert into tblsach values ('" + masach + "',N'" +
tensach + "',N'" + tentg + "',N'" + nhaxb + "'," + namxb + "," + soluong +
")";
ketnoi.thucthi(sql);
listView1.Items.Clear();
load_listview_sach();
bnt_them.Text = "Thêm";
}
}
else
{
MessageBox.Show("Dữ liệu nhập vào không hợp lệ",
"Thông báo lỗi");
bnt_them.Text = "Lƣu";
}
}
Tập bài giảng Thực hành kỹ thuật lập trình
272
- Viết mã lệnh cho sự kiện click chuột vào listview
private void listView1_Click(object sender, EventArgs e)
{
bnt_xoa.Enabled = true;
bnt_sua.Enabled = true;
vohieuhoa(false);
}
Viết mã lệnh cho sự kiện click chuột vào nút xóa
private void bnt_xoa_Click(object sender, EventArgs e)
{
//ListViewItem item = listView1.SelectedItems[0];
foreach (ListViewItem item in listView1.SelectedItems)
{
string masach = item.Text;
string sql = "delete from tblsach where masach='" + masach +
"'";
ketnoi.thucthi(sql);
}
listView1.Items.Clear();
load_listview_sach();
}
Viết mã lệnh cho sự kiện chọn phần tử trên listview_sach
private void listView1_sach_SelectedIndexChanged(object sender,
EventArgs e)
{
bnt_sua.Enabled = true;
bnt_xoa.Enabled = true;
foreach(ListViewItem item in listView1.SelectedItems)
if(item.Selected==true)
{
txt_masach.Text = item.Text;
txt_tensach.Text = item.SubItems[1].Text;
txt_tentacgia.Text = item.SubItems[2].Text;
txt_nhaxb.Text = item.SubItems[3].Text;
txt_namxb.Text = item.SubItems[4].Text;
txt_soluong.Text = item.SubItems[5].Text;
//txt_masach.Enabled = true;
vohieuhoa(true);
}
}
Viết mã lệnh cho sự kiện click chuột vào nút thoát
Tập bài giảng Thực hành kỹ thuật lập trình
273
private void btn_thoat_Click(object sender, EventArgs e)
{
this.Close();
}
Bƣớc 6. Kết quả chạy Form FrSach
Hình 3. 31
Công việc 3: Thiết kế Form tìm kiếm thông tin
a) Form Tìm kiếm độc giả (Frtimkiem_DG)
1. Phân tích yêu cầu:
Theo mẫu trên thì phải có một form chứa:
- Các đối tƣợng có nội dung “Tìm kiếm độc giả”, “Chọn khóa tìm kiếm”, “Mã
độc giả”, “Tên độc giả” là các Label.
- Đối tƣợng để chọn khóa tìm kiếm là comboBox: có 2 lựa chọn là Theo Mã
độc giả, theo tên độc giả.
- Nếu chọn khóa tìm kiếm là Mã độc giả thì Sau đó sẽ hiện lên label “Mã độc
giả” và sẽ nhập hoặc chọn mã độc giả cần tìm kiếm trong comboBox_MaDG
- Nếu chọn khóa tìm kiếm là tên độc giả thì sau đó sẽ hiện label “Tên độc giả”
và tên độc giả cần tìm kiếm sẽ đƣợc nhập trong textbox tên độc giả(txt_tenDG)
- Các nút “Xem kết quả” “Thoát” là các Button.
- Đối tƣợng hiển thị kết quả tìm kiếm là ListView.
2. Hƣớng dẫn thao tác:
Tập bài giảng Thực hành kỹ thuật lập trình
274
Để thực hiện việc thiết kế form có tên FrmTimkiem_DG truy xuất dữ liệu trong
bảng tblDocgia ngƣời lập trình đã thực hiện các bƣớc sau:
Bƣớc 1. Mở C#
Bƣớc 2. Tạo form mới với tên FrTimkiem_DG bằng cách thực hiện các thao
tác: Trên thanh menu, chọn Project/Add New Item.
Xuất hiện cửa sổ Add New Item. Chọn loại Windows Forms, sau đó nhập tên
FrTimkiem_DG vào ô Name rồi nhấn nút Add.
Bƣớc 3. Thiết kế các điều khiển: tƣơng tự giống các công việc ở trên
Bƣớc 4. Kết quả thiết kế Form frTimkiem_DG
Hình 3. 32
Bƣớc 5. Viết mã lệnh cho các nút chức năng
-Viết mã lệnh để load form frTimkiem_DG
private void frtimkiem_Load(object sender, EventArgs e)
{
cmb_madocgia.Focus();
label_tendocgia.Visible = false;
label_madocgia.Visible = false;
cmb_madocgia.Visible = false;
txt_tendocgia.Visible = false;
}
-Viết mã lệnh để load dữ liệu lên listview
private void load_listview(string sql)
{
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
// r = dt.Rows.Count;
Tập bài giảng Thực hành kỹ thuật lập trình
275
foreach (DataRow dr in dt.Rows)
{
ListViewItem item = new ListViewItem();
item.Text = dr[0].ToString();
for (int i = 1; i < dt.Columns.Count; i++)
{
item.SubItems.Add(dr[i].ToString());
}
listView1.Items.Add(item);
}
}
- Viết mã lệnh để load dữ liệu lên ComboBox Mã độc giả
private void load_combo_madocgia()
{
DataTable dt = new DataTable();
dt=ketnoi.truyvan("select * from tblDocGia");
foreach (DataRow dr in dt.Rows)
{
cmb_madocgia.Items.Add(dr[0]);
}
}
- Viết mã lệnh cho sự kiện lựa chọn khóa tìm kiếm
private void cmb_khoatk_SelectedValueChanged(object sender,
EventArgs e)
{
if (cmb_khoatk.SelectedItem == cmb_khoatk.Items[0])
{
label_tendocgia.Visible = false;
txt_tendocgia.Visible = false;
label_madocgia.Visible = true;
cmb_madocgia.Visible = true;
cmb_madocgia.Focus();
load_combo_madocgia();
}
else
{
Tập bài giảng Thực hành kỹ thuật lập trình
276
cmb_madocgia.Visible = false;
label_madocgia.Visible = false;
label_tendocgia.Visible = true;
txt_tendocgia.Visible = true;
txt_tendocgia.Focus();
}
}
- Viết mã lệnh cho sự kiện lựa chọn mã độc giả trong comboBox mã độc giả
private void cmb_madocgia_SelectedValueChanged(object sender,
EventArgs e)
{//int r;
string sql = "select * from tblDocGia where MaDocgia='" +
cmb_madocgia.Text + "'";
listView1.Items.Clear();
load_listview(sql);
}
- Viết mã lệnh cho sự kiện click của nút btn_xemkq
private void bnt_xemkq_Click(object sender, EventArgs e)
{
if (cmb_khoatk.SelectedItem ==cmb_khoatk.Items[0])
{
string sql = "select * from tblDocGia where MaDocgia='" +
cmb_madocgia.Text + "'";
listView1.Items.Clear();
load_listview(sql);
}
else
{
string sql = "select * from tblDocGia where TenDocgia like
N'%" + txt_tendocgia.Text.ToString() + "%'";
listView1.Items.Clear();
//int r;
load_listview(sql);
}
}
Viết mã lệnh cho sự kiện click của nút btn_thoat
Tập bài giảng Thực hành kỹ thuật lập trình
277
private void btn_thoat_Click(object sender, EventArgs e)
{
this.Close();
}
Bƣớc 6. Kết quả chạy Form Frtimkiem_DG
+) Kết quả tìm kiếm theo mã độc giả
Hình 3. 33
+) Kết quả tìm kiếm theo mã độc giả
Hình 3. 34
b) Form Tìm kiếm sách (Fr_timkiemSach)
1. Phân tích yêu cầu:
Theo mẫu trên thì phải có một form chứa:
Tập bài giảng Thực hành kỹ thuật lập trình
278
- Các đối tƣợng có nội dung “Tìm kiếm Sách”, “Chọn khóa tìm kiếm”, “Mã
sách”, “Tên sách” là các Label.
- Đối tƣợng để chọn khóa tìm kiếm là comboBox: có 2 lựa chọn là Theo Mã
sách, theo tên sách.
- Nếu chọn khóa tìm kiếm là Mã độc giả thì Sau đó sẽ hiện lên label “Mã sách”
và sẽ nhập hoặc chọn mã độc giả cần tìm kiếm trong comboBox_Masach
- Nếu chọn khóa tìm kiếm là tên sách thì sau đó sẽ hiện label “Tên sách” và tên
sách cần tìm kiếm sẽ đƣợc nhập trong textbox tên sách(txt_tensach)
- Các nút “Xem kết quả” “Thoát” là các Button.
- Đối tƣợng hiển thị kết quả tìm kiếm là ListView.
2. Hƣớng dẫn thao tác:
Để thực hiện việc thiết kế form có tên Fr_timkiemSach truy xuất dữ liệu trong
bảng tblSach ngƣời lập trình đã thực hiện các bƣớc sau:
Bƣớc 1. Mở C#
Bƣớc 2. Tạo form mới với tên Fr_TimkiemSach bằng cách thực hiện các thao
tác: Trên thanh menu, chọn Project/Add New Item.
Xuất hiện cửa sổ Add New Item. Chọn loại Windows Forms, sau đó nhập tên
Fr_TimkiemSach vào ô Name rồi nhấn nút Add.
Bƣớc 3. Thiết kế các điều khiển: tƣơng tự giống các công việc ở trên
Bƣớc 4. Kết quả thiết kế Form fr_TimkiemSach
Hình 3. 35
Bƣớc 5. Viết mã lệnh cho các nút chức năng
-Viết mã lệnh để load form frTimkiem_DG
private void Form4_Load(object sender, EventArgs e)
{
Tập bài giảng Thực hành kỹ thuật lập trình
279
cmb_masach.Focus();
label_tensach.Visible = false;
label_masach.Visible = false;
cmb_masach.Visible = false;
}
-Viết mã lệnh để load dữ liệu lên listview
private void load_listview(string sql)
{
DataTable dt = new DataTable();
dt = ketnoi.truyvan(sql);
// r = dt.Rows.Count;
foreach (DataRow dr in dt.Rows)
{
ListViewItem item = new ListViewItem();
item.Text = dr[0].ToString();
for (int i = 1; i < dt.Columns.Count;i++)
{
item.SubItems.Add(dr[i].ToString());
}
listView1.Items.Add(item);
}
}
- Viết mã lệnh để load dữ liệu lên ComboBox mã sách
private void load_combo_masach()
{
DataTable dt = new DataTable();
dt = ketnoi.truyvan("select * from tblSach");
foreach (DataRow dr in dt.Rows)
{
cmb_masach.Items.Add(dr[0]);
}
}
- Viết mã lệnh cho sự kiện lựa chọn khóa tìm kiếm
private void cmb_khoatk_SelectedIndexChanged(object sender, EventArgs
e)
{
Tập bài giảng Thực hành kỹ thuật lập trình
280
if (cmb_khoatk.SelectedItem == cmb_khoatk.Items[0])
{
label2_tensach.Visible = false;
txt_tensach.Visible = false;
label_masach.Visible = true;
cmb_masach.Visible = true;
cmb_masach.Focus();
load_combo_masach();
}
else
{
cmb_masach.Visible = false;
label_masach.Visible = false;
label2_tensach.Visible = true;
txt_tensach.Visible = true;
txt_tensach.Focus();
}
}
- Viết mã lệnh cho sự kiện click của nút btn_xemkq
private void bnt_xemkq_Click(object sender, EventArgs e)
{// tìm theo mã sách
if (cmb_khoatk.SelectedItem == cmb_khoatk.Items[0])
{
string sql = "select * from tblSach where MaSach='" +
cmb_masach.Text + "'";
listView1_sach.Items.Clear();
load_listview(sql);
}
else // tìm theo tên sách
{
string sql = "select * from tblSach where TenSach like N'%" +
txt_tensach.Text.ToString() + "%'";
listView1_sach.Items.Clear();
load_listview(sql);
}
}
- Viết mã lệnh cho sự kiện click của nút btn_thoat
private void btn_thoat_Click(object sender, EventArgs e)
{
this.Close();
}
Bƣớc 6. Kết quả chạy Form Fr_timkiemSach
Tập bài giảng Thực hành kỹ thuật lập trình
281
a) Kết quả form Fr_timkiemSach theo mã sách
Hình 3. 36
b) Kết quả của form Fr_timkiemSach tìm kiếm theo tên sách
Hình 3. 37
Công việc 4: Thiết kế form quản lý chung cho ứng dụng vừa xây dựng
1. Phân tích yêu cầu:
Theo mẫu trên thì phải có một form có menu
2. Hƣớng dẫn thao tác:
Để thực hiện việc thiết kế form quản lý theo yêu cầu: Nháy phải chuột vào dự
án đang xây dựng ở cửa sổ Solution Explore, chọn Add/Windows Form. Xuất hiện cửa
sổ Add New Item
Tập bài giảng Thực hành kỹ thuật lập trình
282
Hình 3. 38
Nhập tên Fr_Main.cs vào ô Name. Nháy phải chuột vào form chọn Properties và thiết
lập các thông số của form theo đúng yêu cầu:
Text: Quản lý bán hàng
WindowState: Maximized
KeyPreview: True
IsMdiContainer: true
Kết quả thiết kế:
Hình 3. 39
Công việc 5: Thiết kế menu trên form Fr_Main
1. Phân tích yêu cầu
Theo yêu cầu thì trên Form Fr_Main có một menu strip
2. Hƣớng dẫn thao tác
Để thực hiện việc tạo menu theo đúng yêu cầu: Chọn các mục có sẵn trên menu
của form Fr_Main nhấn Delete để xóa các mục chọn này. Nháy phải chuột vào menu
chọn Edit Items xuất hiện cửa sổ Items Collection Editor
Tập bài giảng Thực hành kỹ thuật lập trình
283
Hình 3. 40
Lựa chọn kiểu MenuItem từ danh sách Select item and add to list below nhấn
Add để thêm mới một mục chọn vào danh sách mục chọn ở khung Members bên dƣới.
Chọn menu vừa tạo và thay đổi các thuộc tính của menu ở khung bên phải:
Text: Thông tin sách
DropDownItems: (Collection)
Thực hiện tƣơng tự với các menu Thông tin độc giả, Tìm kiếm, Thoát.
Thực hiện tạo các menu con cho menu tìm kiếm thông tin nhƣ sau:
Nhấn vào biểu tƣợng bên cạnh thuộc tính (Collection) của menu để tạo các menu con
của nó. Cửa sổ Items Collection Editor xuất hiện. Nhấn Add để tạo mới một menu con.
Lựa chọn menu con vừa tạo và thiết lập các thuộc tính cho meu ở khung bên phải:
Text: Tìm kiếm Sách
DropDownItems: (Collection)
Tƣơng tự với menu tìm kiếm sách, tìm kiếm độc giả
Nhấn OK để hoàn thành việc tạo menu cho form Fr_Main.
3. Kết quả thiết kế form Menu (Fr_Main)
Tập bài giảng Thực hành kỹ thuật lập trình
284
Hình 3. 41
Công việc 6: Gắn các chức năng tƣơng ứng vào các mục chọn cho menu vừa tạo trên
form.
1. Phân tích yêu cầu
Theo yêu cầu của đề bài, ngƣời lập trình phải gắn các Form ở các công việc trên
vào các menu tƣơng ứng với nó.
2. Hƣớng dẫn thao tác
Để thực hiện việc tạo menu theo đúng yêu cầu: Đƣa chuột đến mục chọn cần
gán thao tác, nhấp đúp chuột vào mục chọn để chuyển về cửa sổ cho phép viết mã lệnh
tƣơng ứng với mục chọn đó.
Đoạn mã lệnh gán chức năng mở form FrDocgia khi nhấp vào mục chọn Thông
tin độc giả trên thanh menu nhƣ sau:
private void thôngTinChiTiếtĐộcGiảToolStripMenuItem_Click(object sender,
EventArgs e)
{
frDocGia fr = new frDocGia();
fr.ShowDialog();
}
Thực hiện tƣơng tự với các mục chọn khác trên thanh menu và thực hiện thực
thi chƣơng trình.
3.3. Bài tập thực hành
Bài tập số 1.
Để quản lý việc phân công giảng dạy trong một học kỳ cho giáo viên của khoa
CNTT, khoa yêu cầu thiết kế một cơ sở dữ liệu quan hệ có tên QLYGD.MDF trong đó
có các bảng và có lƣợc đồ nhƣ sau:
tblGiaoVien(MaGV, HoTen, BoMon, DMGD)
Tập bài giảng Thực hành kỹ thuật lập trình
285
tblMonHoc(Mamon, Tenmon, SoTinChi)
tblPhanCong(MaGV, MaMon, LHP, SSO)
Trong đó:
MaGV: Mã giáo viên;
Hoten: Họ tên giáo viên;
BoMon: Tên bộ môn;
DMGD: Định mức giảng dạy;
Mamon: Mã môn học;
Tenmon: Tên môn học;
SoTinChi: Số tín chỉ;
MaGV: Mã giáo viên;
LHP: Tên lớp học phần;
SSO: Sĩ số lớp học phần.
Công việc 1: Tạo cơ sở dữ liệu trên SQL Server.
Công việc 2:
1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu cho trong bảng
tblGiaoVien
2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu trong bảng
tblMonHoc
3. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu trong tệp
tblPhanCong
4. Thiết kế các Form tìm kiếm thông tin Giáo viên, thông tin môn học và thông
tin về phân công giảng dạy.
5. Thiết kế Form chung và gọi các Form đã tạo ở các công việc trên
Bài tập số 2. Để xây dựng một chƣơng trình quản lý tài sản của các đơn vị trong một
cơ quan. Thủ trƣởng cơ quan yêu cầu đơn vị thiết kế tổ chức một cơ sở dữ liệu có các
bảng và lƣợc đồ quan hệ nhƣ sau:
tblDonVi(MaDV, TenDV, ViTri, SoNhanVien)
tblTaiSan(MaTS, TenTS, DVT, HSD)
tblQuanLy(MaDV, MaTS, SoLuong, NgayCap, TinhTrang)
Trong đó:
MaDV: Mã đơn vị;
TenDV: Tên đơn vị
ViTri: Vị trí;
SoNhanVien: Số nhân viên;
MaTS: Mã tài sản;
Tập bài giảng Thực hành kỹ thuật lập trình
286
TenTS: Tên tài sản;
DVT: Đơn vị tính;
HSD: Hạn sử dụng;
SoLuong: Số lƣợng;
NgayCap: Ngày cấp;
TinhTrang: Tình trạng.
Công việc 1: Tạo cơ sở dữ liệu trên.
Công việc 2. Là một ngƣời lập trình, hãy thiết kế các form để thực hiện cập nhật dữ
liệu cho các bảng trên:
1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu tài sản.
2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu đơn vị sử dụng
3. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu cho bảng
tblQuanLy.
4. Thiết kế các Form tìm kiếm thông tin đơn vị, thông tin tài sản và thông tin
quản lý.
5. Thiết kế Form chung và gọi các Form đã tạo ở các công việc trên
Bài tập số 3. Cho cơ sở dƣ̃ liêụ Quản lý điểm gồm các bảng :
tblSinhVien(MaSV, Hoten, Ngaysinh, Noisinh, Gioitinh, Diachi, Makhoa,
LopNC)
tblKhoa(Makhoa, Tenkhoa)
tblLopHP(MaLopHP, TenLopHP, MaSV, MaMon)
tblMonHoc(Mamon, Tenmon, Sohocphan, Giaovien)
tblDiem(MaLopHP, MaSV, Diem, HocKy)
Trong đó:
MaSV: Mã sinh viên;
Hoten: Họ tên sinh viên;
Ngaysinh: Ngày sinh;
Noisinh: Nơi sinh;
Gioitinh: Giới tính;
Diachi: Địa chỉ;
Makhoa: Mã khoa;
LopNC: Tên lớp niên chế;
Tenkhoa: Tên khoa;
MaLopHP: Mã lớp học phần.
TenLopHP: Tên lớp học phần.
Mamon: Mã môn học;
Tenmon: Tên môn học;
Tập bài giảng Thực hành kỹ thuật lập trình
287
Sohocphan: Số học phần;
Giaovien: Họ tên giáo viên giảng dạy;
Diem: Điểm của môn học tƣơng ứng với từng sinh viên;
HocKy: Học kỳ có giá trị là số nguyên bắt đầu từ 1.
Công việc 1: Tạo cơ sở dữ liệu trên.
Công việc 2. Thiết kế các form để thực hiện cập nhật dữ liệu cho các bảng trên:
1. Thiết kế form dạng bản ghi thực hiện việc cập nhật dữ liệu cho bảng
tblSinhVien.
2. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu cho bảng tblKhoa.
3. Thiết kế form dạng lƣới thực hiện việc cập nhật dữ liệu cho bảng tblMonHoc.
4. Thiết kế form dạng một nhiều thực hiện việc cập nhật dữ liệu cho bảng
tblDiem.
5. Thiết kế các Form tìm kiếm thông tin sinh viên, thông tin khoa, thông tin về
môn học và điểm của sinh viên.
6. Thiết kế Form chung và gọi các Form đã tạo ở các công việc trên
3.4. Bài tập về nhà
Bài 1
Cho cơ sở dƣ̃ liêụ Quản lý khách saṇ của một khách sạn gồm 3 bảng:
Phong(MaPH, LoaiP, HangP, DonGia, TinhTrang): Lƣu thông tin về các phòng
của khách sạn.
KH(SoCMT, Hoten, Gioitinh): Lƣu thông tin về khách hàng thuê phòng.
ThueP(SoCMT, MaPH, NgayDen, NgayDi, TienSDDV): Lƣu thông tin về quá
trình thuê phòng của khách hàng
Trong đó:
MaPH: mã phòng;
LoaiP: Loại phòng (Phòng đơn, Phòng đôi, Phòng ba);
HangP: Hạng phòng (Thƣờng, VIP, Sang);
DonGia: Đơn giá;
TinhTrang: Tình trạng phòng(Có, Không);
SoCMT: Số chứng minh thƣ nhân dân của khách hàng;
Hoten: Họ và tên khách hàng;
Gioitinh: Giới tính (Nam, Nữ);
NgayDen: Ngày đến;
NgayDi: Ngày đi;
Tiền SDDV: Tiền sử dụng dịch vụ của khách hàng;
Công việc 1:
Tập bài giảng Thực hành kỹ thuật lập trình
288
Sƣ̉ duṇg SQL Server thƣc̣ hiêṇ các công việc sau:
a) Tạo cấu trúc các bảng trên .
b) Nhâp̣ vào mỗi bảng ít nhất 3 bản ghi.
c) Tạo mối quan hệ giữa các bảng dữ liệu.
Yêu cầu:
- Chọn kiểu dữ liệu cho các trƣờng phù hợp giúp dễ dàng xử lý dữ liệu
- Mỗi bảng phải chỉ ra đƣợc khóa chính
- Dữ liệu nhập vào phải phù hợp với thực tế.
Công việc 2:
Tạo Form quản lý phòng dùng để nhập dữ liệu cho bảng “Phong” theo mẫu sau :
Hình 3. 42
Yêu cầu :
a) Combobox loại phòng nhận 3 giá trị: phòng đơn, phòng đôi, phòng ba.
Combobox hạng phòng nhận 3 giá trị: Thƣờng, Sang, Vip. Khi Load Form: Thông tin
trong bảng “Phong” đƣơc̣ hiển thi ̣ lên lƣới . Khi kích choṇ một dòng trên lƣới thì các
thông tin của dòng đó đƣợc hiển thị lên các Textbox và các Combobox tƣơng ứng .
b) Nút Thêm: Phải bổ sung đƣợc bản ghi vào bảng “Phong” đồng thời cập nhật
thông tin vừa nhập lên lƣới; không cho phép nhập trùng mã phòng, tình trạng phòng
mặc định là “Không”.
Tập bài giảng Thực hành kỹ thuật lập trình
289
c) Nút Sƣ̉a: Phải sửa đƣợc thông tin của bản ghi đƣợc chọn vào bảng “Phong”
đồng thời cập nhật thông tin vừa sửa lên lƣới; không cho phép sửa mã phòng.
d) Nút Xóa: Phải xóa đƣợc tất cả các dòng đƣợc chọn đồng thời cập nhật thông tin
vừa xóa lên lƣới.
e) Nút Thoát: Phải hiển thị đƣợc hộp thoại xác nhận có muốn thoát không và xử lý
đƣợc việc đóng hoặc hủy việc đóng Form.
Công việc 3:
Tạo Form quản lý khách thuê phòng dùng để nhập thông tin thuê phòng theo
mâũ sau:
Hình 3. 43
Yêu cầu :
a) Combobox Tình trạng phòng nhận 2 giá trị: Có, Không; Combobox loại phòng
nhận 3 giá trị : Phòng đơn , Phòng đôi , Phòng ba ; Combobox giới tính nhận 2 giá trị :
Nam, Nữ. Khi Load Form : Thông tin của những khách thuê phòng chƣa thanh toán
đƣơc̣ hiển thi ̣ lên lƣới Chi tiết khách hàng . Khi kích choṇ một dòng trên lƣới Chi tiết
Tập bài giảng Thực hành kỹ thuật lập trình
290
khách hàng thì hiển thi ̣ thông tin khách hàng đó lên các Textbox và Combobox tƣơng
ứng trong thông tin khách thuê phòng.
b) Nút Xem theo tiǹh traṇg : Khi ngƣời dùng choṇ trong Combo Tình traṇg phòng
rồi nhấn vào nút Xem theo tiǹh traṇg , thông tin về các phòng se ̃đƣơc̣ hiển thi ̣ lên
lƣới Chi tiết phòng.
c) Nút Xem theo loại phòng : Khi ngƣời dùng choṇ trong Combo Loại phòng rồi
nhấn vào nút Xem theo loại phòng , thông tin về các phòng se ̃đƣơc̣ hiển thi ̣ lên lƣới
Chi tiết phòng.
d) Nút Nhập: Đƣa toàn bộ các Mã Phòng có Tình trạng là “Không” vào Combobox
Mã Phòng. Nút nhập phải bổ sung đƣợc các thông tin về khách hàng vào bảng “KH”
trong cơ sở dữ liệu nếu khách hàng đó chƣa có trong bảng “KH”; thông tin về thuê
phòng vào bảng “ThueP” và hiển thị lên lƣới . Yêu cầu : ngày đến lấy theo ngày hiện
tại; ngày đi và tiền sử dụng dịch vụ để trống; đồng thời cập nhật Tình trạng của phòng
đó trong bảng “Phong” thành “Có”.
e) Nút Sƣ̉a: Phải sửa đƣợc các thông tin về họ tên, giới tính của bản ghi đƣợc chọn
trên lƣới chi tiết khách hàng vào bảng „KH‟ và hiện thông tin vừa sửa lên lƣới.
f) Nút Xóa: Phải xóa đƣợc thông tin thuê phòng trong bảng “ThueP” của các dòng
đƣợc chọn trên lƣới; cập nhật Tình trạng của các phòng đó trong bảng “Phong” thành
“Không”; đồng thời cập nhật thông tin sau khi xóa lên lƣới.
g) Nút Thoát: Phải hiển thị đƣợc hộp thoại xác nhận có muốn thoát không và xử lý
đƣợc việc đóng hoặc hủy việc đóng Form.
Bài 2
Cho cơ sở dƣ̃ liêụ Quản lý điểm gồm các bảng :
tblSinhVien(MaSV,Hoten,Ngaysinh,Noisinh,Gioitinh,Diachi,Makhoa)
tblKhoa(Makhoa, Tenkhoa)
tblMonHoc(Mamon, Tenmon, Makhoa, Sohocphan, Giaovien)
tblDiem(Mamon, MaSV, Diem)
Công việc 1
Hãy sử dụng hệ quản trị CSDL SQL Server thực hiện các yêu cầu sau:
a) Tạo các bảng trên.
b) Tạo các ràng buộc giữa các bảng .
c) Nhâp̣ vào mỗi bảng từ 5 đến 10 dòng dữ liệu.
Công việc 2:
Thiết kế Form frmMain theo mẫu sau:
Tập bài giảng Thực hành kỹ thuật lập trình
291
Hình 3. 44
Viết lệnh sao cho khi ngƣời sử dụng chọn thực đơn Quản lý Quản lý điểm,
Quản lý môn học thì hệ thống mở Form frmDiem, frmMonHoc tƣơng ứng.
Công việc 3:
Sƣ̉ duṇg cơ sở dƣ̃ liêụ ở câu 1, tạo form theo mẫu và thực hiện các yêu cầu sau :
Hình 3. 45
Yêu cầu :
a) Khi chƣơng trình thực thi frmMonHoc se ̃hiển thị toàn bộ danh sách môn
học đƣợc nạp từ cơ sở dƣ̃ liêụ vào Listview đồng thời nút Xóa , Sửa và các
TextBox, combobox sẽ mờ đi (vô hiệu hóa).
b) Khi click vào nút “Thêm” thì nó trở thành nút “Lƣu”, các TextBox và
combobox sẽ sáng (cho phép hoạt động) để nhập thông tin môn học (có
kiểm tra trùng mã môn học), toàn bộ mã khoa trong bảng tblkhoa đƣợc load
Tập bài giảng Thực hành kỹ thuật lập trình
292
lên combobox mã khoa. Khi Click vào nút “Lƣu” thì dữ liệu vừa nhập sẽ
đƣợc lƣu lại trong cơ sở dữ liệu đồng thời cập nhật lại ListView.
c) Nút “Xóa” sẽ sáng khi ngƣời sử dụng click vào ListView và khi ngƣời sử
dụng nhấn nút xóa thì sẽ xóa môn học khỏi CSDL và cập nhật lại ListView.
d) Nút “Sửa” sẽ sáng lên khi ngƣời dùng click vào ListView và nút sửa cho
phép sửa thông tin của phần tử đƣơc̣ chọn và lƣu laị trong cơ sở dƣ̃ liêụ.
Công việc 4:
Sƣ̉ duṇg cơ sở dƣ̃ liêụ ở câu 1, tạo form theo mẫu và thực hiện các yêu cầu sau :
Hình 3. 46
Yêu cầu :
1. Khi chƣơng trình thực thi frmDiem sẽ hiển thị toàn bộ danh sách điểm của sinh
viên đƣợc nạp từ cơ sở dƣ̃ liêụ vào Listview , khi ngƣời dùng kích vào listview
thì thông tin của phần tử đang chọn hiện lên trên textbox và combobox tƣơng
ứng.
2. Xây dựng chức năng “Thêm” để thêm thông tin điểm vào trong cơ sở dƣ̃ liêụ và
cập nhật lại trong ListView . Lƣu ý: Nếu dữ liệu nhập không đúng chƣơng trình
sẽ báo lỗi và không thực hiện chƣ́c năng “Thêm” .
3. Xây dựng chức năng “XÓA” xóa tất cả các phần tử đƣợc chọn trên listview và
cập nhật lại listview sau khi xóa.
4. Xây dƣṇg chƣ́c năng “SỬA” cho phép sửa thông tin của phần tử đƣơc̣ chọn và
lƣu laị trong cơ sở dƣ̃ liêụ, cập nhật lại trên listview.
5. Xây dƣṇg chƣ́c năng “TÌM KIẾM” sinh viên theo khóa tìm kiếm là : MaSV,
TênSV.
Tập bài giảng Thực hành kỹ thuật lập trình
293
Bài 3
Để quản lý kinh doanh tại một cửa hàng, ta tạo ra một cơ sở dữ liệu có tên là
QLKD có 7 bảng:
Bảng nhà cung cấp: NCC
Tên trƣờng Diễn giải
Mancc Mã nhà cung cấp
Tenncc Tên nhà cung cấp
DiachiNCC Địa chỉ nhà cung cấp
Bảng hóa đơn mua: HDMUA
Tên trƣờng Diễn giải
SoHD Số hóa đơn
Ngaymua Ngày mua
Mancc Mã nhà cung cấp
Bảng Chi tiết hóa đơn mua hàng: CHITIETMUA
Tên trƣờng Diễn giải
SoHD Số hóa đơn
Mahang Mã hàng
Soluongmua Số lƣợng mua
Dongiamua Đơn giá mua
Bảng Hàng: HANG
Tên trƣờng Diễn giải
Mahang Mã hàng
Tenhang Tên hàng
DVT Đơn vị tính
Bảng Hóa đơn bán: HDBAN
Tên trƣờng Diễn giải
SoHDB Số hóa đơn bán
Ngayban Ngày bán
Makh Mã khách
Bảng Chi tiết hóa đơn bán hàng: CHITIETBAN
Tên trƣờng Diễn giải
SoHDB Số hóa đơn bán
Tập bài giảng Thực hành kỹ thuật lập trình
294
Mahang Mã hàng
Soluongban Số lƣợng bán
Dongiaban Đơn giá bán
Bảng Khách: KHACH
Tên trƣờng Diễn giải
Makh Mã khách
Tenkh Tên khách
Diachikh Địa chỉ khách
Công việc 1. Tạo cơ sở dữ liệu QLKD và 7 bảng trên (kiểu dữ liệu của các trƣờng tự
chọn cho phù hợp), Tạo Diagram (sơ đồ) kết nối giữa các bảng trong cơ sở dữ liệu ,
Nhâp̣ vào mỗi bảng ít nhất 3 bản ghi.
Công việc 2
Tạo các form thực hiện việc mua hàng trong cơ sở dữ liệu QLKD; trên form có
lƣới hiển thị dữ liệu và các nút thêm, sửa, lƣu, xóa, thoát.
Công việc 3:
a) Tạo Form thống kê hàng mua đƣa ra các thông tin: Tên hàng, đơn vị tính, nhà
cung cấp, ngày mua, số lƣợng mua, đơn giá mua, thành tiền (số lƣợng mua*đơn giá
mua).
b) Tạo Form thống kê hàng bán đƣa ra các thông tin: Tên hàng, đơn vị tính, khác
hàng, ngày bán, số lƣợng bán, đơn giá bán, thành tiền (số lƣợng bán*đơn giá bán).
c) Tạo Form tìm kiếm thông tin hàng bán theo số hóa đơn bán hàng.
Công việc 4:
Tạo giao diện chính của chƣơng trình gồm menu (hoặc link menu) gọi thực hiện các
phần yêu cầu trong các Công việc 2 và Công việc 3 ở trên
Bài 4
Để quản lý dự án của một Viện Công nghệ thông tin, ta tạo ra một cơ sở dữ liệu
có tên là QLDA có 5 bảng:
Bảng Dự án: DUAN
Tên trƣờng Diễn giải
Mada Mã dự án
Tenda Tên dự án
Congviecda Công việc thực hiện dự án
Songayda Số ngày làm dự án
Bảng nhân viên: NHANVIEN
Tập bài giảng Thực hành kỹ thuật lập trình
295
Tên trƣờng Diễn giải
Manv Mã nhân viên
Hoten Tên nhân viên
SoCMTND Số chứng minh nhân dân
Ngaysinh Ngày sinh
Gioitinh Giới tính
Diachi Địa chỉ
Bảng Chuyên môn: CHUYENMON
Tên trƣờng Diễn giải
Manv Mã nhân viên
Chuyenmon Chuyên môn
Bảng Trình độ: TRINHDO
Tên trƣờng Diễn giải
Manv Mã nhân viên
Trinhdo Trình độ
Bảng Nhân viên – dự án: NHANVIEN_DUAN
Tên trƣờng Diễn giải
Manv Mã nhân viên
Mada Mã dự án
Ngaybd Ngày bắt đầu
Ngaykt Ngày kết thúc
CÔng việc 1
a) Tạo cơ sở dữ liệu QLDA và 5 bảng trên (kiểu dữ liệu của các trƣờng tự chọn
cho phù hợp).
b) Tạo Diagram (sơ đồ) kết nối giữa các bảng trong cơ sở dữ liệu
c) Nhâp̣ vào mỗi bảng ít nhất 3 bản ghi.
Công việc 2:
Tạo các form thực hiện việc quản lý dự án trong cơ sở dữ liệu QLDA; trên form
có lƣới hiển thị dữ liệu và các nút thêm, sửa, lƣu, xóa, thoát.
Công việc 3:
Tập bài giảng Thực hành kỹ thuật lập trình
296
a) Tạo Form thống kê các dự án đang thực hiện của Viện gồm các thông tin: Tên
dự án, công việc thực hiện, ngày bắt đầu, tên nhân viên thực hiện, ngày sinh, địa chỉ.
b) Tạo Form thống kê số lƣợng nhân viên của Viện gồm các thông tin: Tên nhân
viên, ngày sinh, địa chỉ, trình độ, chuyên môn.
c) Tạo Form tìm kiếm nhân viên.
d) Tạo Form tìm kiếm dự án theo tên dự án và theo thời gian.
Công việc 4
Tạo giao diện chính của chƣơng trình gồm menu (hoặc link menu) gọi thực
hiện các phần yêu cầu trong các Công việc 2 và Công việc 3 ở trên
Tập bài giảng Thực hành kỹ thuật lập trình
297
TÀI LIỆU THAM KHẢO
[1]. Phạm Hữu Khang. C#2005 Lập trình cơ bản. NXB Lao động xã hội.2006
[2]. Phạm Hữu Khang. C#2005 Lập trình Windows Forms. NXB Lao động
xã hội. 2006
[3]. Phạm Hữu Khang. C#2005 Lập trình hƣớng đối tƣợng. NXB Lao động
xã hội. 2006
[4]. Phạm Hữu Khang. C#2005 Lập trình cơ sở dữ liệu. NXB Lao động xã
hội. 2006
[5] Erik Brown, Manning. Windows Forms Programming with C#
[6] Jesse Liberty, O‟Reilly. Programming C#
[7] MSDN Library – April 2002.
Các file đính kèm theo tài liệu này:
- tap_bai_giang_thuc_hanh_ky_thuat_lap_trinh_phan_2.pdf