You are on page 1of 64

TRUNG TM TI N HC I HC KHOA HC T NHI N TP.

HCM
227 Nguyn Vn C - Qun 5- Tp.H Ch Minh
Tel: 8351056 Fax 8324466 Email: ttth@hcmuns.edu.vn

M ti liu: DT_NCM_HP2_BT_LTHDTC#
Phin bn 4.1 Thng 07/ 2013

BI TP

CHNG TRNH
K THUT VIN
NGNH LP TRNH
Hc phn 2
---
NN TNG V LP
TRNH HNG I
TNG VI C# 4.0
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
BI 1: Tng quan

Thc hnh mt s thao tc c bn trong mi trng C# v ng dng dng Windows
Application.
S dng cc iu khin c bn trn Form

1.1. Lm quen mi trng pht trin ng dng
Mc tiu:
To Project, t chc cy th mc
S dng cc i tng trong ng dng Windows Application
Thc hin cc thao tc: to, thm, xo cc i tng
Thc thi mt ng dng
Yu cu:
To mt ng dng dng Windows Forms Application c tn Bai_ Tap lu ti th mc lm vic
Ln lt to cc th mc dng lu tr bi tp (hnh 1)
Thc hin thm v xa mt i tng trong ng dng (Trn ca s Solution Explorer, nhn chut
phi trn Project chn Add thm mt i tng, nhn chut phi trn i tng cn xa v
chn Delete)
Thc thi ng dng (nhn phm F5 hoc nhn nt Start Debugging)

Hnh 1: T chc th mc trong Project
1.2. Xy dng mn hnh xut cu cho
Mc tiu:
S dng ba thnh phn chnh ca mt chng trnh (Input, Process, Output)
Yu cu:
Xy dng Form c tn MH_Cau_chao lu ti th mc Bai_01 (hnh 2)
Nhp vo h tn ca bn

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
Xut ra mn hnh cu cho Cho bn <H tn> , chc mng bn n vi Ngn ng lp
trnh C# 4.0

Hnh 2: mn hnh in cu cho
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0

BI 2: Kiu d liu v bin

S dng kiu d liu trong C#, ng dng cc kiu d liu khai bo bin.
p dng cc k thut chuyn kiu d liu trong C#
S dng cc ton t trong C#

S dng kiu gi tr
Mc tiu:
S dng cc kiu d liu loi gi tr, k thut chuyn i kiu d liu v s dng cc ton t
2.1. Tnh chu vi v din tch hnh trn
Mc tiu: S dng cc phng thc v thuc tnh ca lp Math
Yu cu: Xy dng chng trnh tnh din tch v chu vi hnh trn, gm cc chc nng:
Nhp vo bn knh ca hnh trn: kiu s thc double
Xut ra din tch v chu vi ca hnh trn: kiu s thc double
Hng dn
Xy dng mn hnh c giao din nh sau:

iu khin Thuc tnh S kin X l
Label Text: T NH CHU VI, DI N TCH HNH TRN
Label Text: Bn knh
Label Text: Chu vi
Label Text: Din tch
TextBox Name: txtban_kinh
TextBox Name: txtchu_vi
ReadOnly: true

TextBox Name: txtdien_tich

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
ReadOnly: true
Button Name: btntinh
Text: Tnh
Click
Button Name: btnlam_lai
Text: Lm li
Click
X l s kin Click ca Button Tnh
private void btntinh_Click(object sender, EventArgs e)
{
double ban_kinh=double.Parse(txtban_kinh.Text);
double chu_vi=Math.PI*2*ban_kinh;
double dien_tich=Math.PI*ban_kinh*ban_kinh;
txtchu_vi.Text = Math.Round(chu_vi,2).ToString();
txtdien_tich.Text = Math.Round(dien_tich,2).ToString();
}
X l s kin Click ca Button Lm li
private void btnlam_lai_Click(object sender, EventArgs e)
{
txtban_kinh.Text=;
txtchu_vi.Text=;
txtdien_tich.Text=;
}
2.2. Tnh chu vi v din tch hnh ch nht (Bi v nh)
Yu cu: Xy dng chng trnh tnh chu vi v din tch hnh ch nht, gm cc chc nng:
Nhp vo chiu di vo chiu rng ca hnh ch nht: kiu s thc double
Xut ra din tch v chu vi ca hnh ch nht: kiu s thc double

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
2.3. Tnh chu vi v din tch tam gic
Yu cu 1
Nhp vo chiu di 3 cnh ca hnh tam gic: kiu s thc double
Tnh v xut chu vi, din tch ca hnh tam gic: kiu s thc double
Yu cu 2
Nhp vo chiu di 3 cnh ca hnh tam gic: kiu s nguyn int
Tnh v xut chu vi, din tch ca hnh tam gic: kiu s thc double
Yu cu 3
Nhp vo chiu di 3 cnh ca hnh tam gic: kiu s nguyn int
Tnh v xut chu vi, din tch ca hnh tam gic: kiu s thc float

2.4. Tnh s nt ca 1 s nguyn (Bi v nh)
Mc tiu: S dng ton t %
Yu cu:
Nhp vo 1 s nguyn n c 4 ch s
Tnh v xut ra s nt ca s nguyn n
V d: n = 1234 s nt = 0
n = 2023 s nt = 7

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
S dng kiu tham chiu
Mc tiu: S dng cc kiu d liu loi tham chiu
2.5. Tch chui h tn
Mc tiu:
- S dng kiu string vi cc phng thc v thuc tnh ca kiu ny
- ng dng vo bi ton thc t
Yu cu:
- Nhp vo 1 chui h tn
- Tch chui v xut ra phn h, phn lt, phn tn ca chui h tn.

2.6. S dng kiu tham chiu
Mc tiu: S dng kiu tham chiu StringBuilder
Yu cu:
- Nhp vo 2 gi tr t 2 TextBox, sau cp nht 2 gi tr ny vo 2 bin c kiu
StringBuilder
- Tip theo, gn bin 1 bng bin 2, sau cp nht gi tr ca mt trong 2 bin, xut kt qu
ca bin cn li ra mn hnh
- Giao din Form nh sau:
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0

Hng dn:
- Khai bo 2 bin kiu StringBuilder dng chung trong Form
StringBuilder strb1;
StringBuilder strb2;
- X l s kin Load ca Form
strb1 = new StringBuilder("Hoa Lan");
strb2 = new StringBuilder("Hoa Hng");
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();
- X l s kin Click ca Button Gn bng
strb1 = strb2;
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();
- X l s kin Click ca Button Cp nht vo bin 1
strb1.Remove(0, strb1.Length);
strb1.Append(txtMot.Text);
//xut xem bin 2
txtHai.Text = strb2.ToString();
// Quan st gi tr ca 2 bin v nhn xt
- X l s kin Click ca Button Cp nht vo bin 2
strb2.Remove(0, strb2.Length);
strb2.Append(txtHai.Text);
//xut xem bin 1
txtMot.Text = strb1.ToString();
// Quan st gi tr ca 2 bin v nhn xt
- X l s kin Click ca Button Lm li
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
strb1 = new StringBuilder("Hoa Lan");
strb2 = new StringBuilder("Hoa Hng");
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
BI 3: Cu trc iu khin

S dng cc cu trc iu khin, cch by li v x l li trong C#.

3.1. Xp loi hc tp
Mc tiu: S dng cu trc IF
Yu cu:
- Nhp vo im hc k I, im hc k 2
- Tnh im trung bnh, theo cng thc: im trung bnh = (im HKI + im HKII*2)/3
- Tnh Xp loi hc tp, theo quy tc sau:
o im trung bnh <5: yu
o 5 <= im trung bnh <6.5: trung bnh
o 6.5 <= im trung bnh < 8: kh
o im trung bnh >=8: gii
Hng dn:
- Xy dng mn hnh c giao din sau:

- X l s kin Click ca Button ng
private void btndong_y_Click(object sender, EventArgs e){
float diem_hki=float.Parse(txtdiem_hki.Text);
float diem_hk2=float.Parse(txtdiem_hki.Text);
float dtb=(diem_hki+diem_hkii*2)/3;
dtb=(float)Math.Round(dtb,2);
string xep_loai=;
if (dtb<5)
xep_loai=Yu;
else if (dtb<6.5)

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
xep_loai=Trung bnh;
else if (dtb<8)
xep_loai=Kh;
else
xep_loai=Gii;
txtxep_loai.Text=xep_loai;
}
- X l s kin Click ca Button Lm li
private void btndong_y_Click(object sender, EventArgs e){
txtdiem_hki.Text=;
txtdiem_hkii.Text=;
txtxep_loai.Text=;
}
3.2. Tm ngy trc, ngy sau ca mt ngy
Mc tiu: S dng cu trc if v cc phng thc ca lp DateTime
Yu cu:
- Nhp vo ngy thng (DateTime) cn tm ngy trc v ngy sau
- Tnh v xut ra ngy trc, ngy sau ca ngy va nhp vi giao din sau:

- V d: Ngy hin ti: 01/01/2009 Ngy trc = 31/12/2008, ngy sau= 02/01/2009
3.3. Tnh tin in (bi v nh)
Mc tiu: S dng cu trc IF
Yu cu:
- Nhp vo ch s u, ch s cui ca in k
- Tnh v xut tin in phi tr da vo lng in nng tiu th (tnh bng KW) theo quy tc sau
(c tnh ly tin):
KW Gi tin
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
0 < KW <=100 500
100 < KW <=250 600
250 < KW <=300 800
KW > 300 1.000



3.4. Tnh nm m lnh
Mc tiu: S dng cu trc switch
Yu cu:
- Nhp vo nm dng lch (Nam_duong)
- Tnh v xut ra nm m lch ng vi nm dng lch c nhp vo vi quy c tnh nm m lch:
Nm m lch c tnh d vo CAN + CHI trong CAN v CHI c tnh theo quy tc sau:
Nam_duong % 10 0 1 2 3 4 5 6 7 8 9
CAN Canh Tn Nhm Qu Gip t Bnh inh Mu K

Nam_duong % 12 0 1 2 3 4 5 6 7 8 9 10 11
CHI Thn Du Tut Hi T S Dn Mo Thn T Ng Mi

- V d: nm dng lch: 2009 nm m lch: K su

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
3.5. Tnh s ngy trong thng
Mc tiu: S dng cu trc switch
Yu cu:
- Nhp vo thng v nm dng lch cn tm s ngy
- Tnh v xut ra s ngy ca thng nm

3.6. Tnh ngy ca m, ngy ca cha (Bi v nh)
Mc tiu: S dng cu trc switch v cc thuc tnh, phng thc ca kiu DateTime
Yu cu:
- Nhp vo nm dng lch
- Xut ra mn hnh ngy ca m v ngy ca cha trong nm, bit rng:
o Ngy ca m l ngy ch nht th 2 ca thng 5
o Ngy ca cha l ngy ch nht th 3 ca thng 6 hng nm.
- Mn hnh gi :

3.7. I n bng cu chng ca mt s
Mc tiu: S dng cu trc for
Yu cu:
- Nhp vo mt s nguyn
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
- In bng ca chng ca s nguyn
- Giao din Form nh sau:

Hng dn:
- X l s kin Click ca nt In bng cu chng:
int cc = int.Parse(txtSo.Text);
StringBuilder strb = new StringBuilder();
for (int i = 1; i <= 10; i++)
{
strb.AppendLine(cc.ToString("00") + " x " + i.ToString("00") + " = " + ((int)(cc *
i)).ToString("00") );
}
lblBang.Text = strb.ToString();
3.8. I n bng cu chng t s n s
Mc tiu: S dng cu trc for
Yu cu:
- Nhp vo T s v n s
- X l v xut Bng cu chng c dng sau:
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0

3.9. Tnh li sut ngn hng (Bi v nh)
Mc tiu: s dng cu trc for
Yu cu:
- Nhp vo s tin gi, li sut ngn hng (tnh theo nm) v s thng gi
- Tnh v xut S d cui k v tin li cui k, bit rng:
o Li sut thng = (Li sut nm / 12) /100
o Tin li thng = Tin gc * Li sut thng
o Tin li mi thng s c gp chung vo tin gc
o Tin li cui k s c tnh ly tin t tin li mi thng + tin gc
V d: Nu bn gi 10 triu vi li sut 12%/nm v gi trong 6 thng, th tin li cui k c tnh
nh sau:
o Li sut thng = (12/12)/100 0.01
Thng Tin gc + Li Tin li thng
1 10,000,000 100,000
2 10,100,000 101,000
3 10,201,000 102,010
4 10,303,010 103,030.1
5 10,406,040.1 104,060.401
6 10,510,100.5 105,101.005
S d cui k = 10,615,201.51
Tin li cui k = 615,201.51
- Mn hnh gi :
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0

3.10. Thc hin li cc bi 3.8, 3.9 v 3.10 bng cch dng vng lp while,
do..while (Bi v nh)
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
BI 4: Kiu struct v kiu Array

Xy dng v s dng kiu d liu do ngi dng nh ngha (struct).
Khai bo v s dng mng trong C#
4.1. To v s dng kiu Nhan_vien
Mc tiu: To v s dng kiu cu trc (struct)
Yu cu:
- To kiu Nhan_vien, vi cc thnh phn: h tn, Ngy sinh, h s lng, lng c bn v s
con
o Xy dng hm khi to cc thnh phn trn
o Xy dng phng thc tnh tin lng, vi:
Tin lng = Lng c bn + ( S con * 100000)
o Xy dng phng thc xut thng tin nhn vin ra mn hnh c dng:
Nguyn Thanh Thy 32 tui S con: 2 Tin lng: 2500000
- Nhp thng tin nhn vin v xut ra mn hnh
Hng dn:
- To cu trc Nhan_vien vi cc thnh phn c khai bo Public
+ H tn nhn vin: string
+ Ngy sinh: DateTime
+ Lng c bn: double
+ H s lng: double
+ S con: int (cho php cha gi tr NULL)
struct Nhan_vien
{
public string ho_ten;
public DateTime ngay_sinh;
public double he_so_luong;
public double luong_co_ban;
public int? so_con;
}
- Xy dng phng thc khi to cho cu trc Nhan_vien
public Nhan_vien(string pHo_ten, DateTime pNgay_sinh, double
pLuong_co_ban, double pHe_so_luong, int? pSo_con)
{
ho_ten = pHo_ten;
ngay_sinh = pNgay_sinh;
he_so_luong = pHe_so_luong;

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
luong_co_ban = pLuong_co_ban;
so_con = pSo_con;
}
- Xy dng phng thc tnh tin lng cho nhn vin:
public double Tinh_luong()
{
double tienluong = luong_co_ban * he_so_luong;
tienluong += so_con.HasValue ? so_con.Value * 100000 : 0;
return tienluong;
}
- Xy dng phng thc ToString hin th thng tin ca nhn vin:
public new string ToString()
{
int tuoi = DateTime.Now.Year - ngay_sinh.Year;
return string.Format("{0} - {1} tui S con: {2} Tin lng: {3}",
ho_ten, tuoi, so_con.HasValue ? so_con.Value : 0, Tinh_luong());
}
- Xy dng mn hnh c giao din sau:

- X l s kin Click ca Button ng
private void btndong_y_Click(object sender, EventArgs e) {
Nhan_vien nv;
nv.ho_ten = txtho_ten.Text;
nv.ngay_sinh = DateTime.Parse(txtngay_sinh.Text);
nv.luong_co_ban = double.Parse(txtluong_co_ban.Text);
nv.he_so_luong = double.Parse(txthe_so_luong.Text);
nv.so_con = txtso_con.Text != "" ? (int?)int.Parse(txtso_con.Text) : null;
MessageBox.Show(nv.ToString());
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
}

- X l s kin Click ca Button Lm li
private void btnlamlai_Click(object sender, EventArgs e){
txtho_ten.Text = "";
txtngay_sinh.Text = "";
txthe_so_luong.Text = "";
txtluong_co_ban.Text = "";
txtso_con.Text = "";
}
4.2. Lm vic vi mng
Mc tiu:
- S dng mng v cc thao tc x l thng dng trn mng
- S dng lp Random v cc phng thc ca lp ny
- S dng cc phng thc ca lp Array
Yu cu:
- Nhp vo s phn t
- To mt Mng s nguyn c s phn t c nhp vo. Sau pht sinh gi tr cho tng
phn t, bit rng gi tr c pht sinh ngu nhin nm trong khong [-50, 100]
- Thc hin cc x l sau trn Mng s nguyn, xut kt qu ra MessageBox:
1. Tm phn t ln nht, phn t nh nht trong mng
2. Sp xp mng tng dn/ gim dn
3. Tnh tng cc phn t trong mng
4. Nhp vo 1 s nguyn X, tm gi tr X trong mng
Hng dn:
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0

- Khai bo bin mng s nguyn a ton cc
int[] a;
- X l s kin Click ca Button To mng


// To mng s nguyn a vi kch thc bng s phn t va nhp
int n = int.Parse(txtso_phan_tu.Text);a = new int[n];
// Khi to mng s nguyn a vi cc phn t c gi tr ngu nhin t
50 n 100
Random ngau_nhien=new Random();
for (int i=0;i<a.Length;i++)
a[i]=ngau_nhien.Next(-50,101);
// Xut mng s nguyn a ln mn hnh
string chuoi_a=a[0].ToString();
for (int i=1;i<a.Length;i++)
chuoi_a=string.Format("{0} {1}",chuoi_a,a[i]);
txtmang_so_nguyen_a.Text=chuoi_a;
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
BI 5: Tng quan Lp trnh hng i
tng


Xy dng v s dng cc class cng nh cc thnh phn ca class trong mi trng C#
5.1. Gii phng trnh bc nht Ax + B = 0
Mc tiu: Xy dng class n gin vi 1 phng thc
Yu cu:
- To class Phng trnh bc 1, gm cc thnh phn sau:
o Cc thuc tnh: H s a, h s b
o Phng thc Gii phng trnh.
- To form, trong :
o Nhp H s a v b
o Gii phng trnh v xut ra nghim
Hng dn:
- Nhn chut phi ln project v chn Add Class
- Trong ca s Add New Item, nhp tn cho class l PHUONG_TRINH_BAC_I.CS
- Khai bo cc thnh phn trong class:
o Bin thnh vin (Field): lu tr thng tin v h s a v h s b
private float mHe_so_a;
private float mHe_so_b;
o Thuc tnh (Property): Truy xut n gi tr ca cc bin thnh vin trong class
public float He_so_a
{
get { return mHe_so_a; }
set { mHe_so_a=value; }
}
public float He_so_b
{
get { return mHe_so_b; }
set { mHe_so_b=value; }
}
o Phng thc khi to (Constructor): Khi to cc gi tr ban u cho h s A v B
public PHUONG_TRINH_BAC_I()

Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
{ }
public PHUONG_TRI NH_BAC_I(float pHe_so_a, float pHe_so_b)
{
He_so_a=pHe_so_a;
He_so_b=pHe_so_b;
}
o Phng thc gii phng trnh tm nghim
public string Giaipt() {
string kq; //lu kt qu nghim ca pt
//Xt nghim ca phng trnh theo h s a
if (mHe_so_a == 0)
if (mHe_so_b == 0)
kq ="PT c v s nghim";
else
kq = "PT v nghim";
else
kq = string.Format("Phng trnh c nghim: x = {0}", -
He_so_b / He_so_a);
//tr v gi tr cho hm
return kq;
}
- Xy dng mn hnh c giao din sau:

o X l s kin Click ca Button Gii PT
private void btngiai_pt_Click(object sender, EventArgs e){
float a=float.Parse(txthe_so_a.Text);
float b=float.Parse(txthe_so_b.Text);
PHUONG_TRINH_BAC_I pt_bac_1=new PHUONG_TRINH_BAC_I(a,b);
txtnghiem.Text=pt_bac_1.Giaipt();
}
o X l s kin Click ca Button Lm li
Bi tp

Nn tng v lp trnh hng i tng vi C# 4.0
private void btnlam_lai_Click(object sender, EventArgs e){
txthe_so_a.Text=;
txthe_so_b.Text=;
txtnghiem.Text=;
}
5.2. X l phn s
Mc tiu: xy dng class v cc phng thc tnh ton khc nhau
M t: xy dng chng trnh h tr ngi dng thc hin cc php ton cng, tr, nhn, chia trn
cc phn s
Yu cu:
- Xy dng class Phn s vi cc thnh phn sau:
o Thuc tnh: T s v Mu s
o Phng thc khi to khng c tham s: gn gi tr mc nh cho T s v mu s l 1
o Phng thc khi to c 2 tham s l T s v Mu s
Cc phng thc tnh ton:
o Phng thc Ti gin phn s: dng ti gin phn s (v d: 2/4 ti gin thnh 1/2)
o Phng thc Cng: tnh tng ca 2 phn s v tr v phn s kt qu sau khi c ti
gin
o Phng thc Tr: tnh hiu ca 2 phn s v tr v phn s kt qu sau khi c ti
gin
o Phng thc Nhn: tnh tch ca 2 phn s v tr v phn s kt qu sau khi c ti
gin
o Phng thc Chia: tnh thng ca 2 phn s v tr v phn s kt qu sau khi c
ti gin
o Phng thc Xut: xut phn s kt qu ra mn hnh c dng <T s>/<Mu s>
Trong :
d b
c b d a
d
c
b
a
*
* *


d b
c b d a
d
c
b
a
*
* *


d b
c a
d
c
b
a
*
*
*

c b
d a
d
c
b
a
*
*
:

Hng dn:
- To class PhanSo, gm cc thnh phn yu cu trn
o Xy dng phng thc Ti gin nh sau:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 24/64
private PhanSo Toigian(PhanSo pso)
{
PhanSo ps = new PhanSo();
int us = uscln(pso.Tuso, pso.Mauso);
ps.Tuso = pso.Tuso / us;
ps.Mauso = pso.Mauso / us;
return ps;
}
private int uscln(int so_1, int so_2)
{
int a = Math.Abs(so_1), b = Math.Abs(so_2);
while (a != b)
{
if (a > b)
a -= b;
else
b -= a;
}
return a;
}
//Lu : Hc vin phi kim tra tnh hp l ca t s v mu s trc
khi gi hm ny
- Xy dng phng thc Cng nh sau:
public PhanSo Cong(PhanSo p)
{
PhanSo kq = new PhanSo();
kq.Tuso = Tuso * p.Mauso + Mauso * p.Tuso;
kq.Mauso = Mauso * p.Mauso;
return Toigian(kq);
}
//Tng t, hc vin xy dng 3 phng thc cn li
- Xy dng mn hnh c giao din sau:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 25/64

o Xy dng phng thc To phn s: x l chui nhp ca Phn s v tr v Phn s
//Phng thc ny c xy dng trong class Form
private PhanSo Tao_phan_so(string chuoi)
{
string[] s = chuoi.Split('/');
int tu = int.Parse(s[0]);
int mau = int.Parse(s[1]);
return new PhanSo(tu, mau);
}
o X l s kin Click ca Button Cng
PhanSo p1 = Tao_phan_so(txtphan_so_1.Text);
PhanSo p2 = Tao_phan_so(txtphan_so_2.Text);
PhanSo kq = p1.Cong(p2);
txtket_qua.Text = kq.Xuat();
//Tng t, x l cc nt cn li
5.3. X l phn s nng cao
Mc tiu: xy dng class v cc phng thc np chng ton t
Yu cu:
- Ging yu cu ca bi 4.2, nhng vit li (hoc b sung) cc phng thc np chng ton t +, -,
*, /, ==, !=
- B sung nt So snh 2 phn s trn Form, dng so snh hai phn s nhp vo c bng nhau
khng
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 26/64

- M rng: Hc vin c th b sung cc nt So snh ln hn, So snh nh hn
5.4. Nhp xut thng tin ha n (Bi v nh)
Mc tiu:
- Xy dng class v tng hp cc kin thc hc (Array, Class, string, StringBuilder )
- ng dng bi ton thc t
Yu cu: xy dng ng dng h tr nhp xut thng tin Ha n bn hng theo m t sau:
- Thng tin ha n gm c: S ha n, Ngy lp ha n, Khch hng v Danh sch cc sn
phm c mua
- Thng tin sn phm gm c: Tn sn phm, n gi sn phm, S lng mua v Thnh tin.
- Sau khi nhp y Thng tin ha n v Chi tit ha n, ngi dng c php xem thng
tin ca Ha n bn hng
Hng dn:
- Xy dng hai class: HoaDon v SanPham
- Khai bo cc bin dng chung trn Form: 1 bin kiu HoaDon, 1 bin mng kiu SanPham, 1 bin
kiu int (dng lu tr s sn phm, cng l s phn t ca mng)
- Gi giao din ca Form:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 27/64




Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 28/64
BI 6: Tnh Tha k v a hnh

Xy dng v s dng cc class k tha t class khc
S dng tnh a hnh ca class
6.1. Qun l thng tin nhn vin
Mc tiu: Xy dng class k tha v p dng k thut Late Binding
M t: Xy dng ng dng qun l lng ca cng ty Z.
- Thng tin ca nhn vin gm: H tn nhn vin, Gii tnh, Ngy sinh, Ngy vo lm, H s lng,
Lng c bn, Thm nin v nh mc s ngy vng (mc nh l 3 ngy). Trong :
o Lng c bn: dng chung cho tt c cc nhn vin trong cng ty
o Thm nin = Nm hin hnh Nm vo lm
- Nhn vin ca cng ty c chia lm 2 loi:
o Nhn vin vn phng: c thm thng tin v S ngy vng v n gi pht cho tng ngy
vng (mc nh l 100.000/ngy). Cc khon pht, thng v lng nh sau:
Tin pht: Tin pht = n gi pht x S ngy vng vt qu nh mc.
Tin thng: 10% ca (Lng c bn * H s lng)
Lng: (Lng c bn * H s lng) + Tin thng Tin pht
o Nhn vin sn xut: c thm thng tin v S ngy vng , S lng sn phm, nh mc sn
phm (mc nh l 1,000), v n gi sn phm (mc nh l 10,000/sn phm). Ring nh
mc s ngy vng s tng ln 2 ngy. Cc khon thng v lng nh sau:
Tin thng: S sn phm vt nh mc x n gi sn phm x 0.05
Tuy nhin, nu S ngy vng > nh mc vng th:
Tin thng = Tin thng - S ngy vng vt qu nh mc * (Tin thng *0.01)
Lng: (Lng c bn * H s lng) + Tin thng
Yu cu: xy dng chng trnh h tr nhp thng tin nhn vin, tnh cc khon pht, thng, lng
v xut kt qu ra mn hnh
Hng dn:
- Xy dng lp Nhan_vien
class Nhan_vien
{
private string mHo_ten;
private DateTime mNgay_sinh;
private DateTime mNgay_vao_lam;
private double mHe_so_luong;
private Gioi_tinh mGioi_tinh;
public static double mLuong_co_ban = 830000;
protected int Dinh_muc_vang = 3;


Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 29/64
public string Ho_ten
{ get { return mHo_ten; } set { mHo_ten = value; } }
public DateTime Ngay_sinh
{ get { return mNgay_sinh; } set { mNgay_sinh = value; } }
public DateTime Ngay_vao_lam
{ get { return mNgay_vao_lam; } set { mNgay_vao_lam = value; } }
public double He_so_luong
{
get { return mHe_so_luong; }
set { mHe_so_luong = value; }
}
public Gioi_tinh Gioi_tinh
{ get { return mGioi_tinh; } set { mGioi_tinh = value; } }

public Nhan_vien() { }
public Nhan_vien(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam, Gioi_tinh
_gioi_tinh, double _he_so_luong)
{
Ho_ten = _ho_ten;
Ngay_sinh = _ngay_sinh;
Ngay_vao_lam = _ngay_vao_lam;
Gioi_tinh = _gioi_tinh;
He_so_luong = _he_so_luong;
}
public virtual double Tinh_luong()
{
double tienluong = mLuong_co_ban * He_so_luong;
return tienluong;
}
public int Tham_nien
{
get { return DateTime.Today.Year - Ngay_vao_lam.Year; }
}
public virtual double Tinh_thuong()
{
return Tham_nien * 500000;
}
public override string ToString()
{
return string.Format("Thng tin lng ca {0}", Ho_ten);
}
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 30/64
}
- Xy dng class NVVP k tha t class Nhan_vien:
class NVVP : Nhan_vien
{
int mSo_ngay_vang;
private static double mDon_gia_phat = 100000;
public int So_ngay_vang
{
get { return mSo_ngay_vang; }
set { mSo_ngay_vang = value; }
}
public static double Don_gia_phat
{
get { return mDon_gia_phat; }
set { mDon_gia_phat = value; }
}
public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime, ngay_vao_lam,
Gioi_tinh _gioi_tinh, double _he_so_luong)
: base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong)
{ }
public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam,
Gioi_tinh _gioi_tinh, double _he_so_luong,int _so_ngay_vang)
: base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong)
{
So_ngay_vang = _so_ngay_vang;
}
public double Tinh_phat()
{
double tien = 0;
if (So_ngay_vang > base.Dinh_muc_vang)
tien = (So_ngay_vang - base.Dinh_muc_vang) * Don_gia_phat;
return tien;
}
public override double Tinh_thuong()
{
return base.Tinh_luong() * 0.1;
}
public override double Tinh_luong()
{
retun base.Tinh_luong() + (base.Tinh_luong() * 0.1) - Tinh_phat();
}
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 31/64
public override string ToString()
{
return string.Format("{0}\nLoi nhn vin: Nhn vin vn phng\nTin thng:
{1}\n"+ "Tin pht: {2} \n"+ "Tin lng: {3} \n" +"Cn lnh: {4}"
,base.ToString(), Tinh_thuong().ToString("#,##0.00"),Tinh_phat().ToString("#,##0.00"),
base.Tinh_luong().ToString("#,##0.00"), this.Tinh_luong().ToString("#,##0.00"));
}
}
- Tng t, xy dng lp NVSX theo m t trn
class NVSX : Nhan_vien
{
int mSo_san_pham;
int mSo_ngay_vang;
static int mDinh_muc_san_pham = 1000;
static double mDon_gia_san_pham = 10000;
public static int Dinh_muc_san_pham
{
get { return mDinh_muc_san_pham; }
set { mDinh_muc_san_pham = value; }
}
public static double Don_gia_san_pham
{
get { return mDon_gia_san_pham; }
set { mDon_gia_san_pham = value; }
}
//Tip tc cho cc khai bo cn li

}
- Xy dng mn hnh c giao din sau:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 32/64

- X l s kin Load ca Form
txtluong_co_ban.Text = Nhan_vien.luong_co_ban.ToString();
- X l s kin Click ca Button ng
string ho_ten = txtho_ten.Text;
DateTime ngay_sinh = DateTime.Parse(txtngay_sinh.Text);
DateTime ngay_vao_lam = DateTime.Parse(txtngay_vao_lam.Text);
Gioi_tinh gioi_tinh = cbgioi_tinh.Checked == true ? Gioi_tinh.N : Gioi_tinh.Nam;
double he_so_luong = double.Parse(txthe_so_luong.Text);
int so_ngay_vang = int.Parse(txtgia_tri.Text);
Nhan_vien nv;
if (rbnvvp.Checked == true)
nv = new NVVP(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong,
so_ngay_vang);
else
{
int so_san_pham = int.Parse(txtSosp.Text);
nv = new NVSX(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong,
so_ngay_vang, so_san_pham);
}
MessageBox.Show(nv.ToString());
Kt qu kt xut
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 33/64

6.2. Qun l danh sch my tnh (Bi v nh)
Mc tiu: Xy dng class k tha v p dng tnh cht a hnh
Yu cu: Xy dng chng trnh nhp v xut danh sch My tnh. Trong my tnh c 2 loi l My
tnh bn v My tnh xch tay
- My tnh bn gm cc thng tin: S hiu, n gi v Hng sn xut, CPU v RAM
- My tnh xch tay gm cc thng tin: S hiu, n gi v Hng sn xut, Trng lng, Thi gian
PIN v Kch thc mn hnh
Hng dn:
- Xy dng class MAY_TINH vi cc thng tin: S hiu, n gi v Hng sn xut
o Xy dng phng thc Hin th thng tin: cho php ghi (virtual) v tr v chui gm cc
thng tin: S hiu, n gi v Hng sn xut
- Xy dng class MAY_TINH_DE_BAN c dn xut t lp MAY_TINH gm 2 thng tin: CPU, RAM
o Phng thc khi to (khng c cng c)
o Xy dng phng thc Hin th thng tin: ci t li phng thc tnh Hin th thng tin ca
class MAY_TINH, cng thm vo chui tr v thng tin: CPU v RAM
- Xy dng class MAY_TINH_XACH_TAY c dn xut t lp MAY_TINH cc thng tin: Trng
lng, Thi gian PIN, Kch thc mn hnh
o Phng thc khi to (khng c cng c)
o Xy dng phng thc Hin th thng tin: ci t li phng thc tnh Hin th thng tin ca
class MAY_TINH, cng thm vo chui tr v thng tin: Trng lng, Thi gian PIN v Kch
thc mn hnh.
- Giao din gi :
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 34/64

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 35/64
BI 7: Delegate v Event

Khai bo v s dng Delegate
Khai bo v pht sinh Event
7.1. Qun l thng tin nhn vin
Mc tiu:
- Xy dng class v s dng t kha public static. S dng thuc tnh Read-only
- Xy dng v s dng s kin
M t: Xy dng chng trnh qun l thng tin nhn vin cho cng ty X
Yu cu:
- Xy dng class Nhn vin bao gm cc thng tin: H tn nhn vin, Gii tnh, Ngy sinh, Ngy
vo lm, H s lng, Lng c bn v Thm nin. Trong :
o Lng c bn dng chung cho tt c cc nhn vin trong cng ty
o Thm nin c tnh bng cng thc: Nm hin hnh Nm vo lm
- Xy dng phng thc tnh tin lng, bit rng: Tin lng = Lng c bn * H s lng
- Xy dng phng thc tnh tin thng, bit rng: Tin thng = Thm nin * 500000
- Pht ra thng bo nu H s lng c thay i
Hng dn:
- S dng li class Nhanvien xy dng trong Bi 6.1, b sung thm:
Khai bo s kin:
public delegate void Xuly(string chuoi);
public event Xuly Tang_luong;
//Hc vin c th dng delegate ca h thng
Pht sinh s kin
public double He_so_luong
{
get { return mHe_so_luong; }
set {
mHe_so_luong = value;
if (Tang_luong != null)
Tang_luong("Bn c tng lng");
}
}
- Mn hnh gi :

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 36/64



Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 37/64
BI 8: Lp tru tng, lp giao tip

Xy dng v s dng cc class tru tng, lp giao tip
S dng cc lp giao tip c xy dng sn trong C#
8.1. Qun l cc lp hnh hc
Mc tiu: Xy dng v sng dng class tru tng (Abstract)
Yu cu: Xy dng chng trnh nhp, tnh ton v xut Chu vi, Din tnh ca Hnh trn, hnh ch
nht v hnh tam gic
o Thng tin ca hnh trn: Bn knh
o Thng tin ca ch nht: Chiu di v chiu rng
o Thng tin ca hnh tam gic: Cnh A, cnh B v cnh C
Hng dn
- Xy dng class tru tng HinhHoc vi hai phng thc tru tng tnh din tch v chu vi nh
sau:
abstract class HinhHoc
{
public abstract double Dien_tich();
public abstract double Chu_vi();
public virtual string Xuat_thong_tin()
{
return "Thng tin ca hnh ";
}
}
- Xy dng lp HinhTron c dn xut t lp HinhHoc:
class HinhTron : HinhHoc
{
public double Bankinh { get; set; }
public override double Chu_vi()
{
return Math.PI * 2 * Bankinh;
}
public override double Dien_tich()
{
return Math.PI * Bankinh * Bankinh;
}
public override string Xuat_thong_tin()
{

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 38/64
return base.Xuat_thong_tin() + "Trn";
}
}
- Tng t, hc vin xy dng lp HinhChuNhat, HinhTamGiac c dn xut t lp HinhHoc
- Xy dng mn hnh c giao din sau:

- X l s kin click ca nt Tnh:
HinhHoc h;
if (rbhinh_tron.Checked == true)
{
double bankinh = double.Parse(txtBk.Text);
h = new HinhTron { Bankinh = bankinh };
}
else if (rbhinh_chu_nhat.Checked == true)
{
double dai = double.Parse(txtCd.Text);
double rong = double.Parse(txtCr.Text);
h = new HinhChuNhat { Chieudai = dai, Chieurong = rong };
}
else
{
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");
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 39/64
txtDt.Text = h.Dien_tich().ToString("#,##0.00");
8.2. Qun l i tng hnh hc
Mc tiu: S dng lp giao tip c xy dng sn trong C#
Yu cu:
- Xy dng chng trnh nhp, tnh ton v xut Chu vi, Din tnh ca Hnh trn, hnh ch nht v
hnh tam gic
o Thng tin ca hnh trn: Bn knh
o Thng tin ca ch nht: Chiu di v chiu rng
o Thng tin ca hnh tam gic: Cnh A, cnh B v cnh C
o Xut cc thng tin hnh ra mn hnh, c sp xp theo Chu vi hoc Din tch
Hng dn:
- Xy dng lp cc lp HinhHoc, HinhTron, HinhChuNhat, HinhTamGiac: ging bi 8.1
- Sau , b sung vo lp HinhHoc nh sau:
abstract class HinhHoc : IComparable
{

public int CompareTo(object obj)
{
HinhHoc hh = (HinhHoc)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;
}
}
- Xy dng mn hnh c dng sau:
So snh theo din tch
So snh theo chu vi
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 40/64

o Khai bo cc bin ton cc trong mn hnh
HinhHoc[] h;
int sopt=0;
o X l Form_Load
h=new HinhHoc[sopt];
o X l xut danh sch hnh hc
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();
}
o X l Button Thm hnh trn
Array.Resize<HinhHoc>(ref h, sopt + 1);
double bankinh = double.Parse(txtbankinh.Text);
h[sopt] = new HinhTron { Bankinh = bankinh };
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 41/64
sopt++;
Xuat();
o X l Button Thm hnh ch nht
Array.Resize<HinhHoc>(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++;
Xuat();
o X l Button Thm hnh tam gic
Array.Resize<HinhHoc>(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++;
Xuat();
o X l Button Sp xp
Array.Sort(h);
Xuat();
Lu : Hc vin sa li phng thc Xuat_thong_tin cho ph hp vi bi tp ny
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 42/64
BI 9: Collections v Generic


S dng cc lp Collection v Generic Collection trong C#
9.1. Qun l danh sch hc vin
Mc tiu: To v s dng i tng kiu ArrayList
Yu cu:
- Xy dng chng trnh thm danh sch hc vin (DSHV) mi vo danh sch c. Cch thm nh
sau: Thm DSHV mi vo cui DSHV c, sau sp xp li (Hnh 2)
- Thit k mn hnh vi giao din nh sau:

Hnh 1: Lc mi m mn hnh
Hng dn:
- Khai bo 2 bin ton cc lu danh sch hc vin
ArrayList hocvien = new ArrayList();
ArrayList hocvienmoi = new ArrayList();
- X l s kin Form Load:
//Khi to ArrayList cha danh sch tn cc hc vin trong lp
hocvien.Add("Nguyn Bo Anh");
hocvien.Add("Phm Chi Bo");
hocvien.Add("Phm Lan Chi");
hocvien.Add("Trn Vn Hng");

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 43/64
hocvien.Add("Nguyn Dung");
hocvien.Add("Hong Ngc Linh");
hocvien.Add("Trn Anh Ti");
// hin th danh sch hc vin c
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien[i].ToString());
txtdanhsachcu.Text = sb.ToString();
// Khi to ArrayList cha danh sch tn ca cc hc vin mi
hocvienmoi.Add(" Thin Nga");
hocvienmoi.Add("Phm Qunh Anh");
hocvienmoi.Add("L Qunh Hoa");
hocvienmoi.Add("L Thin Thanh");
hocvienmoi.Add("Nguyn Dung");
// hin th danh sch hc vin mi
sb = new StringBuilder();
for (int i = 0; i < hocvienmoi.Count; i++)
sb.AppendLine(hocvienmoi[i].ToString());
txtdanhsachmoi.Text = sb.ToString()
- Nt Thm HV mi:
//thm mi v sp xp
for (int i = 0; i < hocvienmoi.Count; i++)
hocvien.Add(hocvienmoi[i]);
hocvien.Sort();
//Xut ra mn hnh
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien[i].ToString());
txtdanhsachcu.Text = sb.ToString();
- Kt qu sau khi chn danh sch hc vin mi:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 44/64

Hnh 2: Kt qu sau khi chn
9.2. Qun l danh sch hc vin
Mc tiu: To v s dng i tng kiu SortedList
Yu cu:
- Xy dng chng trnh thm danh sch hc vin (DSHV) mi vo danh sch c. Thng tin hc vin
gm c: M hc vin v H tn hc vin
- Xy dng mn hnh nh sau:

- Sau khi thm DSHV mi vo:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 45/64

Hng dn:
- Khai bo 2 bin SortedList ton cc lu 2 danh sch hc vin
SortedList hocvien = new SortedList();
SortedList hocvienmoi = new SortedList();
- X l s kin Form Load:
// To danh sch hc vin c
hocvien.Add("001","Nguyn Bo Anh");
hocvien.Add("003","Phm Chi Bo");

// To danh sch hc vin mi
hocvienmoi.Add("002"," Thin Nga");
hocvienmoi.Add("005","Phm Qunh Anh");
..
// Xut danh sch hc vin ra mn hnh
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien.GetKey(i).ToString()+"
"+hocvien.GetByIndex(i).ToString());
txtdanhsachcu.Text = sb.ToString();
//Tng t xut danh sch hc vin mi
..
- X l nt Thm HV mi:
for (int i=0; i < hocvienmoi.Count; i++)
hocvien.Add(hocvienmoi.GetKey(i).ToString(), hocvienmoi.GetByIndex(i).ToString());
StringBuilder sb = new StringBuilder();
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 46/64
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien.GetKey(i).ToString()+" " + hocvien.GetByIndex(i).ToString());
txtdanhsachcu.Text = sb.ToString();
9.3. Chuyn s thnh ch
Mc tiu: To v s dng i tng kiu HashTable
Yu cu:
- Xy dng chng trnh chuyn i s thnh chui (V d: 3541 Ba nm bn mt)
- Xy dng mn hnh nh sau:

Hng dn:
- X l nt ng
//Khai bo mng chui cc k s:
string[] kyso ={"0","1","2","3","4","5","6","7","8","9" };
//Khai bo mng chui cc chui k t tng ng vi cc k s
string[] kytu = { "Khng", "Mt", "Hai", "Ba", "Bn", "Nm", "Su", "By", "Tm", "Chn" };
//To HashTable vi mng chui k s l key v chui k t l value
Hashtable h = new Hashtable();
for (int i = 0; i < kyso.Length; i++)
h.Add(kyso[i], kytu[i]);
string chuoiso = txtso.Text;
string chuoi = "";
for (int i = 0; i < chuoiso.Length; i++)
chuoi += h[chuoiso[i].ToString()]+" ";
txtchuoi.Text = chuoi;
9.4. c 3 s (Bi v nh)
Mc tiu: To v s dng i tng HashTable kt hp vi cu trc iu khin
Yu cu:
- Xy dng chng trnh c 1 s (ti a l 3 k s) thnh chui (V d: 341 Ba trm bn mi
mt)
- Mn hnh gi :
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 47/64

9.5. Bi v nh
Mc tiu: S dng i tng kiu Generic Colections
Yu cu: Thc hin li cc bi tp trn, s dng Generic Collections.
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 48/64
BI 10: Cc kin thc c bn v SQL Server

S dng tin ch SQL Server Management Studio (SSMS)
To c s d liu, to cc bng v cc quan h rng buc kha ngoi
Vit cc cu lnh truy vn d liu trn cc bng
Vit cc cu lnh cp nht d liu trn cc bng
10.1. To c s d liu QLSV (bng tin ch SSMS)
M t
C s d liu Qun l Sinh vin cho php lu tr thng tin cc sinh vin trong cc khoa v kt qu
hc tp ca cc sinh vin theo mn hc
To cu trc cc bng
Cc Field c gch di v in m l kha chnh ca bng
Khoa Danh mc khoa
Field Name Field Type Field Size Format Description
KhoaID Char 2 M khoa
TenKhoa NVarchar 50 Tn khoa
MonHoc Danh mc mn hc
Field Name Field Type Field Size Format Description
MonHocID Char 2 M mn
TenMonHoc NVarchar 50 Tn mn
SinhVien Danh mc sinh vin
Field Name Field Type Field Size Format Description
SinhVienID Char 3 M sinh vin
HoSinhVien NVarchar 30 H
TenSinhVien NVarchar 20 Tn
NgaySinh DateTime Ngy sinh
GioiTinh Bit True: Nam; False: N
DiaChi NVarchar 50 a ch
HocBong Int Hc bng
KhoaID Char 2 M khoa
KetQua Kt qu hc tp
Field Name Field Type Field Size Format Description
SinhVienID Char 3 M sinh vin
MonHocID Char 2 M mn
Diem Real im
To Database Diagram vi cc quan h theo m t sau:
Bng cha Khoa v bng con SinhVien quan h theo ct KhoaID
Bng cha SinhVien v bng con KetQua quan h theo ct SinhVienID
Bng cha MonHoc v bng con KetQua quan h theo ct MonHocID

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 49/64

Nhp d liu mu
Khoa
M khoa Tn khoa
CN Khoa Cng ngh thng tin
TO Khoa Ton
VL Khoa L
MonHoc
M mn Tn mn
CO C l thuyt
CS C s d liu
CT Cu trc d liu
LT Lng t
RR Ton ri rc
TC Ton cao cp
TT Tr tu nhn to
SinhVien
M H Tn Ngy sinh Gii tnh Hc bng M khoa
C00 Nguyn Th Trang 13/8/1991 False 100000 CN
C01 H Tun 24/2/1991 True 0 CN
C02 Trn Ngc Ho 11/6/1990 False 120000 CN
C03 Bi Th Tho 26/2/1990 False 100000 CN
C04 Nguyn Hong Hng 19/3/1990 True 150000 CN
T00 L Tun 15/2/1991 True 0 TO
T01 Bi Minh Khnh 9/4/1990 True 120000 TO
T02 Trn Th Lan 4/3/1990 False 100000 TO
T03 L Thin 18/5/1990 True 0 TO
T04 L Th Tho 27/3/1990 False 120000 TO
KetQua
M sinh vin M mn hc im
C00 CS 10
C00 CT 9
C00 TT 7
C00 RR 8.5
C01 CS 7
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 50/64
C01 CT 6
C01 TT 7
C01 RR 9
C02 CS 7.5
C02 CT 4
C02 TT 5
C02 RR 3
C03 CS 9
C03 CT 1
C03 TT 8.5
C03 RR 9
C04 CS 2
C04 CT 1
10.2. Truy vn d liu (bng cu lnh)
Ghi ch: cc bi c nh du (*) l bi v nh
Truy vn n gin
a. Lit k danh sch sinh vin gm cc ct M, H v Tn, Ngy sinh, Gii tnh, Hc bng. C sp
tng theo ct hc bng
Mu:
M H tn Ngy sinh Phi Hc bng
C00 Nguyn Th Trang 8/13/1991 N 100000
C04 Nguyn Hong Hng 3/19/1990 Nam 150000

Hng dn: th hin ct Phi l Nam/N


CASE WHEN GioiTinh='true' THEN 'Nam' ELSE N'N' END
b. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k
cc sinh vin hc khoa Cng ngh thng tin v c hc bng >3,000,000
c. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k
cc sinh vin c tn bt u l T
d. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k
cc sinh vin c hc bng t 100000 n 120000
e. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Hc bng. Ch lit k cc sinh
vin c hc bng v ngy sinh nm trong khong [1/6/1990, 30/6/1991]
f. Hin th danh sch 10 sinh vin u tin c hc bng t cao n thp (Hng dn: dng TOP 10
v ORDER BY DESC)
Truy vn trn nhiu bng
a. Lit k danh sch sinh vin gm cc ct m, h, tn, ngy sinh, gii tnh, m khoa, tn khoa
b. Lit k kt qu hc tp gm cc ct m sinh vin, h v tn, m mn hc, im
c. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) c hc mn C s d liu
d. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) t im 10 trong bi thi
e. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) c im thi mn Ton cao
cp nh hn 5 (*)
f. Cho bit danh sch cc mn hc cha c sinh vin ng k (*)
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 51/64
g. Cho bit danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) cha ng k hc mn hc
no (*)
Truy vn c nhm
a. Thng k tng s sinh vin theo khoa. C sp tng theo tng s sinh vin
Mu:
M khoa Tng s sinh vin
TO 30
CN 40

b. Thng k tng hc bng theo khoa. Ch hin th nhng khoa c tng hc bng >=3,000,000
Mu:
M khoa Tn khoa Tng hc bng
CN Khoa Cng ngh thng tin 3,500,000

c. Hin th danh sch sinh vin gm m, h tn v im trung bnh cc mn hc m sinh vin c


ng k hc
d. Hin th danh sch khoa gm m khoa, tn khoa v im trung bnh ca tt c cc sinh vin trong
khoa
e. Hin th danh sch sinh vin gm m, h tn, im trung bnh v kt qu xp loi hc tp ca sinh
vin, trong kt qu xp loi hc tp c xt da trn im trung bnh theo quy tc sau: (*)
iu kin Xp loi
im trung bnh < 5 Yu
5 <= im trung bnh < 6.5 Trung bnh
6.5 <= im trung bnh < 8 Kh
im trung bnh >= 8 Gii
f. Hin th danh sch cc mn hc cng vi im thi cao nht m sinh vin t c trong mn
hc , kt qu tr v gm m mn, tn mn, im thi cao nht ca sinh vin (*)
g. Hin th danh sch cc mn hc cng vi s lng sinh vin ng k hc cc mn hc , kt
qu tr v gm m mn, tn mn, s lng sinh vin ng k (*)
h. Hin th danh sch cc mn hc c s lng sinh vin ng k hc ng nht, kt qu tr v gm
m mn, tn mn v s lng sinh vin ng k (*)
i. Thng k s lng sinh vin u v rt ca tng mn, bit rng sinh vin rt khi im thi nh hn
5, kt qu tr v gm m mn, tn mn, s sinh vin u, s sinh vin rt (*)
10.3. Truy vn cp nht d liu
Thm mu tin
a. Thm mt khoa mi vo bng Khoa vi cc thng tin sau:
M khoa: HO
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 52/64
Tn khoa: Khoa Ho
b. Thm mt sinh vin mi vo bng SinhVien vi cc thng tin sau:
M sinh vin: H01
H v tn: L Thanh Tng
Ngy sinh: 23/1/1992
Gii tnh: Nam
a ch: 122 L Chnh Thng
Hc bng: 100,000
M khoa: HO
c. Thm cc im thi ca sinh vin c m H01 vo bng KetQua vi cc thng tin sau:
Mi im thi s tng ng vi mt m mn hc trong bng MonHoc
Mc nh im thi l 6
Sa mu tin
a. Cp nht ngy sinh ca sinh vin H Tun thnh 05/07/1980
b. Tng hc bng ln 5% cho cc sinh vin hc khoa Cng ngh thng tin v c hc bng >0
c. Cp nht hc bng l 50,000 cho cc sinh vin n hc khoa Cng ngh thng tin v cha c hc
bng
d. Cng thm 5 im mn Tr Tu Nhn To cho cc sinh vin thuc khoa Anh vn. im ti a ca
mn l 10
Xa mu tin
a. Xo cc kt qu hc tp ca sinh vin c m H01
b. Xo sinh vin c m H01
c. Xa tt c nam sinh vin ca khoa Tin hc trong bng SinhVien (nhn xt: c xa c khng?)
d. Xa cc kt qu hc tp ca nhng sinh vin no c im cc mn < 5



Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 53/64
Ph lc
Bi lm thm
1. Bi 2: Kiu d liu v bin
1. M ha v gii m
Mc tiu: ng dng vo bi ton thc t
M t:
Mt cng ty mun truyn d liu qua ng mng tuy nhin h s rng d liu s b nh cp.
Cng ty thu mt lp trnh vin gii quyt vn ny. Sau khi xem xt lp trnh vin quyt nh
la chn chin lc s m ha (encrypt) d liu trc khi truyn trn mng bi v nu d liu
c m ha th nu c b nh cp th cng khng bit n c ngha g. D liu c gi i c
chia thnh nhm gm 4 ch s.
ng dng ca lp trnh vin s c mt s nguyn c 4 ch s. Sau s ny c m ha
theo cc bc nh sau:
(1) thay th mi k s bi tng ca n vi 7 v ly phn d cho 10
(2) o v tr ca k s th 1 vi k s th 3, k s th 2 v k s th 4.
V d: s ban u l 1093 s c m ha thnh 6087. Kt qu m ha sau c in ra mn
hnh
Yu cu: Xy dng chng trnh m ha v gii m mt s nguyn, gm 2 chc nng:
- Chc nng 1: m ha mt s c nhp vo chng trnh
- Chc nng 2: gii m (decryption) s c m ha xut ra gi tr ban u

2. Bi 3: Cu trc iu khin
1. Tnh thu thu nhp c nhn
Mc tiu: S dng cu trc if else
Yu cu:
- Nhp vo mc lng v s ngi ph thuc
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 54/64
- Tnh v xut ra mc thu thu nhp c nhn cn phi ng theo cc bc:
o Bc 1: tnh thu nhp chu thu, bit rng:
Thu nhp chu thu = Mc lng 4,000,000 - S ngi ph thuc * 1,600,000
o Bc 2: tnh thu thu nhp c nhn theo quy tc sau:
Thu nhp chu thu (TNCT) Thu thu nhp c nhn
TNCT<5 triu TNCT*5%
5 triu<=TNCT<10 triu TNCT*10%
10 triu <=TNCT<18 triu TNCT*15%
18 triu <=TNCT<32 triu TNCT*20%
32 triu <=TNCT<50 triu TNCT*25%
TNCT>50 triu TNCT*30%
- Mn hnh gi :

2. Kim tra s nguyn t
Mc tiu: S dng cu trc for
M t: s nguyn t l s t nhin ch chia ht cho 1 v chnh n, 0 v 1 khng c xem l s
nguyn t. (S 2 l s nguyn t nh nht, v 2 cng l s nguyn t chn duy nht)
Yu cu:
- Nhp vo s nguyn n cn kim tra
- Kim tra xem s nguyn n c phi l s nguyn t hay khng v xut thng bo ra mn hnh
- Sau tm v xut ra danh sch cc s nguyn t nh hn s cn kim tra
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 55/64



3. Craps Game
Mc tiu: S dng kt hp cc cu trc iu khin v const
M t:
- Craps Game l mt tr chi ph bin lin quan n cc con sc sc c chi ti cc Casino.
Craps c chi ch vi hai vin sc sc. Mt cch trng hp l ngi thua trong tr chi c
gi l Craps
- Quy tc chi: Ngi chi c hai con sc sc, mi con sc sc c 6 mt, mi mt mang s chm
tng ng l 1, 2, 3, 4, 5, 6. Ngi chi s gieo hai con sc sc, sau tng s im ca hai
mt nga c tnh:
o Trong ln gieo u tin, nu tng l 7 hoc 11 th ngi chi thng
o Trong ln gieo u tin, nu tng l 2, 3 hoc 12 (gi l "Craps") th ngi chi thua
o Trong ln gieo u tin, nu tng l 4, 5, 6, 8, 9 hoc 10 th s im ny c lu li v
gi l "Point", ginh chin thng, ngi chi phi gieo li hai con sc sc cho n khi
t c gi tr point ln na. Tuy nhin, t ln gieo th hai tr i, nu tng im t
c 7 th ngi chi b thua
- Cc thut ng ca tr chi ny nh sau:
o Point: cc gi tr t c trong ln u tin m khng thng hay thua gm c: 4, 5,
6, 8, 9 hoc 10
o Snake Eyes: s 2
o Trey: s 3
o Box Cars: s 12
o Seven: s 7
o Yo Leven: s 11
Yu cu: Vit chng trnh thc hin tr chi Craps c m t nh trn
Hng dn:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 56/64
- S dng const khai bo cc gi tr lu tr cc thut ng trn
- Giao din Form gi nh sau:

3. Bi 5: Tng quan v lp trnh hng i tng
1. Xp loi hc tp hc sinh
Mc tiu: p dng class vo bi ton thc t
Yu cu: Trng trung hc ANZ mun ghi nhn thng tin kt qu hc tp ca hc sinh vo cui
mi hc k. Bn hy xy dng ng dng nhp thng tin hc sinh v kt qu cc im kim tra
trong k v im thi cui hc k. Sau xut thng tin kt qu hc tp
- Thng tin kt qu hc tp ca hc sinh cn ghi nhn gm c: H tn hc sinh, Lp, Hc k
v nm hc
- Kt qu hc tp cc mn hc gm: Tn mn, im 15 pht, im 1 tit, im thi cui hc
k
- im trung bnh hc k vi im trung bnh c tnh theo cng thc sau:
im trung bnh hc k=Tng im trung bnh cc mn / s mn hc
Trung bnh mn hc=(im 15 pht + im 1 tit x 2 + im hc k x 2)/5
- Xp loi hc lc ca hc sinh theo quy tc sau:
o im trung bnh hc k <5: yu
o 5 <= im trung bnh hc k < 6.5: trung bnh
o 6.5<= im trung bnh hc k < 8: kh
o im trung bnh hc k >=8: gii
Hng dn:
- Mn hnh gi
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 57/64


2. Tr chi u gi sn phm
Mc tiu: p dng class vo bi ton thc t
Yu cu: Xy dng chng trnh Tr chi u gi sn phm vi lut u gi sau:
- Ngi thng cuc s l ngi c Gi u nh nht
- Nu c nhiu ngi chi u cng gi: ngi thng cuc l ngi c S d on cng
gi thp nht trong s nhng ngi chi u cng gi.
- Nu c nhiu ngi chi u cng gi v cng s d on: kt qu l Khng c ngi
thng cuc
- Lu : Mi s in thoi c th thc hin nhn tin u gi nhiu ln
Hng dn:
- Mn hnh gi :
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 58/64


- Cc x l:
o Form load:
To Danh sch ngi chi mc nh v hin th ln TextBox
Hin th thng tin ca ngi chi u tin ln Thng tin ngi u gi
o Button <: hin th thng tin ngi chi pha trc ngi chi hin ti trong danh sch
o Button >: hin th thng tin ngi chi pha sau ngi chi hin ti trong danh sch
o Ngi chi mi: xa rng cc TextBox chun b nhp thng tin ngi chi mi
o Thm vo danh sch: thm ngi chi mi vo Danh sch ngi chi
o Tm ngi thng cuc: tm ngi thng cuc da vo lut ca tr chi u gi sn
phm v xut thng tin ngi thng cuc ln mn hnh
3. Thi trc nghim
Mc tiu: xy dng v s dng class, phi hp cc class, kt hp kin thc mng,
Yu cu: xy dng ng dng h tr thi trc nghim theo m t sau
- Trc khi bt u thi, th sinh nhp H tn, Ngy sinh v Ni sinh
- Sau bt u lm bi. Th sinh c ni dung cu hi v chn 1 trong 4 cu tr li bn di
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 59/64
- Nhn nt di chuyn sang mt cu hi mi hoc li v cu trc
- Sau khi lm bi xong, th sinh nhn nt Np bi v s nhn c kt qu (Hnh 4.5b)


Hnh 1: Mn hnh ang thi

Hnh 2: Mn hnh kt qu
Hng dn:
- To lp Cauhoi, gm cc thng tin: Ni dung cu hi, chn la 1, chn la 2, chn la 3, chn
la 4, p n, chn p n. C mt phng thc Chm im
- To lp Thisinh, gm cc thng tin: H tn, ngy sinh, ni sinh v mt phng thc Xut
thng tin
- To lp Baithi, gm cc thng tin: Thng tin ca th sinh v mng cc cu hi. Phng thc
Chm bi v Xut thng tin
- Khai bo cc bin dng chung trn Form: 1 bin mng kiu Cauhoi, 1 bin kiu int (dng lu
tr s th t cu hi)
- S kin load form: Khi to cc cu hi (s cu ty vo ngi lp trnh)
4. Bi 8: Lp tru tng, lp giao tip
1. X l phn s
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 60/64
Mc tiu: Xy dng v s dng lp giao tip t nh ngha
Yu cu: Xy dng chng trnh nhp cc phn s v xut ra danh sch cc phn s, c sp xp
Hng dn:
- To interface IXuat, khai bo hm hm xut phn s tr v 1 chui
interface IXuat
{ string Xuat(); }
- Xy dng lp PhanSo (tng t bi 5.2) v ci t Interface Ixuat v IComparable cho lp ny
nh sau:
public class PhanSo: Ixuat, IComparable
{
public int TUSO { get; set; }
public int MAUSO { get; set; }
public PhanSo() { }
public PhanSo(int tu, int mau) { TUSO = tu; MAUSO = mau; }

public string Xuat()
{
return string.Format("{0}/{1}", TUSO, MAUSO);
}
public int CompareTo(object obj)
{
PhanSo p = (PhanSo)obj;
double giatri1 = 1.0 * TUSO / MAUSO;
double giatri2 = 1.0 * p.TUSO / p.MAUSO;
if (giatri1 > giatri2)
return 1;
else if (giatri1 < giatri2)
return -1;
else
return 0;
}
}
- Xy dng mn hnh c dng sau:
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 61/64

Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 62/64
MC LC
BI 1: Tng quan .................................................................................................. 2
1.1. Lm quen mi trng pht trin ng dng .............................................................................2
1.2. Xy dng mn hnh xut cu cho.........................................................................................2
BI 2: Kiu d liu v bin.................................................................................... 4
2.1. Tnh chu vi v din tch hnh trn...........................................................................................4
2.2. Tnh chu vi v din tch hnh ch nht (Bi v nh) .................................................................5
2.3. Tnh chu vi v din tch tam gic............................................................................................6
2.4. Tnh s nt ca 1 s nguyn (Bi v nh)...............................................................................6
2.5. Tch chui h tn.................................................................................................................7
2.6. S dng kiu tham chiu.......................................................................................................7
BI 3: Cu trc iu khin................................................................................... 10
3.1. Xp loi hc tp ................................................................................................................. 10
3.2. Tm ngy trc, ngy sau ca mt ngy............................................................................... 11
3.3. Tnh tin in (bi v nh) .................................................................................................. 11
3.4. Tnh nm m lnh ............................................................................................................... 12
3.5. Tnh s ngy trong thng.................................................................................................... 13
3.6. Tnh ngy ca m, ngy ca cha (Bi v nh) ....................................................................... 13
3.7. In bng cu chng ca mt s .......................................................................................... 13
3.8. In bng cu chng t s n s ........................................................................................ 14
3.9. Tnh li sut ngn hng (Bi v nh) .................................................................................... 15
3.10. Thc hin li cc bi 3.8, 3.9 v 3.10 bng cch dng vng lp while, do..while (Bi v nh).. 16
BI 4: Kiu struct v kiu Array .......................................................................... 17
4.1. To v s dng kiu Nhan_vien........................................................................................... 17
4.2. Lm vic vi mng.............................................................................................................. 19
BI 5: Tng quan Lp trnh hng i tng ...................................................... 21
5.1. Gii phng trnh bc nht Ax + B = 0................................................................................. 21
5.2. X l phn s..................................................................................................................... 23
5.3. X l phn s nng cao....................................................................................................... 25
5.4. Nhp xut thng tin ha n (Bi v nh) ............................................................................ 26
BI 6: Tnh Tha k v a hnh........................................................................... 28
6.1. Qun l thng tin nhn vin................................................................................................ 28
6.2. Qun l danh sch my tnh (Bi v nh).............................................................................. 33
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 63/64
BI 7: Delegate v Event..................................................................................... 35
7.1. Qun l thng tin nhn vin................................................................................................ 35
BI 8: Lp tru tng, lp giao tip.................................................................... 37
8.1. Qun l cc lp hnh hc ..................................................................................................... 37
8.2. Qun l i tng hnh hc ................................................................................................. 39
BI 9: Collections v Generic .............................................................................. 42
9.1. Qun l danh sch hc vin................................................................................................. 42
9.2. Qun l danh sch hc vin................................................................................................. 44
9.3. Chuyn s thnh ch.......................................................................................................... 46
9.4. c 3 s (Bi v nh) ......................................................................................................... 46
9.5. Bi v nh.......................................................................................................................... 47
BI 10: Cc kin thc c bn v SQL Server........................................................ 48
10.1. To c s d liu QLSV (bng tin ch SSMS) ...................................................................... 48
10.2. Truy vn d liu (bng cu lnh) ....................................................................................... 50
Truy vn trn nhiu bng.................................................................................................... 50
Truy vn c nhm .............................................................................................................. 51
10.3. Truy vn cp nht d liu.................................................................................................. 51
Thm mu tin .................................................................................................................... 51
Sa mu tin ....................................................................................................................... 52
Xa mu tin ....................................................................................................................... 52
Ph lc ................................................................................................................ 53
Bi lm thm....................................................................................................... 53
1. Bi 2: Kiu d liu v bin ......................................................................... 53
1. M ha v gii m.............................................................................................................. 53
2. Bi 3: Cu trc iu khin.......................................................................... 53
1. Tnh thu thu nhp c nhn ................................................................................................ 53
2. Kim tra s nguyn t......................................................................................................... 54
3. Craps Game....................................................................................................................... 55
3. Bi 5: Tng quan v lp trnh hng i tng.......................................... 56
1. Xp loi hc tp hc sinh .................................................................................................... 56
2. Tr chi u gi sn phm.................................................................................................. 57
3. Thi trc nghim.................................................................................................................. 58
4. Bi 8: Lp tru tng, lp giao tip ........................................................... 59
1. X l phn s..................................................................................................................... 59
Bi tp

Nn tng v Lp Trnh Hng i Tng vi C# Trang 64/64
MC LC ............................................................................................................. 62

You might also like