Giáo trình Mô đun Lập trình trực quan
Kiến trúc .NET Framework
.NET Framework là một platform mới làm đơn giản việc phát triển ứng
dụng trong môi trường phân tán của Internet. .NET Framework được thiết kế đầy
đủ để đáp ứng theo quan điểm sau:
Để cung cấp một môi trường lập trình hướng đối tượng vững chắc, trong
đó mã nguồn đối tượng được lưu trữ và thực thi một cách cục bộ. Thực thi cục bộ
nhưng được phân tán trên Internet, hoặc thực thi từ xa.
Để cung cấp một môi trường thực thi mã nguồn mà tối thiểu được việc đóng
gói phần mềm và sự tranh chấp về phiên bản.
Để cung cấp một môi trường thực thi mã nguồn mà đảm bảo việc thực thi
an toàn mã nguồn, bao gồm cả việc mã nguồn được tạo bởi hãng thứ ba hay bất
cứ hãng nào mà tuân thủ theo kiến trúc .NET.
Để cung cấp một môi trường thực thi mã nguồn mà loại bỏ được những lỗi
thực hiện các script hay môi trường thông dịch.
Để làm cho những người phát triển có kinh nghiệm vững chắc có thể nắm
vững nhiều kiểu ứng dụng khác nhau. Như là từ những ứng dụng trên nền
Windows đến những ứng dụng dựa trên web.
Để xây dựng tất cả các thông tin dựa triên tiêu chuẩn công nghiệp để đảm
bảo rằng mã nguồn trên .NET có thể tích hợp với bất cứ mã ng

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Mô đun Lập trình trực quan
/ Tạo ra hằng ký tự khoảng trắng
const char Space = ' ';
// Gán giá trị cho chuỗi
string s = hoten.Trim();
// Đổi chuỗi
string kq = "Chuỗi rỗng!"; if
(s.Length == 0)
return kq;
else
{ kq = "";
string [] s1 = s.Split(Space); foreach (string tu in s1) {
string ss = tu[0].ToString(); kq += ss.ToUpper();
kq += tu.Substring(1,tu.Length-1); kq += " ";}
return kq.Trim();
}
3. Phương thức ( Method )
Thuộc tính (Properties): Thuộc tính là những thông tin có thể thay đổi được.
Thuộc tính truy cập
Thuộc tính Giới hạn truy cập
public Không hạn chế. Những thành viên được đánh dấu public
có thể được dùng bất kỳ các phương thức của lớp, bao
gồm cả những lớp khác.
private Thành viên trong lớp được đánh dấu private chỉ được
dùng các
phương thức của lớp này mà thôi.
Protected Thành viên trong lớp được đánh dấu protected chỉ được
dùng các phương thức của lớp này; và các phương thức
của lớp dẫn xuất từ lớp này.
Internal Thành viên trong lớp được đánh dấu là internal được
dùng các
protected Thànhphương viênthức củatrong bất kỳlớp lớp được nào cùngđánh khối dấu hợp là ngữprotected với lớp
internal internalnày. được dùng các phương thức của lớp này; các
phương thức của lớp dẫn xuất từ lớp này; và các phương
thức của bất kỳ lớp nào trong cùng khối hợp ngữ với lớp
Phương thức (Method)này.
- Phương thức (method) chính là các hàm (function) được tạo trong lớp (class).
- Tên của phương thức thường được đặt theo tên của hành động.
Tham số của phương thức
- Các tham số theo sau tên phương thức và được bọc bên trong dấu ngoặc
tròn ().
- Mỗi tham số phải khai báo kèm theo kiểu dữ liệu.
- Trong C# có 2 dạng truyền tham số:
+ Truyền tham chiếu: dùng thêm từ khóa ref.
+ Truyền tham trị
b) Ví dụ:
* Truyền tham số cho phương thức theo kiểu tham
chiếu public class Hoandoi
{
public void HoanVi(ref int a, ref int b)
{
int c =
a ; a = b
;
b = c ;
}
}
Khi đó: khi gọi hàm HoanVi ta phải truyền tham số dưới dạng tham chiếu như
sau:
HoanDoi s = new HoanDoi();
s.HoanVi(ref a, ref b);
BÀI 5: LẬP TRÌNH KẾT NỐI CSDL
1. Tạo kết nối
- Tên máy được sử dụng (SERVERNAME) là PC-PC
- Database được sử dụng (DATABASENAME) là QuanLyBanHang, gồm có
các table:
+ Nhanvien + HoaDon
+ Sanpham + ChiTietHoaDon
+ Khachhang + ThanhPho
- Với quan hệ (Relationship) như sau:
Khai báo namespace sử dụng
using System.Data.SqlClient;
Khai báo ở mức class
// Chuỗi kết nối
string strConnectionString = "Data Source=SERVERNAME;Initial
Catalog=DATABASENAME;Integrated Security=True";
// Đối tượng kết nối
SqlConnection conn = null;
// Đối tượng đưa dữ liệu vào DataTable dtTABLENAME
SqlDataAdapter daTABLENAME = null;
// Đối tượng hiển thị dữ liệu lên Form DataTable
dtTABLENAME = null;
// Khởi động kết nối
conn = new SqlConnection(strConnectionString);
// Vận chuyển dữ liệu lên DataTable dtTABLENAME
daTABLENAME = new SqlDataAdapter("SELECT *
FROM TABLENAME",conn);
dtTABLENAME = new DataTable();
daTABLENAME.Fill(dtTABLENAME);
Khai báo ở Form Load
// Khởi động kết nối
conn = new SqlConnection(strConnectionString);
// Vận chuyển dữ liệu lên DataTable dtTABLENAME
daTABLENAME = new SqlDataAdapter("SELECT *
FROM TABLENAME",conn);
dtTABLENAME = new DataTable();
daTABLENAME.Fill(dtTABLENAME);
Giải phóng tài nguyên
. Chuyển Form về chế độ Design View
. Ở cửa sổ properties của form đang chọn, click Events
. Nhắp đúp lên sự kiện FormClosing
. Viết code cho sự kiện này như sau:
// Giải phóng tài nguyên
dtTABLENAME.Dispose();
dtTABLENAME = null;
// Hủy kết nối
conn = null;
2. Sử dụng control
3. Các thao tác trên dữ liệu
Xóa (btnXoa): xóa record hiện hành ra khỏi table KhachHang.
* Hướng dẫn:
- Xóa: Nhắp đúp vào Button Xóa, thực hiện như sau
// Mở kết
nối
conn.Open
(); try
{
// Thực hiện lệnh
SqlCommand cmd = new
SqlCommand(); cmd.Connection =
conn; cmd.CommandType =
CommandType.Text;
// Lấy thứ tự record hiện hành
int r = dgvKHACHHANG.CurrentCell.RowIndex;
// Lấy MaKH của record hiện hành
string strMAKH =
dgvKHACHHANG.Rows[r].Cells[0].Value.ToString();
// Viết câu lệnh SQL
cmd.CommandText = System.String.Concat("Delete From
KhachHang Where MaKH='" + strMAKH + "'");
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
// Cập nhật lại DataGridView
LoadData();
// Thông báo
MessageBox.Show("Đã xóa xong!");
}
catch (SqlException)
{
MessageBox.Show("Không xóa được. Lỗi rồi!!!");
}
// Đóng kết nối
conn.Close();
+ 4 TextBox: txtMaKH, txtTenCty, txtDiachi, txtDienthoai
+ 1 ComboBox: cbThanhpho
- 4 Button: btnThem, btnSua, btnLuu, btnHuy
* Yêu cầu:
- Thiết kế không cho người dùng thao tác (Enabled = false) khi load form:
+ Panel
+ Các Button Lưu, Hủy
- Điều chỉnh lại thuộc tính (properties) của DataGridView
+ AllowUserToAddRows = False
+ EditMode = EditProgrammatically
- Khi Form load: đưa dữ liệu từ table KhachHang lên DataGridView
(dgvKHACHHANG),
có bẫy lỗi.
- Nhắp vào Button ReLoad: load lại nội dung table KhachHang lên
dgvKHACHHANG
- Nhắp vào Button Thêm:
+ Xóa trống các đối tượng trong Panel.
+ Cho phép nhập thông tin khách hàng vào các đối tượng trên Panel
+ Không cho phép thao tác trên các Button: Thêm, Sửa, Xóa, Thoát.
+ Cho phép thao tác trên các Button: Lưu, Hủy.
- Nhắp vào Button Sửa:
+ Đưa thông tin của khách hàng đang được chọn trong DataGridView lên Panel.
+ Cho phép nhập / sửa thông tin khách hàng vào / trong các đối tượng trên Panel.
+ Không cho phép thao tác trên các Button: Thêm, Sửa, Xóa, Thoát.
+ Cho phép thao tác trên các Button: Lưu, Hủy.
- Nhắp vàp Button Lưu.
+ Insert / Update thông tin khách hàng từ Panel vào table KhachHang.
+ ReLoad lại DataGridView
- Nhắp vàp Button Hủy:
+ Xóa trống các đối tượng trong Panel.
+ Không cho phép nhập thông tin khách hàng vào các đối tượng trên Panel
Hướng dẫn:
- Thiết kế bổ sung Panel với 4 TextBox và 1 ComboBox, Panel có Enabled =
false
- Ờ mức class, bổ sung khai báo biến như sau:
// Khai báo biến kiểm tra việc Thêm hay Sửa dữ liệu
bool Them;
- Hàm LoadData(): bổ sung dưới hàng
// Đưa dữ liệu lên DataGridView
dgvKHACHHANG.DataSource = dtKhachHang;
đoạn code sau
// Xóa trống các đối tượng trong Panel
this.txtMaKH.ResetText(); this.txtTenCty.ResetText();
this.txtDiaChi.ResetText();
this.txtDienThoai.ResetText();
// Không cho thao tác trên các nút Lưu / Hủy
this.btnLuu.Enabled = false; this.btnHuy.Enabled = false;
this.panel.Enabled = false;
// Cho thao tác trên các nút Thêm / Sửa / Xóa / Thoát
this.btnThem.Enabled = true; this.btnSua.Enabled =
true; this.btnXoa.Enabled = true;
this.btnThoat.Enabled = true;
- Thêm: nhắp đúp vào button Thêm, bổ sung đoạn code
// Kich hoạt biến Them
Them = true;
// Xóa trống các đối tượng trong Panel
this.txtMaKH.ResetText(); this.txtTenCty.ResetText();
this.txtDiaChi.ResetText();
this.txtDienThoai.ResetText();
// Cho thao tác trên các nút Lưu / Hủy / Panel
this.btnLuu.Enabled = true; this.btnHuy.Enabled = true;
this.panel.Enabled = true;
// Không cho thao tác trên các nút Thêm / Xóa / Thoát this.btnThem.Enabled =
false;
this.btnSua.Enabled = false; this.btnXoa.Enabled =
false; this.btnThoat.Enabled = false;
// Đưa dữ liệu lên ComboBox this.cbThanhPho.DataSource =
dtThanhPho; this.cbThanhPho.DisplayMember =
"TenThanhPho"; this.cbThanhPho.ValueMember = "ThanhPho";
// Đưa con trỏ đến TextField txtMaKH
this.txtMaKH.Focus();
- Sửa: Nhắp đúp vào button Sửa, bổ sung đoạn
code
// Kích hoạt biến Sửa
Them = false;
// Đưa dữ liệu lên ComboBox this.cbThanhPho.DataSource =
dtThanhPho; this.cbThanhPho.DisplayMember =
"TenThanhPho"; this.cbThanhPho.ValueMember = "ThanhPho";
// Cho phép thao tác trên Panel this.panel.Enabled =
true;
// Thứ tự dòng hiện hành
int r = dgvKHACHHANG.CurrentCell.RowIndex;
// Chuyển thông tin lên panel this.txtMaKH.Text =
dgvKHACHHANG.Rows[r].Cells[0].Value.ToString();
this.txtTenCty.Text =
dgvKHACHHANG.Rows[r].Cells[1].Value.ToString();
this.txtDiaChi.Text =
dgvKHACHHANG.Rows[r].Cells[2].Value.ToString();
this.cbThanhPho.SelectedValue =
dgvKHACHHANG.Rows[r].Cells[3].Value.ToString();
this.txtDienThoai.Text =
dgvKHACHHANG.Rows[r].Cells[4].Value.ToString();
// Cho thao tác trên các nút Lưu / Hủy / Panel
this.btnLuu.Enabled = true; this.btnHuy.Enabled = true;
this.panel.Enabled = true;
// Không cho thao tác trên các nút Thêm / Xóa / Thoát this.btnThem.Enabled =
false;
this.btnSua.Enabled = false; this.btnXoa.Enabled =
false; this.btnThoat.Enabled = false;
// Đưa con trỏ đến TextField txtMaKH
this.txtMaKH.Focus();
- Lưu: Nhắp đúp vào button Lưu, bổ sung đoạn code
// Mở kết nối
conn.Open();
// Thêm dữ liệu
if (Them)
{
Try { // Thực hiện lệnh
SqlCommand cmd = new SqlCommand(); cmd.Connection
= conn;
cmd.CommandType = CommandType.Text;
// Lệnh Insert InTo
cmd.CommandText = System.String.Concat("Insert Into
KhachHang Values(" + "'" +
this.txtMaKH.Text.ToString() + "','" +
this.txtTenCty.Text.ToString() + "','" +
this.txtDiaChi.Text.ToString() + "','" +
this.cbThanhPho.SelectedValue.ToString() + "','" +
this.txtDienThoai.Text.ToString() + "')");
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
// Load lại dữ liệu trên DataGridView LoadData();
// Thông báo
MessageBox.Show("Đã thêm xong!");
}
catch (SqlException)
{
MessageBox.Show("Không thêm được. Lỗi rồi!");
}
}
if (!Them)
{
Try { // Thực hiện lệnh
SqlCommand cmd = new SqlCommand(); cmd.Connection =
conn; cmd.CommandType = CommandType.Text;
// Thứ tự dòng hiện hành
int r = dgvKHACHHANG.CurrentCell.RowIndex;
// MaKH hiện hành string strMAKH =
dgvKHACHHANG.Rows[r].Cells[0].Value.ToString();
// Câu lệnh SQL
cmd.CommandText = System.String.Concat("Update KhachHang Set
TenCty='" + this.txtTenCty.Text.ToString() + "', DiaChi='"
+ this.txtDiaChi.Text.ToString() + "', ThanhPho='" +
this.cbThanhPho.SelectedValue.ToString() + "', DienThoai='" +
this.txtDienThoai.Text.ToString() + "' Where MaKH='" + strMAKH + "'");
// Cập nhật
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
// Load lại dữ liệu trên DataGridView
LoadData();
// Thông báo
MessageBox.Show("Đã sửa xong!"); catch
(SqlException)
{
MessageBox.Show("Không sửa được. Lỗi rồi!");
}
}
// Đóng kết nối
conn.Close();
- Hủy: Nhắp đúp vào button Hủy, bổ sung đoạn code
// Xóa trống các đối tượng trong Panel
this.txtMaKH.ResetText(); this.txtTenCty.ResetText();
this.txtDiaChi.ResetText();
this.txtDienThoai.ResetText();
// Cho thao tác trên các nút Thêm / Sửa / Xóa / Thoát
this.btnThem.Enabled = true; this.btnSua.Enabled =
true; this.btnXoa.Enabled = true;
this.btnThoat.Enabled = true;
// Không cho thao tác trên các nút Lưu / Hủy / Panel
this.btnLuu.Enabled = false;
this.btnHuy.Enabled = false;
this.panel.Enabled = false;
BAI 6: XÂY DỰNG ỨNG DỤNG
1. Chuẩn bị
- Tên máy được sử dụng (SERVERNAME) là PC-PC (thay đổi cho đúng máy
đang dùng!)
- Database được sử dụng (DATABASENAME) là QuanLyBanHang, gồm có
các table sau:
+ ThanhPho + Sanpham
+ Khachhang + Hoadon
+ Nhanvien + ChitietHoadon
- Với quan hệ (Relationship) như sau:
- Khởi động SQL Server 2008, tạo một DataBase mới có tên
QuanLyBanHang, import dữ liệu từ file QuanLyBanHang.mdb
- Khởi động Visual Studio 2008, tạo một project mới (Windows Forms
Application), lưu với tên QUANLYBANHANG
2. Sử dụng Control
* Yêu cầu:
Khi Form1 được thực hiện sẽ thể hiện màn hình “Đăng nhập hệ thống” là
Form2.
* Hướng dẫn:
- Ờ mức class, khai báo hàm frmLogin()
như sau: Form frm = new Form2();
frm.ShowDialog();
- Form Load:
frmlogin();
(Form2 – Màn hình Đăng nhập - login)
Viết chương trình thể hiện màn hình “Đăng nhập” (login) như sau:
Form1 – Hệ thống Menu)
Thêm vào Form1, hệ thống menu như sau
Form1 – Menu Hệ thống)
* Yêu cầu: Trên Form1, viết lệnh cho menu hệ thống như sau
- Khi chọn menu “Hệ thống \ Đăng nhập” sẽ thực hiện đăng nhập lại hệ
thống (Form2).
- Khi chọn menu “Hệ thống \ Thoát” sẽ dừng chương trình.
* Hướng dẫn:
- Menu “Hệ thống \ Đăng nhập”: Nhắp đúp vào menu “Hệ thống \ Đăng
nhập”, gõ vào
đoạn code sau:
frmlogin();
- Menu “Hệ thống \ Thoát”: Nhắp đúp vào menu “Hệ thống \ Đăng
nhập”, gõ vào đoạn code sau:
DialogResult traloi;
traloi = MessageBox.Show("Chắc không?", "Trả lời",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (
traloi == DialogResult.OK)
Application.Exit();
3. Sử dụng CSDL
a) (Form1 – Menu Danh mục)
* Yêu cầu: Trên Form1, viết lệnh cho menu danh mục như sau
- Viết hàm XemDanhMuc(int intDanhMuc) thực hiện mở Form3 và
gánForm3.Text = intDanhMuc.
- Khi chọn menu “Xem Danh mục \ ” sẽ thực hiện gọi hàm
XemDanhMuc(), với là giá trị tương ứng với danh mục được
chọn.
* Hướng dẫn:
- Ờ mức class, khai báo hàm XemDanhMuc(int intDanhMuc) như sau:
// Hàm xemm danh mục
void XemDanhMuc(int intDanhMuc)
{
Form frm = new Form3();
frm.Text = intDanhMuc.ToString();
frm.ShowDialog();
}
- Menu “Xem Danh mục \ Danh mục Thành Phố”: Nhắp đúp vào
menu “Xem Danh
mục \ Danh mục Thành Phố”, gõ vào đoạn code sau:
XemDanhMuc(1);
- Menu “Xem Danh mục \ Danh mục Khách Hàng”: Nhắp đúp vào
menu “Xem Danh
mục \ Danh mục Khách Hàng”, gõ vào đoạn code sau:
XemDanhMuc(2);
- Menu “Xem Danh mục \ Danh mục Nhân Viên”: Nhắp đúp vào
menu “Xem Danh
mục \ Danh mục Nhân Viên”, gõ vào đoạn code sau:
XemDanhMuc(3);
- Menu “Xem Danh mục \ Danh mục Sản Phẩm”: Nhắp đúp vào
menu “Xem Danh mục \ Danh mục Sản Phẩm”, gõ vào đoạn code sau:
XemDanhMuc(4);
- Menu “Xem Danh mục \ Danh mục Hóa Đơn”: Nhắp đúp vào menu “Xem
Danh mục
\ Danh mục Hóa Đơn”, gõ vào đoạn code sau:
XemDanhMuc(5);
- Menu “Xem Danh mục \ Danh mục Chi Tiết Hóa Đơn”: Nhắp đúp vào
menu “Xem
Danh mục \ Danh mục Chi Tiết Hóa Đơn”, gõ vào đoạn code sau:
XemDanhMuc(6);
b) (Form3) Thiết kế Form3 theo mẫu như sau
(Form4 – Menu Quản lý danh mục đơn \ Danh mục Thành Phố )
* Yêu cầu:
- Trên Form1: khi chọn menu “Quản lý danh mục đơn \ Danh mục Thành
Phố” sẽ mở Form4.
- Trên Form4: Thiết kế như sau:
(Form5 – Menu Quản lý danh mục đơn \ Danh mục Khách Hàng)
* Yêu cầu:
- Trên Form1: khi chọn menu “Quản lý danh mục đơn \ Danh mục Khách
Hàng” sẽ mở Form5.
- Trên Form5: thiết kế như sau
Form6 – Menu Quản lý danh mục đơn \ Danh mục Nhân Viên)
* Yêu cầu:
- Trên Form1: khi chọn menu “Quản lý danh mục đơn \ Danh mục Nhân
Viên” sẽ mở Form6.
- Trên Form6: thiết kế như sau
File đính kèm:
giao_trinh_mo_dun_lap_trinh_truc_quan.pdf

