




免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计题 目: 单词统计摘 要本程序主要是用来对在文件中输入的若干个单词(每个单词可重复一次或多次)进行筛选检测。编程实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。程序中主要使用了JFileChooser控件,并在其中实现了文件的类型过滤功能,从而达到从本地机器中选出要检测的文本文件。对文件中的没有重复出现的单词使用集合类方法进行排序。对文件内容的读取和对结果的显示使用的文件流的操作。将文件的内容读取到文本域。对文本实现添加滚动条功能,使用的是JScrollPane。对界面的布局使用的绝对布局,按钮的时间处理机制,还有一些其他的窗口属性设置。程序的整个思想流程:浏览文件,选中文件之后,对文件的内容进行分析,对单词进行统计,排序,之后将生成的结果写入一个临时文件中,再通过文件的读取,将结果读取并显示到界面中的文本域。12目 录摘 要1目 录11 前言(或“绪论”)11.1 设计任务11.1.1 需求说明11.2 设计内容12 程序要求13 算法分析14 流程图(或框图、模块图)35 程序源代码36 调试及运行结果47 体会48 参考文献41 前言(或“绪论”)1.1 设计任务1.1.1 需求说明JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践环节是必不可少的一个重要环节。学习完JAVA程序设计课程后,进行程序设计是一次全面的综合训练,JAVA程序设计的设计目的是加深对所学内容的理解和掌握,系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为以后综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 设计内容(1)程序要求 (2)算法分析 (3)流程图 (4)源程序 (5)调试及运行结果(6)体会2 程序要求单词检测器是java集合类和界面编程的一个小小的应用,其完成的功能是:在文件中输入若干个单词(每个单词可重复一次或多次),然后选择到这个文件。实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。并显示到界面上。3 算法分析一、在此程序中用到了几个关键技术:1.对“浏览”功能的实现。使用了JFileChooser控件,并在其中实现了文件的类型过滤功能。从而达到从本地机器中选出要检测的文本文件。2.对文件中的每个单词实现统计功能,使用的集合类,并且对没有重复出现的单词也是使用集合类方法进行排序。3.对文件内容的读取和对结果的显示使用的文件流的操作。其中结果的显示思想,是先将结果生成一个文件进行保存,之后再对此文件内容进行读取到文本域。4.将文件的内容读取到文本域。使用的是先将文件内容读取到字符串中,之后进行再使用文本域的设置文本内容方法,进行追加。并实现换行功能。5.对文本实现添加滚动条功能,以便在内容多的时候,能够浏览所有结果,使用的是JScrollPane。6.对界面的布局使用的绝对布局,按钮的时间处理机制,还有一些其他的窗口属性设置。二、程序的整个思想流程:浏览文件,选中文件之后,对文件的内容进行分析,对单词进行统计,排序,之后将生成的结果写入一个临时文件中,再通过文件的读取,将结果读取并显示到界面中的文本域。4 流程图(或框图、模块图)将结果显示到文本域启动程序创建一个文本文件,输入一些单词浏览文件,选择要检测的文件开始检测是否继续检测退出否是5 程序源代码import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FileDialog;import java.awt.FlowLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenuBar;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.filechooser.FileFilter;import javax.swing.filechooser.FileNameExtensionFilter;public class MyTest extends JFrame JButton btok;JButton btquit;JButton btopen;public JTextArea result; JTextField filepath; JFileChooser fc ; private static Map m = new HashMap(); public static void tongJi(File f) try BufferedReader reader = new BufferedReader(new FileReader(f);String str = null; /从文件中读取没一行,然后用“,”或“.”分割,如果再m中没有该子串的话,就计数为1,如果有的话就加1,这样执行完以后,就统计出了每个子串出现的次数 while(str = reader.readLine() != null) /正则表达式 str = str.replaceAll(,., ); for(String s : str.split( ) if(s.length() = 0) continue; if(m.containsKey(s) int amount = m.get(s)+1; m.put(s, amount); else m.put(s, 1); reader.close(); catch(IOException e) public static ListMap.Entry paiXu() ListMap.Entry list = new ArrayListMap.Entry(m.entrySet(); Collections.sort(list, new ComparatorMap.Entry() public int compare(Map.Entry o1, Map.Entry o2) return Collator.getInstance().compare(o1.getKey(), o2.getKey(); ); return list; public MyTest() super(单词检测器); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /获得根容器Container ct=this.getContentPane();/设置根容器的布局ct.setLayout(new BorderLayout(); JLabel bg=new JLabel(); JLabel lblfile=new JLabel(请选择文件); JLabel lblresult=new JLabel(检测结果); filepath=new JTextField(); filepath.setEditable(false); fc = new JFileChooser(); MPPFileFilter filter = new MPPFileFilter(); /去掉显示所有文件这个过滤器 fc.setAcceptAllFileFilterUsed(false); fc.setFileFilter(filter); result=new JTextArea(); result.setEditable(false); /为结果文本框添加滚动条 JScrollPane sPane = new JScrollPane(result); btopen=new JButton(浏览); btok=new JButton(开始检测); btquit=new JButton(退出); /设置标签的属性bg.setLayout(null);bg.setBackground(Color.cyan);bg.setOpaque(true);/设置组件的属性lblfile.setBounds(30,30,100,30);filepath.setBounds(130,30,200,30);btopen.setBounds(330,30,60,30);lblresult.setBounds(30,80,100,30);sPane.setBounds(130,80,330,220);btok.setBounds(120,320,100,30);btquit.setBounds(240,320,100,30);/MyListener ml=new MyListener();btok.addActionListener(ml);btopen.addActionListener(ml);btquit.addActionListener(ml);/添加组件bg.add(lblfile);bg.add(filepath);bg.add(btopen);bg.add(lblresult);bg.add(sPane);bg.add(btok);bg.add(btquit); /自动换行 result.setLineWrap(true); ct.add(bg,BorderLayout.CENTER); pack(); this.setLocation(300,200); this.setSize(500,400); this.setResizable(false); this.setVisible(true); /浏览文件时候进行文件类型过滤 public class MPPFileFilter extends FileFilter public boolean accept(File f) String tmp=f.getName().toLowerCase(); /显示文件夹 if(f.isDirectory() return true; /循环过滤文件过滤 if(tmp.endsWith(.txt) return true; return false;public String getDescription() return 文本文件(*.txt); /class MyListener implements ActionListener public void actionPerformed(ActionEvent e) JButton bt=(JButton)e.getSource();if(bt=btok) String str=filepath.getText(); try if(str.equals() JOptionPane.showConfirmDialog(null, 请选择文件, 请选择文件, JOptionPane.YES_NO_OPTION); File f = new File(str); tongJi(f); ListMap.Entry result = paiXu(); File out = new File(c:2.txt); if(!out.exists() out.createNewFile(); FileWriter fw = new FileWriter(out); fw.write(统计记录:+rn); for(Map.Entry entry : m.entrySet() fw.write(entry.getKey()+ +entry.getValue()+次 +rn); fw.write(非重复数排序:); for(Map.Entry entry : result) if(entry.getValue() = 1) fw.write(entry.getKey()+ ); fw.close(); BufferedReader reader = new BufferedReader(new FileReader( c:2.txt ); String line = reader.readLine(); String all = null; /每次显示结果前先清除上次的结果 MyTest.this.result.setText(); /读结果并显示 while(line != null) MyTest.this.result.append(line); MyTest.this.result.append(n); line = reader.readLine(); MyTest.this.result.append(all); catch(IOException ex)ex.printStackTrace();if(bt=btquit)/退出系统System.exit(0);if(bt=btopen)/实现文件浏览int retValue = fc.showOpenDialog(btopen); if(re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准合同范本下载
- 工地安全员c证及答案题型
- 2025双边合作项目合同范本
- 川剧变脸培训合同7篇
- 2025年新疆粮油品牌保护合同协议
- 2025合作共赢合同范本
- 2025离婚协议书范本
- 2025代理销售合同范本
- 2025年四川省甘孜事业单位工勤技能考试题库(含答案)
- 2025年乡村旅游停车场租赁合同范本
- 送教上门教师培训课件
- 急性宫外孕课件
- 贵阳市2026届高三年级摸底考试物理试卷(含答案)
- 美发编发基础知识培训课件
- 同期线损培训课件
- 工业相机原理 课件 第五章-工业相机的参数和工作模式
- 反诈知识竞赛试题及答案
- 钢筋加工棚租赁合同范本
- 2025年电梯检验员资格考试历年真题及答案试题试卷(含解析)
- 眼整形课件教学课件
- 国货品牌跨界营销对消费者购买意愿的影响研究-基于感知价值理论
评论
0/150
提交评论