Tổng quan các công nghệ sử dụng Trong project lần này nhóm chúng em đã sử dụng công nghệ : Java và SQL - Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong nh
Trang 1NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── *
───────
BÁO CÁO BÀI TẬP LỚN
MÔN HỌC: NHẬP MÔN JAVA
CHƯƠNG TRÌNH QUẢN LÍ CÁC TÀI
LIỆU TRONG THƯ VIỆN
Sinh viên thực hiện : Phạm Tuấn Hưng
Nguyễn Thái An
Đỗ Văn Vũ
Lớp : IT3670Q_117849 – K64 Giáo viên hướng dẫn : TS TRẦN HẢI ANH
Trang 2Hà Nội, tháng 12 năm 2020
MỤC LỤC
Mục lục……….2
Lời nói đầu……… 3
CHƯƠNG 1 GIỚI THIỆU CHUNG 6
1.1 Đặt vấn đề 6
1.2 Tổng quan các công nghệ sử dụng 6
1.3 Mục tiêu đặt ra 6
CHƯƠNG 2 CÔNG NGHỆ SỬ DỤNG 7
2.1 Công nghệ Java 7
2.1.1 Giới thiệu chung 7
2.1.2 Mô tả 7
2.2 Công nghệ SQL 8
CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH 10
3.1 Xây dựng chương trình 10
3.1.1 Các lớp của chương trình 10
1 Lớp Document 10
2 Lớp DocumentUI 10
3.1.2 Các tương tác 11
1 Kết nối và ngắt kết nối với database 11
2 Phương thức thực thi câu truy vấn khi nhấn vào Button 12
3 Button “Add” 13
4 Button “Update” 14
5 Button “Delete” 15
6 Button “Clear” 16
7 Hiển thị dữ liệu lên Table 16
8 Tìm kiếm dữ liệu 17
3.2 Kết quả chương trình 19
3.3 Kết quả thử nghiệm 21
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 22
Tài liệu tham khảo……….…22
Phụ lục………23
Trang 3LỜI NÓI ĐẦU
Việc ứng dụng máy tính để quản lý thông tin đã phát triển mạnh ở các nước tiêntiến từ những thập niên 70 Còn ở Nước ta hiện nay, vấn đề áp dụng Tin học để xử lýthông tin trong công tác quản lý đã trở thành nhu cầu bức thiết, nhất là trong thời đại
"mở cửa" với các nước khác trên thế giới
Hiện nay, việc quản lý tài liệu trong thư viện là một vấn đề hết sức cần thiết.Việc Tin học hóa hệ thống quản lí tài liệu góp phần không nhỏ vào quá trình quản lýcủa tài liệu trong trường
Sau khi khảo sát tại trường Đại học Bách Khoa Hà Nội, nhóm chúng em đã cùngnhau quyết định phân tích và thiết kế cho phần quản lí các tài liệu trong thư viện củatrường Số tài liệu của trường cũng đang dần tăng lên do vậy nhu cầu Tin học hóa hoàntoàn về hệ thống quản lí thư viện đang là một vấn đề khá cấp thiết Đó cũng là lý do mànhóm chúng em chọn đề tài này
Để hoàn thành được bài tập lớn này, nhóm chúng em xin được gửi lời cảm ơnchân thành đến thầy giáo hướng dẫn đề tài Thầy Trần Hải Anh, Giảng viên Viện Côngnghệ Thông tin và Truyền thông, Trường Đại học Bách Khoa Hà Nội - đã hết lòng giúp
đỡ, hướng dẫn, chỉ dạy tận tình để nhóm em hoàn thành được đề tài này
Hà Nội, tháng 12 năm 2020
Nhóm 2.2
Phạm Tuấn Hưng Nguyễn Thái An
Đỗ Văn Vũ
Trang 4PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
STT Họ tên MSSV Công việc đóng Thời gian Mức Tỉ lệ
góp thực hiện độ đóng góp
công việc hoàn
thành
chương trình,thiết kế database,kết nối chươngtrình vớidatabase
trình
3 Đỗ Văn Vũ 20198276 Lên ý tưởng giao 1 ngày 100% 20%
diện
Trang 5CHƯƠNG 1 GIỚI THIỆU CHUNG
1.1 Đặt vấn đề
Trong “chương trình quản lí các tài liệu trong thư viện” sẽ có các chức năng
thêm,sửa,xóa, tìm kiếm các tài liệu trong thư viện Sau nhiều lần trao đổi, gặp mặt với thầy Trần Hải Anh, nhóm chúng em đã có thể hiểu được những điều mình cần phải làm
và phân chia công việc cho từng thành viên trong nhóm
1.2 Tổng quan các công nghệ sử dụng
Trong project lần này nhóm chúng em đã sử dụng công nghệ : Java và SQL
- Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong
những năm cuối thế kỉ 20, đầu thế kỉ 21 Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong ngành phần mềm
Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau
- SQL được sử dụng trong các ngôn ngữ quản lý cơ sở dữ liệu (CSDL) và chạy
trên máy đơn lẻ Do sự phát triển nhanh chóng của nhu cầu xây dựng những CSDL lớn theo
mô hình khách/chủ (Client/Server), nhiều phần mềm sử dụng ngôn ngữ SQL đã ra đời mà điển hình là MS SQL Server, Oracle, Sybase
1.3 Mục tiêu đặt ra
- Hoàn thành chương trình “quản lí các tài liệu trong thư viện ”
- Các thành viên trong nhóm hiểu và sử dụng tốt 2 công nghệ : Java và SQL
- Nâng cao kĩ năng làm việc nhóm
- Nâng cao khả năng tìm kiếm, học hỏi
Trang 6CHƯƠNG 2 CÔNG NGHỆ SỬ DỤNG
2.1 Công nghệ Java
2.1.1 Giới thiệu chung
Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong những
năm cuối thế kỉ 20, đầu thế kỉ 21 Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong ngành phần mềm Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau
2.1.2 Mô tả
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java,
bộ thông dịch có vai trò trung tâm
Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java
Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải
về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có
hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng vào trình duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi đó Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đãphát triển nó theo một hướng khác Hiện nay, công nghệ Java được chia làm ba bộ phận:
J2SE
Gồm các đặc tả, công cụ, API của nhân Java giúp phát triển các ứng dụng trên desktop
và định nghĩa các phần thuộc nhân của Java
J2EE
Gồm các đặc tả, công cụ, API mở rộng J2SE để phát triển các ứng dụng quy mô xí nghiệp, chủ yếu để chạy trên máy chủ (server) Bộ phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng Java để làm các ứng dụng web
Trang 7Ngày nay, khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển Nó bao gồm các bộ phận:
Máy ảo Java: JVM
Bộ công cụ phát triển: J2SDK
Các đặc tả chi tiết kĩ thuật (specifications)
Ngôn ngữ lập trình (programming language)
2.2 Công nghệ SQL
SQL : Giữa những năm 1970, một nhóm các nhà phát triển tại trung tâm nghiên cứu
của IBM tại San Jose phát triển hệ thống cơ sở dữ liệu "Hệ thống R" dựa trên mô hình của Codd Structured English Query Language, viết tắt là "SEQUEL" (tạm dịch là
"Ngôn ngữ truy vấn tiếng Anh có cấu trúc"), được thiết kế để quản lý và truy lục dữ liệu được lưu trữ trong Hệ thống R Sau này, tên viết tắt SEQUEL được rút gọn thành SQL để tránh việc tranh chấp nhãn hiệu (từ SEQUEL đã được một công ty máy bay của UK là Hawker-Siddeley đăng ký) Mặc dù SQL bị ảnh hưởng bởi công trình của tiến sĩ Codd nhưng nó không do tiến sĩ Codd thiết kế ra Ngôn ngữ SEQUEL được thiết kế bởi Donald D Chamberlin và Raymond F Boyce tại IBM, và khái niệm của
họ được phổ biến để tăng sự chú ý về SQL
Phiên bản cơ sở dữ liệu quan hệ phi thương mại, không hỗ trợ SQL đầu tiên được phát triển năm 1974.(Ingres from U.C Berkeley.)
Năm 1978, việc thử nghiệm phương pháp được khởi đầu tại một cơ sở thử nghiệm của khách hàng Cuộc thử nghiệm đã chứng minh được sự có ích và tính thực tiễn của hệ thống và đã chứng tỏ sự thành công của IBM Dựa vào kết quả đó, IBM bắt đầu phát triển các sản phẩm thương mại bổ sung thêm SQL dựa trên nguyên mẫu Hệ thống R bao gồm System/38 (Hệ thống/38) (được công bố năm 1978 và được thương mại hóa tháng 8 năm 1979, SQL/DS (được giới thiệu vào năm 1981) và DB2 (năm 1983)
Cùng thời điểm đó Relational Software, Inc (bây giờ là Oracle Corporation) đã nhậnthấy tiềm năng của những khái niệm được Chamberlin and Boyce đưa ra và đã pháttriển phiên bản Hệ quản trị cơ sở dự liệu quan hệ riêng của họ cho Navy, CIA và các tổchức khác Vào mùa hè năm 1979, Relational Software, Inc giới thiệu Oracle V2
(Phiên bản 2), phiên bản thương mại đầu tiên hỗ trợ SQL cho máy tính VAX Oraclethường xuyên được nhắc tới một cách không nghiêm túc vì đã tấn công thị trườngcủa IBM trong 2 năm, nhưng việc táo bạo nhất trong quan hệ công chúng của họ là tấncông một phiên bản của IBM System/38 chỉ trong có vài tuần Tương lai của Oracle đãđược đảm bảo vì có sự quan tâm đáng kể của công chúng sau đó mới phát triển, trongkhi đã có nhiều phiên bản của các nhà cung cấp khác
IBM đã quá chậm trong việc phát triển SQL và các sản phẩm quan hệ, có lẽ vì ban đầu
nó không dùng được trong môi trường Unix và máy tính lớn (Mainframe), và họ sợ nó
sẽ làm giảm lợi nhuận thu được từ việc bán các sản phẩm cơ sở dữ liệu IMS (những sản phẩm dựa trên mô hình cơ sở dữ liệu định hướng chứ không phải cơ sở dữ liệu quan hệ) của mình Trong lúc đó, Oracle vẫn đang phát triển, IBM đang phát
Trang 8triển System/38, được mong đợi là hệ cơ sở dữ liệu quan hệ đầu tiên của họ Với năng lực và thiết kế tiên tiến của nó, người ta cho rằng nó có thể sẽ thay thế cho hệ thống Unix và máy tính lớn.
SQL được thừa nhận là tiêu chuẩn của ANSI (American National Standards Institute) vào năm 1986 và ISO (International Organization for Standardization) năm 1987 ANSI đã công bố cách phát âm chính thức của SQL là "ess kyoo ell", nhưng rất nhiều các chuyên gia cơ sở dữ liệu nói tiếng Anh vẫn gọi nó là sequel Một quan niệm sai khác cũng được phổ biến rộng rãi đó là "SQL" là chữ viết tắt của "Structured Query Language" (Ngôn ngữ truy vấn có cấu trúc) Thực tế không phải như vậy!
Trang 9CHƯƠNG 3 XÂY DỰNG CHƯƠNG TRÌNH
Trang 103.1.2 Các tương tác.
Lớp DocumentUI được khởi tạo sẽ hiển thị lên toàn bộ giao diện cho người dùng tương tác
1 Kết nối và ngắt kết nối với database
Đầu tiên, sẽ tạo phương thức kết nối đến database
Trang 11JOptionPane.showMessageDialog(nul, "ConnectionError" );
}}
Và tiếp đó là ngắt kết nối với database
2 Phương thức thực thi câu truy vấn khi nhấn vào Button
Trong giao diện gồm có 4 Button, khi nhấn vào 1 Button thì dữ liệu sẽ được lấy
từ các TextField hay lựa chọn dữ liệu trên Table sau đó tương tác với database để có thể thêm,sửa xóa và sau đó tất cả các dữ liệu sau khi được tương tác,sẽ thấy được những sự thay đổi mới trên Table Do đó, chúng em đã tạo phương thức thực hiện các câu truy vấn SQL khi nhấn vào Button
privatevoidexecuteSQlQuery(String query ,String message ){
}catch(Exception ex ){
ex printStackTrace();
} }
3 Button “Add”
Khi chọn vào Button “Add” các TextField sẽ được kiểm tra, nếu TextField nào rỗng sẽ được chương trình yêu cầu nhập dữ liệu Sau khi không còn TextField nào rỗng thì dữ liệu của tài liệu mới sẽ được lấy từ các TextField rồi thêm vào database và
Trang 12hiện lên thông báo thêm thành công Sau đó các TextField sẽ được làm mới để có thể thêm các dữ liệu khác vào Ở đây không cần TextField nhập ID mới vì trong database
đã tạo trường Into Increment cho ID để nó tự tạo ID và đảm bảo các ID không trùng nhau
if(tfType.getText().equals("")
JOptionPane.showMessageDialog(this,"Pleaseenter
documenttype");
elseif(tfNameDoc.getText().equals("")
JOptionPane.showMessageDialog(this, "Pleaseenter documentname" );
elseif(tfAuthor.getText().equals(""))
JOptionPane.showMessageDialog(this, "Pleaseenterauthor
name");
elseif(tfPublisher.getText().equals("")
JOptionPane.showMessageDialog(this,"Pleaseenter
publisher");
elseif(tfReleaseNumber.getText().equals("")
JOptionPane.showMessageDialog(this, "Pleaseenterrelease
Khi nhập dữ liệu vào TextField “Release Number”, chỉ có thể nhập số chứ không thể
kí tự là chữ Do đó, TextField này sẽ được bắt sự kiện keyTyped để chọn lọc
Trang 13download by : skknchat@gmail.com
Trang 14privatevoidsetDataOnTFWhenSelect(){
@Override
publicvoidmouseClicked(MouseEvent arg0 ){
tfSelectRow setText( i "" );
tfID setText( model getValueAt( i ,0).toString();
}
Và sau đó chỉ cần nhấn vào Button “Update”, dữ liệu sẽ được cập nhật lêndatabase Nếu chưa chọn vào dữ liệu nào của Table sẽ có thông cáo yêu cầu chọn dữliệu cần update Ở đây chúng em đã tạo 1 TextField để chứa thông tin ID và ẩn nó đi
và cũng không thể chỉnh sửa gì vào TextField này TextField có tác dụng lấy ID đểcập nhật dữ liệu có ID trùng với ID dữ liệu đã chọn trên Table
tfPublisher.getText()+ "',ReleaseNumber='" +tfReleaseNumber.getText()+ "'whereID="
+Integer.parseInt(tfID getText();
executeSQlQuery( query , "Updated" );
tfType setText( "" );
tfNameDoc setText( "" );
Trang 155 Button “Delete”
Khi muốn xóa một dữ liệu, chỉ cần chọn dữ liệu cần xóa ở Table và chọn Button
“Delete” Tương tự cập nhật thì xóa cũng cần dựa vào ID để xóa dữ liệu cần xóa.Nếu chưa chọn vào dữ liệu nào của Table sẽ có thông cáo yêu cầu chọn dữ liệu cần xóa
6 Button “Clear”
Khi không ưng ý với liệu đã nhập vào các TextField,có thể chọn Button “Clear”
để xóa tất cả dữ liệu đã nhập vào TextField
7 Hiển thị dữ liệu lên Table
Tất cả các dữ liệu sẽ được hiển thị lên Table Đầu tiên tất cả dữ liệu sẽ được lưuvào 1 ArrayList kiểu dữ liệu Document Kiểu dữ liệu Document chính là lớp
Document định nghĩa, gồm có :
Trang 16privateString type , documentName , author , publisher ;
privateintreleaseNumber ;
Hàm khitoởạcalpủớDocument
publicDocument(intiD ,String type ,String documentName ,String author ,String
publisher ,intreleaseNumber ){
this.iD =iD;
this.type=type;
this.documentName=documentName;
this.author=author;
this.publisher=publisher;
this.releaseNumber=releaseNumber;}
Các dữ liệu được lấy về từ database sẽ được lưu vào 1 ArrayList kiểu dữ liệu
intiD = rs getInt( "ID" );
String type = rs geString( "Type" );
String documentName = rs getString("DocumentName");
String author = rs getString("Author");
String publisher = rs geString("Publisher");
intreleaseNumber = rs getInt("ReleaseNumber");
Document document =new
Document( iD , type , documentName , author , publisher , releaseNumber );
listDoc add( document );
} disconnect();
}catch(Exception e ){
e printStackTrace();
}
returnlistDoc ; }
Và để hiển thị dữ liệu được lấy từ database DefaultTableModel sẽ thêm các dữ liệu kiểu Document vào để hiện thị lên Table
privatevoidshowDocInTable(){
ArrayList<Document>list;
list=getAlDocument();
for(Documentdocument:list){
model.addRow(document.toArray();
}}
Trang 17Khi model thêm các dữ liệu mới kiểu dữ liệu được thêm vào model sẽ là 1 mảngObject.Do đó,chúng em đã xây dựng phương thức toArray( ) ở lớp Document
Khi muốn tìm kiếm, chỉ cần nhập kí tự có liên quan đến dữ liệu cần tìm Kí tự sẽ
so sánh với các dữ liệu trong database, dữ liệu nào có kí tự giống với kí tự trongTextField tìm kiếm sẽ được hiển thị bất kể là ID,Type,Document Name,Author,Publisher, Release Đầu tiên, chúng em sẽ tạo 1 phương thức để tìm kiếm dữ liệu vàhiển thị lên Table
privatevoidfilDocJTable(String valueToSearch )
{ connect();
try{
String query = "select*from LibrarywhereID like'%" +
valueToSearch + "%'orTypelike'%" + valueToSearch + "%'orDocumentNamelike
'%" + valueToSearch + "%'orAuthorlike'%" + valueToSearch + "%'orPublisherlike '%" + valueToSearch + "%'orReleaseNumberlike'%"
+valueToSearch+"%'";
ResultSetrs=smt.executeQuery(query);
DefaultTableModelmodel=(DefaultTableModel)
}catch(SQLExceptione){
e.printStackTrace();
}