Tải bản đầy đủ (.docx) (10 trang)

C Cơ bản thông qua ứng dụng thực tế dành cho người lười học lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (308.43 KB, 10 trang )

KIẾN THỨC C# CƠ BẢN THÔNG QUA ỨNG DỤNG THỰC TẾ DÀNH CHO
NGƯỜI LƯỜI HỌC – PHẦN I CHƯA CÓ CƠ SỞ DỮ LIỆU.
Giới thiệu.
Nếu bạn chán học lập trình nói chung và ngôn ngữ C# nói riêng do lười đọc tài liệu
I.
-

tham khảo, xem các video, không có nhiều thời gian học, không tổng hợp được các
-

kiến thức thì đây là tài liệu có ích cho bạn.
Bạn không nên tải Project lớn về tham khảo trong khi kiến thức chưa hiểu sâu. Tài
liệu này tổng hợp kiến thức cơ bản được chia nhỏ ra thành các giai đoạn kiến thức
quan trọng cho bạn dễ học và dễ nắm bắt. Từ những ứng dụng ví dụ trong tài liệu này

-

bạn có thể code các ứng dụng khác tương tự.
Rất mong được sự góp ý:
II.
Ứng dụng không có cơ sở dữ liệu
1. Lập trình console: Ứng dụng tra cứu từ điển.
Tổng hợp các kiến thức cơ bản sau: Biến, kiểu dữ liệu, ghi chú, cấu trúc lặp,
cấu trúc điều kiện, các hàm cơ bản, các hàm xử lý chuổi, mảng, xử lí biệt lệ try-catch.
a. Mô tả ứng dụng: Nhập từ mới, tra cứu nghĩa của từ, sửa từ và xóa từ.
b. Thực hành code ứng dụng:
Bước 1: Viết chương trình chính
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8; //Để xuất tiếng việt trong dos
while (true)


//Vòng lặp luôn luôn đúng
{
menu(); //gọi hàm Menu
Console.WriteLine("Bạn có muốn thoát hay không?(y/n)");
string s = Console.ReadLine();
//Nhận giá trị nhập từ bàn phím
if (s == "y")
//Nếu nhập y thì break thoát khỏi vòng lặp lập tức.
break;
// Nếu các bạn nhập khác chữ y thì chương trình sẽ
}
//quay lại menu chính và tiếp tục.
Console.WriteLine("Bye---Bye"); //thoát khỏi vòng lặp sẽ hiện từ Bye---Bye.
Console.ReadLine();
//Chờ ấn phím bất kì chương trình sẽ thoát ra.
}

Bước 2: Viết hàm menu()

private static void menu()
{
Console.WriteLine("1. Tạo từ mới");//WriteLine xuất giá trị xong xuống hàng.
Console.WriteLine("2. Sửa từ");
Console.WriteLine("3. Tra cứu từ");
Console.WriteLine("4. Xóa từ");
Console.WriteLine("Bạn chọn chức năng nào:");
Try
//Try catch để xử lí biệt lệ nếu chương trình có lỗi cụ thể ở
{
// sẽ không bị thoát ra mà vẫn tiếp tục, ví dụ: bạn nhập vào

// kdjakdkdjf và Enter thì chương trình báo lỗi và tiếp tục.
int cn = int.Parse(Console.ReadLine()); //Nhận giá trị nhập từ bàn phím
switch (cn)
//sau đó ép thành kiển int dùng


{

}

2.

// dùng int.Parse.
case 1:
//Nếu nhập là 1 sẽ vào hàm tạo từ mới
TaoTuMoi();
break;
case 2:
//Nếu nhập là 2 sẽ vào hàm sửa từ.
SuaTu();
break;
case 3:
//Nếu nhập là 3 sẽ vào hàm tra cứu.
TraCuu();
break;
case 4:
//Nếu nhập là 4 sẽ vào hàm xóa từ.
XoaTu();
break;
default:

// trường hợp không phải nhập: 1, 2, 3, 4.
Console.WriteLine("Bạn chọn không đúng"); //sẽ thông báo.
break;
// ra khỏi vòng lặp.

}
}
catch(Exception ex)
//Thông báo lỗi nếu bạn nhập tào lao.
{
// bạn thử nhập kdfdjaj để kiểm tra nhé.
Console.WriteLine("Lỗi !",ex.Message);
}

Lập trình console - Sử dụng thư viện trong C#.
2.1 Thư viện toán học:

static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
//Hiển thị tiếng việt trong Dos
Console.Write("Mời bạn nhập vào số a: "); //Hiện thông báo mời bạn nhập.
int a = int.Parse(Console.ReadLine()); //Nhận giá trị từ bàn phím.
Console.WriteLine("Căn bậc 2 của {0} = {1}",a, Math.Sqrt(a));
// {0} là bạn sử dụng kết quả a chèn vào vị trí số {0}. {1} bạn sử dụng hàm
Math.Sqrt(a) chèn vào vị trí số {1}, bạn chạy lên để hiểu rỏ thêm nhé.
Console.ReadLine(); //Bấm phím bất kì chương trình sẽ thoát ra.
}

2.2


Thư viện Random:

static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Random rd = new Random();
int x = rd.Next(101); //muốn xuất đến 100 thì ghi 101 trừ đi 1 đơn vị, giả sử bạn muốn
xuất từ 1 đến 10 thì ghi 11.
Console.WriteLine("Máy xuất số ngẫu nhiên là: {0}", x);
}

2.3

Thư viện DateTime:

static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("Mời bạn nhập vào năm sinh: ");
string s = Console.ReadLine(); //Nhận giá trị ngày, tháng, năm từ bàn phím.
DateTime brithday = DateTime.Parse(s); //chuyển kiểu chuổi về kiểu Datetime và gán
cho giá trị cho biến birthday.
Console.WriteLine("Bạn sinh ngày: " + brithday.Day); //Xuất ngày.
Console.WriteLine("Bạn sinh tháng: " +brithday.Month); //Xuất tháng.
Console.WriteLine("Bạn sinh năm: " +brithday.Year); //Xuất năm.


Console.ReadLine();
}


Lập trình Windows Form hướng đối tượng: Ứng dụng quản lý sản phẩm.
Thiết kế giao diện
Gồm 2 giao diện và tên các nút lệnh như sau: Phần màu đỏ là tên
3.
3.1

-

Button: btnQuanLyDanhMuc
TextBox: cboDanhMuc
ListBox: lstSanPham
TextBox: txtMaSp
TextBox: txtTenSP
TextBox: txtDonGia
TextBox: txtXuatXu
TextBox: txtHanDung

Button: btnLuu Button: btnThoat

Button: btnXoa

TextBox: txtMaDanhMuc
ListBox: lstDanhMuc
TextBox: txtTenDanhMuc

Button: btnLuu

Button: btnXoa


Button: btnThoat


3.2

Tạo lớp sản phẩm

public class SanPham
{
public string MaSP { get; set; }
public string tenSP { get; set; }
public double DonGia { get; set; }
public string XuatXu { get; set; }
public DateTime HanDung { get; set; }
public DanhMuc nhom { get; set; } //sản phầm phải biết nó thuộc danh mục nào
public override string ToString() //Phương thức ToString để xuất thông tin trong lớp
{
return this.tenSP;
}
}

3.3

Tạo lớp danh mục

public class DanhMuc
{
private Dictionary<string, SanPham> dsSp = new Dictionary<string, SanPham>();
//Tạo 1 mảng Dictionary để lưu danh sách sản phẩm.
// Có 2 đối số cần lưu ý: String là mã, khóa trong mảng (key), SanPham là thông của sản

phẩm có mã là String.
public string MaDM { get; set; }
public string TenDM { get; set; }
public void ThemSanPham(SanPham sp)
{
if (this.dsSp.ContainsKey(sp.MaSP) == false)
// Hàm này kiểm tra khi thêm vào có bị trung mã đã có trong mảng từ trước không dung
ContainKey để kiểm tra.
{
this.dsSp.Add(sp.MaSP, sp); //chỉ add danh sách sản phẩm vào thôi chứ chưa có
trả thông tin sản phẩm vừa add về nhóm danh mục nào.
sp.nhom = this; //Ứng với 1 sản phầm nó phải biết nó thuộc nhóm nào.
}
}
public Dictionary<string,SanPham> Sanphams //Trả về 1 danh sách sản phẩm.
{
get { return this.dsSp; }


set { this.dsSp = value; }
}
public override string ToString() //xuất tên danh mục.
{
return this.TenDM; //để lúc gọi hàm HienThiDanhMucLenListBox() chỉ hiện tên thôi,
hàm này ở trong frmDanhMuc.
}
}

3.4


Viết lệnh cho Button của From frmDanhMuc

public partial class frmDanhMuc : Form
{
public static bool CoThayDoi = false; //Tạo một biến CoThayDoi = false
public frmDanhMuc() //Mặc định.
{
InitializeComponent();
}
private void btnLuu_Click(object sender, EventArgs e)
{
DanhMuc dm = new DanhMuc(); // tạo lớp dm mới
dm.MaDM = txtMaDanhMuc.Text; //gán MaDM=kết quả nhập trong ô txtDanhMuc
dm.TenDM = txtTenDanhMuc.Text; //gán TenDM=kq nhập trong ô txtTenDanhMuc
frmSanPham.danhSachDM.Add(dm); //danh sách dm này sử dụng cho 2 màn hình
HienThiDanhMucLenListBox(); //gọi hàm hiển thị lên listbox
txtMaDanhMuc.Text = "";
txtTenDanhMuc.Text = "";
txtMaDanhMuc.Focus();
CoThayDoi = true; //Nếu có xóa thì gán CoThayDoi=true
}
void HienThiDanhMucLenListBox() //tạo hàm hiển thị danh mục lên listbox
{
lstDanhMuc.Items.Clear();
foreach(DanhMuc dm in frmSanPham.danhSachDM)
{
lstDanhMuc.Items.Add(dm);
}
}



private void lstDanhMuc_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstDanhMuc.SelectedIndex != -1) //khác -1 thì nó được chọn.
{
DanhMuc dm = lstDanhMuc.SelectedItem as DanhMuc; //kiểm tra
txtMaDanhMuc.Text = dm.MaDM; //Hiển thị thông tin ngược lại lên ô text trong
frmDanhMuc nếu chọn list danh mục vừa tạo.
txtTenDanhMuc.Text = dm.TenDM;
}

}
private void btnXoa_Click(object sender, EventArgs e)
{
if (lstDanhMuc.SelectedIndex != -1) //Khi được chọn
{
DanhMuc dm = lstDanhMuc.SelectedItem as DanhMuc;
lstDanhMuc.Items.Remove(dm); //Xóa danh mục.
CoThayDoi = true; //Nếu có xóa thì gán CoThayDoi=true
}
}
private void btnThoat_Click(object sender, EventArgs e)
{
//Ở đây có thể để lệnh Close() tuy nhiên nó ko đảm bảo được yêu cầu dùng lệnh if
(frmDM.ShowDialog() == DialogResult.OK) trong frmSanPham, khi hộp thoại danh mục hiện
lên phải có thao tác mới ứng với lệnh DialogResult.Ok.
if (CoThayDoi == true)
DialogResult = DialogResult.OK; //Có thay đổi thì trả về Ok để bên frmSanPham
hứng lấy.
else

DialogResult = DialogResult.Cancel; //Không thay đổi thì đóng chương chình.
}
private void frmDanhMuc_Load(object sender, EventArgs e)
{
HienThiDanhMucLenListBox(); //Tạo sự kiện frm load khi mở hộp thoại danh mục lên
thì nó sẽ lấy dữ liệu của combobox bên frmsanpham mới thêm vào truyền qua.


}
}

3.5

Viết lệnh cho Button của From frmSanPham

public partial class frmSanPham : Form
{
public static List<DanhMuc> danhSachDM = new List<DanhMuc>(); //Tạo danh sách
danh mục bên frmSanPham sau đó đẩy qua bên frmDanhmuc cho nó sử dụng chung.
List<SanPham> danhSachSP = new List<SanPham>();
public frmSanPham()
{
InitializeComponent();
}
private void groupBox2_Enter(object sender, EventArgs e)
{
}
private void btnLuu_Click(object sender, EventArgs e)
{
if (cboDanhMuc.SelectedIndex == -1) //=-1 là chưa được chọn.

{
MessageBox.Show("Chưa chọn danh mục");
return;
}
DanhMuc dm = cboDanhMuc.SelectedItem as DanhMuc; //Lấy được đối tượng danh
mục ra từ list combobox.
SanPham sp = new SanPham();
sp.MaSP = txtMaSP.Text;
sp.tenSP = txtTenSP.Text;
sp.DonGia = double.Parse(txtDonGia.Text); //Chuyển thành kiểu double
sp.XuatXu = txtXuatXu.Text;
sp.HanDung = dtpHanDung.Value; //Kiểu datetime thì dùng value.
dm.ThemSanPham(sp); //đẩy sản phẩm này vào danh mục
danhSachSP.Add(sp);
HienThiSanPhamLenGiaoDienListbox();
XoaTrangChiTietSanPham();


}
void XoaTrangChiTietSanPham() //Tạo hàm nếu bấm nút lưu rùi thì sẽ xóa thông tin cũ,
lần nhập sau đỡ mất thời gian.
{
txtMaSP.Text = "";
txtTenSP.Text = "";
txtDonGia.Text = "";
txtXuatXu.Text = "";
txtMaSP.Focus(); //xóa xong chuyển con trỏ chuột vào ô text mã sản phẩm.
}
void HienThiSanPhamLenGiaoDienListbox()
{

lstSanPham.Items.Clear(); //xóa dữ liệu cũ.
foreach (SanPham sp in danhSachSP)
lstSanPham.Items.Add(sp);
}
private void btnQuanLyDanhMuc_Click(object sender, EventArgs e)
{

frmDanhMuc frmDM = new frmDanhMuc();
frmDanhMuc.CoThayDoi = false; //Mở frmDanhMuc là biến CoThayDoi mặc định = 0.
if (frmDM.ShowDialog() == DialogResult.OK)
{
HienThiDanhMucLenComboBox(); //Tạo hàm để hiển thị danh mục lên combobox
trong frmSanPham.
}
}
private void HienThiDanhMucLenComboBox()
{
cboDanhMuc.Items.Clear();
foreach (DanhMuc dm in danhSachDM)
cboDanhMuc.Items.Add(dm); //thêm tất cả danh mục vào danh sách danh mục.
}
private void btnXoa_Click(object sender, EventArgs e)
{
if (lstSanPham.SelectedIndex == -1) //Chưa chọn sản phẩm trong list sp.
{


MessageBox.Show("Chưa chọn sản phẩm");
return;
}

SanPham sp = lstSanPham.SelectedItem as SanPham;
DialogResult ret = MessageBox.Show(
"Muốn xóa ["+sp.tenSP+"]",
"Hỏi xóa",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question); //hàm này hiển thị thông báo có icon mặc định của
c#.
if (ret == DialogResult.Yes)
{
danhSachSP.Remove(sp);
HienThiSanPhamLenGiaoDienListbox();
XoaTrangChiTietSanPham();
}
}
private void btnThoat_Click(object sender, EventArgs e)
{
DialogResult ret = MessageBox.Show("Bạn có muốn thoát hay không?",
"Hỏi thoát", MessageBoxButtons.YesNo,
MessageBoxIcon.Question); //Hiện thông báo muốn thoát hay không?
if (ret == DialogResult.Yes) //Nếu chọn yes thì thoát.
{
Close();
}
}
private void lstSanPham_SelectedIndexChanged(object sender, EventArgs e)
{
if (lstSanPham.SelectedIndex == -1) // chưa được chọn.
return; //Không làm gì cả.
SanPham sp = lstSanPham.SelectedItem as SanPham;
//lấy danh sách sản phầm ra.

cboDanhMuc.Text = sp.nhom.TenDM;
txtMaSP.Text = sp.MaSP;
txtTenSP.Text = sp.tenSP;


txtDonGia.Text = sp.DonGia+"";//chuyển doube thành chuổi vì cộng khoảng trống ký
tự “”
txtXuatXu.Text = sp.XuatXu;
dtpHanDung.Value = sp.HanDung;
}
}

HẾT PHẦN 1



×