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

Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm potx

55 2,3K 24
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Bài tập thực hành Nhập Môn Công Nghệ Phần Mềm
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Bài tập thực hành
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 55
Dung lượng 3,77 MB

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 chương trình thao tác với Listbox như sau : Yêu cầu: - Chỉ cho nhập số vào textbox Nhập số - Khi nhập dữ liệu vào textbox Nhập số và nhấn Enterhoặc click vào Cập Nhật thì số mớ

Trang 1

Hình thức: Nộp đồ án (báo cáo + source code của phần mềm) + thi vấn đáp trực tiếp trên máy

dựa trên các đề tài mà giáo viên lý thuyết đề nghị hoặc các em tự đề xuất.

Tiêu chí: Phần mềm của các bạn phải thoả các tính chất sau:

1 Thiết kế dữ liệu: Tạo bảng, khóa, quan hệ.

2 Thiết kế giao diện

a Màn hình chính + thực đơn

b Màn hình đăng nhập, thay đổi qui định

c Màn hình nhập (Danh mục, 1- Nhiều và Nhiều - nhiều)

d Màn hình tra cứu

3 Kết nối CSDL

4 Debug Chương trình.

5 Cài đặt các hàm xử lý

a Thêm, Xóa, Cập nhật và Lấy dữ liệu.

b Tính toán theo nghiệp vụ bài toán.

Trang 2

Phần 1 bài tập căn bản

Bài 1 Viết chương trình theo yêu cầu sau:

Thực hiện các yêu cầu sau:

- Khi nhấn nút “Tính”, chương trình sẽ giải phương trình bậc 2, và hiển thị kết qủa trong textbox kết quả X1 hoặc X2.

- Khi nhấn nút “Bỏ qua” các textbox sẽ được xóa trắng, con trỏ sẽ chuyển về textbox A.

- Khi nhấn nút “Thoát” chương trình sẽ kết thúc.

Bài 2 Xây dựng chương trình thao tác với Listbox như sau :

Yêu cầu:

- Chỉ cho nhập số vào textbox Nhập số

- Khi nhập dữ liệu vào textbox Nhập số và nhấn Enter(hoặc click vào Cập Nhật) thì

số mới nhập này được thêm vào Listbox đồng thời dữ liệu trong textbox bị xóa và focus được chuyển về textbox

- Khi nhấn vào các phím chức năng, yêu cầu sẽ được thực hiện trên listbox

2

Trang 3

*Bài 3 (Bài tập làm thêm) : Xây dựng chương trình nhập danh sách sinh viên theo yêu cầu:

Yêu cầu:

- Nút > dùng để di chuyển các mục(còn gọi là item) được chọn từ listbox trái qua

listbox phải và ngược lại cho <

- Nút >> dùng để di chuyển tất cả các mục(kể cả không được chọn) từ listbox trái

qua listbox phải và ngược lại cho <<

- Nút Xóa dùng để xóa nhưng item được chọn trên textbox trái

Bài 4 Xây dựng chương trình thao tác với mảng

Trang 4

* Bài 5 (Bài tập làm thêm) Xây dựng chương trình xử lý chuỗi sau:

Yêu cầu:

- Khi vừa mở form chỉ có nút Thoát là sử dụng được, textbox nhập dữ liệu nhận

focus

- Khi textbox nhập dữ liệu vừa được nhập thì các nút sáng lên, đồng thời nếu xóa hết

dữ liệu trong textbox nhập thì các nút cũng mờ đi ngoại trừ nút Thoát=> viết trong

sự kiện change của textbox

- Khi các nút chức năng được nhấn thì kết quả sẽ hiển thị bên textbox Kết quả

Trang 5

Bài 6 : Thao tác với listview

1 lsvNhanVien ListView lsvNhanVien_SelectedIndexChanged

3 dtpNgaySinh DateTimePicker

4 txtDiaChi TextBox

5 txtDienThoai TextBox

6 cboBangCap ComboBox cboBangCap.SelectedValue.ToString()

9 btnCapNhat Button btnCapNhat_Click

Trang 6

4 Thoát : thoát khỏi chương trình

Khi chọn 1 dòng trên listview thì nội dung của dòng được chọn sẽ được thể hiện trên các ô

“Thông tin chi tiết”

Chú ý : kiểm tra thông tin họ tên nhân viên không được rỗng, nếu rỗng thì không cho thêm

Hướng dẫn :

Bấm vào để hiện ra menu tùy chỉnh của listview, chọn Edit Columns

Thêm các tiêu đề cột cho listview

1 Thiết lập các tham số cho listview

a FullRowSelect = true;//cho phép chọn 1 dòng

b View = View.Details;//cho phép hiển thị thông tin chi tiết, bao gồm các tiêu đề

c Columns[“Tên Cột”].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);

//cho phép tự động resize cột khi nội dung dài

2 Thêm vào 1 dòng cho listview : sử dụng ListViewItem

ListViewItem lvi = lsvNhanVien.Items.Add(txtHoten.Text);

lvi.SubItems.Add(dtpNgaySinh.Value.ToShortDateString());

lvi.SubItems.Add(txtDienThoai.Text);

lvi.SubItems.Add(txtDiaChi.Text);

3 Chọn 1 dòng trên listview : sử dụng sự kiện lsvNhanVien_SelectedIndexChanged

Chú ý : dùng 1 biến index để lưu lại dòng đang chọn

if (lsvNhanVien.SelectedItems.Count > 0)//kiểm tra listview đã có dòngđược chọn hay chưa?

6

Trang 7

{

txtHoten.Text = lsvNhanVien.SelectedItems[0].SubItems[0].Text; dtpNgaySinh.Text = lsvNhanVien.SelectedItems[0].SubItems[1].Text; txtDienThoai.Text = lsvNhanVien.SelectedItems[0].SubItems[2].Text; txtDiaChi.Text = lsvNhanVien.SelectedItems[0].SubItems[3].Text;

}

4 Nhấn nút xóa : Dùng phương thức remove hoặc removeAt của listview

if (lsvNhanVien.SelectedItems.Count > 0)//kiểm tra listview đã có dòng được chọn hay chưa?

lsvNhanVien.SelectedItems[0].SubItems[3].Text = txtDiaChi.Text;

}

Trang 8

Phần 2 LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU

BÀI 1 LÀM VIỆC VỚI MICROSOFT SQL SERVER 2005 (2008)

 Lưu ý:

o Để cài đặt SQL Server 2005 chạy trên HĐH Window XP các bạn mua version SQL Server 2005 Developer Edition hoặc sử dụng version SQL Server 2005 Express Edition kèm theo đĩa cài đặt Visual Studio 2005.

o Để có thể đăng nhập vào SQL Server bằng 2 cách Windows Authentication và SQL Server Authentication các bạn phải chọn chế độ Mixed Mode khi cài đặt.

 Các bạn xem file “Sams Teach Yourself Microsoft® SQL Server™ 2005 Express in 24 Hours.chm” để học cách cài đặt cũng như làm việc với SQL Server 2005

 Database có sơ đồ như sau :

8

Trang 9

CREATE TABLE [THAMSO](

[TenThamSo] [nvarchar](40) NOT NULL,

[GiaTri] [int] NULL,

CONSTRAINT [PK_THAMSO] PRIMARY KEY TenThamSo)

)

Tạo bảng Bằng cấp

Trang 10

CREATE TABLE [DOCGIA](

[MaDocGia] int Identity( , ),

[HoTenDocGia] [nvarchar](40) NULL,

[NgaySinh] [datetime] NULL,

[DiaChi] [nvarchar](50) NULL,

[Email] [nvarchar](30) NULL,

[NgayLapThe] [datetime] NULL,

[NgayHetHan] [datetime] NULL,

[TienNo] [float] NULL,

CONSTRAINT [PK_DOCGIA_1] PRIMARY KEY MaDocGia)

)

Tạo bảng Phiếu thu tiền

CREATE TABLE [PHIEUTHUTIEN](

[MaPhieuThuTien] int Identity( , ),

[SoTienNo] [float] NULL,

[SoTienThu] [float] NULL,

[MaDocGia] [int] NULL,

[MaNhanVien] [int] NULL,

CONSTRAINT [PK_PHIEUTHUTIEN] PRIMARY KEY MaPhieuThuTien)

)

Tạo bảng Sách

CREATE TABLE [SACH](

[MaSach] int Identity( , ),

[TenSach] [nvarchar](40) NULL,

[TacGia] [nvarchar](30) NULL,

[NamXuatBan] [int] NULL,

[NhaXuatBan] [nvarchar](40) NULL,

[TriGia] [float] NULL,

[NgayNhap] [datetime] NULL,

CONSTRAINT [PK_SACH] PRIMARY KEY MaSach)

)

Tạo bảng Phiếu mượn sách

CREATE TABLE [PHIEUMUONSACH](

[MaPhieuMuon] int Identity( , ),

[NgayMuon] [datetime] NOT NULL,

[MaDocGia] [int] NULL,

CONSTRAINT [PK_PHIEUMUONSACH] PRIMARY KEY MaPhieuMuon)

)

Tạo bảng Chi tiết phiếu mượn

CREATE TABLE [CHITIETPHIEUMUON](

[MaSach] [int] NOT NULL,

[MaPhieuMuon] [int] NOT NULL,

CONSTRAINT [PK_CHITIETPHIEUMUON] PRIMARY KEY MaSach,MaPhieuMuon)

)

Tạo khoá ngoại

ALTER TABLE [NHANVIEN] WITH NOCHECK ADD CONSTRAINT [FK_NHANVIEN_BANGCAP] FOREIGNKEY([MaBangCap])

REFERENCES [BANGCAP] ([MaBangCap])

Trang 11

ALTER TABLE [CHITIETPHIEUMUON] WITH CHECK ADD CONSTRAINT

[FK_CHITIETPHIEUMUON_PHIEUMUONSACH] FOREIGN KEY([MaPhieuMuon])

REFERENCES [PHIEUMUONSACH] ([MaPhieuMuon])

GO

ALTER TABLE [CHITIETPHIEUMUON] CHECK CONSTRAINT

[FK_CHITIETPHIEUMUON_PHIEUMUONSACH]

GO

ALTER TABLE [CHITIETPHIEUMUON] WITH CHECK ADD CONSTRAINT

[FK_CHITIETPHIEUMUON_SACH] FOREIGN KEY([MaSach])

REFERENCES [SACH] ([MaSach])

a Cách 1: Thực hiện câu lệnh Insert

insert into BANGCAP values( 'TIẾN SĨ')

insert into BANGCAP values( 'THẠC SĨ')

insert into BANGCAP values( 'ÐẠI HỌC')

insert into BANGCAP values( 'CAO ÐẲNG')

insert into BANGCAP values( 'TRUNG CẤP')

insert into NHANVIEN values( 'PHẠM ĐÀO MINH VŨ','01/24/1980', '163/30 Thành

Trang 12

 Chú ý : Chúng ta luôn luôn sử dụng lệnh để tạo Database và Dữ liệu phòng khi có vấn đề thì ta sẽ nhanh chóng tạo dựng lại được

b Cách 2:

 Tạo database QLThuVien mới (rỗng).

 Right click lên database ThuVien chọn Task\Import Data…

 Chọn Data Source, File name và click Next.

 Chọn Destination, Server name (nếu bạn dùng máy local có thể đánh vào dấu ‘.’) Connect bằng Windows hay SQL Server Authentication là tuỳ bạn và click Next.

12

Trang 13

 Chọn Copy data from…click Next

 Chọn Select All…và click Next

 Click Next, Finish.

Trang 14

 Kết quả như sau:

3 Backup & Restore Database:

Việc mang 1 database từ máy này sang máy khác rất thường xuyên xảy ra (ví dụ: chép bài từ trường về nhà và chép bài từ nhà lên trường,…) Có 2 cách để làm việc này:

1 Attach database:

a Chép 2 file :

C:\Program files\Microsoft SQL Server\MSSQL.1\Data\QLThuVien.mdf

C:\Program files\Microsoft SQL Server\MSSQL.1\Data\QLThuVien_log.ldf

b Attach 2 file trên vào SQL Server khác (máy khác).

2 Backup & Restore

 Backup:

o Right click lên database QLThuVien cần backup, chọn Task\Back Up…

14

Trang 15

o SQL Server sẽ mặc định backup database thư viện vào file ThuVien.bak theo đường dẫn mặc định sau: C:\Program files\Microsoft SQL Server\MSSQL.1\ Backup\QLThuVien.bak

o Nhấn Ok để backup, sau đó chép file ThuVien.bak sang máy mới (SQL Server khác) để Restore.

o Trong trường hợp muốn back up với 1 đường dẫn khác thì remove đường dẫn trên và Add lại đường dẫn mới muốn back up đến.

 Restore:

o Đầu tiên tạo database QLThuVien trong SQL Management Studio

o Right click lên database vừa tạo, chọn Task\Restore\Database

Trang 16

o Chọn From device chỉ đến file QLThuVien.bak

16

Trang 18

18

Trang 19

Bài 2 GIAO TIẾP CƠ SỞ DỮ LIỆU

Bài 2.1 Giao tiếp CSDL với mô hình 1 lớp

Để load thông tin của nhân viên từ table NHANVIEN cũng như là thêm, cập nhật, xóa, thì ta cần thực hiện như sau :

public partial class frmNhanVien : Form

{

SqlConnection sqlConn;//khai báo biến connection

SqlDataAdapter da; //khai báo biến dataAdapter

DataSet ds = new DataSet();//khai báo 1 dataset

public string srvName = "MINHVU-PC\\SQLEX"; //chỉ định tên server

public string dbName = "QLTHUVIEN";//chỉ định tên CSDL

Trang 20

void LoadListview()

{

lsvNhanVien.FullRowSelect = true;//cho phép chọn 1 dòng

lsvNhanVien.View = View.Details;//cho phép hiển thị thông tin chi tiết, bao gồm các tiêu đề

DataTable dt = layDanhSachNhanVien();

for (int i = 0; i < dt.Rows.Count; i++)

{

ListViewItem lvi = lsvNhanVien.Items.Add(dt.Rows[i]

["Hotennhanvien"].ToString());//dòng thứ i, tên cột là nhân viên

lvi.SubItems.Add(dt.Rows[i][2].ToString());//dùng chỉ số cột : dòng thứ i,cột thứ 1

SqlCommand cmd = new SqlCommand(sql, sqlConn);

Để khắc phục các nhược điểm trên, chúng ta chuyển sang mô hình 3 lớp

20

Trang 21

Bài 3.2 Giao tiếp CSDL với mô hình 3 lớp

Ta xây dựng 3 lớp như sau cho NHANVIEN:

1 Lớp chuyên xử lý thao tác trên CSDL : Database.cs

2 Lớp xử lý nghiệp vụ : NhanVien.cs

3 Lớp xử lý giao diện : frmNhanVien.cs

Bước 1: Xây dựng lớp giao tiếp CSDL Database.cs

1 Chức năng

 Lớp Database đảm nhiệm việc giao tiếp với cơ sở dữ liệu cho toàn ứng dụng Tất cả việc tương tác với CSDL dữ liệu diễn ra ở bất cứ nơi nào trong ứng dụng đều được thực hiện thông qua lớp này.

2 Mục đích

 Sỡ dĩ chúng ta phải xây dựng lớp này là nhằm mang lại tính dễ bảo trì cũng như tính tiến hóa cho hệ thống Nếu sau này cần thay đổi môi trường ứng dụng (sang Oracle, Access, Db2 ) thì chúng ta chỉ việc chỉnh sửa lớp Database này mà không cần quan tâm đến phần còn lại của ứng dụng.

 Lớp Database gồm có các thành phần sau:

Thuộc tính Ý nghĩa sqlconn Thuộc lớp SqlConnection Phương thức Ý nghĩa

Database Hàm khởi tạo (Constructor) Execute Thực thi một câu lệnh truy vấn và

trả về kết quả là một DataTable

Dùng cho các câu lệnh Select *

Trang 22

 Nhập vào tên lớp là Database.cs và click Add.

 Viết code cho Database.cs như sau:

C#.NET

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient; //SqlConnection,

using System.Data;//DataSet, DataTable,

Trang 23

//Contructor khởi tạo

public Database( string svrName, string dbName, bool intergratedMode, string

//Đăng nhập SQL Server sử dụng Windows Authentication Mode.

connStr = "server=" + svrName + "; database=" + dbName + "; Integrated Security = True" ;

}

else

{

//Đăng nhập SQL Server sử dụng SQL Server Authentication Mode.

connStr = "server=" + svrName + "; uid=" + usrName + "; pwd=" + pwd +

" ;database=" + dbName;

}

//Câu lệnh dùng để thiết lập kết nối đến SQL Server là server=tên_svr; “server=tên_svr;

database = tên_db;Integrated Security = True hay server=tên_svr; database = tên_db; ” hay “server=tên_svr; database = tên_db; “server=tên_svr;

uid = tên_đăng_nhập;pwd = mật_khẩu; database = tên_db ” hay “server=tên_svr; database = tên_db;

sqlconn = new SqlConnection (connStr);

}

public DataTable Execute( string strQuery)

{

//Câu lệnh này tạo mới một đối tượng SqlDataAdapter và

//cung cấp cho nó câu truy vấn cùng với kết nối hiện hành

da = new SqlDataAdapter (strQuery, sqlconn);

//DataSet đại diện cho một danh sách các DataTable (mỗi DataTable là 1

SqlCommand sqlcom = new SqlCommand (strquery, sqlconn);

sqlconn.Open(); //Mở kết nối

sqlcom.ExecuteNonQuery(); //Thực hiện câu lệnh truy vấn đã cung cấp ở trên sqlconn.Close(); //Đóng kết nối

}

public void Update(string strQuery, DataTable table)

{

Trang 24

Bước 2 : Xây dựng các màn hình danh mục

Bước 2.1 : Viết lớp xử lý nghiệp vụ cho Nhân viên : Nhanvien.cs

db = new Database(frmMDI.srvName, frmMDI.dbName,

frmMDI.IntergratedMode, frmMDI.userName, frmMDI.passWord);

}

//Lấy danh sách tất cả nhân viên

public DataTable LayDSNhanVien()

{//Trả về thông tin nhân viên và tên bằng cấp của nhân viên đó

return db.Execute("Select

Manhanvien,Hotennhanvien,ngaysinh,diachi,dienthoai,tenbangcap from NhanVien

n,bangcap b where n.MaBangCap=b.MaBangCap");

}

//Lấy danh sách bằng cấp->nạp vào combobox

public DataTable LayDSBangCap()

{

return db.Execute("select * from BangCap");

}

//Thêm 1 nhân viên mới

public void ThemNhanVien(string ten, string ngaysinh, string diachi, stringdienthoai, string index_bc)

{

string sql = string.Format("Insert Into NhanVien

Values(N'{0}','{1}',N'{2}','{3}',{4})",ten,ngaysinh,diachi,dienthoai,index_bc); db.ExecuteNonQuery(sql);

}

//Xóa 1 nhân viên

public void XoaNhanVien(string index_nv)

{

string sql = "Delete from NhanVien where MaNhanVien = " + index_nv; db.ExecuteNonQuery(sql);

}

//Cập nhật nhân viên

public void CapNhatNhanVien(string index_nv, string hoten, string ngaysinh,string diachi, string dienthoai, string index_bc)

{

//Chuẩn bị câu lẹnh truy vấn

24

Trang 25

string str = string.Format("Update NHANVIEN set HoTenNhanVien = N'{0}',NgaySinh ='{1}',diachi = N'{2}', dienthoai = '{3}', MaBangCap = {4} where

MaNhanVien = {5}",hoten,ngaysinh,diachi,dienthoai,index_bc, index_nv);

db.ExecuteNonQuery(str);

}

}

}

Bước 2.2 : Viết lớp xử lý giao diện cho frmNhanVien.cs

Thiết kế giao diện như sau, đặt tên là frmNhanVien

Xử lý Code cho frmNhanVien :

Trang 26

private void frmNhanVien_Load(object sender, EventArgs e)

//thiết lập các nút trên form

public void setButton(bool value)

//Nạp danh sách bằng cấp vào combobox cboBangCap

public void LoadDSBangCap()

{

DataTable dt_bc = nv.LayDSBangCap();

//Việc lấy dữ liệu được ủy nhiệm cho biến thuộc lớp xử lý (lớp

NhanVien) chứ không trực tiếp thực hiện ở đây

//Nạp dữ liệu lên combobox

//Hiển thị danh sách nhân viên lên Listview

public void HienThiDanhSachNV()

{

dt = nv.LayDSNhanVien();

lsvNhanVien.Items.Clear();

lsvNhanVien.View = View.Details;

for (int i = 0; i < dt.Rows.Count; i++)

Trang 27

//khi nhấn vào nút thêm

private void btnThem_Click(object sender, EventArgs e)

DateTime.Parse(lsvNhanVien.SelectedItems[0].SubItems[2].Text);

txtDiaChi.Text = lsvNhanVien.SelectedItems[0].SubItems[3].Text; txtDienThoai.Text = lsvNhanVien.SelectedItems[0].SubItems[4].Text; cboBangCap.SelectedIndex =

cboBangCap.FindString(lsvNhanVien.SelectedItems[0].SubItems[5].Text);

}

}

//Xóa 1 dòng trên listview

private void btnXoa_Click(object sender, EventArgs e)

Ngày đăng: 30/03/2014, 05:20

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w