luẬn vĂn tỐt nghiỆp - math.hcmuns.edu.vnptbao/lvtn/2000/lv3.pdf · hoàn thành luận văn....

137
QUN LÝ PHÒNG MÁY THƯ VIN BNG MÃ VCH SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1 ĐẠI HC QUC GIA THÀNH PHHCHÍ MINH TRƯỜNG ĐẠI HC KHOA HC TNHIÊN KHOA TOÁN - TIN HC CHUYÊN NGÀNH : TOÁN – TIN NG DNG LUN VĂN TT NGHIP ĐỀ TÀI : Giáo Viên Hướng Dn : ThS. PHM THBO ThS. NGUYN MINH HIP Giáo Viên Phn Bin : ThS. NGUYN GIANG SƠN Sinh Viên Thc Hin : ÂU DƯƠNG ĐẠT LÊ THÀNH NGUYÊN

Upload: vocong

Post on 07-Feb-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA TOÁN - TIN HỌC CHUYÊN NGÀNH : TOÁN – TIN ỨNG DỤNG

LUẬN VĂN TỐT NGHIỆP

ĐỀ TÀI :

Giáo Viên Hướng Dẫn : ThS. PHẠM THẾ BẢO

ThS. NGUYỄN MINH HIỆP

Giáo Viên Phản Biện : ThS. NGUYỄN GIANG SƠN

Sinh Viên Thực Hiện : ÂU DƯƠNG ĐẠT

LÊ THÀNH NGUYÊN

Page 2: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

NIÊN KHOÁ 2000 - 2004

NNHHẬẬNN XXÉÉTT CCỦỦAA GGIIÁÁOO VVIIÊÊNN HHƯƯỚỚNNGG DDẪẪNN ...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

...........................................................................................................................................

Page 3: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

LLỜỜII CCẢẢMM ƠƠNN

Chúng em xin bày tỏ chân thành lòng biết ơn đến thầy Phạm Thế Bảo, người đã

cung cấp tài liệu, tận tình hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm và

hoàn thành luận văn.

Chúng em xin cảm ơn các thầy, cô trong khoa Toán – Tin học đã tạo mọi điều

kiện thuận lợi giúp đỡ chúng em trong suốt bốn năm học đại học.

Đồng thời, chúng em xin cảm ơn các anh, chị khóa trước đã giúp đỡ chúng em

nhiệt tình và cho chúng em nhiều lời khuyên bổ ích.

Cảm ơn các bạn sinh viên lớp Toán – Tin học 2000 đã chia sẻ và động viên chúng

tôi trong suốt quá trình thực hiện luận văn.

Cuối cùng, chúng con xin gửi lời cảm ơn chân thành nhất đến bố mẹ và mọi

người trong gia đình đã động viên, giúp đỡ chúng con cả về vật chất lẫn tinh thần để

chúng con có được kết quả ngày hôm nay.

TP. Hồ Chí Minh, tháng 7 năm 2004

ÂU DƯƠNG ĐẠT LÊ THÀNH NGUYÊN

Page 4: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

MMỤỤCC LLỤỤCC LỜI MỞ ĐẦU ..................................................................Error! Bookmark not defined.

CHƯƠNG 1 – KHÁI NIỆM MÃ VẠCH.......................Error! Bookmark not defined.

I. Mã vạch 1 chiều: ....................................................Error! Bookmark not defined.

I.1. Thông tin về mã vạch 1 chiều: ........................Error! Bookmark not defined.

I.1.1. Mã vạch 1 chiều là gì? .............................Error! Bookmark not defined.

I.1.2. Mã vạch chứa đựng thông tin gì?.............Error! Bookmark not defined.

I.1.3. Cấu trúc của mã vạch 1 chiều: .................Error! Bookmark not defined.

I.1.4. Tập kí tự: ..................................................Error! Bookmark not defined.

I.1.5. Gián đoạn, liên tục: ..................................Error! Bookmark not defined.

I.1.6. Mã vạch có độ dài cố định, thay đổi: .......Error! Bookmark not defined.

I.1.7. Mã vạch tự kiểm tra: ................................Error! Bookmark not defined.

I.2. Ứng dụng:........................................................Error! Bookmark not defined.

I.3. Ưu khuyết điểm:..............................................Error! Bookmark not defined.

I.3.1. Ưu điểm:...................................................Error! Bookmark not defined.

I.3.2. Khuyết điểm:............................................Error! Bookmark not defined.

I.4. Giới thiệu một số loại mã vạch: ......................Error! Bookmark not defined.

I.4.1. EAN-13: ...................................................Error! Bookmark not defined.

I.4.2. Code 128: .................................................Error! Bookmark not defined.

I.4.3. Code 39: ...................................................Error! Bookmark not defined.

I.5. So sánh giữa các loại mã vạch: .......................Error! Bookmark not defined.

II. Mã vạch 2 chiều:...................................................Error! Bookmark not defined.

II.1. Thông tin về mã vạch 2 chiều:.......................Error! Bookmark not defined.

II.1.1. Mã vạch 2 chiều là gì? ............................Error! Bookmark not defined.

II.1.2. Mã vạch 2 chiều chứa đựng thông tin gì?............. Error! Bookmark not

defined.

II.1.3. Cấu trúc của mã vạch 2 chiều: ................Error! Bookmark not defined.

II.2. Ứng dụng trong thực tế:.................................Error! Bookmark not defined.

II.3. Ưu khuyết điểm: ............................................Error! Bookmark not defined.

II.3.1. Ưu điểm: .................................................Error! Bookmark not defined.

II.3.2. Khuyết điểm:...........................................Error! Bookmark not defined.

Page 5: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

II.4. Giới thiệu một số loại mã vạch:.....................Error! Bookmark not defined.

II.4.1. PDF417: ..................................................Error! Bookmark not defined.

II.4.2. Data Matrix: ............................................Error! Bookmark not defined.

II.4.3. Maxi Code: .............................................Error! Bookmark not defined.

II.5. So sánh giữa các loại mã vạch:......................Error! Bookmark not defined.

II.6. Mã vạch PDF417: ..........................................Error! Bookmark not defined.

II.6.1. Mã hóa mã vạch PDF417: ......................Error! Bookmark not defined.

II.6.1.1. Mã hóa mức cao:..............................Error! Bookmark not defined.

II.6.1.2. Mã hóa mức thấp .............................Error! Bookmark not defined.

II.6.2. Cơ chế phát hiện và sửa lỗi của mã vạch PDF417: .....Error! Bookmark

not defined.

II.6.2.1. Cấp độ sửa lỗi được đề nghị : ..........Error! Bookmark not defined.

II.6.2.2. Những vấn đề khác cần biết đến khi sử dụng cấp độ sửa lỗi: . Error!

Bookmark not defined.

II.6.2.3. Bảng hệ số đa thức khai triển tương ứng các cấp độ bảo mật: Error!

Bookmark not defined.

III. Ứng dụng thực tế của mã vạch: ...........................Error! Bookmark not defined.

III.1. Ứng dụng trong xét nghiệm..........................Error! Bookmark not defined.

III.2. Ứng dụng trong việc trồng và bán rau sạch..Error! Bookmark not defined.

III.3. Ứng dụng trong việc tránh sử dụng nhầm thuốc ........ Error! Bookmark not

defined.

III.4. Ứng dụng trong việc làm CMND.................Error! Bookmark not defined.

III.5. Ứng dụng trong làm thẻ học sinh .................Error! Bookmark not defined.

III.6. Ứng dụng trong việc ghi hạn sử dụng của sữa Vinamilk..Error! Bookmark

not defined.

III.7. Ứng dụng trong việc chống giả mạo hiện nay............ Error! Bookmark not

defined.

IV. Một số thông tin về RFID: ..................................Error! Bookmark not defined.

IV.1. Khi ông lớn làm thử nghiệm : ......................Error! Bookmark not defined.

IV.2. RFID là gì ? ..................................................Error! Bookmark not defined.

CHƯƠNG 2 – QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH .....Error!

Bookmark not defined.

Page 6: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

I. Đặt vấn đề: .............................................................Error! Bookmark not defined.

II. Phân tích yêu cầu: .................................................Error! Bookmark not defined.

II.1. Về mặt ứng dụng: ..........................................Error! Bookmark not defined.

II.1.1. Module 1: ................................................Error! Bookmark not defined.

II.1.2. Module 2: ................................................Error! Bookmark not defined.

II.1.3. Module 3: ................................................Error! Bookmark not defined.

II.1.4. Module 4: ................................................Error! Bookmark not defined.

II.2. Về mặt kĩ thuật:..............................................Error! Bookmark not defined.

II.3. Các yêu cầu khác: ..........................................Error! Bookmark not defined.

III. Thiết kế: ...............................................................Error! Bookmark not defined.

III.1. Kiến trúc hệ thống: .......................................Error! Bookmark not defined.

III.2. Thiết kế tổng quát:........................................Error! Bookmark not defined.

III.2.1. Thủ thư: .................................................Error! Bookmark not defined.

III.2.1.1. Ứng dụng web: ...............................Error! Bookmark not defined.

III.2.1.2. Ứng dụng trên máy đơn:.................Error! Bookmark not defined.

III.2.2. Sinh viên:...............................................Error! Bookmark not defined.

III.3. Thiết kế Cơ sở dữ liệu: .................................Error! Bookmark not defined.

III.3.1. Bảng Sinh viên: .....................................Error! Bookmark not defined.

III.3.2. Bảng Hẹn: ..............................................Error! Bookmark not defined.

III.3.3. Bảng Hẹn sinh viên: ..............................Error! Bookmark not defined.

III.3.4. Bảng Lớp: ..............................................Error! Bookmark not defined.

III.3.5. Bảng Phòng máy: ..................................Error! Bookmark not defined.

III.3.6. Bảng Thủ thư :.......................................Error! Bookmark not defined.

III.4. Thiết kế xử lý: ..............................................Error! Bookmark not defined.

III.4.1. Xử lý: đăng kí làm thẻ của sinh viên.....Error! Bookmark not defined.

III.4.2. Xử lý: đăng nhập của sinh viên .............Error! Bookmark not defined.

III.4.3. Xử lý: đăng nhập của thủ thư ................Error! Bookmark not defined.

III.4.4. Xử lý: hẹn ngày chụp hình của thủ thư .Error! Bookmark not defined.

III.4.5. Xử lý: thêm lớp của thủ thư...................Error! Bookmark not defined.

III.4.6. Xử lý: tìm kiếm sinh viên của thủ thư ...Error! Bookmark not defined.

III.4.7. Xử lý: quy định thời gian của thủ thư ...Error! Bookmark not defined.

III.4.8. Xử lý: cấp thời gian của thủ thư ............Error! Bookmark not defined.

Page 7: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 7

III.4.9. Xử lý: in phiếu chụp hình cho sinh viên của thủ thư .Error! Bookmark

not defined.

III.4.10. Xử lý: tạo thẻ thư viện cho sinh viên của thủ thư ....Error! Bookmark

not defined.

III.4.11. Xử lý: quản lí phòng máy của thủ thư .Error! Bookmark not defined.

III.5. Cơ chế hoạt động:.........................................Error! Bookmark not defined.

CHƯƠNG 3 – CÔNG NGHỆ SỬ DỤNG......................Error! Bookmark not defined.

I. JSP / Servlet: ..........................................................Error! Bookmark not defined.

I.1. Java Server Page (JSP):...................................Error! Bookmark not defined.

I.1.1. Khái niệm:................................................Error! Bookmark not defined.

I.1.2. Cấu trúc thẻ: .............................................Error! Bookmark not defined.

I.1.2.1. Thẻ chỉ dẫn:.......................................Error! Bookmark not defined.

I.1.2.2. Thẻ kịch bản:.....................................Error! Bookmark not defined.

I.1.2.3. Các hành động chuẩn: .......................Error! Bookmark not defined.

I.1.3. Các đối tượng ẩn (implicit object): ..........Error! Bookmark not defined.

I.1.3.1. Đối tượng Request: ...........................Error! Bookmark not defined.

I.1.3.2. Đối tượng Response: .........................Error! Bookmark not defined.

I.1.3.3. Đối tượng session:.............................Error! Bookmark not defined.

I.1.3.4. Đối tượng Application: .....................Error! Bookmark not defined.

I.1.3.5. Đối tượng Out: ..................................Error! Bookmark not defined.

I.1.3.6. Đối tượng Config: .............................Error! Bookmark not defined.

I.1.3.7. Đối tượng Exception: ........................Error! Bookmark not defined.

I.1.4. Chu trình sống của JSP ............................Error! Bookmark not defined.

I.1.4.1. Biên dịch trang JSP: ..........................Error! Bookmark not defined.

I.1.4.2. Nạp trang:..........................................Error! Bookmark not defined.

I.1.4.3. Khởi tạo:............................................Error! Bookmark not defined.

I.1.4.4. Thực thi: ............................................Error! Bookmark not defined.

I.1.4.5. Dọn dẹp: ............................................Error! Bookmark not defined.

I.2. Servlet: ............................................................Error! Bookmark not defined.

I.2.1. Khái niệm:................................................Error! Bookmark not defined.

I.2.2. Các phương thức xử lý cơ bản: ................Error! Bookmark not defined.

I.2.2.1. Phương thức khởi tạo init(): ..............Error! Bookmark not defined.

Page 8: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 8

I.2.2.2. Phương thức phục vụ service(): ........Error! Bookmark not defined.

I.2.2.3. Phương thức huỷ destroy():...............Error! Bookmark not defined.

I.2.2.4. Phương thức getServletConfig() và getServletInfo():............... Error!

Bookmark not defined.

I.2.3. Chu trình sống của servlet:.......................Error! Bookmark not defined.

I.2.3.1. Nạp servlet: .......................................Error! Bookmark not defined.

I.2.3.2. Khởi tạo servlet: ................................Error! Bookmark not defined.

I.2.3.3. Thực thi servlet: ................................Error! Bookmark not defined.

I.2.3.4. Dọn dẹp servlet: ................................Error! Bookmark not defined.

I.3. So sánh giữa JSP và Servlet: ...........................Error! Bookmark not defined.

II. JDBC:....................................................................Error! Bookmark not defined.

II.1. Giới thiệu: ......................................................Error! Bookmark not defined.

II.2. Khái quát:.......................................................Error! Bookmark not defined.

II.2.1. java.sql.DriverManager ..........................Error! Bookmark not defined.

II.2.2. java.sql.Connection.................................Error! Bookmark not defined.

II.2.3. java.sql.Statement ...................................Error! Bookmark not defined.

II.2.4. java.sql.ResultSet....................................Error! Bookmark not defined.

II.3. Các kiểu JDBC: .............................................Error! Bookmark not defined.

II.3.1. Kiểu 1:JDBC sử dụng cầu nối ODBC (JDBC-ODBC Bridge) ...... Error!

Bookmark not defined.

II.3.2. Kiểu 2:JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu

...........................................................................Error! Bookmark not defined.

II.3.3. Kiểu 3:JDBC kết nối thông qua các ứng dụng mạng trung gian .... Error!

Bookmark not defined.

II.3.4. Kiểu 4:JDBC kết nối thông qua các trình điều khiển đặc thù ở xa Error!

Bookmark not defined.

II.4. Truy xuất cơ sở dữ liệu:.................................Error! Bookmark not defined.

II.4.1. Kết nối với cơ sở dữ liệu: .......................Error! Bookmark not defined.

II.4.2. Truy vấn dữ liệu:.....................................Error! Bookmark not defined.

II.4.3. Trích xuất dữ liệu:...................................Error! Bookmark not defined.

II.4.4. Đóng kết nối: ..........................................Error! Bookmark not defined.

III. Java Media Framework (JMF): ...........................Error! Bookmark not defined.

Page 9: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 9

III.1. Tổng quan:....................................................Error! Bookmark not defined.

III.2. Kiến trúc JMF:..............................................Error! Bookmark not defined.

III.2.1. Dữ liệu nguồn: .......................................Error! Bookmark not defined.

III.2.1.1. Dữ liệu nguồn kéo: .........................Error! Bookmark not defined.

III.2.1.2. Dữ liệu nguồn đẩy: .........................Error! Bookmark not defined.

III.2.2. Thiết bị thu: ...........................................Error! Bookmark not defined.

III.2.3. Player:....................................................Error! Bookmark not defined.

III.2.3.1. Không nhận biết: ............................Error! Bookmark not defined.

III.2.3.2. Nhận biết: .......................................Error! Bookmark not defined.

III.2.3.3. Đã nhận biết:...................................Error! Bookmark not defined.

III.2.3.4. Tìm kiếm: .......................................Error! Bookmark not defined.

III.2.3.5. Đã tìm kiếm: ...................................Error! Bookmark not defined.

III.2.3.6. Bắt đầu:...........................................Error! Bookmark not defined.

III.2.4. Processor: ..............................................Error! Bookmark not defined.

III.2.4.1. Định hình:.......................................Error! Bookmark not defined.

III.2.4.2. Đã định hình: ..................................Error! Bookmark not defined.

III.2.5. DataSink: ...............................................Error! Bookmark not defined.

III.2.6. Format: ..................................................Error! Bookmark not defined.

III.2.7. Manager:................................................Error! Bookmark not defined.

III.2.7.1. Manager:.........................................Error! Bookmark not defined.

III.2.7.2. CaptureDeviceManager:.................Error! Bookmark not defined.

III.2.7.3. PlugInManager: ..............................Error! Bookmark not defined.

III.3. Các phương thức thực hiện: .........................Error! Bookmark not defined.

III.3.1. Tạo ra Player: ........................................Error! Bookmark not defined.

III.3.2. Thu dữ liệu media..................................Error! Bookmark not defined.

III.4. Lấy hình ảnh từ webcam sử dụng JMF: .......Error! Bookmark not defined.

III.4.1. Giới thiệu:..............................................Error! Bookmark not defined.

III.4.2. Tên thiết bị :...........................................Error! Bookmark not defined.

III.4.3. Lấy định dạng đúng:..............................Error! Bookmark not defined.

III.4.4. Lấy DataSource: ....................................Error! Bookmark not defined.

III.4.5. Lấy Processor ........................................Error! Bookmark not defined.

III.4.6. PushBufferStream: ................................Error! Bookmark not defined.

Page 10: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 10

III.4.7. Lấy Image:.............................................Error! Bookmark not defined.

III.5. Chương trình đầy đủ minh họa việc lấy ảnh từ camera: ...Error! Bookmark

not defined.

CHƯƠNG 4 – CÀI ĐẶT, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN................Error!

Bookmark not defined.

I. Cài đặt: ...................................................................Error! Bookmark not defined.

I.1. Tại sao cần cài đặt cơ chế chia sẻ kết nối (Connnection Pool):.............. Error!

Bookmark not defined.

I.2. Tại sao lại sử dụng JMF:.................................Error! Bookmark not defined.

I.3. Hình ảnh các module của hệ thống .................Error! Bookmark not defined.

II. Đánh giá:...............................................................Error! Bookmark not defined.

II.1. Tự đánh giá: ...................................................Error! Bookmark not defined.

II.2. Thư viện đánh giá: .........................................Error! Bookmark not defined.

III. Hướng phát triển:.................................................Error! Bookmark not defined.

PHỤ LỤC .........................................................................Error! Bookmark not defined.

I. Cài đặt hệ quản trị CSDL: MS SQL Server 2000 ..Error! Bookmark not defined.

II. Cài đặt Webserver : Apache Tomcat 5.0.25 .........Error! Bookmark not defined.

III. Cài đặt JMF : Java Media Framework ................Error! Bookmark not defined.

TÀI LIỆU THAM KHẢO...............................................Error! Bookmark not defined.

Page 11: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

LLỜỜII MMỞỞ ĐĐẦẦUU Trong những năm gần đây với sự phát triển vượt bậc của công nghệ thông tin,

những ứng dụng của công nghệ thông tin vào các lãnh vực đã đóng vai trò to lớn cho

sự phát triển của nhân loại. Áp dụng quản lý bằng máy tính thay cho quản lý bằng tay

ở các tổ chức, công ty, cơ quan, đơn vị… là vô cùng cần thiết khi ở đó, sự nhanh

chóng, chính xác và tính hiệu quả được đặt lên hàng đầu.

Ở Thư viện trường Đại học Khoa Học Tự Nhiên, việc quản lý sinh viên sử dụng

phòng máy của thư viện từ trước đến nay đều chủ yếu thực hiện bằng tay, từ việc làm

thẻ, dán ảnh, đến nhập thông tin của sinh viên vào máy tính. Vì vậy, sẽ mất nhiều thời

gian cho việc quản lý và hiệu quả không cao. Do đó, mục tiêu của đề tài là xây dựng

chương trình quản lý sinh viên sử dụng phòng máy và tạo thẻ dựa trên mã vạch, qua

đó tăng độ chính xác và giảm thiểu sai sót.

Chương trình quản lý sinh viên sử dụng phòng máy là một bộ công cụ hỗ trợ

quản lý phòng máy thư viện bao gồm: hệ thống Web cho phép sinh viên đăng kí trực

tuyến, hẹn ngày chụp hình trực tuyến, thủ thư quản lý sinh viên; công cụ tạo và in thẻ

phòng máy; công cụ quản lý sử dụng máy tính. Chương trình sử dụng Java là ngôn

ngữ mạnh theo hướng thuần đối tượng, mã nguồn mở để xây dựng các ứng dụng.

Chương trình chạy trên môi trường Window có giao diện thân thiện với người sử

dụng.

Do khả năng có hạn và thời gian không cho phép nên không tránh khỏi những sai

sót, rất mong sự góp ý của quý thầy cô và các bạn.

Một lần nữa xin chân thành cảm ơn tất cả quý Thầy, Cô và các bạn !

Page 12: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

CCHHƯƯƠƠNNGG 11 –– KKHHÁÁII NNIIỆỆMM MMÃÃ VVẠẠCCHH

Page 13: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

I. Mã vạch 1 chiều:

I.1. Thông tin về mã vạch 1 chiều:

I.1.1. Mã vạch 1 chiều là gì?

Mã vạch một chiều là một loại mã có dạng một hàng bao gồm những thanh và

khoảng trắng nằm xen kẽ nhau.

Bề dày của những thanh và khoảng trắng xác định nội dung thông tin mà người

sử dụng cần mã hoá.

Những thanh và khoảng trắng có thể theo phương ngang hoặc phương thẳng

đứng tùy vào từng nhu cầu sử dụng cụ thể.

Thông tin được mã hoá có thể là chữ, số, hay toàn bộ các kí tự trong bảng mã

ASCII.

Hình 1.1

I.1.2. Mã vạch chứa đựng thông tin gì?

Nội dung được chứa đựng trong mã vạch tuỳ thuộc vào người dùng muốn mã hoá

cái gì, nội dung đó có thể là mã số một mặt hàng, tên nhân viên, tên hàng hoá, ...

Đa số các mã vạch có một hàng gồm chữ và số ngay bên dưới mã vạch. Chúng ta

có thể dễ dàng đọc nội dung trong hàng này. Nó được sử dụng khi mã vạch vì một lý

do nào đó bị hư hại, không đọc được. Khi đó, hàng này sẽ đóng vai trò cung cấp lại nội

dung đã được mã hoá trong mã vạch.

Bản thân mã vạch một chiều không chứa đựng cơ sở dữ liệu. Khi mã được nhận

thông qua một máy quét, người sử dụng lấy thông tin bằng cách tương ứng mã nhận

được này vào một CSDL có sẵn, từ đó có được những nội dung cần biết.

Page 14: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

Hình 1.2

I.1.3. Cấu trúc của mã vạch 1 chiều:

Mỗi mã vạch bắt đầu bằng kí tự bắt đầu và kết thúc bằng kí tự kết thúc. Những kí

tự đặc biệt này giúp cho máy đọc có thể xác định được vị trí của mã vạch và quét từ

đầu đến cuối.

Mỗi mã vạch có thể có một kí tự kiểm tra ngay trước kí tự kết thúc. Kí tự kiểm tra

này được tính toán khi mã vạch được in ra dựa trên những kí tự trên mã vạch. Máy đọc

thực hiện tính toán kí tự kiểm tra và so sánh kết quả tính được với kí tự kiểm tra đọc

được ở cuối mã vạch. Nếu hai kết quả này không giống nhau, máy đọc sẽ cho rằng có

cái gì đó sai sót, nó sẽ thoát ra và thử thực hiện lại một lần nữa.

Nhằm nâng cao sự chính xác trong việc đọc mã vạch, có một vùng trống tại nơi

bắt đầu và kết thúc của mã vạch gọi là Quiet Zone. Vùng trống này giúp cho máy đọc

mã vạch có thể xác định chính xác vị trí của kí tự bắt đầu và kết thúc của mã vạch.

Thông thường, độ rộng của vùng Quiet Zone phải gấp 10 lần chiều rộng của thanh

hẹp nhất.

Page 15: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

Hình 1.3

I.1.4. Tập kí tự:

Tập kí tự tuỳ thuộc vào loại dữ liệu mà mã vạch có thể mã hóa. Thông thường, có

3 loại tập kí tự: số, chữ cái và số, và tất cả các kí tự trong bảng mã ASCII.

Một mã vạch có tập kí tự số có nghĩa là mã vạch đó chỉ có thể mã hóa dữ liệu số

từ 0 đến 9. Một số kí tự bổ sung có thể được mã hóa bình thường là những kí tự điều

khiển của mã vạch, ví dụ như là kí tự bắt đầu, kết thúc.

Một mã vạch có tập kí tự gồm chữ cái và số có nghĩa là mã vạch đó có thể mã hóa

các số từ 0 đến 9 và chữ cái từ A đến Z. Thêm vào đó, một số kí tự bổ sung có thể

được mã hóa, ví dụ như là kí tự bắt đầu, kết thúc.

Một mã vạch có tập kí tự bao gồm tất cả những kí tự trong bảng mã ASCII cho

phép mã hóa tất cả các kí tự trong bảng mã ASCII. Nó bao gồm tất cả các kí tự trong

bảng mã ASCII, có giá trị từ 0 đến 127 và có thể được mã hóa bởi mã vạch.

Trên lý thuyết, để mã hoá cùng một dữ liệu như nhau, mã vạch dùng tập kí tự số

sẽ sử dụng nhiều không gian vật lý hơn so với mã vạch dùng tập kí tự bao gồm tất cả

các kí tự trong bảng mã ASCII. Tuy nhiên, mã vạch có tập kí tự bao gồm tất cả các kí

tự trong bảng mã ASCII cho phép bạn linh động trong việc mã hóa nhiều dạng thông

tin hơn so với mã vạch dùng tập kí tự số.

I.1.5. Gián đoạn, liên tục:

Thông thường có hai loại mã vạch: gián đoạn và liên tục.

Page 16: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

Mã vạch gián đoạn là dạng mã vạch mà mỗi kí tự được mã hóa trong mã vạch có

thể được biểu diển riêng lẻ mà không có mối liên hệ nào đến phần còn lại trong mã

vạch. Những mã vạch như vậy có những kí tự ở cả đầu và cuối của mã vạch. Những kí

tự riêng lẻ được tách biệt bởi một số khoảng trắng giữa các kí tự. Khoảng trắng giữa

những kí tự không chứa đựng thông tin gì cả, chức năng duy nhất của nó là tách biệt

những kí tự ra.

Hình 1.4 Mã vạch liên tục là một dạng mã vạch mà mỗi kí tự riêng lẻ của mã vạch không

thể được tách biệt. Thực tế là do những kí tự bắt đầu bằng một thanh và kết thúc bằng

một khoảng trắng. Khoảng trắng cuối cùng được kết thúc bởi thanh bắt đầu của kí tự

tiếp theo. Do đó, không có cách nào để có thể biết được khoảng trắng cuối cùng rộng

bao nhiêu và cũng không thể biết được kí tự tiếp theo bắt đầu ở đâu. Những mã vạch

liên tục thông thường sử dụng một vài loại thanh kết thúc đặc biệt hay chuỗi kết thúc,

do đó khoảng trắng cuối cùng của kí tự dữ liệu cuối cùng được kết thúc bởi thanh kết

thúc.

Hình 1.5 Trong ví dụ trên, mỗi kí tự bao gồm 4 thanh và 4 khoảng trắng. Khoảng trắng

cuối cùng của kí tự 1 được kết thúc bởi thanh đầu tiên của kí tự 2. Khoảng trắng cuối

cùng của kí tự 2 được kết thúc bởi thanh đầu tiên của kí tự 3. Khoảng trắng cuối cùng

Page 17: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 7

của kí tự 3 được kết thúc bởi thanh đầu tiên của kí tự 4. Khoảng trắng cuối cùng của kí

tự 4 được kết thúc bởi thanh kết thúc.

Với cùng một dữ liệu cần mã hoá như nhau, mã vạch gián đoạn cần sử dụng

nhiều không gian hơn so với mã vạch liên tục do mã vạch gián đoạn tốn không gian

cho khoảng trắng giữa các kí tự. Tuy nhiên, mã vạch gián đoạn thông thường có thể

được in ra với chất lượng kém- điều này đồng nghĩa với việc có thể sử dụng máy in rẻ.

Ngoài số lượng khoảng trắng mà hai loại mã vạch yêu cầu, cũng như loại và chất

lượng của phần cứng được sử dụng để in nó, không có sự khác biệt tự nhiên nào trong

vấn đề an toàn. Điều này có nghĩa là, không thể nói rằng mã vạch liên tục thì an toàn

hơn so với mã vạch gián đoạn hay ngược lại.

I.1.6. Mã vạch có độ dài cố định, thay đổi:

Mã vạch có thể có chiều dài cố định hay thay đổi.

Theo định nghĩa, mã vạch có chiều dài cố định mã hóa một số lượng kí tự xác

định. Ví dụ, mã vạch UPC-A thường mã hóa 12 kí tự. Một ứng dụng không thể mã hoá

ít hơn hay nhiều hơn chiều dài được quy định trước là 12 kí tự. Bản thân mã vạch xác

định chiều dài dữ liệu.

Mã vạch có chiều dài thay đổi có thể mã hoá một số lượng kí tự bất kì. Ví dụ,

Code128 có thể mã hóa một số lượng kí tự bất kì. Bản thân mã vạch không xác định cụ

thể bao nhiêu kí tự dữ liệu có thể được mã hoá.

Chú ý rằng, tuỳ thuộc vào hiệu quả sử dụng, mã vạch có chiều dài thay đổi cũng

có thể được sử dụng như mã vạch có chiều dài cố định. Ví dụ, nếu chúng ta sử dụng

Code 128 để mã hoá một số nhận dạng có chiều dài luôn là 10 thì có nghĩa là chúng ta

đã sử dụng Code 128 như thể nó là mã vạch có chiều dài cố định.

I.1.7. Mã vạch tự kiểm tra:

Mã vạch được xem như “tự kiểm tra” nếu có một lỗi in hay quét thì mã vạch sẽ

không cho phép đọc một kí tự trong mã vạch thành một kí tự hợp lệ khác.

Chú ý rằng “tự kiểm tra” không có nghĩa là tự sửa lỗi.

Page 18: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 8

I.2. Ứng dụng:

Trong thực tế, chúng ta bắt gặp việc sử dụng mã vạch tại một số siêu thị trên cả

nước giúp tăng hiệu quả bán hàng, giúp cho việc phục vụ khách hàng một cách nhanh

chóng và hiệu quả. Trên mỗi mặt hàng đều có một mã vạch tương ứng, khi khách hàng

đem đến quầy tính tiền, nhân viên chỉ cần quét qua máy đọc mã vạch tất cả các mặt

hàng, từ đó máy tính sẽ cho biết tổng số tiền khách hàng phải trả. Điều này giúp giảm

thiểu sự sai sót trong tính toán và nâng cao khả năng phục vụ cho khách hàng.

Ứng dụng trong những quy trình kinh doanh, những quy trình cần được tự động

tăng năng suất và giảm thiểu sự sai lầm của con người.

Ứng dụng trong những sản phẩm xuất khẩu. Hiện nay, hầu hết những quốc gia

trên thế giới (hơn 80 quốc gia) đã đưa vào sử dụng mã vạch trên sản phẩm của họ. Nền

công nghiệp Việt Nam sẽ phải sử dụng mã vạch nếu muốn xuất khẩu sản phẩm của

mình ra nước ngoài.

Nói chung, mã vạch được ứng dụng khi có yêu cầu về sự nhận diện chính xác và

tốc độ nhận diện.

Tuỳ từng yêu cầu cụ thể của người sử dụng mà có các loại mã vạch tương ứng.

Lĩnh vực ứng dụng Mã vạch Những mặt hàng ở USA và Canada UPC/EAN Những mặt hàng trên toàn thế giới UPC/EAN Sách và tạp chí EAN-13 với UPC/EAN Những thùng carton được vận chuyển bằng tàu

Code 128

Những thùng carton được vận chuyển bằng tàu

Interleaved 2 of 5 hay Code 128

Những thùng carton được vận chuyển bằng tàu

Interleaved 2 of 5 hay Code 128

Những thùng carton được vận chuyển bằng tàu

Code 128

Số sêri trong việc xuất bản hàng loạt Code 128 Số sêri trong việc xuất bản hàng loạt Code 128 Địa chỉ thư trong các bưu điện ở Mỹ POSTNET Kiểm tra trong ngân hàng MICR E-13B hay CMC-7

Page 19: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 9

I.3. Ưu khuyết điểm:

I.3.1. Ưu điểm:

Cải thiện hiệu quả thao tác. Tiết kiệm thời gian Giảm bớt việc mắc lỗi Giúp cho việc quản lý dễ dàng

I.3.2. Khuyết điểm:

Khuyết điểm chính của mã vạch một chiều đó là bản thân nó không thể chứa

đựng thông tin của cơ sở dữ liệu. Đây chính là điểm yếu của nó so với mã vạch hai

chiều.

I.4. Giới thiệu một số loại mã vạch:

I.4.1. EAN-13:

+ Cấu trúc mã EAN-13: Trong hệ thống mã số EAN cho sản phẩm bán lẻ có hai loại, một loại sử dụng 13 con số (EAN-13) và loại kia sử dụng 8 con số (EAN-8).

Hình 1.6

Mã số EAN-13 gồm 13 con số có cấu tạo như sau :

Từ trái sang phải Mã quốc gia: hai hoặc ba con số đầu. Mã doanh nghiệp: có thể là bốn, năm hoặc sáu con số Mã mặt hàng: có thể là năm, bốn hoặc ba con số tùy thuộc vào mã doanh nghiệp. Số cuối cùng là số kiểm tra.

Để đảm bảo tính thống nhất và tính đơn nhất của mã số, mã quốc gia phải do tổ

chức mã số vật phẩm quốc tế (EAN lnternational) cấp cho các qưốc gia là thành viên

của tổ chức này. Mã số quốc gia của Việt Nam là 893. Mã số EAN-8 gồm 8 con số có

Page 20: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 10

cấu tạo như sau : ba số đầu là mã số quốc gia giống như EAN-13, bốn số sau là mã

mặt hàng, số cuối cùng là số kiểm tra.

00-13: USA & Canada 20-29: In-Store Functions 30-37: France 40-44: Germany 45: Japan (also 49) 46: Russian Federation 471: Taiwan 474: Estonia 475: Latvia 477: Lithuania 479: Sri Lanka 480: Philippines 482: Ukraine 484: Moldova 485: Armenia 486: Georgia 487: Kazakhstan 489: Hong Kong 49: Japan (JAN-13) 50: United Kingdom 520: Greece 528: Lebanon 529: Cyprus 531: Macedonia 535: Malta 539: Ireland 54: Belgium & Luxembourg 560: Portugal 569: Iceland 57: Denmark 590: Poland 594: Romania 599: Hungary 600 & 601: South Africa 609: Mauritius 611: Morocco 613: Algeria 619: Tunisia 622: Egypt 625: Jordan 626: Iran 64: Finland 690-692: China 70: Norway 729: Israel 73: Sweden 740: Guatemala 741: El Salvador 742: Honduras 743: Nicaragua 744: Costa Rica 746: Dominican Republic 750: Mexico 759: Venezuela 76: Switzerland 770: Colombia 773: Uruguay 775: Peru 777: Bolivia 779: Argentina 780: Chile 784: Paraguay 785: Peru 786: Ecuador 789: Brazil 80 - 83: Italy 84: Spain 850: Cuba 858: Slovakia 859: Czech Republic 860: Yugloslavia 869: Turkey 87: Netherlands 880: South Korea 885: Thailand 888: Singapore 890: India 893: Vietnam 899: Indonesia 90 & 91: Austria 93: Australia

94: New Zealand 955: Malaysia 977: International Standard Serial Number for Periodicals (ISSN)

978: International Standard Book Numbering (ISBN)

979: International Standard Music Number (ISMN) 980: Refund receipts

981 & 982: Common Currency Coupons 99: Coupons

Mã EAN-8 chỉ sử dụng trên những sản phẩm có kích thước nhỏ, không đủ chỗ ghi mã EAN-13 (ví dụ như thỏi son, bút bi) + Cách tính số kíểm tra cho mã EAN-13 và mã EAN-8 Bước 1 : Từ phải sang trái, cộng tất các con số ở vị trí lẻ (trừ số kiểm tra C); Bước 2: Nhân kết quả bước 1 với 3; Bước 3 : Cộng giá tri của các con số còn lại Bước 4 : Cộng kết quả bước 2 với bước 3;

Page 21: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 11

Bước 5 : Lấy bội số của 10 lớn hơn và gần kết quả bước 4 nhất trừ đi kết quả bước 4, kết quả là số kiểm tra C. Ví dụ : Tính số kiểm tra cho mã 893456501001 C Bước 1 : 1 + 0 + + 0+ 6 + 4+ 9 - 20 Bước 2 : 20 x 3 = 60 . Bước 3 : 8 + 3 + 5 + 5 + 1 + 0 : 22 Bước 4 : 60 + 22 = 82 Bước 5 : 90 - 82 - 8 Mã EAN-13 hoàn chỉnh sẽ là : 893456501001 8 + Các điểm cần chú ý khi in mã EAN :

Không in chữ hay bất kỳ hình vẽ gì vào vùng diện tích xung quanh mã (đánh dấu

bằng khung đen trên film master): Màu lý tưởng để in mã vạch là màu đen trên nền

trắng. Có thể in một số màu nền và màu vạch khác để bao bì đẹp hơn ; khi đó phải

tuân thủ theo bảng các màu nền và màu vạch tiêu chuẩn do tổ chức EAN quốc gia

cung cấp; Mã vạch nên đặt ngang, các vạch vuông góc với mặt phẳng đáy sản phẩm,

mã số ở dưới .

I.4.2. Code 128:

+ Thông tin về Code 128: Code 128 là một loại mã vạch mã hoá dữ liệu chữ và số có hiệu quả sử dụng và

độ dày cao. Mã vạch này được ứng dụng rộng rãi, đặc biệt trong những trường hợp cần

mã hoá một lượng dữ liệu tương đối lớn trong một khoảng không gian tương đối hẹp.

Hình 1.7 + Tính toán số kiểm tra:

Trước khi Code 128 được mã hóa, phần mềm phải tính toán xem số kiểm tra trên mã vạch có đúng không. Những bước để tính toán số kiểm tra như sau:

1. Lấy giá trị của kí tự bắt đầu (103, 104, hay 105) và tạo giá trị bắt đầu của số kiểm tra.

2. Bắt đầu từ kí tự theo sau kí tự đầu tiên, lấy giá trị của kí tự (giữa 0 và 102), nhân nó với vị trí của kí tự (1) và thêm nó vào số kiểm tra đang sử dụng.

3. Xét từng kí tự trên dữ liệu, lấy giá trị của nó nhân với vị trí của nó và cộng vào giá trị số kiểm tra.

Page 22: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 12

4. Chia kết quả số kiểm tra cho 103. Số dư trở thành số kiểm tra, được thêm vào cuối của thông điệp.

5. Kí tự kết thúc được thêm vào sau kí tự kiểm tra.

Để dễ hiểu ta xem xét ví dụ sau. Tính giá trị của số kiểm tra cho mã vạch sau:

“HI345678”. Số kiểm tra có trong tất cả các mã vạch Code 128, nhưng nó không được

in như là một phần của phần văn bản phía dưới mã vạch (giống như UPC và EAN).

Mã vạch START-A H I CODE-C 34 56 78 Giá trị kí tự 103 40 41 99 34 56 78 Vị trí kí tự - 1 2 3 4 5 6 Tính 103 40 * 1 41 * 2 99 * 3 34 * 4 56 * 5 78 * 6Tổng khối lượng 103 40 82 297 136 280 468

Tính tổng số kiểm tra cho từng kí số, ta thu được:

103+40+82+297+136+280+468=1406.

Giá trị này được chia cho 103 (1406/ 103 = 13), phần dư là 67. Do vậy kí tự kiểm

tra là kí tự có giá trị 67.

+ Mã hoá mã vạch:

Tiếp tục với ví dụ trên, chúng ta sẽ mã hoá mã vạch Code 128 với dữ liệu

HI345678 và số kiểm tra 67 đã tính ở trên.

Chúng ta sẽ xem xét cách mã hoá mã vạch bằng cách xem số “1” đại diện cho

thanh và “0” đại diện cho khoảng trắng. Theo cách trên thì 1101 sẽ có 2 vạch (11), tiếp

theo là 1 khoảng trắng (0), cuối cùng là một thanh (1). Mã vạch sau cùng được biểu

diễn như sau:

Hình 1.8

+ Cấu trúc mã vạch Code 128: Code 128 gồm một vùng trống đầu, một trong ba kí tự bắt đầu, dữ liệu, số kiểm tra, kí tự kết thúc, và vùng trống.

Page 23: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 13

Để mã hoá giá trị trong mã vạch Code 128, đầu tiên chúng ta phải tính kí tự kiểm tra và phần dữ liệu của mã vạch, bao gồm cả số kiểm tra, sau đó chúng ta mới có thể mã hóa chúng thành một dãy gồm những thanh và khoảng trắng.

Một mã vạch Code 128 có cấu trúc vật lý như sau:

1. Mã đầu tiên, là mã 103, 104, hay 105 lấy từ bảng mã hóa bên dưới. 2. Mỗi kí tự dữ liệu được mã hóa dựa theo bảng mã hóa bên dưới. 3. Kí tự kiểm tra được tính như được đề cập ở trên và được mã hóa sử

dụng bảng bên dưới. 4. Kí tự kết thúc 11000111010 5. Vạch chấm dứt 11

+ Bảng mã hóa Code 128

THỂ HIỆN TRONG TẬP

KÍ TỰ

THỂ HIỆN TRONG TẬP

KÍ TỰ GIÁ TRỊ A B C MÃ HÓA

GIÁ TRỊ A B C MÃ HÓA

00 SP SP 00 11011001100 53 U U 53 11011101110 01 ! ! 01 11001101100 54 V V 54 11101011000 02 " " 02 11001100110 55 W W 55 11101000110 03 # # 03 10010011000 56 X X 56 11100010110 04 $ $ 04 10010001100 57 Y Y 57 11101101000 05 % % 05 10001001100 58 Z Z 58 11101100010 06 & & 06 10011001000 59 [ [ 59 11100011010 07 ' ' 07 10011000100 60 \ \ 60 11101111010 08 ( ( 08 10001100100 61 ] ] 61 11001000010 09 ) ) 09 11001001000 62 ^ ^ 62 11110001010 10 * * 10 11001000100 63 _ _ 63 10100110000 11 + + 11 11000100100 64 NUL ` 64 10100001100 12 , , 12 10110011100 65 SOH a 65 10010110000 13 - - 13 10011011100 66 STX b 66 10010000110 14 . . 14 10011001110 67 ETX c 67 10000101100 15 / / 15 10111001100 68 EOT d 68 10000100110 16 0 0 16 10011101100 69 ENQ e 69 10110010000 17 1 1 17 10011100110 70 ACK f 70 10110000100 18 2 2 18 11001110010 71 BEL g 71 10011010000 19 3 3 19 11001011100 72 BS h 72 10011000010 20 4 4 20 11001001110 73 HT I 73 10000110100 21 5 5 21 11011100100 74 LF j 74 10000110010

Page 24: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 14

22 6 6 22 11001110100 75 VT k 75 11000010010 23 7 7 23 11101101110 76 FF l 76 11001010000 24 8 8 24 11101001100 77 CR m 77 11110111010 25 9 9 25 11100101100 78 SO n 78 11000010100 26 : : 26 11100100110 79 SI o 79 10001111010 27 ; ; 27 11101100100 80 DLE p 80 10100111100 28 < < 28 11100110100 81 DC1 q 81 10010111100 29 = = 29 11100110010 82 DC2 r 82 10010011110 30 > > 30 11011011000 83 DC3 s 83 10111100100 31 ? ? 31 11011000110 84 DC4 t 84 10011110100

32 @ @ 32 11000110110 85 NAK u 85 10011110010

33 A A 33 10100011000 86 SYN v 86 11110100100 34 B B 34 10001011000 87 ETB w 87 11110010100 35 C C 35 10001000110 88 CAN x 88 11110010010 36 D D 36 10110001000 89 EM y 89 11011011110 37 E E 37 10001101000 90 SUB z 90 11011110110 38 F F 38 10001100010 91 ESC { 91 11110110110 39 G G 39 11010001000 92 FS | 92 10101111000 40 H H 40 11000101000 93 GS } 93 10100011110 41 I I 41 11000100010 94 RS ~ 94 10001011110 42 J J 42 10110111000 95 US DEL 95 10111101000 43 K K 43 10110001110 96 FNC3 FNC3 96 10111100010 44 L L 44 10001101110 97 FNC2 FNC2 97 11110101000 45 M M 45 10111011000 98 SHIFT SHIFT 98 11110100010 46 N N 46 10111000110 99 Code C Code C 99 10111011110 47 O O 47 10001110110 100 Code B FNC4 Code B 10111101110 48 P P 48 11101110110 101 FNC4 Code A Code A 11101011110 49 Q Q 49 11010001110 102 FNC1 FNC1 FNC1 11110101110 50 R R 50 11000101110 103 Start A Start A Start A 11010000100 51 S S 51 11011101000 104 Start B Start B Start B 11010010000 52 T T 52 11011100010 105 Start C Start C Start C 11010011100 STOP STOP STOP 11000111010

+ Ví dụ mã hóa: Xét ví dụ sau, mã hoá HI345678 trên mã vạch Code 128. Theo cách tính số kiểm tra như phần trên, chúng ta thu được số kiểm tra đối với trường hợp này là 67. Chúng ta mã hóa từng kí tự sử dụng bảng mã hóa trên:

Page 25: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 15

1. Kí tự START-A: 11010000100. 2. Kí tự “H”: 11000101000. 3. Kí tự “I”: 11000100010. 4. Kí tự “CODE-C”: 10111011110. 5. Kí tự “34”: 10001011000. 6. Kí tự “56”: 11100010110. 7. Kí tự “78”: 11000010100. 8. Số kiểm tra 67: 10000101100. 9. Kí tự STOP: 11000111010. 10. Thanh chấm dứt: 11.

Hình 1.9

I.4.3. Code 39:

+ Thông tin về Code 39: Code 39 là loại mã vạch chữ và số đầu tiên được phát triển, hiện nay vẫn còn được sử dụng rộng rãi, đặc biệt là trong việc bán sỉ hàng hoá. Nó là một chuẩn mã vạch được sử dụng bởi Bộ Quốc Phòng Mỹ. Code 39 cũng được biết với tên “3 of 9 Code” hay “USD-3”.

Một mã vạch Code 39 có dạng như sau:

Hình 1.10

Code 39 thuộc dạng mã vạch gián đoạn, có chiều dài thay đổi. Nó có thể tự kiểm tra vì vậy một kí tự in sai không thể được đọc và chuyển thành một kí tự đúng được.

+ Tính số kiểm tra: Vì Code 39 có khả năng tự kiểm tra nên thông thường số kiểm tra không còn cần thiết nữa. Tuy nhiên, trong những trường hợp cần đòi hỏi độ chính xác cao thì có thể thêm số kiểm tra vào.

Để tính số kiểm tra tự chọn, ta theo những bước sau:

1. Lấy giá trị (0 đến 42) của từng kí tự trong mã vạch. Những kí tự bắt đầu và kết thúc không được tính trong quá trình tính số kiểm tra.

2. Tính tổng những giá trị trong bước 1. 3. Chia giá trị trong bước 2 cho 43

Page 26: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 16

4. Phần dư trong pháp chia ở bước 3 là kí tự kiểm tra, được thêm vào trước kí tự kết thúc.

+ Mã hoá mã vạch: Trong phần này, chúng ta sẽ xem xét cách mã hoá mã vạch bằng cách xem như

“1” đại diện cho thanh, “0” đại diện cho khoảng trắng trên mã vạch. Vì vậy số 1101

biểu diễn mã vạch gồm 2 thanh (11), tiếp theo là một khoảng trắng (0), tiếp theo là một

thanh (1). Cuối cùng ta có mã vạch như sau:

Hình 1.11 + Cấu trúc mã vạch Code 39: Mã vạch Code 39 có cấu trúc sau:

1. Kí tự bắt đầu- kí tự * 2. Những kí tự được mã hoá dựa trên bảng 3. Số kiểm tra tuỳ chọn như đã đề cập ở trên được mã hóa từ bảng bên

dưới. 4. Kí tự kết thúc là kí tự * thứ hai.

+ Bảng mã hoá:

Giá trị kiểm tra

Kí tự ASCII Mã hóa độ rộng Mã hóa mã

vạch

0 0 NNNWWNWNN 101001101101 1 1 WNNWNNNNW 110100101011 2 2 NNWWNNNNW 101100101011 3 3 WNWWNNNNN 110110010101 4 4 NNNWWNNNW 101001101011 5 5 WNNWWNNNN 110100110101 6 6 NNWWWNNNN 101100110101 7 7 NNNWNNWNW 101001011011 8 8 WNNWNNWNN 110100101101 9 9 NNWWNNWNN 101100101101 10 A NNWWNNWNN 110101001011 11 B NNWNNWNNW 101101001011

Page 27: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 17

12 C WNWNNWNNN 110110100101 13 D NNNNWWNNW 101011001011 14 E WNNNWWNNN 110101100101 15 F NNWNWWNNN 101101100101 16 G NNNNNWWNW 101010011011 17 H WNNNNWWNN 110101001101 18 I NNWNNWWNN 101101001101 19 J NNNNWWWNN 101011001101 20 K WNNNNNNWW 110101010011 21 L NNWNNNNWW 101101010011 22 M WNWNNNNWN 110110101001 23 N NNNNWNNWW 101011010011 24 O WNNNWNNWN 110101101001 25 P NNWNWNNWN 101101101001 26 Q NNNNNNWWW 101010110011 27 R WNNNNNWWN 110101011001 28 S NNWNNNWWN 101101011001 29 T NNNNWNWWN 101011011001 30 U WWNNNNNNW 110010101011 31 V NWWNNNNNW 100110101011 32 W WWWNNNNNN 110011010101 33 X NWNNWNNNW 100101101011 34 Y WWNNWNNNN 110010110101 35 Z NWWNWNNNN 100110110101 36 - NWNNNNWNW 100101011011 37 . WWNNNNWNN 110010101101 38 SPACE NWWNNNWNN 100110101101 39 $ NWNWNWNNN 100100100101 40 / NWNWNNNWN 100100101001 41 + NWNNNWNWN 100101001001 42 % NNNWNWNWN 101001001001 n/a * NWNNWNWNN 100101101101

+ Ví dụ mã hoá:

Chúng ta sẽ mã hóa dữ liệu TEST8052 sử dụng mã vạch Code 39. Trong trường

hợp này chúng ta không sử dụng số kiểm tra.

1. Kí tự bắt đầu (*): 100101101101. 2. Kí tự “T”: 101011011001. 3. Kí tự “E”: 110101100101. 4. Kí tự “S”: 101101011001. 5. Kí tự “T”: 101011011001.

Page 28: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 18

6. Kí tự “8”: 110100101101. 7. Kí tự “0”: 101001101101. 8. Kí tự “5”: 110100110101. 9. Kí tự “2”: 101100101011. 10. Kí tự kết thúc: 100101101101.

Hình 1.12

Page 29: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 19

I.5. So sánh giữa các loại mã vạch:

Dạng mã vạch Tập kí tự Chiều dài Số kiểm tra Ứng dụng

EAN-13 Toàn số

12 con số dữ liệu và 1 con số kiểm tra; 2 hoặc 5 con số thêm vào tuỳ ý

Cần thiết Đánh dấu hàng hoá bán lẻ toàn thế giới

EAN Bookland Toàn số Cần thíết Ứng dụng đặc biệt của EAN-13 trong việc mã hoá IBSN cho sách

Interleaved 2 of 5 Toàn số Có thể thay đổi Không bắt buộc Rất dày đặc, mã hoá số theo từng cặp do đó chiều dài tổng cộng phải là số chẵn những con số.

Codabar (USD-4, NW-7, 2 of 7)

Số: 0-9; Kí hiệu: - : . $ / + Kí tự bắt đầu, kết thúc: A, B, C, D, E, *, N, or T

Có thể thay đổi Không định rõ Một loại mã cũ, thường được sử dụng trong thư viện và trong ngân hàng máu.

Plessey Toàn số Có thể thay đổi Cần thiết Những thẻ trên kệ các cửa hàng tạp hoá

Code 39 Kí tự hoa A-Z; Số 0-9; Khoảng trắng - . $ / + % Có thể thay đổi Không bắt buộc Sử dụng rất rộng rãi cho rất nhiều loại

ứng dụng.

Code 93 Kí tự hoa A-Z; Số 0-9; Khoảng trắng - . $ / + % Có thể thay đổi Không bắt buộc Họ hàng của Code 39 ít được sử dụng

Intended Code 39 Tất cả kí tự mã ASCII và mã điều khiển Có thể thay đổi Không bắt buộc Sử dụng từng cặp kí tự để mã hoá những kí hiệu không chuẩn, lãng phí không gian.

Code 128 Tất cả kí tự mã ASCII và mã điều khiển Có thể thay đổi Cần thiết Được sử dụng rộng rãi, tuyệt vời với một số ứng dụng

LOGMARS Kí tự hoa A-Z; Số 0-9; Khoảng trắng - . $ / + % Có thể thay đổi Không bắt buộc Tương tự như Code 39, nhưng là chuẩn

của Mỹ.

Page 30: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 20

II. Mã vạch 2 chiều:

II.1. Thông tin về mã vạch 2 chiều:

II.1.1. Mã vạch 2 chiều là gì?

Trong những năm gần đây, việc ứng dụng mã vạch được phát triển rất mạnh trong

nhiều lĩnh vực. Mã vạch 1 chiều là loại thường được sử dụng nhiều vì tính phổ biến và

đơn giản của nó. Đối với loại mã vạch này thì chiều cao của chúng không được tính

đến (dư thừa), điều đó có nghĩa là thông tin được lặp lại trên chiều thắng đứng. Và

chiều cao của các vạch có thể bị cắt bỏ mà không hề làm mất đi bất cứ một thông tin

nào mà nó biểu diễn.

Mã vạch 2 chiều là loại mã vạch mà thông tin có thể được biểu diễn và lưu trữ

theo cả các vạch theo chiều ngang lẫn các vạch theo chiều dọc, tận dụng được nhiều

không gian hơn.

Mã vạch 2 chiều được phát triển nhằm thay thế dần mã vạch 1 chiều truyền thống

không những về khả năng chứa được nhiều dữ liệu hơn, xử lí nhanh hơn mà nó còn

được phát triển như là một cơ sở dữ liệu thu nhỏ, di động được (Portable database)

II.1.2. Mã vạch 2 chiều chứa đựng thông tin gì?

Tương tự như mã vạch một chiều, nội dung được chứa đựng trong mã vạch 2

chiều cũng tuỳ thuộc vào người dùng muốn mã hoá cái gì, nội dung đó có thể là mã số

một mặt hàng, tên nhân viên, tên hàng hoá, ...

Tuy nhiên nếu như mã vạch 1 chiều chỉ chứa giá trị là khóa chính trong các bảng

của một cơ sở dữ liệu, thì những thông tin mà mã vạch 2 chiều biểu diễn và lưu trữ

được, có thể là một record, một bảng, thậm chí một cơ sở dữ liệu đầy đủ

II.1.3. Cấu trúc của mã vạch 2 chiều:

Khác với mã vạch một chiều, mã vạch 2 chiều có cấu trúc đặc trưng phụ thuộc

vào loại mã vạch 2 chiều đó là loại nào.

Page 31: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 21

Mã vạch 2 chiều được phát triển bởi nhiều công ty, tổ chức cũng các cá nhân

khác nhau. Vì vậy trên phạm vi toàn thế giới, mã vạch 2 chiều có rất nhiều loại khác

nhau tùy theo nhu cầu và mục đích sử dụng chúng.

Hiện nay thị trường đang tồn tại khoảng trên 20 loại mã vạch 2 chiều và được

chia thành 2 nhóm chính sau đây

Mã vạch 2 chiều dạng stacked code

Mã vạch 2 chiều dạng matrix code

II.2. Ứng dụng trong thực tế:

Những lĩnh vực sau đây đã và đang ứng dụng mã vạch 2 chiều một cách thành

công, tích cực cũng như hiệu quả

Cơ quan chính phủ / bưu điện

Chăm sóc sức khoẻ

Hậu cần quân sự

Chế tạo, sản xuất

Phân phối bán lẻ

II.3. Ưu khuyết điểm:

Page 32: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 22

II.3.1. Ưu điểm:

Hình 1.13

Mã vạch 2 chiều có khả năng chứa đựng, mã hóa thông tin nhiều hơn hẳn so với

mã vạch một chiều. Ngoài ra mã vạch 2 chiều còn có độ chính xác cao hơn.

II.3.2. Khuyết điểm:

Tuy nhiên chi phí đầu tư ban đầu cho các loại thiết bị đầu cuối dùng cho mã vạch

2 chiều tốn kém hơn so với mã vạch một chiều

II.4. Giới thiệu một số loại mã vạch:

II.4.1. PDF417:

PDF417 là loại mã vạch 2 chiều dạng

stacked code, có thể mã hóa bất kỳ chữ cái, số,

hoặc kí tự nào trong thực tế.

Mỗi kí tự bao gồm 4 vạch và 4 khoảng

trống trong một cấu trúc có 17 phần. Tên loại Hình 1.14

Page 33: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 23

mã vạch này được đặt xuất phát từ định dạng mã của nó. PDF được viết tắt từ chữ

"Portable Data File“

Mỗi ký hiệu PDF417 có từ 3 đến 90 dòng stack được bao quanh bởi một vùng

tĩnh trên tất cả bốn cạnh.

Mỗi dòng bao gồm : một vùng tĩnh leading, mẫu bắt đầu , kí tự chỉ định dòng bên

trái, từ một đến ba mươi kí tự chứa dữ liệu, kí tự chỉ định dòng bên phải, mẫu kết thúc,

và một vùng tĩnh trailing

PDF417 hỗ trợ việc nén văn bản, nén số, và nén byte theo cơ chế tương quan ánh

xạ giữa những giá trị codeword và dữ liệu được giải mã .

Ngoài ra, PDF417 có thể hỗ trợ lên tới 340 kí tự trên một inch vuông, với khả

năng lưu trữ dữ liệu cực đại là 1850 kí tự dạng văn bản.

II.4.2. Data Matrix:

Data Matrix là loại mã vạch 2 chiều dạng matrix

code, có khả năng mã hóa tất cả 128 kí tự của bảng mã

ASCII và một số tập hợp kí tự khác nhau .

Mỗi ký hiệu Data Matrix gồm có : một vùng tĩnh

perimeter xung quanh, tiếp giáp với hai đường viền liên

tục và hai đường viền đứt quãng, và những ô bên trong các

đường này có thể có màu sáng hay màu tối.

2 đường viền liên tục cùng với những ô dữ liệu được sử dụng để nhận dạng ký

hiệu, việc định hướng và định vị các ô.

Data Matrix có khả năng lưu trữ lên đến 500 MB dữ liệu trên mỗi inches vuông,

hay từ 1 đến 2335 kí tự .

Data Matrix là loại mã vạch được thiết kế giảm đến mức tối đa sự dư thừa, tận

dụng không gian để biểu diễn thông tin và khắc phục tương đối hoàn hảo những

khuyết điểm khi in.

Hình 1.15

Page 34: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 24

II.4.3. Maxi Code:

Maxi Code là loại mã vạch 2 chiều matrix code,

thường được sử dụng bởi United Pacel Service, dùng để

sắp xếp và phân loại các thư từ khi chuyển phát nhanh

Maxi Code được phát triển để có thể đọc và quét

được bằng các scanner ở tốc độ cao và theo bất kì phương

hướng nào.

Maxi Code là loại mã vạch có kích thước cố định bao gồm 866 lục giác được xếp

vào 33 dòng, xung quanh finder pattern nằm ở giữa.

Kích thước của một ký hiệu Maxi Code từ 1,05 cho đến 1,1 inch.

Một ký hiệu Maxi Code đơn có thể mã hóa lên đến 93 kí tự dữ liệu và sử dụng 5

phương thức khác nhau để có thể mã hóa được 256 kí tự của bảng mã ASCII.

MaxiCode sử dụng ba thuộc tính đặc trưng duy nhất khi mã hóa dữ liệu : Loại dịch vụ,

Mã quốc gia, và Mode

II.5. So sánh giữa các loại mã vạch:

Loại mã vạch Độ chính xác thấp nhất Độ chính xác cao nhất

Data Matrix 1 lỗi trên 10,5 triệu 1 lỗi trên 612,9 triệu

PDF 417 1 lỗi trên 10,5 triệu 1 lỗi trên 612,4 triệu

Code 129 1 lỗi trên 2,8 triệu 1 lỗi trên 37 triệu

Code 39 1 lỗi trên 1,7 triệu 1 lỗi trên 4,5 triệu

UPC 1 lỗi trên 349.000 1 lỗi trên 800.000

Hình 1.16

Page 35: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 25

II.6. Mã vạch PDF417:

II.6.1. Mã hóa mã vạch PDF417:

Hình 1.17

Công việc mã hóa dữ liệu sang mã vạch PDF417 bao gồm 2 bước xử lí :

Đầu tiên, dữ liệu được chuyển đổi ra các giá trị codeword từ 0 – 928, đại diện

cho dữ liệu. Đây là quá trình mã hóa ở mức cao ( high level )

Sau đó, các giá trị này được biểu diễn một cách vật lí bằng những mẫu bao gồm

các vạch và khoảng trống xen kẽ lẫn nhau. Đây chính là quá trình mã hóa ở

mức thấp ( low level )

Và công việc giải mã bao gồm 2 bước xử lí ngược lại

II.6.1.1. Mã hóa mức cao:

PDF417 mã hóa các giá trị tùy theo cluster. Những mẫu bao gồm các vạch và

khoảng trống của mỗi codeword không những phụ thuộc vào giá trị được mã hóa mà

còn phụ thuộc vào cluster được sử dụng bởi dòng đó

Toàn bộ 929 codeword của mã vạch PDF417 được biểu diễn bằng 3 tập hợp kí

hiệu loại trừ lẫn nhau, hay còn được gọi là cluster. Mỗi cluster mã hóa 929 codeword

thành những pattern khác nhau vì vậy một cluster thì luôn phân biệt với cluster khác.

Giá trị của cluster bao gồm : 0, 3, 6

Page 36: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 26

Khái niệm cluster được áp dụng cho tất cả kí hiệu của PDF417 ngoại trừ kí hiệu

bắt đầu và kết thúc

Mỗi dòng chỉ sử dụng duy nhất 1 trong 3 cluster (0, 3 hoặc 6) để mã hóa dữ liệu,

với sự lặp lại một cluster sau mỗi 3 dòng

Tóm lại điều cần biết đầu tiên khi muốn mã hóa bất kì codeword nào là phải biết

được giá trị cluster của nó

VD : Dòng 0 các codeword sử dụng cluster 0 Dòng 1 các codeword sử dụng cluster 3 Dòng 2 các codeword sử dụng cluster 6

Một cách tổng quát : cluster = (dòng mod 3) * 3

Mã hóa mức cao chuyển dữ liệu thành các codeword tương ứng. Và cơ chế nén

dữ liệu được sử dụng nhằm tăng cường khả năng lưu trữ dữ liệu khi mã hóa. Tùy theo

kiểu dữ liệu mà PDF417 có những cách mã hóa dữ liệu khác nhau

Mode là một phương thức nén dữ liệu đơn giản. Một kí hiệu PDF417 khi cần thiết

có khả năng chuyển đổi giữa những mode khác nhau

Mã vạch PDF417 hỗ trợ 3 mode cho việc mã hóa dữ liệu

Text Compaction mode

Byte Compaction mode

Numeric Compaction mode

Mỗi mode định nghĩa một ánh xạ xác định giữa dữ liệu người dùng và trình tự

codeword một cách hiệu quả. Trong một ứng dụng cụ thể thì mode tối ưu được lựa

chọn có thể là sự kết hợp cả 3 mode trên.

Trong mỗi mode thì 900 codeword được dùng để mã hóa dữ liệu. 29 codeword

còn lại được sử dụng cho các chức năng đặc biệt, và độc lập với mode nén dữ liệu

đang được sử dụng.

Page 37: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 27

Codeword từ 900 đến 928 có những chức năng sau đây

Chuyển đổi giữa các mode

Ứng dụng sử dụng Extended Channel Interpretation

Các ứng dụng mở rộng khác

II.6.1.1.1. Mã hóa mức cao – Text Compaction Mode

Text Compaction Mode mã hóa được tất cả kí tự ASCII có thể in được, có giá trị

từ 32 đến 126. Text Compaction Mode hỗ trợ 4 sub-mode :

Alpha ( các kí tự hoa ) Lower ( các kí tự thường ) Mixed ( kí tự số và một số dấu câu) Punctuation Mỗi sub-mode có tối đa 30 kí tự, bao gồm kí tự sub-mode latch và shift

Chế độ nén mặc nhiên của mã vạch PDF417 là Text Compaction Mode Alpha

sub-mode. Và latch codeword khi đổi từ mode khác sang Text Compaction Mode luôn

luôn chuyển thành Text Compaction Alpha sub-mode

II.6.1.1.2. Mã hóa mức cao – Byte Compaction Mode

Byte Compaction Mode cho phép mã hóa tất cả 256 giá trị byte 8-bit, bao gồm

các kí tự ASCII có mã từ 0 đến 127, đồng thời hỗ trợ tập hợp kí tự quốc tế. Byte

Compaction Mode mã hóa khoảng 1.2byte/codeword

Nếu xét khía cạnh mã hóa dữ liệu mạnh thì Byte Compaction Mode chính là một

lựa chọn tốt, ngược lại nó sẽ là Mode cho hiệu quả ít nhất khi xét về hiệu quả khi in

mã vạch

Mã hóa dữ liệu nhị phân sử dụng latch 901 hoặc 924, yêu cầu phải chuyển đổi dữ

liệu từ base 256 sang base 900

Quá trình mã hóa bằng latch codeword 924, lấy một lần 6 số hay giá trị chuyển

chúng thành 5 codeword base 900. Quá trình này được tiếp tục cho đến khi tất cả số và

giá trị đã được mã hóa hết

Nếu tổng các chữ số không phải bội của 6 thì ta sử dụng latch codeword 901. Khi

đó đối với các chữ số còn lại, ta lấy 1 chữ số là 1 codeword

Page 38: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 28

Thuật toán chuyển đổi từ base 256 sang base 900

n = tổng số các codeword ( trong trường hợp này là 5 ) t = biến tạm t = d5*2565 + d4*2564 + d3*2563 + d2*2562 + d1*2561 + d0*2560 Sau đó ta tính mỗi codeword như sau : For : mỗi codeword ci = c0 … cn-1 Begin ci = t mod 900 t = t div 900 End Trong đó ci = codeword n

Chú ý: khi kết quả là số âm trong trường hợp -29160 mod 929 = -361, ta lấy 929

– 361 = 568

Ví dụ: mã hóa dãy số {1,2,3,4,5,6}

t = 1*2565 + 2*2564 + 3*2563 + 4*2562 + 5*2561 + 6*2560 = 1108152157446 Tính codeword 0 c0 = 1108152157446 mod 900 = 846 t = 1108152157446 div 900 = 1231280174 Tính codeword 1 c1 = 1231280174 mod 900 = 74 t = 1231280174 div 900 = 1368089 Tính codeword 2 c2 = 1368089 mod 900 = 89 t = 1368089 div 900 = 1520 Tính codeword 3 c3 = 1520 mod 900 = 620 t = 1520 div 900 = 1 Tính codeword 4 (codeword cuối cùng) c4 = 1 mod 900 = 1 t = 1 div 900 = 0

Page 39: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 29

Kết quả cuối cùng, ta có trình tự các codeword sau khi mã hóa dãy số {1,2,3,4,5,6} là 924, 1, 620, 89, 74, 846 Ví dụ: Mã hóa dãy số {1,2,3,4,5,6,7,8,4}

Vì tống các chữ số cần mã hóa không phải bội của 6 nên ta sử dụng latch

codeword 901.

Do đó trình tự các codedword kết quả là 901, 1, 620, 89, 74, 846, 7, 8, 4

II.6.1.1.3. Mã hóa mức cao – Numeric Compaction Mode

Numeric Compaction Mode là một phương thức nén dữ liệu chuyển đổi từ base

10 sang base 900, thường được sử dụng để mã hóa các chuỗi chữ số dài liên tiếp.

Numeric Compaction Mode có khả năng mã hóa khoảng 2.93 chữ số numeric

/codeword.

Numeric Compaction Mode sử dụng latch codeword 901

Qui luật mã hóa các chuỗi chữ số dài liên tiếp có 2 bước

Chia chuỗi số thành các nhóm gồm 4 chữ số. Nhóm cuối cùng có thể có ít hơn 4 chữ số

Với mỗi nhóm ta thêm chữ số 1 vào vị trí thích hợp để hạn chế sự mất dữ liệu do chữ số 0 đứng đầu

Ví dụ: dữ liệu ban đầu : 00246812345678

sau 2 bước trên : 100 2468 1234 5678

Chú ý: số 1 ở đầu sẽ được bỏ trong thuật toán giải mã

Thuật toán chuyển đổi từ base 10 sang base 900

For : mỗi codeword ci = c0 … cn-1 Begin ci = x mod 900 x = x div 900 Nếu x = 0 thì dừng thuật toán End

Chú ý: khi kết quả là số âm trong trường hợp -29160 mod 929 = -361, ta lấy 929

– 361 = 568

Page 40: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 30

Ví dụ: Mã hóa chuỗi số 00021329000 -> 1000 2132 9000

Ban đầu x = 100021329000 Tính codeword 0 c0 = 100021329000 mod 900 = 0 x = 100021329000 div 900 = 111134810 Tính codeword 1 c1 = 111134810 mod 900 = 110 x = 111134810 div 900 = 123483 Tính codeword 2 c2 = 123483 mod 900 = 183 x = 123483 div 900 = 137 Tính codeword 3 c3 = 137 mod 900 = 137 x = 137 div 900 = 0 Trình tự các codedword kết quả là 902, 137, 183, 110, 0

II.6.1.2. Mã hóa mức thấp

Như đã nói lúc đầu mã hóa mức thấp là quá trình các giá trị codeword đã có được

từ bước mã hóa mức cao, được biểu diễn một cách vật lí bằng những mẫu bao gồm các

vạch và khoảng trống xen kẽ lẫn nhau đã được định nghĩa trước

Cấu trúc của 1 codeword : 4 vạch và 4 khoảng trắng xen kẽ. Mỗi vạch hay

khoảng trắng có chiều rộng từ 1 đến 6 module, nhưng tổng cộng số module phải là 17

Chiều rộng của 1 module hay phần tử hẹp nhất được gọi là x-dimension ; chiều

cao của chúng là y-dimension

Mỗi codeword được định nghĩa bằng 8 chữ số liên tiếp, biểu diển cho các vạch và

khoảng trắng, được gọi là x-sequence

Ví dụ: codeword có x-sequence 31111334 được biểu diễn như sau :

Hình 1.18

Page 41: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 31

II.6.1.2.1. Cấu trúc của mẫu bắt đầu và kết thúc:

Mẫu bắt đầu và kết thúc giúp cho mã vạch PDF417 có thể được đọc hay quét

bằng scanner từ trái sang phải hoặc từ phải sang trái

Chính vì vậy mà PDF417 có mẫu bắt đầu và kết thức duy nhất.

X-sequence của start pattern : 81111113

X-sequence của stop pattern : 711311121

II.6.2. Cơ chế phát hiện và sửa lỗi của mã vạch PDF417:

Một trong những đặc điểm chính PDF417 là khả năng phát hiện và sửa lỗi. Mỗi

mã vạch có 2 codeword phục vụ cho việc phát hiện lỗi. Khả năng sửa lỗi có thể do

người sử dụng chọn, dựa trên nhu cầu của ứng dụng khi mã vạch được sinh ra.

Phát hiện lỗi đòi hỏi phải có hai error-detection codeword cho mỗi kí hiệu.Việc

sửa lỗi bao gồm sự phối hợp giữa tính mềm dẻo và lựa chọn của người sử dụng.

Khi in mã vạch 2 chiều PDF417, người sử dụng phải xác định một cấp độ bảo

mật từ 0 đến 8. Điều này có nghĩa là, ví dụ như tại cấp độ 6, tổng cộng có 126

codeword có thể đồng thời mất đi hoặc bị hủy, và phần còn lại của mã vạch có thể đọc

và giải mã được do đó nội dung phần còn lại này có thể khôi phục được.

Ngoài việc sửa lỗi cho những dữ liệu mất hoặc bị huỷ, PDF417 còn có thể khôi

phục được cả những codeword không giải mã được. Để khôi phục cho một codeword

nó phải có 2 codeword : một codeword để phát hiện lỗi và một codeword để sửa lỗi

theo nguyên tắc sau :

Số codeword bị xóa + 2 lần số codeword giải mã sót ≤ Giới hạn tối đa

Hình 1.19

Hình 1.20

Page 42: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 32

II.6.2.1. Cấp độ sửa lỗi được đề nghị :

Cấp độ thấp nhất cho việc sửa lỗi nên được xác định như trong bảng sau đây :

Số codeword mang dữ liệu Cấp độ sửa lỗi thấp nhất

1 đến 40 2

41 đến 160 3

161 đến 320 4

321 đến 863 5

Ngoài ra trong chế độ mã hóa dữ liệu bình thường, chúng ta cần lưu ý :

Text Compaction mode : một codeword mã hóa được 1,8 kí tự văn bản

Numeric Compaction mode : một codeword mã hóa được 2,93 chữ số

Việc sửa lỗi ở những cấp độ cao nên được sử dụng khi kí hiệu hư hỏng hoặc giảm

sút một cách đáng kể nhưng có thể lường trước được. Cấp độ sửa lỗi thấp hơn có thể

sử dụng trong các hệ thống ứng dụng đóng.

II.6.2.2. Những vấn đề khác cần biết đến khi sử dụng cấp độ sửa lỗi:

Bởi vì số lượng codeword mang dữ liệu tối đa của mã vạch PDF417 là 925 nên

nó cũng giới hạn cấp độ sửa lỗi có thể có được. Nhiều hơn 415 codewords mang dữ

liệu sử dụng cấp độ sửa lỗi 8. Nhiều hơn 671 codewords mang dữ liệu sử dụng cấp độ

sửa lỗi 7 và 8. Hay 799 codewords mang dữ liệu sử dụng cấp độ sửa lỗi 6, 7 và 8.

Codeword của mã vạch PDF417 có thể bị xóa, hay mờ do đó cấp độ sửa lỗi có thể

là 8 hoặc ở một cấp độ nào đó mà kích thước tối đa của mã vạch phù hợp với ứng dụng

thực tế cụ thể

Việc sửa lỗi không nên được sử dụng như là một thay thế cho việc đáp ứng hoàn

hảo chất lượng của mã vạch, hay là để bù đắp cho quá trình in kém chất lượng.

Mối quan hệ giữa cấp độ bảo mật và khả năng sửa lỗi : Giới hạn tối đa của cấp độ

bảo mật là E + 2(M)

Page 43: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 33

0 0 1 2 2 6 3 14 4 30 5 62 6 126 7 254 8 510

E : số codeword bị xóa ( không thể giải mã )

M : số codeword bị giải mã sót

Việc tính error-detection codeword dựa trên tất cả codeword mang dữ liệu ngoại

trừ row indicator

Để tính những codeword này, trước hết chúng ta định nghĩa các kí hiệu như sau :

n : tổng số codeword s : cấp độ bảo mật do người sử dụng lựa chọn k : số codeword phát hiện/sửa lỗi hay 2s+1 gk(x) : đa thức khai triển (x – 3)(x – 32) ... (x – 3k), x là biến chưa biết ak : hệ số của x khi khai triển đa thức gk(x) ck : codeword phát hiện/sửa lỗi ; c0 ... ck-1 dn : codeword dữ liệu ; d0 ... dn-1 t1,t2,t3 : biến tạm

Ghi chú : c0 và c1 được sử dụng cho việc phát hiện lỗi, c2 đến ck-1 để sửa lỗi. k

phụ thuộc cấp độ bảo mật s

Hệ số của đa thức khai triển được tính như sau : gk(x) = (x-3)(x-32) ... (x-3k) = a0 + a1x + ... + ak-1xk-1 + xk Tiếp theo, ta tính những hệ số ở trên : For ai = a0 .. ak-1 Begin ai = ai mod 929 End

Ví dụ: Tính hệ số của đa thức khai triển cho cấp độ bảo mật 1

s = 1 k = 2s+1 = 4

Page 44: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 34

g4(x) = (x-3)(x-32)(x-33)(x-34) = 59049 – 29160x + 3510x2 – 120x3 + x4 a0 = 59049 mod 929 = 522 a1 = -29160 mod 929 = 568 a2 = 3510 mod 929 = 723 a3 = -120 mod 929 = 809

Ghi chú: Bảng hệ số của đa thức khai triển dưới đây (*) được sử dụng để mã hóa

mã vạch PDF417 ở bất kì cấp độ bảo mật nào.

Error detection/correction codeword được tính như sau :

Khởi tạo các codeword phát hiện/sửa lỗi c0, ... , ck-1 bằng 0

Khởi tạo các biến tạm t1, t2, t3 bằng 0

For : mỗi codeword di = dn-1 ... d0 Begin t1 = (di + ck-1) mod 929 For : mỗi codeword phát hiện/sửa lỗi cj = ck-1 .. c1 Begin t2 = (t1 * aj) mod 929 t3 = 929 – t2 cj = (cj-1 + t3) mod 929 End t2 = (t1 * a0) mod 929 t3 = 929 – t2 c0 = t3 mod 929 End Cuối cùng ta tính mỗi codeword phát hiện/sửa lỗi cj = c0 .. ck-1 Begin If cj not 0 cj = 929 – cj End

Ví dụ: Chuỗi PDF417 được biểu diễn bằng các codeword : 453, 178, 121, 239.

Tiếp theo, kí hiệu mô tả chiều dài phía trước các codeword là 5.

5, 453, 178, 121, 239

n = 5 tổng số codeword ( bao gồm kí hiệu mô tả chiều dài ) d4 = 5 d3 = 453 d2 = 178 d1 = 121 d0 = 239

Chúng ta sử dụng cấp độ bảo mật 1 :

Page 45: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 35

s = 1 k = 2s+1 = 4 a0, ... ,a3 = 522,568,723,809 Khởi tạo c0, ... ,c3 bằng 0 t1 = (d4 + c3) mod 929 = (5 + 0) mod 929 = 5 t2 = (t1 * a3) mod 929 = (5 * 809) mod 929 = 329 t3 = 929 - t2 = 929 – 329 = 600 c3 = (c2 + t3) mod 929 = (0 + 600) mod 929 = 600 t2 = (t1 * a2) mod 929 = (5 * 723) mod 929 = 828 t3 = 929 - t2 = 929 - 828 = 101 c2 = (c1 + t3) mod 929 = (0 + 101) mod 929 = 101 t2 = (t1 * a1) mod 929 = (5 * 568) mod 929 = 53 t3 = 929 - t2 = 929 - 53 = 876 c1 = (c0 + t3) mod 929 = (0 + 876) mod 929 = 876 t2 = (t1 * a0) mod 929 = (5 * 522) mod 929 = 752 t3 = 929 - t2 = 929 - 752 = 177 c0 = t3 mod 929 = 177 mod 929 = 177 t1 = (d3 + c3) mod 929 = (453 + 600) mod 929 = 124 t2 = (t1 * a3) mod 929 = (124 * 809) mod 929 = 913 t3 = 929 - t2 = 929 – 913 = 16 c3 = (c2 + t3) mod 929 = (101 + 16) mod 929 = 117 t2 = (t1 * a2) mod 929 = (124 * 723) mod 929 = 468 t3 = 929 - t2 = 929 – 468 = 461 c2 = (c1 + t3) mod 929 = (876 + 461) mod 929 = 408 t2 = (t1 * a1) mod 929 = (124 * 568) mod 929 = 757 t3 = 929 - t2 = 929 – 757 = 172 c1 = (c0 + t3) mod 929 = (177 + 172) mod 929 = 349 t2 = (t1 * a0) mod 929 = (124 * 522) mod 929 = 627 t3 = 929 - t2 = 929 - 627 = 302 c0 = t3 mod 929 = 302 mod 929 = 302 t1 = (d2 + c3) mod 929 = (178 + 117) mod 929 = 295 t2 = (t1 * a3) mod 929 = (295 * 809) mod 929 = 831

Page 46: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 36

t3 = 929 - t2 = 929 - 831 = 98 c3 = (c2 + t3) mod 929 = (408 + 98) mod 929 = 506 t2 = (t1 * a2) mod 929 = (295 * 723) mod 929 = 544 t3 = 929 - t2 = 929 – 544 = 385 c2 = (c1 + t3) mod 929 = (349 + 385) mod 929 = 734 t2 = (t1 * a1) mod 929 = (295 * 568) mod 929 = 340 t3 = 929 - t2 = 929 - 340 = 589 c1 = (c0 + t3) mod 929 = (302 + 589) mod 929 = 891 t2 = (t1 * a0) mod 929 = (295 * 522) mod 929 = 705 t3 = 929 - t2 = 929 – 705 = 224 c0 = t3 mod 929 = 224 mod 929 = 224 t1 = (d1 + c3) mod 929 = (121 + 506) mod 929 = 627 t2 = (t1 * a3) mod 929 = (627 * 809) mod 929 = 9 t3 = 929 - t2 = 929 - 9 = 920 c3 = (c2 + t3) mod 929 = (734 + 920) mod 929 = 725 t2 = (t1 * a2) mod 929 = (627 * 723) mod 929 = 898 t3 = 929 - t2 = 929 - 898 = 31 c2 = (c1 + t3) mod 929 = (891 + 31) mod 929 = 922 t2 = (t1 * a1) mod 929 = (627 * 568) mod 929 = 329 t3 = 929 - t2 = 929 - 329 = 600 c1 = (c0 + t3) mod 929 = (224 + 600) mod 929 = 824 t2 = (t1 * a0) mod 929 = (627 * 522) mod 929 = 286 t3 = 929 - t2 = 929 - 286 = 643 c0 = t3 mod 929 = 643 mod 929 = 643 t1 = (d0 + c3) mod 929 = (239 + 725) mod 929 = 35 t2 = (t1 * a3) mod 929 = (35 * 809) mod 929 = 445 t3 = 929 - t2 = 929 - 445 = 484 c3 = (c2 + t3) mod 929 = (922 + 484) mod 929 = 477 t2 = (t1 * a2) mod 929 = (35 * 723) mod 929 = 222 t3 = 929 - t2 = 929 - 222 = 707 c2 = (c1 + t3) mod 929 = (824 + 707) mod 929 = 602 t2 = (t1 * a1) mod 929 = (35 * 568) mod 929 = 371

Page 47: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 37

t3 = 929 - t2 = 929 - 371 = 558 c1 = (c0 + t3) mod 929 = (643 + 558) mod 929 = 272 t2 = (t1 * a0) mod 929 = (35 * 522) mod 929 = 619 t3 = 929 - t2 = 929 - 619 = 310 c0 = t3 mod 929 = 310 mod 929 = 310

Cuối cùng ta lấy những kết quả đã tính ở trên, để có được 4 codeword dùng cho

việc phát hiện và sửa lỗi cho mã vạch PDF417 như sau :

c3 = 929 - c3 = 929 - 477 = 452 c2 = 929 - c2 = 929 - 602 = 327 c1 = 929 - c1 = 929 - 272 = 657 c0 = 929 - c0 = 929 - 310 = 619

II.6.2.3. Bảng hệ số đa thức khai triển tương ứng các cấp độ bảo mật:

Cấp độ bảo mật 0

27 917

Cấp độ bảo mật 1

522 568 723 809

Cấp độ bảo mật 2

237 308 436 284 646 653 428 379

Cấp độ bảo mật 3

274 562 232 755 599 524 801 132 295 116 442 428 295 42 176 65

Cấp độ bảo mật 4

361 575 922 525 176 586 640 321 536 742 677 742 687 284 193 517

273 494 263 147 593 800 571 320 803 133 231 390 685 330 63 410

Cấp độ bảo mật 5

539 422 6 93 862 771 453 106 610 287 107 505 733 877 381 612

723 476 462 172 430 609 858 822 543 376 511 400 672 762 283 184

440 35 519 31 460 594 225 535 517 352 605 158 651 201 488 502

Page 48: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 38

648 733 717 83 404 97 280 771 840 629 4 381 843 623 264 543

Cấp độ bảo mật 6

521 310 864 547 858 580 296 379 53 779 897 444 400 925 749 415

822 93 217 208 928 244 583 620 246 148 447 631 292 908 490 704

516 258 457 907 594 723 674 292 272 96 684 432 686 606 860 569

193 219 129 186 236 287 192 775 278 173 40 379 712 463 646 776

171 491 297 763 156 732 95 270 447 90 507 48 228 821 808 898

784 663 627 378 382 262 380 602 754 336 89 614 87 432 670 616

157 374 242 726 600 269 375 898 845 454 354 130 814 587 804 34

211 330 539 297 827 865 37 517 834 315 550 86 801 4 108 539

Cấp độ bảo mật 7

524 894 75 766 882 857 74 204 82 586 708 250 905 786 138 720

858 194 311 913 275 190 375 850 438 733 194 280 201 280 828 757

710 814 919 89 68 569 11 204 796 605 540 913 801 700 799 137

439 418 592 668 353 859 370 694 325 240 216 257 284 549 209 884

315 70 329 793 490 274 877 162 749 812 684 461 334 376 849 521

307 291 803 712 19 358 399 908 103 511 51 8 517 225 289 470

637 731 66 255 917 269 463 830 730 433 848 585 136 538 906 90

2 290 743 199 655 903 329 49 802 580 355 588 188 462 10 134

628 320 479 130 739 71 263 318 374 601 192 605 142 673 687 234

722 384 177 752 607 640 455 193 689 707 805 641 48 60 732 621

895 544 261 852 655 309 697 755 756 60 231 773 434 421 726 528

503 118 49 795 32 144 500 238 836 394 280 566 319 9 647 550

73 914 342 126 32 681 331 792 620 60 609 441 180 791 893 754

605 383 228 749 760 213 54 297 134 54 834 299 922 191 910 532

Page 49: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 39

609 829 189 20 167 29 872 449 83 402 41 656 505 579 481 173

404 251 688 95 497 555 642 543 307 159 924 558 648 55 497 10

Cấp độ bảo mật 8

352 77 373 504 35 599 428 207 409 574 118 498 285 380 350 492

197 265 920 155 914 299 229 643 294 871 306 88 87 193 352 781

846 75 327 520 435 543 203 666 249 346 781 621 640 268 794 534

539 781 408 390 644 102 476 499 290 632 545 37 858 916 552 41

542 289 122 272 383 800 485 98 752 472 761 107 784 860 658 741

290 204 681 407 855 85 99 62 482 180 20 297 451 593 913 142

808 684 287 536 561 76 653 899 729 567 744 390 513 192 516 258

240 518 794 395 768 848 51 610 384 168 190 826 328 596 786 303

570 381 415 641 156 237 151 429 531 207 676 710 89 168 304 402

40 708 575 162 864 229 65 861 841 512 164 477 221 92 358 785

288 357 850 836 827 736 707 94 8 494 114 521 2 499 851 543

152 729 771 95 248 361 578 323 856 797 289 51 684 466 533 820

669 45 902 452 167 342 244 173 35 463 651 51 699 591 452 578

37 124 298 332 552 43 427 119 662 777 475 850 764 364 578 911

283 711 472 420 245 288 594 394 511 327 589 777 699 688 43 408

842 383 721 521 560 644 714 559 62 145 873 663 713 159 672 729

624 59 193 417 158 209 563 564 343 693 109 608 563 365 181 772

677 310 248 353 708 410 579 870 617 841 632 860 289 536 35 777

618 586 424 833 77 597 346 269 757 632 695 751 331 247 184 45

787 680 18 66 407 369 54 492 228 613 830 922 437 519 644 905

789 420 305 441 207 300 892 827 141 537 381 662 513 56 252 341

242 797 838 837 720 224 307 631 61 87 560 310 756 665 397 808

Page 50: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 40

851 309 473 795 378 31 647 915 459 806 590 731 425 216 548 249

321 881 699 535 673 782 210 815 905 303 843 922 281 73 469 791

660 162 498 308 155 422 907 817 187 62 16 425 535 336 286 437

375 273 610 296 183 923 116 667 751 353 62 366 691 379 687 842

37 357 720 742 330 5 39 923 311 424 242 749 321 54 669 316

342 299 534 105 667 488 640 672 576 540 316 486 721 610 46 656

447 171 616 464 190 531 297 321 762 752 533 175 134 14 381 433

717 45 111 20 596 284 736 138 646 411 877 669 141 919 45 780

407 164 332 899 165 726 600 325 498 655 357 752 768 223 849 647

63 310 863 251 366 304 282 738 675 410 389 244 31 121 303 263

III. Ứng dụng thực tế của mã vạch:

III.1. Ứng dụng trong xét nghiệm

Trong xét nghiệm thường dùng các vật liệu thủy tinh và trước dây thường dùng

bút chì ghi tên khoa và số hồ sơ hoặc tên bệnh nhân trên ống nghiệm. Việc làm này đã

tạo nên một số sai sót nguy hiểm cho tính mạng bệnh nhân và đã từng xảy ra ở một vài

bệnh viện.

Thí dụ : số hồ sơ 66009 nếu quay chiều ống nghiệm lại sẽ là 60099 hoặc lầm lẫn

giữa tên Hương và Hường do nét bút chì bị mất vì thế việc sử dụng mã vạch là rất cần

thiết trong xét nghiệm.

Việc triển khai mã vạch ở khâu nào tùy tình hình mỗi bệnh viện. Ví dụ cụ thể là

tại khâu tiếp đón bệnh viện có thể cung cấp ngay cho bệnh nhân các mã vạch sẽ dùng

trong quá trình điều trị. Mã vạch này cũng có thể được dán vào sổ hoặc thẻ khám bệnh

của bệnh nhân.

III.2. Ứng dụng trong việc trồng và bán rau sạch

Sau khi thu hoạch rau, trung tâm phải phân loại rau nhằm phân biệt từng lô rau tương ứng với từng hộ nông dân trồng rau an toàn. Sau khi đưa rau về thành phố, tất cả

Page 51: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1

các loại rau đều phải qua công đoạn rửa bằng nước ozone để tẩy sạch hàm lượng

vi sinh còn sót lại trong rau. Qua khâu này, rau được phân loại và đóng gói theo từng

mã vạch riêng trên bao bì sản phẩm. Ưu điểm của việc dùng mã vạch là, "chỉ cần nhấp

chuột trên máy tính là có thể biết được khách hàng là ai, có tên tuổi địa chỉ nếu là

khách hàng quen. Ai là người bán gói rau đó, thời gian bán, nông dân trồng… tất cả

những thông số kỹ thuật đều kiểm soát được”. Ðây là cách quản lý hiệu quả và "an

toàn nhất cho rau an toàn", mà các chuyên gia của trung tâm thực hiện nhằm thuyết

phục người tiêu dùng về tính an toàn của sản phẩm.

I.1. Ứng dụng trong việc tránh sử dụng nhầm thuốc

Ở Mỹ, hàng năm có khoảng 800.000 người là nạn nhân của sự

nhầm lẫn trong sử dụng thuốc trị bệnh, chưa kể lỗi sử dụng thiết bị

không phù hợp hoặc lỗi phẫu thuật... Để chống lại những lỗi sử dụng

thuốc trị bệnh, Cơ quan Quản lý Thực phẩm & Dược phẩm Hoa Kỳ

(FDA) mới đây đã xây dựng một hệ thống mã số mã vạch và máy quét

(scanner) đối với các loại dược phẩm và bệnh nhân.

Thực vậy, mỗi loại thuốc được đưa đến bệnh viện phải chứa đựng những thông

tin cơ bản thông qua mã số mã vạch ở bao bì: như tên thuốc, liều dùng, chống chỉ định,

những phản ứng phụ... Về phần mình, bệnh nhân sẽ được trang bị một chiếc vòng chứa

thông tin về mã số mã vạch nhận dạng. Khi quản lý việc điều trị của bệnh nhân, nhân

viên y tế chỉ việc quét (scanning) hai mã số mã vạch.

Một máy tính trung tâm được nối với máy quét có chứa những thông tin chi tiết

của từng bệnh nhân (những hướng dẫn điều trị, trọng lượng cơ thể, tuổi tác, những

chẩn đoán cũng như toàn bộ các loại dược phẩm được sử dụng trong việc điều trị...) sẽ

kiểm chứng sự trùng hợp của các dữ liệu của thuốc cần dùng. Trong trường hợp nhầm

lẫn, máy quét sẽ phát ra tín hiệu báo động. Hệ thống này được thử nghiệm trong 90

ngày tại một vài bệnh viện trước khi chính thức được đưa vào sử dụng, là kết quả cụ

thể đầu tiên của cơ quan FDA, kể từ khi cơ quan chuyên môn chỉ đạo này bị chỉ trích

về những nhầm lẫn trong việc sử dụng thuốc trị bệnh.

Page 52: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

Hệ thống mã số mã vạch này không phải được lựa chọn một cách tình cờ. Nó đã

chứng minh được hiệu quả tại 3 bệnh viện ở Hoa Kỳ: Những lỗi về sử dụng thuốc đã

giảm 80% tại 2 bệnh viện ở Colorado và New Hampshire, nơi mà hệ thống này đã

được lắp đặt cách đây vài năm. Còn trong các bệnh viện dành cho các cựu chiến binh ở

Kansas thì kết quả cho thấy không còn hiện tượng nhầm lẫn về thuốc men nữa kể từ

khi áp dụng hệ thống này.

Giới y học đánh giá rất cao hệ thống mới này. Mặc dù các khoản chi tiêu hằng

năm cho các thiết bị y khoa tại các bệnh viện ở Mỹ ước tính lên tới khoảng 7 tỉ USD,

nhưng phần lớn các bệnh viện vẫn sẵn sàng đầu tư hệ thống này. Thực ra, số tiền đầu

tư cho hệ thống này chẳng thấm gì so với những chi phí do lỗi dùng thuốc, điều trị

thêm và bồi thường kiện tụng hằng năm lên tới 177,4 tỉ USD ở Mỹ.

Mọi điều kiện có vẻ đã hội đủ để hệ thống này được áp dụng rộng rãi. Tuy nhiên,

còn cần phải thuyết phục ngành công nghiệp dược phẩm đầu tư (ước tính khoảng 50

triệu USD) vào việc thay đổi hệ thống nhãn hiệu truyền thống bằng hệ thống mới.

Đối với cơ quan FDA, hệ thống mã số mã vạch này sẽ là một công cụ mạnh để đo

lường những phản ứng phụ (side effects) của các loại thuốc mà ngành công nghiệp này

vốn phải cảnh giác. Hơn nữa, lợi thế của hệ thống mới là sẽ tạo ra được một cơ sở dữ

liệu khổng lồ kiểm soát các loại thuốc và những phản ứng không mong muốn

(undesireable effects) đã được biết hoặc còn mới.

Cuối cùng, cơ quan FDA còn dự định áp dụng hệ thống mã số mã vạch tương tự cho

các sản phẩm máu vì những nguy cơ trong truyền máu là rất cao

I.2. Ứng dụng trong việc làm CMND

Ngày 11-5, Thủ tướng Chính phủ đã phê duyệt dự án sản xuất, cấp và quản lý

chứng minh nhân dân (CMND) với mục tiêu: Xây dựng hệ thống thu, nhận và quản lý

dữ liệu đăng ký CMND tự động trên mạng máy tính toàn quốc; sản xuất, cấp thẻ

CMND trên dây chuyền công nghệ hiện đại. Dự án chia làm hai giai đoạn: Giai đoạn 1

từ 2004–2007 sẽ sản xuất và cấp 24 triệu CMND. Giai đoạn 2 từ năm 2008 đến khi

hoàn thành dự án. Bảo đảm mỗi công dân Việt Nam từ 14 tuổi trở lên đều được cấp

CMND với một số duy nhất, không trùng lặp, chống được nạn làm giả CMND. Hai

Page 53: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

trung tâm dữ liệu quốc gia sẽ được thành lập ở Hà Nội và TPHCM. Sản phẩm thẻ

CMND in mã vạch hai chiều, độ bền 15 năm.

I.3. Ứng dụng trong làm thẻ học sinh

Theo Sở GD-ĐT TP.HCM, sở sẽ tiến hành thực hiện thẻ học sinh có mã vạch cho

mỗi HS phổ thông từ lớp 1-12, dự kiến năm học 2004-2005 tới đây HS sẽ được cấp thẻ

này. Hiện nay ngành giáo dục các cấp đang quản lý HS bằng mã số. Các mã số này

mới chỉ bước đầu quản lý HS về mặt hành chính (đầu vào, đầu ra, chuyển đi, chuyển

đến...), nay mã vạch sẽ lưu thêm những thông tin cá nhân của HS và tiến đến kết hợp

với Sở Y tế theo dõi tình trạng sức khỏe của HS. Như vậy, chỉ cần một thẻ này HS có

thể sử dụng thay thế cho thẻ thư viện hoặc các thẻ cá nhân khác. Đây là việc làm mở

đầu cho việc thực hiện thẻ thông tin của công dân TP.HCM trong tương lai.

I.4. Ứng dụng trong việc ghi hạn sử dụng của sữa Vinamilk

Để đảm bảo sức khỏe khi sử dụng và mua sản phẩm cần phài biết sản phẩm có

còn hạn sử dụng hay không. Tất cả các sản phẩm của Vinamilk in hạn sử dụng là dãy

số gồm sáu chữ số. Để biết cách xem hạn sử dụng trên hộp sữa tươi, bạn hãy xem sáu

số cuối trên phần đầu của hộp sữa, ví dụ dãy số 011202 thì 2 số đầu 01 là ngày hết hạn

sử dụng sữa, hai số giữa 12 là tháng hết hạn sử dụng sữa, hai số cuối 02 là năm hết hạn

sử dụng sữa, có nghĩa là ngày hết hạn sử dụng hộp sữa này là ngày 1 tháng 12 năm

2002. Mã vạch sản phẩm không dùng để xem hạn sử dụng sản phẩm. Mã vạch in trên

sản phẩm chỉ để phân loại sản phẩm và quản lý giá cả trên máy, không liên quan gì

đến hạn sử dụng. Trên khía cạnh nào đó, mã vạch như một ngôn ngữ chung giúp nhận

biết các loại sản phẩm và giá sản phẩm khi sản phẩm lưu thông trên thế giới (mặc dù

hệ thống tiền tệ khác nhau).

I.5. Ứng dụng trong việc chống giả mạo hiện nay

Tại một hội nghị về công nghệ nano phòng chống và

phát hiện tội phạm diễn ra tuần trước tại London, Anh,

Russel Cowburn thuộc ĐH Durham đã giới thiệu một công

Page 54: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

nghệ mới chống hàng giả. Đó là các mã vạch, chứa những hạt từ tính có đường kính

chỉ bằng 1 phần triệu của 1mm, được gắn lên hàng hoá.

Các hàng mã vạch chứa những nguyên tử permalloy - hợp kim của nickel và sắt.

Chúng được in theo cách tương tự vi mạch điện tử. Mỗi bản in sắp xếp các hạt từ tính

theo một hình mẫu khác biệt. Do mỗi mã vạch là độc nhất vô nhị nên từ trường của nó

cũng độc nhất. Sau này, từ trường có thể được đo, ghi và kiểm tra nhằm đảm bảo mã

vạch là thật.

Các từ trường khác nhau tương tác với ánh sáng theo cách thức khác nhau. Do

vậy, ánh phản xạ của laser phân cực từ mã vạch tiết lộ tính chất từ của nó. Chi tiết về

những tính chất này được lưu trong một cơ sở dữ liệu. Dữ liệu được nối với số của mỗi

mã vạch.

Để kiểm tra mã vạch, một thiết bị chẳng hạn như máy quét laser tại siêu thị đo từ

trường của nó và lưu lại số. Sau đó, máy quét tham khảo cơ sở dữ liệu để kiểm tra liệu

từ trường có khớp với số mã vạch hay không. Thủ tục này chỉ mất vài giây. Những kẻ

làm giả hàng hoá không thể tạo ra những mã vạch có các từ trường riêng biệt. Để qua

mặt được hệ thống này, chúng phải đột nhập vào cơ sở dữ liệu.

Theo Cowburn, để tránh mã vạch từ tính bị bóc ra và dán vào hàng giả, nhà sản

xuất có thể in chúng trên những vật liệu mà đảm bảo rằng bóc mã vạch ra sẽ làm xáo

trộn từ trường. Ông hy vọng bán công nghệ này cho các tổ chức tài chính để sử dụng

trên giấy chứng nhận bảo hiểm hoặc cho các nhà sản xuất ôtô - những người muốn bảo

đảm tính xác thật của các linh kiện. Máy quét và cơ sở dữ liệu được tích hợp trong một

thiết bị chỉ bằng kích cỡ 1 chiếc Walkman. Do đó, thanh tra có thể kiểm tra hàng hóa

ngay tại chỗ.

II. Một số thông tin về RFID: Sự phát triển cùa khoa học kỹ thuật hiện đại và việc ứng dụng các thành tựu Khoa

học kĩ thuật ấy thật đáng sợ. Mã số mã vạch vốn được coi là một hình thức hiện đại để

nhận biết sản phẩm nay cũng trở nên lạc hậu, và người ta đang nghĩ ra một hình thức

hiện đại khác để thay thế nó. Bởi vì đối với mã vạch dán trên hàng hóa trong siêu thị

khách hàng có thể tráo đổi một cách dễ dàng, và thông tin về hàng hóa đó sẽ không

Page 55: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

còn chính xác nữa, kẻ gian sẽ mua được hàng hóa với giá thấp hơn giá trị thực tế nhiều

lần, gây thiệt hại không nhỏ đến doanh thu của siêu thị.

II.1. Khi ông lớn làm thử nghiệm :

Một thượng đế nhanh mắt, lanh mồm có thể sẽ thốt lên “hàng không có mã vạch”

như thế khi đến các siêu thị Wal-mart ở Mỹ mua hàng tiêu dùng cho toàn thể gia đình

trong thời gian sắp tới đây. Nhưng sản phẩm “no barcode” (không có mã vạch) mà

người tiêu dùng phát hiện nào có phải là sản phẩm kém chất lượng, quá thời hạn hay

do cách nào đó sơ sểnh đã lọt khỏi dây chuyền kiểm tra đâu !

Tiềm ẩn bên trong lớp bao bì của sản phẩm ấy là một thiết bị vô tuyến nhận dạng

mang tên khoa học chuyên ngành là Radio Frequency Identification (RFID). Thiết bị

này đang được chuỗi siêu thị bán lẻ hàng đầu thế giới Wal-mart chọn thay thế cho mã

vạch nay xem ra không còn hiệu quả cao trong thời buổi mà vô số chủng loại hàng hóa

tiêu dùng được chất đầy trong các tủ kính, trên các kệ, các quầy.

Đầu tháng 7 vừa qua, tổng giám đốc công nghệ thông tin Linda Dillman ở trụ sở

chính cùa Wal-mart tại thành phố Bentonville bang Arkansas thông báo đã chính thức

yêu cầu 100 nhà cung cấp hàng hóa chính yếu cho tập đoàn Wal-mart phải sẵn sàng để

từ đầu năm 2005 trở đi sẽ đưa RFID vào một số chủng loại hàng tiêu dùng bày bán cho

đám đông.

Do kích cỡ khổng lồ và uy lực tiền của chuỗi Wal-mart, các nhà phân tích chuyên

ngành cho rằng RFID sẽ nhanh chóng lan tràn sang đủ các loại hàng hóa khác. Các nhà

cung cấp hàng phải thay barcode bằng RFID (để cạnh tranh mà tiếp tục sống còn) đang

lo ngại phải tăng chi phí nhưng các chuyên gia cho biết, RFID sẽ không tốn kém nhiều

lắm đâu khi nó trở nên phổ biến toàn cầu.

“ Có nhiều công ty sản xuất kinh doanh không muốn mình phải là những người

đầu tiên nhảy ùm xuống dòng sông “, giám đốc Kevin Ashton thuộc tổ hợp Auto-ID

Center lo thiết kế và phát triển RFID nhận xét. “ Nhưng một Wal-mart tự nó đã hơn

hẳn 101 công ty lớn, nhỏ khác “. Có nghĩa là những gì Wal-mart tiên phong khởi

xướng thì tất cả các nhà buôn lớn, buôn lẻ sẽ đều theo.

Page 56: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

II.2. RFID là gì ?

Nó là một thiết bị có kích cỡ nhỏ chỉ bằng con tem bưu chính nhưng nó mang

trong thân mình những con bọ điện tử cực kì nhỏ và một ăng-ten. Khi một RFID được

gắn vào một sản phẩm, ngay tức khắc nó sẽ phát ra các tín hiệu vô tuyến chỉ báo cho

biết sản phẩm ấy đang nằm ở chỗ nào, trên xe đẩy vào kho, trong kho lạnh hay trên xe

đẩy của khách hàng. Thiết bị này còn nối kết mình vào mạng vi tính của cửa hàng và

nhờ vậy người bán hàng có thể biết rõ sản phẩm ấy được sản xuất khi nào, tại nhà máy

nào, màu sắc và kích cỡ của sản phẩm. Và để bảo quản tốt sản phẩm thì phải lưu trữ nó

ở nhiệt độ nào.

Nhờ RFID mà thời gian và chi phí quản lý, trưng bày, bán hàng sẽ giảm được rất

nhiều. Tín hiệu vô tuyến phát ra từ chiếc tem điện tử này sẽ khiến các nhân viên bán

hàng không phải đưa đầu dò đọc lướt lên mã vạch của món hàng nữa; việc tính tiền sẽ

nhanh lẹ hơn rất nhiều, các đuôi dài người tiêu dùng xếp hàng sẽ được xử lí cấp kì

hơn. Còn trong các kho hàng, nhân viên cũng sẽ thao tác được nhanh chóng hơn mà số

lượng, chủng loại hàng cũng được lập sổ thu-mua, tiêu thụ, tồn kho một cách chính

xác hơn. Họ sẽ nhanh chóng biết được lô hàng nào đã quá hạn sử dụng không được

bày bán nữa, chủng loại hàng đang hút khách tiêu dùng cần mua thêm ... Nói tóm lại

các cửa hàng bách hóa, các siêu thị lớn sẽ cần ít nhân viên hơn, chi phí hoạt động sẽ

giảm, lãi sẽ cao hơn.

Theo nhà phân tích Emme P. Kozloff ở công ty nghiên cứu thị trường C.

Bernstein & Co. thì việc ứng dụng RFID sẽ giúp chuỗi siêu thị Wal-mart tiết kiệm

được tối thiểu là 8,4 tỉ USD trong chi phí hoạt động kể từ năm 2007 trở đi. RFID còn

có hiệu quả làm giảm nguy cơ chôm chỉa hàng hóa trong các điểm bán lẻ vì một khối

lượng lớn sản phẩm có cài tem điện tử này sẽ tự chúng báo động mỗi khi được bốc

xuống khỏi quầy trưng hàng.

Chuỗi cửa hàng tạp hóa Tesco và công ty Gillette ở Anh đã bắt đầu thử nghiệm

ứng dụng RFID tại thành phố Cambridge. Gillette tin rằng doanh thu của họ có thể

tăng 15% nếu như các kệ bày hàng của họ luôn được bày biện hàng hóa kịp thời và

cửa hàng của họ chống được bọn chôm chĩa. Ngoài ra RFID cũng có thể là công cụ

hoàn hảo khi cần tung chiến dịch khuyến mãi. Lúc ấy mỗi xe đẩy hàng trong siêu thị

cũng sẽ được gắn kèm một thiết bị đọc RFID.

Page 57: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 7

Nhưng đó làm chuyện sau này vì giá một tem điện tử RFID hiện nay còn khá cao,

10 cent/cái. Khi nào đã phổ biến hơn barcode, giá của nó sẽ chỉ còn chưa tới 1 cent thì

sẽ là lúc nó đạt thời hoàng kim.

CCHHƯƯƠƠNNGG 22 –– QQUUẢẢNN LLÝÝ PPHHÒÒNNGG

MMÁÁYY TTHHƯƯ VVIIỆỆNN BBẰẰNNGG MMÃÃ VVẠẠCCHH

Page 58: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 8

I. Đặt vấn đề: Chương trình quản lý phòng máy thư viện bằng mã vạch được thiết kế nhằm mục

tiêu phục vụ cho các bạn sinh viên và thủ thư trong thư viện. Các bạn sinh viên có thể

đăng kí làm thẻ thư viện qua mạng một cách linh động, dễ dàng tại địa chỉ website của

thư viện. Đối với thủ thư, qua đó nắm bắt được tình hình đăng kí của sinh viên, lên kế

hoạch chụp hình làm thẻ hợp lí, tạo và in thẻ thư viện cho sinh viên và quản lý phòng

máy sử dụng Internet tự động nhờ áp dụng công nghệ mã vạch.

II. Phân tích yêu cầu:

II.1. Về mặt ứng dụng:

Với những yêu cầu về quản lý và sử dụng được đặt ra, hệ thống được thiết kế bao

gồm 4 module nhỏ:

II.1.1. Module 1:

Website cho phép sinh viên đăng kí từ xa để có thể tham dự buổi hướng dẫn sử

dụng thư viện và chụp hình làm thẻ, đồng thời thủ thư cũng có thể thực hiện các thao

tác quản trị của mình qua website này

II.1.2. Module 2:

Phần mềm quản lý phòng máy Internet của thư viện bằng mã vạch, cho phép thủ

thư kiểm soát thời gian đã sử dụng trong tuần cũng như trong học kì của sinh viên.

II.1.3. Module 3:

Phần mềm tạo thẻ thư viện, cho phép thủ thư chụp hình sinh viên trực tiếp từ máy

ảnh kĩ thuật số và in thẻ thư viện cho sinh viên.

II.1.4. Module 4:

Phần mềm in phiếu thứ tự chụp hình có mã vạch, thủ thư sẽ in phiếu và phát cho

sinh viên sau khi đã được nghe hướng dẫn sử dụng thư viện, giúp cho việc chụp hình

sinh viên được thực hiện một cách nhanh chóng.

Page 59: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 9

II.2. Về mặt kĩ thuật:

Ứng dụng đòi hỏi phải có khả năng đáp ứng về mặt kĩ thuật như sau:

Ứng dụng triển khai trên môi trường Web và cả desktop

Hỗ trợ nhiều trình duyệt (IE, Netscape...)

Hỗ trợ nhiều người dùng, số lượng sinh viên và thủ thư không giới hạn

Tự động hóa các thao tác, sử dụng công nghệ mã vạch

II.3. Các yêu cầu khác:

Ngoài ra ứng dụng còn có các yêu cầu khác như sau:

Hỗ trợ tiếng Việt theo chuẩn Unicode

Cài đặt đơn giản, sử dụng một cách dễ dàng

Dễ dàng nâng cấp và mở rộng cho các công nghệ mới như RFID ( tại Mỹ

đang được dần thay thế cả mã vạch 2 chiều )

III. Thiết kế:

III.1. Kiến trúc hệ thống:

Kiến trúc hệ thống đòi hỏi phải có tính linh động cao, một thành phần có thể thêm

hay thay đổi khi cần mà không ảnh hưởng đến các thành phần khác.

Để đáp ứng được yêu cầu trên, ta thiết kế hệ thống hoạt động trong mô hình 3

tầng và công nghệ triển khai ứng dụng là công nghệ Java.

Browser Web

Netscape

IE

JSP/

Servlet

JavaBean

Java Object Java Object Java Object

Database

Hình 2.1 – Kiến trúc hệ thống

Page 60: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 10

III.2. Thiết kế tổng quát:

Từ phân tích yêu cầu của bài toán, ta nhận thấy hệ thống xây dựng nhằm phục vụ

cho 2 nhóm người sau:

Thủ thư

Sinh viên

III.2.1. Thủ thư:

Thủ thư có quyền kiểm soát mọi hoạt động của hệ thống bao gồm:

III.2.1.1. Ứng dụng web:

Mỗi thủ thư sẽ được cấp một username và password để thực hiện những chức

năng cho phép của mình. Nếu quá trình đăng nhập thành công thì thủ thư có những

chức năng sau:

Hẹn ngày chụp hình, xem và sửa ngày hẹn

Thêm lớp, xem, sửa và xóa lớp

Tìm kiếm sinh viên, cập nhật hoặc xóa thông tin của sinh viên

Xem danh sách và thời gian sử dụng phòng máy của tất cả sinh viên

Quy định thời gian sử dụng phòng máy

Cấp thời gian sử dụng cho sinh viên các lớp sau mỗi học kì

III.2.1.2. Ứng dụng trên máy đơn:

In phiếu chụp hình cho sinh viên có đi nghe hướng dẫn sử dụng thư viện

Chụp hình sinh viên từ máy ảnh kĩ thuật số và tạo thẻ thư viện

Quản lý thời gian sử dụng phòng máy của sinh viên

III.2.2. Sinh viên:

Sinh viên là những người có thể sử dụng các dịch vụ do hệ thống cung cấp như

đăng kí làm thẻ từ xa, đăng nhập sửa chữa thông tin và được phép sử dụng phòng máy

của thư viện trong thời gian cho phép, được quy định bởi thủ thư.

Page 61: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 11

III.3. Thiết kế Cơ sở dữ liệu:

Để đáp ứng những yêu cầu thiết kế tổng quát ở trên ta sẽ xây dựng cơ sở dữ liệu

cho hệ thống như sau: ( sử dụng Hệ quản trị CSDL - MS SQL Server 2000 )

III.3.1. Bảng Sinh viên:

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 mssv varchar Khoá chính Khoá duy nhất cho mỗi sinh viên

2 matkhau varchar Khác rỗng Mật khẩu của sinh viên, cần thiết khi đăng nhập để xem, sửa thông tin cá nhân

3 hoten nvarchar Khác rỗng Họ và tên đầy đủ của sinh viên

4 ngaysinh datetime Khác rỗng Ngày tháng năm sinh

5 gioitinh tinyint Khác rỗng 1 – Là Nam; 0 – Là Nữ

6 email varchar Có thể rỗng Địa chỉ email để khi thủ thư cần thiết sẽ liên lạc

7 diachi nvarchar Có thể rỗng Địa chỉ thường trú

Hình 2.2 – Mô hình quan hệ giữa các bảng

Page 62: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 12

8 thoigian int Khác rỗng Thời gian sử dụng Internet còn lại của sinh viên này

9 malop varchar Khác rỗng Khóa ngoại lấy từ bảng Lop

10 tuan tinyint Khác rỗng Ghi nhận tuần hiện tại, để có thể kiểm tra giới hạn thời gian sử dụng Internet trong tuần

11 dasudung int Khác rỗng Số phút mà sinh viên đã sử dụng trong tuần này

III.3.2. Bảng Hẹn:

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 Mahen bigint Khoá chínhKhoá duy nhất cho mỗi ngày hẹn, tự động tăng lên 1 mỗi lần insert vào database

2 ngayhen datetime Khác rỗng Ngày tháng năm hẹn

3 sosinhvien int Khác rỗng Số sinh viên cho lần hẹn này

4 dahen int Khác rỗng Số sinh viên đã đăng kí qua mạng và đã hẹn làm thẻ

III.3.3. Bảng Hẹn sinh viên:

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 mssv varchar Khoá ngoại từ bảng Sinh viên

2 mahen bigint Khoá chính

Khoá ngoại từ bảngHẹn

3 dachuphinh tinyint Khác rỗng 1 – Đã chụp hình làm thẻ thư viên; 0 – Chưa chụp hình

4 sothutu int Khác rỗng Ghi nhận số thứ tự khi đăng kí qua mạng trong một lần hẹn

Page 63: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 13

III.3.4. Bảng Lớp:

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 malop varchar Khoá chính Khoá duy nhất cho mỗi lớp

2 tenlop nvarchar Khác rỗng Tên đầy đủ của lớp

3 khoa int Khác rỗng Niên khóa của lớp này

III.3.5. Bảng Phòng máy:

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 maphongmay int Khoá chính Khoá duy nhất cho phòng máy

2 tongthoigian int Khác rỗng Thời gian sử dụng Internet trong một học kì, sẽ cấp cho sinh viên khi đăng kí qua mạng lần đầu

3 thoigiantrongtuan int Khác rỗng Thời gian tối đa mà một sinh viên được phép sử dụng trong một tuần lễ

III.3.6. Bảng Thủ thư :

S T T

THUỘC TÍNH

KIỂU GHI CHÚ MÔ TẢ

1 username varchar Khoá chính Khoá duy nhất cho thủ thư

2 passwords varchar Khác rỗng Mật khẩu cần thiết khi thủ thư đăng nhập vào hệ thống và thực hiện các thao tác quản trị

Page 64: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 14

III.4. Thiết kế xử lý:

Phần thiết kế xử lý phân tích những hoạt động quan trọng mà các đối tượng tương

tác lên hệ thống. Các tương tác này ứng với những xử lý sau:

III.4.1. Xử lý: đăng kí làm thẻ của sinh viên

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu đăng kí làm thẻ của sinh viên

Kiểm tra lịch hẹn của thủ thư còn trống không

Lấy các thông tin cần thiết về sinh viên

Kiểm tra MSSV đó đăng kí chưa

Thông báo sinh viên đăng kí thành công và cho biết ngày giờ hẹn

Cập nhật thông tin của sinh viên vào CSDL

III.4.2. Xử lý: đăng nhập của sinh viên

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu đăng nhập của sinh viên

Kiểm tra MSSV và mật khẩu của sinh viên có đúng không

Kiểm tra sinh viên này đã chụp hình chưa

Hiển thị các thông tin mà sinh viên đã đăng kí

Lấy các thông tin sinh viên thay đổi

Cập nhật thông tin của sinh viên vào CSDL

III.4.3. Xử lý: đăng nhập của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu đăng nhập của thủ thư

Kiểm tra username và password của thủ thư có đúng không

Định phạm vi hoạt động của thủ thư

Page 65: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 15

Hiển thị trang chủ của thủ thư

Thủ thư chọn thực hiện các thao tác quản trị của mình

III.4.4. Xử lý: hẹn ngày chụp hình của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu hẹn ngày chụp hình của thủ thư

Kiểm tra thủ thư đã đăng nhập vào hệ thống chưa

Lấy các thông tin về ngày muốn hẹn

Kiểm tra tính hợp lệ của ngày hẹn

Cập nhật ngày vào CSDL

III.4.5. Xử lý: thêm lớp của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu thêm lớp của thủ thư

Kiểm tra thủ thư đã đăng nhập vào hệ thống chưa

Lấy các thông tin về lớp cần thêm

Cập nhật thông tin lớp vào CSDL

III.4.6. Xử lý: tìm kiếm sinh viên của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu tìm kiếm sinh viên của thủ thư

Kiểm tra thủ thư đã đăng nhập vào hệ thống chưa

Lấy thông tin MSSV cần tìm

Hiển thị thông tin của sinh viên từ CSDL

Thủ thư có thể sửa thông tin của sinh viên hoặc xóa sinh viên

Cập nhật những thay đổi vào CSDL

Page 66: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 16

III.4.7. Xử lý: quy định thời gian của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu quy định thời gian của thủ thư

Kiểm tra thủ thư đã đăng nhập vào hệ thống chưa

Lấy thông tin thời gian muốn quy định

Cập nhật thông tin thời gian vào CSDL, để giới hạn việc sử dụng phòng

máy của sinh viên

III.4.8. Xử lý: cấp thời gian của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu cấp thời gian của thủ thư

Kiểm tra thủ thư đã đăng nhập vào hệ thống chưa

Lấy thông tin thời gian thủ thư muốn cấp cho sinh viên

Cập nhật thông tin thời gian cho sinh viên vào CSDL

III.4.9. Xử lý: in phiếu chụp hình cho sinh viên của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu của thủ thư

Lấy thông tin đăng kí của sinh viên từ CSDL

In phiếu chụp hình cho sinh viên kèm mã vạch theo số thứ tự

III.4.10. Xử lý: tạo thẻ thư viện cho sinh viên của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu của thủ thư

Quét mã vạch từ phiếu chụp hình của sinh viên

Chụp hình sinh viên từ máy ảnh kĩ thuật số

In thẻ thư viện cho sinh viên kèm mã vạch và ảnh

Cập nhật thông tin sinh viên vào CSDL

Page 67: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 17

III.4.11. Xử lý: quản lí phòng máy của thủ thư

Xử lý này được mô tả như sau:

Tiếp nhận yêu cầu của thủ thư

Quét mã vạch từ thẻ thư viện của sinh viên

Kiểm tra sinh viên đã chụp hình chưa

Lấy thông tin thời gian sử dụng của sinh viên

Kiểm tra thời gian đã sử dụng trong tuần của sinh viên còn trong giới

hạn quy định không

Xác định máy nào trong phòng máy không hư và còn trống

Cho phép sinh viên bắt đầu sử dụng máy đó

Trừ dần thời gian sử dụng của sinh viên

Thông báo với thủ thư : sinh viên nào đã hết thời gian sử dụng

Cập nhật các thông tin vào CSDL

Page 68: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 18

III.5. Cơ chế hoạt động:

Lịch hẹn đã kín

Trang chủ

Sinh viên – Đăng kí

Sửa thông tin sinh viên

Lịch hẹn còn trống không ?

MSSV này đã đăng kí chưa ?

Y

N

Đăng kí thất bại

N

N

Sinh viên – Đăng nhập

Kiểm tra MSSV, mật khẩu và đã chụp hình làm

thẻ chưa ?

Cập nhật thành công

Đăng kí thành công

Y

N

Thủ thư – Đăng nhập username và passwords ?

Y

Thủ thư – Trang chủ

Y

Page 69: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 19

Y

N

Y

Thủ thư - Trang chủ

Hẹn ngày chụp hình Hẹn ngày thành công

Xem danh sách ngày đã hẹn Sửa ngày đã hẹn

Kiểm tra có hẹn sinh viên chưa ? Cập nhật ngày thành công

Cập nhật ngày thất bại

Thêm lớp vào danh sách Thêm lớp thành công

Xem danh sách các lớp Xóa một lớp

Kiểm tra có sinh viên nào có mã lớp này không ?

Cập nhật lớp thành công

Sửa thông tin một lớp

Xóa lớp thành công

Xem danh sách sinh viên

Tìm kiếm một sinh viên Sửa thông tin sinh viên

Xóa thông tin sinh viên Sửa / Xóa thành công

N

Quy định thời gian sử dụng phòng máy Quy định thành công

Cấp thời gian sử dụng cho sinh viên Cấp thời gian thành công

Page 70: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 20

In phiếu chụp hình Lấy thông tin đăng kí của

sinh viên trong CSDL

In phiếu chụp hình kèm mã vạch và số thứ tự cho sinh viên đi nghe

hướng dẫn sử dụng thư viện

Chụp hình và tạo thẻ thư viện

Quét mã vạch từ phiếu chụp hình của sinh viên

Kiểm tra thông tin đăng kí sinh viên đó và chụp hình bằng máy ảnh kĩ thuật số

Cập nhật ảnh sinh viên vào CSDL, và in ra thẻ

thư viện có mã vạch

Quản lý phòng máy Quét mã vạch từ thẻ thư viện của sinh viên

Kiểm tra tổng thời gian còn lại và thời

gian đã sử dụng trong tuần của sinh viên

Kiểm tra MSSV này có đang sử dụng ?

Cho phép sinh viên bắt đầu sử dụng máy, và

giảm dần thời gian sử dụng còn lại

Thông báo kết thúc sử dụng máy và cập nhật thông tin thời gian

của sinh viên vào CSDL hoặc không cho phép sinh viên sử dụng máy

Y

N

Y

N

Page 71: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 21

CCHHƯƯƠƠNNGG 33 –– CCÔÔNNGG NNGGHHỆỆ SSỬỬ DDỤỤNNGG

Page 72: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 22

I. JSP / Servlet:

I.1. Java Server Page (JSP):

I.1.1. Khái niệm:

JSP là một công nghệ lập trình Web phía máy chủ của Java. JSP kết hợp ngôn

ngữ HTML truyền thống và ngôn ngữ Java để tạo ra trang Web động phục vụ cho các

ứng dụng Web uyển chuyển hơn.

JSP đưa lệnh Java vào các thẻ HTML. Các trang JSP chứa các thẻ đặc biệt có cấu

trúc gần giống như những thẻ trong ngôn ngữ HTML. Khi bạn yêu cầu một trang JSP

thì trình chủ sẽ đọc trang JSP từ đĩa cứng, bộ diễn dịch JSP (JSP compiler) sẽ ánh xạ

trực tiếp mã JSP thành Servlet. Sau đó trình chủ Web Server sẽ triệu gọi servlet trả về

cho trình khách dưới dạng một trang HTML.

I.1.2. Cấu trúc thẻ:

JSP cung cấp các thẻ lệnh giúp tạo trang Web. Tương tự như thẻ HTML, thẻ lệnh

của JSP cũng bao gồm các thẻ mở và thẻ đóng. Thực tế, các thẻ JSP được xây dựng

theo đặc tả và chuẩn XML (Extension Markup Language) nên các thẻ của JSP có phân

biệt chữ thường và chữ hoa. Mỗi thẻ có các thuộc tính qui định cách dùng thẻ.

I.1.2.1. Thẻ chỉ dẫn:

*<%@ directive {attr= " value”}%>: Thẻ này cung cấp thông tin toàn cục để dịch trang JSP. attr :là thuộc tính. value: là giá trị ứng với thuộc tính đó, được đặt trong dấu “ ”. *<%@ page %>: thẻ này địng nghĩa những thông tin có giá trị toàn cục trong trang JSP. Thẻ này được sử dụng trong hầu hết các trang JSP được viết. Thẻ chứa các thuộc tính chỉ ra thông tin chú thích về một trang, có thể chỉ ra ngôn ngữ kịch bản đang sử dụng trong trang, những gói của Java cần import vào để sử dụng hay triệu gọi một trang lỗi khi xảy ra lỗi hay xuất hiện một ngoại lệ. Thẻ này thường được đặt trước thẻ mở <html>. *<%@ include %>: Cú pháp: <%@ include file=”URL or FilePath”%>

Page 73: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 23

Thẻ này dùng để nhúng một trang html hay một tài nguyên tĩnh vào trang JSP hiện hành. Thuộc tính file cho biết địa chỉ URL hay đường dẫn đến tập tin cần nhúng vào. *<%@ tablib%>: là thẻ dùng để thông báo rằng trang jsp sử dụng một thẻ thư viện. Cú pháp: <%@tablib uri=”tagLibraryURI” prefix=”tagPrefix”%> Thuộc tính: uri: tham chiếu đến một địa chỉ URI chứa các thẻ truyền thống. prefix: dùng để phân biệt các hành động.

I.1.2.2. Thẻ kịch bản:

*<%! declaration %>: sử dụng để khai báo biến và các phương thức trong ngôn ngữ kịch bản sử dụng trong trang jsp. *<%= expression %>: dùng để hiển thị một biểu thức. Biểu thức sẽ được kết xuất ra bởi đối tượng JspWriter dưới dạng đối tượng String. Biểu thức trong jsp được gán giá trị khi trang jsp thực thi. Chuỗi kết quả của biểu thức sẽ được chèn vào vị trí tham chiếu của biểu thức trong tập tin jsp. *<% scriptlet %>: thẻ này cho phép chứa bất kì phát biểu hợp lệ nào của ngôn ngữ được tham chiếu trong hướng dẫn của ngôn ngữ diễn dịch.

I.1.2.3. Các hành động chuẩn:

*<jsp:useBean>: dùng tạo hay định vị một Bean. Hành động này liên kết đến các đối tượng của Java được định nghĩa trong một phạm vi với một định danh được định nghĩa trong trang jsp. Cú pháp: <jsp:useBean id =”name” scope=”page|request|session|application” typeSpec/> typeSpec::= class =”className” | class =”className” type =”typeName”| type =”typeName” class =”className”| beanName =”beanName” type =”typeName”| type =”typeName” beanName =”beanName”| type =”typeName”. Các thuộc tính: + id: tên dùng để xác định đối tượng và cũng là tên biến được khai báo và khởi tạo với các đối tượng tham chiếu trong scripting. + scope: là phạm vi cho biết môi trường sống của đối tượng. Giá trị mặc định là “page”. + class: tên đầy đủ của lớp đã được định nghĩa trong Bean (lớp định nghĩa việc thực thi của đối tượng).

Page 74: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 24

+ beanName: tên của Bean, tương tự như là phương thức instantiate() của lớp java.beans.Beans. + type: định nghĩa kiểu của việc định nghĩa biến scripting trong trường hợp đặc biệt. Nếu không, giá trị giống như giá trị của thuộc tính class. *<jsp:setProperty>: là hành động dùng để đặt vào giá trị của thuộc tính trong Bean từ một HTML form. Tên của thuộc tính phải được định nghĩa truớc trong Bean và liên kết với tên của thành phần form. Để sử dụng được hành động này thì phải có phương thức set tương ứng trong Bean cho mỗi thuộc tính. Chú ý là hành động này chỉ đặt được một giá trị vào một thuộc tính tại một thời điểm. Cú pháp: <jsp:set Property name =“BeanName” prop_expr/> prop_expr::= property =”*”| property =”propertyName”| property =”propertyName” param =”paramName”| property =”propertyName” value =”propertyValue”. propertyValue =String hay là một expr_scriptlet. Thuộc tính: + name: là tên của thành phần Bean phải giống với tên đã được định nghĩa trước bởi thành phần <jsp:useBean>. + property: tên của thuộc tình trong Bean cần đặt giá trị. + param: tên của tham số yêu cầu, là giá trị mà bạn muốn đặt vào thuộc tính trong Bean. Tên của tham số yêy cầu thường là tên của HTML form. + value: là giá trị để gán cho thuộc tính. Một hành động không thể có đồng thời param và value. *<jsp:getProperty>: là hành động dùng để lấy giá trị của thuộc tính trong Bean. Tương ứng với hành động này là phương thức get trong Bean. Giá trị lấy ra được chuyển thành String và có thể thể hiện giá trị như là một output. Cú pháp: <jsp:getProperty name =”name” property =”propertyName”/> Thuộc tính: + name: tên của Bean được định nghĩa trước bởi <jsp:useBean>. + property: tên của thuộc tính cần lấy giá trị. *<jsp:include>: là hành động dùng để nhúng một tài nguyên tĩnh hay động vào trang jsp hiện hành. <jsp:include> có thể có thành phần con <jsp:param> để cung cấp giá trị cho các tham số cho mục đích nhúng. Cú pháp: <jsp:include page =”urlSpec” flush =”true”/>

Page 75: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 25

hay <jsp:include page =“urlSpec” flush =“true”> {<jsp:param .../>} </jsp:include> Thuộc tính: + page: là đường dẫn URL đến một trang cần nhúng. + flush: có giá trị là Boolean. Nếu giá trị là true thì vùng đệm bị đẩy ra. Giá trị mặc định là false. *<jsp:forward>: hành động này cho phép trình dịch gởi đi một yêu cầu tại thời điểm thực thi đến tài nguyên tĩnh, JavaServlet hay đến trang jsp khác. Hành động này làn chấm dứt việc thực thi của trang hiện hành. Thường dùng như một điều kiện trong jsp để chuyển hướng xử lý. Cú pháp: <jsp:forward page =“urlSpec”/> hay <jsp:forward page =“urlspec”> {<jsp:param.../>} </jsp:forward> Thuộc tính: page: xác định quan hệ URL của đích mà hành động jsp:forward chuyển đến. * <jsp:param>: là hành động dùng để cung cấp và tạo giá trị cho tham số. Thường dùng trong các hành động jsp:include, jsp:forward, jsp:plugin. Khi làm việc với hành động jsp:include, jsp:forward thì trang được nhúng hay trang chuyển tới sẽ nhận được các tham số mới với các giá trị mới. Cú pháp: <jsp:param name =“name” value =“value”/> Thuộc tính: + name:tên của tham số tham chiếu. + value: giá trị của tham số được tham chiếu. *<jsp:plugin>: hành động này cho phép tạo ra trang HTML chứa đựng tính hợp lệ của trình duyệt khách. Hành động tạo ra thẻ <object> hay <embed> để đưa ra dòng xuất của đối tượng response. Thuộc tính của jsp:plugin cung cấp cấu hình dữ liệu để thể hiện phần tử đó. Cú pháp: <jsp:plugin type =“bean | applet” code =“classfile” codebase =“relativeURLpath”> {<jsp:params> {<jsp:param .../>} </jsp:params>} </jsp:plugin> Thuộc tính:

Page 76: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 26

+ type: xác định loại cần đưa vào là Bean hay Applet. + code: tên của class được nhúng. + codebase: tham chiếu cơ sở hay đường dẫn liên hệ đến tập tin plugin.class.

I.1.3. Các đối tượng ẩn (implicit object):

Các đối tuợng ẩn luôn luôn có giá trị cho việc sử dụng trong scriptlet và biểu thức

mà không cần phải khai báo trước. Hầu hết các ngôn ngữ kịch bản đòi hỏi được cung

cấp việc truy cập đến đối tượng này.

Mỗi đối tượng ẩn đều có một lớp hay giap diện được định nghĩa trong nhân java

hay gói JavaServletAPI.

I.1.3.1. Đối tượng Request:

Đối tượng này đại diện cho đối tượng javax.servlet.htttp. HttpServletRequest. Đối

tượng request nắm giữ các tham số hay dữ liệu do trình khách gửi lên.

Phương thức getParameter() nhận tên tham số và trả về giá trị chuỗi tương ứng

với tên tham số đó.

I.1.3.2. Đối tượng Response:

Là đối tượng phản hồi thông tin xử lý từ trình chủ trở về trình duyệt. Đối tượng

này dùng để xuất ra trình duyệt khách dữ liệu dưới dạng HTML.

Các phương thức thường dùng:

getWriter(): dùng thực hiện kết xuất.

sendRedirect(“ .jsp”): dùng liên kết trực tiếp đến một trang jsp.

setContentType(“text/html”): định dạng xuất

getOutputStream(): lấy dữ liệu trong vùng đệm nhờ OutputStream.

I.1.3.3. Đối tượng session:

Là đối tượng tham chiếu đến đối tượng javax.servlet.http. HttpSession. Đối tượng

này được khởi tạo bằng phương thức pageContext.getSession()để tạo trang servlet.

Page 77: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 27

Khi cần một biến nào đó có giá trị toàn cục từ jhi bạn mở cho đến khi kết thúc

trình duyệt đó thì đối tượng session được tạo ra. Đối tượng session tạo ra biến cục bộ

cho phép lưu một giá trị nào đó từ trang jsp này sang trang jsp khác.

I.1.3.4. Đối tượng Application:

Đối tượng này tham chiếu đến đối tượng javax.servlet.ServletContext lưu giữ cấu

hình toàn cục của Servlet và JSP.

Đối tượng Application có phạm vi hoạt động ở cấp ứng dụng nghĩa là có thể giữ

giá trị của tất cả các trang jsp ở những session khác nhau cho đến khi trình dịch JSP

engine bị đóng lại.

I.1.3.5. Đối tượng Out:

Đối tượng xuất phát từ lớp java.io.Writer. Đối tượng này dùng ghi kết xuất gửi về

trình duyệt máy khách.

I.1.3.6. Đối tượng Config:

Tượng trưng cho đối tượng ServletConfig. Được định nghĩa là đối tượng tạo bởi

Servlet chứa các thông tin cấu hình của Servlet.

I.1.3.7. Đối tượng Exception:

Đối tượng này chỉ tồn tại trong trang xử lý lỗi. Dùng tham chiếu đến nguyên nhân

gây ra lỗi mà trang error có liên quan.

I.1.4. Chu trình sống của JSP

Chu trình sống của JSP bao gồm các giai đoạn sau:

Biên dịch trang JSP

Nạp trang

Khởi tạo

Thực thi

Dọn dẹp

Page 78: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 28

I.1.4.1. Biên dịch trang JSP:

Quá trình biên dịch của trang JSP được thể hiện thông qua sơ đồ sau:

Hình 3.1 - Quá trình biên dịch trang JSP

Khi trình duyệt yêu cầu trang JSP, Web server sẽ kiểm tra trang JSP đã được biên

dịch hay chưa. Nếu chưa biên dịch hoặc đã biên dịch nhưng trang JSP vừa thay đổi

trong mã nguồn thì web server sẽ thực hiện biên dịch trang JSP. Quá trình biên dịch

JSP thực tế là chuyển trang JSP thành Servlet. Tập tin biên dịch .class của trang sẽ

được đặt trong thư mục đệm (thường là WEB-INF\jsp hoặc \temp). Như bạn thấy, quá

trình biên dịch trang chỉ diễn ra một lần. Nếu trang đã biên dịch và sau đó bạn không

có thay đổi gì trong trang nguồn thì quá trình biên dịch sẽ không xảy ra, do đó tốc độ

thực thi trang sẽ nhanh hơn. Sau khi trang đã được biên dịch, mã trang sẽ được nạp

vào bộ nhớ để thực thi.

I.1.4.2. Nạp trang:

Kể từ giai đoạn này, quá trình nạp trang tương tự như servlet (thật sự thì trang

JSP qua biên dịch giờ đây đã là một servlet). Chỉ có một sự khác biệt đó là servlet chỉ

được nạp một lần trong khi mã trang JSP mặc dù đã biên dịch nhưng phải nạp lại nhiều

lần mỗi khi Web server nhận được một yêu cầu trang từ trình duyệt.

Tập tin JSP Tập tin JSP Graphics

Tập tin .java Component

Lưu trữ dữ liệu Tập tin .classTrình duyệt

Page 79: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 29

I.1.4.3. Khởi tạo:

Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khởi tạo trang.

Và mặc dù, JSP được biên dịch ra servlet nhưng phương thức khởi tạo cho trang JSP

lại mang tên jspInit() chứ không phải init() như servlet.

I.1.4.4. Thực thi:

Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService. Phương

thức _jspService sẽ chuyển cho bạn hai lớp đối tượng HttpServletRequest và

HttpServletResponse để đọc và ghi kết xuất trả về trình khách.

I.1.4.5. Dọn dẹp:

Khi trang JSP đã thực thi xong, trình chủ Web server sẽ gọi phương thức

jspDestroy() để giải phóng mã trang khỏi bộ nhớ.

I.2. Servlet:

I.2.1. Khái niệm:

Servlet thực sự là một mẫu chương trình viết bằng ngôn ngữ Java, được trình chủ

Web triệu gọi, sản sinh ra kết xuất phù hợp trả về cho client.

Servlet dễ sử dụng và phát triển những ứng dụng Web nhanh hơn CGI (Common

Gateway Interface). Hiện nay Servlet đã dần thay thế các ứng dụng CGI truyền thống

và là trung tâm của công nghệ Web trong Java. Servlet chạy trên máy ảo Java, xử lý và

sinh mã HTML trả về trình khách. Servlet chỉ nạp một lần bởi Web Server và có thể

duy trì các hành động giữa các yêu cầu.

I.2.2. Các phương thức xử lý cơ bản:

Thật sự lớp GenericServlet là phần cài đặt tổng quát cho đặc tả giao tiếp

(interface) mang tên Servlet. Một servlet cơ bản cần có những phương thức phục vụ

cho các nhu cầu: khởi tạo (init), hoạt động và phục vụ (service), huỷ (destroy), trả về

thông tin cấu hình (getServletInfo). Khi tạo ra servlet mới, đơn giản chỉ nên kế thừa lại

GenericServlet và xây dựng chồng (overide) các phương thức mà bạn muốn.sử dụng.

Cụ thể lớp giao tiếp Servlet được mô tả như sau:

Page 80: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 30

interface Servlet { void destroy(); ServletConfig getServletConfig(); String getServletInfo();

void init(ServletConfig config); void service(ServletRequest req, ServletResponse res);

}

I.2.2.1. Phương thức khởi tạo init():

public void init();

Phương thức này được gọi khi lần đầu tiên trình chủ Web Server nạp mã thực thi

của servlet từ tập tin .class vào bộ nhớ và bắt đầu cho phép servlet hoạt động. Có thể

dựa vào phương thức này để khởi tạo các biến môi trường và giá trị ban đầu cần thiết

cho quá trình thực thi servlet sẽ diễn ra tiếp theo.

Vd:

public void init() { //Tạo kết nối đến CSDL }

I.2.2.2. Phương thức phục vụ service():

public void service(ServletRequest req, ServletResponse res) throws IOException

Sau khi phương thức init() đã hoàn tất, trình chủ Web Server sẽ triệu gọi đến

phương thức service(). Phương thức này được xem là trung tâm xử lý của servlet mà

bạn cần cài đặt. Khi trình chủ nạp servlet vào bộ nhớ, phương thức init() chỉ có thể

được gọi duy nhất một lần, trong khi phương thức service() có thể được triệu gọi nhiều

lần ứng với mỗi yêu cầu servlet phát sinh từ client.

Trong phương thức service() bạn có thể sử dụng đối tượng tham số

ServletRequest, ServletResponse để tiếp nhận dữ liệu từ trình khách chuyển lên và

xuất kết quả trở lại trình khách.

Vd:

public void service(ServletRequest request, ServletResponse response) throws IOException

Page 81: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 31

{ response.setContentType(“text/html”); PrintWriter out = response.getWriter(); out.println(“<html>”); out.println(“<body>”); out.println(“<h1>Chao moi nguoi! </h1>”); … }

I.2.2.3. Phương thức huỷ destroy():

Khi servlet không còn dùng đến nữa hay hết thời gian qui định lưu trữ trong bộ

nhớ của Web Server, nó sẽ bị trình chủ giải phóng. Trước khi servlet bị huỷ phương

thức destroy() sẽ được gọi. Phương thức này có thể dùng để dọn dẹp tài nguyên mà các

biến chiếm giữ, đóng các kết nối mà phương thức init() đã mở.

I.2.2.4. Phương thức getServletConfig() và getServletInfo():

public String getServletInfo();

public ServletConfig getServletConfig();

Hai phương thức này nhằm mục đích cung cấp thông tin. Phương thức

getServletConfig() giúp người sử dụng servlet có được đối tượng servletConfig chứa

các thông tin khởi tạo từ môi trường ngoài đưa vào servlet. Phương thức

getServletInfo() trả về một chuỗi thông tin mô tả ý nghĩa và mục đích của servlet.

I.2.3. Chu trình sống của servlet:

Chu trình sống của servlet được tính từ khi servlet bắt đầu được hệ thống lưu tâm

đến (như việc gọi nạp vào bộ nhớ) cho đến khi nó bị loại ra khỏi trình chủ Web server

vì không còn cần nữa. Chu trình sống của servlet trải qua các giai đoạn sau:

Nạp servlet

Khởi tạo servlet

Thực thi servlet

Dọn dẹp servlet

Page 82: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 32

I.2.3.1. Nạp servlet:

Tuy theo điều kiện, một servlet có thể được nạp vào bộ nhớ ở ba thời điểm khác

nhau: khi server khởi động, khi người quản trị yêu cầu, hoặc khi trình duyệt triệu gọi

servlet từ máy khách. Hầu hết các Web server đều cho phép bạn chọn danh sách

servlet sẽ được ưu tiên nạp lúc Web server khởi động.

Để nạp servlet, trình chủ Web server cần phải biết tên lớp của servlet. Thông

thường tên lớp của servlet (tên tập tin .class) cũng là tên mà trình duyệt dùng để triệu

gọi servlet. Chúng ta thường gọi servlet với địa chỉ URL bắt đầu với tiếp đầu ngữ

/servlet. Ví dụ địa chỉ sau http://localhost:8100/servlet/helloWorld. Cách mà trình chủ

Web server sử dụng ở đây là khi nhận được chuỗi URL triệu gọi servlet, nó sẽ phân

tích chuỗi này và nhận ra tiếp đầu ngữ /servlet. Đây chính là tên ánh xạ dùng để gọi

các servlet mặc định. Khi đó Web server sẽ truy tìm tiếp các servlet sau bí danh

/servlet (ở đây là servlet helloWorld) và triệu gọi nó thực thi. Tuy nhiên, bạn cũng có

thể ánh xạ đổi tên servlet khác với tên tập tin .class của nó thậm chí đối với cả tiếp đầu

ngữ dùng để triệu gọi servlet và vị trí thư mục chứa servlet.

Khi có một yêu cầu triệu gọi servlet, trình chủ Web server sẽ xem xét servlet đã

nạp vào bộ nhớ hay chưa, nếu chưa nó sẽ nạp servlet vào bộ nhớ. Một khi servlet đã

nạp, Web server sẽ tiến đến giai đoạn khởi tạo servlet.

I.2.3.2. Khởi tạo servlet:

Trình chủ Web server khởi tạo servlet bằng cách gọi đến phương thức init() mà

servlet cài đặt. Phương thức này chỉ gọi một lần duy nhất. Bạn có thể lợi dụng cơ hội

này để khởi tạo các biến toàn cục mà servlet sẽ sử dụng sau này.

I.2.3.3. Thực thi servlet:

Khi trình duyệt hoặc các trang JSP triệu gọi servlet thông qua địa chỉ URL, trình

chủ Web server sẽ chính thức gọi servlet thực thi thông qua các phương thức như

doGet(), doPost(), hoặc service(). Lưu ý, sau khi các phương thức này được gọi thực

thi xong, servlet vẫn giữ lại trong bộ nhớ để phục vụ cho lần triệu gọi tiếp theo. Đây

cũng chính là ưu điểm làm cho servlet thực thi nhanh hơn các ứng dụng CGI.

Page 83: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 33

I.2.3.4. Dọn dẹp servlet:

Servlet không giữ lại trong bộ nhớ vĩnh viễn, sẽ đến lúc cần loại servlet khỏi bộ

nhớ. Trước khi chấm dứt, Web server sẽ gọi đến phương thức huỷ destroy() của

servlet. Đây là cơ hội để servlet thực hiện một số thao tác dọn dẹp cần thiết như lưu dữ

liệu xuống đĩa, ghi nhớ trạng thái của servlet để phục vụ cho lần khởi động sau, đóng

kết nối với cơ sở dữ liệu… Và mặc dù Java có thể tự động thu gom rác trong bộ nhớ

nhưng nếu bạn đã cấp phát một khối lượng bộ nhớ lớn cho servlet trong quá trình làm

việc, bạn nên thực hiện giải phóng chúng trong phương thức destroy() này.

I.3. So sánh giữa JSP và Servlet:

Do mã trang JSP khi thực thi đều được biên dịch ra servlet cho nên tất cả những

gì servlet làm được cũng đồng nghĩa với trang JSP làm được. Viết trang JSP đôi lúc

đơn giản hơn viết servlet vì không cần phải qua bước đăng kí và biên dịch thủ công.

Tuy nhiên bạn cũng nên biết một số trường hợp cần phải phân biệt giữa JSP và Servlet

và cách sử dụng chúng.

JSP có thể trộn lẫn mã Java với các thẻ HTML, cho nên việc thiết kế trang JSP

thường đơn giản và dễ bổ sung hơn so với servlet. Tuy nhiên, đây cũng là yếu tố

không nên lạm dụng đối với JSP. Nếu bạn tập trung tất cả mã Java vào cùng với mã

HTML, một khi dự án mở rộng và trở nên phức tạp, việc bảo trì và nâng cấp ứng dụng

Web với hàng trăng trang JSP sẽ rất khó khăn. Trong quá trình phát triển ứng dụng

Web theo nhóm, việc trộn lẫn mã Java và HTML trong trang JSP cho thấy không hiệu

quả.

Với servlet, tuy phải biên dịch và đăng kí thủ công với trình chủ, nhưng bù lại

tính bảo mật cao hơn. Bạn chỉ cần cung cấp cho trình chủ Web server bản servlet nhị

phân (tập tin .class) đã qua bước biên dịch mà không cần đến mã nguồn của servlet

ban đầu. Mặt khác, các servlet có thể tương tác với nhau để tạo nên những kết xuất tuỳ

biến và đa dạng trước khi trả kết quả về cho trình khách. Servlet có thể phân rã các

đơn thể của dự án và phát triển độc lập như các thành phần riêng rẽ để ráp lại thành

một tổng thể chung. Tuy nhiên, việc kết xuất trong servlet thương dựa vào phương

thức print() hay println(). Công việc quyết định giao diện cho kết xuất hoàn toàn phụ

thuộc vào lập trình viên với hàng loạt các câu lệnh print() hay println() rất khó quản lý.

Page 84: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 34

II. JDBC:

II.1. Giới thiệu:

Máy tính ra đời do nhu cầu điều tác và lưu trữ thông tin của con người. Thông tin

này thường được truy cập từ trong một môi trường cơ sở dữ liệu. Do đó quả là không

đúng nếu ta giới thiệu một ngôn ngữ mới mà không cung cấp vài kiểu giao diện cho

một ngân hàng dữ liệu. Và Java cũng không ngoại lệ.

Các nhà phát triển Java đã thấy rằng họ cần một khung sườn để có thể xây dựng

một giao diện đồng nhất nằm trên nhiều hệ thống giao kết cơ sở dữ liệu khác nhau.

Một khung sườn như vậy sẽ cho phép các nhà phát triển viết một giao diện cơ sở dữ

liệu đơn lẻ trên nhiều nền tảng. Khung sườn với những tính năng như trên được mang

tên JDBC (Java Database Connection).

II.2. Khái quát:

JDBC là trình điều khiển thông dụng của Java. JDBC giúp cho JSP và Servlet

tiếp cận với các hệ quản trị cơ sở dữ liệu một cách dễ dàng thông qua ngôn ngữ SQL.

JDBC không phân ngữ chuỗi văn bản cho người dùng, nó đơn giản tác động như cầu

nối giữa người dùng và cơ sở dữ liệu, cho phép cơ sở dữ liệu phân ngữ chuỗi. Như

vậy, mọi lỗi ngoại lệ phát sinh đều bắt nguồn từ cơ sở dữ liệu, chứ không phải từ tầng

JDBC.

API JDBC bao gồm bốn lớp chính:

java.sql.DriverManager

java.sql.Connection

java.sql.Statement

java.sql.ResultSet

II.2.1. java.sql.DriverManager

java.sql.DriverManager là một lớp rất quan trọng. Mục đích chính của nó là quản

lý các tiểu trình điều khiển cơ sở dữ liệu JDBC khác nhau. Khi chạy một ứng dụng,

Page 85: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 35

chính DriverManager sẽ có trách nhiệm nạp tất cả các trình điều khiển có trong tính

chất hệ thống jdbc.drivers.

II.2.2. java.sql.Connection

Khi thiết lập một tuyến nối với cơ sở dữ liệu, lớp java.sql.Connection biểu thị ví

dụ minh họa của một phiên làm việc cụ thể. Khi nào tuyến nối vẫn còn mở, ta vẫn có

thể thi hành các truy vấn SQL và có thể có các kết quả. Có thể dùng giao diện này để

truy lục thông tin liên quan đến các phần mô tả bảng và các thông tin khác về cơ sở dữ

liệu đang kết nối.

II.2.3. java.sql.Statement

Giao diện java.sql.Statement chuyển đến cơ sở dữ liệu mà chuỗi SQL cần thi

hành. Nó cũng truy lục các kết quả từ cơ sở dữ liệu dưới dạng một ResultSet.

Mỗi câu lệnh chỉ có thể mở một ResultSet vào cùng một thời điểm. Ví dụ, hai

ResultSet không thể được so sánh với nhau nếu cả hai đều bắt nguồn từ cùng câu lệnh

SQL. Nếu một câu lệnh SQL được phát lại vì một lý do nào đó, ResultSet cũ tự động

được đóng.

II.2.4. java.sql.ResultSet

Một java.sql.Resultset biểu thị cho dữ liệu được truy lục từ một câu lệnh SQL

đang được thi hành. Dữ liệu từ bộ hỏi được chuyển giao dưới dạng một bảng kết quả.

Các hàng của bảng được tuần tự trả về cho chương trình, nhờ đó các cột dữ liệu có thể

được truy cập.

Một biến con trỏ sẽ lưu giữ mẩu tin hiện đang được được truy cập. Một ResultSet

không thể quay lui. Để đọc lại một hàng được truy lục trước đó, chương trình phải

đóng ResultSet và phát lại câu lệnh SQL. Sau khi truy lục hàng chót, câu lệnh xem

như là đã được đóng, điều này có nghĩa là ResultSet tự động đóng.

Có thể truy lục các cột từ hàng hiện hành theo thứ tự bất kì. Một chương trình có

thể thu thập các giá trị bằng một số chỉ mục của cột (bắt đầu từ 1), hoặc phát biểu rõ

ràng tên cột . Về khả năng cơ động và hiệu năng, các cột nên được truy lục từ trái sang

phải và chỉ được đọc một lần.

Page 86: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 36

II.3. Các kiểu JDBC:

Theo đặc tả của Sun có 4 kiểu JDBC sau:

II.3.1. Kiểu 1:JDBC sử dụng cầu nối ODBC (JDBC-ODBC Bridge)

ODBC (Open Database Connectivity) là cách kết nối tổng quát nhất đến mọi hệ

cơ sở dữ liệu thông qua trình quản lý ODBC của Windows. Mỗi hệ cơ sở dữ liệu sẽ

cung cấp một trình điều khiển (driver) có khả năng đọc hiểu được cơ sở dữ liệu của

chúng. Trình điều khiển này sẽ được đăng kí với bộ quản lý ODBC. Tất cả các lệnh

truy xuất cơ sở dữ liệu đều được thực thi bằng lệnh SQL. Java cung cấp cho bạn khả

năng sử dụng JDBC để gọi ODBC. Bằng cách này bạn có thể kiểm soát được nhiều hệ

quản trị CSDL khác nhau.

Mã Java Mã đặc thù

II.3.2. Kiểu 2:JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu

JDBC kết nối trục tiếp với trình điều khiển đặc thù của mỗi hệ cơ sở dữ liệu

(native database driver) mà không cần phải qua trung gian ODBC của Windows. Do

đó kiểu kết nối này sẽ nhanh và hiệu quả hơn kiểu 1. Tuy nhiên phải có các trình điều

khiển cơ sở dữ liệu đặc thù do những nhà phát triển cơ sở dữ liệu hay nhà phân phối

cung cấp.

Java Application, Applet, Servlet

JDBC Driver

ODBC

Database Driver

Page 87: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 37

Mã Java Mã đặc thù

II.3.3. Kiểu 3:JDBC kết nối thông qua các ứng dụng mạng trung gian

Theo mô hình lập trình phân tán, ứng dụng trung gian trên máy chủ sẽ chịu trách

nhiệm kết nối với cơ sở dữ liệu. Nhiệm vụ của trình khách là sử dụng những trình điều

khiển JDBC gọn nhẹ, có khả năng giao tiếp với ứng dụng trung gian qua Internet để

truy vấn dữ liệu.

Mã Java internet Mã Java

Java Application, Applet, Servlet

JDBC Driver

Database Driver

Java Application, Applet, Servlet

JDBC Driver

Java Middle_Ware

Java Native Driver

Page 88: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 38

II.3.4. Kiểu 4:JDBC kết nối thông qua các trình điều khiển đặc thù ở xa

Kiểu này cho phép máy khách sử dụng các trình điều khiển gọn nhẹ kết nối vào

trình điều khiển cơ sở dữ liệu đặc thù (thuần Java) trên máy chủ từ xa thông qua mạng

Internet.

Mã Java internet Mã Java

II.4. Truy xuất cơ sở dữ liệu:

Hầu hết các ứng dụng JDBC đều theo cùng các bước cơ bản sau:

II.4.1. Kết nối với cơ sở dữ liệu:

Để thiết lập kết nối, JDBC đòi hỏi 2 yếu tố là trình điều khiển (tương ứng với các

kiểu kết nối) và thông tin để kết nối (địa chỉ máy chủ, tên tài khoản đăng nhập, mật

khẩu...).

Đối với cơ chế truy xuất thông qua ODBC, sử dụng trình điều khiển do Sun cung

cấp mang tên JdbcOdbcDriver. Chúng ta khai báo tên lớp này như sau:

String drivername = “sun.jdbc.odbc.JdbcOdbcDriver”;

Tiếp đến ta gọi phương thức forName của lớp Class để nạp và khởi tạo trình điều

khiển: Class.forName(drivername).new Instance();

Kể từ lúc này bạn đã hoàn toàn có khả năng sử dụng trình điều khiển JDBC-

ODBC để truy xuất dữ liệu. Tuy nhiên, trình điều khiển của bạn cần biết thêm những

Java Application, Applet, Servlet

JDBC Driver

Java Native Driver

Page 89: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 39

thông tin cụ thể như tài khoản đăng nhập, địa chỉ máy chủ chứa cơ sở dữ liệu. Trong

trường hợp sử dụng ODBC những thông tin này được chúng ta thiết lập trước đó khi

cấu hình cho chuỗi kết nối cơ sở dữ liệu lvtn bằng ODBC Driver của Windows. Bạn

đặt thông tin này trong chuỗi kết nối như sau:

String connectionURL = “jdbc:odbc:lvtn”;

String username=”sa”;

String password=””;

Ở đây chuỗi jdbc:odbc: là bắt buộc đối với trình điều khiển JDBC-ODBC. Phía

sau chuỗi này là thông tin kết nối cụ thể đến cơ sở dữ liệu lvtn của chúng ta do ODBC

quy định. Cuối cùng đối tượng Connection sẽ thể hiện kết nối đến cơ sở dữ liệu. Bạn

gọi phương thức getConnection của lớp DriverManager để yêu cầu trình điều khiển

nạp bởi Class.forName() trước đây tiếp nhận thông tin và thực thi kết nối.

Connection con = null;

con = DriverManager.getConnection(connectionURL, username, password);

Với ODBC, nếu khi thiết lập thông số cho lvtn bạn đã chỉ định rõ thông tin đăng

nhập username/ password thì có thể gọi đối tượng Connection để thực hiện kết nối đến

cơ sở dữ liệu gọn hơn như sau:

Connection con = DriverManager.getConnection(connectionURL);

II.4.2. Truy vấn dữ liệu:

Chúng ta truy vấn dữ liệu bằng các câu lệnh truy vấn SQL. JDBC truy vấn dữ liệu

dựa vào đối tượng Statement (dùng thực thi câu lệnh SQL). Truy vấn thành công thì

Statement sẽ trả về kết quả là tập dữ liệu truy vấn có kiểu ResultSet.

Ngoài đối tượng Statement, đối tượng PreparedStatement có thể được sử dụng.

Điều này tạo ra cơ hội đơn giản hóa đối tượng Statement:

Cho những câu truy vấn có tính chất lặp lại rất giống nhau ngoại trừ vài giá trị đối

số, chúng hiệu quả hơn rất nhiều vì câu SQL được biên dịch một lần và sau đó được

thực thi rất nhiều lần, với giá trị đối số được thay thế cho từng câu truy vấn.

Page 90: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 40

Cơ chế cho việc chèn những đối số quy định các kí tự đặc biệt theo một cách thức

cần thiết cho việc hiệu chỉnh cơ sở dữ liệu đã kết nối.

PreparedStatement có tập những câu SQL khi nó được khởi tạo. Những đối số

được xác định bởi những kí tự “?”. Sau khi xây dựng xong, những đối số có thể được

xoá đi sử dụng clearParameters và thiết lập sử dụng những phương thức setInt,

setString, … và câu truy vấn có thể được thực thi sử dụng những phương thức execute,

executeUpdate, hay executeQuery như đối với Statement.

II.4.3. Trích xuất dữ liệu:

Sau khi nhận được kết quả trả về là tập ResultSet, gọi phương thức next() để đi

đến từng mẩu tin và in ra kết quả của các cột. Dùng phương thức getString(column) để

lấy dữ liệu của các cột (các cột được đánh số thứ tự từ 1).

Nếu bạn không biết chính xác cấu trúc bảng của ResultSet, bạn có thể thu được

nó trực tiếp thông qua đối tượng ResultSetMetaData.

Một khi đã thu được ResultSet , bạn có thể từng bước thu được từng dòng của nó,

cụ thể hơn là trường của từng dòng.

Chú ý rằng số cột bắt đầu từ 1 chứ không phải 0 như trong mảng của Java. Tiện

dụng hơn nữa là có phương thức getObject cho ResultSet để lấy đối số chuỗi chứa

trong cột. Cũng có phương thức getxxx để lấy tên của cột thay vì số cột.

II.4.4. Đóng kết nối:

Một khi bạn làm việc với các đối tượng ResultSet, Connection, Statement thì

dùng phương thức close() để giải phóng tất cả các liên kết đến các nguồn.

Page 91: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 41

III. Java Media Framework (JMF):

III.1. Tổng quan:

Java Media Framework (JMF) là một bộ thư viện lớn và linh hoạt của Sun được

sử dụng để xử lý media dựa trên thời gian.

Hình 3.2 – Tổng quan JMF

Phiên bản hiện hành của JMF là 2.1. Phiên bản này cho phép bạn thực hiện mọi

thao tác với media mà bạn có thể hình dung được. JMF có thể:

Thực thi những tập tin media khác nhau trên Java applet hay ứng dụng

độc lập. Những định dạng được cung cấp là AU, AVI, MIDI, MPEG,

QuickTime, và WAV.

Điều khiển media theo luồng từ Internet.

Thu audio và video với micro và máy quay phim, sau đó lưu trữ dữ liệu

theo chuẩn được cung cấp.

Thực thi media dựa theo thời gian và thay đổi định dạng nội dung.

Truyền audio và video theo thời gian thực trên Internet.

Truyền radio trực tiếp hay những chương trình truyền hình.

Tuy nhiên, trước khi bạn viết một ứng dụng JMF, bạn cần hiểu kĩ về kiến trúc

JMF, những interface và class của nó.

Page 92: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 42

III.2. Kiến trúc JMF:

Kiến trúc của JMF có thể được thể hiện theo những phần sau:

Dữ liệu nguồn

Thiết bị thu

Máy chơi nhạc

Processor

DataSink

Format

Manager

Hình 3.3 – Kiến trúc JMF

III.2.1. Dữ liệu nguồn:

Dữ liệu nguồn chứa các luồng media tương tự như một đĩa Compact Disk. Trong

JMF, đối tượng DataSource đại diện cho audio media, video media, hay kết hợp của cả

hai. DataSource có thể thu được từ nhiều nguồn khác nhau: những tập tin cục bộ,

mạng, hay những chương trình Internet trực tiếp.

Page 93: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 43

III.2.1.1. Dữ liệu nguồn kéo:

Trình khách khởi tạo việc truyền dữ liệu và điều khiển luồng dữ liệu từ nguồn. Ví

dụ: HTTP và FILE là những phương thức được thiết lập cho dạng dữ liệu này.

III.2.1.2. Dữ liệu nguồn đẩy:

Trình chủ khởi tạo việc truyền dữ liệu và điều khiển luồng dữ liệu từ dữ liệu

nguồn đẩy. Ví dụ dữ liệu nguồn đẩy bao gồm việc truyền media và video theo yêu cầu.

Hình 3.4 – Dữ liệu nguồn JMF

Như chúng ta đã đề cập ở trên, một số dữ liệu nguồn có thể được kết hợp thành

một. Ví dụ, nếu bạn thu trực tiếp một cảnh, khả năng là bạn có hai nguồn dữ liệu là

audio và video. Trong tình huống này, nhu cầu đặt ra là bạn cần kết hợp cả hai để dễ

dàng cho việc điều khiển.

III.2.2. Thiết bị thu:

Thiết bị thu đại diện cho những thiết bị dùng để thu dữ liệu như micro, máy chụp

hình hay máy quay phim. Dữ liệu media thu được có thể được chuyển cho đối tượng

Player để trình diễn, thực thi, chuyển đổi kiểu dữ liệu, hay lưu trữ cho việc sử dụng

sau này.

Những thiết bị thu cũng có thể được phân loại thành nguồn kéo hay đẩy. Với

nguồn kéo, người sử dụng điều khiển nó khi thu hình. Ví dụ máy chụp hình, người

Page 94: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 44

dùng nhấn nút để chụp hình. Ngược lại, micro đóng vai trò như nguồn đẩy vì nó liên

tục cung cấp luồng dữ liệu audio.

III.2.3. Player:

Player thực hiện công việc là nhập luồng dữ liệu audio hay video và trình diễn nó

ra loa hay màn hình, tương tự như chương trình chơi đĩa nhạc: đọc đĩa nhạc và phát

nhạc ra loa. Player cũng có những trạng thái tồn tại thông thường bởi vì Player phải tự

chuẩn bị và chuẩn bị dữ liệu nguồn cho bản thân nó trước khi nó có thể bắt đầu thực

thi media.

Hình 3.5 – JMF Player

Để hiểu điều này, bạn hãy cho đĩa nhạc vào máy nghe nhạc và chọn bài thứ tư

trong đĩa nhạc. Điều gì xảy ra? Chương trình nghe nhạc không phát bài nhạc ngay lập

tức. Đầu tiên nó phải tìm ra vị trí track nơi mà bài thứ tư bắt đầu và thực hiện một số

bước chuẩn bị. Sau khoảng nửa giây (tuỳ thuộc vào chương trình chơi nhạc), bạn có

thể nghe được bài nhạc. Bình thường, Player phải tiến hành theo từng bước, theo từng

trạng thái cho đến khi đạt đến trạng thái cuối cùng. JMF xác định sáu trạng thái trong

Player:

III.2.3.1. Không nhận biết:

Trong trường hợp này, đối tượng Player đã bị instantiate. Player bị instantiate

không biết gì về media mới của nó.

III.2.3.2. Nhận biết:

Player chuyển từ trạng thái không nhận biết sang trạng thái nhận biết khi bạn gọi

phương thức realize() của Player. Trong trạng thái nhận biết, Player xác định những

yêu cầu về tài nguyên phục vụ cho việc xử lý.

Page 95: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 45

III.2.3.3. Đã nhận biết:

Chuyển tiếp từ trạng thái nhận biết, Player chuyển sang trạng thái đã nhận biết.

Trong trạng thái này Player biết tài nguyên nào nó cần và có thông tin về loại media để

biểu diễn. Nó cũng có thể cung cấp những thành phần và điều khiển trực quan, cùng

những kết nối của nó cho những đối tượng khác trong hệ thống.

III.2.3.4. Tìm kiếm:

Khi phương thức prefetch() được gọi, Player chuyển từ trạng thái đã nhận biết

sang trạng thái tìm kiếm. Player ở trạng thái tìm kiếm chuẩn bị để trình diễn media.

III.2.3.5. Đã tìm kiếm:

Trạng thái khi Player đã chấm dứt tìm kiếm dữ liệu media và nó sẵn sàng bắt đầu.

III.2.3.6. Bắt đầu:

Trạng thái này đạt được khi bạn gọi phương thức start(). Player bây giờ đã sẵn

sàng trình diễn dữ liệu media.

Hình 3.6 – Sơ đồ trạng thái Player

III.2.4. Processor:

Processor là một dạng của player. Trong JMF API, interface Processor kế thừa từ

Player. Như vậy, Processor chấp nhận những điều khiển trình bày như Player. Không

Page 96: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 46

như Player, Processor điều khiển thông qua những thứ đang trình diễn trong luồng

media.

Hình 3.7 – Xử lý JMF

Ngoài việc trình bày dữ liệu nguồn, Processor cũng có thể xuất dữ liệu media

thông qua DataSource, vì vậy nó có thể được trình bày bởi một Player hay Processor

khác, hay được chuyển đổi sang một vài định dạng khác.

Bên cạnh sáu trạng thái Player đã nói trên, Processor bao gồm hai trạng thái bổ

sung xảy ra trước khi Processor vào trạng thái nhận biết nhưng sau trạng thái không

nhận biết:

III.2.4.1. Định hình:

Processor vào trạng thái định hình từ trạng thái không nhận biết khi phương thức

configure() được gọi. Processor tồn tại trong trạng thái định hình khi nó kết nối vào

DataSource, phức hợp lại luồng nhập, truy nhập thông tin định dạng của dữ liệu nhập.

III.2.4.2. Đã định hình:

Từ trạng thái định hình, Processor chuyển sang trạng thái đã định hình khi nó

được kết nối vào DataSource và đã xác định được định dạng của dữ liệu.

Tương tự như Player, Processor chuyển tiếp sang trạng thái đã nhận biết khi

phương thức realize() được gọi.

III.2.5. DataSink:

DataSink là một interface chuẩn dành cho những đối tượng chứa nội dung media

được chuyển tới bởi DataSource và nó có thể trình bày media theo một số mục tiêu.

III.2.6. Format:

Page 97: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 47

Đối tượng Format trình bày chính xác định dạng media của đối tượng. Bản thân

định dạng không mang những đối số mã hóa xác định hay thông tin thời gian toàn cục,

nó mô tả tên mã hóa của định dạng và loại dữ liệu định dạng yêu cầu.

Lớp con Format bao gồm AudioFormat và VideoFormat. VideoFormat chứa sáu

lớp con trực tiếp:

Hình 3.8 – Các định dạng JMF H261Format

H263Format

IndexedColorFormat

JPEGFormat

RGBFormat

YUVFormat

III.2.7. Manager:

Manager là một đối tượng trung gian được sử dụng giúp phối hợp để khởi tạo

những đối tượng Player, Processor, DataSource và DataSink cho phép những ứng

dụng quen thuộc của những interface JMF này được sử dụng một cách không ráp nối

với JMF. Khi một trong những phương thức create() được gọi, Manager sử dụng cơ

chế để xác định vị trí và khởi tạo đối tượng được yêu cầu.

Page 98: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 48

Hình 3.9 – JMF Manager Với Manager bạn có thể tạo Player từ DataSource. JMF cung cấp 4 manager:

III.2.7.1. Manager:

Sử dụng Manager để tạo ra Player, Processor, DataSource, và DataSink. Ví dụ,

nếu bạn muốn trình diễn DataSource, bạn có thể sử dụng Manager để tạo ra Player.

Manager này cung cấp bảo đảm của những gói chứa những lớp JMF, như Player

thông thường, Processor, DataSource, và DataSink.

III.2.7.2. CaptureDeviceManager:

Manager này cung cấp bảo đảm của những thiết bị thu có sẵn.

III.2.7.3. PlugInManager:

Manager này cung cấp bảo đảm của những thành phần xử lý cắm JMF có sẵn.

III.3. Các phương thức thực hiện:

III.3.1. Tạo ra Player:

Page 99: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 49

Với việc lập trình multimedia sử dụng JMF, một trong những công việc khó khăn

nhất là tạo ra Player. Bạn tạo ra Player bằng cách gọi phương thức createPlayer() của

Manager. Manager sử dụng URL của media hay MediaLocator mà bạn chỉ định để tạo

ra Player thích hợp. Một khi bạn có Player, bạn có thể thu được những thành phần trực

quan của đối tượng Player. Sau đó, bạn có thể thêm những thành phần trực quan này

vào cửa sổ ứng dụng của bạn hay applet.

Để trình bày thành phần trực quan của đối tượng Player, bạn phải:

Thu được thành phần trực quan bằng cách gọi phương thức

getVisualComponent()

Thêm thành phần trực quan vào cửa sổ ứng dụng hay applet.

Player cũng có thể bao gồm bảng điều khiển với những nút quen thuộc trong

chương trình nghe nhạc như bắt đầu, kết thúc, và tạm dừng luồng media. Rất nhiều

phương thức của Player chỉ có thể được gọi khi Player trong trạng thái đã nhận biết.

Để bảo đảm rằng nó trong trạng thái này, bạn có thể sử dụng phương thức

createRealizedPlayer() của đối tượng Manager để tạo ra Player. Phương thức này cung

cấp một phương cách thuận tiện để tạo và nhận biết Player chỉ trong một bước. Khi

phương thức này được gọi, nó sẽ chặn mọi thứ lại cho đến khi Player được nhận biết.

III.3.2. Thu dữ liệu media

Thu media là một công việc quan trọng khác trong lập trình JMF. Bạn có thể thu

dữ liệu media sử dụng các thiết bị thu như micro hay máy quay phim. Sau đó nó có thể

được xử lý và trình diễn, hay được lưu trữ theo định dạng media. Để thu dữ liệu, bạn

cần phải:

Xác định vị trí thiết bị thu bạn muốn sử dụng bằng cách sử dụng đối

tượng CaptureDeviceManager

Lấy được đối tượng CaptureDeviceInfo cho thiết bị

Lấy MediaLocator từ đối tượng CaptureDeviceInfo và sử dụng nó để tạo

ra DataSource

Tạo ra một Player hay một Processor nữa sử dụng DataSource

Bắt đầu Player hay Processor để tạo ra quá trình xử lý thu dữ liệu.

Page 100: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1

Bạn sử dụng CaptureDeviceManager để truy cập vào những thiết bị thu tương

thích trong hệ thống. Manager này đóng vai trò như một trung tâm bảo đảm cho tất cả

những thiết bị thu tương thích với JMF. Bạn có thể lấy được danh sách những thiết bị

tương thích bằng cách gọi phương thức getDeviceList(). Thiết bị thu được đại diện bởi

đối tượng CaptureDeviceInfo. Bạn sử dụng phương thức getDevice() của

CaptureDeviceManager để lấy CaptureDeviceInfo đối với thiết bị thu cụ thể.

Sử dụng thiết bị thu để thu dữ liệu media, sau đó bạn cần lấy MediaLocator của

thiết bị từ đối tượng CaptureDeviceInfo của nó. Bạn cũng có thể sử dụng

MediaLocator để khởi tạo Player hay Processor trực tiếp, hay sử dụng MediaLocator

để khởi tạo DataSource mà bạn có thể sử dụng như đầu vào cho Player hay Processor.

Sử dụng phương thức start() của Player hay Processor để khởi động quá trình xử lý thu

dữ liệu.

I.1. Lấy hình ảnh từ webcam sử dụng JMF:

Hình 3.10 – JMF API

I.1.1. Giới thiệu:

Bộ thư viện JMF được tạo ra tương thích với nhiều định dạng audio, video, và

nhiều loại phương tiện truyền thông dựa theo thời gian, được sử dụng bởi những ứng

dụng độc lập và applet được xây dựng theo kĩ thuật Java. Kể từ phiên bản 2.0, bộ thư

viện JMF thêm vào khả năng thu, luồng, và chuyển đổi giữa rất nhiều định dạng. Phần

này trình bày cách sử dụng JMF để lấy những hình ảnh từ một webcam.

Page 101: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

Do khả năng tương thích đối với phần cứng, phần ví dụ được xây dựng và chạy

thử trong nền Microsoft Windows sử dụng Logitech USB Webcam.

I.1.2. Tên thiết bị :

Để sử dụng một thiết bị truyền thông cụ thể, đầu tiên bạn phải biết tên mà gói

JMF chỉ đến thiết bị. Có hai cách tìm tên tương ứng, tuỳ thuộc vào ứng dụng mà bạn

đang xây dựng.

Cách dễ nhất là chạy chương trình JMStudio đi cùng với JMF API. Một khi

chương trình thực thi, chọn Capture từ mục File. Khi đó, một cửa sổ sẽ hiện ra cho

phép bạn có một số lựa chọn để xác định những thiết bị video và sound. Trong

Microsoft Windows, tên thông thường cho webcam có dạng tương tự như

vfw:Logitech USB Video Camera:0.

Cách thứ hai để lấy thông tin này là bằng lập trình (cách này có thể tiện dụng hơn

nếu bạn muốn người sử dụng ứng dụng chọn thiết bị sử dụng).

Lớp CaptureDeviceManager trong thư viện JMF cho phép truy cập vào một danh

sách những thiết bị thu tín hiệu tương thích trong hệ thống. Để lấy thông tin về một

loại thiết bị cụ thể, truyền vào đối số cho phương thức getDeviceList() là một đối

tượng định dạng. Ví dụ 1 trình bày đoạn mã sẽ in danh sách những thiết bị RGB video

tương thích trong hệ thống.

Ví dụ 1: public void printRGBDevices() { /* t•o ••i t••ng ••nh d•ng RGB m•c ••nh m•i (xem tài li•u JMF •• bi•t thêm nh•ng ••nh d•ng khác). */ RGBformat rgbFormat = new RGBFormat(); /* S• d•ng ••i t••ng Format •• l•y Vector nh•ng ••i t••ng CaptureDeviceInfo t• CaptureDeviceManager*/ Vector videoDevs = CaptureDeviceManager.getDeviceList(rgbFormat); /*Th•c hi•n vòng l•p trong k•t qu• và l•y k•t qu• ra cho ng••i dùng*/ for (int i = 0; i …

Để sử dụng thiết bị bạn cần đối tượng CaptureDeviceInfo. Đối tượng này hoặc có

thể được lấy ra từ danh sách thu được trong đoạn mã ví dụ hoặc thông qua phương

thức getDeviceName() của CaptureDeviceManager nếu sử dụng tên thiết bị xác định.

Page 102: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

Page 103: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

I.1.3. Lấy định dạng đúng:

Hầu hết webcam tương thích với nhiều định dạng khác nhau; những thành phần

như độ nét, màu, và mỗi giây có bao nhiêu frame có thể được điều chỉnh. Những định

dạng tương thích với một thiết bị cụ thể có thể được xác định bằng cách sử dụng

phương thức getFormats() của lớp CaptureDeviceInfo. Ví dụ 2 trình bày đoạn mã cho

phép chọn định dạng.

Ví dụ 2: /* Chúng ta xem xét ••nh d•ng 160x120 v•i 24 bit màu, RGB */ Dimension wantRes = new Dimension(160, 120); int wantDepth = 24; /* L•y nh•ng ••nh d•ng t••ng thích v•i thi•t b•. Th•c t• là ki•m tra getDevice có tr• v• null hay không*/ CaptureDeviceInfo device = CaptureDeviceManager.getDevice("webcam:0"); Format[] fmts = device.getFormats(); RGBFormat userFormat = null;

I.1.4. Lấy DataSource:

Để bắt lấy ảnh từ webcam, chúng ta cần lấy đối tượng PushBufferStream của

JMF. Để thực hiện điều này, chúng ta lần lượt thực hiện các bước sau. Đầu tiên, chúng

ta cần đối tượng MediaLocator mô tả vị trí của nội dung truyền thông. Sau đó chúng ta

sử dụng đối tượng này để tạo ra DataSource sử dụng phương thức createDataSource()

của lớp Manager. Lớp Manager là dạng truy cập thông thường của JMF để lấy những

tài nguyên lệ thuộc vào hệ thống.

Trước khi chúng ta có thể sử dụng DataSource, chúng ta phải chắc chắn rằng nó

sẽ cung cấp thông tin theo định dạng chúng ta cần. Ví dụ 3 trình bày một phần mã để

tạo ra DataSource được thiết lập cho một định dạng cụ thể.

Ví dụ 3: MediaLocator loc = device.getLocator(); DataSource formattedSource = null; try { formattedSource = Manager.createDataSource(loc); } catch (IOException ioe) { System.out.println("L•i IO khi t•o dataSource"); System.exit(1); } catch (NoDataSourceException ndse) {

Page 104: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

System.out.println("Không t•o •••c dataSource"); System.exit(1); } /* Thi•t l•p ••nh d•ng khá ph•c t•p. ••u tiên, chúng ta c•n l•y nh•ng •i•u khi•n ••nh d•ng t• dataSource chúng ta m•i t•o ra. •• làm •i•u này, chúng ta c•n tham kh•o ••i t••ng •ng d•ng interface CaptureDevice */ if (!(formattedSource instanceof CaptureDevice)) { System.out.println("DataSource không là CaptureDevice"); System.exit(1); } FormatControl[] fmtControls = ((CaptureDevice)formattedSource).getFormatControls(); if (fmtControls == null || fmtControls.length == 0) { System.out.println("Không có FormatControl t••ng thích"); System.exit(1); } Format setFormat = null; /* Ti•p theo chúng ta th•c hi•n vòng l•p trong nh•ng FormatControl t••ng thích và th• thi•t l•p ••nh d•ng cho m•t cái mà chúng ta mu•n. */

I.1.5. Lấy Processor

Hiện tại, chúng ta đã có đối tượng DataSource có thể sử dụng. Tuy nhiên, chúng

ta chưa làm được gì cả. JMF API cho phép chúng ta sử dụng DataSource này hoặc là

trình diễn truyền thông (thông qua player) hay dùng thông tin (thông qua processor).

Một lần nữa, chúng ta sử dụng Manager để tạo ra đối tượng processor, truyền

DataSource của chúng ta như là một đối số. Trước khi chúng ta có thể sử dụng

processor này, nó phải ở trong trạng thái có thể được thi hành.

Ví dụ 4: Object stateLock = new Object(); // Ph•i là bi•n toàn c•c Processor deviceProc = null; try { deviceProc = Manager.createProcessor(formattedSource); } catch (IOException ioe) { System.out.println("Không th• l•y processor cho thi•t b•: " + ioe.getMessage()); System.exit(1); } catch (NoProcessorException npe) { System.out.println("Không th• l•y processor cho thi•t b•: " +

Page 105: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

npe.getMessage()); System.exit(1); } deviceProc.addControllerListener(this); deviceProc.realize(); while (deviceProc.getState() != Controller.Realized) { synchronized (stateLock) { try { stateLock.wait(); } catch (InterruptedException ie) { System.out.println("Thi•t b• không th• chuy•n sang tr•ng thái •ã nh•n bi•t"); System.exit(1); } } } deviceProc.start(); Ví dụ 5: /* Interface ControllerListener ch• ch•a duy nh•t m•t ph••ng th•c, controllerUpdate*/ public void controllerUpdate(ControllerEvent ce) { if (ce instanceof RealizeCompleteEvent) { System.out.println("Hoàn t•t vi•c chuy•n ••i"); synchronized (stateLock) { stateLock.notifyAll(); } } }

Page 106: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 7

I.1.6. PushBufferStream:

Bây giờ processor đã thực thi, chúng ta có thể truy cập vào

PushBufferDataSource để sau đó có thể cung cấp cho chúng ta PushBufferStream.

PushBufferDataSource là một dạng đặc biệt của DataSource, nó quản lý dữ liệu theo

dạng những luồng đưa vào thông qua những đối tượng buffer. PushBufferStream cung

cấp một cách truy cập buffer thông qua luồng. Trong trường hợp này, mỗi buffer đại

diện cho một frame từ webcam.

Ví dụ 6 trình diễn đoạn mã đầy đủ hàm tạo của PushBufferStream.

Ví dụ 6: private PushBufferStream camStream; // Bi•n toàn c•c private BufferToImage converter; // Bi•n toàn c•c PushBufferDataSource source = null; try { source = (PushBufferDataSource)deviceProc.getDataOutput(); } catch (NotRealizedError nre) { /* Có th• ch•ng bao gi• x•y ra */ throw new VisionJMFException("L•i bên trong: processor không nh•n bi•t"); } PushBufferStream[] streams = source.getStreams();

I.1.7. Lấy Image:

Từ những Buffer đại diện cho những frame từ webcam, chúng ta cũng có thể tạo

ra đối tượng BufferToImage cho phép chúng ta chuyển đổi những buffer này sang ảnh

AWT để sử dụng hay trình diễn.

Ví dụ 7 trình bày phương thức có thể được sử dụng để chuyển đối tượng Image

cho ứng dụng.

Ví dụ 7: /* L•y •nh t• máy ch•p hình */ public Image getImage() { Buffer b = new Buffer(); try { camStream.read(b); } catch (IOException ioe) {

Page 107: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 8

System.out.println("Không th• l•y frame t• camera"); return null; } Image i = converter.createImage(b); return i; }

I.2. Chương trình đầy đủ minh họa việc lấy ảnh từ camera:

import java.io.*;

import java.util.*;

import java.awt.*;

import java.awt.image.*;

import javax.imageio.*;

import javax.media.*;

import javax.media.control.*;

import javax.media.format.*;

import javax.media.util.*;

public class FrameGrab

{

public static void main(String[] args) throws Exception

{

// Tạo thiết bị thu

CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft

WDM Image Capture (Win32):1");

Player player = Manager.createRealizedPlayer(deviceInfo.getLocator());

player.start();

// Dừng vài giây để máy chụp hình khởi tạo

Thread.sleep(2500);

// Bắt lấy frame từ webcam

FrameGrabbingControl frameGrabber =

(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");

Buffer buf = frameGrabber.grabFrame();

// Chuyển đổi frame sang ảnh ở dạng buffer để có thể xử lý hay lưu trữ

Image img = (new BufferToImage((VideoFormat)buf.getFormat()).createImage(buf));

Page 108: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 9

BufferedImage buffImg = new BufferedImage(img.getWidth(null),

img.getHeight(null), BufferedImage.TYPE_INT_RGB);

Graphics2D g = buffImg.createGraphics();

g.drawImage(img, null, null);

// Lưu ảnh dưới dạng JPG

ImageIO.write(buffImg, "jpg", new File("c:\\webcam.jpg"));

// Kết thúc sử dụng webcam

player.close();

player.deallocate();

System.exit(0);

}

}

Page 109: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 10

CCHHƯƯƠƠNNGG 44 –– CCÀÀII ĐĐẶẶTT,, ĐĐÁÁNNHH GGIIÁÁ

VVÀÀ HHƯƯỚỚNNGG PPHHÁÁTT TTRRIIỂỂNN

Page 110: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 11

I. Cài đặt: Đầu tiên chúng ta cần phải cài đặt hệ quản trị cơ sở dữ liệu MS SQL Server 2000,

Webserver Apache Tomcat 5.0.25, JMF 2.1.1e. ( Xin tham khảo ở phần Phụ lục )

MS SQL Server 2000 là một bước nhảy vọt về hệ quản trị cơ sở dữ liệu

đa người dùng của Microsoft, nhằm phục vụ cho những nhà phát triển hệ

thống cơ sở dữ liệu. Một trong những ưu điểm của SQL Server là tốc độ

nhanh, ổn định, hỗ trợ rất mạnh tiếng Việt theo chuẩn Unicode.

TomCat là trình chủ Web server có khả năng diễn dịch JSP và servlet.

TomCat miễn phí có mã nguồn mở nên được rất nhiều lập trình viên sử

dụng. Ngoài ra Tomcat còn hỗ trợ Connnection Pool rất tốt. Để sử dụng

file .war trong TomCat, đơn giản, bạn chỉ cần thực hiện lệnh copy cứng,

chép file .war vào thư mục webapps của TomCat.

JMF ( Java Media Framework ) của Sun Microsystem.

Sau đó ta sẽ lần lượt cài đặt các module của hệ thống tương ứng với các file *.exe

Page 111: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 12

I.1. Tại sao cần cài đặt cơ chế chia sẻ kết nối (Connnection Pool):

Nhu cầu về kết nối đến cơ sở dữ liệu trung tâm để truy vấn dữ liệu trong các ứng

dụng Web ngày càng tăng. Về mặt kỹ thuật, các hệ cơ sở dữ liệu phải tiêu tốn rất nhiều

tài nguyên để duy trì liên tục kết nối trong quá trình truy vấn. Vì lý do này, bạn chỉ nên

mở kết nối truy vấn đến cơ sở dữ liệu chỉ khi nào thật sự cần thiết. Một khi đã hoàn tất

thao tác truy xuất, bạn phải trả lại kết nối cho những người dùng khác truy cập. Mặc

dầu vậy, mỗi một kết nối đến cơ sở dữ liệu đều đòi hỏi phải có thời gian thiết lập, phân

bổ tài nguyên ...

Các trình chủ Web server đưa ra khái niệm chia sẻ kết nối (connection share

pool) cho phép các yêu cầu về kết nối đến cơ sở dữ liệu chỉ được mở một lần và dùng

chung bởi các trang JSP hay servlet với nhau. Ví dụ, các yêu cầu về truy vấn dữ liệu

thường chỉ diễn ra trong thời gian ngắn, những trang JSP hay servlet trước khi truy

xuất dữ liệu sẽ yêu cầu hệ thống cung cấp kết nối, hệ thống của ta sẽ kiểm tra xem kết

nối đã tồn tại hay chưa. Nếu chưa, hệ thống sẽ tạo kết nối cung cấp cho trang JSP sử

dụng. Trang JSP sau khi sử dụng xong không đóng kết nối mà trả lại kết nối cho hệ

thống. Hệ thống lưu đối tượng kết nối trở lại ngăn xếp hoặc hàng đợi. Trong lời triệu

gọi trang JSP ở phiên làm việc khác, nếu cần đến truy xuất cơ sở dữ liệu hệ thống sẽ

cung cấp kết nối đã có trước đó mà không cần sử dụng lại tài nguyên của hệ thống để

tạo lại kết nối.

Ở đây, sự thuận tiện là bạn không cần quan tâm đến việc trả lại kết nối cho pool.

Web server sẽ tự động thu hồi kết nối trả về cho pool hộ bạn một khi trang JSP hay

servlet của bạn không sử dụng đến kết nối nữa.

Khi website của bạn phát triển với số lượng người truy cập lớn, cơ chế chia sẻ kết

nối (share pool) này sẽ làm tăng tốc đáng kể việc truy xuất và bảo đảm nguồn tài

nguyên hạn hẹp của trình chủ không bị tiêu hao nhiều.

I.2. Tại sao lại sử dụng JMF:

Hiện nay, có rất nhiều công cụ tương thích với Java cho phép thực hiện lấy ảnh

về từ camera. Các công cụ này khá mạnh, cho phép lập trình viên có thể dễ dàng thực

hiện những công việc tương tác với camera. Tuy nhiên, vấn đề được đặt ra ở đây là

Page 112: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 13

hầu hết những bộ thư viện này đều để bán hoặc cho dùng thử trong một khoảng thời

gian nhất định. Trong khi đó, bộ thư viện JMF do Sun được tạo ra tuy khó sử dụng

hơn, nhưng nó cũng khá mạnh, và quan trọng hơn cả là việc JMF được tạo ra không vì

mục đích lợi nhuận. Những người lập trình Java chắc hẳn cũng thích làm việc với JMF

hơn vì không những nó có thể lấy ảnh từ camera mà nó còn có thể làm nhiều thứ hơn

thế nữa như: làm phần mềm chơi nhạc như Windows Media Player, xem phim, … Rất

tiện dụng, trong khi những bộ thư viện khác vừa tốn tiền, vừa chỉ sử dụng được trong

một việc duy nhất. Tóm lại, sử dụng JMF là kinh tế và hợp lý hơn cả.

Ta dùng JMStudio được đính kèm khi cài đặt JMF để xem giới thiệu những tính

năng của JMF.

Page 113: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 14

I.3. Hình ảnh các module của hệ thống

Trang chủ của ứng dụng Web:

Sinh viên chọn vào mục “Sinh viên - Đăng kí” trên danh sách các mục chọn để

tiến hành đăng kí. Mục chọn này sẽ mở ra một trang Web cho phép sinh viên nhập vào

các thông tin cá nhân

Page 114: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 15

Sinh viên sử dụng mục “Sinh viên - Đăng nhập” để chỉnh sửa thông tin cá nhân

trước khi chụp hình làm thẻ, xem thời gian sử dụng còn lại trong học kì và trong tuần

Phần “Thủ thư - Đăng nhập” trên trang chủ cho phép thủ thư đăng nhập vào hệ

thống thực hiện các thao tác quản trị của mình

Page 115: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 16

Sau khi đã đăng nhập, thủ thư sẽ vào được trang chủ dành riêng cho riêng. Từ đây

thủ thư có thể thực hiện các thao tác quản trị của mình bằng cách click vào các

hyperlink tương ứng

Hẹn ngày chụp hình cho sinh viên

Page 116: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 17

Xem danh sách những ngày đã hẹn sinh viên chụp hình

Thêm tên lớp mới

Có thể chọn vào đây để sửa thông tin của những ngày hẹn

Page 117: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 18

Xem danh sách các lớp

Tìm kiếm sinh viên theo MSSV, sau đó thủ thư có thể sửa thông tin của sinh viên

hoặc xóa sinh viên khỏi CSDL

Có thể chọn vào đây để xem và xóa thông tin của một lớp

Page 118: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 19

Xem danh sách sinh viên

Quy định thời gian sử dụng phòng máy trong tuần và trong học kì

Page 119: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 20

Cấp thời gian sử dụng phòng máy cho sinh viên sau một học kì

Ứng dụng tạo thẻ phòng máy cho phép thủ thư thực hiện việc chụp hình và in thẻ

thư viện cho sinh viên

Thẻ trước Thẻ sau

Chụp hình

Page 120: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 21

Ứng dụng tạo thẻ chụp hình cho sinh viên sau khi nghe thủ thư hướng dẫn sử

dụng thư viện

Ứng dụng quản lý phòng máy cho phép thủ thư theo dõi thời gian sử dụng của

sinh viên, bằng cách quét mã vạch khi sinh viên bắt đầu và kết thúc sử dụng

Cho phép thủ thư điều chỉnh các máy hư trong phòng máy

Page 121: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1

I. Đánh giá:

I.1. Tự đánh giá:

• Ưu điểm:

o Chương trình được xây dựng đáp ứng đúng theo yêu cầu của Thư viện.

o Bản thân chương trình đã được vận hành thử tại Thư viện và thu được

kết quả cao.

o Giao diện thân thiện, dễ dùng.

o Đã xây dựng được bộ cài đặt, cho phép việc cài đặt và sử dụng một cách

dể dàng.

• Khuyết điểm:

o Do thiếu thiết bị nên chỉ thực hiện tạo thẻ dùng mã vạch một chiều, chưa

có cơ hội tiếp xúc trực tiếp với mã vạch hai chiều.

o Do thời gian hạn hẹp nên chưa thực hiện được phần hướng dẫn sử dụng

dành cho người dùng.

I.2. Thư viện đánh giá:

Page 122: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

II. Hướng phát triển: Nếu được tiếp tục phát triển, chương trình có thể được tiếp tục xây dựng sử dụng

những công nghệ mới trong mã hoá dữ liệu như mã vạch hai chiều, thẻ từ, …

Từ những kiến thức cơ bản trong việc tương tác với thiết phần cứng, sẽ tiếp tục

xây dựng những công cụ tăng khả năng tự động trong quản lý như sử dụng tia hồng

ngoại để quản lý sinh viên ra vào phòng máy…

Tiếp tục phát triển để nâng cao khả năng quản lý, khả năng tự động hóa của

phòng máy trong việc quản lý từng máy, khả năng can thiệp vào từng máy. Khả năng

can thiệp sâu vào từng máy bao gồm những chức năng sau: tự động mở và tắt máy tính

khi sinh viên bắt đầu và kết thúc sử dụng máy; lấy địa chỉ URL của từng máy, qua đó

cho phép thủ thư có thể quản lý nội dung truy cập internet của sinh viên, …

Page 123: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

PPHHỤỤ LLỤỤCC

Page 124: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

I. Cài đặt hệ quản trị CSDL: MS SQL Server 2000

Hình 5.1

Hình 5.2

Page 125: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

Hình 5.3

Hình 5.4

Page 126: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

Hình 5.5

Hình 5.6

Page 127: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 7

Hình 5.7

Hình 5.8

Page 128: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 8

Hình 5.9

Hình 5.10

Page 129: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 9

Hình 5.11

Hình 5.12

Page 130: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 10

Sau khi cài đặt xong chạy Enterprise Manager tạo database tên là lvtn, mở SQL

Service Manager stop tạm dừng SQL Server. Copy 2 file: lvtn_Log.LDF và

lvtn_Data.MDF vào thư mục C:\Program Files\Microsoft SQL Server\MSSQL\Data.

Cuối cùng mở lại SQL Service Manager và start SQL Server.

II. Cài đặt Webserver : Apache Tomcat 5.0.25

Hình 5.13

Page 131: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 11

Hình 5.14

Hình 5.15

Page 132: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 1

Hình 5.16

Hình 5.17

Page 133: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 2

Hình 5.18

Sau khi cài đặt xong Apache Tomcat, mở trình duyệt và gõ vào ô Address

http://127.0.0.1:8080/admin/ nhập username và password của admin để đăng nhập.

Sau đó đăng ký JNDI name cho Datasource lvtn, yêu cầu Webserver tạo một

Connection Pool cho ứng dụng web của ta. Cuối cùng copy thư mục lvtn1 vào thư mục

CATALINA_HOME\webapps\ và restart Tomcat.

Page 134: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 3

Hình 5.19

Hình 5.20

Page 135: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 4

Hình 5.21

I. Cài đặt JMF : Java Media Framework

Hình 5.22

Page 136: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 5

Hình 5.23

Hình 5.24

Page 137: LUẬN VĂN TỐT NGHIỆP - math.hcmuns.edu.vnptbao/LVTN/2000/lv3.pdf · hoàn thành luận văn. ... Tin học 2000 đã chia sẻ và động viên chúng ... Mã hóa mã vạch

QUẢN LÝ PHÒNG MÁY THƯ VIỆN BẰNG MÃ VẠCH

SVTH : Âu Dương Đạt – Lê Thành Nguyên Trang 6

TTÀÀII LLIIỆỆUU TTHHAAMM KKHHẢẢOO Trong quá trình thực hiện luận văn chúng em đã tham khảo một số tài liệu sau:

[1] Hoàng Ngọc Giao. Lập trình Java như thế nào? NXB Thống kê-Hà Nội, 1998

[2] Nguyễn Phương Lan, Hoàng Đức Hải. Lập trình ứng dụng Web với

JSP/Servlet NXB Giáo dục, 2001

[3] java.sun.com/jmf

[4] jakarta.apache.org/tomcat

[5] www.idautomation.com

[6] Báo Sài gòn Tiếp thị số ra ngày 31/7/2003