Tổng quan
Làm quen môi trường phát triển ứng dụng
Tạo Project, tổ chức cây thư mục
Thực hiện các thao tác: tạo, thêm, xoá các đối tượng
Hình 1: Tổ chức thư mục trong project
Thiết kế giao diện người dùng
Tạo một ứng dụng dạng Windows Forms Application có tên BaiTap lưu tại thư mục làm việc
Lần lượt tạo các thư mục dùng để lưu trữ bài tập (hình 1)
Để thêm hoặc xóa một đối tượng trong ứng dụng, bạn chỉ cần mở cửa sổ Solution Explorer, nhấp chuột phải vào Project và chọn "Add" để thêm đối tượng mới Để xóa một đối tượng, hãy nhấp chuột phải vào đối tượng cần xóa và chọn "Delete".
Màn hình chào 1
Yêu cầu: Xây dựng form xuất câu chào
Thực thi ứng dụng :nhấn phím F5 (DEBUG/Start Debugging) hoặc click Start
Thiết kế giao diện người dùng
thManHinhChao1: form (name = frm01Chao.cs)
Text: Trung tâm tin học ĐH KHTN
Các thể hiện phía dưới đều nằm trên form
Nhập thuộc tính Text của Label
Mở cửa sổ thuộc tính và thay đổi Font (font chữ) , ForeColor (màu chữ)
Màn hình chào 2
Yêu cầu: Xây dựng Form nhận họ tên nhập vào và xuất ra câu chào
Nhập họ tên rồi click nút thực hiện và xuất ra câu chào “Chào bạn ”
Thiết kế giao diện người dùng
thManHinhChao2: form (name= “frm02Chao.cs”)
(Các thể hiện phía dưới đều nằm trong form)
Lời chào = “Chào bạn ” + Họ tên đã nhập
Gán thuộc tính Text của Label với giá trị “Chào bạn “+ biến họ tên
Thông tin cá nhân
Yêu cầu:Xây dựng form thông tin cá nhân
Hình 3: Màn hình thông tin cá nhân
Nhập họ tên, ngày sinh, sở thích rồi Click nút xác nhận xem kết quả
thThongTinCaNhan: form (name=”frm03CaNhan.cs”)
Text: Thông tin cá nhân
(Các thể hiện phía dưới nằm trong form)
Thể hiện xuất: họ tên + ngày sinh + sở thích
Giao diện Windows Forms Application
Thông tin học viên
Yêu cầu: Tạo form thông tin học viên như sau
Hình 1: Màn hình nhập thông tin học viên
Nhập đầy đủ các thông tin của học viên rồi Click nút Cập nhật hoặc Click nút Thêm mới để nhập lại thông tin khác
Thiết kế giao diện người dùng:
thThongTinHocVien: form (name="frm02HocVien.cs")
* (Các thể hiện phía dưới đều nằm trong form)
thHinhAnh: PictureBox (xuất hình ảnh)
thCapNhat: Button (xử lý xuất thông báo Đã cập nhật thành công)
thThemMoi: Button (xử lý xóa trắng các điều khiển đưa con trỏ lên họ tên)
thDongForm: Button (xử lý đóng Form)
Họ tên, ngày ghi danh, giới tính, sở thích
Thông báo “Đã cập nhật thành công” bằng MessagBox
Thông tin hàng hóa
Yêu cầu: Tạo form hiển thị thông tin Hàng hóa như sau
Hình 2: Màn hình nhập thông tin hàng hóa
Nhập tên hàng, số lượng, tổng tiền, thanh toán, vận chuyển rồi Click nút chức năng xuất ra TextBox hoặc xuất ra MessageBox để xem
Thiết kế giao diện người dùng:
thThongTinHangHoa: form (name="frm02HangHoa.cs")
* (Các thể hiện phía dưới đều nằm trong form)
Tên hàng, số lượng, tổng tiền, thanh toán, vận chuyển
Kiểu dữ liệu và biến
Tính chu vi và diện tích hình tròn
Yêu cầu: Xây dựng chương trình tính diện tích và chu vi hình tròn
Hình 1: Màn hình tính diện tích chu vi hình tròn
Nhập bán kính Click nút tính và xem kết quả Chu vi, Diện tích hình tròn
Thiết kế giao diện người dùng
thTinhChuViDienTichHinhTron: form (name = “frm01HinhTron.cs”)
Text: Tính chu vi, diện tích hình tròn
Các thể hiện phía dưới nằm trong form
thChuVi: TextBox (xuất thông tin)
thDienTich: TextBox (xuất thông tin)
Bán kính kiểu số thực double
Chu vi, Diện tích kiểu số thực doulbe
Diện tích = Bán kính * Bán kính * PI
Chu vi = Bán kính * 2 * PI
Khai báo biến: bán kính, diện tích, chu vi
Nhận giá trị nhập vào cho biến bán kính từ thể hiện nhập bán kính
Tính chu vi và diện tích của hình tròn
Xuất kết quả ra thể hiện chu vi, diện tích
Hướng dẫn private void btnTinh_Click(object sender, EventArgs e)
To calculate the circumference and area of a circle, first convert the radius from the input field to a double data type using `double.Parse(txtBanKinh.Text)` The circumference is then determined using the formula `chuVi = Math.PI * banKinh * 2`, while the area is calculated with `dienTich = Math.PI * banKinh * banKinh` Finally, the results are rounded to two decimal places and displayed in the respective text fields with `txtChuVi.Text = Math.Round(chuVi, 2).ToString()` and `txtDienTich.Text = Math.Round(dienTich, 2).ToString()`.
Xử lý sự kiện Click của Button “Làm lại” private void btnLamLai_Click(object sender, EventArgs e)
{ txtBanKinh.Text = ""; txtDienTich.Text = ""; txtChuVi.Text = ""; txtBanKinh.Focus();
Tính chu vi và diện tích hình chữ nhật (Bài về nhà)
Yêu cầu: Xây dựng chương trình tính chu vi và diện tích hình chữ nhật
Hình 2: Màn hình tính chu vi, diện tích hình chữ nhật
Nhập chiều dài, chiều rộng rồi Click Tính để xem kết quả
Thiết kế giao diện người dùng
thTinhChuViDienTichHinhChuNhat: form (name = frm02HinhChuNhat.cs)
Text: Tính chu vi, diện tích hình chữ nhật
Các thể hiện phía dưới đều nằm trên form
thChuVi: TextBox (xuất thông tin)
thDienTich: TextBox (xuất thông tin)
Chu vi = (chiều dài + chiều rộng)*2;
Diện tích = (chiều dài * chiều rộng)
Khai báo biến chiều dài, chiều rộng, diện tích, chu vi kiểu số double
Tính chu vi và diện tích theo qui tắc
Xuất chu vi ra thể hiện chu vi, diện tích ra thể hiện diện tích
Tính chu vi và diện tích tam giác
Yêu cầu:Tạo form tính chu vi, diện tích tam giác
Hình 3: Màn hình tính chu vi, diện tích tam giác
Nhập vào chiều dài 3 cạnh của tam giác kiểu số thực double rồi click Trường hợp
1 để xuất ra Chu vi, Diện tích : kiểu số thực double
Nhập vào chiều dài 3 cạnh của tam giác kiểu số thực int rồi click Trường hợp 2 để xuất ra Chu vi, Diện tích : kiểu số thực double
Nhập vào chiều dài 3 cạnh của tam giác kiểu số thực int rồi click Trường hợp 3 để xuất ra Chu vi, Diện tích : kiểu số thực float
Thiết kế giao diện người dùng
thTinhChuViDienTichTamGiac: form (name=frm03TamGiac.cs)
Text = “Tính chu vi, diện tích hình tam giác”
Các thể hiện phía dưới đều nằm trong form
thChuVi: TextBox (xuất thông tin)
thDienTich: TextBox (xuất thông tin)
Chu vi = Cạnh A + Cạnh B + Cạnh C
Tính số nút của 1 số nguyên (Bài về nhà)
Yêu cầu: Tạo form nhập vào 1 số nguyên n có 4 chữ số, tính và xuất ra số nút của số nguyên n
Ví dụ: n = 1234 số nút = 0 n = 2023 số nút = 7
Hình 4: Màn hình tính số nút
Nhập vào một số có 4 chữ số rồi Click nút Tính và xuất ra số nút của số nguyên
Thiết kế giao diện người dùng
thTinhSoNnut: form (name = frm04TinhSoNut.cs)
Các thể hiện phía dưới đều nằm trên form
thSoNut: TextBox (xuất kết quả)
Khai báo biến số nguyên n và 4 biến số cho hàng ngàn, trăm, chục, đơn vị
Nhận giá trị số nguyên n nhập vào
Dùng toán tử / và % để tách hàng ngàn, trăm, chục, đơn vị từ số n
Cộng các giá trị hàng ngàn, trăm, chục, đơn vị và %10 lấy số nút
Sử dụng kiểu tham chiếu
Mục tiêu: Sử dụng các kiểu dữ liệu loại tham chiếu
Tách chuỗi họ tên
Yêu cầu: Tạo Form tách chuỗi họ tên
Hình 5: Màn hình tách chuỗi họ tên
Nhập họ tên và Click nút Tách chuỗi để tách ra họ, lót, tên
Thiết kế giao diện người dung
thTachChuoiHoTen: form (name = frm05TachChuoi.cs)
Text: Tách chuỗi họ tên
Các thể hiện phía dưới đều nằm trên form
thHo: TextBox (xuất thông tin)
thLot: TextBox (xuất thông tin)
thTen: TextBox (xuất thông tin)
Khai báo biến nhận họ tên nhập vào
Dùng thuộc tính Length và các phương thức IndexOf, LastIndexOf, Substring của biến kiểu chuỗi để tính toán và lấy các phần họ, tên, lót
Xuất kết quả lên màn hình
3.6 Sử dụng biến tham chiếu
Yêu cầu: Tạo form sử dụng biến tham chiếu
Thực hiện theo thứ tự trên form và suy nghĩ về kết quả
Thiết kế giao diện người dùng
thBienThamChieu: form (name = frm06ThamChieu.cs)
Các thể hiện phía dưới đều nằm trên form
thGanS1BangS2: Button (xử lý)
thGiaTriS2: TextBox (xuất thông tin)
- Khai báo 2 biến kiểu StringBuilder và 2 biến số dùng chung trong Form
StringBuilder s1 = new StringBuilder(), s2 = new StringBuilder();
- Xử lý sự kiện Click của các Button loại biến tham chiếu private void btnCapNhatS1_Click(object sender, EventArgs e)
} private void btnGanS2BangS1_Click(object sender, EventArgs e)
} private void btnCapNhatLaiS1_Click(object sender, EventArgs e)
{ s1.Remove(0, s1.Length); s1.Append(txtSuaS1.Text);
} private void btnXuatS2_Click(object sender, EventArgs e)
Sử dụng kiểu tham chiếu
Sử dụng các cấu trúc điều khiển, cách bẫy lỗi và xử lý lỗi trong C#
Yêu cầu: Tạo màn hình xếp loại học tập có giao diện như sau
Hình 1: Màn hình xếp loại học tập
Nhập điểm học kỳ 1, điểm học kỳ 2 rồi Click nút Đồng ý để xem xếp loại
Thiết kế giao diện người dùng
thXepLoaiHocTap: form (name = frm01XepLoai.cs)
Text: Xếp loại học tập
Các thể hiện phía dưới đều nằm trên form
thXepLoai: TextBox (xuất thông tin)
Điểm học kỳ 1, học kỳ 2
Cấu trúc điều khiển
Xếp loại học tập
Yêu cầu: Tạo màn hình xếp loại học tập có giao diện như sau
Hình 1: Màn hình xếp loại học tập
Nhập điểm học kỳ 1, điểm học kỳ 2 rồi Click nút Đồng ý để xem xếp loại
Thiết kế giao diện người dùng
thXepLoaiHocTap: form (name = frm01XepLoai.cs)
Text: Xếp loại học tập
Các thể hiện phía dưới đều nằm trên form
thXepLoai: TextBox (xuất thông tin)
Điểm học kỳ 1, học kỳ 2
Điểm trung bình = (điểm HK1 + điểm HK2*2)/3
Tính Xếp loại học tập, theo quy tắc sau:
5 Định mức vắng thì:
Tiền thưởng = Tiền thưởng - Số ngày vắng vượt quá định mức * (Tiền thưởng
Lương: (Lương cơ bản * Hệ số lương) + Tiền thưởng
Yêu cầu: xây dựng chương trình hỗ trợ nhập thông tin nhân viên, tính các khoản phạt, thưởng, lương và xuất kết quả ra màn hình
Hình 1: Giao diện thể hiện Quản lý thông tin nhân viên
Hình 2: Giao diện thể hiện MessageBox sau khi nhấn nút Đồng ý
Nhập thông tin của một nhân viên, chọn loại nhân viên
Nhấn vào nút chức năng Đồng ý Xuất thông tin thu nhập của nhân viên lên
Nhấn vào nút Làm lại nếu muốn nhập thông tin nhân viên mới
Phạm vi sử dụng public
* Các thành phần trong class: (Tương tự class NhanVien bài 7.1 và bổ sung thêm)
_DinhMucVang: kiểu int (Mặc định là 3)
DinhMucVang: kiểu int (áp dụng chung cho tất cả đối tượng NhanVien)
Phạm vi sử dụng public
Kế thừa từ class NhanVien
* Các thành phần trong class:
_DonGiaPhat: kiểu int (Mặc định 100000)
DinhMucVang: kiểu int (áp dụng chung cho tất cả đối tượng NhanVienvp)
DonGiaPhat: kiểu int (áp dụng chung cho tất cả đối tượng NhanVienvp)
Phương thức khởi tạo (Constructors)
NhanVienvp (string hoTen, DateTime ngaySinh, DateTime ngayVaoLam, Phai gioiTinh, double heSoLuong)
Gán giá trị cho các thuộc tính tương ứng
NhanVienvp (string hoTen, DateTime ngaySinh, DateTime ngayVaoLam, Phai gioiTinh, double heSoLuong, int soNgayVang)
Gán giá trị cho các thuộc tính tương ứng
Phương thức xử lý tính toán - Methods
Phạm vi sử dụng: public
Qui tắc xử lý: o Tên phương thức: TinhPhat o Kiểu trả về: double o Tham số: Không có
Kết quả trả về: Tiền phạt tính theo công thức o Đơn giá phạt * Số ngày vắng vượt quá định mức
TinhThuong (override phương thức của lớp cha)
Phạm vi sử dụng: public
Qui tắc xử lý: o Tên phương thức: TinhThuong o Kiểu trả về: double o Tham số: Không có
Kết quả trả về: Tiền thưởng tính theo công thức o 10% của (Lương cơ bản * Hệ số lương)
TinhLuong (override phương thức của lớp cha)
Phạm vi sử dụng: public
Qui tắc xử lý: o Tên phương thức: TinhLuong o Kiểu trả về: double o Tham số: Không có
Kết quả trả về: Tiền lương tính theo công thức o (Lương cơ bản * Hệ số lương) + Tiền thưởng – Tiền phạt
ToString (override phương thức của lớp cơ sở)
Phạm vi sử dụng: public
Qui tắc xử lý: o Tên phương thức: ToString o Kiểu trả về: String o Tham số: Không có
Kết quả trả về cung cấp thông tin chi tiết về thu nhập của nhân viên văn phòng, bao gồm họ tên, loại nhân viên, tiền thưởng, tiền phạt, tiền lương và thực lãnh.
Thiết kế class – NhanViensx (Tương tự)
Thiết kế giao diện người dùng:
Text: Quản lý thông tin nhân viên
* Các thể hiện trong form: (Tương tự bài 7.1, bổ sung thêm)
Nhập thông tin nhân viên
Xuất thông tin thu nhập của nhân viên
Quản lý danh sách máy tính (Bài về nhà)
Yêu cầu: Xây dựng chương trình nhập và xuất danh sách Máy tính Trong đó máy tính có 2 loại là Máy tính để bàn và Máy tính xách tay
Máy tính để bàn gồm các thông tin: Số hiệu, Đơn giá, Hãng sản xuất, CPU, RAM
Máy tính xách tay gồm các thông tin: Số hiệu, Đơn giá, Hãng sản xuất, Trọng lượng,
Thời gian PIN,Kích thước màn hình
Xây dựng class MayTinh với các thông tin: Số hiệu, Đơn giá và Hãng sản xuất
Xây dựng phương thức Hiển thị thông tin: cho phép ghi đè (virtual) và trả về chuỗi gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất
Xây dựng class MayTinhDeBan được dẫn xuất từ lớp MayTinh gồm 2 thông tin:
Phương thức khởi tạo (tùy chọn) thông tin của class MayTinh và cộng thêm thông tin về CPU và RAM
Xây dựng class MayTinhXachTay được dẫn xuất từ lớp MayTinh gồm các thông tin:
Trọng lượng, Thời gian PIN, Kích thước màn hình
Phương thức khởi tạo (tùy chọn)
Để cải thiện phương thức hiển thị thông tin trong lớp MayTinh, cần cài đặt lại cách thức tính toán và bổ sung thêm các thông tin quan trọng như trọng lượng, thời gian pin và kích thước màn hình.
Lớp trừu tƣợng, lớp giao tiếp
Quản lý các lớp hình học
Xây dựng một lớp trừu tượng có tên HinhHoc, bao gồm hai phương thức trừu tượng để tính diện tích và chu vi, cùng với một phương thức cụ thể để xuất thông tin Lớp HinhHoc sẽ là nền tảng cho các lớp hình học cụ thể khác, giúp tổ chức và quản lý các phương thức liên quan đến hình học một cách hiệu quả.
{ public abstract double DienTich(); public abstract double ChuVi(); public virtual string XuatThongTin()
{ return "Thông tin của hình ";
Xây dựng các lớp hình tròn, hình chữ nhật, hình tam giác kế thừa lớp trừu tượng
Thông tin của hình tròn có: Bán kính
Thông tin của chữ nhật có: Chiều dài và chiều rộng
Thông tin của hình tam giác có: Cạnh A, cạnh B và cạnh C
Xây dựng lớp HinhTron được dẫn xuất từ lớp HinhHoc: class HinhTron : HinhHoc
{ public double Bankinh { get; set; } public override double Chu_vi()
} public override double Dien_tich()
{ return Math.PI * Bankinh * Bankinh;
} public override string Xuat_thong_tin()
return base.Xuat_thong_tin() + "Tròn";
Xây dựng lớp HinhChuNhat, HinhTamGiac được dẫn xuất từ lớp HinhHoc tương tự như trên
Yêu cầu 2: Xây dựng form nhập, tính toán và xuất chu vi, diện tích của hình tròn, hình chữ nhật và hình tam giác
Hình 1: màn hình quản lý đối tượng hình học
Chọn loại hình trên radio button rồi nhập thông tin theo yêu cầu của hình và Click nút
Tính để tính chu vi và diện tích của hình được chọn
Thiết kế giao diện người dùng:
thQuanLyDoiTuongHinhHoc: form (name="frm01HinhHoc.cs")
Text: Quản lý đối tượng hình học
* (Các thể hiện phía dưới đều nằm trong form)
thChuVi: TextBox (xuất thông tin)
thDienTich: TextBox (xuất thông tin)
Thông tin theo loại hình chọn
Tên hình, chu vi, diện tích
Xử lý sự kiện click của nút Tính:
HinhHoc h; if (rdoHinhTron.Checked == true)
{ double bankinh = double.Parse(txtBK.Text); h = new HinhTron { Bankinh = bankinh };
} else if (rdoHinhChuNhat.Checked == true)
{ double dai = double.Parse(txtCD.Text); double rong = double.Parse(txtCR.Text); h = new HinhChuNhat { Chieudai = dai, Chieurong = rong };
{ double a = double.Parse(txtCa.Text); double b = double.Parse(txtCb.Text); double c = double.Parse(txtCc.Text); h = new HinhTamGiac { CanhA = a, CanhB = b, CanhC = c };
} lblThongtin.Text = h.Xuat_thong_tin(); txtCV.Text = h.Chu_vi().ToString("#,##0.00");
9.2 Quản lý đối tƣợng hình học
Xây dựng lớp trừu tượng HinhHoc kế thừa giao tiếp IComparable đã xây dựng sẵn trong C# và định nghĩa phương thức CompareTo abstract class HinhHoc : IComparable {
… public int CompareTo(object obj) {
//if (ChuVi() > hh.ChuVi()) // return 1;
//else if (ChuVi() < hh.ChuVi()) // return -1; if (DienTich() > hh.DienTich()) return 1; else if (DienTich() < hh.DienTich()) return -1; return 0;
Xây dựng các lớp HinhTron, HinhChuNhat, HinhTamGiac: giống bài 9.1
Xây dựng một form nhập liệu cho phép người dùng tính toán và xuất kết quả chu vi, diện tích của hình tròn, hình chữ nhật và hình tam giác, với khả năng sắp xếp theo chu vi hoặc diện tích.
So sánh theo diện tích
So sánh theo chu vi
Hình 2: Màn hình quản lý đối tượng hình học
Nhập thông tin của hình rồi chọn thêm
Thiết kế giao diện người dùng:
thQuanLyDoiTuongHinhHoc: form (name="frm02HinhHoc.cs")
* (Các thể hiện phía dưới đều nằm trong form)
Tên hình, chu vi, diện tích
Khai báo các biến toàn cục trong màn hình
Xử lý Form_Load h=new HinhHoc[sopt];
Xử lý xuất danh sách hình học public void Xuat() {
StringBuilder sb = new StringBuilder(); for (int i = 0; i < h.Length; i++) sb.AppendLine(h[i].Xuat_thong_tin()); txtkq.Text = sb.ToString();
Xử lý Button Thêm hình tròn
Array.Resize(ref h, sopt + 1); double bankinh = double.Parse(txtbankinh.Text); h[sopt] = new HinhTron { Bankinh = bankinh }; sopt++;
Xử lý Button Thêm hình chữ nhật
Array.Resize(ref h, sopt + 1); double dai = double.Parse(txtdai.Text); double rong = double.Parse(txtrong.Text); h[sopt] = new HinhChuNhat { Chieudai= dai, Chieurong= rong }; sopt++;
Xử lý Button Thêm hình tam giác
Array.Resize(ref h, sopt + 1); double a = double.Parse(txta.Text); double b = double.Parse(txtb.Text); double c = double.Parse(txtc.Text); h[sopt] = new HinhTamGiac { CanhA=a, CanhB=b, CanhC=c }; sopt++;
Xử lý Button Sắp xếp
Lưu ý: Học viên sửa lại phương thức Xuat_thong_tin cho phù hợp với bài tập này
Quản lý đối tượng hình học
Sử dụng các lớp Collection và Generic Collection trong C#
10.1 Quản lý danh sách học viên
Yêu cầu: Tạo form để sử dụng đối tượng ArrayList như hình sau
Hình 1: Lúc mới mở màn hình
Click Thêm HV mới trong hình 1 để thêm danh sách học viên mới vào danh sách học viên cũ sau đó sắp xếp lại như hình 2
Thiết kế giao diện người dung
thQuanLyDSHV: form (name = frm01DSHV.cs)
Text: Danh sách học viên
Các thể hiện phía dưới đều nằm trên form
thDSHVCu: TextBox (xuất thông tin)
thDSHVMoi: TextBox (xuất thông tin)
Danh sách học viên cũ có học viên mới
Collections và Generic
Quản lý danh sách học viên
Yêu cầu: Tạo form để sử dụng đối tượng ArrayList như hình sau
Hình 1: Lúc mới mở màn hình
Click Thêm HV mới trong hình 1 để thêm danh sách học viên mới vào danh sách học viên cũ sau đó sắp xếp lại như hình 2
Thiết kế giao diện người dung
thQuanLyDSHV: form (name = frm01DSHV.cs)
Text: Danh sách học viên
Các thể hiện phía dưới đều nằm trên form
thDSHVCu: TextBox (xuất thông tin)
thDSHVMoi: TextBox (xuất thông tin)
Danh sách học viên cũ có học viên mới
Hình 2: Kết quả sau khi thêm HV mới
Khai báo 2 biến toàn cục lưu danh sách học viên
Xử lý sự kiện Form Load: private void frm01DSHV_Load(object sender, EventArgs e) {
Khởi tạo một ArrayList để lưu trữ danh sách tên các học viên trong lớp, bao gồm: Nguyễn Bảo Anh, Phạm Chi Bảo, Phạm Lan Chi, Trần Văn Hùng, Nguyễn Dung, Hoàng Ngọc Linh và Trần Anh Tài.
// hiển thị danh sách học viên cũ StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocVien.Count; i++) txtDSHVCu.Text = sb.ToString();
Khởi tạo một ArrayList để lưu trữ danh sách tên của các học viên mới, bao gồm: Đỗ Thiên Nga, Phạm Quỳnh Anh, Lê Quỳnh Hoa, Lý Thiên Thanh và Nguyễn Dung.
// hiển thị danh sách học viên mới sb = new StringBuilder(); for (int i = 0; i < hocVienMoi.Count; i++) sb.AppendLine(hocVienMoi[i].ToString()); txtDSHVMoi.Text = sb.ToString();
Nút Thêm HV mới: private void btnThemMoi_Click(object sender, EventArgs e) {
//thêm mới và sắp xếp for (int i = 0; i < hocVienMoi.Count; i++) hocVien.Add(hocVienMoi[i]); hocVien.Sort();
//xuất ra màn hình StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocVien.Count; i++) sb.AppendLine(hocVien[i].ToString()); txtDSHVCu.Text = sb.ToString();
Quản lý danh sách học viên
Để thêm danh sách học viên mới vào danh sách học viên cũ, cần tạo một form nhập liệu Thông tin của học viên bao gồm Mã học viên và Họ tên học viên, được quản lý bằng đối tượng SortedList để sắp xếp và tổ chức danh sách một cách hiệu quả.
Hình 3: Màn hình lúc mới mở
Click Thêm HV mới để thêm danh sách học viên mới vào danh sách học viên cũ
Thiết kế giao diện người dùng:
thDanhSachHocVien: form (name="frm02DSHV.cs")
Text: Danh sách học viên
* (Các thể hiện phía dưới đều nằm trong form)
thDSHVCu: TextBox (xuất thông tin)
thDSHVMoi: TextBox (xuất thông tin)
Danh sách học viên cũ như sau
Hình 4: màn hình sau khi thêm HV mới
- Khai báo 2 biến SortedList toàn cục lưu 2 danh sách học viên
- Xử lý sự kiện Form Load: private void frm02DSHV_Load(object sender, EventArgs e)
//Tạo danh sách học viên cũ hocVien.Add("001", "Nguyễn Bảo Anh"); hocVien.Add("003", "Phạm Chi Bảo");
… //Tạo danh sách học viên mới hocVienMoi.Add("002", "Đỗ Thiên Nga"); hocVienMoi.Add("005", "Phạm Quỳnh Anh");
… // Xuất danh sách học viên ra màn hình StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocVien.Count; i++) sb.AppendLine(hocVien.GetKey(i).ToString() + " " + hocVien.GetByIndex(i).ToString()); txtDSHVCu.Text = sb.ToString();
//Tương tự xuất danh sách học viên mới ra màn hình
- Xử lý nút Thêm HV mới: private void btnThemMoi_Click(object sender, EventArgs e)
{ for (int i = 0; i < hocVienMoi.Count; i++) hocVien.Add(hocVienMoi.GetKey(i).ToString(), hocVienMoi.GetByIndex(i).ToString());
StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocVien.Count; i++) sb.AppendLine(hocVien.GetKey(i).ToString() + " " + hocVien.GetByIndex(i).ToString()); txtDSHVCu.Text = sb.ToString();
Chuyển số thành chữ
Yêu cầu: Tạo form chuyển số thành chữ ứng dụng kiểu HashTable
Hình 3: Màn hình chuyển số thành chữ
Nhập chuỗi số rồi Click nút Đồng ý để xem kết quả các số bằng chữ
Thiết kế giao diện người dùng:
thChuyenSoThanhChu: form (name="frm03SoChu.cs")
* (Các thể hiện phía dưới đều nằm trong form)
//Khai báo mảng chuỗi các ký số: string[] kySo ={"0","1","2","3","4","5","6","7","8","9" };
//Khai báo mảng chuỗi các chuỗi ký tự tương ứng với các ký số string[] kyTu = { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu", "Bảy", "Tám", "Chín" };
To create a Hashtable using an array of numeric strings as keys and character strings as values, initialize a new Hashtable and populate it with a loop that adds each key-value pair Then, take the input string from the text box, and construct a new string by iterating through each character of the input, retrieving corresponding values from the Hashtable Finally, display the resulting string in the designated text box.
Đọc 3 số (Bài về nhà)
Yêu cầu: Tạo form chuyển 3 số thành chữ có sử đối tượng HashTable
Hình 4: Màn hình đọc 3 số
Nhập chuỗi ký số rồi Click nút Đồng ý để xem kết quả số được đọc
Thiết kế giao diện người dùng:
thDoc3So: form (name="frm03Doc3So.cs")
* (Các thể hiện phía dưới đều nằm trong form)
thKetQua: TextBox (xuất thông tin)
Bài về nhà
Mục tiêu: Sử dụng đối tượng kiểu Generic Colections
Yêu cầu: Thực hiện lại các bài tập trên, sử dụng Generic Collections.
Các kiến thức cơ bản về SQL Server
Truy vấn cập nhật dữ liệu
Sử dụng LINQ viết một truy vấn đơn giản có nguồn là một Collection
Sử dụng LINQ viết một truy vấn phức tạp: giới hạn dữ liệu, nối kết các tập dữ liệu, …
Tạo ra các đối tượng có kiểu vô danh (Anonymous Type)
12.1 Viết các câu truy vấn từ một mảng
Viết các câu truy vấn có nguồn là mảng
Sử dụng các toán tử: where, orderby, select
Yêu cầu: Sau khi truy vấn các mảng, hãy xuất kết quả ra TextBox a Cho mảng nguyên sau: int[] Mangso = { 50, 42, 16, 3, 9, 8, 12, 7, 24, 0 };
1 Hãy liệt kê các phần tử chia hết cho 4 và 3
2 Hãy liệt kê các phần tử nhỏ hơn hoặc bằng 3
3 Hãy liệt kê các phần tử thành một mảng mới với điều kiện là: nếu phần tử là số chẵn thì chia đôi, ngược lại thì giữ nguyên giá trị Kết quả in ra như sau:
25, 21, 8, 3, 9, 4, 6, 7, 12, 0 b Cho mảng chuỗi sau: (Bài về nhà) string[] Mangchuoi = {"đầu", "lòng", "hai", "ả", "tố", “nga", "Thúy", "Kiều", "là", "chị",
1 Hãy liệt kê các phần tử có 4 ký tự và sắp xếp tăng dần theo ký tự đầu tiên
2 Hãy liệt kê các phần tử và thể hiện thông tin có dạng: - đầu - ĐẦU lòng - LÒNG hai - HAI ả - Ả tố - TỐ nga - NGA thúy - THÚY kiều - KIỀU là - LÀ chị - CHỊ em - EM
LINQ cơ bản
Viết các câu truy vấn từ một mảng
Viết các câu truy vấn có nguồn là mảng
Sử dụng các toán tử: where, orderby, select
Yêu cầu: Sau khi truy vấn các mảng, hãy xuất kết quả ra TextBox a Cho mảng nguyên sau: int[] Mangso = { 50, 42, 16, 3, 9, 8, 12, 7, 24, 0 };
1 Hãy liệt kê các phần tử chia hết cho 4 và 3
2 Hãy liệt kê các phần tử nhỏ hơn hoặc bằng 3
3 Hãy liệt kê các phần tử thành một mảng mới với điều kiện là: nếu phần tử là số chẵn thì chia đôi, ngược lại thì giữ nguyên giá trị Kết quả in ra như sau:
25, 21, 8, 3, 9, 4, 6, 7, 12, 0 b Cho mảng chuỗi sau: (Bài về nhà) string[] Mangchuoi = {"đầu", "lòng", "hai", "ả", "tố", “nga", "Thúy", "Kiều", "là", "chị",
1 Hãy liệt kê các phần tử có 4 ký tự và sắp xếp tăng dần theo ký tự đầu tiên
2 Hãy liệt kê các phần tử và thể hiện thông tin có dạng: - đầu - ĐẦU lòng - LÒNG hai - HAI ả - Ả tố - TỐ nga - NGA thúy - THÚY kiều - KIỀU là - LÀ chị - CHỊ em - EM
là - LÀ thúy - THÚY vân - VÂN
3 Hãy liệt kê các phần tử có chứa chữ “u”
4 Hãy liệt kê các phần tử “Thúy Kiều Thúy Vân” trong mảng trên (gợi ý: Ký tự đầu tiên bắt đầu bằng chữ in)
Viết các câu truy vấn thống kê từ một mảng
Viết các câu truy vấn thống kê có nguồn là mảng
Sử dụng các phương thức mở rộng: Count, Sum, Average, Min, Max và GroupBy
Yêu cầu: Sau khi truy vấn các mảng, hãy xuất kết quả ra TextBox a Cho mảng nguyên sau: int[] Mangso = { 50, 42, 12, 3, 9, 8, 1, 50, 3, 42, 85 };
1 Hãy cho biết: Tổng số phần tử, số phần tử chẵn, số phần tử lẻ
2 Hãy cho biết: Tổng trị giá của mảng, phần tử có giá trị lớn nhất, nhỏ nhất
(Lưu ý: 2 câu trên được làm bằng 3 câu truy vấn riêng biệt nhưng xuất kết quả cùng lúc)
3 Hãy cho biết có bao nhiêu phần tử khác nhau, không tính số phần tử bị trùng giá trị
4 Hãy liệt các phần tử trong một nhóm có số dư bằng nhau sau khi chia hết cho 5 Kết quả thể hiện như sau:
1 b Cho mảng chuỗi sau: (Bài về nhà)
"Nước Cà phê", “Mì quảng", "Cơm tấm", "Nước Chanh dây", "Mì xào", "Bún riêu", "Bánh cuốn", "Mì gói", "Bún chả","Hủ tiếu Nam vang"};
1 Hãy cho biết các phần tử có chiều dài ngắn nhất, dài nhất Kết quả thể hiện như sau:
Các phần tử có chiều dài NGẮN nhất:
MÌ GÓI Các phần tử có chiều dài DÀI nhất:
2 Hãy liệt kê các phần tử trong nhóm có từ đầu tiên giống nhau Kết quả thể hiện như sau:
Bún Bún bò Huế Bún riêu Bún chả
Hủ tiếu Nam vang Bánh
Bánh canh Bánh mì Bánh cuốn Nước
Nước Cà phê Nước Chanh dây
Mì gói Cơm Cơm tấm
3 Hãy cho biết có bao nhiêu phần tử có từ bắt đầu bằng “Bánh”
Lưu ý: Sau khi học viên đã học xong các toán tử nhóm và thống kê thì mới làm bài 5.3 này
Tạo class hỗ trợ cung cấp nguồn dữ liệu
Sử dụng các tính năng mới của C# hỗ trợ LINQ
Tạo class có tên MonHoc với các thuộc tính sau:
Tạo phương thức tĩnh sau, nằm trong class Dulieu:
DS_Mon() : trả về kiểu List, dùng truy xuất dữ liệu
Dữ liệu mẫu như sau:
Mã môn Tên môn Hệ Số tiết
HP2_2 Công nghệ ADo.NET KTV 64
HP3_1 Lập trình Windows Forms KTV 64
HP3_2 Xây dựng ứng dụng Windows Forms KTV 64
HP4_1 Lập trình Web với HTML, CSS và javascript KTV 64
HP4_2 Xây dựng ứng dụng Web với ASP.Net KTV 64
HP5_1 Lập trình CSDL SQL Server căn bản KTV 64
HP5_2 Lập trình CSDL SQL Server nâng cao KTV 64
JLCB Joomla cơ bản CD 72
LINQ Language-Integrated Query CD 64
DAWEB Đồ án thực tế Web với ASP.Net CD 40
DAWIN Đồ án thực tế Windows Forms CD 40
CC++ Lập trình hướng đối tượng với C/C++ CD 128
XML Công nghệ XML CD 32
CRYS Crystal Report trong Visual Studio 2010 CD 32
BWEB HTML, CSS và javaScript CD 32
XYZ Chưa đặt tên môn 0
Viết các câu truy vấn có nguồn dữ liệu kiểu List<MonHoc>
Viết các câu truy vấn có nguồn là List
Sau khi thực hiện truy vấn, kết quả sẽ được xuất ra TextBox Đầu tiên, danh sách các môn học bắt đầu bằng “Lập trình” sẽ được liệt kê Tiếp theo, các môn học thuộc hệ “CD” sẽ được sắp xếp theo số tiết giảm dần và mã môn tăng dần Ngoài ra, danh sách các môn học có tên chứa từ “web” sẽ bao gồm tên môn và hệ Cuối cùng, các môn học của hệ Kỹ thuật viên (“KTV”) sẽ được liệt kê và sắp xếp tăng dần theo mã môn.
Viết các câu truy vấn thống kê có nguồn dữ liệu kiểu List<MonHoc>
Viết các câu truy vấn có nguồn là List
Sử dụng các phương thức mở rộng của Net: GroupBy, Sum, Count, …
Sau khi thực hiện truy vấn, hãy xuất kết quả ra TextBox Đầu tiên, cung cấp tổng số môn hiện có thông qua hộp thoại Tiếp theo, xác định tổng số môn có tên bắt đầu bằng "lập trình" và hiển thị kết quả trong hộp thoại Thứ ba, hãy cho biết tổng số tiết của hệ Kỹ thuật viên qua hộp thoại Tiếp theo, thông báo tổng số môn của mỗi hệ kèm theo thông tin về Hệ và tổng số môn Cuối cùng, hãy trình bày tổng số môn của mỗi số tiết, với thông tin bao gồm Số tiết và tổng số môn, được sắp xếp giảm dần theo Số tiết.
Bài về nhà f bắt đầu từ câu f Môn học có số tiết cao nhất là g Thông tin chi tiết cho mỗi hệ bao gồm: Hệ, tổng số môn, tổng số tiết, số tiết cao nhất và số tiết thấp nhất Các môn học được phân nhóm theo hệ sẽ được liệt kê rõ ràng.
ADo.NET technology is essential for developing robust Windows Forms applications, enabling seamless user interfaces and efficient data management Mastering Windows Forms programming allows developers to create interactive desktop applications that enhance user experience Additionally, web programming skills in HTML, CSS, and JavaScript are crucial for building dynamic web applications Utilizing ASP.NET for web application development streamlines the process, providing powerful tools and frameworks to create responsive and scalable web solutions.
HP5_1 - Lập trình CSDL SQL Server căn bản HP5_2 - Lập trình CSDL SQL Server nâng cao 2/ CD
JLCB - Joomla cơ bản LINQ - Language-Integrated Query CC++ - Lập trình hướng đối tượng với C/C++
DAWEB - Đồ án thực tế Web với ASP.Net DAWIN - Đồ án thực tế Windows Forms C++ - Lập trình hướng đối tượng với C/C++
Trong bài viết này, chúng tôi sẽ trình bày về các công nghệ như JQUE - JQuery, XML - Công nghệ XML và CRYS - Crystal Report trong Visual Studio 2010 Đặc biệt, chúng tôi sẽ liệt kê các môn học được phân nhóm theo số tiết, sắp xếp tăng dần theo số tiết để người đọc dễ dàng theo dõi và hiểu rõ hơn về cấu trúc chương trình học.
XML - Công nghê XML CRYS - Crystal Report trong Visual Studio 2010 3/ 40 tiết
DAWEB - Đồ án thực tế Web với ASP.Net DAWIN - Đồ án thực tế Windows Forms 4/ 64 tiết
Explore the powerful ADo.NET technology for seamless data access, and master Windows Forms programming to build robust desktop applications Enhance your web development skills with essential HTML, CSS, and JavaScript knowledge, followed by creating dynamic web applications using ASP.NET Delve into SQL Server database programming, starting with foundational concepts and advancing to complex techniques Finally, leverage LINQ (Language-Integrated Query) for efficient data manipulation and querying within your applications.
CC++ - Lập trình hướng đối tượng với C/C++
5/ 72 tiết JLCB - Joomla cơ bản 6/ 128 tiết
C++ - Lập trình hướng đối tượng với C/C++ hiện các môn thuộc hệ Kỹ thuật viên Kết quả thể hiện như sau:
HP2_2 - Công nghệ ADo.NET 2/ HP3
HP3_1 - Lập trình Windows Forms HP3_2 - Xây dựng ứng dụng Windows Forms 3/ HP4
HP4_1 - Lập trình Web với HTML, CSS và javascript HP4_2 - Xây dựng ứng dụng Web với ASP.Net 4/ HP5
Trong bài viết này, chúng tôi sẽ trình bày về hai khóa học lập trình CSDL SQL Server, bao gồm "Lập trình CSDL SQL Server căn bản" (HP5_1) và "Lập trình CSDL SQL Server nâng cao" (HP5_2) Để phân nhóm các môn học theo hệ thống và sắp xếp theo mã môn, chúng tôi sẽ chỉ liệt kê các môn có số tiết lớn hơn 40 Kết quả sẽ được thể hiện một cách rõ ràng và dễ hiểu.
1/ CD C++ - Lập trình hướng đối tượng với C/C++
JLCB - Joomla cơ bản LINQ - Language-Integrated Query 2/ KTV
The article covers essential technologies and programming techniques, including ADo.NET for data access, Windows Forms programming for desktop applications, and web development using HTML, CSS, and JavaScript It also delves into building web applications with ASP.NET and offers foundational and advanced SQL Server database programming skills.
Tạo class hỗ trợ cung cấp nguồn dữ liệu
Tạo thêm class dùng để làm nguồn cho bài kế tiếp
Yêu cầu: a Tạo class có tên cHe với các thuộc tính sau:
TenHe: kiểu chuỗi b Tạo phương thức tĩnh sau, nằm trong class Dulieu:
DS_He() : trả về kiểu List, dùng truy xuất dữ liệu
Dữ liệu mẫu như sau:
QT Chứng chỉ quốc tế
Viết các câu truy vấn có 2 nguồn dữ liệu kiểu List< >
Viết các câu truy vấn có 2 nguồn là: List và List
Sử dụng các toán tử hoặc phương thức mở rộng của Net: join, GroupJoin, Union,
Concat, Intersect, Except, Any, First, DefaultIfEmpty, Take …
Sau khi truy vấn, kết quả sẽ được xuất ra TextBox với thông tin môn học bao gồm: Tên hệ, Mã môn, Tên môn Đầu tiên, cần liệt kê thông tin cho tất cả các hệ, bao gồm cả những hệ chưa có môn học Tiếp theo, cần liệt kê thông tin cho những môn học chưa khai báo hệ Sau đó, chỉ liệt kê những hệ chưa có môn học và những môn học chưa khai báo hệ Cuối cùng, hãy liệt kê 5 môn học đầu tiên theo số tiết giảm dần, với thông tin: Tên hệ và Mã môn.
Chuyên đề : C++ : Lập trình hướng đối tượng với C/C++ : 128 Chuyên đề : JLCB : Joomla cơ bản : 72
Kỹ thuật viên : HP2_1 : Nền tảng C# : 64
Kỹ thuật viên : HP2_2 : Công nghệ ADo.NET : 64
Kỹ thuật viên : HP3_1 : Lập trình Windows Forms : 64
Từ câu f trở về sau là Bài về nhà f Tổng số môn học của mỗi hệ bao gồm mã hệ, tên hệ và tổng số môn g Có bao nhiêu loại số tiết trong danh sách môn học cần được xác định Sử dụng hộp thoại để xuất kết quả h Thông tin môn học đầu tiên có tên bắt đầu bằng “Lập trình” cũng cần được cung cấp Cuối cùng, hãy liệt kê các môn học theo nhóm một cách rõ ràng.
KỸ THUẬT VIÊN 1/ Nền tảng C# : 64 tiết 2/ Công nghệ ADo.NET : 64 tiết
4/ Xây dựng ứng dụng Windows Forms : 64 tiết 5/ Lập trình Web với HTML, CSS và javascript : 64 tiết 6/ Xây dựng ứng dụng Web với ASP.Net : 64 tiết 7/ Lập trình CSDL SQL Server căn bản : 64 tiết 8/ Lập trình CSDL SQL Server nâng cao : 64 tiết CHUYÊN ĐỀ
1/ Joomla cơ bản : 72 tiết 2/ Language-Integrated Query : 64 tiết 3/ Đồ án thực tế Web với ASP.Net : 40 tiết 4/ Đồ án thực tế Windows Forms : 40 tiết 5/ Lập trình hướng đối tượng với C/C++ : 128 tiết 6/ JQuery : 22 tiết
7/ Công nghệ XML : 32 tiết 8/ Crystal Report trong Visual Studio 2010 : 32 tiết 9/ HTML, CSS và javaScript : 32 tiết