资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一实验题目 自行下载自己最喜欢的小说 1 部。存储为文本文档。要求长篇小说,20 万字以上。任取其中 10 个人物,考虑他们的姓名、别名等等一系列因素。(1)统计每个人在小说中出现的次数并排序。(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。自行设计统计标准,找出 10 个人中:1)关系最紧密的两个人,关系最不紧密的两个人。2)输入一个人名,列出该人和其他人关系的紧密程度排名。看与实际是否符合?如果不太符合,说明可能的原因。二需求分析 本演示程序用 eclipse 编写,完成小说人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。 统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。 人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数范围内出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。 制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排序按钮,一个文本区域可输出统计结果。三概要设计 1)为了实现上述程序功能,需要定义一下几个类: Interface 类:该程序的功能选择界面,包含 main 函数。Novelfunction1 类:用来实现程序的第一个功能的类。Novelfunction2 类:用来实现程序的第二个功能的类。Novelfunction3 类:用来实现程序的第三个功能的类。Saver 类:用来保存程序运行后的统计结果,结果将统计在 result.txt 中。在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人物出现次数排序” ,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序” ,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序” ,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。四.源代码:Interface:package novelproject;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JComboBox;import javax.swing.JLabel;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import javax.swing.JButton;import javax.swing.JTextArea;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.FileInputStream;import java.io.File;import java.io.FileReader;import java.io.PrintStream;import java.util.Arrays;import java.util.HashMap;public class Interface extends JFrame implements ItemListener,ActionListenerprivate JLabel jbl=new JLabel(嫌疑犯X的献身 );private JLabel function=new JLabel(功能);private JPanel jpl=new JPanel();private BorderLayout bl=new BorderLayout(10,10);private JComboBox jcb=new JComboBox();private JButton jbt1=new JButton(出现次数排序);private JButton jbt2=new JButton(篇幅跨度排序);private JButton jbt3=new JButton(关系密度排序);private JTextArea jta=new JTextArea(以下是结果:n,30,30);private static String personname=null;private static String arr1=new String汤川,草薙, 岸谷,间宫, 石神 ,靖子, 美里 ,富坚 ,工藤, 小代子 ;private static int arr2=new int10;private static HashMap rls=new HashMap();private Font font1=new Font(黑体,Font.BOLD,20);private Font font2=new Font(华文新魏,Font.BOLD,16);private Font font3=new Font(黑体,Font.BOLD,14);public JPanel createWEST1() JPanel west1=new JPanel();west1.setLayout(new GridLayout(6,1,5,5);west1.add(jcb);jcb.addItem(请选择人物 );jcb.addItem(汤川 );jcb.addItem(草薙 );jcb.addItem(岸谷 );jcb.addItem(间宫 );jcb.addItem(石神 );jcb.addItem(靖子 );jcb.addItem(美里 );jcb.addItem(富坚 );jcb.addItem(工藤 );jcb.addItem(小代子 );west1.add(function);west1.add(jbt1);west1.add(jbt2);west1.add(jbt3);return west1;public JPanel createWEST2()JPanel west2=new JPanel();west2.setLayout(new FlowLayout();west2.add(createWEST1();return west2;public JPanel createNORTH()JPanel north=new JPanel();north.setLayout(new FlowLayout(FlowLayout.CENTER);north.add(jbl);return north;public JPanel createCENTER()JPanel center=new JPanel();center.add(jta);return center;public Interface() this.add(jpl);jpl.setLayout(bl);jpl.add(createWEST2(),BorderLayout.WEST);jpl.add(createNORTH(),BorderLayout.NORTH);jpl.add(createCENTER(),BorderLayout.CENTER);jta.setFont(font1);jbt1.setFont(font2);jbt2.setFont(font2);jbt3.setFont(font2);jbl.setFont(font1);function.setFont(font1);this.setBackground(Color.yellow);jcb.addItemListener(this);jbt1.addActionListener(this);jbt2.addActionListener(this);jbt3.addActionListener(this);this.setSize(500,600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void itemStateChanged(ItemEvent e)if(e.getStateChange()=ItemEvent.SELECTED)switch(String)e.getItem()case 汤川:personname=汤川 ; break;case 草薙:personname=草薙 ; break;case 岸谷:personname=岸谷 ; break;case 间宫:personname=间宫 ; break;case 石神:personname=石神 ; break;case 靖子:personname=靖子 ; break;case 美里:personname=美里 ; break;case 富坚:personname=富坚 ; break;case 工藤:personname=工藤 ; break;case 小代子:personname=小代子 ; break;try Saver.saver(personname);File file=new File(result.txt);FileReader fr=new FileReader(file);BufferedReader br=new BufferedReader(fr);jta.setText(以下是结果;n );while(true)String msg=br.readLine();if(msg=null) break;jta.append(msg+n);fr.close();br.close(); catch (Exception e1) e1.printStackTrace();public void actionPerformed(ActionEvent e)if(e.getSource()=jbt1)int i;HashMap hm=new HashMap();for(i=0;i hm=new HashMap();for(i=0;i hm1=new HashMap();HashMap hm2=new HashMap();HashMap hm3=new HashMap();String dataStr=new String(data);int time=0;for(int i=0;i rls=new HashMap();private static String arr=new String汤川,草薙,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号