PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
MỤC LỤC
Lời mở đầu 3
PHẦN I: Phân tích đề tài 4
I. Yêu cầu của đềà bài.
II. Khảo sát thực tế nghiệp vụ quản lý tra cứu và nhập sách của thư viện.
4
1. Khảo sát thực tế. 4
2. Nghiệp vụ quản lý. 5
3. Yêu cầu của chương trình. 6
PHẦN II: Thiết kế chương trình 6
I. Phân tích đề tài. 6
1. Liệt kê các chức năng. 6
2. Biểu đồ phân cấp chức năng. 7
3. Biểu đồ luồng dữ liệu. 8
II. Thiết kế cơ sở dữ liệu.
1. Các bảng cần có trong CSDL. 13
2. Mối quan hệ giữa các bảng. 15
III. Đặc tả chức năng. 15
PHẦN III: Thiết kế giao diện và xử lý cho các form 16
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
1
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN
Những yếu tố của tin học có thể khai thác để phát triển ở học sinh năng lực
và trí tuệ, ví dụ như năng lực phân tích, tổng hợp, khái quát hoá và trừu tượng
hoá. Chúng ta có thể có được năng lực tư duy như vậy là do chúng ta đã được học
môn “Phân tích và thiết kế hệ thống thông tin”. Môn này sẽ giúp chúng ta có
được những phân tích chính xác trong quá trình xây dựng các phần mềm ứng
dụng. Phần mềm “Tra cứu và nhập sách trong thư viện” của chúng em ra đời đã
đáp ứng phần nào nhu cầu của độc giả và thủ thư trong quá trình tra cứu sách.
Nhưng do kinh nghiệm và trình độ còn hạn chúng em chỉ có thể phân tích một
cách tổng quan về hệ thống tra cứu và nhập sách trong thư viện, môi trường đi
thực tế còn ít. Vì vậy nhóm thực hành chúng em rất mong nhận được sự góp ý để
cho chương trình của chúng em có thể hoàn thiện hơn.
Chúng em chân thành cảm ơn sự hướng dẫn tận tình của thày: Nguyễn
Minh Quý đã giúp chúng em hoàn thành chương trình này.
Hưng Yên : Ngày 10 - 5 – 2007
Sinh viên thực hiện: Nguyễn Văn Đònh
Nguyễn Thò Bông
Trần Thò Minh Hải
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
3
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
PHẦN I
PHÂN TÍCH ĐỀ TÀI
I. Yêu cầu của đề bài
Xây dựng phần mền tra cứu và nhập sách của thư viện
Chương trình có khả năng tra cứu các thông tin về sách và nhập sách. Qua đó làm
cho công việc quản lý sách trở lên đơn giản hơn.
Dùng ngôn ngữ lập trình C# thiết kế môi trường quản lý việc“ tra cứu và
nhập sách của thư viện”. Yêu cầu đưa ra :
- Thiết kế cơ sở dữ liệu cho chương trình.
được sách mặc dù trong thư viện vẫn còn sách mà bạn cần.
Qua khảo sát cứu thực tế chúng em đã đưa ra giải pháp để khắc phục những
nhược điểm trên. Vì vậy chúng em đã nghiên cứu và đưa ra phần mềm “Tra cứu
và nhập sách”, nó đã đáp ứng phần nào công việc của thủ thư và độc giả. Theo
đó quá trình tìm kiếm sách sẽ diễn ra như sau : Độc giả khi muốn mượn một cuốn
sách sẽ đưa thông tin cho thủ thư ( tên sách, tác giả, nhà xuất bản, thể loại … ), thủ
thư dựa vào phần mềm này để tra cứu theo những thông tin đó, phần mềm trả ra
kết quả là cuốn sách đó nằm ở giá sách nào, số lượng còn lại bao nhiêu…
Nếu độïc giả không có nhiều thông tin về cuốn sách thì có thể sử dụng phần
mềm này như là một tiện ích để tra cứu.
2. Nghiệp vụ quản lý
Công việc quản lý thư viện chính là việc quản lý kho sách
( quản lý theo tên sách, quản lý theo mã sách, quản lý theo tác giả…). Khi thư
viện nhập sách về thủ thư làm nhiệm vụ thống kê sách (xem các loại sách nhập
về gồm các loại sách gì (sách thuộc những môn nào), của những tác giả nào (tác
giả là tập thể hay cá nhân), của nhà xuất bản nào, năm xuất bản, số trang, khổ cỡ,
nội dung, tình trạng). Sau công việc thống kê sách thì thủ thư làm công việc lưu
trữ. Dựa vào các thông tin của sách mà thủ thư tìm hiểu ở trên thì mọi nội dung
của sách (tên sách, mã sách, tên tác giả, nhà xuất bản, số trang, khổ cỡ, nội dung,
tình trạng…) sẽ được lưu trữ vào sổ sách hay máy tính. Cuối cùng là thủ thư sẽ sắp
xếp sách vào kho đó là công việc lưu trữ sách vào kho, công việc lưu trữ sách vào
kho sẽ được sắp xếp theo giá, theo tác giả, theo nhà xuất bản, theo tình trạng,
theo nội dung…
3. yêu cầu của chương trình
Để đáp ứng được mục tiêu như trên và mong muốn của người sử dụng.
Chương trình cần đáp ứng một số yêu cầu sau:
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
5
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Nhìn vào biểu đồ phân cấp chức năng chúng ta có thể thấược toàn bộ công
việc của chương trình. Trong các sơ đồ trên đều có các sơ đồ luồng mức dùi
đỉnh.
3. Biểu đồ luồng dữ liệu
a. Mức ngữ cảnh
Chức năng tổng quát của hệ thống là tra cứu và nhập sách trong thư viện. Đối
tượng của hệ thống là sách. Người sử dụng ở đây là độc giả và thủ thư.
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
Tra cứu và nhập sách
QL Người dùng
Đăng nhập
Tra cứu
Cập nhật
Bổ sung
Sửa đổi
Xố
Báo cáo – in ấn
BC tất cả sách
BC theo ngành
BC theo thời gian nhập
BC theo thể loại
TC theo mã
TC theo tên sách
TC theo tác giả
TC theo NXB
7
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
b. Mức đỉnh
Thủ thư
1
QL người dùng
3
Cập nhật
4
Báo cáo – in ấn
Danh sách user
2
Tra cứu
Sách
t/t người dùng
t/t sách
KQ báo cáoKQ báo cáo
Y/c tra cứu
Y/c tra cứu
t/t tra cứu
t/t tra cứu
1.1
Đăng nhập
Thủ thư
Danh sách user
T/t đăng nhập
9
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Biểu đồ luồng dữ liệu giải thích chức năng 2. Tra cứu
Chức năng tra cứu được phân rã thành 4 chức năng: TC theo mã, TC theo tên
sách , TC theo tên tác giả, TC theo NXB.
Biểu đồ luồng dữ liệu giải thích chức năng 3. Cập nhật
Chức năng cập nhật cũng được phân rã thành 3 chức năng : Bổ sung, sửa, xoá.
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Biểu đồ luồng dữ liệu giải thích chức năng 4. Báo cáo – in ấn
Chức năng này cũng được phân rã thành 4 chức năng: Báo cáo tất cả sách, báo
cáo theo ngành, báo cáo theo thể loại, báo cáo theo thời gian nhập. Với các chức
năng này thì cả thủ thư và độc giả đều có quyền sử dụng.
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
3.2
Sửa
3.3
Xoá
Thủ thư
t/t cần sửa
t/t cần xoá
3.1
Bổ sung
t/t cần bổ sung
s
á
c
h
11
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
d. Biểu đồ thực thể liên kết
Biểu đồ thể hiện mối quan hệ giữa 3 thực thể đó là thủ thư, độc giả và sách. Thực
thể sách có 4 thuộc tính: Mã sách, tên sách, tác giả, NXB, trong đó có thuộc tính
Mã sách là thuộc tính khoá.
Xét 2 thực thể độc giả và sách ta thấy 1 độc giả có thể tra cứu nhiều sách, và 1
sách cũng có thể được tra cứu bởi nhiều độc giả. Vậy quan hệ giữa độc giả và
sách là quan hệ nhiều-nhiều.
KQ báo cáo
KQ báo cáo
KQ báo cáo
12
sáchĐộc giả
sáchThủ thư
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
II. Thiết kế CSDL
1. Các bảng cần có trong cơ sở dữ liệu
Với lưu ý : Các từ được gạch chân đều là khoá chính của bảng
• Bảng tác giả:
Bảng này đưa ra thông tin về tác giả của cuốn sách TblTacGia(MaTG,
TenTG)
tblTacGia
Tên cột Mơ tả kiểu dữ liệu
MaTG Mã tác giả Varchar
TenTG Tên tác giả Varchar
• Bảng sách:
Bảng này đưa ra các thông tin về sách
TblSach(MaSach, TenSach, SoTrang, MaTG, NamXB, TuKhoa, NXB)
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
Độc giả Thủ thư
Tra
cứu
sách
Mã sách
Tên
sách
NXB
Bảng này đưa ra các thông tin về nhà xuất bản
tblNXB (MaNXB, TenNXB)
tblNXB
Tên cột Mơ tả kiểu dữ liệu
MaNXB Mã nhà xuất bản Varchar
TenNXB Tên nhà xuất bản Varchar
• Bảng tblSachTG
Bảng này đưa ra thông tin về sách tác giả
tblSachTG (MaSach, MaTG)
TblSachTG
Tên cột Mơ tả kiểu dữ liệu
MaSach Mã số sách Varchar
MaTG Mã tác giả Varchar
2. Mối quan hệ giữa các bảng
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
14
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
a, Mối quan hệ giữa tblSach – tblTheLoai
Ứng với 1 thể loại có nhiều sách khác hoặc giống nhau, nhưng mỗi quyển
sách chỉ tương ứng với 1 thể loại nào đó. Vậy mối quan hệ ở đây là một - nhiều
MaLoai MaSach
b, Mối quan hệ giữa tblSach – tblTacGia
Ứng với 1 tác giả sẽ có rất nhiều cuốn sách, nhưng xét mỗi cuốn sách thì
chỉ thuộc về một tác giả. Vậy mối quan hệ ở đây là mối quan hệ một – nhiều.
MaTG MaSach
c, Mối quan hệ giữa tblSach – tblNXB
Ta thấy rằng 1 nhà xuất bản có thể xuất bản rất là nhiều sách khác nhau.
Nhưng xét cuốn sách cụ thể thì nó chỉ thuộc vào một nhà xuất bản. Vậy mối quan
hệ ở đây là mối quan hệ một – nhiều
sách theo ý mình thì yêu cầu tra sách để tìm kiếm nhanh. Đáp ứng được yêu cầu
này phần mềm có phần tra cứu theo mã sách để đáp ứng cho độc giả và thủ thư.
Từ menu ngang bạn click chọn tra cứu, form của tra cứu sẽ hiện ra để bạn tìm đầu
sách mà mình cần, bạn hãy nhập thông tin của mã sách mà bạn cần tìm vào hộp
text. Sau khi nhập xong thông tin về mã sách bạn click chọn nút Search. Khi đó sẽ
có một bảng hiện các thông tin liên quan đến cuốn sách mà bạn cần tìm như: Mã
sách, tên sách, tên tác giả tên nhà xuất bản…. Còn nếu thông tin mà bạn nhập về
mã sách không có thì nó sẽ trả ra kết quả là không tin thấy.
1.1 Tra cứu theo tên sách
Đây là cách tra cứu rất tiện và nhanh. Độc giả chỉ cần biết tên cuốn sách
mà mình cần tìm là gì và tìm theo tên đó bạn sẽ có được các thông tin về sách mà
bạn mong muốn. Từ menu ngang bạn click chọn tra cứu, form của tra cứu sẽ hiện
ra và bạn hãy nhập vào đó thông tin về tên của cuốn sách vào trong hộp text. Sau
đó click chọn nút Search. Khi đó bạn có thể biết các thông tin về sách bạn cần :
Tên sách, nhà xuất bản, tác giả…
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
16
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
1.3 Tra cứu theo tên tác giả
Nếu bạn quan tâm đến tác giả của cuốn sách mà bạn cần tìm, thì khi tra cứu
sách trong thư viện bạn hãy tra cứu theo tên tác giả. Từ menu ngang bạn click
chọn tra cứu, hộp thoại tra cứu hiện ra, bạn hãy nhập thông tin về tác giả vào hộp
text. Khi đó đầu sách mà tác giả đó viết sẽ hiện ra và chi tiết hơn bạn có thể biết
thêm các thông tin về: Tên sách, tên tác giả, mã sách, chủ đề… Vì vậy khi vào thư
viện bạn hãy nhớ tên tác giả mà mình cần quan tâm.
1.4 Tra cứu theo NXB
Nhiều khi bạn không nhớ được các thông tin chi tiết về cuốn sách, nếu bạn
nhớ được tên của NXB, bạn cũng có thể tra theo tên của NXB. Từ menu ngang
bạn click chọn tra cứu, khi đó hộp thoại tra cứu hiện ra, bạn hãy nhập thông tin về
{
string tensach = "'%" + txttensach.Text + "%'";
string tacgia = "'%" + txttacgia.Text + "%'";
string theloai = "'%" + txttheloai.Text + "%'";
string nxb = "'%" + txtNXB.Text + "%'";
string nam = "'%" + txtnamXB.Text + "%'";
string command="Select * from viewsearch where tensach like
"+tensach+" and tacgia like "+tacgia+" and theloai like "+theloai+" and tenNXB
like "+nxb+" and namxb like "+nam;
SqlDataAdapter da=new SqlDataAdapter(command,Connection.cn);
DataSet ds = new DataSet();
da.Fill(ds,"viewsearch");
dgvketqua.DataSource = ds.Tables["viewsearch"].DefaultView;
}
private void cmdclear_Click(object sender, EventArgs e)
{
txttensach.Text = "";
txttheloai.Text = "";
txttacgia.Text = "";
txtNXB.Text = "";
txtnamXB.Text = "";
}
private void frmsearch_Load(object sender, EventArgs e)
{
}
}
}
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
+ txttacgia.Text + "','" + txtnamxb.Text + "'," + txtsotrang.Text + ")";
SqlCommand cm = new SqlCommand(command,Connection.cn);
try
{
cm.ExecuteNonQuery();
thongb.Text = "Du lieu duoc cap nhat thanh cong !";
label.Text = "Ma sach :"+txtmasach.Text+", ma
NXB :"+txtmanxb.Text+", ma loai :"+txtmaloai.Text+", ten
sach :"+txttensach.Text+", tac gia :"+txttacgia.Text+", nam
XB :"+txtnamxb.Text+", so luong:"+txtsotrang.Text;
}
catch (Exception loi)
{
thongb.Text = "Khong the cap nhat, ban hay kiem tra lai du lieu
nhap vao !";
label.Text = loi.Message;
}
}
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
19
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
private void tabPage1_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
string command = "insert into tblnxb values('" + txtmanxb.Text +
"','" + txttennxb.Text + "')";
SqlCommand cm = new SqlCommand(command, Connection.cn);
{
tb1.Text = "Khong the cap nhat, ban hay kiem tra lai du lieu
nhap vao !";
tb2.Text = loi.Message;
}
}
private void button6_Click(object sender, EventArgs e)
{
txtmaloai1.Text = "";
txttheloai.Text = "";
}
NGUYỄN ĐỊNH – NGUYỄN BÔNG – MINH HẢI _TK3
(1)
20
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
private void button4_Click(object sender, EventArgs e)
{
txtmanxb1.Text = "";
txttennxb.Text = "";
}
private void button2_Click(object sender, EventArgs e)
{
txtmaloai.Text = "";
txtmanxb.Text = "";
txtmasach.Text = "";
txtnamxb.Text = "";
txtsotrang.Text = "";
txttacgia.Text = "";
}
private void frmnhap_Load(object sender, EventArgs e)
}
public void data(DataGridView g, string obj)
{
string command = "select * from "+obj;
SqlDataAdapter da = new SqlDataAdapter(command, Connection.cn);
DataSet ds = new DataSet();
da.Fill(ds, obj);
g.DataSource = ds.Tables[obj].DefaultView;
}
private void frmsua_Load(object sender, EventArgs e)
{
data(dataGridView1,"tblsach");
data(dataGridView2,"tblnxb");
data(dataGridView3,"tblloai");
}
private void button1_Click(object sender, EventArgs e)
{
string command = "update tblsach set masach='"+txtmasach.Text+"',
maNXB='"+txtmanxb.Text+"', maloai='"+txtmaloai.Text+"', tensach='
"+txttensach.Text+"', tacgia='"+txttacgia.Text+"', namxb='"+txtnamxb.Text+"',
soluong='"+txtsoluong.Text+"' where masach='"+txtmasach.Text+"'";
SqlCommand cm = new SqlCommand(command,Connection.cn);
cm.ExecuteNonQuery();
data(dataGridView1, "tblsach");
cm.Dispose();
}
private void tabPage1_Click(object sender, EventArgs e)
{
}
private void cmdOK_Click(object sender, EventArgs e)
{
button2.Enabled = true;
txttennxb.Enabled = true;
SqlCommand cm = new SqlCommand("Select * from tblnxb where manxb='"
+ txtmnxb.Text + "'", Connection.cn);
SqlDataReader re = cm.ExecuteReader();
while(re.Read())
{
txttennxb.Text = re.GetString(1);
}
}
private void button2_Click(object sender, EventArgs e)
{
string command = "update tblnxb set manxb='" + txtmnxb.Text + "',
tennxb=' " + txttennxb.Text + "' where manxb='" + txtmnxb.Text + "'";
SqlCommand cm = new SqlCommand(command, Connection.cn);
cm.ExecuteNonQuery();
data(dataGridView2, "tblnxb");
}
private void button3_Click(object sender, EventArgs e)
{
button4.Enabled = true;
txttheloai.Enabled = true;
SqlCommand cm = new SqlCommand("Select * from tblloai where
maloai='" + txtmloai.Text + "'", Connection.cn);
SqlDataReader re = cm.ExecuteReader();
while (re.Read())
{
txttheloai.Text = re.GetString(1);
}