• 基于Java开发小说自检测系统


    二、操作环境硬 件 : PC 软件:eclipse
    三、实验内容
    1server 包
    1.1Server.java:

    主要的服务器功能,为客户端打开连接端口,并实现向客户端传输数据和接受客户端的数据传输功能。
    2client 包

    2.1Client.java:

    主要是客户端主函数,负责与服务器进行连接,有一个文本框,可以输入使用者姓名,输入之后点击连接即可连接到服务器,跳转到主功能界面。
    3myframe 包

    3.1Fun1Frame.java:

    功能一界面,主要负责完成功能一的下载小说功能。有两个按键,下载小说和返回按键。当点击下载小说后,客户端向服务器传输指定数值,服务器接收后开始向客户端传输小说内容,客户端接受服务端传来的小说内容,并将其贮存在指定的文件夹下。点击返回按键即可返回主功能界面。
    3.2Fun2Frame.java:

    功能二界面,主要负责完成功能二以柱状图的形式反应人物出现的频率大小的功能。有两个按键,生成柱状图和返回按键。当点击生成柱状图按键时,客户端向服务器传输指定参数,服务器接收后调用 name 包里的函数对小说进行分析,之后生成相应的柱状图。点击返回按键返回主功能选择界面。
    3.3Fun3Frame.java:

    功能三界面,主要负责完成功能三按照每章出现次数来生成密度图。在界面上预设好了十个人的名字以及对应的序号,在一个文本输入框中输入你想查询的人名对应的序号,然后点击保存密度图,客户端向服务器传输对应的参数,服务器接收到参数以后调用 name 包,生成对应的密度图。
    3.4Fun4Frame.java:

    功能四界面,主要是负责完成功能四对预设好的十个人进行分类的功能。有两个

    按钮,保存归类内容和返回按键。点击保存归类内容以后,客户端向服务端传入指定参数,服务端接收以后调用 name 包显示并保存分类内容。点击返回按键返回主功能选择界面。
    3.5MainFrame.java:

    主功能选择界面,主要是负责功能的选择。当 client 连接成功后会跳转到主功能选择界面。有四个按键,每个按键对应着不同的四个功能,点击之后即可跳转到指定的功能。
    4name 包

    4.1Name.java:

    对文本进行分析的主函数。预设有十个人的姓名,在 Name.java 里给又设置了一个新的 MainName 类,用来存放每个人的主要信息,并用 map 函数进行贮存。其中存放的主要信息有姓名,每章出现次数,总共出现次数等。对文本的每章进行扫描,并贮存每个人每章出现的次数,结束后,采用冒泡排序对 map 进行排序。当调用它时生成不同的图表。
    4.2BarChart.java:

    主要是用来生成柱状图的图表。Name.java 调用该类来生成对应的柱状图,由于功能二和功能三均需要柱状图,则通过改变构造函数参数的不同来区分要生成功能几的柱状图。生成柱状图的方法主要是调用外引入的包 JFreeChart
    4.3PieChart.java:

    主要是生成对应的密度图,并通过他们每章出现次数的多少来设置对应章节区域的颜色深浅,生成饼状图的方法也是调用外引入的包 JFreeChart 来实现。

    package client;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import java.net.Socket;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextField;
    
    import myframe.MainFrame;
    
    public class Client extends JFrame implements ActionListener, FocusListener{
    	private Socket s = null;
    	private JButton btConnect = new JButton("连接");
    	private JTextField tfMsg  = new JTextField(10);
    	public Client() {
    
    		tfMsg.setText("姓名");
    		tfMsg.setForeground(Color.GRAY);	
    		
    		this.setLayout(new FlowLayout());
    		this.setTitle("客户端");
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.add(tfMsg);
    		this.add(btConnect,BorderLayout.CENTER);
    		this.setVisible(true);
    		this.setSize(300, 100);
    		this.setLocationRelativeTo(null);
    		
    		tfMsg.addFocusListener(this);
    		btConnect.addActionListener(this);
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		try {
    //			s = new Socket("192.168.43.52", 9999);
    			s = new Socket("192.168.1.136", 9999);
    			this.setTitle("连接成功");	
    			new MainFrame(s);
    			this.dispose();
    		} catch (Exception e1) {
    			System.out.println(e1.getMessage());
    		}
    		
    	}
    	
    	@Override
    	public void focusGained(FocusEvent e) {
    		//当获取焦点时
    		String temp = tfMsg.getText();
    		if(temp.equals("姓名")) {
    			tfMsg.setText("");
    			tfMsg.setForeground(Color.black);
    		}
    	}
    
    	@Override
    	public void focusLost(FocusEvent e) {
    		//当失去焦点时
    		String temp = tfMsg.getText();
    		if(temp.equals("")) {
    			tfMsg.setForeground(Color.GRAY);
    			tfMsg.setText("姓名");
    		}
    	}
    	
    	public static void main(String[] args) {
    		new Client();
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    CMake Tutorial 巡礼(7)_打包一个安装文件
    带有污染训练数据的深度时间序列异常检测模型的鲁棒学习
    神经网络科普视频下载,神经网络视频教程
    SAP UI5 DynamicPage 控件介绍
    C++多态之虚函数表详解及代码示例
    [FSCTF 2023] web题解
    05-Linux部署MySQL
    【目标检测】swin-transformer的学习
    Java随记 —— Servlet 教程笔记
    《Docker极简教程》--Docker的高级特性--Docker Compose的使用
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/126675410