为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

敏感词汇分析

2017-09-19 16页 doc 217KB 23阅读

用户头像

is_153723

暂无简介

举报
敏感词汇分析软 件 学 院 课程设计报告书 课程名称        面向对象程序设计                          设计题目        敏感词汇分析程序                          专业班级        软件工程10- 班                          学    号          102001                            姓    名                                            指导教师  ...
敏感词汇分析
软 件 学 院 课程报告书 课程名称        面向对象程序设计                          设计题目        敏感词汇分析程序                          专业班级        软件工程10- 班                          学    号          102001                            姓    名                                            指导教师                                            2012年6月 目录 1 设计时间    3 2 设计目的    3 3设计任务    3 4 设计内容    3 4.1需求分析    3 4.1.1问题描述    3 4.1.2基本要求    3 4.2总体设计    3 4.2.1包的描述(无)    4 4.2.2 类的描述    4 4.2.3类之间的关系    4 4.3详细设计    5 4.3.1类图    5 4.3.2页面设计    6 4.4测试与分析    6 4.5 程序代码    6 5与展望    6 参考文献    6 课程设计成绩评定    6 1 设计时间 2012年6月11日——2012年6月15日 2 设计目的 《Java6程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。 3设计任务 实现敏感词汇分析并计数。 4 设计内容 4.1需求分析 现在各大软件公司都有自己的、各种高级敏感词汇的程序,但是这些公司都有自己的版权,我们也不可能得到这些源代码!而且这些公司的程序也相当复杂,仅从日常应用方面来说,对于初学java的我们也无法理解,就需要我们开发一个简单易懂的敏感词汇分析程序。 4.1.1问题描述 在规定的sentive.txt文本中创建敏感词汇库,即把要分析的敏感词汇写入,然后选择分析文档,进行分析。 4.1.2基本要求 (1)使用图形用户界面实现。 (2)任选一个文本文件,分析该文件,如果存在敏感词汇,报告每个词出现的次数。 (3)敏感词汇保存在sentive.txt文件中,每个词占一行,至少设置10个敏感词汇。 (4)系统使用的GUI组件不得少于5种,越全面越好,但要合适(和谐界面)。 4.2总体设计 这个程序是图形界面、流式布局、输入、输出流、包以及文件等技术的综合应用。考虑到程序的结构和易用性等各种性能,选择了awt组件进行窗口以及对话框的实现。在运行程序的时候,在规定的sentive.txt文本中创建敏感词汇库,即把要分析的敏感词汇写入,然后选择分析文档,进行分析。 文本选择的实现:在进行词汇分析之前要进行文本的选择,这期间通过查阅各种相关参考文献以及java中的帮助文档,用到了JfileChooser组件来实现对任意文本的选择,从而能顺利的选择各种文件,同时利用try,catch语句进行异常捕获。 词汇分析过程的实现:利用了字符文件流FileReader和FileWriter类来实现文本的读入和输出,利用RandomAccessFile来实现对敏感词汇的过滤分析,最终达到了任务要求的分析功能。 本程序首先创建了一个主类实现窗口以及主方法的调用,设置了4个默认属性类完成相关的功能性的各项功能。在主类中,实现了对窗口对象的实例化,注册了主方法,从而生成了调用其他默认属性类及对象和方法的接口,构成了整个程序的中间部分。其余的属性类也定义了各种方法和实例对象,分别完成了捕获异常,词汇分析,文件选择等功能。 4.2.1包的描述(无) 4.2.2 类的描述 FileTextChecker主类 IntString默认属性类,完成字符计数功能 CFileChooser默认属性类,完成文本选择功能 CFileChooseLis默认属性类,完成文本选择功能中的异常处理 CAnalyzeLis默认属性类,完成敏感词汇的分析 4.2.3类之间的关系 主类 FileTextChecker IntString默认属性类,完成字符计数功能。 CFileChooser默认属性类,完成文本选择功能。 CFileChooseLis默认属性类,完成文本选择功能中的异常处理。 CAnalyzeLis默认属性类,完成敏感词汇的分析。 4.3详细设计(参见4.5 程序代码) 4.3.1类图 类:FileTextChecker  IntString  CFileChooser CFileChooseLis  CAnalyzeLis 变量:       FileTextChecker:b1, b2, b3, l1, l2, f1, f2, p1, p10, P11, p12, p13, p14, num       IntString: num       CFileChooser: state, f       CFileChooseLis: f       CAnalyzeLis: analyzeF, dictionaryF, rst, window       方法: 1. 构造方法: FileTextChecker(),IntString(inti), CFileChooseLis(TextComponent rst) CAnalyzeLis(FileTextChecker w, TextComponent tcomp) 2. 方法: iniFrame(),getAnalyzeFile(),getDictionFile(),initFile() getNumber(),add(),accept(File f), choosedFile() actionPerformed(ActionEvent,e) actionPerformed(ActionEvent e), readTextFormFile(File f)                                       图2 4.3.2页面设计 4.4测试与分析 敏感词汇库: 待分析文档: 文件选择页面: 异常处理: 运行结果: 4.5 程序代码 import java.awt.*; import javax.swing.*; import java.io.*; import java.util.*; import java.awt.event.*; import java.beans.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class FileTextChecker extends JFrame {     Button b1 = new Button("...");     Button b2 = new Button("...");     Button b3 = new Button("开始分析敏感词汇");     Label l1 = new Label("请选择需要分析的文档:");     Label l2 = new Label("请选择敏感词汇库:");     TextField ph1 = new TextField(20);     TextField ph2 = new TextField(20);     TextArea area = new TextArea(5, 15);     File f1 = null;     File f2 = null;     public FileTextChecker() {         setTitle("敏感词汇分析程序");         setSize(250, 450);         setResizable(false);         setLocation(170, 200);         iniFrame();         setVisible(true);     }     void iniFrame() {         ph1.setEditable(false);         ph2.setEditable(false);         JScrollPane ps = new JScrollPane(area);         //add window listener         addWindowListener(new WindowAdapter() {             public void windowClosing(WindowEvent e) {                 System.exit(0);             }         });         // do layout         setLayout(new GridLayout(2 , 1));         Panel p1 = new Panel();         p1.setLayout(new GridLayout(5 , 1));         Panel p10 = new Panel();         Panel p11 = new Panel();         Panel p12 = new Panel();         Panel p13 = new Panel();         Panel p14 = new Panel();         p10.setLayout(new FlowLayout());         p11.setLayout(new FlowLayout());         p12.setLayout(new FlowLayout());         p13.setLayout(new FlowLayout());         p14.setLayout(new FlowLayout());         p10.add(l1);         p11.add(ph1); p11.add(b1);         p12.add(l2);         p13.add(ph2); p13.add(b2);         p14.add(b3);         p1.add(p10);         p1.add(p11);         p1.add(p12);         p1.add(p13);         p1.add(p14);         add(p1);         add(ps);         // add listener         b1.addActionListener(new CFileChooseLis(ph1));         b2.addActionListener(new CFileChooseLis(ph2));         initFile();            b3.addActionListener(new CAnalyzeLis(this, area));     }     public File getAnalyzeFile() {return f1;}     public File getDictionFile() {return f2;}     public void initFile() {         f1 = ph1.getText().equals("") ? null :             new File(ph1.getText());         f2 = ph2.getText().equals("") ? null :             new File(ph2.getText());     }     public static void main(String[] args) {         FileTextChecker f = new FileTextChecker();     } } class IntString extends Object {     int num = 0;     public IntString(int i) {num = i; }     public int getNumber() {return num;}     public void add() {num += 1;} } class CFileChooser extends JFileChooser {     // @override     public boolean accept(File f) {         if (f == null) return false;         if (f.isDirectory()) return true;         if (f.getAbsolutePath().endsWith(".txt"))             return true;         return false;}     public boolean choosedFile() {         int state = this.showOpenDialog(null);         File f = this.getSelectedFile();         if (accept(f) && state == JFileChooser.APPROVE_OPTION) {return true;}         return false;} } class CFileChooseLis implements ActionListener {     public CFileChooseLis(TextComponent rst) { t = rst;}     TextComponent t;     public void actionPerformed(ActionEvent e) {         if (t == null) return; CFileChooser chooser = new CFileChooser();         if (chooser.choosedFile()) {             File f = chooser.getSelectedFile();             t.setText(f.getAbsolutePath());}     } } class CAnalyzeLis implements ActionListener {     File analyzeF;     File dictionaryF;     TextComponent rst;     Window window;     public CAnalyzeLis(FileTextChecker w, TextComponent tcomp) {         analyzeF = w.getAnalyzeFile();         dictionaryF = w.getDictionFile();         rst = tcomp;         window = w;     } //    @Override     public void actionPerformed(ActionEvent e) {         ((FileTextChecker)window).initFile();         analyzeF = ((FileTextChecker)window).getAnalyzeFile();         dictionaryF = ((FileTextChecker)window).getDictionFile();         if (analyzeF == null) {             JOptionPane.showMessageDialog(window,             "未添加分析文档,点击“确定”重新添加.");             return;}         if (dictionaryF == null) {             JOptionPane.showMessageDialog(window,             "未添加敏感词汇库,点击“确定”重新添加.");             return;} Set set = new TreeSet();         String text = null;         Hashtable table = new         Hashtable();         try {             text = readTextFormFile(analyzeF);             readWordFormFile(set, dictionaryF);             Iterator t = set.iterator();             while (t.hasNext()) {                 String s = t.next();                 if (s.length() >= 1) {                     String reg = s;                     Pattern pat = Pattern.compile(reg);                     Matcher mat = pat.matcher(text);                     while (mat.find()) {                         if (table.get(s) != null) {                             table.get(s).add();                         }                         else {                             table.put(s, new IntString(1));                         }                     }                 }             }             Iterator t2 = table.keySet().iterator(); StringBuffer result = new StringBuffer();             while (t2.hasNext()) {                 String r = t2.next();                 result.append(r);                 result.append(" : ");                 result.append("" + table.get(r).getNumber());                 result.append('\n');}             rst.setText(result.toString());} catch (Exception ev) {             ev.printStackTrace();             JOptionPane.showMessageDialog(window,                     "文件读取错误.");         }     } //    static     public static void readWordFormFile(Set s, File f) {         if (s== null || f== null) return;         BufferedReader br;         String str;         try {             br = new BufferedReader(                     new FileReader(f));             while ((str = br.readLine()) != null) {                 s.add(str.trim());             }             br.close();         } catch (Exception e) {}     }     public static String readTextFormFile(File f) {         if (f== null) return null;         StringBuffer bf = new StringBuffer();         BufferedReader br;         String str;         try {             br = new BufferedReader(                     new FileReader(f));             while ((str = br.readLine()) != null) {                 bf.append(str);                 bf.append('\n');             }             br.close();             return bf.toString();         } catch (Exception e) {}         return null;     } } 5总结与展望 通过本次课程设计的实践,我初步完成了一个关于敏感词汇分析的小应用程序。在课程设计过程中,我发现了我在Java编程方便存在的不足可一些收获。最大的收获就是自己通过学习,将所有的基础知识进行了一次大的综合的练习,把自己之前所学的内容穿到了一起,形成了一种知识体系。对于本次课程设计的成果,由于时间关系,同时也存在着一些功能上的不完善,比如次程序还可以在此基础上,开发出自动删除或屏蔽敏感词汇,开发出词汇自动统计功能,从而运用到更广泛的领域上去。总体来说,本次课程设计的意义重大,让我领悟了Java编程的主题思想和方法技巧,对我的学习是一种提高,也对我未来从事编程方面的研究起到了基础性的作用。 本次课程设计综合考察了我们对Java程序设计知识的掌握熟练程度和实际运用能力。其间,涉及到了Java 中的绝大多数的知识点,如Java图形用户界面设计、Java的异常处理机制、Java中的多线程程序设计、Java输入输出流等。 参考文献 [1] 刘万军,郑少京,王松波,梁清华等《Java6程序设计》,.第1版, 清华大学出版社,2009 [2] 李明洋,《Java技术应用原理》,第一版,电子科技大学出版社,2008                     课程设计成绩评定 出勤 情况 缺勤次数: 课程 设计 评估   设计成绩 教师签字
/
本文档为【敏感词汇分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索