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

Bài giảng Thực hành kỹ thuật lập trình: Phần 2 - ĐH Sư Phạm Kỹ Thuật Nam Định

Chia sẻ: Mucnang222 Mucnang222 | Ngày: | Loại File: PDF | Số trang:180

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

Tiếp nội dung phần 1 Bài giảng Thực hành kỹ thuật lập trình: Phần 2 cung cấp cho người học các kiến thức cơ bản như: Lập trình trên form xử lý các cấu trúc dữ liệu nâng cao, lập trình trên form bước đầu thao tác với cơ sở dữ liệu. Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Thực hành kỹ thuật lập trình: Phần 2 - ĐH Sư Phạm Kỹ Thuật Nam Định

  1. Tập bài giảng Thực hành kỹ thuật lập trình BÀI 2. LẬP TRÌNH TRÊN FORM XỬ LÝ CÁC CẤU TRÚC DỮ LIỆU NÂNG CAO Mục tiêu Sau bài học, sinh viên có khả năng: - Kiến thức: Biết thiết kế Form và sử dụng C# lập trình trên form để thực hiện các thao tác trên cấu trúc và trên tập tin: tạo lập, tìm kiếm, thêm, xóa,… - Kỹ năng: Vận dụng đƣợc kiến thức thiết kế và lập trình trên form thực hiện giải các bài toán trong thực tế. - Thái độ: + Nghiêm túc, sáng tạo + Tích cực tập luyện Chuẩn bị dụng cụ, vật tƣ, thiết bị Chuẩn bị máy tính có hệ điều hành Windows XP hoặc cao hơn, phần mềm Microsoft Office, bộ gõ Tiếng Việt, phần mềm Visual Studio 2008 hoặc cao hơn. 2.1 - Làm việc với cấu trúc 2.1.1. Tóm tắt các kiến thức cần nhớ 1. Định nghĩa một Struct [Phạm_vi_truy_nhập] struct Tên_cấu_trúc { Danh_ sách _các_ biến_thành_phần; Danh_ sách_các_thuộc_tính; Danh_ sách_ các_phƣơng_thức; } 2. Khai báo biến cấu trúc Tên_cấu_ trúc Tên_biến_cấu trúc = new Tên_cấu_trúc(); Ví dụ: Diem A= new Diem(); // Gọi hàm tạo không tham số hoặc Diem B = new Diem(30,10); // Gọi hàm tạo hai tham số Chú ý: Nếu ta không tạo bộ khởi dựng (hàm tạo) thì một bộ khởi dựng mặc định ngầm định sẽ đƣợc trình biên dịch tạo ra và giá trị mặc định của các biến thành viên là 0. Trong ngôn ngữ C#, từ khóa new không phải luôn luôn tạo đối tƣợng trên bộ nhớ Heap. Các lớp thì đƣợc tạo trên heap, trong khi các cấu trúc thì đƣợc tạo trên stack. Ngoài ra, khi new đƣợc bỏ qua thì bộ khởi dựng sẽ không đƣợc gọi. Do ngôn ngữ C# yêu cầu phải có phép gán trƣớc khi sử dụng, phải khởi tạo tƣờng minh tất cả các biến thành viên trƣớc khi sử dụng chúng trong cấu trúc. 3. Truy cập đến các biến thành phần của biến cấu trúc Tên_biến_cấu_trúc. Tên_biến_thành_phần Ví dụ: Diem A= new Diem(20, 40); A.x // truy cập vào thành phần x của biến A 118
  2. Tập bài giảng Thực hành kỹ thuật lập trình 4. Sao chép biến cấu trúc C# cho phép khởi gán hay gán một biến cấu trúc cho một biến cấu trúc khác. Ví dụ: Diem A = new Diem(10,20); Diem B; B = A; 5. Mảng cấu trúc a. Khai báo mảng cấu trúc: Tên_cấu_trúc [] Tên_ mảng= new Tên_cấu_trúc [kích_thƣớc]; Ví dụ: Diem [] A= new Diem[50]; b. Truy nhập đến các biến thành phần của mảng cấu trúc: Tên_mảng[chỉ_số].tên_biến_thành_phần; Ví dụ: A[2].x ; 2.1.2. Bài tập mẫu Viết chƣơng trình thực hiện các công việc sau: 1. Thiết kế Form nhƣ hình sau Hình 2. 1. Form quản lý giáo viên tiểu học Yêu cầu: - Nhãn danh sách giáo viên: Font Time New Roman, cỡ chữ 16, chữ hoa, in đậm, căn giữa Form, màu xanh. - Nhãn mã giáo viên, họ và tên, giới tính, năm sinh, môn giảng dạy: Font Time New Roman, cỡ chữ 14, màu đen. - Các ô để nhập Mã giáo viên, họ và tên, năm sinh là các TextBox. - Điều khiển để chọn giới tính Nam và Nữ là các radioButton - Các điều khiển “Thêm”, ”Hiển thị”, “Sửa”, “Xóa”, ”Thoát” là các Button. - Điều khiển danh sách giáo viên là GroupBox - Điều khiển để hiển thị danh sách giáo viên là ListView. 119
  3. Tập bài giảng Thực hành kỹ thuật lập trình - Điều khiển để lựa chọn môn giảng dạy là ComboBox. 2. Lập trình thực hiện các công việc: - Khai báo kiểu cấu trúc giáo viên của một trƣờng tiểu học ABC có các thuộc tính: mã giáo viên, họ và tên, giới tính, năm sinh, môn giảng dạy. Các hàm tạo không đối, có đối, hàm tạo sao chép để khởi tạo đối tƣợng - Khi Load Form: + Các điều khiển “Sửa”, “Xóa”, “Hiển thị” vô hiệu hóa. + Điều khiển “Thêm” và “Thoát” sáng cho phép hoạt động. - Khi ngƣời dùng kích vào nút “Thêm” + Các điều khiển “Sửa”, “Xóa”, “Hiển thị” sáng cho phép hoạt động + Thực hiện kiểm tra sự hợp lệ của dữ liệu nhập vào (nhập đủ thông tin về một giáo viên, năm sinh nhập vào phải là số và phải nhập đủ 4 số). Nếu dữ liệu nhập vào không hợp lệ thì đƣa ra hộp thoại thông báo và yêu cầu nhập lại. + Kiểm tra xem mã giáo viên đã có trong danh sách hay chƣa? Nếu trùng mã giáo viên thì đƣa ra hộp thoại thông báo và cho phép nhập lại. Nếu không trùng thì thực hiện thêm giáo viên mới vào danh sách giáo viên + Sau khi thêm một nhân viên mới vào danh sách thì các textbox để trống - Khi ngƣời dùng kích vào nút “Hiển thị”: Hiển thị thông tin của các giáo viên ra ListView danh sách giáo viên. - Khi ngƣời dùng kích chọn phần tử trên ListView thì thông tin về giáo viên đƣợc chọn sẽ hiển thị lên các textbox và radiobutton, combobox tƣơng ứng. - Khi ngƣời dùng kích vào nút “Xóa”: + Thực hiện xóa giáo viên có mã trùng với mã giáo viên đƣợc chọn trên ListView ra khỏi danh sách giáo viên (bắt lỗi khi ngƣời dùng chƣa chọn phần tử trên ListView) + Cập nhật lại danh sách giáo viên sau khi xóa lên ListView danh sách giáo viên. + Các textbox và combobox để trống. - Khi ngƣời dùng kích vào nút “Sửa”: + Nếu thuộc tính Text của điều khiển này là “Sửa” thì đối tƣợng ô để nhập mã giáo viên vô hiệu hóa (không sửa mã), thực hiện đổi lại thuộc tính Text của điều khiển này là “Cập nhật” và đặt con trỏ vào ô nhập họ tên giáo viên. + Nếu thuộc tính Text của điều khiển này là “Cập nhật”: Kiểm tra xem dữ liệu sau khi sửa có hợp lệ hay không? Nếu chƣa hợp lệ thì hiện lên hộp thoại thông báo, cho phép sửa lại và thuộc tính Text của điều khiển này vẫn là “Cập nhật”. Nếu dữ liệu sau khi sửa hợp lệ thì: * Thuộc tính Text của điều khiển này đổi thành “Sửa”. 120
  4. Tập bài giảng Thực hành kỹ thuật lập trình * Thực hiện cập nhật lại thông tin của giáo viên có mã trùng với mã giáo viên lựa chọn để sửa (bắt lỗi khi ngƣời dùng chƣa chọn phần tử trên ListView) * Cập nhập danh sách giáo viên sau khi sửa lên ListView danh sách giáo viên. * Đối tƣợng ô để nhập mã giáo viên sáng lên cho phép hoạt động. Hướng dẫn thực hiện 1. Thiết kế Form nhƣ yêu cầu đề bài 2. Phân tích yêu cầu Theo yêu cầu của bài toán thì phải có một Form chứa: - Các đối tƣợng có nội dung “Danh sách giáo viên”, “Mã giáo viên”, ”Họ và tên”, “Giới tính”,”Năm sinh”, “Môn giảng dạy” là các Label. - Đối tƣợng ô nhập mã giáo viên, họ và tên, năm sinh, giới tính, môn giảng dạy là các Textbox. - Điều khiển để chọn giới tính nam và nữ là các RadioButton. - Điều khiển để hiển thị danh sách giáo viên là ListView đƣợc đặt trong một GroupBox danh sách giáo viên. - Điều khiển để lựa chọn môn giảng dạy là ComboBox. - Các nút “Thêm”, “Xóa”, ”Sửa”, “Hiển thị”, “Thoát” là các Button. - Điều khiển thông tin chi tiết giáo viên là một GroupBox. 3. Hƣớng dẫn thực hiện - Thiết kế Form theo mẫu và gắn các điều khiển + Kéo điều khiển Label từ cửa sổ Toolbox + Kích phải chuột vào Label chọn Properties và thiết lập các thuộc tính cho Label nhƣ sau: Text: DANH SÁCH GIÁO VIÊN Font: Time New Roman Size: 16 Font style: Bold ForeColor: Blue Thực hiện tƣơng tự với các nhãn họ tên, mã giáo viên, giới tính, năm sinh, môn giảng dạy. - Để tạo một GroupBox thông tin chi tiết giáo viên theo yêu cầu cần thực hiện: + Kéo điều khiển GroupBox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào GroupBox chọn Properties và thiết lập các thuộc tính cho GroupBox nhƣ sau: Text: Thông tin chi tiết giáo viên Font: Time New Roman 121
  5. Tập bài giảng Thực hành kỹ thuật lập trình Size: 14 ForeColor: Black Thực hiện tƣơng tự với GroupBox danh sách giáo viên. - Để tạo điều khiển nhập mã giáo viên theo yêu cầu cần thực hiện: + Kéo điểu khiển Textbox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào Textbox/Properties và thiết lập thuộc tính Name: txt_magv. Thực hiện tƣơng tự với các điều khiển nhập họ và tên, năm sinh. - Để tạo điều khiển chọn giới tính là Nam: + Kéo điều khiển RadioButton từ cửa sổ Toolbox vào Form. + Kích phải chuột vào RadioButton/Properties và thiết lập các thuộc tính: Name: radio_nam checked: True Thực hiện tƣơng tự với điều khiển chọn giới tính là Nữ. - Để tạo điều khiển “Thêm” theo yêu cầu cần thực hiện: + Kéo điều khiển Button từ cửa sổ Toolbox vào Form. + Kích phải chuột vào Button chọn Properties và thiết lập các thuộc tính Name: bt_them. Thực hiện tƣơng tự với điều khiển “Xóa” , “Sửa”, “Hiển thị”, “Thoát”. - Để tạo điều khiển liệt kê danh sách giáo viên theo yêu cầu cần thực hiện: + Kéo điều khiển ListView từ cửa sổ Toolbox vào Form. + Kích phải chuột vào ListView chọn Properties và thiết lập các thuộc tính: Name: listview_giaovien Columns/ kích chuột vào Collection/ kích Add 5 lần và thiết lập thuộc tính Text cho các cột tƣơng ứng lần lƣợt là mã giáo viên, họ và tên, giới tính, năm sinh, môn giảng dạy. View: Detail GridLine: true - Để tạo điều khiển chọn môn giảng dạy theo yêu cầu cần thực hiện: + Kéo điều khiển ComboBox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào ComboBox /Properties và thiết lập các thuộc tính: Name: combo_mongd Items/ Collection/ Gõ tên các môn giảng dạy. Kết quả thiết kế Form 122
  6. Tập bài giảng Thực hành kỹ thuật lập trình Hình 2. 2 - Kết quả thiết kế Form quản lý giáo viên tiểu học Viết mã lệnh cho các công việc -Viết mã lệnh khai báo cấu trúc Giáo viên public struct Giaovien { string _magiaovien; string _hoten; bool _gioitinh; int _namsinh; string _mon_gday; public string maGV { get { return _magiaovien; } set { _magiaovien = value; } } public string hoten { get { return _hoten; } set { _hoten = value; } } public bool gioitinh { get { return _gioitinh; } set { _gioitinh = value; } } public int namsinh { get { return _namsinh; } set { _namsinh = value; } 123
  7. Tập bài giảng Thực hành kỹ thuật lập trình } public string mon_gday { get { return _mon_gday; } set { _mon_gday = value; } } -Viết mã lệnh cho hàm tạo có tham số public Giaovien(string magv, string hoten, bool gt, int ns, string mongd) { _magiaovien = magv; _hoten = hoten; _gioitinh = gt; _namsinh = ns; _mon_gday = mongd; } -Viết mã lệnh cho hàm tạo sao chép public Giaovien(Giaovien a) { _magiaovien = a._magiaovien; _hoten = a._hoten; _gioitinh = a._gioitinh; _namsinh = a._namsinh; _mon_gday = a._mon_gday; } } -Viết mã lệnh khai báo mảng giáo viên, biến nguyên n Giaovien[] A = new Giaovien[100]; int n = 0; -Viết mã lệnh cho sự kiện Form Load private void Form1_Load(object sender, EventArgs e) { vohieuhoa(false); txt_magv.Focus(); } -Viết mã lệnh cho hàm vô hiệu hóa các nút void vohieuhoa(bool gt) { bt_hienthi.Enabled = gt; bt_sua.Enabled = gt; bt_xoa.Enabled = gt; } -Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào bool kiemtra_du_lieu() { if (kiemtra(txt_magv.Text)||kiemtra(txt_hoten.Text)|| kiemtra(txt_namsinh.Text)|| kiemtra(combo_mongd.Text)) return false; 124
  8. Tập bài giảng Thực hành kỹ thuật lập trình int namsinh; if (txt_namsinh.Text.Length < 4 || txt_namsinh.Text.Length > 4) return false; if (!int.TryParse(txt_namsinh.Text, out namsinh) || namsinh
  9. Tập bài giảng Thực hành kỹ thuật lập trình { txt_magv.Text = listview_giaovien.SelectedItems[i].SubItems[0].Text; txt_hoten.Text = listview_giaovien.SelectedItems[i].SubItems[1].Text; gt= listview_giaovien.SelectedItems[i].SubItems[2].Text; if (string.Compare(gt, "Nam") == 0) radio_nam.Checked = true; else radio_nu.Checked = true; txt_namsinh.Text = listview_giaovien.SelectedItems[i].SubItems[3].Text; combo_mongd.Text = listview_giaovien.SelectedItems[i].SubItems[4].Text; } } catch { MessageBox.Show("Bạn chƣa chọn phần tử"); } } -Viết mã lệnh cho sự kiện kích chuột vào nút xóa private void bt_xoa_Click(object sender, EventArgs e) { try { string ma = txt_magv.Text; for (int i = 0; i < n;i++ ) if (String.Compare(A[i].maGV, ma) == 0) { for (int j = i; j < n - 1; j++) A[j] = A[j + 1]; n--; break; } Reset(); Dua_DL_listview(); } catch { MessageBox.Show("Chƣa chọn mã nhân viên"); } } -Viết mã lệnh cho sự kiện kích chuột vào nút sửa private void bt_sua_Click(object sender, EventArgs e) { if (string.Compare(bt_sua.Text, "Sửa")!= 0) // nút cập nhật { if (kiemtra_du_lieu()) { bt_sua.Text = "Sửa"; for (int i = 0; i < n; i++) if (string.Compare(A[i].maGV, txt_magv.Text) == 0) { A[i].hoten = txt_hoten.Text; A[i].namsinh = int.Parse(txt_namsinh.Text); 126
  10. Tập bài giảng Thực hành kỹ thuật lập trình A[i].mon_gday = combo_mongd.Text; if (radio_nam.Checked) A[i].gioitinh = false; else A[i].gioitinh = true; Dua_DL_listview(); break; } txt_magv.Enabled = true; } else { bt_sua.Text = "Cập nhật"; MessageBox.Show("Du lieu sua chua hop le"); } } else // Sửa { txt_magv.Enabled = false; txt_hoten.Focus(); bt_sua.Text = "Cập nhật"; } } -Viết mã lệnh cho sự kiện kích chuột vào nút hiển thị private void bt_hienthi_Click(object sender, EventArgs e) { Dua_DL_listview(); } -Viết mã lệnh cho hàm đƣa dữ liệu vào ListView mã giáo viên private void Dua_DL_listview() { listview_giaovien.Items.Clear(); for (int i = 0; i < n; i++) { ListViewItem item = new ListViewItem(); item.Text = A[i].maGV; item.SubItems.Add(A[i].hoten); item.SubItems.Add(A[i].gioitinh.ToString()); item.SubItems.Add(A[i].namsinh.ToString()); item.SubItems.Add(A[i].mon_gday); listview_giaovien.Items.Add(item); } } -Viết mã lệnh cho sự kiện kích chuột vào nút thoát private void bt_thoat_Click(object sender, EventArgs e) { this.Close(); } Kết quả chạy chƣơng trình 127
  11. Tập bài giảng Thực hành kỹ thuật lập trình Hình 2. 3. Kết quả chạy chƣơng trình quản lý giáo viên tiểu học 2.1.3. Bài tập thực hành Bài 1 Viết chƣơng trình thực hiện các công việc sau: 1. Thiết kế Form nhƣ hình sau Hình 2. 4. Form quản lý bán xe mô tô Yêu cầu: - Nhãn quản lý bán xe mô tô: Font Time New Roman, cỡ chữ 16, chữ hoa, in đậm, căn giữa Form, màu đỏ. - Nhãn biển kiểm soát, hãng xe, chủ xe, năm đăng ký: Font Time New Roman, cỡ chữ 14, màu đen. - Các ô để nhập biển kiểm soát, chủ xe, năm đăng ký là các TextBox. - Điều khiển để chọn hãng xe là ComboBox. - Các điều khiển “Nhập”, ”Xe đăng ký tại Nam định”, “Xe đăng ký năm 2014”, “Xe quá hạn” là các Button. 128
  12. Tập bài giảng Thực hành kỹ thuật lập trình - Điều khiển để hiển thị thông tin chi tiết của xe là ListView và đƣợc đặt trong một GroupBox thông tin chi tiết. 2. Lập trình thực hiện các công việc: - Khai báo cấu trúc xe mô tô bao gồm các thành phần: + Các thuộc tính: biển kiểm soát, hãng xe, chủ xe, năm đăng ký. + Các hàm tạo không đối, có đối để khởi tạo đối tƣợng lớp xe máy. + Phƣơng thức kiểm tra xe quá hạn sử dụng (xe quá hạn là xe có số năm sử dụng tính đến năm kiểm tra vƣợt quá 15 năm). - Khi Load Form: + Các điều khiển ”Xe đăng ký tại Nam định”, “Xe đăng ký năm 2014”, “Xe quá hạn” vô hiệu hóa. + Điều khiển “Nhập” sáng cho phép hoạt động. - Khi ngƣời dùng kích vào nút “Nhập” + Các điều khiển ”Xe đăng ký tại Nam định”, “Xe đăng ký năm 2014”, “Xe quá hạn” sáng lên cho phép hoạt động. + Thực hiện kiểm tra sự hợp lệ của dữ liệu nhập vào (nhập đủ thông tin về một xe mô tô, nhập đúng biển kiểm soát (ví dụ biển kiểm soát hợp lệ: 18F83256), năm đăng ký là số và phải nhập đủ 4 số. Nếu dữ liệu nhập vào không hợp lệ thì đƣa ra hộp thoại thông báo và yêu cầu nhập lại. + Kiểm tra xem biển kiểm soát nhập vào đã có trong danh sách xe hay chƣa? Nếu trùng biển kiểm soát thì đƣa ra hộp thoại thông báo và cho phép nhập lại. Nếu không trùng thì thực hiện thêm thông tin xe mới đó vào danh sách xe, đồng thời hiển thị xe đó lên ListView thông tin chi tiết xe. + Sau khi thêm một xe mới vào danh sách xe thì reset lại các textbox. - Khi ngƣời dùng kích vào nút “Xe đăng ký tai Nam định ”: Hiển thị ra ListView thông tin chi tiết những xe đăng ký tại nam định (tức những xe có biển kiểm soát bắt đầu là 18). - Khi ngƣời dùng kích vào nút “Xe đăng ký năm 2014”: Hiển thị ra ListView thông tin chi tiết những xe có năm đăng ký là 2014. - Khi ngƣời dùng kích vào nút “Xe quá hạn”: Hiển thị ra ListView thông tin chi tiết những xe đã quá hạn sử dụng. Hướng dẫn thực hiện 1. Thiết kế Form nhƣ yêu cầu đề bài 2. Phân tích yêu cầu Theo yêu cầu của bài toán thì phải có một Form chứa: 129
  13. Tập bài giảng Thực hành kỹ thuật lập trình - Các đối tƣợng có nội dung “Quản lý bán xe mô tô”, “Biển kiểm soát”, ”Hãng xe”, “Chủ xe”, “Năm đăng ký” là các Label. - Đối tƣợng ô nhập biển kiểm soát, chủ xe, năm đăng ký là các Textbox. - Điều khiển để chọn hãng xe là ComboBox. - Điều khiển để hiển thị danh sách xe mô tô là ListView đƣợc đặt trong một GroupBox thông tin chi tiết. - Điều khiển nhập thông tin chi tiết là một GroupBox. - Các nút “Nhập”, ”Xe đăng ký tại Nam định”, “Xe đăng ký năm 2014”, “Xe quá hạn”là các Button. 3. Hƣớng dẫn thực hiện - Thiết kế Form theo mẫu và gắn các điều khiển + Kéo điều khiển Label từ cửa sổ Toolbox + Kích phải chuột vào Label chọn Properties và thiết lập các thuộc tính cho Label nhƣ sau: Text: QUẢN LÝ BÁN XE MÔ TÔ Font: Time New Roman Size: 16 Font style: Bold ForeColor: Red Thực hiện tƣơng tự với các nhãn biển kiểm soát, hãng xe, chủ xe, năm đăng ký. - Để tạo một GroupBox nhập thông tin theo yêu cầu cần thực hiện: + Kéo điều khiển GroupBox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào GroupBox chọn Properties và thiết lập các thuộc tính cho GroupBox nhƣ sau: Text: Nhập thông tin Font: Time New Roman Size: 14 ForeColor: Black Thực hiện tƣơng tự với GroupBox thông tin chi tiết - Để tạo điều khiển nhập biển kiểm soát theo yêu cầu cần thực hiện: + Kéo điểu khiển Textbox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào Textbox/Properties và thiết lập thuộc tính Name: txt_bienks. Thực hiện tƣơng tự với các điều khiển nhập chủ xe, năm đăng ký. - Để tạo điều khiển chọn hãng xe theo yêu cầu cần thực hiện: + Kéo điều khiển ComboBox từ cửa sổ Toolbox vào Form. + Kích phải chuột vào ComboBox /Properties và thiết lập các thuộc tính: 130
  14. Tập bài giảng Thực hành kỹ thuật lập trình Name: combo_hangxe Items/ Collection/ Gõ tên các hãng xe (ví dụ: Hondan, Yamaha, Suzuki,…) - Để tạo điều khiển “Nhập” theo yêu cầu cần thực hiện: + Kéo điều khiển Button từ cửa sổ Toolbox vào Form. + Kích phải chuột vào Button chọn Properties và thiết lập các thuộc tính Name: bt_nhap. Thực hiện tƣơng tự với điều khiển “Xe đăng ký tại Nam định” , “Xe đăng ký năm 2014”, “Xe quá hạn”. - Để tạo điều khiển liệt kê chi tiết các xe mô tô theo yêu cầu cần thực hiện: + Kéo điều khiển ListView từ cửa sổ Toolbox vào Form. + Kích phải chuột vào ListView chọn Properties và thiết lập các thuộc tính: Name: listview_chitiet Columns/ kích chuột vào Collection/ kích Add 4 lần và thiết lập thuộc tính Text cho các cột tƣơng ứng lần lƣợt là biển kiểm soát, hãng xe, chủ xe, năm đăng ký. View: Detail GridLine: true -Viết mã lệnh cho các sự kiện -Viết mã lệnh khai báo cấu trúc xe mô tô Public struct Moto { string _bienks; string _hangxe; string _chuxe; int _namdk; public string bienks { get { return _bienks; } set { _bienks = value; } } public string hangxe { get { return _hangxe; } set { _hangxe = value; } } public string chuxe { get { return _chuxe; } set { _chuxe = value; } } public int namdk 131
  15. Tập bài giảng Thực hành kỹ thuật lập trình { get { return _namdk; } set { _namdk = value; } } public Moto(string bienks, string hangxe, string chuxe, int namdk) { _bienks = bienks; _hangxe = hangxe; _chuxe = chuxe; _namdk = namdk; } public bool qua_han_sd() { if (DateTime.Now.Year - namdk > 15) return true; else return false; } } -Viết mã lệnh khai báo mảng cấu trúc xe mô tô và biến nguyên n Moto[] A = new Moto[100]; int n = 0; -Viết mã lệnh cho hàm vô hiệu hóa các nút void vohieuhoa(bool gt) { bt_dk2014.Enabled = gt; bt_dknamdinh.Enabled = gt; bt_quahan.Enabled = gt; } -Viết mã lệnh cho sự kiện Load Form private void Form1_Load(object sender, EventArgs e) { vohieuhoa(false); txt_bienks.Focus(); } -Viết mã lệnh cho hàm kiểm tra xâu rỗng bool kiemtra(string s) { if (string.IsNullOrWhiteSpace(s)) return true; else return false; } -Viết mã lệnh cho hàm kiểm tra dữ liệu nhập vào bool kiemtra() { int nam; if (kiemtra(txt_bienks.Text)||kiemtra( txt_chuxe.Text)||kiemtra(combo_hangxe.Text)||kiemtra(txt_namđk.Text)) return false; 132
  16. Tập bài giảng Thực hành kỹ thuật lập trình if (txt_namđk.Text.Length < 4 || txt_namđk.Text.Length > 4) return false; if (!int.TryParse(txt_namđk.Text, out nam)) return false; return true; } -Viết mã lệnh cho hàm lại các textbox void reset() { txt_bienks.ResetText(); txt_chuxe.ResetText(); combo_hangxe.Text = ""; txt_namđk.Text = ""; } -Viết mã lệnh cho hàm kiểm tra biển kiểm soát hợp lệ bool kt_bienso(string s) { if (s.Length < 8 || s.Length > 9) return false; if ((s[0] >= '0' && s[0] = '0' && s[1] ='a'&&s[2]='A'&&s[2]
  17. Tập bài giảng Thực hành kỹ thuật lập trình if (i == n) { A[n] = X; n++; reset(); } Dua_dulieu_listview(A, n); reset(); txt_bienks.Focus(); } else { MessageBox.Show("Nhập sai biển số xe", "Thông báo");} } else { MessageBox.Show("Dữ liệu chƣa hợp lệ", "Thông báo"); return; } } -Viết mã lệnh cho hàm đƣa dữ liệu vào listview private void Dua_dulieu_listview( Moto [] A, int n) { list_chitiet.Items.Clear(); for (int i = 0; i < n;i++) { ListViewItem item = new ListViewItem(); item.Text = A[i].bienks; item.SubItems.Add(A[i].hangxe); item.SubItems.Add(A[i].chuxe); item.SubItems.Add(A[i].namdk.ToString()); list_chitiet.Items.Add(item); } } -Viết mã lệnh cho sự kiện kích chuột vào nút xe đăng ký tại Nam định private void bt_dknamdinh_Click(object sender, EventArgs e) { Moto[] b = new Moto[100]; int i, m = 0; for(i=0;i
  18. Tập bài giảng Thực hành kỹ thuật lập trình private void bt_quahan_Click(object sender, EventArgs e) { Moto[] b = new Moto[100]; int i, m = 0; for (i = 0; i < n; i++) if (A[i].qua_han_sd()) { Moto x = new Moto(A[i].bienks, A[i].hangxe, A[i].chuxe, A[i].namdk); b[m] = x; m++; } Dua_dulieu_listview(b, m); } Kết quả chạy chƣơng trình Hình 2. 5. Kết quả chạy chƣơng trình quản lý bán xe mô tô Bài 2 1. Thiết kế Form nhƣ hình sau: Hình 2. 6. Form danh sách sinh viên 135
  19. Tập bài giảng Thực hành kỹ thuật lập trình Yêu cầu: - Nhãn danh sách sinh viên: Microsoft Sans Serif, cỡ chữ 16, chữ hoa, in đậm, căn giữa Form, màu xanh. - Nhãn mã sinh viên, họ tên sinh viên, năm sinh, điểm nhập môn tin học, điểm toán rời rạc: Font Time New Roman, cỡ chữ 14, màu đen. - Các ô để nhập mã sinh viên, họ tên sinh viên, năm sinh, điểm nhập môn tin học, điểm toán rời rạc là các TextBox. - Các điều khiển “Nhập”, ”DS sinh viên lên lớp”, “Sửa”, “Xóa”, ”Sinh viên có tổng điểm lớn nhất” là các Button. - Điều khiển thông tin chi tiết sinh viên là GroupBox - Điều khiển để hiển thị danh sách sinh viên là ListView. 2. Lập trình thực hiện các công việc: - Khai báo cấu trúc sinh viên gồm các thành phần: + Các thuộc tính: Mã sinh viên, tên sinh viên, năm sinh, điểm nhập môn tin học, điểm toán rời rạc. + Các phƣơng thức: hàm tạo không đối, hàm tạo có đối để khởi tạo một đối tƣợng, phƣơng thức xét lên lớp (sinh viên đƣợc lên lớp nếu không có điểm môn nào dƣới 5). - Khi Load Form: + Các điều khiển ”DS sinh viên lên lớp”, “Sửa”, “Xóa”, ”Sinh viên có tổng điểm lớn nhất” vô hiệu hóa. + Điều khiển “Nhập” sáng cho phép hoạt động. - Khi ngƣời dùng kích vào nút “Nhập”: + Các điều khiển ”DS sinh viên lên lớp”, “Sửa”, “Xóa”, ”Sinh viên có tổng điểm lớn nhất” sáng lên cho phép hoạt động. + Thực hiện kiểm tra sự hợp lệ của dữ liệu nhập vào (nhập đủ thông tin về một sinh viên, năm sinh nhập vào phải là số và phải nhập đủ 4 số, điểm môn toán rời rạc, điểm nhập môn tin học phải là số). Nếu dữ liệu nhập vào không hợp lệ thì đƣa ra hộp thoại thông báo và yêu cầu nhập lại. + Kiểm tra xem mã sinh viên đã có trong danh sách hay chƣa? Nếu trùng mã sinh viên thì đƣa ra hộp thoại thông báo và cho phép nhập lại. Nếu không trùng thì thực hiện thêm sinh viên mới vào danh sách sinh viên + Sau khi thêm một nhân viên mới vào danh sách thì reset lại các textbox. + Hiển thị danh sách sinh viên lên ListView sinh viên. - Khi ngƣời dùng kích vào nút “Xóa”: + Kiểm tra xem ngƣời dùng đã chọn sinh viên cần xóa trên ListView sinh viên hay chƣa? Nếu chƣa chọn thì đƣa ra hộp thoại thông báo yêu cầu chọn lại, đồng thời 136
  20. Tập bài giảng Thực hành kỹ thuật lập trình thông. Ngƣợc lại thông tin về sinh viên đƣợc chọn sẽ hiển thị lên các Textbox tƣơng ứng. + Khi ngƣời dùng kích chọn vào nút “Xóa” thì hiện lên hộp thoại có 2 nút Yes/No. Nếu ngƣời dùng chọn Yes thì thực hiện xóa sinh viên ra khỏi danh sách và cập nhật lại danh sách sinh viên lên ListView sinh viên đồng thời reset lại các textbox trong groupbox nhập thông tin sinh viên. Nếu ngƣời dùng chọn No thì không thực hiện xóa. - Khi ngƣời dùng kích vào nút “Sửa”: + Kiểm tra xem ngƣời dùng đã chọn sinh viên cần xóa trên ListView sinh viên hay chƣa? Nếu chƣa chọn thì đƣa ra hộp thoại thông báo yêu cầu chọn lại, đồng thời thông. Ngƣợc lại thông tin về sinh viên đƣợc chọn sẽ hiển thị lên các Textbox tƣơng ứng. + Nếu Text của điều khiển này là “Sửa” thì đối tƣợng ô để nhập mã sinh viên vô hiệu hóa (không sửa mã), thực hiện đổi lại Text của điều khiển này là “Cập nhật” và đặt con trỏ vào ô nhập họ tên sinh viên. + Nếu Text của điều khiển này là “Cập nhật”: Kiểm tra xem dữ liệu sau khi sửa có hợp lệ hay không? Nếu chƣa hợp lệ thì hiện lên hộp thoại thông báo, cho phép sửa lại và Text của điều khiển này vẫn là “Cập nhật”. Nếu dữ liệu sau khi sửa hợp lệ thì: * Text của điều khiển này đổi thành “Sửa” * Textbox để nhập mã sinh viên sáng lên cho phép hoạt động. * Thực hiện cập nhật lại thông tin của sinh viên có mã trùng với mã sinh viên lựa chọn để sửa. * Cập nhập danh sách sinh viên sau khi sửa lên ListView sinh viên. - Khi ngƣời dùng kích vào nút “Danh sách sinh viên lên lớp”:Hiển thị lên ListView danh sách sinh viên những sinh viên đủ điều kiện lên lớp. - Khi ngƣời dùng kích vào nút “Sinh viên có tổng điểm lớn nhất”: Hiển thị lên ListView danh sách sinh viên những sinh viên có tổng điểm môn toán rời rạc và môn nhập môn tin học lớn nhất. Hướng dẫn thực hiện 1. Thiết kế Form nhƣ yêu cầu đề bài 2. Phân tích yêu cầu Theo yêu cầu của bài toán thì phải có một Form chứa: - Các đối tƣợng có nội dung “Danh sách sinh viên”, “Mã sinh viên”, ”Họ tên SV”, ”Năm sinh”, “Điểm nhập môn tin học”, “Điểm toán rời rạc” là các Label. - Đối tƣợng ô nhập mã sinh viên, họ tên sinh viên, năm sinh, điểm nhập môn tin học, điểm môn toán rời rạc là các Textbox. 137
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD


ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)

 

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