intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài tập về thực hành C#

Chia sẻ: Nguyễn Công Tư | Ngày: | Loại File: DOC | Số trang:60

484
lượt xem
54
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Muc̣ đić h: Giuṕ sinh viên băt́ đầu làm quen vơí viêc̣ sử editor MS Visual studio 2008 để xây dưṇ g ưń g duṇ g Muc̣ tiêu: Sau baì thưc̣ haǹ h naỳ sinh viên phaỉ thaǹ h thaọ viêc̣ taọ môṭ đề ań C# daṇ g console va ̀ WinForm Yêu Câù : Sinh viên haỹ thưc̣ hiêṇ cân̉ thâṇ theo tưǹ g bươć hươń g dâñ sau đây đê ̉ băt́ đâù lam̀ quen với viêc̣ sư ̉ duṇ g editor MS Visual studio 2008 đê ̉ taọ đê ̀ ań vơí ngôn ngữ C#....

Chủ đề:
Lưu

Nội dung Text: Bài tập về thực hành C#

  1. BAI SỐ 1: LAM QUEN VỚI EDITOR MS VISUAL 2008 ̀ ̀ Muc đich: Giup sinh viên băt đâu lam quen với viêc sử editor MS Visual studio 2008 để xây ̣ ́ ́ ́ ̀ ̀ ̣ dựng ứng dung ̣ Muc tiêu: Sau bai thực hanh nay sinh viên phai thanh thao viêc tao môt đề an C# dang ̣ ̀ ̀ ̀ ̉ ̀ ̣ ̣ ̣ ̣ ́ ̣ console và WinForm Yêu Câu: Sinh viên hay thực hiên cân thân theo từng bước hướng dân sau đây để băt đâu ̀ ̃ ̣ ̉ ̣ ̃ ́ ̀ lam quen với viêc sử dung editor MS Visual studio 2008 để tao đề an với ngôn ngữ C#. ̀ ̣ ̣ ̣ ́ 1. Khởi đông MS Visual studio 2008 (2005 hoăc 2010 cung tương tự) ̣ ̣ ̃ Vao Start/All Programs/Microsoft Visual Studio 2008, luc nay sẽ thây cửa sổ Start Page xuât ̀ ́ ̀ ́ ́ ̣ hiên 2. Tao đề an mới(Project) ̣ ́ Vao menu File/New/Project, luc nay môt cửa sổ New Project xuât hiên (xem hinh 1.1) ̀ ́ ̀ ̣ ́ ̣ ̀ Trên cửa sổ New Project cac ban sẽ thây có nhiêu kiêu đề an (Project types). Nêu khi cai bộ ́ ̣ ́ ̀ ̉ ́ ́ ̀ VS 2008 ban không cai tât cả moi thứ thì chỉ thây những kiêu project mà ban đã chon cai. Bây giờ ̣ ̀ ́ ̣ ́ ̉ ̣ ̣ ̀ hay chon vao kiêu đề an là Visual C# (Nêu không thây Visual C#, hay chon vao muc orther ̃ ̣ ̀ ̉ ́ ́ ́ ̃ ̣ ̀ ̣ language). Sau khi chon vao Visual C# ban sẽ thây có nhiêu kiêu ứng dung mâu(Templates). ̣ ̀ ̣ ́ ̀ ̉ ̣ ̃ 3. Tao ứng dung Console ̣ ̣ Chon Console Application (muc thứ 3 như trong hinh 1.1). Luc nay cân đăt tên cho đề an ̣ ̣ ̀ ́ ̀ ̀ ̣ ́ (tai muc 4 trong hinh 1.1) và đừng quên chon vị trí lưu trữ trên đia cho đề an nay (tai muc 5 ̣ ̣ ̀ ̣ ̃ ́ ̀ ̣ ̣ trong hinh 1.1), sau khi hoan thanh viêc nay, nhân OK để thây cửa sổ dung cho viêt code ̀ ̀ ̀ ̣ ̀ ́ ́ ̀ ́ như hinh 1.2 ̀ 1 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  2. Trên cửa sổ nay sẽ thây namespace có tên trung với tên cua đề an mà ta đã tao và môt file có ̀ ́ ̀ ̉ ́ ̣ ̣ phân mở rông là cs với tên là program ̀ ̣ 4. Biên dich và chay chương trinh ̣ ̣ ̀ Trước khi thực hiên điêu nay hay gõ vao trong ham Main 2 lênh sau: ̣ ̀ ̀ ̃ ̀ ̀ ̣ ̀ ́ ̣ System.Console.WriteLine("Xin chao cac ban!"); System.Console.ReadLine(); + Biên dich: Vao menu Build/Build Slution (hoăc nhân F6), nêu biên dich không có lôi sẽ ̣ ̀ ̣ ́ ́ ̣ ̃ thây xuât hiên cum từ Build Succeeded ở goc trai bên dưới, ngược lai nêu có lôi sẽ thây ́ ́ ̣ ̣ ́ ́ ̣ ́ ̃ ́ ́ ̣ ́ ́ ̃ xuât hiên cac thông bao lôi + Biên dich và chay chương trinh: Vao menu Debug/Start Debugging (F5) để biên dich và ̣ ̣ ̀ ̀ ̣ chay chương trinh hoăc vao menu Debug/Start without Debugging (Ctrl + F5)) (xem hinh ̣ ̀ ̣ ̀ ̀ 1.3) 2 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  3. 5. Tao đề an ứng dung windows form (Windows Form Application) ̣ ́ ̣ Thực hiên thao tac như muc 2, khi xuât hiên cửa sổ New Project, tai muc Templates, chon ̣ ́ ̣ ́ ̣ ̣ ̣ ̣ phân Windows Form Application/OK, luc nay sẽ thây xuât hiên cua sô, gôm cac thanh phân cơ ban ̀ ́ ̀ ́ ́ ̣ ̉ ̉ ̀ ́ ̀ ̀ ̉ như hinh 1.4 ̀ + Biên dich và chay chương trinh thực hiên tương tự như muc 4 ̣ ̣ ̣ ̀ ̣ ̣ Lời nhăc: Sinh viên phai lưu ý đên viêc đăt tên cua đề an cung như vị trí lưu trữ đề an ́ ̉ ́ ̣ ̣ ̉ ́ ̃ ́ 3 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  4. BAI THỰC HÀNH SỐ 2: THỰC HANH SỬ DUNG BIÊN, HĂNG VÀ TOAN TỬ ̀ ̀ ̣ ́ ̀ ́ Muc đich: Bai thực hanh nay giup sinh viên lam quen với viêc sử dung biên, hăng và toan ̣ ́ ̀ ̀ ̀ ́ ̀ ̣ ̣ ́ ̀ ́ tử trong C# Muc tiêu: Qua bai thực hanh nay sinh viên thanh thao viêc sử dung biên, hăng và cac toan ̣ ̀ ̀ ̀ ̀ ̣ ̣ ̣ ́ ̀ ́ ́ tử trong C# Yêu câu: Xây dựng 1 ứng dung console để giai bai toan sau: Một vật rơi tự do không vận tốc ̀ ̣ ̉ ̀ ́ ban đầu từ độ cao h met hướng thăng xuống. Tìm vận tốc và th ời gian r ơi c ủa vât khi no ́ ch ạm đ ất. ́ ̉ ̣ Biêt ́ , v=g*t, g gia tôc cua vât rơi là môt hăng sô ́ co ́ giá tri ̣ =9.8 (m/s 2), h được nhâp vao ́ ̉ ̣ ̣ ̀ ̣ ̀ từ ban phim. ̀ ́ Hướng dân: Tao môt đề an console mới đăt tên là bai số 2, sau đó trong ham main hay viêt ̃ ̣ ̣ ́ ̣ ̀ ̀ ̃ ́ mã để giai quyêt bai toan với những dữ kiên đã cho ̉ ́ ̀ ́ ̣ Khai bao biên: [=]; ́ ́ ̉ ́ ̣ Khai bao hăng: const =; ́ ̀ ̉ ́ Đoc dữ liêu vao từ ban phim: dung phương thức ReadLine cua lớp Console ̣ ̣ ̀ ̀ ́ ̀ ̉ Ví dụ string S= Console.ReadLine(); Chuyên kiêu dữ liêu: sử dung phương thức chuyên kiêu trong lớp Convert ̉ ̉ ̣ ̣ ̉ ̉ Ví dụ double h = Convert.ToDouble(S); Lây căn bâc 2: sử dung phương thức Sqrt trong lớp Math ́ ̣ ̣ 4 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  5. BÀI THỰC HÀNH SỐ 3: ỨNG DỤNG WINDOWS FORM ĐẦU TIÊN Muc đich: Bai thực hanh nay giup sinh viên bước đâu lam quen với ứng dung windows ̣ ́ ̀ ̀ ̀ ́ ̀ ̀ ̣ form, cach sử dung môt số điêu khiên thông dung và băt đâu viêt mã nguôn cho cac sự kiên,… ́ ̣ ̣ ̀ ̉ ̣ ́ ̀ ́ ̀ ́ ̣ Muc tiêu: Sau khi hoan thanh bai thực hanh nay sinh viên sử dung được cac điêu khiên ̣ ̀ ̀ ̀ ̀ ̀ ̣ ́ ̀ ̉ thương dung như: Label, textbox, button và viêt sự kiên click trên button ̀ ́ ̣ Yêu câu: Tao môt đề an để khi chay đề an có được kêt quả như sau: ̀ ̣ ̣ ́ ̣ ́ ́ Hình 3.1 Viêt mã nguôn để đap ứng yêu câu: ́ ̀ ́ ̀ - Khi nhâp chuôt vao muc nhâp Họ tên sẽ xoa sach dong chữ Mời nhâp vao họ tên ́ ̣ ̀ ̣ ̣ ́ ̣ ̀ ̣ ̀ - Khi nhâp chuôt vao nut Xoa sẽ xoa sach nôi dung có trong hôp nhâp Họ tên ́ ̣ ̀ ́ ́ ́ ̣ ̣ ̣ ̣ - Khi nhâp chuôt vao nut Thoat sẽ đong chương trinh, nhưng trước khi đong chương trinh ́ ̣ ̀ ́ ́ ́ ̀ ́ ̀ có hiên ra thông bao nhăc nhở “Ban có chăc chăn không?”, nêu nhân Yes thì đong ̣ ́ ́ ̣ ́ ́ ́ ́ ́ ngược lai thì không ̣ Hướng dẫn: 1. Thiêt kế giao diên: ́ ̣ - Kéo các đối tượng ra form: Cần đưa đối tượng nào ra form ta chỉ cần nhấp chuột vào đối tượng đó và đưa chuột ra form tại vị trí thích hợp trên form nhấp chuột là có được đối tượng đó trên form (theo chỉ dân cua hinh 3.2) ̃ ̉ ̀ - Thay đôi thuôc tinh cho cac đôi tượng ̉ ̣ ́ ́ ́ + Đặt lại tên và tiêu đề cho form: Việc đặt tên cho các đối tượng khá quan trọng, mỗi đối tượng có tên mặc định để phân biệt giữa các đối tượng với nhau, tuy nhiên ta phải đ ặt lại tên cho các đối tượng một cách tường minh để tiện quản lý trong khi lập trình, để đặt tên cho 1 đối tượng bất kỳ ta cần chọn đối tượng đó và mở bảng Properties (nằm bên phải màn hình). Để đặt lại tên cho form ta chọn vào thuộc tính Name trong bảng Properties rồi gõ tên vào (nên đ ặt tên với tiếp đầu ngữ để dễ phân biệt, form ta đặt tiếp đầu ngữ là frm, ví dụ frmBaiSo3. Đặt lại tiêu đề cho form ta chọn vào thuộc tính Text trong bảng Properties + Thay đổi giá trị các thuộc tính trong các đối tương: Ta cần đặt lại thuộc tính cho các đối tượng cho phù hợp với chức năng trong bài thực hành của từng đối tượng (Name, Text, Font, Forecolor,...) Trong bai thực hanh nay này ta đặt tên cho các đối tượng như sau: ̀ ̀ ̀ 5 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  6. Đối tượng Thuộc tính Name Thuộc tính Text Label lblBaiSo3 BÀI THỰC HÌNH SỐ 3 Textbox Họ tên txtHoTen Mời nhâp vao họ tên ̣ ̀ Textbox Họ lot ́ txtHoLot Textbox Tên txtTen Button Đêm từ ́ btnDemTu Đêm từ ́ ́ ̃ Button Tach chuôi btnTachChuoi ́ ̃ Tach chuôi ̉ ́ ̃ Button chuân hoa chuôi btnChuanHoaChuoi ̉ ́ ̃ Chuân hoa chuôi ́ Button Xoa btnXoa ́ Xoa ́ Button Thoat btnThoat ́ Thoat ̀ Hinh 3.2 ́ ̣ 2. Viêt lênh Sự kiện Click trên textbox Họ tên: private void txtHoTen_Click(object sender, EventArgs e) { txtHoTen.Clear(); } Sự kiên click trên nut thoat ̣ ́ ́ private void btnXoa_Click(object sender, EventArgs e) { if (MessageBox.Show("Ban có chăc chăn không?", "Thông bao", ̣ ́ ́ ́ MessageBoxButtons.YesNo) == DialogResult.Yes) Close(); } 6 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com Hình 1.3
  7. BÀI THỰC HÀNH SỐ 4: XỬ LÝ CHUÔI ̃ Muc đich: Bai thực hanh nay giup sinh viên thực hanh sử dung cac phương thức xử lý ̣ ́ ̀ ̀ ̀ ́ ̀ ̣ ́ chuôi trong lớp String ̃ Muc tiêu: Sau khi hoan thanh bai thực hanh nay sinh viên sử dung thanh thao cac phương ̣ ̀ ̀ ̀ ̀ ̀ ̣ ̀ ̣ ́ thức xử lý chuôi ̃ Yêu câu: Tiêp tuc phat triên bai thực hanh số 3 để hoan thanh chức năng chuân hoa chuôi ̀ ́ ̣ ́ ̉ ̀ ̀ ̀ ̀ ̉ ́ ̃ Họ tên (căt bỏ cac ký tự dư thừa và viêt ký tự in hoa đâu môi từ) và tach chuôi họ tên thanh họ lot ́ ́ ́ ̀ ̃ ́ ̃ ̀ ́ và tên Hướng dân ̃ - Chuân hoa chuôi: Trong file mã nguôn thêm vao môt ham có tên là ChuanHoaChuoi có ̉ ́ ̃ ̀ ̀ ̣ ̀ kiêu trả về là string để nhân trả về chuôi sau khi đã chuân hoa, tham số cua ham là biên chuôi cân ̉ ̣ ̃ ̉ ́ ̉ ̀ ́ ̃ ̀ ̉ chuân hoa ́ - Ham căt bỏ ký tự trăng ở hai đâu chuôi: string Chuôi_Cân_Căt.Trim(); ̀ ́ ́ ̀ ̃ ̃ ̀ ́ - Ham tim vị trí xuât hiên cua môt chuôi trong 1 chuôi: ̀ ̀ ́ ̣ ̉ ̣ ̃ ̃ int chuôi_chinh.IndexOf(chuôi_cân_tim, vị tri_xuât_phat), nêu tim thây ham cho ra vị trí ̃ ́ ̃ ̀ ̀ ́ ́ ́ ́ ̀ ́ ̀ xuât hiên cua ký tự đâu tiên tim thây, ngược lai cho giá trị -1 ́ ̣ ̉ ̀ ̀ ́ ̣ - Ham căt bỏ chuôi: string chuôi(vi_tri_băt_đâu_căt, sô_ky_tự_cân_căt) ̀ ́ ̃ ̃ ̣ ́ ́ ̀ ́ ́ ́ ̀ ́ - Trong sự kiên click cua nut Chuân hoa chuôi goi phương thức Chuân hoa chuôi đã xây ̣ ̉ ́ ̉ ́ ̃ ̣ ̉ ́ ̃ dựng để chuân hoa chuôi, ví dụ txtHoTen.Text=ChuanHoaChuoi(txtHoTen) ̉ ́ ̃ - Tach từ: sử dung ham tim kiêm vị trí xuât hiên cuôi cung cua môt chuôi trong 1 chuôi (ký ́ ̣ ̀ ̀ ́ ́ ̣ ́ ̀ ̉ ̣ ̃ ̃ tự trăng cuôi cung trong chuôi, tức là ký tự đứng trước tên) ́ ́ ̀ ̃ int chuôi_chinh.LastIndexOf(chuôi_cân_tim, vị tri_xuât_phat), nêu tim thây ham cho ra vị trí ̃ ́ ̃ ̀ ̀ ́ ́ ́ ́ ̀ ́ ̀ xuât hiên cua ký tự đâu tiên tim thây, ngược lai cho giá trị -1 ́ ̣ ̉ ̀ ̀ ́ ̣ Khi tim được vị trí băt đâu cua Tên ta dung ham tach chuôi ̀ ́ ̀ ̉ ̀ ̀ ́ ̃ ̃ ̀ ́ ̣ ́ ́ ̀ ́ ̣ ̀ string chuôi_cân_trich(vi_tri_băt_đâu_trich, đô_dai) ví du: ̣ str=”Nguyen Van An”; int pos= str.LastIndexOf(" "); if (pos >= 0) { txtHoLot.Text = str.Substring(0, pos + 1); txtTen.Tex = str.Substring(pos); } Lưu y: cân chuân hoa chuôi trước khi tach ́ ̀ ̉ ́ ̃ ́ 7 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  8. BÀI THỰC HÀNH SỐ 5: THỰC HÀNH CÁC CẤU TRÚC ĐIỀU KHIỂN Muc đich: Bai thực hanh nay giup sinh viên thực hanh cac câu truc điêu khiên cua C# ̣ ́ ̀ ̀ ̀ ́ ̀ ́ ́ ́ ̀ ̉ ̉ Muc tiêu: Sau khi hoan thanh bai tực hanh nay sinh viên sử dung thanh thao cac câu ̣ ̀ ̀ ̀ ̀ ̀ ̣ ̀ ̣ ́ ́ ́ ̀ ̉ truc điêu khiên trong C# 1. Câu Lênh rẽ nhanh if…else ̣ ́ Yêu câu 1: Tao môt đề an mới để giai phương trinh bâc nhât ̀ ̣ ̣ ́ ̉ ̀ ̣ ́ Giao diên gợi ý ̣ ̀ Hinh 5.1 *Lưu ý: Cân đăt tên cho cac đôi tượng trên form cho đung chuân đăt tên ̀ ̣ ́ ́ ́ ̉ ̣ Hướng dẫn: - Viêt môt ham để giai phương trinh bâc nhât, tham số cua ham là hệ số a và b, kêt quả giai ́ ̣ ̀ ̉ ̀ ̣ ́ ̉ ̀ ́ ̉ hiên thị lên textbox Nghiêm x ̉ ̣ - Trong sự kiên Click cua nut Giai goi ham giai phương trinh đã viêt (lưu y, cân kiêm tra ̣ ̉ ́ ̉ ̣ ̀ ̉ ̀ ́ ́ ̀ ̉ tinh hợp lệ cua dữ liêu trước khi goi ham giai phương trinh) ́ ̉ ̣ ̣ ̀ ̉ ̀ - Các phương thức chuyển kiểu: + Chuyển chuỗi số sang kiểu số Cú pháp: .Parse(); Cụ thể: + Double.Parse(string s): Chuyển một chuỗi số sang kiểu Double Ví dụ: double n = Double.Parse("14.56"); sau lệnh này n nhận giá trị kiểu double là 14.56 + float.Parse(string s): Chuyển một chuỗi số sang kiểu float Ví dụ: double n = Double.Parse("14.56"); sau lệnh này n nhận giá trị kiểu float là 14.56 + int.Parse(string s): Chuyển một chuỗi số sang kiểu int Ví dụ: int.Parse("1.2"); sai vì không đúng định dạng kiểu int.Parse("123"); sau lệnh này n nhận giá trị kiểu int là 123 + Chuyển kiểu số sang chuỗi Cú pháp: .ToString(); Ví dụ: 8 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  9. double n=1.5; string s= n.ToString(); Hoặc có thể dụng các phương thức chuyển kiểu trong lớp Convert Yêu cầu 2: Thêm vao đề an đã thực hiên ở câu 1 form và thiết kế giao diện như hình 5.2 ̀ ́ ̣ và sau đó viết mã nguồn để thực hiên chức năng giải phương trình bậc 2 ̣ Hình 5.2 Hướng dẫn: - Mặc định khi chạy đề án form giải phương trình bậc nhất sẽ được chạy. Vì vậy, đ ể chạy Chạy form giải phương trình bậc 2 ta phải thay đổi một chút bằng cách: tại Solution Explorer mở file program.cs, trong phương thức main, tại dòng Application.Run gõ vào tên form cần thực thi - Viết hàm giải phương trình bậc 1 như ở yêu cầu 1 - Viết hàm giải phương trình bậc 2 gồm có ba tham số a,b và c, trong hàm này kiểm tra nếu hệ số a=0 ta gọi hàm giải phương trình bậc 1 để giải, ngược lại tiến hành giải phương trình bậc 2 ̣ ̣ 2. Câu lênh lăp for Yêu câu: Thêm vao đề an một form và thiết kế giao diện như hình 5.3, sau đó viết mã ̀ ́ nguồn để thực hiện chức năng sinh ra một mảng số nguyên ngẫu nhiên gồm n phần t ử thuộc đoạn [1,100], sau đó thực hiện sắp xếp mảng theo chiều tăng và giảm dần Hình 5.3 Hướng dẫn 9 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  10. - Tạo mảng: khi nhấn vào nút tạo mảng sẽ sinh ra một mảng với số phần tử nhập vào trong TextBox Số phần tử kiểu số nguyên thuộc trong đoạn [0,100], kết quả hiển thị trong TextBox kết quả - Sắp xếp: thực hiện sắp xếp mảng theo chiều tăng dần hoặc giảm dần theo điều kiện sắp xếp, kết quả hiển thị ra TextBox kết quả. Để biết sắp xếp tăng hay giảm, căn cứ vào nút chọn Sắp xếp tăng và Sắp xếp giảm, nếu thuộc tính checked của nút chọn Sắp xếp tăng cho giá trị true thì thực hiện sắp xếp tăng, ngược lại thực hiện sắp xếp giảm. - Cú pháp khai báo mảng int[] A = new int[]; - Sinh giá trị ngẫu nhiên Random rd = new Random(); rd.Next(0,100); //Phương thức cho ra một giá trị ngẫu nhiên thuộc đoạn [0,100] 3. Câu lệnh lặp while Yêu cầu: Thêm vào đề an 1 form và thiết kế như hình 5.4, sau đó viết mã nguồn để tìm ước số chung lớn nhất và bội số chung nhỏ nhất của 2 số a và b Hướng dẫn: - Viết 2 hàm tìm ước số chung lớn nhất và hàm tìm bội số chung nhỏ nhất, trong hàm bội số chung nhỏ nhất sử dụng đến hàm ước số chung lớn nhất Hình 5.4 10 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  11. BÀI THỰC HÀNH SÔ 6: THIẾT KẾ MDIFORM VÀ MENU Mụ đích: Bài thực hành nhằm mục đích giúp sinh viên thiết kế menu và sử dụng mdiform Mục tiêu: Sau khi hoàn thành bài thực hành này sinh viên thành thạo việc thiết kế menu và sử dụng mdiform Yêu cầu: Trong bài thực hành số 5 có nhiều form, nhưng khi muốn thực thi form nào chúng ta điều phải chỉ định trong lớp program.cs, điều này không mấy thuận lợi. Trong bày thực hành này sẽ hướng dẫn cho anh/ chị tạo một MDIForm (form chính để quản lý tất c ả các form con) và menu để có thể dễ dàng gọi thực hiện các form từ menu 1. Tạo MDIForm: Tại đề án của bài thực hành số 5 anh/chị thêm vào một window form và đặt tên là frmMain để làm form chính. Sau đó đặt lại một số thuộc tính cần thiết cho form này và chỉ định form này là form chính bằng cách đặt lại thuộc tính isMdiContainer là true 2. Tạo menu trên form chính: Tạo menu gồm các mục như hình bên dưới Menu Hệ thống Menu Chức năng Hướng dẫn: Trên thanh Toolbox kéo đối tượng MenuStrip ra form muốn tạo menu , lúc này sẽ xuất hiện mục tạo menu , - Tạo menu Hệ thống: Khi kéo đối tượng MenuStrip vào, xuất hiện , tại đây gõ vào dòng Hệ thống , sau đó đặt lại tên cho menu này với tiếp đầu ngữ mnu. Để tiếp tục tạo menu con của menu Hệ thống tiếp tục nhấp chuột vào mục Type Here bên dưới và thao tác như đã thao tác với menu Hệ thống - Tạo menu Chức năng: Thao tác tương tự như menu Hệ thống - Trường hợp muốn sửa thông tin cho mục menu nào, nhấp chuột trái vào mục đó để sửa. Muốn xoá, nhấp chuột phải lên mục đó và chọn Delete Lưu ý: Đừng quên đặt lại tên cho menu 3. Gọi form từ menu: Viết sự kiện click cho các mục trong menu (thao tác tương tự như thao tác với các đối tượng khác mà anh chị đã từng viết). Để gọi 1 form nào ta c ần kh ởi t ạo ra 11 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  12. form đó, sau đó chỉ định form cần hiển thị là form con của form chính và cuối cùng là hi ển th ị form Ví dụ, hiển thị form có tên frmPTB1, khi nhấp chuột vào menu có tên mnuPTB1 private void mnuPTB1_Click(object sender, EventArgs e) { //Khởi tạo form cần hiển thị frmPTB1 frm = new frmPTB1(); //chỉ định form này là form con của form mdi frm.MdiParent = this; //cho hiển thị form frm.Show(); } 12 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  13. BÀI THỰC HÀNH SỐ 7: THỰC HÀNH VIẾT CLASS (LỚP) TRONG C# Mục đích: Giúp sinh viên bắt đầu làm quen với cách viết các class trong C# để có kiến thức chuẩn bị cho phần lập trình hướng đối tượng Mục tiêu: Sau bài thực hành này sinh viên viết được class và sử dụng lớp trong chương trình, phân biệt được lớp static và non-static Yêu cầu: Trong bài thực hành số 5, để giải quyết các bài toán (giải phương trình bậc 1, bậc 2, tìm ước chung lớn nhất, bội số chung nhỏ nhất) ta phải viết dưới dạng các hàm ch ức năng và phải viết lại nhiều lần các hàm có cùng chức năng (trong giải phương trình b ậc 1 có hàm giải phương trình bậc 1, trong giải phương trình bậc 2 cũng phải viết lại chức năng giải phương trình bậc 1). Bài thực hành này các chức năng này ta sẽ viết trong một class và class này sẽ được sử dụng trong từng chức năng tương ứng. Mở lại đề án của bài số 5 và thêm vào đề án một lớp, đặt tên là cXuLy. Sau khi class được tạo ra ta viết các phương thức: Giải phương trình bậc 1; Giải phương trình bậc 2; Ước số chung; Bộ số chung; Tạo mảng; Sắp xếp mảng tăng dần; Sắp xếp mảng giảm dần. Sau khi hoàn thành lớp này ta sử dụng các phương thức trong lớp này để thực hiện các chức năng của bài toán yêu cầu Hướng dẫn: - Với phương thức giải phương trình bậc 1 giá trị trả về có thể là phương trình vô nghiệm hoặc phương trình vô số nghiệm hoặc nghiệm -b/a. Như vậy, ta có thể dùng kiểu trả về là kiểu string để có thể nhận được cho 3 trường hợp nghiệm. - Với phương trình bậc 2 có thể nhận nhiều trường hợp nghiệm. Như vậy, kiểu trả về của phương thức giải phương trình bậc hai có thể sử một mảng string gồm 2 phần tử để có thể nhận tất cả các trường hợp nghiệm của phương trình - Phương thức tạo mảng sẽ trả về mảng vừa tạo - Phương thức sắp xếp mảng giảm dần và tăng dần đều trả về kết quả của mảng sau khi đã sắp xếp Ví dụ lớp XuLy: public class cXuLy { public static string gptb1(double a, double b) { if (a == 0) if (b == 0) return "PT Vô số nghiêm"; ̣ else ̣ return "PT Vô nghiêm"; else return (-b / a).ToString(); } public static string[] gptb2(double a, double b, double c) { string[] Nghiem = new string[2]; if (a == 0) Nghiem[0] = Nghiem[1] = gptb1(b, c); else { double delta = b * b - 4 * a * c; if (delta < 0) ̣ Nghiem[0] = Nghiem[1] = "PT Vô nghiêm"; else if (delta > 0) 13 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  14. { Nghiem[0] = ((-b + Math.Sqrt(delta)) / (2 * a)).ToString(); Nghiem[1] = ((-b - Math.Sqrt(delta)) / (2 * a)).ToString(); } else Nghiem[0] = Nghiem[1] = (-b / (2 * a)).ToString(); } return Nghiem; } } Ví dụ sử dụng lớp XuLy private void cmdGiai_Click(object sender, EventArgs e) { double a = double.Parse(txtHSA.Text); double b = double.Parse(txtHSB.Text); double c = double.Parse(txtHSC.Text); string[] Nghiem=new string[2]; Nghiem=cXuLy.gptb2(a,b,c); txtNghiem1.Text = Nghiem[0]; txtNghiem2.Text = Nghiem[1]; } Lưu ý: sinh viên phải phân biệt rõ phương thức static và non-static Yêu cầu sửa đổi: 1. Điều chỉnh lại các phương thức trong lớp XyLy thành non-static để thấy được sự khác biệt của lớp static và non-static Ví dụ sử dụng phương thức non-static private void cmdGiai_Click(object sender, EventArgs e) { XuLy gpt=new cXuLy(); double a = double.Parse(txtHSA.Text); double b = double.Parse(txtHSB.Text); double c = double.Parse(txtHSC.Text); string[] Nghiem=new string[2]; Nghiem=gpt.gptb2(a,b,c); txtNghiem1.Text = Nghiem[0]; txtNghiem2.Text = Nghiem[1]; } 2. Sau khi hoan thanh yêu câu trên, anh/chị hay cai tiên lai lớp cXuLy, băng cach thêm vao ̀ ̀ ̀ ̃ ̉ ́ ̣ ̀ ́ ̀ lớp cac thuôc tinh nghiêm (tức luc nay phương thức giai phương trinh bâc 1 và bâc 2 không có giá ́ ̣ ́ ̣ ́ ̀ ̉ ̀ ̣ ̣ trị trả vê, cac giá trị nghiêm sẽ gan cho cac thuôc tinh nghiêm) và cac phương thức lây giá trị cua ̀ ́ ̣ ́ ́ ̣ ́ ̣ ́ ́ ̉ ́ ̣ ́ cac thuôc tinh 14 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  15. BÀI THỰC HÀNH SỐ 8: THỰC HÀNH HƯỚNG ĐỐI TƯỢNG TRONG C# Mục đích: Giúp sinh viên bắt đầu làm quen với cách viết các class và sử dụng thừa kế trong C#. Mục tiêu: Sau bài thực hành này sinh viên viết được class và sử dụng thừa kế Yêu cầu: 1. Viết các lớp theo yêu cầu sau: Lớp Person: - Các thuộc tính: Tên, tuổi, địa chỉ có phạm vi là private - Hàm dựng không có tham số để thiết lập giá trị ban đầu cho các thuộc tính (anh/chị thiết lập giá trị theo ý của mình) - Hàm dựng có tham số để thiết lập giá trị cho các thuộc tính theo các tham số đã truyền vào - Các phương thức set/get giá trị của các thuộc tính Lớp Student được dẫn xuất từ lớp Person: - Các thuộc tinh: Mã lớp, mã sinh viên có phạm vi là private - Hàm dựng không có tham số để thiết lập giá trị ban đầu cho các thuộc tính (anh/chị thiết lập giá trị theo ý của mình) - Hàm dựng có tham số để thiết lập giá trị cho các thuộc tính theo các tham số đã truyền vào - Các phương thức set/get giá trị của các thuộc tính Lớp Teacher dẫn xuất từ lớp Person: - Các thuộc tính Mã khoa, chuyên ngành - Hàm dựng không có tham số để thiết lập giá trị ban đầu cho các thuộc tính (anh/chị thiết lập giá trị theo ý của mình) - Hàm dựng có tham số để thiết lập giá trị cho các thuộc tính theo các tham số đã truyền vào - Các phương thức set/get giá trị của các thuộc tính 2. Thiết kế form: - Thiết kế form Sinh viên để cho phép thực hiện quản lý sinh viên (giao diện thiết kế được gợi ý như hình bên dưới) - Thiết kế form giáo viên: yêu cầu tương tự như form sinh viên 15 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  16. 3. Viết mã nguồn cho các form Sinh viên, thực hiện các chức năng: - Thêm, sửa, xóa sinh viên - Xem thông tin các sinh viên thông qua các nút di chuyển như mô tả trong hình Giáo viên: tương tự như sinh viên 4. Mã nguồn tham khảo - Nút thêm Clear();//phương thức thực hiện xóa sạch màn hình txtMaLop.Focus();//chuyển con trỏ đến ô nhập mã lớp State = "add";//Biến State dùng để ghi nhận là thêm mới hay sửa đổi btnLuu.Enabled = true;//Bậc nút lệnh Lưu - Nút Sửa State = "edit";//ghi nhận điều kiện là sửa đổi btnLuu.Enabled = true;//Bậc nút lệnh Lưu - Nút Lưu if(State=="add")//nếu biến State==”add” thì thực hiện thêm mới { //thêm mới ListStudents.Add(CreateStudent()); txtCurIndex.Text= lblSoRecord.Text = ListStudents.Count.ToString(); }else if(State=="add")//nếu biến State==”edit” thì thực hiện sửa đổi //gọi phương thức sửa đổi //txtCurIndex là textbox chứa chỉ số của sinh viên hiện thời cần sửa EditStudent((cStudent)ListStudents[int.Parse(txtCurIndex.Text)-1]); //gọi phương thức thiết lập lại trạng thái cho các nút di chuyển record setButton(); 16 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  17. - Nút xóa //chỉ số của sinh viên hiện thời cần xóa int CurIndex = int.Parse(txtCurIndex.Text); if(CurIndex>0) { //trừ CurIndex đi 1 vì CurIndex =1 tương đương //với sinh viên thứ 0 trong danh sách ListStudents.RemoveAt(CurIndex - 1); if (ListStudents.Count > 0)//nếu trong danh sách vẫn còn sv { if(CurIndex > ListStudents.Count) //tức là đã xóa sinh viên cuối cùng, nên giảm CurIndex đi //1 để hiển thị sinh viên đứng trước txtCurIndex.Text = (--CurIndex).ToString(); //hiển thị sinh viên trước sinh viên đã xóa nếu như //xóa sv cuối cùng, ngược lại hiển thị sinh viên đứng sau DisplayStudent((cStudent)ListStudents[CurIndex - 1]); } else//nếu trong danh sách không còn sinh viên { txtCurIndex.Text = "0";//chỉ số hiển thị là 0 Clear();//xóa sạch màn hình } setButton();//thiết lập các nút di chuyển record } - Nút về dầu DisplayStudent((cStudent)ListStudents[0]); txtCurIndex.Text = "0"; setButton(); - Nút về trước txtCurIndex.Text =( int.Parse(txtCurIndex.Text) - 1).ToString(); int CurIndex = int.Parse(txtCurIndex.Text) - 1; DisplayStudent((cStudent)ListStudents[CurIndex]); setButton(); - Nút về sau int CurIndex = int.Parse(txtCurIndex.Text); DisplayStudent((cStudent)ListStudents[CurIndex]); txtCurIndex.Text = (CurIndex+ 1).ToString(); setButton(); - Nút về cuối int CurIndex = ListStudents.Count; DisplayStudent((cStudent)ListStudents[CurIndex-1]); txtCurIndex.Text = CurIndex.ToString(); setButton(); - Phương thức thiết lập trạng thái các nút di chuyển record void setButton() { int iCurIndex=int.Parse(txtCurIndex.Text); if (ListStudents.Count
  18. btnTruoc.Enabled = btnDau.Enabled = true; } else if (iCurIndex > 1) btnDau.Enabled = btnTruoc.Enabled = btnSau.Enabled = btnCuoi.Enabled = true; } - Phương thức tạo mới 1 sinh viên cStudent CreateStudent() { cStudent st = new cStudent(); st.setAddress(txtDiaChi.Text); st.setAge(int.Parse(txtTuoi.Text)); st.setClassId(txtMaLop.Text); st.setName(txtTenSV.Text); st.setStudentId(txtMaSV.Text); return st; } - Phương thức sửa sinh viên void EditStudent(cStudent st) { st.setAddress(txtDiaChi.Text); st.setAge(int.Parse(txtTuoi.Text)); st.setClassId(txtMaLop.Text); st.setName(txtTenSV.Text); st.setStudentId(txtMaSV.Text); } - Phương thức hiển thị sinh viên void DisplayStudent(cStudent st) { txtDiaChi.Text = st.getAddress(); txtMaLop.Text = st.getClassId(); txtMaSV.Text = st.getStudentId(); txtTenSV.Text = st.getName(); txtTuoi.Text = st.getAge().ToString(); } 18 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  19. BÀI THỰC HÀNH SỐ 9: SỬ DỤNG MỘT SỐ ĐỐI TƯỢNG DANH SÁCH TRONG LẬP TRÌNH WINFORM Mục đích: Bài thực hành này giúp cho anh/chị sử dụng đối tượng ListBox, ListView, DataGridView (dùng vào việc chứa thông tin theo dạng danh sách, được bố trí theo từng dòng và có chỉ mục từ 0 trở đi, tiện lợi cho việc thêm vào cuối, chèn vào một vị trí bất kỳ hãy s ửa đ ổi hoặc xoá bỏ) và đối tượng MaskedTextBox (đối tượng textbox có định dạng dữ liệu nhập) thường dùng trong lập trình ứng dụng và các sự kiện KeyDown, DoubleClick Kết quả cần đạt được: Thực hành xong bài này anh/chị sử dụng thành thạo đối tượng ListBox, ListView, DataGridView và sự kiện nhấn phím Enter và DoubleClick chuột Đề bài: Tạo một đề án mới có các form và các chức năng như các yêu cầu bên dưới I. LISTBOX Thiết kế form như hình bên dưới ListBox Yêu cầu: 1. Khi nhập nội dung vào Textbox nhấn nút Add hoặc nhấn phím Enter nội dung này sẽ được đưa vào trong ListBox nằm bên tráip 2. Khi nhấn nhấp đúp một mục trong ListBox hoặc chọn rồi nhấn nút thì mục này sẽ được di chuyển sang ListBox bên kia 3. Khi nhấn vào nút thì di chuyển tất cả các mục trong ListBox bên trái sang ListBox bên phải và ngược lại Hướng dẫn: 1. - Thêm một mục vào trong ListBox : ListBox.Items.Add("Nội dung") - Để nhận sự kiện nhấn phím Enter chúng ta viết trong sự kiện Sự kiện KeyDown và kiểm tra KeyCode có phải là Enter hai không, nếu đúng ta add và ListBox 19 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
  20. 2. Di chuyển một mục từ ListBox này sang ListBox khác, chúng ta cần thực hiện: + Nhận biết mục được chọn trong ListBox là mục thứ mấy trong danh sách ListBox lstLeft.SelectedIndex //Cho biết mục được chọn là mục thứ mấy? + Lấy nội dung của mục được chọn add và ListBox bên kia lstRight.Items.Add(lstLeft.Text);//lấy mục được chọn trong lstLeft đưa vào lstRight + Xóa bỏ đi mục đã được chọn lstLeft.Items.RemoveAt(lstLeft.SelectedIndex);//gỡ bỏ 1 mục trong lstLeft 3. Di chuyển tất cả các mục từ ListBox này sang ListBox khác, cần thực hiện: Duyệt qua từ mục đầu tiên cho đến mục cuối cùng, trong mỗi mục thực hiện add nội dung của mục hiện hành vào ListBox bên kia và xóa bỏ đi mục đã duyệt qua while (lstLeft.Items.Count > 0) { lstRight.Items.Add(lstLeft.Items[0].ToString() ); lstLeft.Items.RemoveAt(0); } II. LISTVIEW & MASKEDTEXTBOX Cho form mẫu Yêu cầu: 20 Bai tâp thực hanh LÂP TRINH C# ̀ ̣ ̀ ̣ ̀ htrvy@yahoo.com
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
8=>2