小说检索器 java 实验报告 文档字符匹配课件_第1页
小说检索器 java 实验报告 文档字符匹配课件_第2页
小说检索器 java 实验报告 文档字符匹配课件_第3页
小说检索器 java 实验报告 文档字符匹配课件_第4页
小说检索器 java 实验报告 文档字符匹配课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、- 1 -小说检索器Java语言与系统设计 课程设计报告 中南大学Java语言与系统设计课程设计报告题 目 小说检索器 学生姓名 - 指导教师 郭克华 学 院 信息科学与工程学院 专业班级 - 完成时间 2013年12月07日 小说检索器Java语言与系统设计 课程设计报告目录第一章 需求分析- 2 -设计目的- 2 -内容要求- 2 -设计需求- 2 -第二章 概要设计- 2 -21 实体及其关系- 2 -22 系统层次结构- 3 -23 流程- 3 -第三章 调试分析- 3 -41 遇到的问题及解决方法- 3 -42 设计实现的讨论及分析- 4 -第五章 测试结果- 5 -51 界面类-

2、5 -52 人物统计界面 ChaGUI- 5 -53 人物关系界面 GUI2- 6 -55 人物关系- 8 -第六章 课程设计总结- 9 -61课程设计过程- 9 -62 对课程及教材的认识- 10 -附录1:参考文献- 10 -附录2:源程序- 10 -Novel.java- 10 -Character.java- 11 -Relationship.java- 12 -Order.java- 13 -Story.Java- 15 -TextImport.java- 19 -FirstGUI.java- 20 -ChaGUI.java- 23 -GUI2.java- 33 -第一章 需求分析设

3、计目的掌握Java语言与系统设计的基本思路和方法。利用所学的基本知识和技能,解决简单的Java语言与系统设计问题。内容要求利用所学到的Java编程知识和编程技巧,设计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。设计需求 自行下载自己最喜欢的小说1部。存储为文本文档。要求长篇小说,20万字以上。任取其中10个人物,考虑他们的姓名、别名等等一系列因素。(1)统计每个人在小说中出现的次数并排序。(2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。如果两人在相距较短的一段文字

4、中出现,我们认为两人有关系,距离越短,关系越近。自行设计统计标准,找出10个人中:1)关系最紧密的两个人,关系最不紧密的两个人。2)输入一个人名,列出该人和其他人关系的紧密程度排名。看与实际是否符合?如果不太符合,说明可能的原因。第二章 概要设计21 实体及其关系功能类:主类novel、排序Order、人物Character、人物关系Relationship、故事检索Story、文档导入TextImport。界面类:首界面FirstFrame、人物统计ChaGUI、人物关系GUI2。22 系统层次结构221 功能类1 主类novel2 排序Order3 人物Character4 人物关系Rel

5、ationship5 故事检索Story6 文档导入TextImport。222 界面类1 首界面FirstFrame2 人物统计ChaGUI3 人物关系GUI223 流程231 打开首界面绘制首界面,由按钮Button进入人物关系和人物统计界面232 进入人物统计界面绘制人物统计界面,按“排序”按钮,调用Order类中函数进行排序。按不同人物名称,调用各统计函数。233 进入人物关系界面绘制人物关系界面,按“排序”按钮,调用Order类中函数进行排序。按不同人物名称,调用各统计函数,就算出人物亲密度。按“关系最亲密的两个人”寻找亲密度最高的两个人物,并显示。 第三章 调试分析41 遇到的问题

6、及解决方法411 问题1. 修改函数参数时报错2. 在键入程序过程中,发生多次键入错误412 解决方法1. 通过软件自动查错和修改建议,修改出错代码。2. 多次检查后,找到错误,改正错误。42 设计实现的讨论及分析导入文档后,实例化各人物名字为对象,查找各人物出现的位置并记录为位置变量,同时用计数变量统计出现次数。以此实现统计次数。 篇幅跨度:最后一个位置变量与第一个位置变量之差就是其篇幅跨度。亲密程度:在人物A名字或别称出现位置后的50个字内,每出现一次人物B就给AB的亲密度加1,A-B与B-A各次亲密度之和就是A、B亲密度,使用变量记录下来,排序,即可得到关系最紧密的两个人和关系最不紧密的

7、两个人。第五章 测试结果51 界面类5.1.1首界面FirstFrame图5.1 FirstFrame类运行结果52 人物统计界面 ChaGUI图5.2 ChaGUI类运行结果53 人物关系界面 GUI2图5.3 GUI2类运行结果54 人物统计5.4.1出现次数统计图5.4.1 统计类运行结果54. 2 排序函数图5.4.2 排序函数运行结果54. 3 统计跨度函数 distance图5.4.3统计跨度运行结果55 人物关系5.5.1亲密指数图5.5.1亲密指数运行结果5.5.2密切亲密指数图5.4.3密切亲密指数运行结果第六章 课程设计总结61课程设计过程611遇到的问题及思考1具体问题

8、在实例化对象的同时难以切实的提高效率,如在调用不同界面中的功能时还是会分别实例化对象。2解决问题过程的思考 在解决这个问题的过程中,需要极大的耐心来调试,全局变量的使用在不同时刻要进行调试才能使用。612课程设计的收获通过此次课程设计,我实际利用了Java语言编写程序,获得了乐趣,进一步加深了对类的抽象、封装、继承和多态性的理解,在此期间我阅读了许多书籍,同时在微软网络论坛、微软MSDN资料库学习到了很多理论层面和技术层面的知识。在编写程序的同时,加强了操作Java系统软件的熟练程度。613程序调试的思考此次课程设计是一次难得的锻炼自学能力和独立思考能力的机会,也是一次把所学理论与实际相结合的

9、机会。通过这次比较完整的一个程序的设计,我走出了纯理论的学习,从一种全新的角度去学习。除去知识的大量更新,我学到了很多东西。其实个人而言,我体会较深的一点是学习的过程,在自己看书学的同时,借助网络、学长学姐来获得信息和知识的经验。在面向对象编程的过程中对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,我的各方面经验都得到了极大的丰富。在短时间学习陌生知识的要求下,需要极大的耐心和韧性,虽然我和同学们的题目不同,但是他们努力、钻研的精神也鼓舞着我继续下去。从知识获得方面来说,各种已经学习到的Java知识以及各种从网上搜索来的案例,我们都是随着设计的不断深入而不断熟悉的。和

10、老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识,也对自己提出了新的要求。提高是有限的但提高也是全面的。正是这一次设计让我积累了许多实际经验。从程序设计方面来说,最重要的是有正确的思路,各类、函数逻辑上面的关系和作用都需要清晰明确的方向。从设计的实现来说,编写程序是冗杂而枯燥的过程,但是每一个问题的解决都可以带了更大的乐趣,因而更需要耐心和钻研的精神,坚持下去问题总会解决的。学习其实就是一个不断完善的过程,正视自己的不足之处。在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也要保持同样的态度,不断地完善自己。我获得了知识,学到了研究的坚持与韧性,对自己有了新的认识,实在

11、是难得的机遇与经历。62 对课程及教材的认识我们现在使用的教材可以清楚地阐明各种抽象的概念,但是对于抽象的概念,死记硬背不是办法,如果教材可以多一些有趣的实例,就可以激发我们对编程更多的兴趣。附录1:参考文献1 郭克华. Java语言程序设计M. 2012. 清华大学出版社, 2012.7附录2:源程序Novel.javapackage novel;public class novel public static void main(String args) throws ExceptionFirstGUI kiss=new FirstGUI();kiss.setTitle(小说检索助手);C

12、haracter Lx=new Character(林萧,萧,null);/创建人物对象Character Jx=new Character(简溪,null,null );Character Gy=new Character(顾源,null,null ); Character Gl=new Character(顾里,null,null); Character Twr=new Character(唐宛如,null,null ); Character Nx=new Character(南湘,null,null ); Character Xc=new Character(席城,null,null )

13、; Character Gm=new Character(宫洺,null,null); Character Zcg=new Character(周崇光,null,null); Character Kt=new Character(Kitty,null,null ); Character ch = new CharacterLx,Jx,Gy,Gl,Twr,Nx,Xc,Gm,Zcg,Kt; for(int i=0;i10;i+) chi.jisuan(); System.out.println(+出现的次数是:+chi.num); Order s=new Order(ch); fo

14、r(int i=0;i10;i+) chi.skip(); System.out.println(+出现的跨度是;+chi.distance); s.sortDistance(); Relationship relation=new Relationship(ch,Character.book); relation.relate(); s.sortRelation(); System.out.println(关系最亲密的是++与+); System.out.println(关系最不亲密的是++与+); for(in

15、t i=0;i0) al.add(index); count+; else break; return count; void jisuan() throws Exception TextImport rd=new TextImport(); book=rd.read(D:/Program Files (x86)/Java/novel/src/novel/Tiny Times.txt);num=search(name)+search(name1)+search(name2);void skip() throws Exceptionnum=search(name)+search(name1)+s

16、earch(name2);distance=(int)al.get(al.size()-1)-(int)al.get(0); *Relationship.javapackage novel;public class Relationship String book; int j=1;int b; String str;Character cha1=new Character10;Relationship(Character cha1,String book)this.cha1=cha1;this.book=book; public void relate() int s; for(int x=

17、0;x10;x+) for(int i=0;i=9;i+) for( j=1;j=(cha1x.al.size()-1);j+) s=(int)cha1x.al.get(j); str=book.substring(s,s+50); b=str.indexOf()+str.indexOf(1)+str.indexOf(2); if(b=-5) /如果名字或昵称出现过,每个indexOf函数就会返回其位置值,否则返回-1 continue; cha1x.rei+; *Order.javapackage novel;import java

18、.io.FileWriter;import java.io.IOException;public class Order Character a;static Character cha=new Character10;Order(Character cha) this.cha=cha;void sortNum() throws IOException for(int i=0;i9;i+) for(int j=0;j9-i;j+)if(chaj.num=chaj+1.num)a=chaj;chaj=chaj+1;chaj+1=a; FileWriter fw=new FileWriter(D:

19、/Program Files (x86)/Java/novel/src/novel/order.txt); for(int i=0;i10;i+) String msg = +出现的次数是:+chai.num+n; fw.write(msg); fw.close(); void sortDistance()throws IOException for(int i=0;i9;i+) for(int j=0;j9-i;j+)if(chaj.distance=chaj+1.distance)a=chaj;chaj=chaj+1;chaj+1=a; for(int i=0;i10;i

20、+) String msg = +的跨度是;+chai.num+n; public void sortRelation() int b; for(int x=0;x10;x+) for(int i=0;i9;i+) for(int j=0;j9-i;j+)if(chax.rej=chax.rej+1)b=chax.rej;chax.rej=chax.rej+1;chax.rej+1=b; *Story.Javapackage novel;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Fon

21、t;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;public class Story extends JFrame implements ActionListenerJPanel

22、jp13=new JPanel(); int cha=new int3367,559,320,314,164,154,104,16,8; JButton btt31=new JButton(关系最密切的两个人); JButton btt32=new JButton(关系最不密切的两个人); public JButton btt2=new JButton(简溪);public JButton btt3=new JButton(顾源);public JButton btt4=new JButton(顾里);public JButton btt5=new JButton(唐宛如);public JB

23、utton btt6=new JButton(南湘);public JButton btt7=new JButton(席城);public JButton btt8=new JButton(宫洺);public JButton btt9=new JButton(周崇光);public JButton btt10=new JButton(Kitty);public JPanel west()JPanel jp14=new JPanel(); jp14.setBackground(new Color(232,219,167); JLabel qing=new JLabel(人物关系亲密指数); F

24、ont font1=new Font( ,Font.BOLD,20);text1.setFont(font1); JLabel qing1=new JLabel(各人物与林萧的关系亲密指数); Font font2=new Font( ,Font.BOLD,20);text1.setFont(font2); jp14.setLayout(new GridLayout(14,1,5,5); jp14.add(qing); jp14.add(btt31); jp14.add(btt32); jp14.add(qing1); jp14.add(btt2);jp14.add(btt3);jp14.ad

25、d(btt4);jp14.add(btt5);jp14.add(btt6);jp14.add(btt7);jp14.add(btt8);jp14.add(btt9);jp14.add(btt10);btt31.setBackground(new Color(244,237,211);btt32.setBackground(new Color(244,237,211);btt2.setBackground(new Color(244,237,211);btt3.setBackground(new Color(244,237,211);btt4.setBackground(new Color(24

26、4,237,211);btt5.setBackground(new Color(244,237,211);btt6.setBackground(new Color(244,237,211);btt7.setBackground(new Color(244,237,211);btt8.setBackground(new Color(244,237,211);btt9.setBackground(new Color(244,237,211);btt10.setBackground(new Color(244,237,211);return jp14;public JPanel aa()JPanel

27、 aa=new JPanel();JLabel title1=new JLabel(小时代-人物统计);aa.add(title1);Font font1=new Font( ,Font.PLAIN,20);title1.setFont(font1);title1.setForeground(Color.white);aa.setBackground(new Color(46,46,46);return aa;JTextArea text1=new JTextArea(以下为输出信息n );JPanel jp11=new JPanel();public Story()jp11.setBackg

28、round(new Color(232,219,167);jp11.setLayout(new BorderLayout();jp11.add(aa(),BorderLayout.NORTH);jp11.add(west(),BorderLayout.WEST);jp11.add(text1,BorderLayout.CENTER);this.add(jp11);this.setSize(800,600);this.setVisible(true);text1.setBackground(new Color(232,219,167);Font font1=new Font( ,Font.BOL

29、D,20);text1.setFont(font1);btt31.addActionListener(this);btt32.addActionListener(this);btt2.addActionListener(this);btt3.addActionListener(this);btt4.addActionListener(this);btt5.addActionListener(this);btt6.addActionListener(this);btt7.addActionListener(this);btt8.addActionListener(this);btt9.addAc

30、tionListener(this);btt10.addActionListener(this);public void actionPerformed(ActionEvent e) Character Lx=new Character(林萧,null,null);/创建人物对象Character Jx=new Character(简溪,null,null );Character Gy=new Character(顾源,null,null ); Character Gl=new Character(顾里,女王,美姐儿); Character Twr=new Character(唐宛如,null

31、,null ); Character Nx=new Character(南湘,null,null ); Character Xc=new Character(席城,null,null ); Character Gm=new Character(宫洺,null,null); Character Zcg=new Character(周崇光,崇光,null); Character Kt=new Character(Kitty,null,null ); Character ch = new CharacterLx,Jx,Gy,Gl,Twr,Nx,Xc,Gm,Zcg,Kt; Order s=new Or

32、der(ch);Relationship relation=new Relationship(ch,Character.book);relation.relate();s.sortRelation(); TextImport rd=new TextImport();if(e.getSource()=btt31)String str=关系最亲密的是++与+; text1.setText();text1.append(str+n);else if(e.getSource()=btt32)String str=关系最不亲密的是++与+;

33、 text1.setText();text1.append(str+n);else if(e.getSource()=btt2) String book= ;try book=rd.read(D:/Program Files (x86)/Java/novel/src/novel/Tiny Times.txt); catch (Exception e1) e1.printStackTrace(); String str=+与林萧的关系亲密指数:+cha0; text1.setText(); text1.append(str+n);else if(e.getSource()=btt

34、3) String str=+与林萧的关系亲密指数:+cha1; text1.setText(); text1.append(str+n);else if(e.getSource()=btt4) relation.relate(); s.sortRelation(); String str=+与林萧的关系亲密指数:+cha2; text1.setText(); text1.append(str+n);else if(e.getSource()=btt5) String str=+与林萧的关系亲密指数:+cha3; text1.setText();

35、 text1.append(str+n);else if(e.getSource()=btt6) String str=+与林萧的关系亲密指数:+cha4; text1.setText(); text1.append(str+n);else if(e.getSource()=btt7) String str=+与林萧的关系亲密指数:+cha5; text1.setText(); text1.append(str+n);else if(e.getSource()=btt8) String str=+与林萧的关系亲密指数:+cha6; text1.s

36、etText(); text1.append(str+n);else if(e.getSource()=btt9)String str=+与林萧的关系亲密指数:+cha7;text1.setText();text1.append(str+n);else if(e.getSource()=btt10) String str=+与林萧的关系亲密指数:+cha8; text1.setText(); text1.append(str+n); *TextImport.javapackage novel;import java.io.BufferedReader;impor

37、t java.io.FileReader;public class TextImport public String read(String filepath) throws Exception FileReader fr=new FileReader(filepath); BufferedReader br=new BufferedReader(fr); StringBuilder strb=new StringBuilder(); while(true) String line=br.readLine(); if(line=null) break; strb.append(line); /

38、将逐行读取的字符添加到strb中 br.close(); return strb.toString(); /将StringBuilder转化为字符串 *FirstGUI.javapackage novel; import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class FirstGUI extends JFrame implements ActionListener private JButton bt1=new

39、 JButton(人物统计);private JButton bt2=new JButton(人物关系);private Frame borderLayout;JPanel jpt=new JPanel();public JPanel north() JPanel jpl=new JPanel();JLabel title=new JLabel( 小 时 代);jpl.add(title);title.setForeground( Color.white);jpl.setBackground(new Color(0,0,0);Font font1=new Font( ,Font.PLAIN,4

40、0);title.setFont(font1);return jpl;public JPanel center()JPanel jp3=new JPanel();jp3.setBackground(new Color(232,219,167);JLabel lblImage = new JLabel(new ImageIcon(D:/Program Files (x86)/Java/novel/src/novel/cover.jpg); lblImage.setBounds(50, 50, jp3.getWidth(), jp3.getHeight(); jp3.add(lblImage);r

41、eturn jp3;public JPanel east()JPanel jp2=new JPanel();jp2.setBackground(new Color(232,219,167);JPanel tt=new JPanel();JPanel tt1=new JPanel();JPanel tt2=new JPanel();JPanel tt3=new JPanel();JPanel tt4=new JPanel();JPanel tt5=new JPanel();JPanel tt6=new JPanel();JPanel tt7=new JPanel();JPanel tt8=new

42、 JPanel();JPanel tt9=new JPanel();JPanel tt10=new JPanel();JPanel tt11=new JPanel();JPanel tt12=new JPanel();tt1.setBackground(new Color(232,219,167);tt2.setBackground(new Color(232,219,167);tt3.setBackground(new Color(232,219,167);tt4.setBackground(new Color(232,219,167);tt5.setBackground(new Color

43、(232,219,167);tt6.setBackground(new Color(232,219,167);tt7.setBackground(new Color(232,219,167);tt8.setBackground(new Color(232,219,167);tt9.setBackground(new Color(232,219,167);tt10.setBackground(new Color(232,219,167);tt11.setBackground(new Color(232,219,167);tt12.setBackground(new Color(232,219,1

44、67);jp2.setLayout(new GridLayout(5,3,10,10);jp2.add(tt1); jp2.add(tt2); jp2.add(tt3); jp2.add(tt4); jp2.add(bt1); jp2.add(tt5); jp2.add(tt6); jp2.add(bt2); jp2.add(tt7); jp2.add(tt8); jp2.add(tt9); jp2.add(tt10); jp2.add(tt11); jp2.add(tt12); bt1.setBackground(new Color(0,0,0); bt2.setBackground(new

45、 Color(0,0,0); Font font1=new Font( ,Font.PLAIN,15);bt1.setFont(font1); bt1.setForeground( Color.white);bt2.setFont(font1); bt2.setForeground(Color.white); return jp2; public FirstGUI()BorderLayout borderLayout=new BorderLayout(); this.add(center(),BorderLayout.WEST); this.add(north(),BorderLayout.NORTH); this.add(east(),BorderLayout.CENTER); this.add(jpt,BorderLayout.SOUTH); jpt.setBackground(new Color(232,219,167); th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论