- 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.
Có thể bạn quan tâm!
- Kết Quả Thiết Kế Form Quản Lý Giáo Viên Tiểu Học
- Kết Quả Chạy Chương Trình Quản Lý Bán Xe Mô Tô
- Kết Quả Thiết Kế Form Quản Lý Sinh Viên
- Kết Quả Chạy Chương Trình Quản Lý Lương Nhân Viên
- 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
Xem toàn bộ 312 trang tài liệu này.
- 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 là các Textbox.
- Điều khiển để hiển thị danh sách nhân viên là ListView được đặt trong một GroupBox thông tin chi tiết nhân viên.
- Đối tượng thông tin chi tiết nhân viên, danh sách nhân viên là các GroupBox.
- 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.
- Để 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
public struct NV
{
string _manv; string _hoten; string _quequan; double _hesoluong; double _luongcb; public string manv
{
get { return _manv; }
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; }
}
public NV(string ma,string ho, string qq, double hsl, double lgcb)
{
_manv = ma;
_hoten = ho;
_quequan = qq;
_hesoluong = hsl;
_luongcb = lgcb;
}
public ListViewItem hienthi()
{
ListViewItem item = new ListViewItem(); item.Text = _manv; item.SubItems.Add(_hoten); item.SubItems.Add(_quequan); item.SubItems.Add(_hesoluong.ToString()); item.SubItems.Add(_luongcb.ToString()); return item;
}
public double Tinhluong()
{
return _hesoluong * _luongcb;
}
}
- Viết mã lệnh khai báo mảng cấu trúc nhân viên, biến nguyên n
NV[] A = new NV[100]; int n = 0;
- Viết mã lệnh cho hàm vô hiệu hóa các nút
void vohieuhoa1(bool gt)
{
bt_hienthi.Enabled = gt; bt_luongMax.Enabled = gt; bt_sapxep.Enabled = gt; bt_sua.Enabled = gt; bt_timkiem.Enabled = gt; bt_xoa.Enabled = gt;
}
- Viết mã lệnh cho hàm vô hiệu hóa các textbox
void vohieuhoa2(bool gt)
{
txt_maNV.Enabled = gt; txt_hoten.Enabled = gt; txt_hsl.Enabled = gt; txt_luongCB.Enabled = gt; txt_quequan.Enabled = gt;
}
- Viết mã lệnh cho sự kiện Load Form
private void Form1_Load(object sender, EventArgs e)
{
vohieuhoa1(false); vohieuhoa2(false); txt_maNV.Focus();
}
- Viết mã lệnh cho hàm reset các textbox
void reset()
{
txt_maNV.ResetText(); txt_hoten.ResetText(); txt_hsl.ResetText(); txt_luongCB.ResetText(); txt_quequan.ResetText();
}
- 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_maNV.Text) || kiemtra(txt_hoten.Text) || kiemtra(txt_quequan.Text) || kiemtra(txt_luongCB.Text)||kiemtra(txt_hsl.Text)) return false;
double x;
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;
}
- 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)
{
if (string.Compare(bt_them.Text, "Thêm") == 0)
{
vohieuhoa2(true); txt_maNV.Focus(); bt_them.Text = "Lưu"; vohieuhoa1(true);
}
else if (kiemtra_du_lieu())
{
int i;
NV X = new NV(txt_maNV.Text, txt_hoten.Text, txt_quequan.Text, double.Parse(txt_hsl.Text), double.Parse(txt_luongCB.Text));
for (i = 0; i < n; i++)
if (A[i].manv == txt_maNV.Text) { MessageBox.Show("Trùng mã nhân viên", "Thông báo"); txt_maNV.Focus(); break; }
if (i == n) { A[n] = X; n++; reset(); bt_them.Text = "Thêm"; vohieuhoa2(false); }
}
else { MessageBox.Show("Dữ liệu nhập vào không hợp lệ", "Thông báo lỗi"); bt_them.Text = "Lưu"; }
}
- Viết mã lệnh cho hàm đưa dữ liệu vào 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);
}
}
- 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(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)
{
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)
{
NV tg;
NV [] B= new NV[100]; B=A;
for(int i=0;i<n-1;i++) for(int j=i+1; j<n;j++)
if (B[i].Tinhluong() < B[j].Tinhluong())
{
tg = B[i];
B[i] = B[j];
B[j] = tg;
}
Dua_DL_listview(B, 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)
{
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;
}
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)
{
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;
}
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