1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập ôn thi C Sharp doc

32 222 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 32
Dung lượng 573 KB

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

Nội dung

Xây dựng lớp Queue không dùng Queue của collection dùng chứa đối tượng bất kỳ bằng mảng List hoặc ArrayList: - Hàm tạo, hàm tạo sao chép: khởi tạo Queue - Xây dựng các phương thức sau: E

Trang 1

BÀI TẬP ÔN CHUYÊN ĐỀ CSHARP

-o0o -I N G ÔN N G Ữ L Ậ P TRÌ N H CS H A R P :

Bài 1 Xây dựng lớp Queue (không dùng Queue của collection) dùng chứa đối tượng bất kỳ bằng mảng

List<T> hoặc ArrayList:

- Hàm tạo, hàm tạo sao chép: khởi tạo Queue

- Xây dựng các phương thức sau:

Enqueue Thêm 1 phần tử vào đầu Queue

Dequeue Lấy 1 phần tử ở cuối ra khỏi Queue

PeakFront Lấy 1 phần tử ở đầu Queue

PeakRear Lấy 1 phần tử ở cuối Queue

IsEmpty Kiểm tra Queue rỗng

Hỗ trợ Queue sao cho có thể dùng lệnh for-each để duyệt toàn bộ Queue (kế thừ từ giao diện

IEnumerable)

class CQueue<T> : IEnumerable<T>

{

// khởi tạo danh sách kiểu đối tượng T

List<T> q = new List<T>();

// Thêm 1 phần tử vào đầu Queue

public void Enqueue(T a)

// Kiểm tra Queue rỗng

public bool IsEmpty()

#region IEnumerable<T> Members

public IEnumerator<T> GetEnumerator()

Trang 2

#endregion

#region IEnumerable Members

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {

//throw new NotImplementedException();

private string maSo;

private string hoTen;

private DateTime ngaySinh;

private LopHoc lopHoc;

}

class LopHoc

{

private string maLop;

private string tenKhoa;

private List <SinhVien> dsSinhVien;

… }

Giả sử có hàm Main được cài đặt như sau:

static void Main(string []args)

{

LopHoc lop1 = new LopHoc(“TM0101”,”CNTT”); LopHoc

Trang 3

lop2 = new LopHoc(“MV0101”,”CNTT”);

lop1.themSinhVien(new SinhVien(“001”,”Nguyễn Văn A”,1989,2,18));

Kết quả xuất ra trong màn hình Console: (giả sử năm hiện tại của hệ thống là 2011)

Hãy cài đặt thêm để thỏa mãn hàm Main được khai báo như trên.

public class SinhVien

{

// khai bao cac bien thanh vien

private string maSo;

private string hoTen;

private DateTime ngaySinh;

private LopHoc lopHoc;

get { return maSo; }

set { maSo = value; }

}

public string HoTen // property cho HoTen

{

get { return hoTen; }

set { hoTen = value; }

}

public DateTime NgaySinh // property cho NgaySinh

{

get { return ngaySinh; }

set { ngaySinh = value; }

Trang 4

set { lopHoc = value; }

// khai bao bien thanh vien

private string maLop;

private string tenKhoa;

private List<SinhVien> dsSinhVien = new List<SinhVien>();

// khoi tao constructor

// constructor sao chep

public LopHoc(string malop, string tenkhoa)

get { return maLop; }

set { maLop = value; }

}

public string TenKhoa // property ma lop

{

get { return tenKhoa; }

set { tenKhoa = value; }

Trang 5

int i = 1;

foreach (SinhVien sv in dsSinhVien)

{

tmp = tmp + i + " " + sv.MaSo + " " + sv.HoTen + " " + sv.NgaySinh.ToString("dd/mm/yyyy") + " Tuoi: " + (DateTime.Today.Year - sv.NgaySinh.Year) + "\n";

LopHoc lop1 = new LopHoc("TM0101", "CNTT");

LopHoc lop2 = new LopHoc("MV0101", "CNTT");

lop1.themSinhVien(new SinhVien("001", "Nguyen Van A", 1989, 2, 18)); lop1.themSinhVien(new SinhVien("002", "Tran Thi B", 1989, 5, 2)); SinhVien sv = lop1.timSinhVien("002");

II WINDOWS FORM :

Bài 1: Cho chương trình Đặt báo được mô tả như hình 1, chứa biểu mẫu frmDatBao

Trang 6

Hình 1 Giao diện biểu mẫu frmDatBao

Cho bảng mô tả các điều khiển trên frmDatBao

1 txtKhachHang TextBox Tên khách hàng đặt báo

2 txtDienThoai TextBox Điện thoại khách hàng

3 txtDiaChiNhan TextBox Địa chỉ nhận báo

4 cboLoaiBao ComboBox Danh sách các báo lựa chọn đặt

5 txtDonGia TextBox Giá báo tương ứng

7 datNgayBatDau DateTimePicker Ngày bắt đầu nhận báo

8 lvDanhSach ListView Danh sách báo chọn đặt

9 txtTongTien TextBox Tổng tiền các báo chọn đặt

10 btnDatBao Button Chức năng đặt báo

11 btnBoChon Button Chức năng bỏ chọn đặt báo

12 btnThoat Button Thoát chương trình

Biết bảng các phương thức xử lý sự kiện cho điều khiển trên frmDatBao:

1 txtKhachHang Validating txtKhachHang_Validating

2 txtDiaChiNhan Validating txtDiaChiNhan_Validating

3 txtDienThoai Validating txtDienThoai_Validating

4 txtSoKy Validating txtSoKy_Validating

6 cboLoaiBao SelectedIndexChanged cboLoaiBao_SelectedIndexChanged

Trang 7

10 frmDatBao FormClosing frmDatBao_FormClosing

* Khai báo lớp loại báo để phục vụ cho việc load cboLoaiBao:

public class LoaiBao

// lay property cho 2 thuoc tinh la tenBao va giaTien

public string TenBao

{

get { return tenBao; }

set { tenBao = value; }

}

public int GiaTien

{

get { return giaTien; }

set { giaTien = value; }

}

// override ToString de xuat ra theo y muon cua nguoi dung

public override string ToString()

{

return string.Format("{0}", TenBao);

}

}

a) Khi frmDatBao vừa mới hiển thị:

 Khởi tạo giá trị cho cboLoaiBao chứa tên các báo với thông tin cho bên dưới: + Tuổi trẻ ngày 2700 Đ / kỳ

// dua du lieu vao cboLoaibao

cboLoaiBao.Items.Add(new LoaiBao("Tuoi tre ngay", 2700));

cboLoaiBao.Items.Add(new LoaiBao("Lam ban voi may tinh", 5400)); cboLoaiBao.Items.Add(new LoaiBao("PC Word (A)", 12000));

txtSoKy.Text = "1"; // khoi tao txtSoKy la 1

txtTongTien.Text = "0"; // khoi tao txtTongTien la 0

}

b) Khi chọn loại báo, hiển thị thông tin đơn giá tương ứng.

private void cboLoaiBao_SelectedIndexChanged(object sender, EventArgs e){

LoaiBao lb = (LoaiBao)cboLoaiBao.SelectedItem; // chon bao

// khi chon loai bao thi hien thi gia tien tuong ung

txtDonGia.Text = string.Format("{0} D", lb.GiaTien.ToString());}

Trang 8

c) Thực hiện kiểm tra dữ liệu cho txtKhachHang, txtDiaChiNhan, txtDienThoai, txtSoKy theo mô

tả sau:

 Tên khách hàng không được để trống.

 Địa chỉ khách hàng không được để trống.

 Số điện thoại không có ký tự khác ngoài ký số.

// đối với dạng số nhập vào fải >=0 thì dùng cách sau VD:

private void txtSoKi_Validating(object sender, CancelEventArgs e)

{

Trang 9

int Int;

if (!int.TryParse(txtSoKi.Text, out Int))

MessageBox.Show("So ky phai la so nguyen");

MessageBox.Show("Điện thoại không được để trống và chỉ được nhập số!!",

"Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

d) Khi nhấn vào nút Đặt báo:

 Lấy thông tin đặt báo thêm vào lvDanhSach (Thành tiền = Đơn giá * Số kỳ).

// lay cot thu 4 la thanh tien ra

string thanhtien = lvDanhSach.Items[i].SubItems[4].Text.ToString(); // cat chuoi thanhtien dua vao mang chuoi x va cat nhau boi dau ' ' string []x = thanhtien.Split(' ');

// gan phan tu x[0] la giaTien vao chuoi tien

Trang 10

// gan phan tu s[0] la gia tien dua vao chuoi gia

string gia = s[0];

// gan phan tu s[1] la don vi tien (' D') dua vao chuoi don vi

string donvi = s[1];

// cong thuc tinh thanh tien trong lvDanhSach

int Tien = int.Parse(txtSoKy.Text) * int.Parse(gia);

// dua thong tin vao lvDanhSach

ListViewItem item = new ListViewItem();

// cap nhat lai txtTongTien

txtTongTien.Text = string.Format("{0} D", TinhTien().ToString());

if (lvDanhSach.Items.Count == 0) // if trong lvDanhSach k con gi

MessageBox.Show("Khong con gi de xoa");

else if (lvDanhSach.SelectedIndices.Count == 0) // chua chon gi trong lvDanhSach MessageBox.Show("Chua chon sao xoa");

else

{

// xuat thong bao co muon xoa k

DialogResult xoa = MessageBox.Show("Ban co muon xoa khong?", "Thong bao",

// cap nhat lai txtTongTien

txtTongTien.Text = string.Format("{0} D", TinhTien().ToString());

}

}

}

f) Khi nhấn nút Thoát hay đóng chương trình: hiển thị xác nhận người dùng muốn đóng chương

trình Nếu đồng ý, thực hiện đóng biểu mẫu frmDatBao

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

if (MessageBox.Show("Ban co muon thoat khong?", "Thong bao",

MessageBoxButtons.YesNo) == DialogResult.Yes)

Trang 11

KhachHang nvarchar(100) Tên khách hàng

LienLac nvarchar(255) Địa chỉ liên lạc

Bảng ChiTietHoaDon

M

Anh (chị) hãy thực hiện viết đoạn mã theo yêu cầu sau:

a Kết nối tới cơ sở dữ liệu BanHangDB, giả sử Server là SQLEXPRESS, chạy tại máy cục bộ.

b Giả sử có ComboBox cboMaHD, đưa dữ liệu MaHD trong bảng HoaDon vào cboMaHD.

c Giả sử có thêm TextBox txtLienLac, txtKhachHang, DateTimePicker NgayLap, hiển thị dữ liệu tương ứng với Mã hóa đơn chọn trong cboMaHD.

d Giả sử có thêm DataGridView dgBanHang, đưa dữ liệu trong bảng ChiTietHoaDon tương ứng với Mã hóa đơn chọn trong cboMaHD vào dgBanHang (có thêm cột Thành tiền = Số lượng *

Đơn giá).

* Khai báo:

using System.Data.SqlClient;

private SqlConnection m_cnn = null;

private SqlDataAdapter m_da_hd = null;

private DataSet m_ds = null;

private string sql = "select * from HoaDon";

private string sql1 = "select MatHang, MaHD, SoLuong, DonGia, SoLuong*DonGia as ThanhTien from ChiTietHoaDon";

// tao cau noim_cnn = new SqlConnection(cnnStr);

// mo ket noim_cnn.Open();

// kiem tra ket noi

if (m_cnn.State == ConnectionState.Open)

MessageBox.Show("Ket noi thanh cong");

}

catch(Exception ee)

{

if (m_cnn.State == ConnectionState.Closed)

MessageBox.Show("Ket noi that bai");

else

Trang 12

// khoi tao data adapter

m_da_hd = new SqlDataAdapter(sql, m_cnn);

// do du lieu vao data set

m_da_hd.Fill(m_ds, "HoaDon");

// luu lai / tra ve data set bang Hoa don

return m_ds.Tables["HoaDon"];

// khoi tao data adapter

m_da_hd = new SqlDataAdapter(sql, m_cnn);

// do du lieu vao data set

dtpNgayLap.DataBindings.Add("Value", m_ds.Tables["HoaDon"], "NgayLap");

// luu lai / tra ve data set bang Hoa don

return m_ds.Tables["HoaDon"];

Trang 13

// chon hien thi du lieu truong MaHD

// khoi tao data adapter

m_da_hd = new SqlDataAdapter("select MatHang, MaHD, SoLuong, DonGia,

SoLuong*DonGia as ThanhTien from ChiTietHoaDon where MaHD = '"+s+ "'", m_cnn);

// do du lieu vao data set

Bài 2 Giả sử có các lớp lưu trữ dữ liệu về quản lý nhân khẩu:

HoKhau

public string MaHoKhau { get; set; } Mã hộ khẩu public string ChuHo { get; set; } Mã chủ hộ, tham chiếu nhân khẩu public string DiaChi { get; set; } Địa chỉ hộ khẩu

public string CMND {get;set} Chứng minh nhân dân public string MaHoKhau { get; set; } Hộ khẩu thường trú DataContext public List<HoKhau> ListHK{ get; set; } Danh sách hộ khẩu

public List<NhanKhau> ListNK{ get; set; } Danh sách nhân khẩu

a Viết phương thức đọc dữ liệu trong DataContext: public static DataContext DocDuLieu(); để nạp dữ liệu trong cơ sở dữ liệu NhanKhauDB, giả sử Server là SQLEXPRESS, chạy tại máy cục

bộ với lược đồ dữ liệu:

HoKhau (MaHoKhau, ChuHo, DiaChi)

NhanKhau (MaNK, TenNK, NgaySinh, GioiTinh, LoaiCuTru, CMND, Ma H oKh a u )

FrmQLNK dùng để cho biết thông tin của Nhân khẩu tại địa phương có giao diện sau:

Trang 14

Các điều khiển chính của FrmQLNK:

STT Tên đối tượng Kiểu đối tượng

Trong FrmQLNK đã định nghĩa biến sau:

Khai báo:

class HoKhau

{

// khai bao cac bien

private string maHoKhau;

Trang 15

private string diaChi;

private string chuHo;

// thiet lap property cho cac thuoc tinh cua cac bien public string MaHoKhau

{

get { return maHoKhau; }

set { maHoKhau = value; }

}

public string ChuHo

{

get { return chuHo; }

set { chuHo = value; }

}

public string DiaChi

{

get { return diaChi; }

set { diaChi = value; }

}

}

class NhanKhau

{

// khai bao cac bien

private string maNhanKhau;

private string tenNhanKhau;

private DateTime ngaySinh;

private bool gioiTinh;

private string loaiCuTru;

private string cMND;

private string maHoKhau;

// thiet lap property cho cac thuoc tinh cua cac bien public string MaNhanKhau

{

get { return maNhanKhau; }

set { maNhanKhau = value; }

}

public string TenNhanKhau

{

get { return tenNhanKhau; }

set { tenNhanKhau = value; }

}

public DateTime NgaySinh

{

get { return ngaySinh; }

set { ngaySinh = value; }

}

public bool GioiTinh

{

get { return gioiTinh; }

set { gioiTinh = value; }

}

public string LoaiCuTru

{

get { return loaiCuTru; }

set { loaiCuTru = value; }

Trang 16

public string MaHoKhau

{

get { return maHoKhau; }

set { maHoKhau = value; }

}

}

class DataContext

{

// khai bao cac bien

private List<HoKhau> listHoKhau;

private List<NhanKhau> listNhanKhau;

// thiet lap property cho cac thuoc tinh cua cac bien

public List<HoKhau> ListHoKhau

{

get { return listHoKhau; }

set { listHoKhau = value; }

}

public List<NhanKhau> ListNhanKhau

{

get { return listNhanKhau; }

set { listNhanKhau = value; }

// tao chuoi ket noi

string cnn_Str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath; // tao cau noi

OleDbConnection m_cnn = new OleDbConnection(cnn_Str);

// mo ket noi

m_cnn.Open();

// kiem tra ket noi

if (m_cnn.State == ConnectionState.Open)

MessageBox.Show("Ket noi thanh cong");

// khoi tao cac doi tuong

DataContext datacontext_tmp = new DataContext();

List<HoKhau> hk_tmp = new List<HoKhau>();

List<NhanKhau> nk_tmp = new List<NhanKhau>();

string query = "SELECT * FROM HoKhau";

OleDbCommand cmd = new OleDbCommand(query, m_cnn);

OleDbDataReader dr = cmd.ExecuteReader();

while (dr.Read()) // trong khi con doc duoc

{

// tao bien tam de luu

HoKhau hokhau_tmp = new HoKhau();

// lay du lieu dua vao tung cot, khi lay ve phai ep kieu tuong ung

hokhau_tmp.MaHoKhau = (string)dr["MaHoKhau"];

hokhau_tmp.ChuHo = (string)dr["ChuHo"];

hokhau_tmp.DiaChi = (string)dr["DiaChi"];

// dua du lieu vao list<HoKhau> hk_tmp

hk_tmp.Add(hokhau_tmp);

}

query = "SELECT * FROM NhanKhau";

cmd = new OleDbCommand(query, m_cnn);

Trang 17

dr = cmd.ExecuteReader();

while (dr.Read()) // trong khi con doc duoc

{

// tao bien tam List<NhanKhau> nk_tmp

NhanKhau nhankhau_tmp = new NhanKhau();

// lay du lieu dua vao tung cot, khi lay ve phai ep kieu tuong ung

nhankhau_tmp.MaNhanKhau = (string)dr["MaNhanKhau"];

nhankhau_tmp.TenNhanKhau = (string)dr["TenNhanKhau"];

nhankhau_tmp.NgaySinh = (DateTime)dr["NgaySinh"];

nhankhau_tmp.LoaiCuTru = (string)dr["LoaiCuTru"];

nhankhau_tmp.CMND = (string)dr["CMND"];

nhankhau_tmp.MaHoKhau = (string)dr["MaHoKhau"];

nhankhau_tmp.GioiTinh = (bool)dr["GioiTinh"];

// dua du lieu vao List<NhanKhau> nk_tmp

OpenFileDialog open = new OpenFileDialog();

open.Title = "Chon du lieu";

// mo hop thoai

open.ShowDialog();

filepath = open.FileName;

// goi ham doc du lieu

m_data = DataContext.DocDuLieu();

List<HoKhau> hk_tmp = m_data.ListHoKhau;

// duyet cac phan tu trong ho khau

foreach (HoKhau hokhau in hk_tmp)

b) Khi chọn một hộ khẩu trong danh sách hộ khẩu, hiển thị danh sách các nhân khẩu trong hộ khẩu đó,

và thông tin hộ khẩu

private void lvHoKhau_SelectedIndexChanged(object sender, EventArgs e)

{

int index = lvHoKhau.SelectedIndices.Count;

if (index > 1)

Ngày đăng: 13/08/2014, 23:22

HÌNH ẢNH LIÊN QUAN

Hình 1. Giao diện biểu mẫu frmDatBao Cho bảng mô tả các điều khiển trên frmDatBao - Bài tập ôn thi C Sharp doc
Hình 1. Giao diện biểu mẫu frmDatBao Cho bảng mô tả các điều khiển trên frmDatBao (Trang 6)
Bảng HoaDon - Bài tập ôn thi C Sharp doc
ng HoaDon (Trang 11)

TỪ KHÓA LIÊN QUAN

w