Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
541,38 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
****************************
BÁO CÁO PROJECT 1
Đề tài:
SO SÁNH VÀ KIỂM ĐỊNH NỘI DUNG
VĂN BẢN VỚI CƠ SỞ DỮ LIỆU CÓ SẴN
Giảng viên hướng dẫn: TS. Nguyễn Hữu Phát
Nhóm sinh viên thực hiện:
Họ Và Tên
Nguyễn Văn Huân
Tạ Đức Giang
Dư Quốc Hưng
MSSV
20101598
20101439
20103179
Lớp
ĐTVT 02 – K55
ĐTVT 01 – K55
CN 04 – K55
Hà Nội, 5-2013
LỜI NÓI ĐẦU
Trong những năm gần đây, lập trình hướng đối đượng đã trở lên gần gũi nhờ
sự ra đời liên tiếp của các ngôn ngữ lập trình. Sức mạnh của phương pháp lập trình
hướng đối tượng thể hiện ở chỗ khả năng mô hình hóa hệ thống dựa trên các đối
tượng thực tế, khả năng đóng gói và bảo vệ an toàn các dữ liệu, khả năng dùng lại
mã nguồn để tiết kiệm chi phí và tài nguyên. Đặc biệt, khả năng chia sẻ mã nguồn
trong cộng đồng lập trình viên chuyên nghiệp. Những điểm mạnh này hứa hẹn sẽ
thúc đẩy phát triển một môi trường lập trình tiên tiến cùng với nên công nghiệp lắp
ráp phần mềm với các thư viện có sẵn.
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU
1.1 Đặt vấn đề
Ngày nay, khoa học và công nghệ đang có sự phát triển vượt bậc, đặc biệt là
công nghệ thông tin nói chung cũng như internet nói riêng. Việc tìm kiếm thông tin,
tài liệu trên internet đã trở nên dễ dàng hơn bao giờ hết. Tuy nhiên, bên cạnh những
lợi ích mà nó mang lại, còn có nhiều bất cập nảy sinh. Trong đó, vấn đề ăn cắp bản
quyền là một vấn đề nhức nhối và làm đau đầu các nhà kiểm định. Nhằm đưa ra
phương án giải quyết vấn đề trên, nhóm chúng em đã nghiên cứu đề tài “So sánh và
kiểm định nội dung văn bản với cơ sở dữ liệu có sẵn”. Mục đích của đề tài nhằm
đưa ra giao diện trực quan giúp người dùng có thể dễ dàng nhận biết mức độ giống
nhau giữa hai văn bản, qua đó có thể đánh giá được nội dung văn bản có phải là sao
chép hay không.
Chúng em xin gửi lời chân thành cảm ơn tới TS. Nguyễn Hữu Phát đã hướng
dẫn, chỉ bảo tận tình và tạo điều kiện cho chúng em trong suốt quá trình thực hiện
đề tài.
Nhóm sinh viên thực hiện đề tài:
Nguyễn Văn Huân
Tạ Đức Giang
Dư Quốc Hưng
1.2 Mục tiêu của đề tài
Mục tiêu của đề tài là so sánh được mức độ giống nhau giữa các văn bản và
làm nổi bật chúng trên giao diện trực quan của người dùng. Đồng thời đưa ra tỉ lệ
phần trăm để đánh giá giá trị trên.
Từ đó , người quản lí có thể giải quyết được các vấn đề còn lại giúp việc xác
minh tính chính xác của văn bản gốc có bị sao chép hay ăn cắp bản quyền hay
không.
1.3 Giới hạn của đề tài
Do điều kiện thời gian và kinh nghiệm còn hạn chế, đề tài mới chỉ dừng lại ở
việc so sánh nội dung hai văn bản kích thước nhỏ, chưa triển khai được trên hệ
thống cơ sở dữ liệu lớn, chưa có khả năng đọc được nhiều định dạng văn bản khác
nhau. Cùng với đó là những bất cập khi chưa cải tiến lên được so sánh 2 văn bản
online.
CHƯƠNG 2: GIẢI PHÁP VÀ CÔNG CỤ
2.1 Tổng quan về ngôn ngữ lập trình Java
2.1.1 Java là gì?
Thập kỷ 90 chứng kiến một sự phát triển như vũ bão của mạng Internet, kèm
theo đó là vô vàn các ứng dụng trên các môi trường, hệ điều hành (OS) và các hệ xử
lý (CPU) khác nhau. Tuy nhiên có một điểm hạn chế lớn là người lập trình phải rất
vất vả khi chuyển đổi các ứng dụng của mình để các hệ thống khác có thể sử dụng
được.
Ngày 23/5/1995, công ty máy tính Sun Microsystems đã giới thiệu một công
cụ lập trình mới - ngôn ngữ Java - nhằm khắc phục những khó khăn đó. Đặc điểm
nổi bật nhất của Java là nó không phụ thuộc vào hệ điều hành và bộ xử lý. Điều này
cho phép một ứng dụng viết bằng Java có thể được thực hiện trên bất kỳ hệ điều
hành và hệ xử lý nào có hỗ trợ Java. Do vậy, người lập trình chỉ cần viết ứng dụng
bằng Java đúng một lần, sau đó có thể sử dụng ứng dụng này trên các hệ điều hành
khác nhau như Windows95, WindowsNT, Mac OS, Unix, theo phương châm:
"viết một lần, sử dụng ở bất kỳ đâu".
Có thể định nghĩa một cách chính xác hơn về Java: "là ngôn ngữ lập trình
hướng đối tượng, được thiết kế độc lập với hệ điều hành, cho phép người lập trình
viết chương trình một lần và có thể sử dụng tại bất kỳ đâu".
Không chỉ giới thiệu ngôn ngữ lập trình, Sun Microsystems còn đưa ra hàng
loạt công cụ hỗ trợ người lập trình phát triển các ứng dụng bằng Java, như Java
Developer Kit, JavaBeans, HotJava
Ngôn ngữ Java có cú pháp rất giống với ngôn ngữ C/C++ (là một ngôn ngữ
rất mạnh được dùng phổ biến hiện nay), tuy nhiên nó đã được thay đổi khá nhiều để
đáp ứng khả năng độc lập với hệ điều hành. Nền tảng của ngôn ngữ Java là các
class. Các class đóng vai trò như những đối tượng, người lập trình khi xây dựng ứng
dụng sẽ sử dụng một số class chuẩn của hệ thống, đồng thời có thể tự mình xây
dựng class khác đáp ứng yêu cầu công việc.
Java là ngôn ngữ dễ học, nó lược bớt những lệnh thừa và rườm rà của C/C++
để người lập trình chú trọng vào việc viết chương trình. Đồng thời, nó còn hạn chế
người lập trình không can thiệp quá sâu vào hệ thống.
Hiện nay Java được ứng dụng rất rộng rãi, chủ yếu là các ứng dụng được viết
trên Internet nhằm khai thác tối đa khả năng của nó trong lĩnh vực viễn thông,
truyền hình, mạng, và các máy tính đơn lẻ. Hiện tại các ứng dụng viết bằng Java khi
thực hiện còn chậm hơn so với các ứng dụng được xây dựng thông thường, tuy
nhiên hầu hết các nhà phát triển phần mềm đều cho rằng tốc độ sẽ được cải thiện và
Java sẽ là ngôn ngữ lập trình của tương lai.
Có thể nói rằng sự ra đời của Java đánh dấu một cuộc cách mạng mới trong
lĩnh vực Công Nghệ Thông Tin. Cuộc cách mạng này kéo theo một loạt những thay
đổi: các ứng dụng dần được thay thế bằng Java, các thế hệ máy tính sử dụng những
vi mạch có khả năng hỗ trợ Java, Làm quen với Java sẽ giúp chúng ta tiếp cận
được với những công nghệ mới nhất của Công Nghệ Thông Tin.
2.1.2 Các đặc điểm của Java
* Làm thế nào để viết chương trình bằng Java?
Như đã nói ở trên, Java rất giống C/C++. Trên thị trường hiện nay có nhiều
bộ công cụ lập trình cho Java: Java Workshop của Sun Microsystems, Visual J của
Microsoft, Symantec Cafe của Symantec Tất cả đều có điểm chung là hỗ trợ tối đa
cho người lập trình. Sun Microsystems còn đưa ra khá nhiều phần mềm cung cấp
sẵn các đối tượng class để người lập trình sử dụng.
Ngôn ngữ Java xây dựng trên nền tảng các đối tượng (class). Toàn bộ
chương trình được viết bao gồm nhiều đối tượng, mỗi đối tượng được lưu vào một
tập tin có phần mở rộng là .java.
Để dịch Java, lập trình viên sử dụng chương trình Java đi kèm theo bất kỳ
công cụ lập trình nào.
* Môi trường hoạt động:
Đặc điểm nổi bật nhất của Java là độc lập với hệ điều hành và hệ xử lý. Điều
này cho phép Java có thể hoạt động trên bất kỳ môi trường nào. Với ưu thế này,
Java đang dần thâm nhập vào rất nhiều lĩnh vực khác nhau trong thế giới Internet.
* Khả năng xây dựng ứng dụng:
Các ứng dụng Java hiển nhiên phải được xây dựng dựa trên ngôn ngữ Java,
do đó nó phụ thuộc rất nhiều vào sự hỗ trợ từ Sun Microsystems và các hãng cung
cấp thư viện cho lập trình Java. Một điểm hạn chế nữa của Java là tốc độ. Do phải
hoạt động thông qua máy tính ảo JVM nên tốc độ thực hiện ứng dụng của Java khá
chậm.
* Phân loại:
Chương trình xây dựng bằng Java được chia làm hai loại: Java Applet và
Java Application.
Java Applet là các đối tượng được thực hiện trên trình duyệt Web. Khi thực
hiện trên các trình duyệt Web, Java Applet cũng tạo ra các hiệu ứng như một ứng
dụng bình thường, tuy nhiên các thông tin cho phép Java Applet thực hiện lại được
đưa từ các trang Web.
Java Application (Java App) là những ứng dụng độc lập, tương tự như những
chương trình có đuôi .EXE hay đuôi .COM thông thường. Việc thực hiện Java App
đơn giản hơn Java Applet vì chúng không cần phải thông qua trình duyệt Web.
Java Virtual Machine (JVM) đóng vai trò rất quan trọng để các ứng dụng
Java có thể thực hiện được. Nó hoạt động như một máy tính ảo, cũng có bộ lệnh,
cấu trúc dữ liệu, bộ nhớ, Khi các ứng dụng Java (sau khi dịch, các ứng dụng viết
bằng Java sẽ có phần mở rộng là class) thực hiện, JVM tiến hành phân tích mã trong
class đó thành bộ lệnh của JVM rồi thực hiện giống như máy tính PC thao tác với
các ứng dụng thông thường.
Bởi vậy, các class sau khi dịch có thể được thực hiện trên bất kỳ hệ điều
hành nào thông qua máy tính ảo JVM.
Hiện tại, JVM được xây dựng cho hầu hết các hệ điều hành và hệ xử lý hiện
có, điều này có nghĩa là các ứng dụng viết bằng Java có đầy đủ điều kiện để phát
triển.
2.1.3 Các hướng phát triển ứng dụng Java
2.1.3.1 Java và ứng dụng Console
Ứng dụng Console là ứng dụng nhập xuất ở chế độ văn bản tương tự như
màn hình Console của hệ điều hành MS-DOS. Lọai chương trình ứng dụng này
thích hợp với những ai bước đầu làm quen với ngôn ngữ lập trình java. Các ứng
dụng kiểu Console thường được dùng để minh họa các ví dụ cơ bản liên quan đến
cú pháp ngôn ngữ, các thuật toán, và các chương trình ứng dụng không cần thiết
đến giao diện người dùng đồ họa.
2.1.3.2 Java và phát triển ứng dụng Desktop dùng AWT và JFC.
Việc phát triển các chương trình ứng dụng có giao diện người dùng đồ họa
trực quan giống như những chương trình được viết dùng ngôn ngữ lập trình VC++
hay Visual Basic đã được Java giải quyết bằng thư viện AWT và JFC. JFC là thư
viện rất phong phú và hỗ trợ mạnh mẽ hơn nhiều so với AWT. JFC giúp cho người
lập trình có thể tạo ra một giao diện trực quan của bất kỳ ứng dụng nào. Liên quan
đến việc phát triển các ứng dụng có giao diện người dùng đồ họa trực quan chúng ta
sẽ tìm hiểu trong Project này.
2.2 Xủ lý chuỗi và văn bản trong Java
Java cung cấp một số phương thức rất mạnh để xử lý chuỗi ký tự:
* Khai báo và khởi tạo:
- Khai báo một xâu rỗng
Ví dụ: String str1 = new String();
- Khai báo và khởi tạo một xâu bằng một chuỗi cho trước:
Ví dụ: String str2 = new String(“Hello World”);
- Khai báo và khởi tạo một xâu bằng một mảng kí tự cho trước:
Ví dụ: char ch[ ] = {‘a’,’b’,’c’,’d’,’e’};
String str3=new String[ch];
- Khai báo và khởi tạo một xâu bằng cách chọn một vài kí tự trong một mảng
kí tự cho trước:
Ví dụ: char ch[ ] = {‘a’,’b’,’c’,’d’,’e’};
String str4 = new String[ch,0,2];
Kết quả str4 là xâu “ab”, vì khởi tạo này sẽ khởi tạo xâu str4 là lấy 2
kí tự từ vị trí thứ 0.
* Thao tác nối chuỗi:
- Cộng 2 chuỗi bằng toán tử “+”
Ví dụ: String str1 = new String(“Hello World”);
System.out.printf(“Toi muon noi ”+str1);
Kết quả trên màn hình: “Toi muon noi Hello World”
Chú ý: Java có khả năng tự chuyển bất cứ dữ liệu kiểu số nào khi cộng vào
String.
Ví dụ: int n=100;
Float m=100.123;
System.out.printf(“So nguyen la ”+n+”, so thuc la “+m);
Kết quả sẽ in ra chuỗi số: “So nguyen la 100, so thuc la 100.123”.
Khi cộng chuỗi bằng dấu cộng, kết quả sẽ đưa ra bằng cách nỗi 2
chuỗi vào vị trí cuối cùng của chuỗi đầu tiên.
Cách nối chuỗi này thường được sử dụng khi in ra màn hình hoặc
chuyển kiểu dữ liệu số sang String.
- Nối 2 chuỗi bằng phương thức concat( )
Khác với việc nối chuỗi bằng dấu cộng là nối 2 chuỗi tại vị trí cuối cùng của
chuỗi đầu tiên.thay vào đó phương thức này sẽ trả về một chuỗi mới.
Ví dụ: String str1,str2,str3;
str1 = ”Do An”;
str2 = ”So Sanh Van Ban”;
str3 = str1.concat(str2);
Kết quả là str3 sẽ bằng “Do An So Sanh Van Ban”
* Các hàm xử lí với chuỗi trong Java:
- Hàm trả về chuỗi con: substring
Ví dụ: String str1 = new String(“Do An I”);
String str2 = str1.substring(0,2);
Kết quả là str2 bằng “Do”, có nghĩa là phương thức substring sẽ lấy 2 kí tự
trong xâu str1 bắt đầu từ kí tự thứ 0.
[...]... tại Thời gian load file văn bản trong cơ sở dữ liệu gốc có dung lượng lớn là khá lâu dẫn tới bị đơ máy trong khoảng thời gian load khiến người dùng mất một khoảng thời gian chờ đợi Sau khi load xong file văn bản gốc thì phần mềm chạy bình thường và đưa ra kết quả so sánh lên giao diện Đó là một nhược điểm cần cải thiện cho phần mềm này mà chúng em đang tìm cách khắc phục Nhưng do thời gian có hạn và... String(“abcd”); String str2 = new String(“cd”); int n = str1.indexOf(str2); Kết quả là n = 2 - Hàm kiểm tra xem 1 chuỗi có bắt đầu 1 chuỗi khác hay không: startsWith() Ví dụ: String str1 = DoAn I”; String str2 = Do ; boolean k = str1.startsWith(str2); Kết quả là k = true - Hàm kiểm tra xem 1 chuỗi có kết thúc 1 chuỗi khác không: endsWith() Tương tự như hàm startsWith() - Hàm trả về 1 chuỗi được rút ra...- Hàm trả về độ dài chuỗi: length Ví dụ: String str1 = new String( DoAn I”); int n = str1.length(); Kết quả n = 7, nghĩa là phương thức length() sẽ trả về độ dài xâu kí tự - Hàm trả về kí tự ở vị trí bất kỳ: charAt Ví dụ: String str1 = new String( DoAn I”); char ch = str1.charAt(1); Kết quả là ch = ’o’ nghĩa là phương thức charAt(1) sẽ trả về kí tự thứ 1 tính... phục được, chúng em mong nhận được sự chỉ bảo và giúp đỡ của thầy Để từ đó chúng em hoàn thiện đề tài này được tốt hơn, khắc phục được những khuyết điểm và hạn chế đang tồn tại KẾT LUẬN Việc xử lí xâu chuỗi đã và đang là vấn đề hết sức quan trọng nói riêng cũng như Java và các ngôn ngữ lập trình khác nói chung Việc nghiên cứu và mô phỏng phần mềm trên đã phần nào giải quyết bài toán trên Để đi xâu về... December 1995 Oracle's Developer Resources for Java Technology Oracle's Beginner's tutorial for Java SE Programming A Brief History of the Green Project Patrick Naughton, The Long Strange Trip to Java, March 18, 1996 W Kahan and Joseph D Darcy, How Java's Floating-Point Hurts Everyone Everywhere, University of California, Berkeley 9 Shahrooz Feizabadi, A history of Java in: Marc Abrams, ed., World Wide... String str1 = String.copyValueOf(2,2); Kết quả str1 = ”cd”, nghĩa là xâu str1 được rút ra từ mảng ch bằng cách lấy 2 phần tử của mảng và lấy từ vị trí thứ 2 - Hàm trả chuyển chuỗi sang chữ hoa: toUpperCase() - Hàm trả chuyển chuỗi sang chữ thường: toLowerCase() CHƯƠNG 3: SO SÁNH NỘI DUNG HAI VĂN BẢN 3.1 Sơ đồ khối của hệ thống 3.2 Các hàm thực hiện 3.2.1 Hàm nhập và hiển thị Cho phép người dùng nhập vào... tăng thêm độ tin cậy trong việc thẩm định Sau khi bổ xung thêm người dùng chỉ cần nhấn nút “ So sánh” là sẽ có kết quả Kết quả đó sẽ được bảo đảm an toàn và không thể thay đổi được bởi bất cứ ai Với file văn bản có kích thước vừa và nhỏ thì phần mềm chạy nhanh và cho kết quả tin cậy Phần mềm có giao diện đơn giản thân thiện với người dùng Vì là phần mềm được viết trên ngôn ngữ Java nên nó có thể chạy... nó hiện lên văn bản gốc Đề tài mới chỉ thực hiện ở mức độ mô phỏng trên công cụ netbean, cần được phát triển để áp dụng vào các phần mềm tối ưu khác TÀI LIỆU THAM KHẢO 1 2 3 4 5 6 7 8 Michael O'Connell, Java: The Inside Story, SunWord, July 1995 Patrick Naughton, Java Was Strongly Influenced by Objective-C David Bank The Java saga Wired Magazine, 30 (12), December 1995 Oracle's Developer Resources... điều hành khác nhau chỉ cần máy tính có cài đặt máy ảo Java (Java Virtual Machine) Phần mềm này không yêu cầu hệ thống có cấu hình cao nên người dùng có thể yên tâm sử dụng Qua môn học này, chúng em đã có thêm kiến thức lập trình trên ngôn ngữ Java Tư duy lập trình được nâng cao lên Kĩ năng lập trình được cải thiện Đồng thời dưới sự hướng dẫn của thầy và làm việc theo nhóm để thực hiện đề tài này thì... Kết quả là ch = ’o’ nghĩa là phương thức charAt(1) sẽ trả về kí tự thứ 1 tính từ vị trí thứ 0 trong xâu str1 - Hàm so sánh 2 chuỗi: equals Phương thức này so sánh 2 chuỗi, kết quả trả về có kiểu Boolean - Hàm so sánh 2 chuỗi lần lượt thứ tự từng ký tự: compareTo Ví dụ: int a = str1.compareTo(str2); a = 0 nếu str2 = str1 a > 0 nếu str2 > str1 a < 0 nếu str2 < str1 - Hàm chuyển chuỗi thành mảng ký tự: . str1,str2,str3;
str1 = Do An ;
str2 = ”So Sanh Van Ban”;
str3 = str1.concat(str2);
Kết quả là str3 sẽ bằng Do An So Sanh Van Ban”
* Các hàm xử lí với. 1 chuỗi khác hay không: startsWith()
Ví dụ: String str1 = Do An I”;
String str2 = Do ;
boolean k = str1.startsWith(str2);
Kết quả là k = true.
- Hàm kiểm