1. Trang chủ
  2. » Tất cả

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

180 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 180
Dung lượng 1,8 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ị”:

Trang 1

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ế

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ố

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

Trang 2

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

- 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

Trang 3

- Đ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”

Trang 4

* 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

Trang 5

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

Trang 6

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

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; }

Trang 7

}

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) {

-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)

Trang 8

if (string.IsNullOrWhiteSpace(s)) return true;

else return false;

-Viết mã lệnh cho sự kiện kích chuột vào nút thêm

private void bt_them_Click(object sender, EventArgs e)

for (i= 0; i < n; i++)

if (A[i].maGV == txt_magv.Text) { MessageBox.Show("Trùng

mã giáo viên", "Thông báo"); txt_magv.Focus(); break; }

if (i == n) { A[n] = X; n++; Reset(); }

}

}

-Viết mã lệnh cho sự kiện SelectedIndexChanged của Listview danh sách giáo viên

private void listview_giaovien_SelectedIndexChanged(object sender,

Trang 9

-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)

-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)

Trang 10

A[i].mon_gday = combo_mongd.Text;

if (radio_nam.Checked) A[i].gioitinh = false;

else A[i].gioitinh = true;

-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()

-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)

Trang 11

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ô

- 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

Trang 12

- Đ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:

Trang 13

- 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:

Trang 14

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

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

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

Trang 15

{

get { return _namdk; }

set { _namdk = value; }

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

-Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

if (string.IsNullOrWhiteSpace(s)) return true;

else return false;

Trang 16

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;

if (s.Length < 8 || s.Length > 9) return false;

if ((s[0] >= '0' && s[0] <= '9') && (s[1] >= '0' && s[1] <= '9')) if((s[2]>='a'&&s[2]<='z') || (s[2]>='A'&&s[2]<='Z'))

-Viết mã lệnh cho sự kiện kích chuột vào nút nhập

private void bt_nhap_Click(object sender, EventArgs e)

Trang 17

-Viết mã lệnh cho hàm đƣa dữ liệu vào listview

private void Dua_dulieu_listview( Moto [] A, int n)

-Viết mã lệnh cho sự kiện kích chuột vào nút xe đăng ký năm 2014

private void bt_dk2014_Click(object sender, EventArgs e)

Trang 18

private void bt_quahan_Click(object sender, EventArgs e)

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

Trang 19

- Đ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

Trang 20

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

Trang 21

- Điều khiển để hiển thị danh sách sinh viên là ListView được đặt trong một GroupBox thông tin chi tiết sinh viên

- Đối tượng nhập thông tin sinh viên là GroupBox

- Các nút “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

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

- Để tạo điểu khiển DANH SÁCH SINH VIÊN theo yêu cầu cần thực hiệ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 SINH VIÊN Font: Microsoft Sans Serif

Size: 16 Font style: Bold ForeColor: Blue Thực hiện tương tự với các nhãn họ tên SV, mã sinh viên, năm sinh, điểm nhập môn tin học, điểm toán rời rạc

- Để tạo một GroupBox thông tin chi tiết sinh 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 sinh viên

Font: Time New Roman Size: 14

ForeColor: Black Thực hiện tương tự với GroupBox nhập thông tin sinh viên

- Để tạo điều khiển nhập mã sinh 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_masv

Thực hiện tương tự với các điều khiển nhập họ tên SV, năm sinh, điểm toán rời rạc, điểm nhập môn tin học

- Để 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_nhập

Trang 22

Thực hiện tương tự với đ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”

- Để tạo điều khiển liệt kê danh sách sinh 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_sinhvien

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ã sinh viên, họ và tên, năm sinh, điểm nhập môn tin học, điểm toán rời rạc

View: Detail

GridLine: true

Kết quả thiết kế Form

Hình 2 7 Kết quả thiết kế Form quản lý sinh viên

Viết mã lệnh cho các công việc

- Viết mã lệnh khai báo cấu trúc sinh viên

get { return _masv; }

set { _masv = value; }

}

public string Tensv

Trang 23

{

get { return _tensv; }

set { _tensv = value; }

}

public int Namsinh

{

get { return _namsinh; }

set { _namsinh = value; }

}

public double NMTH

{

get { return _diemnmth; }

set { _diemnmth = value; }

}

public double TRR

{

get { return _diemtrr; }

set { _diemtrr = value; }

if (_diemtrr > 5 && _diemnmth > 5) return true;

else return false;

- Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

{

vohieuhoa(false);

Trang 24

if (string.IsNullOrWhiteSpace(s)) return true;

else return false;

if (txt_namsinh.Text.Length < 4 || txt_namsinh.Text.Length > 4) return false;

if (!int.TryParse(txt_namsinh.Text, out nam)) return false;

if (!double.TryParse(txt_diemNMTH.Text, out diem)) return false;

if (diem < 0 || diem > 10) return false;

if (!double.TryParse(txt_diemTRR.Text, out diem)) return false;

if (diem < 0 || diem > 10) return false;

- Viết mã lệnh cho hàm đƣa dữ liệu vào Listview sinh viên

private void Dua_dulieu_listview()

- Viết mã lệnh cho hàm thêm một hàng vào ListView danh sách sinh viên

private void them_mothang_listview(SV x)

{

Trang 25

ListViewItem item = new ListViewItem();

- Viết mã lệnh cho sự kiện kích chuột vào nút nhập

private void bt_nhap_Click(object sender, EventArgs e)

- Viết mã lệnh cho sự kiện kích chuột vào nút danh sách sinh viên lên lớp

private void bt_dslenlop_Click(object sender, EventArgs e)

- Viết mã lệnh cho sự kiện kích chọn phần tử trên ListView

private void list_sinhvien_SelectedIndexChanged(object sender, EventArgs e) {

Trang 26

- 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)

- 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,"Cập nhật")==0) // cap nhat

if (kiemtra_dulieu())

{

bt_sua.Text="Sửa"; txt_masv.Enabled=true;

for (int i = 0; i < n;i++ )

Trang 27

for (int i = 0; i < n;i++ )

if (A[i].NMTH + A[i].TRR > max) max = A[i].NMTH + A[i].TRR; for (int i = 0; i < n;i++ )

if ((A[i].TRR + A[i].NMTH) == max)

Trang 28

- Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

{

vohieuhoa(false);

txt_masv.Focus();

}

Kết quả chạy chương trình

Hình 2 8 Kết quả chạy chương trình quản lý sinh viên

Bài 3

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 9 Chương trình quản lý lương nhân viên

Yêu cầu:

- Nhãn quản lý nhân viên: Font Time New Roman, cỡ chữ 16, chữ hoa, in đậm, căn giữa Form, màu xanh

Trang 29

- Nhãn mã nhân viên, họ tên, quê quán, hệ số lương, lương cơ bản: Font Time New Roman, cỡ chữ 14, màu đen

- Các ô để nhập mã nhân viên, họ tên, quê quán, hệ số lương, lương cơ bản là các TextBox

- Các điều khiển “Thêm” ,” Hiển thị”, “NV lương Max”, “Sắp xếp”, “Sửa”,

“Xóa”, “Tìm kiếm”, “Thoát” là các Button

- Điều khiển thông tin chi tiết nhân viên, danh sách nhân viên là GroupBox

- Điều khiển để hiển thị danh sách nhân viên là ListView

2 Lập trình cho các công việc sau:

- Khai báo cấu trúc nhân viên gồm các thuộc tính: Họ tên, quê quán, hệ số lương, lương cơ bản Các phương thức: hàm tạo có đối, phương thức hiển thị, tính lương

- Khi Load Form:

+ Các textbox vô hiệu hóa

+ Các button vô hiệu hóa ( nút “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 button sáng lên cho phép hoạt động

+ Kiểm tra nếu thuộc tính Text của nút là “Thêm” thì: Các textbox sáng lên cho phép hoạt động, con trỏ đặt tại textbox mã nhân viên, đồng thời thuộc tính Text của nút thành “Lưu”

+ Nếu thuộc tính Text của nút là “Lưu” thì:

* Kiểm tra xem người dùng đã nhập đủ thông tin của một nhân viên chưa? Nếu chưa thì hiển thị hộp thoại thông báo và yêu cầu nhập đủ, thuộc tính Text của nút vẫn là “Lưu” Ngược lại kiểm tra xem dữ liệu nhập vào có hợp lệ hay không (hệ số lương và lương cơ bản phải là số) Nếu dữ liệu nhập vào không hợp lệ thì hiện lên hộp thoại thông báo và cho phép nhập lại, thuộc tính Text của nút vẫn là “Lưu”

* Nếu dữ liệu nhập vào đủ và hợp lệ thì thực hiện kiểm tra xem mã nhân viên mới có trong danh sách hay chưa? Nếu mã đã có trong nhân viên thì thông báo trùng mã cho phép nhập lại mã Ngược lại thì thực hiện thêm mã nhân viên vào danh sách, thuộc tính Text của nút đổi thành “Thêm”, reset lại các textbox và vô hiệu hóa các textbox này

- Khi người dùng kích vào nút “Hiển thị”: Hiển thị danh sách nhân viên ra ListView nhân viên

- Khi người dùng kích vào nút “NV lương max”: Đưa ra ListView những nhân viên có lương lớn nhất

- Khi người dùng kích vào nút “Sắp xếp”: Thực hiện sắp xếp danh sách nhân viên theo lương giảm dần, hiển thị danh sách sau khi sắp xếp ra ListView

Trang 30

- Khi người dùng kích vào nút “Sửa”:

+ Kiểm tra xem người dùng đã chọn nhân viên cần xóa trên ListView chưa? Nếu chưa thì hiển thị hộp thoại thông báo Ngược lại hiển thị thông tin chi tiết của nhân viên được chọn lên các textbox tương ứng

+ Nếu thuộc tính text của nút là “Sửa ”: các textbox sáng lên cho phép hoạt động, text nhập mã sinh viên vô hiệu hóa và thiết lập lại thuộc tính text của nút này là “Cập nhật”

+ Nếu thuộc tính text của nút là “Cập nhật”: Kiểm tra xem dữ liệu nhập vào có hợp lệ không (hệ số lương và lương cơ bản phải là số) Nếu dữ liệu không hợp

lệ thì hiện lên hộp thoại thông báo và cho phép nhập lại, thuộc tính text của nút vẫn là

“Cập nhật” Nếu dữ liệu nhập vào hợp lệ thì thực hiện cập nhật lại thông tin của nhân viên sau khi sửa, hiển thị lại dữ liệu sau khi sửa lên ListView và thiết lập lại thuộc tính text của nút thành “Sửa”, vô hiệu hóa và reset lại các textbox

- Khi người dùng kích vào nút “Xóa”:

+ Kiểm tra xem người dùng đã chọn nhân viên cần xóa trên ListView chưa? Nếu chưa thì hiển thị hộp thoại thông báo Ngược lại hiển thị thông tin chi tiết của nhân viên được chọn lên các textbox tương ứng

+ Hiện lên hộp thoại có hai lựa chọn Yes/No để hỏi người dùng có muốn xóa nhân viên đang chọn trên ListView hay không? Nếu chọn Yes thì thực hiện xóa nhân viên đó ra khỏi danh sách và cập nhật lại danh sách sau khi xóa lên ListView, reset lại các textbox Nếu người dùng chọn No thì không xóa nhân viên đó

- Khi người dùng kích vào nút “Tìm kiếm”: Hiện lên hộp thoại cho phép người dùng nhập vào mã nhân viên cần tìm kiếm, kết quả tìm kiếm hiển thị lên ListView nhân viên, nếu không có thì hiện lên hộp thoại thông báo tìm kiếm không thành công

- Khi người dùng kích vào nút “Thoát”: thực hiện kết thúc chương trình

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 “Chương trình quản lý lương nhân viên”, “Mã nhân viên”, ”Họ tên”, ”Quê quán”, “Hệ số lương”, “Lương cơ bản” là các Label

- Đối tượng ô nhập mã nhân viên, họ tên, quê quán, hệ số lương, lương cơ bản

Trang 31

- Các nút “Thêm”, ”Hiển thị”, “NV lương Max”, “Sắp xếp”, ”Sửa”, “Xóa”,

“Tìm kiếm”, ”Thoát” là các Button

3 Hướng dẫn thực hiện

Như vậy, để thực hiện công việc thiết kế Form như yêu cầu bài toán, người lập trình thực hiện các bước sau:

Bước 1 Mở C#

Bước 2 Tạo Form mới

Trên thanh menu, chọn File/New/Project.Trên màn hình xuất hiện cửa sổ New Project, chọn ứng dụng Windows Form Appication, sau đó nhập tên của Project vào ô Name, kích vào Browse để chọn thư mục lưu trữ Project, sau đó chọn OK

Bước 3 Thiết kế Form theo mẫu và gắn các điều khiển

- Để tạo điểu khiển quản lý lương nhân viên theo yêu cầu cần thực hiệ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Ý LƯƠNG NHÂN 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ã nhân viên, quê quán, hệ số lương, lương cơ bản

- Để tạo một GroupBox thông tin chi tiết nhân 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 nhân viên Font: Time New Roman

Size: 14 ForeColor: Black Thực hiện tương tự với GroupBox nhập thông tin nhân viên

- Để tạo điều khiển nhập mã nhân 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_manv

Thực hiện tương tự với các điều khiển nhập họ tên, quê quán, hệ số lương, lương cơ bản

Trang 32

- Để 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 ”Hiển thị”, “NV lương Max”, “Sắp xếp”,

“Sửa”, “Xóa”, “Tìm kiếm”, “Thoát”

- Để tạo điều khiển liệt kê danh sách nhân 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_nhanvien Columns/ kích chuột vào Collection/ kích Add 6 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ã nhân viên, họ tên, quê quán, hệ số lương, lương cơ bản, lương

View: Detail GridLine: true Bước 4 Kết quả thiết kế Form

Hình 2 10 Kết quả thiết kế Form quản lý lương nhân viên

Bước 5 Viết mã lệnh thực hiện các công việc

- Viết mã lệnh khai báo cấu trúc nhân viên

Trang 33

set { _manv = value; }

}

public string hoten

{

get { return _hoten; }

set { _hoten = value; }

}

public string quequan

{

get { return _quequan; }

set { _quequan = value; }

}

public double hesoluong

{

get { return _hesoluong; }

set { _hesoluong = value; }

}

public double luongcb

{

get { return _luongcb; }

set { _luongcb = value; }

Trang 34

- Viết mã lệnh cho hàm vô hiệu hóa các nút

- Viết mã lệnh cho sự kiện Load Form

private void Form1_Load(object sender, EventArgs e)

if (!double.TryParse(txt_hsl.Text, out x) || x <= 0) return false;

if (!double.TryParse(txt_luongCB.Text, out x) || x <= 0) return false; return true;

}

Trang 35

- 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 sự kiện kích chuột vào nút thêm

private void bt_them_Click(object sender, EventArgs e)

- Viết mã lệnh cho hàm đƣa dữ liệu vào ListView

private void Dua_DL_listview(NV [] A, int n)

- 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)

{

Trang 36

Dua_DL_listview(A,n);

}

- Viết mã lệnh cho sự kiện kích chuột vào nút lương lớn nhất

private void bt_luongMax_Click(object sender, EventArgs e)

- Viết mã lệnh cho sự kiện kích chuột vào nút sắp xếp

private void bt_sapxep_Click(object sender, EventArgs e)

- 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)

Trang 37

- Viết mã lệnh cho sự kiện chọn phần tử trên ListView

private void listview_nhanvien_SelectedIndexChanged(object sender,

} catch { MessageBox.Show("Bạn chƣa chọn phần tử để xóa"); }

}

- 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)

- 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)

Trang 38

private void bt_timkiem_Click(object sender, EventArgs e)

{

string ma;

ma= Microsoft.VisualBasic.Interaction.InputBox("Nhập mã tìm kiếm","Tìm kiếm");

int i = 0;

while (i < n && string.Compare(A[i].manv, ma) != 0) i++;

if (i == n) { MessageBox.Show("Không có mã này", "Kết quả tìm kiểm"); listview_nhanvien.Items.Clear(); }

Bước 6 Kết quả chạy chương trình

Hình 2 11.Kết quả chạy chương trình quản lý lương nhân viên

Trang 39

2.1.4 Bài tập về nhà

Bài 1

Giả sử với mỗi thí sinh ta quan tâm tới các thông tin: Số báo danh, họ và tên, hộ khẩu thường trú, điểm toán, điểm lý, điểm hóa Viết chương trìnhcho phép thực hiện các công việc sau:

a) Tạo danh sách thí sinh

b) Hiển thị danh sách thí sinh ra lưới

c) Sửa thông tin của một thí sinh

d) Xóa thông tin về một thí sinh khỏi danh sách

e) Hiển thị thông tin về thí sinh khi biết số báo danh của thí sinh đó

f) Sắp xếp danh thí sinh theo tổng 3 môn tăng dần Hiển thị lên lưới danh sách vừa sắp xếp

g) Nhập vào điểm chuẩn, đưa ra những thí sinh trượt (những thí sinh có tổng 3 môn nhỏ hơn điểm chuẩn)

Bài 2

Giả sử với mỗi học sinh ta quan tâm tới các thông tin: Họ và tên, quê quán, năm sinh, điểm tổng kết Viết chương trìnhcho phép thực hiện các công việc sau:

a) Tạo danh sách học sinh

b) Hiển thị danh sách học sinh ra lưới

c) Sửa thông tin của một học sinh

d) Xóa thông tin về một học sinh ra khỏi danh sách

e) Đưa ra những học sinh có quê quán ở “Nam Định”

f) Đưa ra những học sinh có điểm tổng kết lớn nhất

Bài 3

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 12 Form lớp sinh viên công nghệ thông tin

2 Lập trình thực hiện các công việc:

Trang 40

Khai báo cấu trúc sinh viên khoa công nghệ thông tin 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 cấu trúc, điểm cơ

sở dữ liệu, điểm mạng máy tính

- Các phương thức: hàm tạo có đối để khởi tạo một đối tượng, phương thức hiển thị, phương thức tính điểm trung bình (điểm trung bình = (điểm cấu trúc dữ liệu + điểm cơ sở dữ liệu + điểm mạng máy tính)/3)

- Khi người dùng kích vào nút ”Nhập” thực hiện bổ sung sinh viên công nghệ thông tin vào danh sách

- Khi người dùng kích vào nút “Hiển thị” thực hiện hiển thị danh sách sinh viên công nghệ thông lên Listview

- Khi người dùng kích vào nút “SV có ĐTB lớn nhất” thực hiện đưa ra danh sách những sinh viên có điểm trung bình cộng lớn nhất lên Listview

- Khi người dùng kích vào nút “Sắp xếp theo TBC tăng dần” thực hiện sắp xếp danh sách sinh viên công nghệ thông tin theo điểm trung bình cộng tăng dần, kết quả

hiển thị lên Listview

Ngày đăng: 06/05/2021, 18:29

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm