Thực hiện tương tự với các nhãn mã giáo viên, họ tên, tuổi, giới tính, hệ số lương, thâm niên.
- Để 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
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:
Có thể bạn quan tâm!
- Kết Quả Thiết Kế Form Quản Lý Lương Nhân 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ý Lương Nhân 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 - 26
Xem toàn bộ 312 trang tài liệu này.
+ 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 điều khiển nhập họ tên, tuổi, hệ số lương, thâm niên.
- Để tạo điều khiển chọn giới tính là Nam theo yêu cầu cần thực hiện:
+ 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 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 “Danh sách giáo viên” 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_doctep. Text: Danh sách giáo viên
Thực hiện tương tự với điều khiển ”Thêm”, “Sửa”, “Xóa”, “Thâm niên”, “Thoát”.
- Để tạo điều khiển hiển thị 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/Properties và thiết lập các thuộc tính: Name: listview_giaovien
Columns/Collections kích Add 6 lần và thiết lập lại thuộc tính Text cho 6 cột tương ứng lần lượt là Mã giáo viên, họ tên, tuổi, giới tính, hệ số lương, thâm niên.
View: Detail
GridLine: True; FullRowSelect: True
Kết quả thiết kế Form
Hình 2. 16. Kết quả thiết kế Form quản lý giáo viên
Viết mã lệnh cho các sự kiện
- Viết mã lệnh khai báo cấu trúc giáo viên
public struct Giaovien
{
private string _magv; private string _hoten; private int _tuoi; private bool _gioitinh;
private double _hesoluong; private int _thamnien; public string magv
{
get { return _magv; } set { _magv = value; }
}
public string hoten
{
get { return _hoten; } set { _hoten = value; }
}
public int tuoi
{
get { return _tuoi; } set { _tuoi = value; }
}
public bool gt
{
get { return _gioitinh; } set { _gioitinh = value; }
}
public double hsl
{
get { return _hesoluong; } set { _hesoluong= value; }
}
public int thamnien
{
get { return _thamnien; } set { _thamnien = value; }
}
public Giaovien(string magv, string hoten, int tuoi, bool gt, double hesl, int thamnien)
{
_magv = magv;
_hoten = hoten;
_tuoi = tuoi;
_gioitinh = gt;
_hesoluong = hesl;
_thamnien = thamnien;
}
- Viết mã lệnh cho hàm ghi thông tin một giáo viên vào tệp
public void GhiDuLieu(BinaryWriter writer)
{
writer.Write(_magv); writer.Write(_hoten); writer.Write(_tuoi); writer.Write(_gioitinh); writer.Write(_hesoluong); writer.Write(_thamnien);
}
- Viết mã lệnh cho hàm đọc thông tin của một giáo viên trong tệp
public Giaovien DocDulieu(BinaryReader read)
{
Giaovien X = new Giaovien(); try
{
X.magv = read.ReadString(); X.hoten= read.ReadString();
}
catch (IOException)
{
Console.WriteLine("Loi");
}
X.tuoi = read.ReadInt32(); X.gt = read.ReadBoolean(); X.hsl = read.ReadDouble();
X.thamnien = read.ReadInt32(); return X;
}
}
- Viết mã lệnh khai báo mảng cấu trúc giáo viên, biến nguyên n
Giaovien[] A = new Giaovien[100]; int n;
- Viết mã lệnh cho hàm đọc dữ liệu từ tệp ra mảng
void Motep_doc(ref Giaovien [] A, ref int n)
{
FileStream fs = new FileStream(@"C:Hoso.data", FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(fs); n = reader.ReadInt32(); int cs = 0;
for (int i = 0; i < n; i++)
{
A[cs] = A[cs].DocDulieu(reader); cs++;
}
reader.Close(); fs.Close();
}
- Viết mã lệnh cho hàm ghi dữ liệu vào tệp
void Motep_ghi(Giaovien [] A, int n)
{
FileStream fs = new FileStream(@"C:Hoso.data", FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs); bw.Write(n);
try
{
for (int i = 0; i < n; i++) A[i].GhiDuLieu(bw);
}
catch (IOException ex)
{
Console.WriteLine("Loi" + ex);
}
bw.Close();
fs.Close();
}
- Viết mã lệnh cho hàm đưa dữ liệu vào ListView
private void Dua_DL_listview(Giaovien [] A, int n)
{
listview_giaovien.Items.Clear(); string gt; 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].tuoi.ToString()); if (A[i].gt==true) gt = "Nam";
else gt = "Nữ"; item.SubItems.Add(gt);
item.SubItems.Add(A[i].hsl.ToString()); item.SubItems.Add(A[i].thamnien.ToString()); listview_giaovien.Items.Add(item);
}
}
- Viết mã lệnh cho hàm kiểm tra chuỗi 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 sự hợp lệ của dữ liệu nhập vào
bool kiemtra_du_lieu()
{
int tuoi; double hsl;
if (kiemtra(txt_magv.Text) || kiemtra(txt_hoten.Text) || kiemtra(txt_tuoi.Text) || kiemtra(txt_hsl.Text)||kiemtra(txt_thamnien.Text)) return false;
if (!int.TryParse(txt_tuoi.Text, out tuoi) || tuoi <= 0) return false; if (!double.TryParse(txt_hsl.Text, out hsl) || hsl<= 0) return false;
if (!int.TryParse(txt_thamnien.Text, out tuoi) || tuoi <= 0) return false; return true;
}
- 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 thêm
private void bt_them_Click(object sender, EventArgs e)
{
Motep_doc(ref A, ref n); if (kiemtra_du_lieu())
{
bool gt;
if(radio_nam.Checked) gt=true; else gt=false;
Giaovien X = new Giaovien (txt_magv.Text,
txt_hoten.Text,int.Parse( txt_tuoi.Text), gt, double.Parse(txt_hsl.Text), int.Parse(txt_thamnien.Text));
A[n] = X; n++;
Motep_ghi(A, n); Motep_doc(ref A, ref n); Dua_DL_listview(A,n);
}
else { MessageBox.Show("Dữ liệu nhập vào chưa chuẩn", "Thông báo lỗi"); }
}
- Viết mã lệnh cho sự kiện chọn phần tử trên ListView danh sách giáo viên
private void listview_nhanvien_SelectedIndexChanged(object sender, EventArgs e)
{
string gt; try
{
for (int i = 0; i < listview_giaovien.SelectedItems.Count; i++)
{
txt_magv.Text = listview_giaovien.SelectedItems[i].SubItems[0].Text; txt_hoten.Text = listview_giaovien.SelectedItems[i].SubItems[1].Text; txt_tuoi.Text = listview_giaovien.SelectedItems[i].SubItems[2].Text; gt= listview_giaovien.SelectedItems[i].SubItems[3].Text;
if (string.Compare(gt, "Nam") == 0) radio_nam.Checked = true; else radio_nu.Checked = true;
txt_hsl.Text = listview_giaovien.SelectedItems[i].SubItems[4].Text; txt_thamnien.Text =listview_giaovien.SelectedItems[i].SubItems[5].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 sửa
private void bt_sua_Click(object sender, EventArgs e)
{
Motep_doc(ref A, ref n); Dua_DL_listview(A, n);
if (string.Compare(bt_sua.Text, "Cập nhật") == 0)
{
if (kiemtra_du_lieu())
{ // cap nhat thong tin sua bool gt;
if (radio_nam.Checked) gt = true; else gt = false;
for(int i=0;i<n;i++)
if (string.Compare(A[i].magv, txt_magv.Text) == 0)
{
Giaovien X = new Giaovien(txt_magv.Text, txt_hoten.Text, int.Parse(txt_tuoi.Text),gt, double.Parse(txt_hsl.Text), int.Parse(txt_thamnien.Text));
A[i] = X;
Motep_ghi(A, n);
Dua_DL_listview(A, n); bt_sua.Text = "Sửa"; reset();
}
}
else { MessageBox.Show("Dữ liệu sửa không hợp lệ"); bt_sua.Text
= "Cập nhật"; }
}
else { txt_magv.Enabled = false; bt_sua.Text = "Cập nhật"; txt_hoten.Focus(); }
}
- Viết mã lệnh cho hàm reset lại các textbox
void reset()
{
txt_magv.ResetText(); txt_hoten.ResetText(); txt_tuoi.ResetText(); radio_nam.Checked = false; radio_nu.Checked = false; txt_thamnien.ResetText(); txt_hsl.ResetText();
}
- 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)
{
Motep_doc(ref A, ref n); Dua_DL_listview(A, n);
if (MessageBox.Show("Bạn có chắc muốn xóa không?", "Thông báo xóa", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
for (int j = 0; j < n; j++)
if (string.Compare(A[j].magv, txt_magv.Text) == 0
{
for (int k = j; k < n - 1; k++) A[k] = A[k+1]; n--;
Motep_ghi(A, n); Dua_DL_listview(A, n);
}
reset();
}
}
- Viết mã lệnh cho sự kiện kích chuột vào nút thâm niên
private void bt_thamnien_Click(object sender, EventArgs e)
{
Motep_doc(ref A, ref n); Dua_DL_listview(A,n);
Giaovien [] B= new Giaovien[100]; int cs=0;
for(int i=0;i<n;i++)
if (A[i].thamnien >= 5)
{
B[cs] = A[i]; cs++;
}
Dua_DL_listview(B, cs);
}
Kết quả chạy chương trình
Hình 2. 17 - Kết quả chạy chương trình quản lý giáo viên
Bài 2
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. 18 - Chương trình quản lý lương nhân viên