Professional Documents
Culture Documents
Tuần 1
Bài Tập 1.1
Hãy thiết kế giao diện một form như sau:
lblHoVaTen
txtHoLot
lblHoLot
txtTen
lblTen
btnHoLot
picOn
picOff
lblHuongDan
btnThoat
Yêu cầu:
1. Thiết kế phải kéo đối tược tooltip vào form (nó hiện phần tray, khay phía duới form xem
hình) thì mới tạo tooltip được.
2. Khi chương trình chay lện
a. Hiện tên người hướngdẫn mặc định vào ô người hướng dẫn (tùy ý họ tên sinh viên)
hướng dẫn viết trong formload hặc trong design.
private void FrmLightSwitcher_Load(object sender, EventArgs e)
{
txtnguoihuongdan.Text = "Nguyễn Văn Tuấn";
lblhuongdan.Text = "Click the light to turn off" + txtnguoihuongdan.Text;
}
b. Hình đèn picOn (hình đèn mở) được hiện hướng dẫn hiệu chỉnh property trong
design.
c. Ô hướng dẫn là “Nếu nhấn vào tôi thì đèn tắt + giá trị ô người hướng dẫn” hướng
dẫn xem đoạn code trên.
d. Nếu đưa chuột vào hình đèn thì hiện tooltip là “Nhấn tôi thì tắt” cho đèn mở và
ngược lại cho đèn tắt hướng dẫn cách làm hiệu chỉnh trong phần design.
3. Nếu nhấn vào đèn picOn thì:
a. picOn ẩn đi và hiện hình đèn picOff
b. Đồng thời ô Hướng dẫn hiện “Nhấn tôi thì mở + giá trị ô người hướng dẫn” hướng
dẫn cách làm viết trong sự kiện đèn chọn.
private void picmo_Click(object sender, EventArgs e)
{
picmo.Visible = false;// công viêc 1
pictat.Visible = true; // công viêc 1
lblhuongdan.Text = "Click the light to turn on." + " " + txtnguoihuongdan.Text; // công việc 2
}
4. Nhấn nút thoát hoặc Esc thì thoát chương trình.
5. Khi đưa chuột vảo hình thì hiện lên Tooltip “Click me” (Xem hình)
6. Khi chương trình đã chạy thì hiệu chỉnh sao cho hai hỉnh đè lên nhau và có size như nhau.
7. chạy chượng trình cho hình sau:
Tuần 2
Bài tập 2.1
Thiết kế form như hình bên
lblDisplay
picRain
Yêu cầu:
Khi form được load thì txtName được focus, để user nhập tên vào và 4 image tương ứng được ẩn đi
Khi đã nhập text vào txtName mà user click chuột hoặc dùng phím nóng vào các option tương ứng thì
thông tin trong lblDisplay là một lời khuyên tự bạn cho và cộng thêm text trong txtName, đồng thời hiện
image tương ứng.
Nếu user nhấn chuột vào Option khác thì ẩn image trước đi và hiện image tương ứng.
Nếu nhấn vào nút Exit hoặc phím Esc thì kết thúc chương trình
Bài Tập 2.2
txtName
btnDisplay
txtMessa
chkVisible
ge
radRed
btnClear
radGreen
btnExit
picBig
lblMessage picSmall
radGreen
lblLapTrinh
btnThoat
Yêu cầu
1. khi Formload.
a. Radiobutton Red chon mặc định (gợi ý viết trong sự kiện form_Load).
b. Con trỏ hiện Focus ngay tại ô Nhập tện.
2. Khi gõ tên vào ô Nhập tên (gõ ký tự nào thì ô lập trình bởi chạy song song cùng
giá trị trong ô nhập tên)
Hướng dẫn viết trong sự kiện txtNhapTen_TextChanged(..)
private void txtNhapTen_TextChanged(object sender, EventArgs e)
{
lblLapTrinh.Text = txtNhapTen.Text
}
3. Nhấn nút thoát hoặc Esc thì thoát chương trình.
4. Nhấn Radiobutton Red, Green.. thì đổi màu chữ trong ô Lập trình bởi và ô nhập
tên có màu tương ứng với Radiobutton phù hợp.
private void raddo_CheckedChanged(object sender, EventArgs e)
{
lblLapTrinh.ForeColor = Color.Red;
txtNhapTen.ForeColor = Color.Red;
}
5. Nhấn các CheckBox chữ đậm, nghiêng… thì đổi font chữ trong ô Lập trình bởi và
ô nhập tên tương ứng.
private void chkdam_CheckedChanged(object sender, EventArgs e)
{
lblLapTrinh.Font = new Font(lblLapTrinh.Font.Name, lblLapTrinh.Font.Size,
lblLapTrinh.Font.Style ^ FontStyle.Bold);
//??? Tương tự **** .
}
Bài tập 2.4
Yêu cầu:
Nhập tên của bạn và nhập lời nhắn vào text box sau đó thực hiện các nút chức năng sau:
• Nếu nhấn vào đĩa cdrom01.ico thì ẩn nó đi và hiện cdrom02.ico, nếu nhấn chuột vào cdrom02.ico
thì làm ngược lại (chú ý trong khi thiết kế bạn phải chọn thuộc tính SizeMode=Stretch)
• Nếu chọn vào option nào thì lblmessage đổi thành màu tương ứng đó (gợi ý :
lblmessage.ForeColor=Color.….. Bạn nhớ thiết kế để có thể thực hiện phím nóng)
• Nếu nhấn vào checbox Bold, Italic, Underline thì thay đổi text trong lblmessage tương ứng (Bạn
nhớ thiết kế để có thể thưc hiện phím nóng. HD: Xử lý sự kiện CheckChanged của checkbox)
• Nếu nhấn vào nút Display thì lấy thông tin của text box tên bạn cộng với textbox lới nhắn gán
vào lblmesssage (bạn nhớ cộng thêm khoảng trắng hoặc xuống dòng để tách tên và lời nhắn)
• Nếu nhấn vào nút Clear thì xoá text trong lblmessage, hộp text name và hộp text lới nhắn, đồng
thời rời con nháy về hôp text name.
• Nếu nhấn enter thì lấy thông tin của text box tên bạn cộng với textbox lới nhắn gán vào
lblmesssage (bạn nhớ cộng thêm khoảng trắng hoặc xuống dòng để tách tên và lời nhắn)
(AcceptButton = nút Display)
• Nếu nhấn Esc thì đóng ứng dụng (CancelButton = nút Exit)
HD:
Xử lý sự kiện CheckChanged của checkbox:
if (chkBold.Checked)
lblmessage.Font = new Font(lblmessage.Font.Name, lblmessage.Font.Size, FontStyle.Bold);
else
lblmessage.Font = new Font(lblmessage.Font.Name, lblmessage.Font.Size, FontStyle.Regular);
Tuần 3_Biến
Bài Tập 3.1
Thiết kế Form cho phép thực hiện cộng hai số hạng và mở rộng 4 phép toán.
2. Hiệu chỉnh sao cho có dạng như hình phí dưới bằng cách hiệu chỉnh property
Oraintation thành Horizontal của đối tượng Splitcontainer.
3. Tách Panel1 làm hai sao cho như hình
4. Thiết kế và hiệu chỉnh các control như hình sao cho khi chạy chương trình mà co dãn
size của form thì các button co dãn theo (Xem hình). Riêng button thoát thì hiệu chỉnh
qua property Doc là “ Button ”
nh
Chỉ
u
Hiệ
5. Hiệu chỉnh vị trí Tabindex sao cho phợp lý
6. Viết lệnh cho các nút lệnh tượng ứng và xuất kết quả vào ô kết quả.
Gợi ý:
+ Công, trừ, nhân các bạn tự làm.
+ Chia có thể có số lẻ bạn phải khai báo kiểu cho chính xác.
private void btnChia_Click(object sender, EventArgs e)
{
int intSoA, intSoB;
Double decKetQua;
intSoA = int.Parse(txtA.Text);
intSoB = int.Parse(txtB.Text);
decKetQua = Convert.ToDouble(intSoA) / Convert.ToDouble(intSoB);
lblKQ.Text = decKetQua.ToString();
}
7. Nấn phím Esc thóat chương trình và nhấn phím Enter tương đương nhấn nút
A+B.
b) Nếu không đúng (thiếu hệ số A=0) hiện thông tin group cho phương
trình bậc 1 và phải gán giá trị đã nhập cho các hệ trong phương trình bậc nhất hợp
lý. Xem hình
}
else if (dblDenTa == 0)
{
dblx1 = (double)(-B) / (2 * (double)A);
strKQua = "PT có nghiệm kép:\n" + "x1 = x2 = " + dblx1.ToString();
}
else// hieu denta<0
{
strKQua = "PT vô nghiệm";
}
return strKQua;
}
string GiaiBac1(int A, int B)
{
// Ax+B=0
string strKQua = "";
if (A == 0)
if (B == 0)//0x+0=0
strKQua = "Phuong trinh co vo so nghiem";
else //0x+B=0
strKQua = "Phuong trinh vo nghiem ";
else
{
Double ketqua = Convert.ToDouble(-B) / A;
strKQua ="Phuong trinh co nghiem la x = " + ketqua.ToString();
}
return strKQua;
}
}
else
MessageBox.Show("Bạn nhập thiếu thông tin", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
}
catch (FormatException a)
{
MessageBox.Show(a.Message);
}
}
Yêu cầu:
1) Khi chương trình bắt đầu chạy thì số tiền có trong máy là 100 đồng, tiền của người chơi cũng phải
có 100 đồng .
2) Mỗi lần quay số
a. Nngười chơi phải bỏ vào tiền cược bao nhiêu (số tiền trong máy tăng theo số tiền cược
đồng còn tiền người chơi giảm đi theo số tiền cược)
b. Các hộp chứa chữ số từ trái qua phải có tên như sau: lbl1, lbl2, lbl3.Giá trị trong các hộp số
được tạo bằng giá trị ngẫu nhiên so1, so2, so3 phát sinh giá trị ngẫu nhiên lần lượt trong
khoang [0, 7], [0, 8], [0,10]
3) Kết quả nhận được là:
• Nếu kết quả của lbl1 = 7 thì
o Hiện tiền thưởng qua messagebox
o số tiền được thưởng là 100 +50% số tiền cược đang có trong máy
o Số tiền người chơi = tiền người chơi+ tienthuong + dectiencuoc.
o Số tiền máy mdectienmay = mdectienmay - tienthuong - dectiencuoc
Tham khảo :
tienthuong = 100 + (dectiencuoc * 50) / 100;
mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc;
mdectienmay = mdectienmay - tienthuong - dectiencuoc;
Khi trúng thưởng thì số tiền thưởng được cộng dồn trong trường hợp trúng nhiều số 7và sẽ hiện lên màn
hình qua messagebox cho người chơi biết số tiền thưởng mà họ đang có. Sau đó cập nhật lại tiền trên
form (tiền máy, tiền người chơi tương ứng).
Chi tiết tham khảo chương trình demo trên « http://thangdhcn.wordpress.com/ »
Khi nút Game mới được click (bắt đầu cho một người chơi khác) thì thiết lập lại như ban đầu
Để tạo cảm giác quay số nhanh rồi chậm dần dùng time với Interval tăng dần
timer1.Interval += 10;
timer1.Interval += 10;
lbl1.Text = so1.ToString();
lbl2.Text = so2.ToString();
lbl3.Text = so3.ToString();
if (timer1.Interval >= 200)
{
timer1.Stop();
if (so1 == 7)
{
tienthuong = 100 + (dectiencuoc * 50) / 100;
MessageBox.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong);
mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc;
mdectienmay = mdectienmay - tienthuong - dectiencuoc;
}
if (so2 == 7)
{
tienthuong = 30 + (dectiencuoc * 10) / 100;
MessageBox.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong);
mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc;
mdectienmay = mdectienmay - tienthuong - dectiencuoc;
}
if (so3 == 7)
{
tienthuong = 10 + (dectiencuoc * 10) / 100;
mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc;
mdectienmay = mdectienmay - tienthuong - dectiencuoc;
MessageBox.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong);
}
lbltienmay.Text = mdectienmay.ToString();
lbltiennguoichoi.Text = mdectiennguoichoi.ToString();
code toàn bài sinh viên chỉ xem tham khảo phài tư viết code không được copy hay gõ y như
hướng dẫn
dectiencuoc = Convert.ToDecimal(txttiencuoc.Text);
btnquayso.Enabled = true;
if (mdectiennguoichoi >= dectiencuoc)
{
mdectienmay += dectiencuoc;
mdectiennguoichoi -= dectiencuoc;
timer1.Interval = 10;
timer1.Start();
}
else
{
MessageBox.Show("Bạn không đủ tiền chơi", "Thông Báo");
timer1.Interval = 10;
timer1.Stop();
btnchoilai.Enabled = true;
}
lbltienmay.Text = mdectienmay.ToString();
lbltiennguoichoi.Text = mdectiennguoichoi.ToString();
lbltienmay.Text = mdectienmay.ToString();
lbltiennguoichoi.Text = mdectiennguoichoi.ToString();
}
}
mdectiennguoichoi = 100;
mdectienmay = 100;
lbltienmay.Text = mdectienmay.ToString();
lbltiennguoichoi.Text = mdectiennguoichoi.ToString();
lbl1.Text = "7";
lbl2.Text = "7";
lbl3.Text = "7";
txttiencuoc.Clear();
}
}
Hình tham khảo:
Bài Tập 4.8
Bài tập cấu trúc Switch Case
Thiết kế form (xem hình)
Số phải
canh lề trái
0 1 2 3 4 5 6 7 8 9 10 11
Can Canh Tan Nham Quy Giap At Binh Din Mau Ky
h
Chi Than Dau Tuat Hoi Ti Suu Dan Meo Thin Ti Ngo Mui
Yêu cầu:
1) Nhấn nút xem thì hiện năm tương ứng qua các con giáp xem hình
Hướng dẫn:
Nhận thấy.
Can = Năm %10 lấy dư
Chi= Năm %12 lấy dư
Canchi tương ứng = Can + chi
Yêu cầu viết hàm trả về chuỗi can chi khi biết số năm.
switch (intNamDuong % 10)
{
case 0:
strCan = "Canh";
break;
case 1:
strCan = "Tân";
break;
…..
}
3) Nhấn phím Enter tương đương nhấn nút xem và phím Esc tương đương nút thóat
4) Hệ thống menu tương ứng các chức năng trên form.
5) StatusTrip hiện ngày tháng hiện tại và tên programmer gợi ý:
statusStrip1.Items[0].Text = Convert.ToDateTime(DateTime.Now).ToShortDateString();
//Convert.ToString(DateTime.Now);
Tuần 5 _ Vòng lặp – Phương thức (Method)
Bài tập 5.1
Viết một chương trình theo yêu cầu thiết kế sau:
Cho phép người sử dụng nhập một số nguyên, sau đó in lên màn hình các ước số nguyên này lên form.
Việc in các ước số lên màn hình được thực hiện bởi một Sub. Sub này có một tham số dạng tham trị, sẽ
nhận số nguyên cần tìm các ước số.
• Khi chương trình bắt đầu thực hiện thì textbox nhập số được focus.
• Sau khi nhập số nếu ấn Enter hoặc Click vào nút thực hiện thì hiện kết quả lên TextBox kết
quả, và TextBox nhập vẫn được Focus.
• Nếu ấn Esc hoặc click vào “Kết thúc” thì dừng chương trình
Ta nhận thấy viết hàm có giá trị trả về là lợi cho bài toán
nhất vì các bút lệng sau gọi hàm của các nút lệnh trước. So
với Code gợi ý các bạn sinh viên hãy dùngt vòng lặp khác với
trong code gợi ý như ( for, while…)
• Dãy Fibonaci các bạn chuyển thành hàm đệ quy.
}
private void btnTinh2_Click(object sender, EventArgs e)
{
n = Convert.ToInt32(txtN.Text);
lblKQ.Text = Convert.ToString((double) (TongTich(n) *
TongTich(n) )/ (double)Tong(n));
}
private void btnFibo_Click(object sender, EventArgs e)
{
int i, f1, f2, fn;
n =Convert.ToInt32 ( txtN.Text);
i = 0;
f1 = 0;
f2 = 1;
lblKQ.Text = "";
while (i < n)
{
fn=f1+f2;
flowLayoutPanel1
Mô tả: Viết chương trình bán vé rạp chiếu phim với các yêu cầu sau: Hãy tạo một project giúp cho
rạp chiếu phim quản lý việc bán vé của một rạp hát. Rạp có 3 hàng ghế, mỗi hàng có 5 ghế, các
ghế được đánh số từ 1 đến 15 và được phân thành 3 lô (xem hình):
Giá vé lô A 20 ngàn/vé - ghế từ 1-5 Giá vé lô B 30 ngàn/vé - ghế từ 6-10 Giá vé lô C 40 ngàn/vé-
ghế từ 11-15
Một người vào có thể mua nhiều vé, và Người bán sẽ chọn các ghế từ các checkbox. +Khi vừa
chọn ghế nào thì chương trình là việc sau:
- Lập tức cập nhật danh sách các ghế đang chọn và listbox bên dưới (các ghế đang chọn)
- hiển thị tổng số tiền vào label bên dưới (Thành tiền)
+ Khi người mua muốn thực sự chọn ghế thì nhấn nút “Thống kê”. Chương trình lập tức chuyển
các ghế trong listbox1 (Các ghế đang chọn) qua listbox2 (Cácghế đã chọn) đồng thời khóa các
checkbox ghế không cho chọn.
+Nút “<<Xóa ghế đã chọn” sẽ xóa tất cả các số ghế đang chọn trong listbox2 (các ghế đã chọn)
và đưa trạng thái tất cả các checkbox tương ứng với các ghế xóa về trạng thái không chọn như ban
đầu.
+ Nút “Xem mới” đưa về trạng thái ban đầu như khi vừa load lên.
+Chương trình sử dụng kỹ thuật nạp động các control để sau này dễ dàng cho việc nâng cấp số
lượng ghế mỗi hàng
. +Chương trình cho phép người sử dụng thay đổi kích thước nhưng vẫn giữ bố cục như ban đầu.
Gợi ý: Nạp động các checkbox (đại diện cho các vị trí ghế) và ghép chung hàm sự kiện. Duyệt các
checkbox này mỗi khi checkbox thay đổi và cập nhật Listbox.
Nạp động các button trong formload
}
lblKQ.Text = kq.ToString();
lbltong.Text = tong.ToString();
}
}
private void btnThongke_Click(object sender, EventArgs e)
{
int tong = 0;
listBox2.Items.Clear();
foreach (CheckBox chk in flowLayoutPanel1.Controls)
{
if (chk.Checked)
{
listBox2.Items.Add(chk.Text);
chk.Enabled = false;
tong += GiaTien(Convert.ToInt32(chk.Text));
}
}
lbltong.Text = tong.ToString();
listBox1.Items.Clear();
lblKQ.Text = "";
}
int GiaTien(int VitriGhe)
{
int DonGia = 0;
if (VitriGhe <= 5)
DonGia = 20000;
else if (VitriGhe <= 10)
DonGia = 30000;
else
DonGia = 40000;
return DonGia;
}
int i=0;
while (i <= lst.Items.Count - 1)
{
if (lst.GetSelected(i) == true)
{
BochonCheck(lst.Items[i].ToString());
lst.Items.RemoveAt(i);
}
else
i++;
}
Khi kết thúc chương trình, sẽ xuất hiện một Message box để khẳng định có chắc là kết thúc không, như
hình bên dưới.
HD: Khai báo các biến toàn cục để giữ giá trị chọn trên các radio button, xử lý sự kiện CheckChanged
hoặc sự kiện Click của từng radio button.
Khi người sử dụng nhập một số vào textbox rồi Enter hoặc nhấp vào nút cập nhật thì số này được thêm
vào listbox, đồng thời nội dung trong textbox bị xóa và focus được chuyển về textbox.
Người dùng nhấn vào nút nào thì thực hiện chức năng tương ứng của nút đó.
3) Nhấn nút cập nhật đưa thông tin Sinh Viên vừa nhập vào danh sách lớp. Đưa vào danh sách lớp
nào phải phụ thuộc CboLop (xem hình). Nhưng không nhập tên sinh viên thì phải cài bẫy lỗi
thông báo và hướng dẫn cho người sử dụng biết.
Xem hình
Hướng dẫn:
private void btnCapnhat_Click(object sender, EventArgs e)
{
try
{
if (txtten.Text == "")
MessageBox.Show("Bạn chưa nhập dữ liệu", "Thông báo");
else if (cboLop.SelectedIndex == 0)
lstLopA.Items.Add(txtten.Text);
else
lstLopB.Items.Add(txtten.Text);
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message);
}
}
4) Nhấn nút > thì chuyển các Sinh Viên đang chọn trong lớp A Qua Lớp B. Và ngược lại cho nút <
( danh sách có thể chọn nhiều). xem hình. Yêu cầu viết hàm.
Tham khảo lời gọi hàm sau:
6) Nếu nhấn vào nút “>>|” thì chuyển hết sinh viên trong lớp A -> Lớp B và tương tự cho lớp nút “|
<<”
form nhập liệu sinh viên tự hiệu chỉnh các properties của form cho phù hợp:
Yêu cầu
1) Khi form load
Khóa các button mờ (xem hình)
Code gợi ý:
namespace Mang_Array
{
public partial class frmMang : Form
{
public frmMang()
{
InitializeComponent();
}
int GiaTri()
{
frmNhapLieu frm = new frmNhapLieu();
frm.ShowDialog();
int gt;
gt = Convert.ToInt32(frm.txtGTri.Text);
return gt;
}
private void btnnhap_Click(object sender, EventArgs e)
{
try
{
int gt = 0;
gt = GiaTri();
mA = new int[gt];
nhapmang(mA);
xuatmang(mA, rtxtGoc);
KhoaHieuLucButton(true);
}
catch
{
MessageBox.Show("Bạn chưa nhập dữ liệu", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
}
int[] mA ;
void nhapmang(int[] A)
{
Random n = new Random();
int i=0;
while (i < A.Length)
{
A[i] = n.Next(1, 91);
i++;
}
}
void xuatmang(int[] A, RichTextBox rtxt)
{
rtxt.Clear();
int i=0;
while (i < A.Length)
{
rtxt.Text += A[i].ToString() + " ";
i++;
}
}
3) Nhấn nút tìm kiếm hiện lên form cho phép nhập thông tin tìm. Viết hàm tìm trả về vị trí tìm
và xuất giá trị thông báo cho người sử dụng biết qua code gợi ý.
private void btntim_Click(object sender, EventArgs e)
{
try
{
int vt, gt = 0;
gt = ?? sinh viên tự nghĩ cho tiện lợi nhất
vt = Tim(mA, gt);
if (vt != -1)
{
vt += 1;
MessageBox.Show("Tìm thấy tại vị trí thứ " + vt.ToString(), "Thông
báo", MessageBoxButtons.OK);
}
else
MessageBox.Show("Không tìm thấy", "Thông báo",
MessageBoxButtons.OK);
}
catch {
MessageBox.Show("Bạn chưa nhập dữ liệu", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
}
int Tim(int[] a, int gt)
{
int i, vt = -1;
for (i = 0; i < a.Length; i++)
{
if (a[i] == gt)
{
vt = i;
break;
}
}
return vt;
}
4) Nhấn nút xóa hiện form cho phép nhập giá trị cần xóa. Trong code gợi ý chỉ xóa vị trí tìm
thấy đầu tiên sinh viên viết thêm xóa tất cá các gá trị bằng giá trị nhập vào ( gợi ý hai vòng
lặp lồng nhau)
private void btnxoa_Click(object sender, EventArgs e)
{
try
{
int i,gt, vt;
gt = GiaTri();
vt = Tim(mA, gt);
//sinh viên viết thêm xóa tất cá các gá trị bằng giá trị nhập vào
if (vt != -1)
{
for (i = vt; i < mA.Length - 1; i++)
mA[i] = mA[i + 1];
Array.Resize(ref mA,mA.Length-1);
}
xuatmang(mA, rtxtKQ );
}
catch
{
MessageBox.Show("Bạn chưa nhập dữ liệu", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); }
KhoaHieuLucButton(false);
}
5) Nhấn nút đảo ngược dãy số chính là dảo ngược mảng xem code gợi ý.
private void btndaoso_Click(object sender, EventArgs e)
{
daonguocdayso(mA, rtxtKQ);
}
void daonguocdayso(int[] a, RichTextBox rtxt)
{
int i = 0;
int j = (a.Length - 1);
int tam;
do
{
tam = a[j];
a[j] = a[i];
a[i] = tam;
i++;
j--;
}
while (i < (a.Length / 2));
xuatmang(a, rtxt );
}
6) Nhấn nút clear khóa mở text cho hợp lý xem code gợi ý.
private void btnclear_Click(object sender, EventArgs e)
{
rtxtGoc.Clear ();
rtxtKQ.Clear() ;
btnnhap.Focus();
KhoaHieuLucButton(false);
}
7) Cá nút khác sinh viên tự giải quyết nhưng nên viết theo hàm vá sử dụng một số
gợi ý hàm sau:
string xuatsonguyento(int[] A)
{
string str = "";
int i = 0;
do
{
if (ktsonguyento(A[i]) == true)
str += A[i].ToString() + " ";
i++;
}
while (i < A.Length);
return str;
}
Boolean ktsonguyento(int n)
{
int dem = 0, i;
for (i = 1; i <= n; i++)
{
if (n % i == 0)
dem++;
if (dem > 2)
break;
}
return (dem == 2);
}
Thiết kế Form cho phép nhập vào giá trị hai số nguyên A và B. Sau đó người dùng bấm vào nút phát sinh
chương trình sẽ cho biết dãy số vừa được phát sinh, tổng giá trị của các phần tử trong dãy và sắp xếp dãy
số theo thứ tự tăng.
CHinhTamGiac
- ma (int)
- mb (int)
- mc (int)
+ CHinhTamGiac()
+ CHinhTamGiac(int, int, int)
+ get / set (ma, mb, mc)
+ int ChuVi()
+ int DienTich()
+ bool LaTamGiac()
Trong đó:
• ma, mb, mc là ba cạnh của tam giác.
• Trong constructor CHinhTamGiac(int, int, int), nếu 3 giá trị số nguyên truyền vào không lập thành
một hình tam giác thì thông báo «Không phải hình tam giác» và khởi tạo giá trị cho các biến ma, mb,
mc bằng 0.
(ba giá trị lập thành một hình tam giác khi và chỉ khi tổng hai cạnh bất kỳ luôn lớn hơn cạnh còn lại)
• Hàm ChuVi(), DienTich() tính chu vi và diện tích của tam giác.
• Hàm LaTamGiac() trả về giá trị True khi ba giá trị ma, mb, mc lập thành một hình tam giác, ngược
lại trả về giá trị False.
b. Viết ứng dụng (console) sử dụng class CHinhTamGiac theo yêu cầu sau:
Cho nhập vào 3 giá trị số nguyên và khởi tạo hình tam giác có các cạnh ứng với 3 giá trị này, nếu 3 giá trị
này không lập thành tam giác thì thông báo, ngược lại thì tính và xuất ra chu vi và diện tích của nó.
2. Viết ứng dụng (console) sử dụng class CNhanVien theo yêu cầu sau:
Cho người dùng nhập vào 2 nhân viên, mỗi nhân viên nhập vào họ, tên, số sản phẩm của họ. Hãy tính và
xuất ra lương của từng nhân viên. So sánh và xuất ra thông báo nhân viên nào có số sản phẩm nhiều hơn
và nhiều hơn bao nhiêu. Có thể so sánh mà không dùng hàm LonHon được hay không ? Nếu được thì hãy
lập trình.
Yêu cầu:
• Nút ...: cho phép mở hộp thoại Open để người dùng chọn các tập tin (chỉ hiện các tập tin .txt). Các
tập tin sau khi được chọn sẽ được đưa vào Danh sách tập tin, mỗi phần tử trong danh sách là tên tập
tin.
• Nút Xóa: xóa một phần tử đang chọn trong Danh sách tập tin.
• Khi nhấn vào tập tin nào trong Danh sách tập tin thì nội dung của tập tin đó được hiển thị tương
ứng trong phần Nội dung tập tin.
Yêu cầu:
• Nút Lưu: chương trình sẽ lưu thông tin sinh viên (gồm Mã số, Họ tên, Ngày sinh) vào tập tin
SinhVien.txt. Trước khi lưu phải kiểm tra dữ liệu có hợp lệ không, nếu không hợp lệ thì thông báo và
không cho lưu vào tập tin (dữ liệu hợp lệ khi nhập đầy đủ thông tin vào ô Mã số và Họ tên, nếu có
Ngày sinh thì ngày phải hợp lệ)
• Nút Hiện danh sách: cho phép hiện danh sách ở Listbox bên dưới theo định dạng như hình.
Dữ liệu được lưu trong tập tin SinhVien.txt với định dạng:
Mã SV
Họ tên
Ngày sinh
Bài tập 5. (File)
Viết chương trình thao tác trên tập tin như sau:
Dữ liệu được lưu trong tập tin SinhVien.txt với định dạng:
Mã SV
Họ tên
Ngày sinh
• Khi form load lên thì danh sách sinh viên đã nhập được hiện lên ListView bên dưới.
• Nút Thêm: thêm một dòng vào ListView, gồm Mã số, Họ tên, Ngày sinh. Trước khi lưu phải kiểm
tra dữ liệu có hợp lệ không, nếu không hợp lệ thì thông báo và không cho lưu vào tập tin (dữ liệu hợp
lệ khi nhập đầy đủ thông tin vào ô Mã số và Họ tên, nếu có Ngày sinh thì ngày phải hợp lệ)
• Nút Xóa: dùng để xóa một dòng đang chọn trong ListView.
• Nút Lưu dùng để lưu toàn bộ thông tin trong ListView vào tập tin SinhVien.txt
Bài tập 7.
Viết chương trình quay số may mắn.
Quy luật chơi như sau:
• Khi bắt đầu chơi số tiền có sẵn trong máy là 10 đồng và số tiền thưởng là 0. Mỗi lần quay số thì
người chơi phải bỏ vào 30 đồng (=> số tiền có trong máy tăng 30 đồng)
• Nếu kết quả quay số =0 => người chơi nhận được cộng 10 đồng vào tiền thưởng
• Nếu kết quả quay số =9 => người chơi nhận được cộng 30 đồng vào tiền thưởng
• Nếu kết quả quay số =7 => người chơi nhận được cộng 100 đồng và 50% số tiền đang có trong
máy vào tiền thưởng (=> số tiền trong máy giảm 50%)
• Khi nút Game mới được nhấn thì số tiền thưởng phải có gía trị = 0
• Khi có thưởng thì chương trình phải hiện dòng thông báo cho biết số tiền thưởng hiện tại là bao
nhiêu.
Bài tập 8.
Viết lại chương trình quay số may mắn theo mẫu sau:
Khi chương trình bắt đầu chạy thì số tiền có trong máy là 100 đồng.
Mỗi lần quay số người chơi phải bỏ vào máy 30 đồng (số tiền trong máy tăng 30 đồng mỗi lần quay số)
Các hộp chứa chữ số từ trái qua phải có tên như sau: txt1, txt2, txt3.
Giá tri trong các hộp số được tạo bằng giá trị ngẫu nhiên txt1, txt2, txt3 phát sinh giá trị ngẫu nhiên lần
lượt trong [0, 7], [0, 8], [0,10]
• Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 100 +50% số tiền đang có trong máy (số tiền
trong máy giảm 50%)
• Nếu kết quả của txt2 = 7 thì số tiền được thưởng là 30 +10% số tiền đang có trong máy (số tiền
trong máy giảm 10%)
• Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 10.
Khi trúng thưởng thì số tiền thưởng được cộng dồn và sẽ hiện lên màn hình cho người chơi biết số tiền
thưởng mà họ đang có.
Khi nút Game mới được click (bắt đầu cho một người chơi khác) thì số thưởng quay về 0
Bài tập 9.
Thiết kế Form kê khai sơ yếu lý lịch của một Sinh viên
Bài tập 8:
Thiết kế Form cho màn hình soạn thảo của NotePad
Bài tập 10.
Thiết kế Form sao cho khi người sử dụng nhập vào giá trị tại hộp lên xuống hoặc trái phải
( NumericUpDown ) thì Hình vuông nhỏ bên trong sẽ dịch chuyển trong phạm vi bên trong cuả hình
vuông lớn bên ngoài.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Dichvucamdo
{
public partial class Giangthanhtron : Form
{
int songay;
public Giangthanhtron()
{
InitializeComponent();
}
}
}
}
}
}
Bài tập 12.
Thiết kế Form Cho phép tính Lưong thời gian cho Nhân Viên.
namespace Luongthoigian
{
public partial class GiangThanhTron : Form
{
public GiangThanhTron()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string a;
a = txtTenNV.Text.Substring(1,3);
txtLuongCB.Text = a;
}
}
}
}