Thư viện là một yếu tố căn bản và quan trọng, là thước đo đánh giá vai trò, chức năng, nhiệm vụ, hiệu quả đào tạo của đại học và không thể tách rời trường đại học với thư viện. Vì thế nhóm chúng em đã chọn đề tài ứng dụng ngôn ngữ java để xây dựng hệ thống “Quản lý thư viện” nhằm tìm hiểu sâu hơn về ngôn ngữ java trong lập trình và củng cố kiến thức, xây dựng các ứng dụng trong tương lai.
Trang 1LỜI MỞ ĐẦU
Ngày nay công nghệ thông tin đóng vai trò quan trọng trong đời sống hàng ngày của chúng ta Việc ứng dụng công nghệ thông tin vào các lĩnh vực của đời sống giúp chúng ta hoàn thành công việc nhanh hơn và hiệu quả hơn Có rất nhiều công việc phát triển song song với sự phát triển của công nghệ thông tin, một trong
số đó là thiết kế phần mềm, hướng đi dịch vụ mang lại hiệu quả lớn
Trong thời đại ngày nay, công tác thông tin nói chung và thông tin thư viện nói riêng có một tầm quan trọng đặc biệt và ảnh hưởng sâu sắc tới mọi lĩnh vực của đời sống xã hội, trong đó có lĩnh vực giáo dục và đào tạo Việc khai thác hiệu quả thông tin đã trở thành một trong những nhân tố hàng đầu trong chiến lược phát triển kinh tế – xã hội của bất kỳ một quốc gia nào Thư viện là cầu nối giữa thông tin và người sử dụng Thư viện là một yếu tố căn bản và quan trọng, là thước đo đánh giá vai trò, chức năng, nhiệm vụ, hiệu quả đào tạo của đại học và không thể tách rời trường đại học với thư viện Vì thế nhóm chúng em đã chọn đề tài ứng dụng ngôn ngữ java để xây dựng hệ thống “Quản lý thư viện” nhằm tìm hiểu sâu hơn về ngôn ngữ java trong lập trình và củng cố kiến thức, xây dựng các ứng dụng trong tương lai.
Qua đây nhóm chúng em xin cảm ơn thầy Cù Việt Dũng đã tậm tâm giúp
đỡ, chỉ bảo chúng em trong quá trình học và thực hiện đề tài nghiên cứu của nhóm chúng em Do thời gian thực hiện và nghiên cứu đề tài còn hạn chế nên nhóm chúng em không thể tránh khỏi những thiếu sót nhất định Chúng em rất mong nhận được ý kiến đóng góp của thầy cô và các bạn để chúng em có thêm kinh nghiệm tiếp tục hoàn thành đề tài nghiên cứu của mình
Trang 2CHƯƠNG I: TỔNG QUAN VỀ NGÔN NGỮ JAVA
1 Lược sử về ngôn ngữ Java
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa
là cây sồi; do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này), họ dự định ngôn ngữ đó thay cho C++, nhưng các tính năng giống Objective C Không nên lẫn lộn Java với JavaScript, hai ngôn ngữ đó chỉ giống tên và loại cú pháp như C Công ty Sun Microsystems đang giữ bản quyền và phát triển Java thường xuyên Tháng 04/2011, công ty Sun Microsystems tiếp tục cho ra bản JDK 1.6.24.
Java được tạo ra với tiêu chí "Viết (code) một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)) Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun Solaris, Linux, Mac OS, FreeBSD & Windows Ngoài ra, một số công ty, tổ chức cũng như cá nhân khác cũng phát triển môi trường thực thi Java cho những hệ điều hành khác như BEA, IBM, HP Trong đó đáng nói đến nhất
là IBM Java Platform hỗ trợ Windows, Linux, AIX & z/OS.
Những chi tiết về ngôn ngữ, máy ảo và API của Java được giữ bởi Cộng đồng Java (do Sun quản lý) Java được tạo ra vào năm 1991 do một số
kỹ sư ở Sun, bao gồm ông James Gosling, một phần của Dự án Xanh (Green Project) Java được phát hành vào năm 1994, rồi nó trở nên nổi tiếng khi Netscape tuyên bố tại hội thảo SunWorld năm 1995 là trình duyệt Navigator của họ sẽ hỗ trợ Java Về sau Java được hỗ trợ trên hầu hết các trình duyệt như Internet Explorer (Microsoft), Firefox (Mozilla), Safari (Apple)
2 Đặc điểm của ngôn ngữ Java
Java có rất nhiều đặc điểm và dưới đây là một số đặc điểm nổi bật của java:
Trang 3- Đơn giản: Cú pháp của java dựa trên C++ (vì thế nó khá dễ dàng với
những người đã tiếp xúc với ngôn ngữ C++) Bỏ nhiều đặc điểm gây bối rối và hiếm khi sử dụng như con trỏ (pointer) và nạp chồng toán tử (overloading), Java còn có hệ thống dọn rác tự động (garbage Collection) do đó ta không cần xóa các đối tượng tham chiếu như trong C
và C++.
- Hướng đối tượng: Java là một trong những ngôn ngữ điển hình về lập
trình hướng đối tượng, và có các khái niệm cơ bản của lập trình hướng đối tượng như: đối tương (object), lớp (class), tính kế thừa (), tính đa hình (), tính trừu tượng (), tính đóng gói ().
- Độc lập nền tảng: Một Platform là môi trường phần cứng hoặc phần
mềm trong đó một chương trình chạy Có hai loại Platform: một loại dựa trên phần mềm (software-based) và một loại dựa trên phần cứng (hardware-based) Java cung cấp software-based platform Java Platform khác với nhiều nền tảng khác ở chỗ nó chạy ở trên các nền tảng hardware-based khác Nó có hai thành phần là: Runtime Environment và API (Application Programing Interface) Java có thể chạy trên nhiều nền tảng như Windows, Linux, Sun Solaris, Mac/OS, … Java code được biên dịch bởi Bộ biên dịch Compiler và được chuyển đổi thành Bytecode Bytecode này là một code độc lập nền tảng bởi vì nó có thể chạy trên nhiều nền tảng khác nhau Đây là một trong những ưu điểm rất lớn của java.
- Bảo mật: Java an toàn vì: Java không có con trỏ và chương trình chạy bên trong các hộp thiết bị ảo Java có classloader: thêm sự bảo vệ bằng
việc phân biệt riêng rẽ các package cho các lớp của hệ thống local file mà
từ đó chúng được import với các file từ nguồn mạng; bytecode vertifier:
kiểm tra các đoạn code để tìm ra các phần code không hợp lệ mà có thể
truy cập trái phép tới các đối tượng; security manager: quyết định xem
nguồn resource nào mà một lớp có thể truy cập.
- Hiệu suất cao: Với việc sử dụng Just-In-Time compilers, Java giúp nâng
cao hiệu năng, giúp việc debug được dễ dàng cũng như nhanh chóng phát hiện lỗi.
Trang 4- Đa luồng: Một Thread là giống như một chương trình riêng rẽ, thực thi
một cách đồng thời Chúng ta có thể viết các chương trình Java mà xử lý nhiều tác vụ cùng một lúc bằng việc định nghĩa nhiều Thread Lợi thế chính của Multi-thread là nó chia sẻ cùng bộ nhớ Các Thread là quan trọng cho Multi-media, Web App, …
- Hỗ trợ thiết kế giao diện: Java hỗ trợ các lập trình viên thiết kế giao
diện thông qua hai thư viện chính là AWT và SWING sau này là SWT
- Hỗ trợ kết nối đến cơ sở dữ liệu: Java có hỗ trợ kết nối cơ sở dữ liệu
như SQL server, Oracle, mySQL,
Trang 5CHƯƠNG II: SỬ DỤNG NGÔN NGỮ JAVA XÂY DỰNG THỐNG QUẢN LÝ THƯ VIỆN
1 Sự cần thiết của bài toán
Trong thời đại ngày nay, công tác thông tin nói chung và thông tin thư viện nói riêng có một tầm quan trọng đặc biệt và ảnh hưởng sâu sắc tới mọi lĩnh vực của đời sống xã hội, trong đó có lĩnh vực giáo dục và đào tạo Việc khai thác hiệu quả thông tin đã trở thành một trong những nhân tố hàng đầu trong chiến lược phát triển kinh tế – xã hội của bất kỳ một quốc gia nào Thư viện là cầu nối giữa thông tin và người sử dụng Thư viện là một yếu tố căn bản và quan trọng, là thước đo đánh giá vai trò, chức năng, nhiệm vụ, hiệu quả đào tạo của đại học và không thể tách rời trường đại học với thư viện.
2 Thiết kế cơ sở dữ liệu
Hệ thống sử dụng SQL Server để xây dựng cơ sở dữ liệu.
Các bảng của hệ thống như sau:
- Bảng NGUOIDUNG có 2 trường: Username và Pass trong đó Username là primary key.
- Bảng BANDOC có 7 trường: MaBD, TenBD, NamSinh, GioiTinh, DoiTuong, DiaChi và SDT trong đó MaBD là primary key.
- Bảng SACH có 6 trường: MaSach, TenSach, TacGia, NXB, KeSach
và DonGia trong đó MaSach là primary key.
- Bảng MUONSACH có 5 trường: MaBD, MaSach, NgayMuon, NgayTra, GiaTien trong đó MaBD và MaSach là primary key.
Trang 6Diagrams của cơ sở dữ liệu
3 Thiết kế giao diện
a Thiết kế giao diện đăng nhập hệ thống
class loginSystem implements ActionListener
{
// Properties of UI
private JFrame mainF;
private JLabel lbTitle;
private JLabel lbUser;
private JLabel lbPass;
private JTextField txtUser;
private JPasswordField txtPass;
private JButton btLogin;
private JButton btExit;
public void createUILogin()
{
// Set properties for Frame
mainF = new JFrame("Hệ th ngống qu nản lý thư vi n");ệ
mainF.setSize(400, 300);
mainF.setLayout(null);
mainF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//////////////////Set properties for component
// Set properties for label
lbTitle = new JLabel();
lbUser.setText("T iài Kho n:");ản
lbUser.setFont(new java.awt.Font("Time news roman", 0, 16));
Trang 7lbPass.setText("M tập"); Kh u:");ẩu:");
lbPass.setHorizontalAlignment((JLabel.LEFT));
lbPass.setVerticalAlignment(JLabel.CENTER);
//Set properties for text field
txtUser = new JTextField(20);
Trang 8// Goi sang giao dien chinh cua chuong trinh
loginSystem log = new loginSystem();
private final JFrame mainUI = new JFrame("Hệ th ngống qu nản lý thư vi n");ệ
private final JTabbedPane tbPanel = new JTabbedPane();
private final tabReader tbReader = new tabReader();
private final tabBook tbBook = new tabBook();
private final tabBorrow tbBorrow = new tabBorrow();
private final tabSearch tbSearch = new tabSearch();
// add cac panel vao tabpanel
tbPanel.addTab("B nại!!"); Đọc", tbReader.createtabReader());c",
private JPanel pnReader = new JPanel();
private JTextField txtID = new JTextField();
private JTextField txtName = new JTextField();
private JTextField txtBirthYear = new JTextField();
private JTextField txtGender = new JTextField();
private JTextField txtObject = new JTextField();
private JTextField txtAddress = new JTextField();
private JTextField txtNumPhone = new JTextField();
private JButton btAdd = new JButton("Thêm");
private JButton btFix = new JButton("S a");ửa");
private JButton btDel = new JButton("Xóa");
private JButton btLoad = new JButton("Load");
private JButton btReset = new JButton("Reset");
private JButton btSearch = new JButton("Tìm Ki m");ết
private JTable dataTable = new JTable();
private DefaultTableModel tableModel = new DefaultTableModel();
private Vector dataRecord = new Vector();
private Vector dataTitle = new Vector();
Trang 9lb3.setFont(new java.awt.Font("Time news roman", 0, 16));
lb3.setText("N măng sinh:");
lb7.setFont(new java.awt.Font("Time news roman", 0, 16));
lb7.setText(" i nĐ ệ tho i:");ại!!");
Trang 10dataTable.setModel(new DefaultTableModel(dataRecord, dataTitle));
Border border = BorderFactory.createLineBorder(Color.BLACK);
int row = dataTable.rowAtPoint(evt.getPoint());
// int col = dataTable.columnAtPoint(evt.getPoint());
Trang 12private JPanel pnBook = new JPanel();
private JTextField txtID = new JTextField();
private JTextField txtBookName = new JTextField();
private JTextField txtAuthor = new JTextField();
private JTextField txtPubCom = new JTextField();
private JTextField txtBookSelf = new JTextField();
private JTextField txtCost = new JTextField();
private JButton btAdd = new JButton("Thêm");
private JButton btFix = new JButton("S a");ửa");
private JButton btDel = new JButton("Xóa");
private JButton btLoad = new JButton("Load");
private JButton btReset = new JButton("Reset");
private JButton btSearch = new JButton("Tìm Ki m");ết
private JTable dataTable = new JTable();
private DefaultTableModel tableModel = new DefaultTableModel();
private Vector dataRecord = new Vector();
private Vector dataTitle = new Vector();
Trang 13JLabel lb2 = new JLabel();
lb6.setFont(new java.awt.Font("Time news roman", 0, 16));
lb6.setText("Đơ Giá:");n
Trang 14dataTable.setModel(new DefaultTableModel(dataRecord, dataTitle));
Border border = BorderFactory.createLineBorder(Color.BLACK);
Trang 16class tabBorrow implements ActionListener
{
private JPanel pnBorrow = new JPanel();
private JTextField txtIDReader = new JTextField();
private JTextField txtIDBook = new JTextField();
private JTextField txtBorrowDate = new JTextField();
private JTextField txtReturnDate = new JTextField();
private JTextField txtBRMoney = new JTextField();
private JButton btAdd = new JButton("Thêm");
private JButton btFix = new JButton("S a");ửa");
private JButton btDel = new JButton("Xóa");
private JButton btLoad = new JButton("Load");
private JButton btReset = new JButton("Reset");
private JButton btSearch = new JButton("Tìm Ki m");ết
private JTable dataTable = new JTable();
private DefaultTableModel tableModel = new DefaultTableModel();
private Vector dataRecord = new Vector();
private Vector dataTitle = new Vector();
public JPanel createBorrow()
lb3.setFont(new java.awt.Font("Time news roman", 0, 16));
lb3.setText("Ng yài mượnn:");
Trang 17private JTable createDataTab()
dataTable.setModel(new DefaultTableModel(dataRecord, dataTitle));
Border border = BorderFactory.createLineBorder(Color.BLACK);
Trang 19class tabSearch implements ActionListener
{
private JPanel pnSearch = new JPanel();
private JTextField txtSearch = new JTextField();
private JButton btSearch = new JButton("Tìm ki m");ết
private JTable dataTable = new JTable();
private DefaultTableModel tableModel = new DefaultTableModel();
private Vector dataRecord = new Vector();
private Vector dataTitle = new Vector();
dataTable.setModel(new DefaultTableModel(dataRecord, dataTitle));
Border border = BorderFactory.createLineBorder(Color.BLACK);
String ret = null, cmd1;
cmd1 = "Select MaBD From BanDoc Where TenBD = '"+txtSearch.getText()+"'";
String command = "Select MuonSach.MaSach, MuonSach.NgayMuon, MuonSach.NgayTr
a, MuonSach.GiaTien From MuonSach, BanDoc Where BanDoc.MaBD = '"+ret+"' And BanDoc.MaBD = MuonSach.MaBD ";
Trang 204 Giao diện chương trình sau khi xây dựng
a Giao diện đăng nhập
b Giao diện tab bạn đọc
Trang 21c Giao diện tab sách
d Giao diện tab mượn sách
Trang 22e Giao diện tab tìm kiếm
KẾT LUẬN
Kết quả đạt được:
- Đã biết xây dựng một hệ thống cơ bản bằng ngôn ngữ Java và
có kết nói cơ sở dữ liệu
Đã thiết kế và xây dựng được đầy đử các chức năng cơ bản của hệ thống
- Đã có cơ sở dữ liệu cho hệ thống
- Đã có giao diện cho người dùng
Hướng phát triển
- Tiếp tục nghiên cứu và phát triển phần mềm hoàn thiện hơn nữa và sửa chữa những sai xót
Trang 23- Tiếp tục nghiên cứu để làm cho phầm mềm thêm có nhiều tính năng hơn
- Tiếp tục phát triển giao diện để tăng trải nghiệm người dùng, không làm người dùng nhàm chán với sản phẩm
Trang 24DANH MỤC TÀI LIỆU THAM KHẢO
Giáo trình ngôn ngữ lập trình Java – Đại học công nghệ thông tin
https://stackoverflow.com
https://vietjack.com
https://wikipedia.org
https://daynhauhoc.com