b Xác định Đối tượng sử dụng hệ thống Qua khảo sát chúng em đã xác định được 2 đối tượng sử dụng đó là Quản lý: Quản lý nhân viên và kiểm tra doanh thu Nhân viên : Bán hàng và quản lý c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN HỌC PHẦN: LẬP TRÌNH NET
Đề tài 6: Xây dựng ứng dụng quản lý thư viện
Trang 22
BỘ GIÁO DỤC VÀ ĐÀO TẠO
BÀI TẬP LỚN HỌC PHẦN: LẬP TRÌNH NET
Nhóm: 3
Đề tài 6: Xây dựng ứng dụng quản lý thư viện
STT Sinh viên thực hiện Mã sinh
viên Điểm bằng số Điểm bằng chữ
Trang 3MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT 4
Chương 1 Giới thiệu về đề tài 5
1.1.Giới thiệu về đề tài .5
1.2 Kế hoạch làm đề tài .5
1.3 Các công nghệ sử dụng 11
Chương 2 Mô hình hệ thống 14
2.1 Các chức năng của hệ thống 14
2.2 Các giao diện có trong hệ thống 18
2.3 Mô hình lớp 28
2.4 Mô hình cơ sở dữ liệu 29
2.5 Các tiện ích 34
Chương 3 Phát triển hệ thống 35
3.1 Lớp GUI 35
3.2 Lớp DAL 106
3.3 Các Procedured 107
Kết luận 110
Kết quả thu được 110
Hạn chế và hướng phát triển của đề tài 1101
Danh mục sách tham khảo 111
Trang 4cho phép truy xuất đọc-ghi ngẫu nhiên đến bất kỳ vị trí nào trong bộ nhớ dựa theo địa chỉ bộ nhớ
trung, được phát triển bởi Dennis M
tính phổ biến để tạo, sửa,
và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan
hệ
Trang 5Chương 1 Giới thiệu về đề tài 1.1.Giới thiệu về đề tài
Theo tổng kết của Cục Xuất bản, In và Phát hành, năm qua toàn ngành xuất
bản trên 33.000 cuốn sách (năm 2018 đạt gần 32.000 cuốn) Lượng bản sách trên
400 triệu bản (năm 2018 đạt 390 triệu bản) Hiện nay, việc trao đổi mượn sách tại
thư viện là rất bất tiện Và việc thống kê được tất cả các đầu sách ra vào của thư
viện cũng rất khó khăn Khi khoa học công nghệ thông tin ngày càng phát triển, nó
được ứng dụng rộng rãi trong tất cả các lĩnh vực Cùng với đó nhu cầu tìm kiếm
thông tin trên sách,vở của con người ngày càng nhiều Hình thức trao đổi tìm kiếm
sách cũng ngày càng phát triển và đa dạng hơn Việc ứng dụng công nghệ thông
tin vào trao đổi sách mang lại nhiều lợi ích cho các thư viện Các thư viện giảm
đáng kể thời gian cho quản lý sách của mình Việc tìm kiếm cũng sẽ chở nên đơn
giản hơn rất nhiều Giúp độc giả có thể dễ dàng lựa chọn được những loại sách
mình đang cần một cách nhanh chóng và thuận tiện nhất
1.2 Kế hoạch làm đề tài
1.2.1 Khởi tạo dự án
a) Các hoạt động
Đội ngũ ban đầu hệ thống:
Chức vụ Tên thành viên đội ngũ hệ
Trang 6Trần Công Anh Tuyến Nguyễn Phú Quang Hưng
Test
Đàm Đức Minh Hoàng Hữu Thành
Kiểm thử phần mềm
Nguyên tắc quản lý trong dự án:
-Có vai trò và trách nhiệm nhóm rõ ràng: Khi thành viên không biết vai trò của họ là gì hoặc vai trò đó liên quan như thế nào với những người khác trong nhóm, ranh giới sẽ bị vượt qua và nảy sinh những xung đột không cần thiết Xác định rõ vai trò của từng thành viên trong nhóm để giúp mọi người làm việc tốt cùng nhau
-Tạo một chiến lược để bắt đầu và thực hiện: Đây là lúc chia sẻ tầm nhìn và
kế hoạch cho dự án, giao nhiệm vụ cho các thành viên trong nhóm và cử mọi người lên đường hoàn thành công việc
-Xác định các ưu tiên và các mốc quan trọng trước thời hạn: Xác định các
mốc quan trọng trong giai đoạn lập kế hoạch dự án sẽ giúp bạn biết liệu bạn có đang đi đúng hướng và đúng tiến độ hay không
-Minh bạch: tạo ra một hệ thống trong đó tất cả các thành viên trong nhóm có
thể truy cập tất cả thông tin liên quan về dự án một cách dễ dàng và hiệu quả
-Theo dõi và đo lường tiến độ: Kiểm tra KPI để có thể nắm bắt các vấn đề và
sửa chữa nhanh chóng
-Đánh giá rủi do: Đánh giá rủi do có thể xảy ra giúp bạn tránh thất bại trong dự
án
Trang 7Kế hoạch đối với toàn bộ dự án như thời gian bắt đầu và các giai đoạn dự kiến hoàn
thiện
Giai đoạn Tên công việc Người thực hiện Thời gian
bắt đầu
Thời gian kết thúc
2.6 Thiết kế giao diện quản lý nhà xuất bản
2.7 Thiết kế giao diện quản lý thể loại
2.8 Thiết kế giao diện quản lý gửi
Trang 82.9Thiết kế giao diện quên mật khẩu
2.10 Thiết kế giao diện quản lý phiếu trả
2.11 Thiết kế giao diện quản lý phiếu mượn
2.12 Thiết kế giao diện quản lý người dùng
Trang 9b) Xác định Đối tượng sử dụng hệ thống
Qua khảo sát chúng em đã xác định được 2 đối tượng sử dụng đó là
Quản lý: Quản lý nhân viên và kiểm tra doanh thu Nhân viên : Bán hàng và quản lý các đơn hàng
c) Phương pháp phát triển phần mềm
Lý do mà một dự án có thể được triển khai theo phương pháp Waterfall có thể bao
gồm:
Trang 101 Yêu cầu rõ ràng từ đầu: Khi yêu cầu của dự án được xác định và thay đổi ít, Waterfall có thể phù hợp Nếu yêu cầu không thay đổi nhiều trong quá trình phát triển, việc theo dõi và hoàn thành từng giai đoạn một theo Waterfall sẽ dễ dàng hơn
4 Phù hợp với nguồn lực và thời gian: Waterfall thường cho phép việc ước lượng thời gian và nguồn lực một cách rõ ràng từ đầu Nếu việc ước lượng này quan trọng trong dự án và có sẵn nguồn lực đủ để thực hiện từng giai đoạn một, Waterfall có thể được lựa chọn
d) Đánh giá tính khả thi của dự án
- Tiết kiệm sức người và nhanh chóng khi tìm kiếm sách: Phần mềm cho phép tìm kiếm tên sách giúp tiết kiệm công sức nhân viên khi tìm kiếm sách cũng như
vị trí sách nhanh hơn trước đây phải tìm qua sổ sách thủ công
-Kiểm soát số lượng tốt hơn,linh hoạt hơn sổ sách thủ công: Phần mềm sẽ đưa
ra thông báo khi 1 loại sách gần hết để người dùng phần mềm có thể bổ sung thêm tránh trường hợp người thiếu sách khi người mua cần loại sách đó
-Dễ quản lý hơn sổ sách thủ công: Tất cả dữ liệu được lưu trong CSDL dễ dàng truy xuất bằng phần mềm qua các chức năng quản lý
-Tiện lợi: Thay vì phải đến của hàng mua sách thì người mua có thể đặt mua sách tại nhà
Phù hợp với tình hình dịch bệnh hiện nay
Trang 11
1.3 Các công nghệ sử dụng
1.3.1 Ngôn ngữ lập trình c#
Ngôn ngữ C# là một ngôn ngữ lập trình hiện đại, mạnh mẽ và được thiết kế để đơn giản hóa quá trình phát triển phần mềm Nó được Microsoft phát triển như là một phần của nền tảng NET C# được sử dụng rộng rãi trong phát triển ứng dụng máy tính để bàn, web, di động và nhiều loại ứng dụng khác
Dưới đây là một số khía cạnh chính của C# và cách sử dụng C# trên Visual Studio:
Đặc điểm chính của C#
1 Cú pháp dễ hiểu: C# có cú pháp tương tự như C, C++, và Java, giúp lập trình viên
dễ dàng học và sử dụng
2 Quản lý bộ nhớ: C# sử dụng một cơ chế gọi là "garbage collection" để tự động quản
lý bộ nhớ, giảm nguy cơ lỗi bộ nhớ
3 Hỗ trợ lập trình hướng đối tượng (OOP): C# hỗ trợ các khái niệm OOP như kế thừa,
đa hình, và đóng gói, giúp tổ chức mã nguồn một cách logic và dễ quản lý
4 Tích hợp mạnh mẽ với NET Framework: C# có thể tận dụng toàn bộ thư viện và công cụ của NET, từ đó mở rộng khả năng phát triển phần mềm
1.3.2 Sử dụng ngôn ngữ c# trên Visual studio
Visual Studio là một môi trường phát triển tích hợp (IDE) mạnh mẽ được sử dụng rộng rãi để
phát triển ứng dụng C# Dưới đây là các bước cơ bản để bắt đầu với C# trong Visual Studio:
1 Cài đặt Visual Studio
• Tải và cài đặt Visual Studio từ trang web chính thức của Microsoft
• Chọn các thành phần cần thiết cho phát triển C# và NET khi cài đặt, chẳng hạn như NET desktop development, ASP.NET and web development, v.v
2 Tạo dự án C#
• Mở Visual Studio và chọn Create a new project
• Chọn loại dự án mà bạn muốn tạo, chẳng hạn như Console App, WPF App,
ASP.NET CoreWeb Application, v.v
• Đặt tên cho dự án và chọn vị trí lưu trữ, sau đó nhấn Create
3 Viết mã C#
Trang 12• Mở tệp Program.cs (hoặc tương tự tùy thuộc vào loại dự án) để viết mã nguồn C#
Trang 13Chương 2 Mô hình hệ thống (tối thiểu 15 trang)
Chức năng đăng nhập cần tính bảo mật cao, khi điền đầy đủ các thông tin thì hệ thống sẽ chấp nhận cho bạn đăng nhập và ngược lại nếu các thông tin không chính xác thì hệ thống sẽ báo lỗi và yêu cầu nhập lại
Trang 14
Quản lý
Trang 155 Quản lý tác giả, thể loại, nhà xuất bản
Nhân viên
Quản lý, nhân viên sử dụng các chức năng và theo dõi thông tin dữ liệu của chức năng Quản lý
Trang 172.2 Các giao diện có trong hệ thống
-Giao diện đăng nhập:
STT Tên đối tượng Kiểu Ý nghĩa
Ghi chú
2 Lblogin Label Hiển thị dòng chữ login
5 Btlogin Button Nút ấn để đăng nhập
6 Btloginotp Label Đăng nhập bằng otp
7 Tb1 Texbox Để nhập tài khoản
8 Tb2 Texbox Để nhập mật khẩu
Trang 18-Giao diện đổi mật khẩu
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
5 Btldoimk Button Nút ấn để đổi mật khẩu
6 Tbnhaplaimk Textbox Nhập lại mật khẩu
Trang 19- Giao diện quên mật khẩu:
STT Tên đối tượng Kiểu Ý nghĩa
Ghi chú
2 Lblquenmk Label
Hiển thị dòng chữ quên
3 Tbgmail Textbox Nhập gmail
4 Tbotp Textbox Nhập otp
Trang 20-Giao diện quản lý sách:
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
1 Frmnguoidung Form là form chính
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
8 Btxoa Button ấn để thoát
Trang 21-Giao diện quản lý sách:
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
8 Btxoa Button ấn để thoát
Trang 22-Giao diện hóa đơn mượn
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
8 Btxoa Button ấn để thoát
Trang 23-Giao diện hóa đơn trả
STT Tên đối tượng Kiểu Ý nghĩa
Ghi chú
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
Trang 24-Giao diện tác giả
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
2 Lbltacgia Label Hiển thị dòng chữ tác giả
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
Trang 25-Giao diện admin
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
6 Btdoimk Button ấn để đổi mk
7 Bttdx Button ấn để xóa thông tin
Trang 26-Giao diện thể loại:
STT Tên đối tượng Kiểu Ý nghĩa Ghi chú
2 Lbltheloai Label Hiển thị dòng chữ thể loại
5 Btthem Button ấn để thêm thông tin
6 Btsua Button ấn để sửa thông tin
7 Btthoat Button ấn để xóa thông tin
Trang 272.3 Mô hình lớp
Trang 282.4 Mô hình cơ sở dữ liệu
-Chi tiết Database
Trang 29MATL VARCHAR(10) PK X Mã Thể Loại
- Bảng TACGIA
buộc
-Bảng NHAXUATBAN
buộc
Trang 30-Bảng SACH
-Bảng SACHCHITIET
-Bảng PHIEUMUON
Trang 31MAMUON VARCHAR(10) PK X Mã Phiếu Mượn
-Bảng PHIEUMUONCT
Thuộc tính Kiểu dữ liệu Ràng
buộc
Not null Mô tả
-Bảng PHIEUTRA
Trang 32
-Bảng PHIEUTRACT
Thuộc tính Kiểu dữ liệu Ràng
buộc
Not null Mô tả
Trang 332.5 Các tiện ích
-Các Class Method
Trang 34Chương 3 Phát triển hệ thống 3.1 Lớp GUI
-Các Giao diện của lớp GUI:
Trang 35- Code của giao diện đổi mật khẩu
NguoidungRepos _repos = new NguoidungRepos();
string username, pass;
public DoiMK(string tk, string mk)
DialogResult result = MessageBox.Show("Bạn có muốn đổi mật khẩu không?",
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
var b = _repos.GetAll().FirstOrDefault(x => x.Mand ==
username && x.Chucdanh == false);
Trang 36NguoidungRepos _ng = new NguoidungRepos();
var a = _ng.GetAll().FirstOrDefault(x => (x.Mand == username || x.Email
== username) && x.Matkhau == pass && x.Chucdanh == false);
Trang 39string username = textBox1.Text;
string password = textBox3.Text;
if (username != "" && password != "")
Trang 41NguoidungRepos _repos = new NguoidungRepos();
string username, password;
public Nguoidung(string tk, string mk)
{
Trang 42username = tk;
InitializeComponent();
LoadData(_repos.GetAll());
dateTimePicker1.Format = DateTimePickerFormat.Custom; dateTimePicker1.CustomFormat = "dd/MM/yyyy";
dataGridView1.Columns[5].Name = "Ngày sinh";
dataGridView1.Columns[6].Name = "Số điện thoại";
dataGridView1.Columns[7].Name = "Email";
Trang 44}
else if (!textBox7.Text.EndsWith("@gmail.com"))
{
MessageBox.Show("Email không hợp lệ! Email phải có định dạng
@gmail.com.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
Trang 45MessageBox.Show("Năm sinh không hợp lệ! Năm sinh phải lớn hơn 2006 và nhỏ hơn 1964.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
Trang 47}
}
public void ClearData()
{
textBox1.Text = textBox2.Text = textBox5.Text = textBox6.Text =
textBox7.Text = textBox8.Text = textBox9.Text = textBox11.Text = "";
radioButton1.Checked = radioButton2.Checked = false;
int index = e.RowIndex;
var selected = dataGridView1.Rows[index];
Trang 48radioButton2.Checked = true;
}
textBox5.Text = selected.Cells[4].Value.ToString();
dateTimePicker1.Value = (DateTime)selected.Cells[5].Value; textBox6.Text = selected.Cells[6].Value.ToString();
Trang 49}
else if (!textBox7.Text.EndsWith("@gmail.com"))
{
MessageBox.Show("Email không hợp lệ! Email phải có định dạng
@gmail.com.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
isValid = false;
}
Trang 52MessageBox.Show("Xóa tài khoản thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
Trang 53}
private void button4_Click(object sender, EventArgs e)
{
NguoidungRepos _ng = new NguoidungRepos();
var a = _ng.GetAll().FirstOrDefault(x => (x.Mand == username || x.Email == username) && x.Matkhau == password && x.Chucdanh == false);
Trang 54string username; string pass;
NguoidungRepos _repos = new NguoidungRepos();
public ThongTinCaNha(string username, string pass)
Trang 55NguoidungRepos _ng = new NguoidungRepos();
var a = _ng.GetAll().FirstOrDefault(x => (x.Mand == username || x.Email
== username) && x.Matkhau == pass && x.Chucdanh == false);
Trang 56private void ThongTinCaNha_Load(object sender, EventArgs e) {
Trang 58ViewSach.Rows.Add(stt++, x.Masach, x.Tensach, x.Soluong);
}
}
private void ViewSach_CellClick(object sender, DataGridViewCellEventArgs e) {
int index = e.RowIndex;
var selected = ViewSach.Rows[index];
ViewHD.Columns[1].Name = "ID";
ViewHD.Columns[2].Name = "Mã nhân viên";
ViewHD.Columns[3].Name = "Tên nhân viên";
Trang 59int index = e.RowIndex;
var selected = ViewHD.Rows[index];
PhieuMuonRepos _repos = new PhieuMuonRepos();
if (e.ColumnIndex == ViewHD.Columns[""].Index && e.RowIndex >= 0) {
Trang 60var result = MessageBox.Show("Bạn có chắc muốn xóa thông tin này?",
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
ViewCT.Columns[0].Name = "STT";
ViewCT.Columns[1].Name = "ID"; ViewCT.Columns[1].Visible = false;
Trang 61ViewCT.Columns[2].Name = "Mã mượn"; ViewCT.Columns[2].Visible = false; ViewCT.Columns[3].Name = "Mã sách"; ViewCT.Columns[3].Visible = false; ViewCT.Columns[4].Name = "Tên sách";
PhieuMuonCTRepos _repos = new PhieuMuonCTRepos();
foreach (var x in _repos.GetByPhieumuonCT(id))