Java课程设计-文档相似性检查系统(完整)测试版
来源:互联网 发布:linux 打印内核 编辑:程序博客网 时间:2024/05/01 02:43
本版本文档相似性系统存在不足:比较相似率比较高,比较效果不太明显。有些doc文档读取出现报错 问题!!
算法还有待完善。。。会加强探究,解决问题。
请耐心等候
import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.text.DecimalFormat;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;@SuppressWarnings("serial")public class Jframe extends JFrame implements ActionListener {/*********** * 定义按钮、文本框、文本域、滚动条、 * 文件选择对话框、 * *************/static JButton jb1;static JTextField jtf1;static JButton jb2;static JTextField jtf2;static JButton jb3;static JTextField jtf3;static JTextArea jta;JScrollPane jsp;JFrame jf;static JFileChooser filechoose;static File file;public static String path1;public static String path2;static String text2;static String text3;//定义一个数字格式化对象,格式化模板为".00",即保留2位小数.static DecimalFormat df = new DecimalFormat( "0.00 ");public Jframe() {init();}public void init() {/********** * 实例化JFrame框架、按钮、文本框 * 文本域、滚动条 **********/jf = new JFrame("文件相似度比较");JPanel jpanel = new JPanel();jpanel.setLayout(new GridLayout(3, 3, 5, 5));jb1 = new JButton("选择文件1");jtf1 = new JTextField(10);jb2 = new JButton("选择文件2");jtf2 = new JTextField(10);jb3 = new JButton("比较文件夹所有文件");jtf3 = new JTextField(10);jta = new JTextArea(100, 35);jta.setLineWrap(true);jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);jpanel.add(jb1); //把按钮与文本框添加到jpaneljpanel.add(jtf1);jpanel.add(jb2);jpanel.add(jtf2);jpanel.add(jb3);jpanel.add(jtf3);JPanel jparea = new JPanel();jparea.add(jsp); //把滚动条添加到面板jpareajb1.addActionListener(this); //为按钮增添监听器jb2.addActionListener(this);jb3.addActionListener(this);jf.setLayout(new BorderLayout());jf.add(jpanel, "North"); //把面板jpanel与面板jparea添加到JFrame框架jf.add(jparea, "Center");//jf.add(jsp); //把滚动条加到JFrame框架jf.setBackground(Color.white);jf.setSize(350, 400);jf.setVisible(true);jf.setLocation(650, 350);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubfilechoose = new JFileChooser(); //实例化文件选择对话框@SuppressWarnings("unused")wordortxt world = new wordortxt(); //实例化类wordtxt@SuppressWarnings("unused")CosineSimilarAlgorithm jisuan = new CosineSimilarAlgorithm();//实例化类CosineSimilarAlgorithmif (e.getActionCommand().equals("选择文件1")) { //实现按钮监听事件//文件选择方式为文件和文件夹filechoose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);filechoose.showOpenDialog(null); //弹出文件选择对话框file = filechoose.getSelectedFile();if (file != null) { //判断选择是否为空if (file.isFile()) { //判断选择是否为文件path1 = file.getAbsolutePath(); //获得选择文件路径jtf1.setText(path1);text2 = judge(path1); //调用judge()方法}}}if (e.getActionCommand().equals("选择文件2")) { //实现按钮监听事件filechoose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);filechoose.showOpenDialog(null);file = filechoose.getSelectedFile();if (file != null) {if (file.isFile()) {path2 = file.getAbsolutePath();jtf2.setText(path2);text3 = judge(path2);double value = CosineSimilarAlgorithm.getSimilarity(text2, text3);jta.append("相似度:" + df.format(value*100) + "%" + "\n");}}}if (e.getActionCommand().equals("比较文件夹所有文件")) { //实现按钮监听事件filechoose.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);filechoose.showOpenDialog(null);file = filechoose.getSelectedFile();if (file != null) {if (file.isDirectory()) { //判断选择是否为文件夹getFile1();}}}}public static void getFile1() {int j, i;String path = file.getAbsolutePath();File[] f = file.listFiles(); //获得文件夹下的所有文件jtf3.setText(path);String[] temp = new String[f.length]; System.out.println("文件个数" + f.length);for (i = 0; i < temp.length; i++) {temp[i] = String.valueOf(f[i].getAbsolutePath()); //循环把文件路径保存到数组temp[]text2 = judge(temp[i]); //调用judge()方法返回字符串text2String nafile1 = f[i].getName(); //获得文件名//System.out.println(temp[i]);for (j = i + 1; j < temp.length; j++) { //循环获得下一个文件与temp[i]比较temp[j] = String.valueOf(f[j].getAbsolutePath());String nafile2 = f[j].getName();text3 = judge(temp[j]);double value = CosineSimilarAlgorithm.getSimilarity(text2, text3);if(value > 0.7){ //把相似度大于0.7的文件输出到文本域jta.append("相似度:" + " " + nafile1 + " 与 " + " " +nafile2 + " "+df.format(value*100)+ "%"+"\n");}}}}public static String judge(String str) { //判断文件是否为doc、txt文本、或者PDF并返回一个字符串String text = null;if (str.endsWith("doc")) {try {text = wordortxt.readDoc(str);} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}} if (str.endsWith("txt")) {try {text = wordortxt.readtxt(str);} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}else if (str.endsWith("pdf")) {try {text = wordortxt.readPDF(str);} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}return text;}}
0 0
- Java课程设计-文档相似性检查系统(完整)测试版
- Java课程设计-文档相似性检查系统-文档输出字符串类
- Java课程设计-文档相似性检查系统-字符串中文分词类
- 【学生研究课题】文档相似性检测系统(作业查重)
- 《面向对象程序设计》课程设计报告 题目:《记忆测试系统》课程设计
- 课程设计(工资管理系统)
- 点菜系统(课程设计)
- JAVA JDBC实现的职工管理系统(Console版)(期中java课程设计)
- Java课程设计-学籍信息管理系统
- 计算文档相似性算法(一)
- java版 仿qq代码 完整源码 (已测试)
- 初学java 课程设计ATM机 简易系统(卡片布局)
- 考试系统(超简版)-----大二上java课程设计
- [Java]数据结构课程设计:迷宫老鼠2.0(完整项目代码与设计报告)
- java课程设计(计算器)
- 推荐系统-文本相似性计算(1)
- 推荐系统-文本相似性计算(2)
- 推荐系统-文本相似性计算(3)
- 烧开水理论——证明自己存在的三个过程
- 黑马程序员--Java学习257K面试题之银行业务系统
- 黑马程序员-java类-java构造方法-java类数组
- 关键字的秘密
- POJ2395 Out of Hay 最小生成树
- Java课程设计-文档相似性检查系统(完整)测试版
- 海量数据处理算法—Bloom Filter
- UVALive 6469 Deranged Exams
- 盗号原理
- 福建省队集训被虐记——DAY3
- HDU1394线段树单点更新
- hdu 1051 Wooden Sticks
- 黑马程序员-java-类,java内部类-java构造方法-案例
- Rotate Image