Thư viện là nơi lưu trữ một khối lượng kiến thức đồ sộ và hết sức quý giá đối với việc học tập, nghiên cứu của sinh viên và giảng viên. Nhưng hiện nay, việc quản lý thư viện theo cách truyền thống ít nhiều đã gây khó khăn cho độc giả lẫn người quản lý. Về phía độc giả, họ không thể nắm được danh mục sách tại thư viện đó, cũng như không có gì đảm bảo cho việc họ có thể mượn được quyển sách ưng ý khi đến thư viện. Còn về phía người quản lý thư viện, công việc quản lý mượn sách một cách thủ công chiếm của họ khá nhiều thời gian, sức lực và vật chất.
Trang 1MỤC LỤC
MỤC LỤC 1
HÌNH ẢNH 2
TÓM TẮT 3
ABSTRACT 3
KÍ HIỆU VÀ VIẾT TẮT 4
CHƯƠNG 1: TỔNG QUAN 5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 7
CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 29
TỔNG KẾT 57
PHỤ LỤC 58
TÀI LIỆU THAM KHẢO 68
Trang 2HÌNH ẢNH
Hình 2.1 Cấu trúc một phần tử XML 19
Hình 3.1 Mô hình dữ liệu quan niệm (CDM) 31
Hình 3.2 DFD mức 0 32
Hình 3.3 DFD mức 1 32
Hình 3.4 DFD tiến trình “xử lý mượn trả sách” 33
Hình 3.5 Sơ đồ cơ sở dữ liệu 34
Hình 3.6 Trang đăng nhập admin 37
Hình 3.7 Menu điều khiển 38
Hình 3.8 Trang quản lý thông tin sách 41
Hình 3.9 Ảnh bìa mặc định 42
Hình 3.10 Form tạo tài khoản 42
Hình 3.11 Yêu cầu mượn sách 43
Hình 3.12 Xác nhận trả sách 44
Hình 3.13 Danh mục phiếu cũ 45
Hình 3.14 Giao diện trang chủ 47
Hình 3.15 Module thông tin đăng nhập 50
Hình 3.16 Chức năng đặt mượn được mở 50
Hình 3.17 Chức năng tra cứu 51
Hình 3.18 Chức năng kiểm tra sách đã đặt 52
Hình 3.19 Module sách mượn nhiều nhất 54
Trang 3TÓM TẮT
Thư viện trong một trường Đại Học là nơi các sinh viên dành nhiều thời gian
để thực hiện việc nghiên cứu, học tập, cũng như tìm thấy những quyển sách hay để trau dồi kiến thức của mình Do đó việc phát triển và quản lý tốt thư viện là hết sức cần thiết cho việc tự học của sinh viên
Từ lâu, việc ứng dụng công nghệ thông tin trong quản lý đã trở thành xu hướng bởi nó không chỉ mang lại hiệu quả vượt trội mà còn tiết kiệm nhân lực, tiền bạc và thời gian hơn hẳn Nhưng đối với một thư viện điện tử, nếu chỉ dừng lại ở quản lý sách trong thư viện thì vẫn còn chưa đủ Trong thời đại internet bùng nổ như hiện nay, việc tích hợp tính năng tra cứu và đặt mượn sách trực tuyến hứa hẹn khả năng phục
vụ sinh viên mọi lúc, mọi nơi, và cũng tối ưu hóa vai trò của một thư viện điện tử
Đề tài : “Xây dựng website quản lý thư viện cho một khoa ở một trường Đại Học hoặc Cao Đẳng” được đề ra nhằm mục đích trên Dựa trên ngôn ngữ mã nguồn
mở PHP cùng với hệ quản trị cơ sở dữ liệu MySQL, sinh viên thực hiện đề tài đã hoàn thành website trên, với thư viện Khoa Kỹ Thuật Công Nghệ trường Đại Học Tây Đô
là hình mẫu cho dự án
ABSTRACT
A library in an university is the place where students spend most of their time for researching, as well as finding good books to enrich their knowledge For that reason, the development and management of a library is very important to students’ self-studying
For a long time, applying information technology into management has become quite a tendency because it brings not only outstanding effeciency but also saves a great deal of manpower, money and time But, to an electronic library, it wouldn’t be called a success if we stop at management only These days, when internet usage has become a blast, the integration of books searching and booking feature promises the ability of serving students everytime, everywhere, as well as optimizes the role of an electronic library
The project : “Develop a library management website for a department in an university or a college” is then proposed for that purpose Basing on the open-source language PHP and the database management system MySQL, the developer has completed the mentioned website, with the library of Tay Do University’s Technology Department as a sample for this project
Trang 4KÍ HIỆU VÀ VIẾT TẮT
DBMS Database Management System
DTD Document Type Definition
HTML Hyper Text Markup Language
OOP Object-Oriented Programming
PHP PHP Hypertext Preprocessor
SGML Standard Generalized Markup Language
SQL Structure Query Language
WYSIWYG What You See Is What You Get
XHTML eXtensible Hyper Text Markup Language
XML eXtensible Markup Language
Trang 5Chính những lý do trên đã khiến cho việc tin học hóa các công tác văn phòng, thủ tục hành chính trở thành một xu thế tất yếu Những thiết bị lưu trữ, hệ thống thông tin đang dần thay thế những tủ hồ sơ khổng lồ Trước những lợi ích mà công nghệ thông tin mang lại, việc thay đổi cách thức quản lý thư viện đã trở thành một nhu cầu thực tiễn và hoàn toàn nằm trong tầm tay.
1.2 LỊCH SỬ GIẢI QUYẾT ĐỀ TÀI :
Việc xây dựng hệ thống thông tin và ứng dụng phục vụ quản lý thư viện đã được nhiều sinh viên nghiên cứu, thực hiện trước đây Những dự án đó gần như đã hoàn thiện các nhu cầu về quản lý sách thư viện, chỉ còn tồn tại duy nhất một vấn đề
Đó là tính cục bộ, vốn là đặc điểm của các phần mềm Chúng khó có thể phục vụ rộng rãi cho nhiều loại đối tượng
Một số dự án đã được nâng cao hơn, với hướng phát triển theo mô hình server
- client, nhằm bổ sung khả năng phục vụ độc giả của thư viện thông qua mạng máy tính Các phần mềm dạng này gồm ứng dụng phía người quản lý (server) để quản lý thông tin sách và giải quyết mượn sách, cùng với ứng dụng phía người dùng (client) cho phép độc giả tham khảo và đặt mượn sách Mặc dù vậy, các bộ ứng dụng trên vẫn chưa tạo nên sự tiện lợi cho người sử dụng, do các khách hàng phải trải qua quá trình cài đặt, cũng như có các đòi hỏi về cấu hình máy tính
Những lí do trên thúc đẩy một cách tiếp cận mới đối với đề tài quản lý thư viện, đó là xây dựng ứng dụng trên nền web Dự án này cũng bao gồm một website Admin Control Panel thực hiện các chức năng của người quản lý, và một website phục vụ độc giả của thư viện Lợi thế khi phát triển đề tài trên nền web là người sử
Trang 6dụng có thể truy cập mọi lúc mọi nơi, chỉ cần ít nhất một trình duyệt web (ví dụ : trình duyệt Internet Explorer đi kèm với hệ điều hành Microsoft Windows) và một đường truyền internet Hơn thế nữa, với khả năng sử dụng đa dạng các nội dung media (ví dụ
âm thanh, phim ảnh v.v…) để xây dựng giao diện, một website đảm bảo sự hấp dẫn đối với người sử dụng hơn hẳn
1.3 PHẠM VI ĐỀ TÀI :
Phạm vi đề tài sẽ bao gồm các nội dung sau đây :
- Xây dựng chức năng quản lý, cập nhật thông tin sách trong thư viện
- Xây dựng chức năng quản lý, cập nhật tài khoản và thông tin độc giả
- Xây dựng chức năng quản lý việc mượn trả sách, tự động kiểm tra việc đặt mượn sách và phiếu mượn sách
- Xây dựng chức năng đăng mới và quản lý các thông báo của thư viện
- Xây dựng hộp tin nhắn để tiếp nhận các liên hệ của độc giả
- Xây dựng chức năng tra cứu thông tin sách, xem các thông báo, giới thiệu dành cho độc giả
- Xây dựng chức năng đặt mượn sách và hủy đặt mượn sách
- Xây dựng chức năng cho phép độc giả xem và thay đổi thông tin cá nhân, xem các sách đang mượn và các phiếu mượn sách
- Xây dựng chức năng liên hệ người quản trị
1.4 HƯỚNG GIẢI QUYẾT VẤN ĐỀ :
Xuất phát từ các yêu cầu trên, đề tài sẽ được giải quyết theo hướng sau:
- Tìm hiểu cách tổ chức thông tin sách của thư viện
- Tìm hiểu cách tổ chức các nhóm độc giả và quy định về mượn trả sách
- Phân tính quy trình đặt mượn, lập phiếu mượn và trả sách
- Dựa trên kết quả phân tích, thiết kế hệ thống thông tin phù hợp với nhu cầu thự tiễn
- Lựa chọn các ngôn ngữ, công nghệ để xây dựng website: ngôn ngữ lập trình : HTML, PHP; CSDL : MySQL; công nghệ hỗ trợ : CSS, XML
Trang 7CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 TỔNG QUAN VỀ HTML :
HTML: HyperText Markup Language Đây là một ngôn ngữ đơn giản được sử dụng trong các tài liệu siêu văn bản Nó cũng chỉ là các tài liệu văn bản bình thường nhưng có chứa các thành phần đặc biệt gọi là các thẻ (hoặc các cặp thẻ) đánh dấu Dựa theo các cặp thẻ này mà trình duyệt có thể biết được nó phải thể hiện nội dung gì Bản chất của HTML không phải là một ngôn ngữ lập trình nên cũng không chứa những thuật toán lằng nhằng Nó chỉ là một "ngôn ngữ" để đánh dấu văn bản thôi
HTML giờ đây đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì Phiên bản mới nhất của nó hiện là HTML 4.01 Tuy nhiên, HTML hiện không còn được phát triển tiếp Người ta đã thay thế nó bằng XHTML
Cấu trúc của một file HTML có dạng:
Cặp thẻ <HTML></HTML> đánh dấu vị trí bắt đầu và kết thúc của một đoạn
mã HTML Các khai báo về định dạng, tiêu đề, đính kèm … sẽ được đặt trong cặp thẻ
<HEAD></HEAD>.Toàn bộ nội dung hiển thị sẽ được đặt trong cặp thẻ
<BODY></BODY>
Trang 82.1.3.Các thẻ trong HTML:
Cấu trúc của 1 thẻ trong HTML bao gồm: dấu "<" ( nếu là thẻ đóng thì sẽ bắt đầu bằng "</"), tên thẻ, các tham số khác nếu có (nếu là thẻ đóng thì không cần tham số), dấu ">" Ví dụ : cặp thẻ <font>…</font>
Có rất nhiều các cặp thẻ , hay gọi chung là phần tử đánh dấu, được sử dụng trong HTML, nhưng có thể chia làm bốn loại phần tử đánh dấu sau:
- Đánh dấu Có cấu trúc miêu tả mục đích của phần văn bản (ví dụ:
<h1>Golf</h1> sẽ điều khiển phần mềm đọc hiển thị "Golf" là đề mục cấp một)
- Đánh dấu trình bày miêu tả phần hiện hình trực quan của phần văn bản bất
kể chức năng của nó là gì (ví dụ, <b>bold</b> sẽ hiển thị đoạn văn bản bold) (Chú ý
là cách dùng đánh dấu trình bày này bây giờ không còn được khuyên dùng mà nó được thay thế bằng cách dùng CSS),
- Đánh dấu liên kết ngoài chứa phần liên kết từ trang này đến trang kia (ví dụ,
<a href="http://www.tdu.edu.vn/">Trường Đại Học Tây Đô</a> sẽ hiển thị từ Trường Đại Học Tây Đô như là một liên kết ngoài đến URL của website trường Đại Học Tây Đô)
- Các phần tử thành phần điều khiển giúp tạo ra các đối tượng (ví dụ, các nút
và các danh sách)
Trong thiết kế một trang web HTML kết hợp với PHP thì vấn đề giao tiếp dữ liệu giữa hai ngôn ngữ này là quan trọng nhất Do đó, chúng ta sẽ đi sâu nghiên cứu các thẻ thực hiện vấn đề này, đó là các thẻ thuộc nhóm thứ tư trong danh sách nêu trên
Cách sử dụng mẫu biểu trong HTML:
Một mẫu biểu (form) trong HTML bao gồm nhiều thành phần khác nhau Các thành phần có thể là ô văn bản, ô kéo thả, ô danh sách, nút bấm, hay các ô check
Biểu mẫu được bắt đầu bằng thẻ <form> và kết thúc bởi thẻ </form> Giữa 2 cặp thẻ này, các bạn có thể sử dụng các cặp thẻ HTML khác
Thẻ form có một số thuộc tính sau:
- method: Thuộc tính này có 2 giá trị POST hoặc GET, để xác định dữ liệu gửi lên theo kiểu POST hay GET
Kiểu GET chính là kiểu mà khi nhập dữ liệu lên máy chủ, các dữ liệu này sẽ được hiển thị trên ô Address dưới dạng các căp tên=giá_trị Nhược điểm của kiểu này
là toàn bộ URL và chuỗi tên=giá_trị kia sẽ bị giới hạn dưới 255 ký tự (do đặc điểm của trình duyệt) Vì vậy để có thể gửi nhiều dữ liệu hơn, người ta đã sinh ra kiểu
Trang 9POST Với kiểu này, dữ liệu sẽ không bị giới hạn chiều dài 255 ký tự của chuỗi địa chỉ do không bị gộp vào chuỗi địa chỉ mà được đóng thành dữ liệu gói và gửi đến server Kiểu POST cũng thường dùng để truyền các dữ liệu nhạy cảm mà người sử dụng không muốn hiển thị trên ô address (password chẳng hạn).
- value: Xác định giá trị đặt trước cho thẻ
- type: Thuộc tính này có một số giá trị sau:
submit: Sẽ xác định một nút bấm (submit) mà khi kích chuột vào đó, form
sẽ tự động kích hoạt và gửi dữ liệu đi
text: Hiển thị một ô văn bản cho phép người sử dụng nhập văn bản
password: Hiển thị ô văn bản để nhập password
hidden: Tạo một biến ẩn, ta có thể dùng nó để lưu trữ các dữ liệu "ẩn" khỏi người dùng, tất nhiên nếu họ biết View source lên thì chịu
Ví dụ: đoạn mã sau sinh ra một form có 1 ô văn bản, một ô nhập mật khẩu và 1 nút bấm:
<form method="POST">
<p>
Trang 10User Name:<input type="text" name="T1" size="20"> </p>
<Select name =abc>
<option value = gia_trí1>nội dung 1</option>
<option value = gia_trí2>nội dung 2</option>
<option value = gia_trí3>nội dung 3</option>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
</select>
Trang 11<input type="radio" value="" name="R1">
Ví dụ dưới đây mô phỏng dòng chọn kiểu gõ (telex, VNI) trên diễn đàn:
<input type=radio name="switcher" value="OFF" >Tắt
<input type=radio name="switcher" checked value="TELEX" >Telex
<input type=radio name="switcher" value="VNI"> VNI
Thẻ nhập khối văn bản:
Thẻ input với thuộc tính type = text chỉ cho phép ta hiển thị ra một ô văn bản nhỏ (hiện được 1 dòng) Để hiện ra một ô soạn thảo lớn, có thể hiển thị nhiều dòng đồng thời, ta phải dùng thẻ textarea:
<textarea name =xxx>Giá trị mặc định của khối văn bản </textarea>
Trên đây là một vài thẻ cơ bản dùng để xây dựng các biểu mẫu nhập liệu Về vấn đề các đoạn mã PHP sẽ nhận các dữ liệu truyền đi như thế nào, xin được phép trình bày sau trong phần Tìm hiểu về PHP Mục giới thiệu các thẻ HTML cũng xin được kết thúc tại đây
HTML có thể được tạo ra và xử lý bởi rất nhiều công cụ khác nhau, từ những chương trình soạn thảo văn bản đơn giản như Notepad, Wordpad v.v… cho đến những công cụ soạn thảo trực quan theo dạng WYSIWYG
Trang 12Tất cả các trang HTML nên bắt đầu với một khai báo định nghĩa kiểu tài liệu (DTD) Ví dụ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Ở đây, nó định nghĩa một tài liệu tuân thủ Strict DTD của HTML 4.01, mà thuần túy là cấu trúc, nhường phần định dạng cho CSS Các chuẩn DTD khác, bao gồm Loose, Transitional, và Frameset, định nghĩa các quy tắc khác cho việc sử dụng ngôn ngữ
Nỗ lực tách phần nội dung ra khỏi phần hình thức trình bày của trang HTML
đã đưa đến sự xuất hiện của các chuẩn mới như XHTML Các chuẩn này nhấn mạnh vào việc sử dụng thẻ đánh dấu vào việc xác định cấu trúc tài liệu như phần đề mục, đoạn văn, khối văn bản trích dẫn và các bảng, chứ không khuyên dùng các thẻ đánh dấu mang tính chất trình bày trực quan, như <font>, <b> (in đậm), và <i> (in nghiêng) Những mã mang tính chất trình bày đó đã được loại bỏ khỏi HTML 4.01 Strict và các đặc tả XHTML nhằm tạo điều kiện cho CSS CSS cung cấp một giải pháp giúp tách cấu trúc HTML ra khỏi phần trình bày của nội dung của nó
2.2 SƠ LƯỢC VỀ XHTML:
XHTML (Extensible HyperText Markup Language, "Ngôn ngữ Đánh dấu Siêu văn bản Mở rộng") là một ngôn ngữ đánh dấu có cùng các khả năng như HTML, nhưng có cú pháp chặt chẽ hơn XHTML 1.0 đã trở thành dạng chuẩn được khuyên dùng bởi World Wide Web Consortium (W3C) vào ngày 26 tháng 2, năm 2000
- Với HTML thì các thẻ như <br> và <BR> là hiểu là giống nhau nhưng một khi bạn đã xác định trang web của bạn là XHTML thì trình duyệt sẽ dịch hai thẻ này
là khác nhau
Trang 13- Việc tối giản thuộc tính là bị nghiêm cấm, chẳng hạn HTML chấp nhận cách viết như sau : <input checked> , trong khi XHTML đòi hỏi chúng phải đúng quy cách : <input checked="checked" />.
Có thể thấy XHTML yêu cầu cú pháp chặt chẽ hơn HTML nhiều Nhưng tại sao XHTML lại trở thành dạng chuẩn được khuyến khích và ưa chuộng Cũng chính nhờ vào cú pháp chặt chẽ đó, XHTML có thể hỗ trợ rất tốt các đoạn mã và tiện ích đính kèm (applets) cho trang web XHTML cũng được thiết kế phù hợp hơn với xu hướng module hóa của các trang web hiện nay
- Sử dụng trực tiếp kèm với các thẻ HTML (Inline Style Sheet)
- Định nghĩa trong 1 trang web (Internal Style Sheet)
- Định nghĩa thành 1 file CSS riêng (External Style Sheet)
- Đến các trình duyệt thế hệ sau đặc biệt là Nescape và Internet Explorer tiếp tục đưa thêm vào các thẻ HTML mới cùng các thuộc tính định dạng riêng của mình (như các thẻ <FONT> và thuộc tính Color ) Do đó ngày càng khó để tạo ra được một website khi mà nội dung của nó bị tách rời khỏi cách bố trí
- Để giải quyết vấn đề này World Wide Web Consortium (W3C) đã tạo ra STYLE để đưa thêm vào trong HTML 4.0
- Style trong phiên bản HTML 4.0 qui định cách thức thể hiện các thẻ HTML tương tự như thẻ <FONT> hay thuộc tính COLOR trong HTML 3.2 Style thường được lưu trong các file nằm ngoài trang web Chúng giúp bạn có thể thay đổi cách
Trang 14thức định dạng và cách bố trí các trang web chỉ bằng cách thay đổi riêng file CSS Chỉ khi bạn muốn thay đổi lại toàn bộ màu sắc, cách định dạng của các tiêu đề, nội dung bạn mới hiểu rõ tác dụng thực sự của CSS.
- CSS cho phép chúng ta điều khiển cách định dạng và cách bố trí của cùng lúc nhiều trang web với chỉ duy nhất 1 lần thay đổi tại một vị trí Là một người thiết kế web, bạn có thể định nghĩa 1 file CSS cho các thẻ HTML và áp dụng nó vào nhiều trang web mà bạn muốn Để thay đổi tổng thể các trang web này bạn chỉ đơn giản là thay đổi file CSS và tất cả các trang đã áp dụng sẽ được thay đổi một cách tự động
Như trên đã nói, ta có thể sử dụng nhiều cách khác nhau để làm CSS Điều gì
sẽ xảy ra nếu bạn áp dụng nhiều cách định dạng cho 1 thẻ HTML?
Theo một cách chung nhất ra có thể nói các style của bạn sẽ được "xếp tầng" (cascade) Việc xếp tầng này tuân theo thứ tự sau:
- Inline Style (Style được qui định trong 1 thẻ HTML cụ thể)
- Internal Style (Style được qui định trong phần <HEAD> của 1 trang HTML)
- External Style (style được qui định trong file CSS ngoài)
- Browser Default (thiết lập mặc định của trình duyệt)
Như vậy ta thấy các thiết lập trong 1 thẻ HTML có mức ưu tiên cao nhất, Những gì được định nghĩa ở đây sẽ bị bỏ qua tất cả các định nghĩa khác (như trong thẻ <HEAD>, File CSS ngoài, )
Cú pháp của CSS được tạo nên bởi 3 thành phần:
- Thành phần lựa chọn (thường là một thẻ HTML) (Selector)
Trang 15Selector thường là các thẻ HTML mà bạn muốn định nghĩa thêm Property là thuộc tính mà bạn muốn thay đổi, mỗi một thuộc tính cần phải có một giá trị Một thuộc tính và giá trị của nó được phân cách bởi dấu hai chấm Hai cặp thuộc tính-giá trị được phân cách nhau bởi dấu chấm phảy Toàn bộ các cặp thuộc tính-giá trị của một thẻ HTML được đặt trong cặp dấu ngoặc nhọn ({}).
p.trai {text-align: left}
p.phai {text-align: right}
p.giua {text-align: center}
Trang 16Tiếp theo, trong trang HTML bạn sử dụng như sau:
<p class="trai">Đoạn văn này được canh lề trái.</p>
<p class="phai">Đoạn văn này được canh lề phải.</p>
<p class="giua">Đoạn văn này được canh lề giữa.</p>
Ví dụ : Các lớp không gắn với một thẻ cụ thể (có thể gắn với hầu như tất cả các thẻ):
Rất đơn giản, bạn có thể tạo ra một lớp mà lớp đó có thể gắn vào hầu như bất
cứ thẻ nào trên trang web bằng cách bỏ tên thẻ ở đầu đi nhưng nhớ giữ lại dấu chấm (.)
Định nghĩa một lớp "giua" có thể gắn với bất cứ thẻ nào
.giua{text-align="center"}
và trong trang HTML ta sử dụng như sau:
<p class="giua">Đoạn văn này được canh lề giữa.</p>
<td class="giua">Câu này được canh lề giữa.</p>
Tạo các định danh (ID)
Tương tự như các lớp, các định danh cũng cho phép chúng ta chia các thẻ thành nhiều loại khác nhau Tuy nhiên trên thực tế thì Định danh khác với lớp!!! Một lớp có thể áp dụng nhiều lần ở nhiều vị trí trên trang web, tuy nhiên 1 định danh chỉ
có thể áp dụng được duy nhất cho 1 thẻ và tên của định danh phải là duy nhất trên 1 trang web
Ví dụ:
Trang 17Đoạn mã dưới đây có thể áp dụng cho thẻ <P> có ID là para1
- Với External Style ( Sử dụng file CSS được định nghĩa thành 1 file riêng):
- Với Inline Style (style được qui định ngay trong mỗi thẻ HTML):
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
Trang 182.4 SƠ LƯỢC VỀ XML:
XML (Extensible Markup Language) là ngôn ngữ đánh dấu mở rộng được phát triển dựa trên tính đơn giản, dễ dùng của HTML và tính phức tạp nhưng đa chức năng của SGML XML được thiết kế để cho phép máy tính có thể trao đổi tài liệu với nhau thông qua Web mà không làm mất đi ý nghĩa của dữ liệu
Một tài liệu XML bao gồm một tập các cặp thẻ được lồng vào nhau Mỗi thẻ
có một cặp các thuộc tính và giá trị Việc ghi các thông tin truy vấn từ CSDL vào tài liệu XML cho phép người lập trình sử dụng nhiều lần các thông tin đó mà không làm lãng phí tài nguyên của server, cũng như không lẫn lộn cấu trúc của dữ liệu
Một tài liệu XML có thể được chia thành hai phần chính, mỗi phần có thể có các thành phần theo quy định khác nhau:
- Phần Prolog: Chứa các khai báo cho tài liệu XML Phần này có thể chứa các định đạng như: các chỉ thị xử lý, định nghĩa kiểu cho tài liệu, chú thích, phiên bản đang sử dụng, cách thức mã hóa dữ liệu, báo cáo các chỉ thị xử lý cho ứng dụng
- Phần thân chứa nội dung dữ liệu, bao gồm một hay nhiều phần tử, mỗi phần
tử được chứa trong một cặp thẻ Phần tử đầu tiên của tài liệu được gọi là phần tử gốc (root element)
Một ví dụ về phần tử trong tài liệu XML :
< sach masach ="4" matheloai ="4" matacgia ="3" manxb ="6">
< tensach >Thiết lập Firewall với ISA Server 2006</ tensach >
< tentheloai >Mạng máy tính</ tentheloai >
< tentacgia >Khương Anh</ tentacgia >
< tennxb >Nhà xuất bản Lao động - Xã hội</ tennxb >
Trang 19Cấu trúc của phần tử trên thể hiện theo dạng cây:
Hình 2.1 Cấu trúc một phần tử XML
Các thẻ thuộc tính và giá trị của nó được hiểu như một node con của phần tử sach Do đó, khi đọc tài liệu XML, ta có 2 cách để lấy giá trị của các thẻ Đó là gọi tên thẻ để lấy giá trị, và gọi thứ tự node con của phần tử để lấy giá trị
2.5 TÌM HIỂU VỀ PHP:
PHP : viết tắt của PHP Hypertext Preprocessor, một định nghĩa mang tính đệ quy khá khó hiểu, là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ Nó rất thích hợp với web và
có thể dễ dàng nhúng vào trang HTML Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới Hơn thế nữa, với ưu thế mã nguồn mở, PHP thích hợp với mục đích học tập, nghiên cứu nhưng cũng đang ngày càng được ưa chuộng trong giới doanh nghiệp vì tính đa môi trường của nó PHP có thể được cài đặt trên nhiều web server như Apache, Microsoft IIS, … cũng như nhiều
hệ điều hành như Unix, Mac OS, Windows
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và
có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP
Trang 20lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
Vào khoảng năm 1994, Rasmus Lerdorf đưa một số đoạn Perl Script vào trang Web để theo dõi xem ai đang đọc tài liệu của ông ta Dần dần, người ta bắt đầu thích các đoạn Script này và sau đó đã xuất bản một gói công cụ có tên là "Personal Home Pages" (nghĩa đầu tiên của PHP) Ông ta đã viết một cơ chế nhúng và kết hợp với một
số công cụ khác để phân tích đầu vào từ các mẫu biểu HTML: FI, tức Form Interpreter hay Phiên dịch biểu mẫu, được đặt tên là PHP/FI hay PHP2 Nó được hoàn thành vào khoảng giữa năm 1995
Sau đó, người ta bắt đầu sử dụng các công cụ này để xây dựng những thứ rắc rối hơn, và đội ngũ phát triển đã thay đổi từ một người duy nhất thành một nhóm các nhà phát triển nòng cốt trong dự án, và nó đã được tổ chức hoá Đó là sự bắt đầu của PHP3 Đội ngũ các nhà phát triển (Rasmus Lerdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo và Jim Winstead) đã cải tiến và mở rộng bộ máy nhúng
và bổ sung thêm một số hàm API đơn giản cho phép các lập trình viên khác tự do bổ sung nhiều tính năng vào ngôn ngữ bằng cách viết các module cho nó Cấu trúc của ngôn ngữ đã được tinh chế, được kết cấu thân thiện hơn đối với những người đến từ các ngôn ngữ hướng đối tượng hay các ngôn ngữ hướng thủ tục Nếu bạn đã biết một vài ngôn ngữ lập trình khác thì khi đến với PHP, bạn sẽ không cảm thấy khó khăn Hiện nay, phiên bản PHP mới nhất là 5.3.6
Trong đề tài này, sinh viên thực hiện quyết định sử dụng các kỹ thuật lập trình PHP phổ thông để có thể tương thích với phần lớn các máy chủ trên nền Unix/Linux Tuy nhiên, điều này không ảnh hưởng đến khả năng giải quyết các yêu cầu mà đề tài đặt ra
Trang 21Ngôn ngữ PHP hỗ trợ đầy đủ các kiểu dữ liệu giống các ngôn ngữ lập trình khác như C++ hay Java, nhưng khác biệt ở chỗ khi khai báo ta không cần phải chỉ định kiểu dữ liệu của biến Một biến có thể được sử dụng để lưu bất kỳ kiểu dữ liệu nào, và khi một biến được đặt giá trị thì kiểu có biến mới được tự động xác định.
$a=1 // $a là kiểu integer
$a=1.2 // Bây giờ, nó là kiểu double
$a="1" // Và bây giờ nó là kiểu string
Các cấu trúc điều khiển như cấu trúc điều kiện if … else…, switch, vòng lặp for, while, v.v… được sử dụng hoàn toàn giống với ngôn ngữ C+ Điều này khiến việc làm quen với PHP trở nên cực kỳ dễ dàng cho những người đã quen với lập trình trước đó, và cũng dễ dàng cho những người mới học lập trình do họ không cần phải tập cách phân biệt giữa ngôn ngữ này hay ngôn ngữ khác
echo “$x không lớn hơn 4”;
Trong ví dụ trên, ta còn thấy sự xuất hiện của hàm được sử dụng nhiều nhất trong lập trình PHP: echo Sau khi thực hiện các xử lý ở server, hàm này sẽ xuất ra trình duyệt các kết quả người lập trình mong muốn dưới dạng nội dung HTML Ngoài
ra, ta cũng có thể tự tạo các hàm xử lý để mã nguồn của mình trở nên gọn gàng hơn
Trang 22function nhandoi(& $var) {
$var = $var*2;
}
Hai hàm thường được sử dụng khác là include và require, với mục đích chép đoạn code đã được định nghĩa trước ở một trang khác vào trang hiện tại Nhưng chúng còn được tận dụng để tạo liên kết giữa các trang web đơn lẻ và điều hướng website Cú pháp:
include (“đường dẫn/tên file.php”);
require (“đường dẫn/tên file.php”);
Như đã từng đề cập trong phần Tổng quan về HTML, biểu mẫu (form) HTML
sử dụng hai cách truyền dữ liệu, đó là “GET” và “POST” Cũng có nghĩa là, PHP sẽ dùng tương ứng hai phương thức đó để nhận dữ liệu Ngoài ra, PHP còn hỗ trợ con đường thứ ba, đó là COOKIES
Dữ liệu gửi từ trình duyệt lên qua phương thức “GET” là phần dữ liệu được nhập trực tiếp theo sau địa chỉ URL do trình duyệt gửi lên, hoặc các form HTML có method = “GET” tự gán dữ liệu theo sau URL, được phân biệt với tên file script bằng dấu hỏi chấm (?) Ví dụ, ta thường thấy các URL có dạng sau:
http://www.abc.xyz/article.php?artID=161
Khi đó, trình duyệt sẽ gửi theo địa chỉ trên một cặp biến = giá_trị, trong đó biến có tên là artID và giá trị là 161 (artID=161) Chúng ta cũng có thể đưa lên nhiều cặp biến=giá_trị bằng cách phân cách chúng bởi dấu &
Khi trình duyệt gửi các thông tin này lên máy chủ, PHP sẽ tự động sinh ra một mảng có tên là $_GET[] để nắm giữ tất cả các cặp biến và giá trị đó, trong đó, chỉ số của mảng chính là một chuỗi mang tên của tên biến và giá trị của chỉ số đó chính là giá trị của biến do trình duyệt gửi lên Ví dụ, với địa chỉ URL trên thì PHP sẽ tự động sinh ra một mảng $_GET có nội dung sau: $_GET["artID"] = 161 Như vậy PHP đã nhận thành công dữ liệu truyền bằng phương thức “GET”
“POST” là phần dữ liệu được gửi qua các form HTML có method ="POST"
Để lấy các biến theo kiểu “POST”, PHP sẽ tự động sinh ra mảng có tên là $_POST[] Mảng này có chỉ số chính là tên của các phần tử trong form (các thẻ input, select có
Trang 23thuộc tính name) và giá trị là nội dung giá trị do người sử dụng nhập vào các phần tử
có tên tương ứng Ví dụ trong một form HTML có dòng input như sau:
<input type=”text” name=”t1” />
Nếu ta nhập nội dung dòng đó là “ok” và gửi dữ liệu đi (submit) thì mảng
$_POST sẽ có phần tử sau: $_POST["t1"] = ”ok”
Cookies là một phần dữ liệu được lưu trên máy khách Mỗi khi máy khách gửi một yêu cầu tới máy chủ nào đó, thì nó sẽ gửi phần dữ liệu được lưu trong cookie tương ứng với máy chủ đó Người ta thường dùng cookies để lưu trữ các thông tin có liên quan đến nhiều "phiên" làm việc khác nhau Vi giao thức HTTP là giao thức không lưu trạng thái, nên cookies được sinh ra để làm nhiệm vụ lưu trữ một số biến trạng thái để khắc phục nhược điểm này
Khác với dữ liệu gửi từ form (“POST” hay “GET”) thì cookies sẽ được trình duyệt tự động gửi đi theo mỗi lần truy cập lên máy chủ Trong quá trình làm việc, cookie có thể bị thay đổi giá trị Cookie sẽ bị vô hiệu hoá nếu cửa sổ trình duyệt điều khiển cookie đóng lại và cookie hết thời gian có hiệu lực Theo mặc định, thời gian
"sống" của cookies là tồn tại cho đến khi cửa sổ trình duyệt sử dụng cookies bị đóng Tuy nhiên người ta có thể thiết lập tham số thời gian để cookie có thể sống lâu hơn (6 tháng chẳng hạn) Ví dụ như chế độ Remember ID & Password của 1 số trang web
Trong PHP, để gửi cookie xuống trình duyệt, ta có thể sử dụng hàm setcookie:setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]
Trong đó:
- string name: Chuỗi mang tên của cookie
- string value: Chuỗi mang giá trị của cookie tương ứng với tên đã cho
- int expire: Thời gian hết hạn của cookie
- string path: Đường dẫn của cookie (đến 1 thư mục nào đó trên máy chủ Tham số này cho biết cookie sẽ chỉ được truyền đi nếu như trang web mà trình duyệt yêu cầu nằm trên thư mục đó, thay vì lúc nào cũng phải gửi đi tới bất kỳ khu vực nào)
- string domain: cookie này sẽ được gửi tới domain nào?
- int secure: Chế độ bảo mật
Các tham số trong cặp dấu ngoặc vuông là tuỳ chọn
Trang 242.5.5.Điều hướng Menu:
Bố cục của một trang web được chia thành nhiều phần, nhiều module và nội dung chính thường nằm ở giữa trang Vậy làm thế nào để có thể điều hướng menu mà không cần phải sao chép lại các thành phần giống nhau ở các trang? Để thực hiện điều này, ta sẽ sử dụng phương thức $_GET và hàm include của PHP
Giả sử ta đã có một trang web với đầy đủ các thành phần, chỉ còn nội dung chính nằm trong thẻ <div></div> được để trống, cùng với các file php chứa nội dung
ta cần hiển thị trong thẻ <div></div> đó
Trên menu ta sẽ đặt một liên kết như sau:
<a href=”index.php?content=thuvien”>Thư viện</a>
Trong thẻ <div></div>, ta sẽ dùng $_GET để lấy giá trị của biến content Nếu biến này rỗng thì $content sẽ có giá trị là “home” và file home.php sẽ được include vào trang hiện tại Nếu ta click vào liên kết trên, giá trị “thuvien” được gửi đi và
$content lúc này có giá trị là “thuvien” Khi đó file thuvien.php sẽ được include vào trang hiện hành
Trang 25Bước 4: Đóng kết nối tới CSDL.
Nếu như trong lập trình thông thường trên Windows sử dụng các chương trình điều khiển trung gian (ADO, ODBC ) để thực hiện kết nối và truy vấn, thì trong PHP, khi lập trình tương tác với CSDL, chúng ta thường sử dụng thông qua các hàm
Trong đề tài này, sinh viên thực hiện sử dụng DBMS MySQL với lí do đây là
hệ quản trị được sử dụng rộng rãi và luôn được tích hợp sẵn trên các máy chủ hỗ trợ PHP Khả năng tổ chức, tra cứu dữ liệu và tính bảo mật của hệ quản trị này cũng đảm bảo các nhu cầu của đề tài
Trước khi kết nối tới CSDL, trước hết ta cần tạo một CSDL bằng cách sử dụng công cụ phpmyadmin Công cụ này được cài đặt sẵn trên các máy chủ hỗ trợ MySQL
và có thể truy cập theo đường dẫn: tên host/phpmyadmin/
Cú pháp kết nối tới CSDL như sau :
- Tạo một biến với giá trị là câu truy vấn Ví dụ : $query = “(câu truy vấn)”;
- Nếu là một câu truy vấn xử lý (INSERT, UPDATE, DELETE) gọi hàm mysql_query($query) Truy vấn kết thúc tại đây
- Nếu là một câu truy vấn tra cứu (SELECT) ta phải lấy giá trị trả về vào một biến Ví dụ: $result = mysql_query($query) Sau đó ta sẽ cho hiển thị kết quả trả về bằng cách chuyển các dữ liệu trả về thành dạng mảng với hàm mysql_fetch_array() :
$row = mysql_fetch_array($result) Mỗi lần gọi thì hàm này sẽ xuất 1 hàng vào mảng
$row Ta có thể truy cập đến từng ô dữ liệu bằng cách gọi $row[“tên cột”] hoặc
$row[“thứ tự cột”]
Đóng kết nối : mysql_close($connection);
Trang 262.5.7.Session trong PHP:
Trang web HTML thông thường sẽ ko thể truyền dữ liệu từ trang này sang trang khác Nói một cách khác là : tất cả thông tin sẽ được reset khi một trang web mới được tải Điều này gây khó khăn cho một số công việc như là mua hàng ( shopping carts) - những thứ cần thiết dữ liệu ( sản phẩm người dùng đã chọn) ghi nhớ từ trang này sang trang khác
PHP session giải quyết vấn đề này bằng cách cho phép lưu trữ dữ liệu của người dùng trên server để sử dụng về sau ( như username, món hàng ), hay kiểm tra việc đăng nhập của các thành viên Tuy nhiên những thông tin session này chỉ là tạm thời và thường bị xoá đi ngay khi người dùng rời khỏi trang web đã dùng session
Việc đầu tiên trước khi ta làm bất cứ việc gì với session là phải chạy nó trước,
và nó được đặt ngay trên đầu trong đoạn code ,trước khi HTML được xuất ra Dưới đây là 1 ví dụ đơn giản về việc tạo session trong PHP:
$_SESSION['views'] = 1; // lưu views
echo "Pageviews = " $_SESSION['views']; //lấy views và hiển thị
?>
Cũng với session, nếu ta áp dụng hàm kiểm tra isset(), ta có thể kiếm tra trạng thái đăng nhập của khách hàng chẳng hạn, nếu session của khách hàng chưa được khởi tạo thì sẽ tự động chuyển họ về trang dangnhap.php :
<?php
session_start();
if(!isset($_SESSION['user'])){
if(!headers_sent()){
Trang 27Hãy tưởng tượng bạn đang điều hành một doanh nghiệp online, và một thành viên đang dùng website của bạn mua một món hàng Thành viên đó đã hoàn tất việc mua hàng (phiên giao dịch) trên website, do đó, bạn phải xóa mọi thứ trong session sau khi việc này hoàn tất.
Trang 28là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ
và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ http://www.mysql.com Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan
hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
phpMyAdmin là một công cụ phần mềm miễn phí được viết bằng PHP nhằm quản lý hệ quản trị CSDL MySQL trên nền web phpMyAdmin hỗ trợ một loạt các hoạt động với MySQL Các chức năng thường được sử dụng nhất được hỗ trợ bởi giao diện người dùng (quản lý cơ sở dữ liệu, bảng biểu, các lĩnh vực, quan hệ, các chỉ mục, người sử dụng, phân quyềncho phép, v.v… ), trong khi bạn vẫn còn có khả năng trực tiếp thực hiện bất kỳ câu lệnh SQL nào
Để dễ dàng cho đa số người sử dụng, phpMyAdmin được dịch sang 62 thứ tiếng và hỗ trợ cả ngôn ngữ LTR (left to right - trái sang phải) và RTL (right to left - phải sang trái)
Kể từ phiên bản 3.0.0, phpMyAdmin đã tham gia phong trào GoPHP5 và bỏ
mã tương thích cho các phiên bản PHP và MySQL cũ hơn, đầu tiên là phiên bản 3 và sau đó yêu cầu tối thiểu PHP 5.2 và MySQL 5 Để sử dụng với PHP hay MySQL phiên bản cũ hơn, ta có thể sử dụng các chi bản phpMyAdmin cũ (nhưng vẫn được duy trì) như các phiên bản 2.x, mà bạn có thể tìm thấy trên trang download
http://www.phpmyadmin.net/home_page/downloads.php
Các tính năng nổi bật:
- Giao diện web trực quan
- Hỗ trợ cho hầu hết các tính năng MySQL:
- Duyệt và thả cơ sở dữ liệu, bảng biểu, views, các trường và các chỉ số
- Tạo ra, sao chép, thả, đổi tên và thay đổi cơ sở dữ liệu, bảng biểu, các trường
và các chỉ số
Trang 29- Bảo trì máy chủ, cơ sở dữ liệu và bảng biểu, với đề xuất trên máy chủ cấu hình
- Thực thi, chỉnh sửa và đánh dấu bất kỳ câu truy vấn, thậm chí câu truy vấn hàng loạt,
- MySQL quản lý người dùng và đặc quyền
- Quản lý các thủ tục lưu và kích hoạt
- Nhập dữ liệu từ CSV và SQL
- Xuất dữ liệu sang nhiều định dạng: CSV, SQL, XML, PDF, ISO/IEC 26300
- tài liệu mở văn bản và bảng tính, Word, Excel, LATEX và những dạng khác
- Quản lý nhiều máy chủ
- Tạo PDF đồ họa của cách bố trí cơ sở dữ liệu của bạn
- Tạo truy vấn phức tạp bằng cách sử dụng truy vấn với ví dụ (QBE - query by examples)
- Tìm kiếm trên toàn cầu trong cơ sở dữ liệu hoặc một nhóm nhỏ của nó
- Việc chuyển dữ liệu được lưu thành các định dạng bằng cách sử dụng một tập hợp các chức năng được xác định trước, như hiển thị dữ liệu hình ảnh hoặc liên kết tải về
- Và nhiều hơn nữa
CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
và nơi xuất bản, giá tiền
- Các đối tượng phục vụ của thư viện được chia thành hai nhóm chính: giảng viên và sinh viên Đối với giảng viên, thư viện sẽ lưu các thông tin chính như mã số cán bộ, họ tên, đơn vị công tác (phòng hoặc khoa) Đối với sinh viên thì các thông tin chính là MSSV, họ tên, lớp và ngành
- Hai nhóm này có các quyền lợi, quy định khác nhau khi mượn sách ở thư viện Ví dụ: thời gian mượn sách của giảng viên có thể dài hơn và số sách tối đa cũng nhiều hơn so với sinh viên
- Quy trình mượn trả sách hiện tại ở thư viện: giảng viên, sinh viên đến thư viện trực tiếp và chọn những quyển sách mình cần, nhưng không quá số sách cho
Trang 30phép, và đăng kí mượn sách với nhân viên thư viện Nhân viên sẽ lập các thông tin mượn sách như ngày mượn, hạn trả, v.v… Nếu đến hết hạn mà sách vẫn chưa được trả về thì sẽ có biện pháp xử lý tùy nhóm đối tượng, và căn cứ vào giá tiền của quyển sách để quyết định mức đền bù trong trường hợp sách bị mất.
3.2 KẾT QUẢ PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG:
Với các kết quả điều tra trên, sinh viên thực hiện nhận thấy cần phải có một vài thay đổi để phù hợp với một website quản lý thư viện
Độc giả được chia thành hai nhóm sinh viên và giảng viên theo mô hình tổng quát hóa Mỗi sinh viên, giảng viên sẽ được tạo sẵn tài khoản trong bảng sinhvien và đăng nhập với mssv và matkhau, các thông tin khác như họ tên sinh viên, lớp, email,
số điện thoại có thể rỗng và sẽ được chính sinh viên bổ sung sau
Các sách được đặt mượn bởi các sinh viên sẽ được lưu vào bảng datmuon với
số phiếu mượn sách ban đầu là rỗng ( tức chưa lập phiếu) Vì sinh viên có thể đặt mượn nhiều lần, nhiều sách nên bảng phải có thể lưu lặp lại các mssv, mã sách Nếu trước ngày hết hạn đặt mượn, sinh viên đến thư viện nhận sách thì người quản trị sẽ lập phiếu mượn sách cho các quyển sách đã được đặt bởi mssv tương ứng Nếu ngày hiện hành đã vượt quá ngày hết hạn, thì số sách đó sẽ hiện thông báo “hết hạn”, và việc có giải quyết mượn sách hay không là tùy vào người quản trị
Lúc này số phiếu trong bảng datmuon sẽ được cập nhật từ bảng phieumuonsach Trạng thái của phiếu mượn sách mặc định là “Chưa trả”, trước ngày trả sách đã định, sinh viên đến trả sách thì quản trị sẽ thay đổi trạng thái thành “Đã trả” Nếu ngày hiện hành đã vượt quá ngày trả sách và trạng thái vẫn là “chưa trả” thì phiếu mượn sách này sẽ hiển thị thông báo “quá hạn”
Trang 313.2.1 Mô hình dữ liệu quan niệm (CDM):
Các loại mã trong hệ thống này, trừ ID đăng nhập của độc giả và ID đăng nhập của người quản trị, sẽ được lưu dưới dạng đánh số thứ tự Do đó, để đảm bảo cho việc sắp xếp thứ tự luôn đúng, chúng sẽ mang kiểu Integer
Hệ thống hướng đến hai nhóm độc giả là sinh viên và giảng viên, do đó sẽ có hai thực thể “sinhvien” và “giangvien” kế thừa thực thể “docgia” Hai thực thể này mang các thuộc tính chung của thực thể “docgia”, đồng thời cũng có các thuộc tính của riêng chúng
Điều quan trọng nhất trong một hệ thống thông tin chính là khả năng tra cứu Do
đó cần phải có vài thay đổi so với cách tổ chức hiện tại Cụ thể ta sẽ thay việc phân loại sách theo ngành bằng các thể loại nhỏ hơn Bởi vì các sinh viên, giảng viên có quyền nghiên cứu các quyển sách thuộc các ngành học khác của khoa, do đó việc tạo nhiều thể loại nhỏ sẽ giúp họ dễ dàng tìm được quyển sách mình cần Các thông tin nơi xuất bản, năm xuất bản sẽ được lược bỏ vì độc giả thường ít quan tâm đến chúng
mà chỉ tìm sách theo thể loại họ cần, hay tác giả, nhà xuất bản mà họ được giới thiệu qua
Hình 3.1 Mô hình dữ liệu quan niệm (CDM)
Trang 33DFD tiến trình “xử lý mượn trả sách” :
Hình 3.4 DFD tiến trình “xử lý mượn trả sách”
Trang 343.2.3 Cơ sở dữ liệu:
Hình 3.5 Sơ đồ cơ sở dữ liệu
Chi tiết các bảng:
Bảng dausach:
Thuộc tính Kiểu dữ liệu Diễn giải
masach Int(10) Mã sách theo dạng số thứ tự
gioithieu Text Giới thiệu chung về quyển sách
soluong Int(11)
unsigned
Số lượng sách hiện tại trong thư viện
ngaynhap timestamp Ngày nhập sách về thư viện
giatien Int(10)
unsigned
Giá trị của quyển sách