java小说人物分析

上传人:第*** 文档编号:34056698 上传时间:2018-02-20 格式:DOC 页数:20 大小:986KB
返回 下载 相关 举报
java小说人物分析_第1页
第1页 / 共20页
java小说人物分析_第2页
第2页 / 共20页
java小说人物分析_第3页
第3页 / 共20页
java小说人物分析_第4页
第4页 / 共20页
java小说人物分析_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《java小说人物分析》由会员分享,可在线阅读,更多相关《java小说人物分析(20页珍藏版)》请在金锄头文库上搜索。

1、一实验题目 自行下载自己最喜欢的小说 1 部。存储为文本文档。要求长篇小说,20 万字以上。任取其中 10 个人物,考虑他们的姓名、别名等等一系列因素。(1)统计每个人在小说中出现的次数并排序。(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。(3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。自行设计统计标准,找出 10 个人中:1)关系最紧密的两个人,关系最不紧密的两个人。2)输入一个人名,列出该人和其他人关系的紧密程度排名。看与实际是否符合?如果不太符合,说明可能的原因。二需求分析 本演示程序用 eclipse 编写,完成小说

2、人物的出现次数统计,人物篇幅跨度统计以及人物间亲密程度的统计。 统计人物出现次数:编写一个函数,当传入参数为人物名称时可统计该人物名在小说中的出现次数。 人物篇幅跨度:编写一个函数,当传入参数为人物名称是可统计该人物名在小说中第一次出现的位置以及最后一次出现的位置,将最后一次出现位置减去第一次出现的位置比去小说通篇长度可得该人物名在小说中的人物篇幅跨度。人物间亲密程度:编写一个函数,当传入参数为人物名一和人物名二时,统计人物名一与人物名二同时在某个字数范围内出现的篇幅占人物名一的篇幅之比就是人物名一与人物名二的亲密程度。 制作功能选择界面:界面包含有十个人物名的下拉列表,三个功能排序按钮,一个

3、文本区域可输出统计结果。三概要设计 1)为了实现上述程序功能,需要定义一下几个类: Interface 类:该程序的功能选择界面,包含 main 函数。Novelfunction1 类:用来实现程序的第一个功能的类。Novelfunction2 类:用来实现程序的第二个功能的类。Novelfunction3 类:用来实现程序的第三个功能的类。Saver 类:用来保存程序运行后的统计结果,结果将统计在 result.txt 中。在程序运行中,在界面中的下拉列表选定一位人物,选定后在界面的文本区域中会输出该人物在小说中的出现次数,篇幅跨度以及与其他九个人物间的亲密程度;在界面中点击功能按钮“人物出

4、现次数排序” ,点击后文本区域会输出十个人物在小说中出现次数的升序排序;在界面中点击功能按钮“人物篇幅跨度排序” ,点击后文本区域会输出十个人物在小说中篇幅跨度的升序排序;在界面中点击功能按钮“人物关系密度排序” ,点击后文本区域中会输出十个人物间亲密程度最高的一组和亲密程度最低的一组结果。四.源代码:Interface:package novelproject;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JComboBox;import javax.swing.JLabel;import jav

5、a.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.

6、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,ActionListene

7、rprivate 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

8、=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.BOL

9、D,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.a

10、ddItem(石神 );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 west

11、2;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(),BorderLay

12、out.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(

13、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;cas

14、e 草薙: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);Fil

15、e 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汤川,草薙,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号