Các khái niệm cơ bản - Cơ sở dữ liệu: Là một tập hợp các bảng dữ liệu có quan hệ với nhau sao chocấu trúc của chúng cũng như các mối quan hệ bên trong giữa chúng là tách biệt vớichương t
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM
BÁO CÁO ĐỒ ÁN
QUẢN LÝ THƯ VIỆN
Ngành: CÔNG NGHỆ THÔNG TIN
Môn học: LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS
Giảng viên hướng dẫn:
Ngô Hoài Phát Tấn MSSV: 2011110597
TP Hồ Chí Minh, Tháng 10 năm 2022
Trang 2Mục lục
MỞ ĐẦU 2
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 4
1.1 Cơ sở lý thuyết 4
1.1.1 Các khái niệm cơ bản 4
1.1.2 Khái niệm phụ thuộc dữ liệu và các dạng chuẩn 4
1.1.3 Khái niệm chỉ dẫn và khoá chỉ dẫn 5
1.1.4 Mục tiêu và tính ưu việt của mô hình quan hệ 5
1.2 Giới thiệu chung về hệ quản trị CSDL SQL-Server 5
1.2.1 Giới thiệu 5
1.2.2 Cấu trúc lệnh 6
1.3 Giới thiệu về ngôn ngữ lập trình C# 7
1.3.1 C# là ngôn ngữ đơn giản 7
1.3.2 C# là ngôn ngữ hiện đại 7
1.3.3 C# là ngôn ngữ hướng đối tượng 7
1.3.4 C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo 8
1.3.5 C# là ngôn ngữ ít từ khóa 8
1.3.6 C# là ngôn ngữ hướng module 8
1.3.7 C# sẽ là một ngôn ngữ phổ biến 9
1.3.8 Ngôn ngữ C# và những ngôn ngữ khác 9
1.3.9 Các bước chuẩn bị cho chương trình 10
1.3.10 Lớp, đối tượng và kiểu dữ liệu (type) 11
1.3.11 Phương thức 12
1.3.12 Chú thích 12
1.3.13 Ứng dụng Console 12
1.3.14 Namespace 13
1.3.15 Từ khóa using 13
1.3.16 Phân biệt chữ thường và chữ hoa 14
1.3.17 Từ khóa static 14
CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 15
Trang 32.1.Giới thiệu về thư viện trường đại học Sao Đỏ 15
2.1.1 Mô tả phạm vi của hệ thống 15
2.2 Xác định yêu cầu của hệ thống 16
2.3 Mô tả các chức năng của hệ thống 16
2.4 Sơ đồ USECASE 17
2.5.Xây dựng biểu đồ lớp phân tích 27
2.6 Biểu đồ trạng thái 27
2.7 Các biểu đồ tuần tự 28
2.7.1 Biểu đồ tuần tự cho chức năng Đăng nhập 29
2.7.2 Biểu đồ tuần tự cho chức năng tìm kiếm 30
2.7.3 Biểu đồ tuần tự cho chức năng quản lí mượn sách 31
2.7.4 Biểu đồ tuần tự cho chức năng quản lí trả sách 32
2.7.5 Biểu đồ tuần tự cho chức năng quản lí thống kê 33
2.8 Thiết kế cơ sở dữ liệu 33
CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ THƯ VIỆN 37
3.1 Thiết kế các bảng CSDL 37
3.1.1 Bảng tài khoản(taikhoan) 37
3.1.2 Bảng thủ thư (thuthu) 37
3.1.3 Bảng độc giả (docgia) 37
3.1.4 Bảng khoa (khoa) 38
3.1.5.Bảng lớp (lop) 38
3.1.6.Bảng Mượn trả (muontra) 38
3.1.7.Bảng nhà xuất bản (nhaxuatban) 39
3.1.8.Bảng phân loại (phanloai) 39
3.1.9.Bảng sách (sach) 39
3.1.10.Mối quan hệ giữa các bảng 40
3.2 Thiết kế giao diện phần mềm 40
3.2.1 Giao diện form chính của chương trình 40
3.2.2 Form đăng nhập 41
3.2.5 Form nhà xuất bản 42
3.2.6 Form quản lý độc giả 43
3.2.7 Form mượn sách 43
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 45
Trang 41 Cài đặt 45
2 Chạy thử 45
3 Đánh giá chương trình 45
4 Hướng phát triển 46
TÀI LIỆU THAM KHẢO 47
Trang 5MỞ ĐẦU
1 Lý do chọn đề tài
Quản lý thư viện là một chuỗi công việc rất vất vã và tốn nhiều công sức Việc tinhọc hoá trong bài toán quản lý thư viện sẽ giúp việc quản lý trở nên đơn giản và đặcbiệt là tình chính xác cao Đặc biệt tin học hoá trong bài toán quản lý sẽ giúp việc truyvấn thông tin được nhanh chóng theo yêu cầu khác nhau
Và sự ra đời của một hệ thống “Quản lý thư viện trường đại học Sao Đỏ” phục
vụ cho công tác nghiệp vụ của con người làm giảm thiểu tối đa những vất vả trongcông việc
Nhận thấy việc xây dựng chương trình quản lý cho thư viện có thể giúp khắcphục khó khăn trên đồng thời tăng khả năng tiếp cận của độc giả Bởi vậy, nhóm em
2 Mục đích đề tài
Hệ thống quản lý thư viện được xây dựng nhằm mục đích giải quyết các yêucầu sau:
1 Giúp sinh viên tra cứu sách
2 Cung cấp cho thủ thư các thông tin về các đầu sách một độc giả đang mượn
và hạn phải trả và các cuốn sách còn đang được mượn
3 Thống kê hàng tháng số sách cho mượn theo các chủ đề: khoa, khóa học, lớp
… Lập biểu đồ tỷ lệ bạn đọc vào thư viên, báo cáo tổng hợp
4 Hỗ trợ thủ thư cập nhật thông tin sách, xác nhận cho mượn sách và nhận lạisách khi độc giả trả sách
5 Hỗ trợ quản lý các thông tin về độc giả dựa trên thẻ thư viện
Các yêu cầu phi chức năng:
1 Hệ thống triển khai theo dạng Website trên hệ thống mạng nội bộ của trường
2 Thủ thư sử dụng hệ thống để cập nhật và quản lý quá trình mượn trả sách
3 Thông tin thống kê phải đảm bảo tính chính xác, khách quan
3 Đối tượng của đề tài
- Chương trình được thiết kế cho hai đối tượng sử dụng là độc giả và thủ thư:+ Độc giả: sinh viên trong trường
+ Thủ thư: có toàn quyền sử dụng và cập nhật thông tin, quản lí sách
4 Phạm vi nhiên cứu
- Tìm hiểu kĩ thuật lập trình C# và hệ quản trị CSDL SQL-Server 2008
- Các chức năng của chương trình quản lý sách và độc giả
- Quy trình xây dựng chương trình quản lý sách và độc giả
Trang 65 Phương pháp nghiên cứu
- Nghiên cứu lý thuyết
- Khảo sát thực tế
- Phân tích thiết kế hệ thống chương trình cho phù hợp
- Xây dựng chương trình theo những yêu cầu đã đặt ra
6 Thực tiễn của đề tài
Trong thực tế ta có thể thấy rằng một số hệ thống hiện tại nếu làm thủ công thìthủ thư có cố gắng và cải thiện phương pháp làm việc đến đâu đi chăng nữa thì vẫn tồntại những vấn đề sau:
- Thời gian tìm kiếm ghi chép quá lớn, khi có thông tin cần thiết thì thời giantổng hợp thông tin rất nhiều không đáp ứng được yêu cầu
- Công việc tổng hợp hết sức khó khăn dễ bị nhầm lẫn
- Nhiều khoản mục thông tin và ghi chép không thống nhất
- Nhiều người làm một công việc thông tin sẽ không nhất quán và dễ xảy ra saixót
- Khi có sự thay đổi điều chỉnh tốn nhiều thời gian
Từ vấn đề trên và điều kiện cụ thể của cơ quan cho phép việc đưa tin học vàoquản lí nó sẽ làm giảm được rất nhiều về thời gian ít sai sót, giúp cho người làm côngviệc quản lí có thời gian nghiên cứu hoặc nghiên cứu học tập vào những công tác khác
7 Bố cục đề tài
Nội dung đồ án gồm các thành phần sau:
MỞ ĐẦU
- Chương 1 Cơ sở lý thuyết
- Chương 2 Phân tích, thiết kế hệ thống
- Chương 3 Xây dựng ứng dụng quản lý thư việnKẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
TÀI LIỆU THAM KHẢO
Trang 7CHƯƠNG 1 CƠ SỞ LÝ THUYẾT1.1 Cơ sở lý thuyết
1.1.1 Các khái niệm cơ bản
- Cơ sở dữ liệu: Là một tập hợp các bảng dữ liệu có quan hệ với nhau sao chocấu trúc của chúng cũng như các mối quan hệ bên trong giữa chúng là tách biệt vớichương trình ứng dụng bên ngoài, đồng thời nhiều người dùng khác nhau cũng nhưnhiều ứng dụng khác nhau có thể cùng khai thác và chia xẻ một cách chọn lọc lúc cần
- Thực thể: Là hình ảnh cụ thể của một đối tượng trong hệ thống thông tin quản
- Các phép toán tối thiểu:
* Tìm kiếm dữ liệu theo tiêu chuẩn đã chọn, không làm thay đổi trạngthái cơ sở dữ liệu
* Thay đổi cấu trúc cơ sở dữ liệu
* Thay đổi nội dung cơ sở dữ liệu
* Xử lý, tính toán trên cơ sở dữ liệu
1.1.2 Khái niệm phụ thuộc dữ liệu và các dạng chuẩn
- Một thuộc tính gọi là phụ thuộc vào các thuộc tính khác khi giá trị của thuộctính này phụ thuộc vào giá trị của thuộc tính kia Sự phụ thuộc này có thể là gián tiếphay trực tiếp
- Một quan hệ bao giờ cũng có một nhóm thuộc tính mà giá trị của chúng quiđịnh giá trị của các thuộc tính khác, nhóm thuộc tính đó gọi là khoá
Trang 8- Với một quan hệ tuỳ vào các phụ thuộc của các thuộc tính vào khoá có trong đó
mà ta phân chia các quan hệ đó thành các dạng chuẩn khác nhau Các dạng chuẩn cơbản:
* Dạng chuẩn 1
* Dạng chuẩn 2
* Dạng chuẩn 3Các dữ liệu lưu trữ dưới dạng chuẩn 3 tránh được hiện tượng dư thừa dữ liệu,tạo cho dữ liệu có tính độc lập cao Các quan hệ nếu chưa ở dạng chuẩn 3 sẽ đượcphân rã thành các quan hệ nhỏ hơn có dạng chuẩn 3
1.1.3 Khái niệm chỉ dẫn và khoá chỉ dẫn
Để có thể tìm kiếm thông tin nhanh theo một tiêu chuẩn nào đó chúng ta tạo racác thông tin chỉ dẫn theo tiêu chuẩn đó Các thông tin chỉ dẫn là các thông tin giúp tatìm kiếm dữ liệu nhanh Các thông tin này gọi là khoá chỉ dẫn Khoá chỉ dẫn có thể là
1 trường hoặc nhiều trường trong trường hợp này phải chỉ ra thứ tự Với cách tạo rakhoá theo tiêu chuẩn nào đó ta có thể tìm kiếm dữ liệu nhanh theo tiêu chuẩn đó
1.1.4 Mục tiêu và tính ưu việt của mô hình quan hệ
- Cho một lược đồ dữ liệu dễ sử dụng, mô hình đơn giản, người dùng không cầnbiết cấu trúc vật lý của dữ liệu Tiện lợi cho người dùng cuối không chuyên tin học
- Tăng cường tính độc lập của dữ liệu, đặc biệt là độc lập vật lý
- Cho một khả năng có một ngôn ngữ thao tác bậc cao
- Tối ưu việc tìm kiếm dữ liệu trong cơ sở dữ liệu, hệ quản trị tự tìm cách truynhập
- Cải thiện nâng cao toàn vẹn dữ liệu và bảo mật dữ liệu
- Có thể phục vụ cho nhiều chương trình ứng dụng
- Có cơ sở toán học phong phú chắc chắn:
* Lý thuyết quan hệ
* Dạng chuẩn có độ bền vững và đầy đủ thông tin
1.2 Giới thiệu chung về hệ quản trị CSDL SQL-Server
1.2.1 Giới thiệu
SQL (Structured Query Language) là ngôn ngữ truy vấn dữ liệu được sử dụngcho các hệ quản trị cơ sở dữ liệu quan hệ Ngôn ngữ SQL chuẩn được đưa ra bởi ANSI(American National Standards Institude) và ISO (International StandardsOrganization) với phiên bản mới nhất hiện nay là phiên bản SQL-92 (phiên bản được
Trang 9đưa ra vào năm 1992) Ngôn ngữ SQL được cài đặt trong tất cả các hệ quản trị cơ sở
dữ liệu Mặc dù có nhiều ngôn ngữ khác nhau được đưa ra cho các hệ quản trị CSDLquan hệ, SQL là ngôn ngữ được sử dụng rộng rãi hiện nay trong rất nhiều hệ thốngCSDL thương mại như Oracle, SQL Server, DB2
1.2.2 Cấu trúc lệnh
Các lệnh trong ngôn ngữ SQL được chia làm 3 loại chính:
- Ngôn ngữ định dữ liệu: (DDL : Data Definition Language)
+ Gồm các lệnh CREATE, ALTER, DROP định nghĩa, thay đổi và hủy bỏ cácđối tượng dữ liệu như TABLE (bảng), INDEX (chỉ mục), SEQUENCE (trình tự),VIEW (khung nhìn)
- Ngôn ngữ thao tác dữ liệu: (DML : Data Manipulation Language)
+ Gồm các lệnh SELECT, INSERT, UPDATE cho phép thao tác trên đối tượng
dữ liệu
- Ngôn ngữ điều khiển:
+ Được sử dụng trong việc cấp phát hay hủy bỏ quyền dữ liệu của người sửdụng đối với các câu lệnh SQL hoặc trên các đối tượng CSDL
+ Gồm các câu lệnh: GRANT và REVOKE
+ Điều quan trọng nhất là tất cả các đối tượng tạo ra trong cơ sở dữ liệu đềuđược lưu trữ trong từ điển dữ liệu hay trong danh mục
+ Có thể sử dụng ngôn ngữ SQL ở các dạng tương tác hay dạng nhúng
+ Dạng tương tác cho phép gửi câu lệnh trực tiếp đến hệ quản trị cơ sở dữ liệu
và nhanh chóng nhận kết quả trả về Đối với dạng nhúng thì các câu lệnh SQL đượcchứa trong chương trình viết bằng ngôn ngữ cấp cao nhằm tận dụng các tính năng lậptrình không được SQL hỗ trợ, không trực tiếp nhận kết quả trả về từ câu lệnh SQL vàkết quả được truyền vào biến hay tham số của thủ tục
+ Những lệnh trong SQL có khả năng sử dụng ở dạng tương tác đều có thểđược dùng trong các chương trình ứng dụng Tuy nhiên, trong một số trường hợp cúpháp của hai dạng này có phần khác biệt cần lưu ý khi sử dụng
+ SQL chỉ áp dụng trong các hệ quản trị cơ sở dữ liệu Hệ quản trị cơ sở dữliệu là phần mềm cho phép định nghĩa, khởi tạo, bảo trì cơ sở dữ liệu và cung cấp cáctruy xuất dữ liệu Thông thường nó ám chỉ cho dữ liệu này được lưu trữ, tuy nhiêntrong các hệ cơ sở dữ liệu tin học hóa, cơ sở dữ liệu còn bao gồm các thành phần khácnhư phần cứng, phần mềm, người sử dụng
Trang 101.3 Giới thiệu về ngôn ngữ lập trình C#
- Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy kiểu dữliệu được dựng sẵn Tuy nhiên ngôn ngữ C# có ý nghĩ cao khi nó thực thi những kháiniệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cấu trúc, thành phầncomponent, lập trình hướng đối tượng Ngôn ngữ C# được xây dựng trên nền tảng củaC++ và JAVA Ngôn ngữ C# chứa những từ khóa cho việc khai báo những kiểu lớpđối tượng mới và những phương thức hay thuộc tính của lớp, và cho việc thức thi đónggói, kế thừa và đa hình, ba thuộc tính cơ bản của bất cứ ngôn ngữ lập trình hướng đốitượng nào
1.3.1 C# là ngôn ngữ đơn giản
- C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và c++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo(virtual base class) Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đếnnhững vấn đề cho các người phát triển C++
- Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++ Nếu chúng ta thânthiện với C và C++ hoặc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo,
cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C
và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn Một vài trongcác sự cải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi
1.3.2 C# là ngôn ngữ hiện đại
- Những đặc tính như là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữliệu mở rộng, và bảo mật mã nguồn là những đặc tính được mong đợi trong một ngônngữ hiện đại C# chứa tất cả những đặc tính trên Nếu là người mới học lập trình có thểchúng ta sẽ cảm thấy những đặc tính trên phức tạp và khó hiểu Tuy nhiên, cũng đừng
lo lắng chúng ta sẽ dần dần được tìm hiểu những đặc tính qua các chương trong cuốnsách này
* Ghi chú: Con trỏ được tích hợp vào ngôn ngữ C++ Chúng cũng là nguyênnhân gây ra những rắc rối của ngôn ngữ này C# loại bỏ những phức tạp và rắc rối phátsinh bởi con trỏ Trong C#, bộ thu gom bộ nhớ tự động và kiểu dữ liệu an toàn đượctích hợp vào ngôn ngữ, sẽ loại bỏ những vấn đề rắc rối của C++
1.3.3 C# là ngôn ngữ hướng đối tượng
- Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object- orientedlanguage) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình
Trang 11(polymorphism) C# hỗ trợ tất cả những đặc tính trên Phần hướng đối tượng của C# sẽđược trình bày chi tiết trong một chương riêng ở phần sau.
1.3.4 C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo
- Như đã đề cập trước, với ngôn ngữ C# chúng ta chỉ bị giới hạn ở chính bởibản thân hay là trí tưởng tượng của chúng ta Ngôn ngữ này không đặt những ràngbuộc lên những việc có thể làm C# được sử dụng cho nhiều các dự án khác nhau như
là tạo ra ứng dụng xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trìnhbiên dịch cho các ngôn ngữ khác
vụ nào Bảng sau liệt kê các từ khóa của ngôn ngữ C#
Bảng 1.1: Các từ khóa của ngôn ngữ C#
1.3.6 C# là ngôn ngữ hướng module
- Mã nguồn C# có thể được viết trong những phần được gọi là những lớp,những lớp này chứa các phương thức thành viên của nó Những lớp và những phươngthức có thể được sử dụng lại trong ứng dụng hay các chương trình khác Bằng cách
Trang 12truyền các mẫu thông tin đến những lớp hay phương thức chúng ta có thể tạo ra những
mã nguồn dùng lại có hiệu quả
1.3.7 C# sẽ là một ngôn ngữ phổ biến
- C# là một trong những ngôn ngữ lập trình mới nhất Vào thời điểm cuốn sáchnày được viết, nó không được biết như là một ngôn ngữ phổ biến Nhưng ngôn ngữnày có một số lý do để trở thành một ngôn ngữ phổ biến Một trong những lý do chính
là Microsoft và sự cam kết của NET
- Microsoft muốn ngôn ngữ C# trở nên phổ biến Mặc dù một công ty không thểlàm một sản phẩm trở nên phổ biến, nhưng nó có thể hỗ trợ Cách đây không lâu,Microsoft đã gặp sự thất bại về hệ điều hành Microsoft Bob Mặc dù Microsoft muốnBob trở nên phổ biến nhưng thất bại C# thay thế tốt hơn để đem đến thành công sơvới Bob Thật sự là không biết khi nào mọi người trong công ty Microsoft sử dụngBob trong công việc hằng ngày của họ Tuy nhên, với C# thì khác, nó được sử dụngbởi Microsoft Nhiều sản phẩm của công ty này đã chuyển đổi và viết lại bằng C#.Bằng cách sử dụng ngôn ngữ này Microsoft đã xác nhận khả năng của C# cần thiết chonhững người lập trình
- Micorosoft NET là một lý do khác để đem đến sự thành công của C# .NET làmột sự thay đổi trong cách tạo và thực thi những ứng dụng
- Ngoài hai lý do trên ngôn ngữ C# cũng sẽ trở nên phổ biến do những đặc tínhcủa ngôn ngữ này được đề cập trong mục trước như: đơn giản, hướng đối tượng, mạnhmẽ
- Microsoft nói rằng C# mang đến sức mạnh của ngôn ngữ C++ với sự dễ dàngcủa ngôn ngữ Visual Basic Có thể nó không dễ như Visual Basic, nhưng với phiênbản Visual Basic.NET (Version 7) thì ngang nhau Bởi vì chúng được viết lại từ mộtnền tảng Chúng ta có thể viết nhiều chương trình với ít mã nguồn hơn nếu dùng C#
- Mặc dù C# loại bỏ một vài các đặc tính của C++, nhưng bù lại nó tránh đượcnhững lỗi mà thường gặp trong ngôn ngữ C++ Điều này có thể tiết kiệm được hàng
Trang 13giờ hay thậm chí hàng ngày trong việc hoàn tất một chương trình Chúng ta sẽ hiểunhiều về điều này trong các chương của giáo trình.
- Một điều quan trọng khác với C++ là mã nguồn C# không đòi hỏi phải có tậptin header Tất cả mã nguồn được viết trong khai báo một lớp.Như đã nói ở bêntrên .NET runtime trong C# thực hiện việc thu gom bộ nhớ tự động Do điều này nênviệc sử dụng con trỏ trong C# ít quan trọng hơn trong C++ Những con trỏ cũng có thểđược sử dụng trong C#, khi đó những đoạn mã nguồn này sẽ được đánh dấu là không
an toàn (unsafe code)
- C# cũng từ bỏ ý tưởng đa kế thừa như trong C++ Và sự khác nhau khác là C#đưa thêm thuộc tính vào trong một lớp giống như trong Visual Basic Và những thànhviên của lớp được gọi duy nhất bằng toán tử “.” khác với C++ có nhiều cách gọi trongcác tình huống khác nhau
- Một ngôn ngữ khác rất mạnh và phổ biến là Java, giống như C++ và C# đượcphát triển dựa trên C Nếu chúng ta quyết định sẽ học Java sau này, chúng ta sẽ tìmđược nhiều cái mà học từ C# có thể được áp dụng Điểm giống nhau C# và Java là cảhai cùng biên dịch ra mã trung gian: C# biên dịch ra MSIL còn Java biên dịch rabytecode Sau đó chúng được thực hiện bằng cách thông dịch hoặc biên dịch just-in-time trong từng máy ảo tương ứng Tuy nhiên, trong ngôn ngữ C# nhiều hỗ trợ đượcđưa ra để biên dịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu dữ liệu
cơ bản hơn Java và cũng cho phép nhiều sự mở rộng với kiểu dữ liệu giá trị Ví dụ,ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu này được giới hạn đến một tập hằngđược định nghĩa trước, và kiểu dữ liệu cấu trúc đây là kiểu dữ liệu giá trị do ngườidùng định nghĩa Chúng ta sẽ được tìm hiểu kỹ hơn về kiểu dữ liệu tham chiếu và kiểu
dữ liệu giá trị sẽ được trình bày trong phần sau
- Tương tự như Java, C# cũng từ bỏ tính đa kế thừa trong một lớp, tuy nhiên môhình kế thừa đơn này được mở rộng bởi tính đa kế thừa nhiều giao diện
1.3.9 Các bước chuẩn bị cho chương trình
- Thông thường, trong việc phát triển phần mềm, người phát triển phải tuân thủtheo quy trình phát triển phần mềm một cách nghiêm ngặt và quy trình này đã đượcchuẩn hóa Tuy nhiên trong phạm vi của chúng ta là tìm hiểu một ngôn ngữ mới vàviết những chương trình nhỏ thì không đòi hỏi khắt khe việc thực hiện theo quy trình.Nhưng để giải quyết được những vấn đề thì chúng ta cũng cần phải thực hiện đúngtheo các bước sau Đầu tiên là phải xác định vấn đề cần giải quyết Nếu không biết rõvấn đề thì ta không thể tìm được phương pháp giải quyết Sau khi xác định được vấn
đề, thì chúng ta có thể nghĩ ra các kế hoạch để thực hiện Sau khi có một kế hoạch, thì
Trang 14có thể thực thi kế hoạch này Sau khi kế hoạch được thực thi, chúng ta phải kiểm tra lạikết quả để xem vấn đề được giải quyết xong chưa Logic này thường được áp dụngtrong nhiều lĩnh vực khác nhau, trong đó có lập trình.
- Khi tạo một chương trình trong C# hay bất cứ ngôn ngữ nào, chúng ta nêntheo những bước tuần tự sau:
+ Xác định mục tiêu của chương trình Ví dụ mục tiêu để viết chương trình xử
lý văn bản đơn giản, mục tiêu chính là xây dựng chương trình cho phép soạn thảo vàlưu trữ những chuỗi ký tự hay văn bản Nếu không có mục tiêu thì không thể viết đượcchương trình hiệu quả
+ Xác định những phương pháp giải quyết vấn đề Tạo một chương trình để giảiquyết vấn đề Bước thứ hai là quyết định đến phương pháp để viết chương trình Bướcnày xác định những thông tin nào cần thiết được sử dụng trong chương trình, các hìnhthức nào được sử dụng Từ những thông tin này chúng ta rút ra được phương pháp đểgiải quyết vấn đề
+ Thực thi chương trình để xem kết quả
1.3.10 Lớp, đối tượng và kiểu dữ liệu (type)
- Điều cốt lõi của lập trình hướng đối tượng là tạo ra các kiểu mới Kiểu là mộtthứ được xem như trừu tượng Nó có thể là một bảng dữ liệu, một tiểu trình, hay mộtnút lệnh trong một cửa sổ Tóm lại kiểu được định nghĩa như một dạng vừa có thuộctính chung (properties) và các hành vi ứng xử (behavior) của nó
- Nếu trong một ứng dụng trên Windows chúng ta tạo ra ba nút lệnh OK,Cancel, Help, thì thực chất là chúng ta đang dùng ba thể hiện của một kiểu nút lệnhtrong Windows và các nút này cùng chia xẻ các thuộc tính và hành vi chung với nhau
Ví dụ, các nút có các thuộc tính như kích thước, vị trí, nhãn tên (label), tuy nhiên mỗithuộc tính của một thể hiện không nhất thiết phải giống nhau, và thường thì chúngkhác nhau, như nút OK có nhãn là “OK”, Cancel có nhãn là “Cancel” Ngoài ra cácnút này có các hành vi ứng xử chung như khả năng vẽ, kích hoạt, đáp ứng các thôngđiệp nhấn,…Tùy theo từng chức năng đặc biệt riêng của từng loại thì nội dung ứng xửkhác nhau, nhưng tất cả chúng được xem như là cùng một kiểu
- Cũng như nhiều ngôn ngữ lập trình hướng đối tượng khác, kiểu trong C# đượcđịnh nghĩa là một lớp (class), và các thể hiện riêng của từng lớp được gọi là đối tượng(object) Trong các chương kế tiếp sẽ trình bày các kiểu khác nhau ngoài kiểu lớp nhưkiểu liệt kê, cấu trúc và kiểu ủy quyền (delegates)
Trang 151.3.11 Phương thức
- Hai thành phần chính cấu thành một lớp là thuộc tính hay tính chất và phươngthức hay còn gọi là hành động ứng xử của đối tượng Trong C# hành vi được địnhnghĩa như một phương thức thành viên của lớp
- Phương thức chính là các hàm được định nghĩa trong lớp Do đó, ta còn có thểgọi các phương thức thành viên là các hàm thành viên trong một lớp Các phương thứcnày chỉ ra rằng các hành động mà lớp có thể làm được cùng với cách thức làm hànhđộng đó Thông thường, tên của phương thức thường được đặt theo tên hành động, ví
dụ như DrawLine() hay GetString()
- Khi chương trình thực thi, CLR gọi hàm Main() đầu tiên, hàm Main() là đầuvào của chương trình, và mỗi chương trình phải có một hàm Main() Đôi khi chươngtrình có nhiều hàm Main() nhưng lúc này ta phải xác định các chỉ dẫn biên dịch đểCLR biết đâu là hàm Main() đầu vào duy nhất trong chương trình
- Việc khai báo phương thức được xem như là một sự giao ước giữa người tạo
ra lớp và người sử dụng lớp này Người xây dựng các lớp cũng có thể là người dùnglớp đó, nhưng không hoàn toàn như vậy Vì có thể các lớp này được xây dựng thànhcác thư viện chuẩn và cung cấp cho các nhóm phát triển khác…Do vậy việc tuân thủtheo các qui tắc lá rất cần thiết
- Để khai báo một phương thức, phải xác định kiểu giá trị trả về, tên củaphương thức, và cuối cùng là các tham số cần thiết cho phương thức thực hiện
1.3.12 Chú thích
- Một chương trình được viết tốt thì cần phải có chú thích các đoạn mã đượcviết Các đoạn chú thích này sẽ không được biên dịch và cũng không tham gia vàochương trình Mục đích chính là làm cho đoạn mã nguồn rõ ràng và dễ hiểu
1.3.13 Ứng dụng Console
- Ứng dụng này giao tiếp với người dùng thông quan bàn phím và không cógiao diện người dùng (UI), giống như các ứng dụng thường thấy trong Windows.Trong các chương xây dựng các ứng dụng nâng cao trên Windows hay Web thì ta mớidùng các các giao diện đồ họa Còn để tìm hiểu về ngôn ngữ C# thuần tuý thì cách tốtnhất là ta viết các ứng dụng console
- Trong hai ứng dụng đơn giản trên ta đã dùng phương thức WriteLine() của lớpConsole Phương thức này sẽ xuất ra màn hình dòng lệnh hay màn hình DOS chuỗitham số đưa vào
Trang 161.3.14 Namespace
- Như chúng ta đã biết NET cung cấp một thư viện các lớp đồ sộ và thư việnnày có tên là FCL (Framework Class Library) Trong đó Console chỉ là một lớp nhỏtrong hàng ngàn lớp trong thư viện Mỗi lớp có một tên riêng, vì vậy FCL có hàngngàn tên như ArrayList, Dictionary, FileSelector,…
- Điều này làm nảy sinh vấn đề, người lập trình không thể nào nhớ hết được têncủa các lớp trong NET Framework Tệ hơn nữa là sau này có thể ta tạo lại một lớptrùng với lớp đã có chẳng hạn Ví dụ trong quá trình phát triển một ứng dụng ta cầnxây dựng một lớp từ điển và lấy tên là Dictionary, và điều này dẫn đến sự tranh chấpkhi biên dịch vì C# chỉ cho phép một tên duy nhất
- Chắc chắn rằng khi đó chúng ta phải đổi tên của lớp từ điển mà ta vừa tạothành một cái tên khác chẳng hạn như myDictionary Khi đó sẽ làm cho việc phát triểncác ứng dụng trở nên phức tạp, cồng kềnh Đến một sự phát triển nhất định nào đó thìchính là cơn ác mộng cho nhà phát triển
- Giải pháp để giải quyết vấn đề này là việc tạo ra một namespace, namsespace
sẽ hạn chế phạm vi của một tên, làm cho tên này chỉ có ý nghĩa trong vùng đã địnhnghĩa
1.3.15 Từ khóa using
- Để làm cho chương trình gọn hơn, và không cần phải viết từng namespace chotừng đối tượng, C# cung cấp từ khóa là using, sau từ khóa này là một namespace haysubnamespace với mô tả đầy đủ trong cấu trúc phân cấp của nó Ta có thể dùng dòng
lệnh: "using System" ở đầu chương trình và khi đó trong chương trình nếu chúng ta
có dùng đối tượng Console thì không cần phải viết đầy đủ: System.Console mà chỉ cần viết Console
- Mặc dù chúng ta chỉ định rằng chúng ta sử dụng namespace System, và khônggiống như các ngôn ngữ khác, không thể chỉ định rằng chúng ta sử dụng đối tượng
System.Console.
- Cách biểu diễn namespace có thể làm giảm nhiều thao tác gõ bàn phím, nhưng
nó có thể sẽ không đem lại lợi ích nào bởi vì nó có thể làm xáo trộn những namespace
có tên không khác nhau Giải pháp chung là chúng ta sử dụng từ khóa using với cácnamespace đã được xây dựng sẵn, các namespace do chúng ta tạo ra, nhữngnamespace này chúng ta đã nắm chắc sưu liệu về nó Còn đối với namespace do các
hãng thứ ba cung cấp thì chúng ta không nên dùng từ khóa using.
Trang 171.3.16 Phân biệt chữ thường và chữ hoa
- Cũng giống như C/C++, C# là ngôn ngữ phân biệt chữ thường với chữ hoa,điều này có nghĩa rằng hai câu lệnh writeLine thì khác với WriteLine và cũng khác vớiWRITELINE
- Đáng tiếc là C# không giống như VB, môi trường phát triển C# sẽ không tựsửa các lỗi này, nếu chúng ta viết hai chữ với cách khác nhau thì chúng ta có thể đưavào chương trình gỡ rối tìm ra các lỗi này
- Để trách việc lãnh phí thời gian và công sức, người ta phát triển một số quiước cho cách đặt tên biến, hằng, hàm, và nhiều định danh khác nữa Qui ước tronggiáo trình này dùng cú pháp lạc đà (camel notation) cho tên biến và cú pháp Pascal chohàm, hằng, và thuộc tính
1.3.17 Từ khóa static
- Hàm Main() trong ví dụ minh họa trên có nhiều hơn một cách thiết kế Trongminh họa này hàm Main() được khai báo với kiểu trả về là void, tức là hàm này khôngtrả về bất cứ giá trị nào cả Đôi khi cần kiểm tra chương trình có thực hiện đúng haykhông, người lập trình có thể khai báo hàm Main() trả về một giá trị nào đó để xácđịnh kết quả thực hiện của chương trình
- Trong khai báo của ví dụ trên có dùng từ khóa static:
static void Main()
{
}
- Từ khóa này chỉ ra rằng hàm Main() có thể được gọi mà không cần phải tạođối tượng ChaoMung Những vấn đề liên quan đến khai báo lớp, phương thức, haythuộc tính sẽ được trình bày chi tiết trong các chương tiếp theo
Trang 18CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THỐNG
2.1.Giới thiệu về thư viện trường đại học Sao Đỏ
Thư viện trường đại học Sao Đỏ là nơi không thể thiếu được cho mỗi sinh viêncủa trường, ở đó tập trung một lượng lớn sinh viên ra vào thư viện để đọc, mượn và trảsách Nhu cầu học tập ngày càng cao đặc biệt là để đảm bảo kiến thức có tính logic vàchính xác thì việc tìm đến với sách là rất cần thiết, để đáp ứng nhu cầu đó thì thư việntrường đã tăng số lượng sách đáng kể rất phong phú về loại sách cũng như số lượng
2.1.1 Mô tả phạm vi của hệ thống
Hệ thống chương trình phải đảm bảo các yêu cầu sau:
- Giảm thiểu công sức, thời gian của con người.
- Truy cập tìm kiếm nhanh chóng, hiệu quả, chính xác.
- Lập báo cáo nhanh chóng.
* Mục tiêu quản lý
- Theo dõi được thông tin đọc giả.
- Theo dõi được số sách
- Theo dõi được thông tin sách
- Tính được số phiếu độc giả
* Đầu vào của hệ thống
- Thông tin thủ thư.
- Thông tin độc giả
- Thông tin sách.
* Đầu ra của hệ thống
- Danh sách độc giả
- Danh sách sách
Trang 19Môi trường: thủ thư, độc giả.
QUẢN LÍ SÁCH QUẢN LÍ ĐỘC
GIẢ
Từ đó có mô hình quản lí như sau
Hình 2.1 Mô hình quản lí thư viện
2.2 Xác định yêu cầu của hệ thống
- Phải nắm rõ nhu cầu cần xây dựng của hệ thống, từ các nhu cầu cần xây dựng
mà cần phải thu thập các tư liệu cần thiết từ nơi thiết lập dự án
- Các công cụ cần thiết để xây dựng hệ thống: SQL Server 2008, Visual Studio
2012, Rational Rose, Microsoft Word 2013
- Kiến thức cần có:
+ Nắm vững về ngôn ngữ lập trình Visual Studio 2012
+ Phân tích chính xác cơ sở dữ liệu bằng SQL Server 2008
+ Thiết kế các mô hình bằng Rational Rose và phân tích rõ ràng, chính xácbằng Microsoft Word 2013
2.3 Mô tả các chức năng của hệ thống
Hệ thống quản lý thư viện bao gồm các chức năng sau:
* Chức năng quản lý sách:
- Quản lý thông tin chi tiết về sách như: Mã sách, tên sách, ngày nhập, nhàxuất bản, năm xuất bản,
* Chức năng quản lý thẻ mượn:
- Quản lý thông tin chi tiết về thẻ mượn độc giả, hạn trả
Trang 20* Chức năng quản lý đăng nhập:
- Quản lý thủ thư đăng nhập hệ thống
- Phân quyền khai thác chức năng chương trình cho từng nhóm, từng người sửdụng
* Chức năng thống kê báo cáo:
- Chức năng thống kê báo cáo và tra cứu linh hoạt với nhiều tiêu chí khác nhau
2.4 Sơ đồ USECASE
Dựa trên các yêu cầu như trên, biểu đồ use case tổng quát của hệ thống đượcbiểu diễn trong Hình 2.2
Sinh Vien
Thong ke Dang Nhap
Trang 212.4.1.1 Quản lí đăng xuất
Thu thu <<extend>>
Trang 22Scenario Ý nghĩa
Tim kiem theo ten sach
Tim kiem theo Khoa
Tim kiem ma sinh vien Tim Kiem
Sinh Vien
Thu thu
Tim kiem theo ten sach
Tim kiem theo Khoa Tim Kiem
Trang 232.4.2.1.Tìm sách theo tên
kiếm sách trong cơ sở dữ liệu
2 Hệ thống trả về form tìm kiếm theo từ khóa
3 Thủ thư nhập từ khóa và tìm kiếm
muốn tìm kiếm sách trong cơ sở dữ liệu
2 Hệ thống trả về form tìm kiếm theo khoa
3 Người dùng nhập từ khóa và tìm kiếm
4 Hệ thống trả về kết quả tìm kiếm
Phương thức thay thế
Trang 24muốn tìm sinh viên để thực hiện ghi nhận mượntrả.
sinh viên
2 Hệ thống trả về form tìm kiếm theo mã sinhviên
3 Thủ thư nhập mã số sinh viên
4 Hệ thống trả về kết quả tìm kiếm
Phương thức thay thế
Ngoại Lệ
Bảng 2.5 Kịch bản tìm kiếm sinh viên
Trang 25Hình 2.5.Biểu đồ use case cập nhật
Cap nhat sach
Sua thong tin sach
Xoa sach Them sach
sách không có trong thư viện, sửa thông tin về sách,Thủ thư sẽ dùng usecase này