- Viết mã lệnh cho hàm hiển thị dữ liệu ra listview
private void Dua_DL_listview(NV [] A, int n)
{
listview_nhanvien.Items.Clear(); for (int i = 0; i < n; i++)
{
ListViewItem item = new ListViewItem(); item.Text = A[i].manv; item.SubItems.Add(A[i].hoten); item.SubItems.Add(A[i].quequan); item.SubItems.Add(A[i].hesoluong.ToString()); item.SubItems.Add(A[i].luongcb.ToString()); item.SubItems.Add(A[i].Tinhluong().ToString()); listview_nhanvien.Items.Add(item);
}
}
Có thể bạn quan tâm!
- Thực hành kỹ thuật lập trình - 22
- Kết Quả Thiết Kế Form Quản Lý Giáo Viên
- Kết Quả Thiết Kế Form Quản Lý Lương Nhân Viên
- Thực hành kỹ thuật lập trình - 26
- Kết Quả Chạy Chương Trình Sinh Viên Khoa Cơ Khí
- Form Tìm Kiếm Thông Tin Khách Hàng
Xem toàn bộ 312 trang tài liệu này.
- Viết mã lệnh cho sự kiện kích chuột vào nút đọc tệp
private void bt_doctep_Click(object sender, EventArgs e)
{
Motep_doc(ref A, ref n); 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)
{
Motep_doc(ref A, ref n); double max; int i;
NV [] B= new NV[100]; int cs=0; max = A[0].Tinhluong();
for (i = 1; i < n; i++)
if (A[i].Tinhluong() > max) max = A[i].Tinhluong(); for(i=0;i<n;i++)
if (A[i].Tinhluong() == max)
{
B[cs]= A[i]; cs++;
}
Dua_DL_listview(B, cs);
}
- 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)
{
Motep_doc(ref A, ref n); NV tg;
for(int i=0;i<n-1;i++) for(int j=i+1; j<n;j++)
if (A[i].Tinhluong() < A[j].Tinhluong())
{
tg = A[i];
A[i] = A[j];
A[j] = tg;
}
Motep_ghi(A, n); Motep_doc(ref A, ref n); Dua_DL_listview(A, 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)
{
Motep_doc(ref A, ref n);
if (string.Compare(bt_sua.Text, "Sửa") == 0)
{
vohieuhoa2(true); txt_maNV.Enabled = false; txt_hoten.Focus(); bt_sua.Text = "Cập nhật";
}
else if (kiemtra_du_lieu())
{
for(int i=0;i<n;i++)
if (string.Compare(A[i].manv, txt_maNV.Text) == 0)
{
NV X = new NV(txt_maNV.Text, txt_hoten.Text, txt_quequan.Text, double.Parse(txt_hsl.Text), double.Parse(txt_luongCB.Text));
A[i] = X;
break;
}
Motep_ghi(A, n); Motep_doc(ref A, ref n);
Dua_DL_listview(A, n); bt_sua.Text = "Sửa"; vohieuhoa2(false);
reset();
}
else { MessageBox.Show("Dữ liệu sửa không hợp lệ"); bt_sua.Text = "Cập nhật"; }
}
- Viết mã lệnh cho sự kiện chọn phần tử trên Listview
private void listview_nhanvien_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
for (int i = 0; i < listview_nhanvien.SelectedItems.Count; i++)
{
txt_maNV.Text = listview_nhanvien.SelectedItems[i].SubItems[0].Text;
txt_hoten.Text = listview_nhanvien.SelectedItems[i].SubItems[1].Text;
txt_quequan.Text = listview_nhanvien.SelectedItems[i].SubItems[2].Text;
txt_hsl.Text = listview_nhanvien.SelectedItems[i].SubItems[3].Text;
txt_luongCB.Text = listview_nhanvien.SelectedItems[i].SubItems[4].Text;
}
} 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)
{
if (MessageBox.Show("Bạn có muốn xóa không?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Motep_doc(ref A, ref n);
for (int i = 0; i < listview_nhanvien.SelectedItems.Count; i++) for (int j = 0; j < n; j++)
if (string.Compare(A[j].manv, listview_nhanvien.SelectedItems[i].SubItems[0].Text) == 0)
{
for (int k = j; k < n - 1; k++) A[k] = A[k + 1]; n--;
break;
}
Motep_ghi(A, n); Motep_doc(ref A, ref n); listview_nhanvien.Items.Clear(); Dua_DL_listview(A, n);
reset();
}
}
- 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();
}
- Viết mã lệnh cho sự kiện kích chuột vào nút tìm kiếm
private void bt_timkiem_Click(object sender, EventArgs e)
{
string ma; Motep_doc(ref A, ref n);
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();
}
else
{
listview_nhanvien.Items.Clear(); ListViewItem item = new ListViewItem(); item.Text = A[i].manv; item.SubItems.Add(A[i].hoten); item.SubItems.Add(A[i].quequan);
item.SubItems.Add(A[i].hesoluong.ToString()); item.SubItems.Add(A[i].luongcb.ToString()); item.SubItems.Add(A[i].Tinhluong().ToString()); listview_nhanvien.Items.Add(item);
}
}
Kết quả chạy chương trình
Hình 2. 20. Kết quả chạy chương trình quản lý lương nhân 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. 21. Chương trình quản lý lương nhân viên
Yêu cầu:
- Nhãn Sinh viên khoa cơ khí: Font Time New Roman, cỡ chữ 16, chữ hoa, in đậm, căn giữa Form, màu đỏ.
- Nhãn mã sinh viên, tên sinh viên, năm sinh, điểm vẽ kỹ thuật, điểm CNC: Font Time New Roman, cỡ chữ 14, màu đen.
- Các ô để nhập mã sinh viên, tên sinh viên, năm sinh, điểm vẽ kỹ thuật, điểm CNC là các TextBox.
- Các điều khiển “Thêm” ,” Hiển thị”, “Danh sách sinh viên trượt”, “Sửa”, “Xóa”, “Tìm kiếm”, “Thoát” là các Button.
- Điều khiển thông tin chi tiết sinh viên khoa cơ khí, danh sách sinh viên là các GroupBox.
- Điều khiển để hiển thị danh sách sinh viên là ListView.
2. Lập trình cho các công việc sau:
- Khai báo cấu trúc sinh viên gồm các thuộc tính: Mã sinh viên, họ tên, quê quán, năm sinh. Các phương thức: hàm tạo có đối, phương thức hiển thị.
- Khai báo cấu trúc sinh viên Khoa cơ khí có đầy đủ các thông tin của một sinh viên, ngoài ra bổ sung thêm thuộc tính là điểm vẽ kỹ thuật và điểm CNC Các phương thức: Hàm tạo có tham số, phương thức hiển thị và tính điểm trung bình
- Danh sách sinh viên Khoa cơ khí được lưu trong tệp “SVCK.data”;
- Khi Load Form: Các textbox vô hiệu hóa.
- Khi người dùng kích vào nút “Thêm”:
+ Đọc dữ liệu trong tệp “SVCK.data”.
+ 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ã sinh 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 sinh 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 (năm sinh là số và phải nhập đủ 4 số, điểm vẽ kỹ thuật và điểm CNC 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ã sinh viên mới có trong danh sách hay chưa? Nếu mã đã có trong danh sách sinh viên khoa cơ khí 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ã sinh viên vào danh sách, ghi dữ liệu vào tệp “SVCK.data”, thuộc tính Text của nút đổi thành “Thêm”, các textbox để trống 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ị”: thực hiện đọc danh sách sinh viên Khoa cơ khí trong tệp “SVCK.data” và hiển thị ra ListView sinh viên.
- Khi người dùng kích vào nút “Danh sách sinh viên trượt”: đọc tệp “ SVCK.data”, tìm những nhân viên có điểm trung bình hai môn nhỏ hơn 5 và đưa ra ListView.
- Khi người dùng kích vào nút “Sửa”:
+ Đọc tệp “ SVCK.data”.
+ Kiểm tra xem người dùng đã chọn sinh 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 sinh 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. 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 sinh 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”:
+ Đọc tệp “ SVCK.data
+ 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 sinh viên được chọn trên ListView hay không? Nếu 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 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 sinh viên đó.
- 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 “Sinh viên khoa cơ khí”, “Mã sinh viên”, ”Tên sinh viên”, ”Năm sinh”, “Điểm vẽ kỹ thuật”, “Điểm CNC” là các Label.
- Đối tượng ô nhập mã sinh viên, tên sinh viên, năm sinh, điểm vẽ kỹ thuật, điểm CNC là các Textbox.
- Đ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 thông tin chi tiết sinhn viên khoa cơ khí là GroupBox.
- Các nút “Thêm”, “Hiển thị”, “Danh sách sinh viên trượt” , ”Sửa”, “Xóa”, ”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:
Thiết kế Form theo mẫu và gắn các điều khiển
- Để tạo điểu khiển Sinh viên khoa cơ khí 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: SINH VIÊN KHOA CƠ KHÍ
Font: Time New Roman Size: 16
Font style: Bold ForeColor: Red
Thực hiện tương tự với các nhãn Tên sinh viên, Mã sinh viên, Năm sinh, Điểm vẽ kỹ thuật, Điểm CNC.
- Để tạo một GroupBox thông tin chi tiết sinh viên khoa cơ khí 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 khoa cơ khí Font: Time New Roman
Size: 14 ForeColor: Black
Thực hiện tương tự với GroupBox danh sách 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 tên sinh viên, năm sinh, điểm vẽ kỹ thuật, điểm CNC.
- Để 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, Text: Thêm
Thực hiện tương tự với điều khiển ”Hiển thị”, “Danh sách sinh viên trượt”, “Sửa”, “Xóa”, “Thoá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 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ã sinh viên, tên sinh viên, năm sinh, điểm vẽ kỹ thuật, điểm CNC, điểm TBC
View: Detail GridLine: true
Kết quả thiết kế Form
Hình 2. 22. Kết quả thiết kế Form sinh viên khoa cơ khí