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(); }
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);
}
}
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
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:
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.
2.2 - Làm việc với tệp tin
2.2.1. Tóm tắt các kiến thức cần nhớ
1. Làm việc với File nhị phân (binary files)
a. Ghi dữ liệu vào File nhị phân
- Tạo đối tượng quản lý File
FileStream stream= new FileStream(@“C:data.bin”, FileMode.Create);
- Tạo đối tượng phục vụ ghi File
BinaryWriter writer= new BinaryWriter(stream);
- Xử lý dữ liệu theo yêu cầu
Ví dụ: int i=3; double b= -3.2; string st= “Lap trinh C#”; bool b=true;
- Ghi dữ liệu ra File
writer.Write(b); writer.Write(i); writer.Write(d); writer.Write(st);
- Đóng các đối tượng được dùng lại write.Close(); stream.Close();
Tác vụ của class BinaryWriter có 14 biến thể 1 tham số để ghi được 14 kiểu dữ liệu định sẵn phổ biến sau đây:
- Boolean
- Byte, Sbyte
- Int16, Int32,Int64
- Uint16, Uint32,Uint64
- Single, Double,Decimal
- Byte[], char[]
- Char, String
Muốn ghi nội dung của biến thuộc 1 trong 14 kiểu dữ liệu định sẵn thì sử dụng tác vụ write theo dạng sau:
writer.Write(varname); // writer là biến đối tượng BinaryWriter
Tác vụ write của class BinaryWriter còn có 2 biến thế 3 số để ghi được các phần tử chọn lọc trong danh sách
// Ghi count byte từ vị trí index trong sanh sách buffer BinaryWriter.write(Byte[] buffer, int index, int count);
// Ghi count ký tự từ vị trí index trong sanh sách buffer BinaryWriter.write(Char[] buffer, int index, int count);
b. Đọc dữ liệu từ File nhị phân
- Tạo đối tượng quản lý File
FileStream stream= new FileStream(“C:data.bin”,FileMode.Open);
- Tạo đối tượng phục vụ đọc File
BinaryReader reader= new BinaryReader (stream);
- Định nghĩa các biến dữ liệu theo yêu cầu chương trình ví dụ: int i, double d, String st, bool b;
- Đọc dữ liệu từ File vào các biến
b= reader.ReadBoolean(); // Đọc giá trị logic i= reader.ReadInt32();// Đọ số nguyên 32 bit
d= reader.ReadDouble();// Đọc số thức chính xác kép st= reader.ReadString(); // Đọc chuỗi
- Đóng các đối tượng được dùng lại reader.Close(); stream.Close();
2. Làm việc với những tập tin văn bản
Nếu biết file đang làm việc (đọc/viết) thuộc loại văn bản nghĩa là dữ liệu kiểu string, thì nên sử dụng đến các lớp StreamReader và StreamWriter. Cả hai lớp theo mặc nhiên làm việc với ký tự Unicode. Tuy nhiên ta có thể thay đổi điều này bằng cách cung cấp một đối tượng quy chiếu được cấu hình một cách thích hợp theo System.Text.Reference. Nói tóm lại hai lớp này được thiết kế để thao tác dễ dàng các tập tin loại văn bản.
Lớp StreamReader được dẫn xuất từ một lớp abstract mang tên TextReader cũng giống như String Reader. Lớp cơ bản TextReader cung cấp một số chức năng hạn chế cho mỗi hậu duệ, đặc biệt khả năng đọc và "liếc nhìn" (peek) lên một dòng ký tự (character stream).
Lớp StreamWriter và StringWriter cũng được dẫn xuất từ một lớp abstract mang tên TextWriter; lớp này định nghĩa những thành viên cho phép các lớp dẫn xuất viết những dữ liệu văn bản lên một dòng văn bản nào đó.
Các thành viên của lớp TextWriter
Ý nghĩa | |
Close() | Cho đóng lại các writer và giải phóng mọi nguồn lực chiếm dụng |
Flush() | Cho xoá sạch tất cả các buffer đối với writer hiện hành |
NewLine | Thuộc tính này dùng làm hằng sang hằng |
Write() | Viết một hằng lên text stream không có newline constant |
WriteLine() | Viết một hằng lên text stream có newline constant |
Có thể bạn quan tâm!
- 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ả Thiết Kế Form 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
- Kết Quả Thiết Kế Form Quản Lý Lương Nhân Viên
Xem toàn bộ 312 trang tài liệu này.
a. Ghi dữ liệu vào File text
- Tạo đối tượng quản lý File
FileStream stream = new FileStream(@”C:data.txt”,FileMode.Create);
- Tạo đối tượng phục vụ ghi File
StreamWriter writer= new StreamWriter(stream, Encoding.Unicode);
- Xử lý theo yêu cầu chương trình
Ví dụ: int i=3; double b= -3.2; string st= “Lap trinh C#”; bool b=true;
- Ghi dữ liệu ra File
writer.Write(b); writer.Write(“t”); writer.Write(i); writer.WriteLine(); writer.Write(d); writer.Write(“t”); writer.Write(st); writer.Write(“t”);
- Đóng các đối tương được dùng lại writer.Close(); stream.Close();
b. Đọc dữ liệu từ File text
- Tạo đối tượng quản lý File
FileStream stream = new FileStream(@”C:data.txt”,FileMode.Open);
- Tạo đối tượng phục vụ đọc File
StreamReader reader= new StreamReader(stream, Encoding.Uniocde);
- Định nghĩa các biện dữ liệu theo yêu cầu chương trình
Ví dụ: int i; double b; string st; bool b; String buf= null;
- Đọc dữ liệu từ File vào các biến
ReadItem(reader, ref buf); b= Boolean.Parse(buf); ReadItem(reader, ref buf); i= Int32.Parse(buf); ReadItem(reader, ref buf); b= Boolean.Parse(buf); ReadItem(reader, ref buf); d= Double.Parse(buf); ReadItem(reader, ref buf); st= buf;
- Đóng các đối tượng được dùng lại reader.Close(); stream.Close();
2.2.2. Bài tập mẫu
Bài 1
1. Thiết kế form cập nhật thông tin mặt hàng
Hình 2. 13. Form Thông tin mặt hàng
Yêu cầu:
- Nhãn Thông tin mặt hàng: Microsoft Sans Serif, cỡ chữ 16, chữ hoa, căn giữa Form, màu xanh.
- Nhãn mã mặt hàng, tên mặt hàng, đơn vị tính: Font Time New Roman, cỡ chữ 14, màu đen.
- Các ô để nhập mã mặt hàng, tên mặt hàng, đơn vị tính là các TextBox.
- Các điều khiển “Thêm”, “Sửa”, “Xóa”, “Thoát” là các Button.
- Điều khiển “Danh sách mặt hàng”, “Thông tin chi tiết mặt hàng” là các GroupBox.
- Điều khiển để hiển thị danh sách mặt hàng là ListView.
2. Lập trình thực hiện các công việc:
- Khai báo cấu trúc mặt hàng gồm các thuộc tính: mã mặt hàng, tên mặt hàng, đơn vị tính, phương thức hàm tạo có đối số, hiển thị.
- Tạo tệp có tên “tblMatHang” để lưu trữ thông tin của các mặt hàng.
- Khi Load Form: các textbox vô hiệu hóa. Đọc dữ liệu ở tệp “tblMatHang” ra ListView
- Khi người dùng kích vào nút “Thêm”:
+ 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 ở textbox nhập mã, thuộc tính text của nút đổi thành “Lưu”.
+ Nếu thuộc tính text của nút là “Lưu” thì thực hiện kiểm tra dữ liệu nhập vào có hợp lệ không? (nhập đủ thông tin và nhập đúng kiểu dữ liệu). Nếu không hợp lệ thì hiển thị hộp thoại thông báo và yêu cầu nhập lại. ngược lại thì kiểm tra xem mã hàng nhập đã tồn tại chưa? Nếu đã tồn tại thì thông báo cho người dùng nhập lại mã, thuộc tính text của nút vẫn là “Lưu”. Nếu mã này chưa có thì thực hiện thêm thông tin một mặt hàng mới vào tệp “tblMatHang”, đồng thời cập nhật lại dữ liệu lên ListView, thuộc tính text của nút lúc này đổi thành “Thêm”, các textbox lại bị vô hiệu hóa.
- Khi người dùng kích chọn phần tử trên ListView thì thông tin về mặt hàng được chọn sẽ được hiển thị lên các textbox tương ứng.
- Khi người dùng kích vào nút “Sửa”:
+ Nếu thuộc tính text của nút là “Sửa” thì các textbox sáng lên trừ textbox mã mặt hàng, con trỏ đặt tại textbox tên mặt hàng, thuộc tính text của nút đổi thành “Cập nhật”.
+ Nếu thuộc tính text của nút là “Cập nhật”: thực hiện kiểm tra xem dữ liệu nhập vào có hợp lệ không? nếu không hiện lên hộp thoại thông báo, ngược lại thực hiện sửa thông tin của mặt hàng được chọn, cập nhật lại dữ liệu trên ListView, các textbox bị vô hiệu hóa và trống.
- Khi người dùng kích vào nút “Xóa”: hiện lên cửa sổ có 2 nút Yes/No để hỏi người dùng có muốn xóa phần tử đang chọn hay không? Nếu người dùng chọn Yes thực hiện xóa, cập nhật lại dữ liệu trên ListView. Ngược lại nếu chọn No thì không xóa mặt hàng đang chọ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 nhập mã mặt hàng cần tìm kiếm. Kết quả trả về gồm các thông tin mã mặt hàng, tên mặt hàng, đơn vị tính và hiển thị lên ListView.
- 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 mẫu trên thì phải có một form chứa:
- Các đối tượng có nội dung “THÔNG TIN MẶT HÀNG” là các Label.
- Đối tượng hiển thị danh sách mặt hàng là ListView
- Các nút “Thêm” “Xóa”, “Sửa”, “Tìm kiếm”, “Thoát” là các Button.
- Đối tượng thông tin chi tiết mặt hàng, danh sách mặt hàng là các GroupBox.
3. Hướng dẫn thao tác:
Thiết kế các điều khiển
Viết mã lệnh cho các nút chức năng
- Viết mã lệnh khai báo cấu trúc mặt hàng
public struct MatHang
{
string _mamh; string _tenmh; string _dvtinh;
public string mamh
{
get { return _mamh; } set { _mamh = value; }
}
public string tenmh
{
get { return _tenmh; } set { _tenmh = value; }
}
public string dvtinh
{
get { return _dvtinh; } set { _dvtinh = value; }
}