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

BÀI TẬP THỰC HÀNH MÔN C

25 72 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 25
Dung lượng 1,07 MB

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

Nội dung

Viết chương trình nhập vào một số nguyên dương n, in ra tổng các chữ số của n... Viết chương trình nhập vào ma trận vuông cấp n, các phần tử có giá trị nguyên.. Viết chương trình nhập và

Trang 1

BÀI TẬP THỰC HÀNH SỐ 1 Bài 1.0 Viết các chương trình trên ứng dụng Console:

1 Viết chương trình nhập vào 3 số, tìm số lớn nhất

2 Viết chương trình giải và biện luận phương trình bậc 1 (ax+b=0)

3 Viết chương trình giải và biện luận phương trình bậc 2 (ax2+bx+c=0)

4 Viết chương trình nhập vào điểm rèn luyện và in ra xếp loại (xuất sắc, tốt, khá, …) của điểm

rèn luyện đó.

5 Viết chương trình nhập số nguyên dương n và in giá trị của tổng sau:

a) b)

c) d)

6 Viết chương trình nhập số tự nhiên n, và in giá trị của các tích sau:

a) n!

b)

c) d)

7 Viết chương trình in các số tự nhiên có 3 chữ số sao cho chữ số hàng trăm bằng chữ số hàng

đơn vị.

8 Viết chương trình nhập vào một số nguyên dương n, in ra tổng các chữ số của n.

Ví dụ, nhập n=134560 Kết quả: 19

Trang 2

10 Viết chương trình nhập vào 1 số nguyên dương n, kiểm tra n có phải là số nguyên tố hay

không? (Yêu cầu xây dựng hàm kiểm tra số nguyên tố)

11 Viết chương trình nhập vào 1 số nguyên dương n, in ra các số nguyên tố từ 1 đến n.

12 Viết chương trình nhập vào 1 số nguyên dương n, in ra n số nguyên tố đầu tiên.

13 Viết chương trình nhập vào một dãy số có n phần tử, các phần tử có giá trị nguyên (3 ≤ n ≤ 30).

a Tính tổng giá trị các phần tử của dãy số

b In ra các phần tử có giá trị lẻ

c In ra phần tử có giá trị lớn nhất thuộc dãy số

14 Viết chương trình nhập vào một dãy số có n phần tử, các phần tử có giá trị nguyên (1 ≤ n ≤ 30).

a In ra các phần tử có giá trị chẵn

b Tính tổng các phần tử chia hết cho 2 nhưng không chia hết cho

c Sắp xếp dãy số theo thứ tự tăng dần

15 Viết chương trình nhập vào một dãy số có n phần tử, các phần tử có giá trị nguyên (1 ≤ n ≤ 30).

a Tính trung bình cộng giá trị các phần tử của dãy số

b In ra phần tử có giá trị nhỏ nhất, lớn nhất

c Sắp xếp dãy số theo thứ tự giảm dần

16 Viết chương trình nhập vào một dãy số có n phần tử, các phần tử có giá trị nguyên, các phần

tử có giá trị từ 0 đến 9 (1 ≤ n ≤ 30).

a Đếm số lượng các phần tử có giá trị lẻ

b Đếm số lượng các phần tử chia hết cho 3 nhưng không chia hết cho 6

c Nhập vào một giá trị x, kiểm tra x có thuộc dãy số hay không?

17 Viết chương trình nhập vào một dãy số có n phần tử, các phần tử có giá trị nguyên (1 ≤ n ≤ 30).

a Tính tổng của phần tử có giá trị lớn nhất và nhỏ nhất của dãy số

b Nhập vào giá trị x, in ra các phần tử có giá trị lớn hơn x

c Tính tổng các phần tử có giá trị nhỏ hơn x

18 Viết chương trình nhập vào ma trận vuông cấp n, các phần tử có giá trị nguyên.

a In ra ma trận vừa nhập

b Tính tổng các phần tử của ma trận

c Tính tổng các phần tử thuộc đường chéo chính của ma trận

19 Viết chương trình nhập vào ma trận vuông cấp n, các phần tử có giá trị nguyên.

Trang 3

a Tính tổng các phần tử có giá trị lẻ của ma trận

b In ra phần tử có giá trị lớn nhất thuộc ma trận

c Nhập vào một giá trị x, tính tổng các phần tử có giá trị lớn hơn x

Trang 4

Bài 1.1 Xây dựng 1 Form có giao diện và lập trình xử lý các chức năng sau:

Ví dụ, chương trình thực thi khi chọn mảng phát sinh ngẫu nhiên và sắp xếp giảm:

Bài 1.2

- Xây dựng lớp thí sinh (ThiSinh) gồm có các thành phần:

• Dữ liệu: Số báo danh, họ tên.

• Phương thức: nhập, in một thí sinh.

- Xây dựng lớp thí sinh khối A (ThiSinhA) kế thừa lớp TS và bổ sung:

• Dữ liệu: điểm toán, lý, hóa.

• Phương thức: tính tổng điểm và định nghĩa lại phương thức nhập, in để có thông tin đầy đủ.

- Thiết kế một Form có giao diện như sau:

Minh hoạ, nhập và xuất kết quả trên Form:

Trang 5

Bài

lập trình xử lý các công việc như sau:

- Khi người dùng click vào mục chọn “Các phép toán”, sẽ xuất hiện Form sau:

- Khi người dùng click vào mục chọn “Vòng lặp”, sẽ xuất hiện Form sau:

- Khi người dùng click vào mục chọn “Giải phương trình bậc 1”, sẽ xuất hiện Form sau:

Trang 6

- Khi người dùng click vào mục chọn “Giải phương trình bậc 2”, sẽ xuất hiện Form sau:

- Khi người dùng click vào mục chọn “Thoát”, sẽ xuất hiện Form sau:

- Khi người dùng click vào mục chọn “Trò chơi quay số”, sẽ xuất hiện Form sau:

Giải thích:

Khi người dùng click nút “Quay số”, chương trình phát sinh trong mỗi TextBox một số ngẫu

nhiên từ 0 đến 9.

 Tuỳ theo kết quả quay số, chương trình sẽ in ra thông báo tương ứng cho mỗi trường hợp sau:

o Nếu cả 3 số đều khác nhau, in thông báo: “Chúc bạn may mắn lần sau”

Trang 7

o Nếu có 2 số (vị trí bất kỳ) giống nhau, in thông báo: “Trúng giải 2”

o Nếu có 3 số giống nhau, in thông báo: “Trúng giải 1”

- Khi người dùng click vào mục chọn “Tìm số nguyên tố”, sẽ xuất hiện Form sau:

if (dem <= 2) return true ;

else return false ;

Trang 8

- Khi người dùng click vào mục chọn “Lý lịch nhân viên”, sẽ xuất hiện Form sau:

Nơi sinh có các giá trị như sau: Bình Định, Bình Thuận, Khánh Hoà, Ninh Thuận và Phú Yên

Khi nhập đầy đủ thông tin vào Form, click vào nút “Xác nhận thông tin”, sẽ hiện thị các thông tin vừa

nhập lên MessageBox.

Hình minh hoạ:

Code gợi ý:

- Hàm nạp một số thông tin trong sự kiện Form Load:

private void frmBai2_7_Load(object sender, EventArgs e)

{

string[] dsTinh=new string[5]{"Bình Định","Bình Thuận","Khánh

Hoà","Ninh Thuận","Phú Yên"};

cboNoiSinh.DataSource = dsTinh;

string[] dsTrinhDo = new string[7] { "Tiểu học", "Trung học cơ sở",

"Trung học phổ thông", "Trung cấp", "Cao đẳng", "Đại học", "Trên đại học" }; listTD.DataSource = dsTrinhDo;

string[] dsNgoaiNgu = new string[4]{"Anh","Pháp","Nga","Khác"};

for (int i=0;i<4;i++)

{

checkedListNN.Items.Add(dsNgoaiNgu[i]);

Trang 9

+ "- Ngày sinh: " + txtNgaySinh.Text + "\n"

+ "- Nơi sinh: " + cboNoiSinh.SelectedValue + "\n"

+ "- Ngoại ngữ: " + ngoaingu + "\n"

+ "- Trình độ: " + listTD.SelectedValue;

MessageBox.Show(lylich, "Xác nhận thông tin",MessageBoxButtons.OK , MessageBoxIcon.Information );

}

Bài 4 Tạo một trình đơn (menu) có giao diện và lập trình xử lý các công việc như sau:

- Tạo 1 tập tin biểu tượng có tên MyIcon.ico có hình dạng bất

kỳ, sau đó nạp vào chương trình ứng dụng.

- Khi người sử dụng click vào mục chọn “Tìm số 7 may mắn”

thì sẽ xuất hiện Form có giao diện như sau:

Form khi xuất hiện chọn nút lệnh “Quay số”:

Form khi xuất hiện lần đầu:

Trang 10

Giải thích:

Khi người dùng click nút lệnh “Quay số”, sau một khoảng thời gian 1/5 giây (interval =200),

chương trình phát sinh trong mỗi TextBox một số ngẫu nhiên từ 0 đến 9, 1 label hiện thị “Vui lòng chọn số”, nút lệnh “Quay số” bị mờ và nút lệnh “Chọn số” không bị mờ.

 Khi người dùng vừa click vào nút lệnh “Chọn số” thì nó bị mờ trở lại và nút lệnh quay số không bị

mờ, tuỳ theo kết quả chọn số, chương trình sẽ in ra thông báo tương ứng cho mỗi trường hợp sau:

o Nếu cả 5 ô đều là số 7, in thông báo: “Chúc mừng bạn đã trúng giải đặc biệt”.

o Nếu có 4 số (vị trí bất kỳ) đều là số 7, in thông báo: “Chúc mừng bạn đã trúng giải 1”.

o Nếu có 3 số (vị trí bất kỳ) đều là số 7, in thông báo: “Chúc mừng bạn đã trúng giải 2”.

o Nếu có 2 số (vị trí bất kỳ) đều là số 7, in thông báo: “Chúc mừng bạn đã trúng giải 3”.

o Nếu có 1 số (vị trí bất kỳ) là số 7, in thông báo: “Chúc mừng bạn đã trúng giải khuyến khích”.

o Nếu không có ô nào chứa số 7, in thông báo: “Chúc bạn may mắn lần sau”.

- Khi người sử dụng click vào mục chọn “Thoát” hoặc nút lệnh “Kết thúc” thì xuất hiện hộp thoại “Thông báo”, quá trình thoát khi người sử dụng chọn “Yes”:

Trang 11

BÀI TẬP THỰC HÀNH SỐ 2

1 Xây dựng CSDL trên MS SQL Server có tên MãSV_QLSV (Mã sinh viên của người tạo), gồm các bảng như sau:

KHOA (Makhoa, Tenkhoa)

MONHOC (MaMH, TenMH, SoDVHT)

SINHVIEN (MaSV, HoSV, TenSV, Gioitinh, Ngaysinh, Noisinh, Makhoa)

KETQUA (MaSV, MaMH, DiemKT, DiemThi, GhiChu)

2 Tạo 1 project có tên MãSV_BTTH2 (Mã sinh viên của người tạo), thiết kế form

có menu như sau:

2.1 Thêm vào 1 project 1 form có giao diện như sau:

Giải thích: - 2 TextBox có tên: txtMaKhoa, txtTenKhoa

- 4 Button có tên: cmdLuu, cmdSua, cmdXoa, cmdThoat dùng để thực hiện

các chức năng: thêm, sửa, xóa, thoát

Gợi ý một số code:

- Khai báo không gian tên: using System.Data.SqlClient ;

- Khai báo chuỗi kết nối toàn cục:

public static string strConn="Data Source=XYZ-PC;Initial Catalog=55123456_QLSV;user=sa;pwd=abc";

- Xây dựng hàm thêm 1 thông tin mới vào Table KHOA:

void themKhoa(string maKhoa, string tenKhoa)

{

Trang 12

SqlConnection connDB = new SqlConnection(Program.strConn);

- Xây dựng hàm sửa 1 thông tin đã có trong Table KHOA:

void suaKhoa(string maKhoa, string tenKhoa)

{

SqlConnection connDB = new SqlConnection(Program.strConn);

connDB.Open();

string cmd = "UPDATE KHOA SET TenKhoa='" + tenKhoa + "' WHERE MaKhoa='" + maKhoa + "'";

SqlCommand sqlCmd = new SqlCommand(cmd, connDB);

sqlCmd.ExecuteNonQuery();

connDB.Close();

}

- Xây dựng hàm xóa 1 thông tin đã có trong Table KHOA:

void xoaKhoa(string maKhoa)

{

SqlConnection connDB = new SqlConnection(Program.strConn);

connDB.Open();

string cmd = "DELETE FROM KHOA WHERE MaKhoa='" + maKhoa + "'";

SqlCommand sqlCmd = new SqlCommand(cmd, connDB);

sqlCmd.ExecuteNonQuery();

connDB.Close();

}

- Gắn code vào 3 nút lệnh: Lưu, Sửa, Xóa:

private void cmdLuu_Click(object sender, EventArgs e)

Trang 13

2.3 Thiết kế form sinh viên có giao diện như sau:

Một số code gợi ý:

- Hàm trả về danh sách các khoa:

DataTable Khoa_DS()

{

string cmd = "SELECT * FROM KHOA";

SqlDataAdapter adap = new SqlDataAdapter(cmd, Program.connStr);

DataTable ds = new DataTable ();

adap.Fill(ds);

return ds;

}

- Hàm thêm 1 sinh viên mới vào bảng SINHVIEN:

void themSinhVien(string maSV, string hoSV, string tenSV, string gioiTinh, string

ngaySinh, string noiSinh, string maKhoa)

{

string cmd = "INSERT INTO SINHVIEN VALUES('" + maSV + "',N'" + hoSV + "',N'" +

tenSV + "', N'"+gioiTinh+"' ,'" + ngaySinh + "',N'" + noiSinh + "',N'" + maKhoa + "')";

SqlConnection dbConn = new SqlConnection(Program.connStr );

- Hiện thị danh sách khoa trong ComboBox: Xử lý sự kiện trong frmSinhVien_Load

private void frmSinhVien_Load(object sender, EventArgs e)

Trang 14

- Gắn code cho nút lệnh Lưu:

privatevoid cmdLuu_Click(object sender, EventArgs e)

themSinhVien(txtMaSV.Text, txtHoSV.Text, txtTenSV.Text, gt.ToString () ,

txtNgaySinh.Text, txtNoiSinh.Text, comKhoa.SelectedValue.ToString ());

}

- Các sự kiện khác, làm tương tự

2.4 Thiết kế form Đăng ký môn học có giao diện như sau:

Khi người dùng click vào nút lệnh “Đăng ký” hoặc “Huỷ” thì chương trình phải kiểm trathông tin: Dữ liệu mã sinh viên vừa nhập có trong bảng SINHVIEN và mã môn học cótrong bảng MONHOC hay không? Nếu không có hiện thị thông báo lỗi, ngược lại, tiếnhành thực hiện các chức năng: đăng ký hoặc huỷ

Code gợi ý:

- Hàm kiểm tra dữ liệu mã sinh viên có trong bảng SINHVIEN hay không?

bool KiemTraMaSV(string maSV)

- Hàm kiểm tra dữ liệu mã môn học có trong bảng MONHOC hay không?

bool KiemTraMaMH(string maMH)

{

SqlConnection dbCon = new SqlConnection(Program.connStr);

Trang 15

- Hàm thêm thông tin đăng ký môn học:

void themDKMH(string maSV, string maMH)

- Code xử lý sự kiện cho nút lệnh “Đăng ký”:

private void btnDangKy_Click(object sender, EventArgs e)

{

int dem = 0;//Biến dùng để kiểm tra MãSV và MãMH có trong CSDL hay không?

string loi = "";//Nội dung thông báo lỗi

- Chức năng “Huỷ” làm tương tự

2.5 Thiết kế form Khoa có giao diện như sau:

Trang 16

- Giải thích: Form có 1 DataGridView dùng để hiện thị thông tin Khoa và có 2 nút lệnh:Cập nhật và Thoát.

- Khi người dùng nhập các thông tin lên DataGridView và click vào nút lệnh Cập nhật thìnhững nội dung sẽ được cập nhật vào bảng KHOA

dbConn = new SqlConnection(Program.connStr);

adap = new SqlDataAdapter();

- Hàm Load dữ liệu Khoa lên DataGridView trong sự kiện Form_Load:

private void frmKhoaNC_Load(object sender, EventArgs e)

Trang 17

- Code xử lý lưu các thông tin thay đổi trên DataGridView:

private void cmdCapNhat_Click(object sender, EventArgs e)

2.6 Thiết kế form Môn học có giao diện như sau:

Nguyên lý hoạt động của Form 2.6 cũng tương tự như Form 2.5

Trang 18

dbConn = new SqlConnection(Program.connStr);

adap = new SqlDataAdapter();

- Hàm Load dữ liệu môn học lên DataGridView trong sự kiện Form_Load:

private void frmMonHocNC_Load(object sender, EventArgs e)

- Code xử lý lưu các thông tin thay đổi trên DataGridView:

private void cmdCapNhat_Click(object sender, EventArgs e)

Trang 19

- Khai báo biến toàn cục:

dbConn = new SqlConnection(Program.connStr);

adap = new SqlDataAdapter();

- Code xử lý sự kiện Form_Load:

private void frmDSMH_NhapDiem_Load(object sender, EventArgs e)

- Code xử lý sự kiện Nhập điểm:

private void cmdNhapDiem_Click(object sender, EventArgs e)

{

DataGridViewRow row = new DataGridViewRow();

Trang 20

row = dataGridMH.CurrentRow;

BienMH.MaMH = row.Cells["MaMH"].Value.ToString();

BienMH.TenMH = row.Cells["TenMH"].Value.ToString();

BienMH.SoDVHT = (int)row.Cells["SoTC"].Value;

frmNhapDiem frm = new frmNhapDiem();

frm.ShowDialog();

}

Khi người dùng click chọn một môn học để nhập điểm thì sẽ xuất hiện Form sau:

- Khai báo biến toàn cục:

SqlConnection dbConn;

DataTable dsKQ;

SqlDataAdapter adapKQ;

- Code xử lý sự kiện Form_Load:

private void frmNhapDiem_Load(object sender, EventArgs e)

{

lblMaMH.Text = "- Mã môn học: " + BienMH.MaMH;

lblTenMH.Text = "- Tên môn học: " + BienMH.TenMH;

DataColumn col = new DataColumn();

col.DataType = System.Type.GetType("System.Int32");

Trang 21

dataGridKQHT.Columns["MaMH"].Visible = false;

dataGridKQHT.Width = this.ClientSize.Width;

dataGridKQHT.Height = this.ClientSize.Height;

}

Lưu ý: Khai báo thêm biến toàn cục trong file Program.cs:

class BienMH

{

publicstatic string MaMH = "";

publicstatic string TenMH = "";

publicstatic int SoDVHT = 0;

}

- Code xử lý nút lệnh Cập nhật:

private void cmdCapNhat_Click(object sender, EventArgs e)

Trang 22

{

adapKQ.UpdateCommand = newSqlCommand("KetQua_Sua", dbConn);

adapKQ.UpdateCommand.CommandType = CommandType.StoredProcedure;

adapKQ.UpdateCommand.Parameters.Add("@MaSV", SqlDbType.NChar).SourceColumn =

"GhiChu" ;

adapKQ.Update(dsKQ);

dbConn.Close();

}

2.8 Thiết kế form tìm kiếm có giao diện như sau:

- Khai báo biến toàn cục:

dbConn = new SqlConnection(Program.connStr);

adap = new SqlDataAdapter();

dbConn.Open();

adap.SelectCommand = new SqlCommand("SELECT MaSV as [Mã SV], HoSV as [Họ sinhviên], TenSV as [Tên SV],CASE WHEN gioiTinh='1' THEN 'Nam' ELSE 'Nữ' END AS [Giới tính],NgaySinh as [Ngày sinh],NoiSinh as [Nơi sinh],MaKhoa as [Khoa] FROM SINHVIEN", dbConn);

Trang 23

- Hàm trả về danh sách sinh viên dựa vào mã khoa:

DataTable SinhVienDS_MaKhoa(string maKhoa)

{

dbConn = new SqlConnection(Program.connStr);

adap = new SqlDataAdapter();

dbConn.Open();

adap.SelectCommand = new SqlCommand("SELECT MaSV as [Mã SV], HoSV as [Họ sinh viên], TenSV as [Tên SV],CASE WHEN gioiTinh='1' THEN 'Nam' ELSE 'Nữ' END AS [Giới tính],NgaySinh as [Ngày sinh],NoiSinh as [Nơi sinh],MaKhoa as [Khoa] FROM SINHVIEN WHERE MaKhoa='"+maKhoa +"'", dbConn);

string cmd = "SELECT * FROM KHOA";

SqlDataAdapter adap = new SqlDataAdapter(cmd, Program.connStr);

DataTable ds = new DataTable();

adap.Fill(ds);

return ds;

}

- Code xử lý sự kiện Form_Load:

private void frmSV_TimKiem_Load(object sender, EventArgs e)

- Code xử lý sự kiện tìm theo tên:

private void txtTimTen_TextChanged(object sender, EventArgs e)

{

Ngày đăng: 22/02/2019, 09:50

TỪ KHÓA LIÊN QUAN

w