java结课项目开发(程序设计)——工具包源码(fntp开源)


本项目由本文作者独立开发,引用请标明出处
项目开源:fntp

项目介绍:鑫软工具包

  1. 特点 :含有用户图形界面,可视化操作
  2. 所涉及知识点:整本java书上的所有知识点基本涵盖
  3. 开源目的 :帮助初期学习java的一些学习者研究学习,共同交流!

项目完整代码部分:

// 完整代码,粘贴后即可运行
package SINSY工具包.src.hh;
import java.awt.Color;
import java.time.Year;
import java.util.Scanner;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.*;
import java.io.IOException;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JDesktopPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import javax.swing.*;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.*;
import java.io.IOException;
import java.net.Socket;
//将主类直接继承了适配器监听类
public class mysinsy extends WindowAdapter{
	//首先编写一个无参数的构造方法, 用于直接创建窗口并
	//且设置窗口的基本属性,调用this直接监听新建窗口
	private ImageIcon img = new ImageIcon("src/img/u=1939795079,646244577&fm=26&gp=0.jpg");
	public mysinsy() {
		JFrame a=  new JFrame ("SINSY工具包");
		//新建窗口的标签,定义为背景图片
		JLabel label = new JLabel(img);
		//我对窗口进行了布局设置
		a.setLayout(new FlowLayout());
		//设置窗口大小
		a.setSize(500, 432);
		//设置窗口位置
		a.setLocation(300, 300);
		//设置窗口可见性
		a.setVisible(true);
		//设置窗口监听
		a.addWindowListener(this);
		//添加按钮,一共十个
		Button c= new Button("几点了鸭");
		Button e= new Button("截获当前IP地址");
		Button p= new Button("全网音乐");
		Button t=new Button("全网影视");
		Button h=new Button("在线工具箱");
		Button j= new Button("代码记录");
		Button u= new Button("端口扫描");
		Button w= new Button("在线破解工具包");
		Button r= new Button("关于软件");
		Button y= new Button("百度一下你就知道");
		//添加到窗口可视化输出
		a.add(label);
		a.add(y);
		a.add(r);
		a.add(j);
		a.add(h);
		a.add(t);
		a.add(c);
		a.add(e);
		a.add(p);
		a.add(u);
		a.add(w);
		a.add(y);
		//对象所对应的鼠标监听事件
		c.addMouseListener(new MouseListener(){
			public void mouseReleased(MouseEvent e) {}
			//鼠标点击事件:
			public void mousePressed(MouseEvent e) {				
				//以下是获取当前时间的代码
				Calendar calendar = Calendar.getInstance();
				int year = calendar.get(Calendar.YEAR);
				int month = calendar.get(Calendar.MONTH);
				int day = calendar.get(Calendar.DATE);
				int hour = calendar.get(Calendar.HOUR);
				int minute= calendar.get(Calendar.MINUTE);
				  int second = calendar.get(Calendar.SECOND);
				  //以窗口形式输出,并设置当前窗口的名称
				  JFrame a= new JFrame("当前时间");
				  //设置窗口大小
				  a.setSize(290, 100);
				  //设置窗口的位置
				  a.setLocation(500, 400);
				  StringBuffer scx=null;
				  scx=new StringBuffer("当前时间为:"
				  		+ ""+year+"年"+(month+1)+"月"+
						  day+"日"+hour+"时"+
				  		minute+"分"+second+"秒");
				  JLabel time=new JLabel();
				  //输出时间
				  time.setText(scx.toString());
				  a.add(time);
				  a.setVisible(true);
			}
			public void mouseExited(MouseEvent e) {}
			public void mouseEntered(MouseEvent e) {}
			public void mouseClicked(MouseEvent e) {}
		});
		e.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {}
			public void mousePressed(MouseEvent e) {}
			public void mouseExited(MouseEvent e) {}
			public void mouseEntered(MouseEvent e) {}
			public void mouseClicked(MouseEvent e) {
				//这里在鼠标点击事件中放入截获当前IP地址的方法
				InetAddress myip = null;
				try {
					myip = InetAddress.getLocalHost();
				} catch (UnknownHostException e1) {
					e1.printStackTrace();
				}
				JFrame pp= new JFrame("截获当前IP");
				StringBuffer u1= null;
				StringBuffer u2=null;
				u2=new StringBuffer("您的主机名是:"+myip.getHostName());
				u1=new StringBuffer("您的IP地址是:"+myip.getHostAddress());
				JLabel yu= new JLabel();
				//利用html的语法格式嵌入到java中,使得文字换行输出
				yu.setText("<html><body><p  align=\"center\">" 
				+u2.toString()+ "<br>" + 
				u1.toString() +"<body></html>");
				//实现换行
				pp.setBackground(Color.lightGray);
				//设置背景为灰色
				pp.add(yu);
		        pp.setVisible(true);
		        pp.setSize(210, 230);
		        pp.setLocation(300, 300);
			}
		});
		p.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				try {
					//调用try 方法进行调用系统浏览器进行打开相应的网页,这里是全网免费音乐
					 Runtime.getRuntime().exec(
					 "cmd   /c   start   https://music.mli.im/ ");
					 //同样,采用cmd指令来调用浏览器打开网页
				} catch (IOException o) {
					o.printStackTrace();
					//打印出现的所有异常情况
				}
			}
		});
		t.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				try {
					//同上
					 Runtime.getRuntime().exec(
					 "cmd   /c   start   www.goudaitv.cc ");
					 //同样采用cmd命令行直接调用浏览器跳转外站链接,打开vip影视会员中心
				} catch (IOException eq) {
					eq.printStackTrace();
				}
			}
		});
		h.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {	
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				try {
				//这里只用到了一个鼠标点击事件,其他的方法都未涉及。
					//调用后台cmd进行网页访问
					 Runtime.getRuntime().exec(
					 "cmd   /c   start   https://tool.lu/ ");
				} catch (IOException yu) {
					//抛出异常
					yu.printStackTrace();
				}
			}
		});
		//代码记录的创建事件
		j.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {	
			}
			public void mousePressed(MouseEvent e) {	
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				//创建代码记录的文本,创建的对象yu,通过调用对象来调用方法,实现输出
				ceshi yu= new ceshi();
				yu.fun();
				yu.ceshi();
			}
		});
		u.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {	
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				//直接通过创建对象来实现方法,实现端口扫描代码:
				 JFrame portscan=new PortScan();
			        portscan.setVisible(true);
			        //在设置窗口可见即可
			}
		});
		r.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {	
			}
			public void mousePressed(MouseEvent e) {
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				//这里用到了模板思想,即程序的代码优化法。设置通用的窗口模板,
				//通过传递参数进行直接调用,只需要修改参数,即可。简便实用!
				guanyu  ni= new guanyu();
				ni.gy("鑫软工具包V1.0.3", "本软件由鑫软工作室旺仔独立开发", 
						"感谢使用,QQ358566760", 
						"src/img/u=2754969206,1196262824&fm=26&gp=0.jpg",
						"关于鑫软工具包");
			}
		}); 
		y.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e) {
			}
			public void mousePressed(MouseEvent e) {
			}
			public void mouseExited(MouseEvent e) {
			}
			public void mouseEntered(MouseEvent e) {
			}
			public void mouseClicked(MouseEvent e) {
				//同上调用方法打开系统的浏览器
				try {
					 Runtime.getRuntime().exec(
					"cmd   /c   start   https://www.baidu.com in");			
					 } catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		w.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent arg0) {	
			}
			public void mousePressed(MouseEvent arg0) {	
			}
			public void mouseExited(MouseEvent arg0) {	
			}
			public void mouseEntered(MouseEvent arg0) {
			}
			public void mouseClicked(MouseEvent arg0) {
				try {
			//同上使用的方法打开相应的网址,打开相应的网页。
					 Runtime.getRuntime().exec(
				 "cmd   /c   start   https://down.52pojie.cn/Tools/");				
					 } catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
	
	}
			//定义一个容器方法
	private JPanel getContentPane() {
		return null;
	}

			//定义带参数的窗口关闭方法,实现窗口关闭
	public void windowClosing(WindowEvent windowEvent) {
		System.exit(0);
	}
			//整个主类的唯一主方法,用于在主方法中调用mysinsy的构造方法,新建一个用户图形界面GUI
	public static void main(String[] args) {
			//程序从这里开始运行,并且这里直接实现主界面的注册,即主界面的新建。
			//	相应的参数属性都在相应的子类中进行修改,主方法只负责调用即可!
		new mysinsy();
	}
}
			//以下是子类的的模板,直接创建模板对象,再通过对象来调用模板中的方法即可。
class  guanyu{
	String a,b,c,f;
	ImageIcon d;
	public void gy(String a, String b,String c,String d,String f){
	ImageIcon e=new ImageIcon(d);
	this.a=a;
	this.b=b;
	this.c=c;
	this.f=f;
			//将图片放入label中
	JLabel label=new JLabel(e);
			//设置label的大小
	label.setBounds(0,0,e.getIconWidth(),e.getIconHeight());
	JFrame guanyu=new JFrame(f);		
			//获取窗口的第二层,将label放入
	guanyu.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
			//获取frame的顶层容器,并设置为透明
	JPanel j=(JPanel)guanyu.getContentPane();
			//获取容器
	j.setOpaque(false);	 
	JPanel panel=new JPanel();
			//设置三个变量,分别表示标题,标签文本内容,以及图片的地址格式!
	JLabel jb=new JLabel(a);
	JLabel jb2=new JLabel(b);
	JLabel jb3= new JLabel(c);
	jb.setForeground(Color.GREEN);
	jb2.setForeground(Color.GREEN);
	jb3.setForeground(Color.GREEN);
	jb2.setFont(new Font("宋体",1,23));
	jb.setFont(new Font("宋体",1,23));
	jb3.setFont(new Font("宋体",1,23));
	panel.add(jb);
	panel.add(jb2);
	panel.add(jb3);
			//必须设置为透明的。否则看不到图片
	panel.setOpaque(false);
	guanyu.add(panel);
	guanyu.add(panel);
	guanyu.setSize(e.getIconWidth(),e.getIconHeight());
	guanyu.setVisible(true);
}
}
			//创建ceshi类,继承JFrame类
	 class ceshi extends JFrame{
		 public void fun(){
			//新建一个线程进行事件排列事件队列,当用户点击一个事件,这个事件会在事件队列当中,排队执行
			 EventQueue.invokeLater(new Runnable() {
					public void run() {
						try {
			//新建一个Jframe类型的ceshi窗口
							ceshi frame = new ceshi();
							frame.setVisible(true);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				});
			}
		 public void ceshi() {	
		}
		public ceshi() {
				setTitle("sinsy随身笔记");//标题
				//设置记事本的标题
				setBounds(400, 300, 300, 300);
				//父窗口的坐标和大小
				getContentPane().setLayout(null);
				//设置了自由布局但是如果下面需要进行流式布局会有布局模式刷新,覆盖为流式布局
				String beizhu="版本V1.0";
				//设置发布版本号
				String beizhu2="鑫软工作室荣誉出品";
				//设置发布信息
				JLabel pageLabel = new JLabel(beizhu , JLabel.RIGHT);
				JLabel pageLabe2 = new JLabel(beizhu2 , JLabel.RIGHT);
				//是使用Jlable创建一个标签pagelble1和2
				JButton bt = new JButton("点击创建");
				//按钮的变量名为bt
				bt.setBounds(80,80,120,60);
				//按钮的位置坐标和大小
				getContentPane().add(bt);
				//按钮添加到窗口中
				FlowLayout flo = new FlowLayout();
				//建立了流式空间布局界面,将控件进行流式布局
				setLayout(flo);
				add(pageLabel);
				add(pageLabe2);
				//将两个标签添加进窗口容器中
				setVisible(true);
				//设置控件可见性为可见
				bt.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						NotePal notePal = new NotePal();
				//调用notepal类声明对象,实现构造方法
					}
				});
			}
		 }
	  class NotePal extends JFrame implements ActionListener {
			private static final long serialVersionUID = 1L;
				//定义一个文本框
			JTextArea jTextArea = null;
				//定义一个菜单栏
			JMenuBar jMenuBar = null;
				//定义一个菜单
			JMenu jMenu1 = null;
				//定义一个“打开”子选项
			JMenuItem jMenuItem1 = null;
				//定义一个“保存”子选项
			JMenuItem jMenuItem2 = null;
				//定义一个文件选择
			JFileChooser jFileChooser = null;
				//定义一个FileReader文件输入流
			FileReader fileReader = null;
				//定义一个FileWriter输出流
			FileWriter fileWriter = null;
				//定义一个缓冲字符输入流
			BufferedReader bufferedReader = null;
						//定义一个缓冲字符输出流
			BufferedWriter bufferedWriter = null;
			@SuppressWarnings("unused")
						//并无实际意义
			public static void notepad() {
		        		//实例化
				NotePal notePal = new NotePal();
			}
						//构造函数
			public NotePal()
			{
						//实例化jTextArea
				jTextArea = new JTextArea();
						//实例化jMenuBar
				jMenuBar = new JMenuBar();
						//实例化就jMenu1,并设置其名字为“文件”
				jMenu1 = new JMenu("文件");
						//实例化就MenuItem1,并将其命名为“打开”
				jMenuItem1 = new JMenuItem("打开");
						//实现对jMenuItem1的监听
				jMenuItem1.addActionListener(this);
				jMenuItem1.setActionCommand("打开");
						//实例化就MenuItem2,并将其命名为“保存”
				jMenuItem2 = new JMenuItem("保存");
						//实现对jMenuItem2的监听
				jMenuItem2.addActionListener(this);
				jMenuItem2.setActionCommand("保存");				
						//设置jTextArea的背景颜色为
				jTextArea.setBackground(Color.gray);
						//将组件添加上各自的位置
						//将jMenuBar添加到JFrame中
				this.setJMenuBar(jMenuBar);
						//将jMenu添加到jMenuBar中
				jMenuBar.add(jMenu1);
						//将jMenuTItem1添加到Jmenu1中
				jMenu1.add(jMenuItem1);
						//将jMenuTItem2添加到Jmenu1中
				jMenu1.add(jMenuItem2);
						//将jTextArea添加到JFrame中
				this.add(jTextArea);
						//设置窗体的标题
				this.setTitle("SINSY笔记本");
						//设置窗体的大小
				this.setSize(800,600);
						//当关闭窗口的时候,关闭进程
				this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
						//显示窗口
				this.setVisible(true);
			}
			public void actionPerformed(ActionEvent e) {
				if(e.getActionCommand().equals("打开"))
				{
						//实例化一个JFileChoose
					jFileChooser = new JFileChooser();
						//设置文件选择窗口的名字
					jFileChooser.setDialogTitle("请选择路径");
						//设置文件窗口的默认路径
					jFileChooser.showOpenDialog(null);
						//显示文件窗口
					jFileChooser.setVisible(true);
						//用address保存用户编辑文件的绝对路径
						String address = jFileChooser.getSelectedFile().getAbsolutePath();
					try {
						//为fileReader分配空间
						fileReader = new FileReader(address);
						//为bufferedReader分配空间
						bufferedReader = new BufferedReader(fileReader);
						//定义一个str判断输入的字符是否已经为空
						String str = "";
						//定义一个strAll接收文件的全部信息
						String strAll = "";
						//读取文件信息,并将其保存到strAll中
						//循环嵌套
						while((str = bufferedReader.readLine()) != null)
						{
							strAll += str + "\r\n";
						}
						//将strAll中的全部信息显示到JTextArea上
						jTextArea.setText(strAll);
					} catch (Exception e2) {
						e2.printStackTrace();
					}finally{
						try {
							//关闭文件
							bufferedReader.close();
							fileReader.close();
						} catch (Exception e3) {
							e3.printStackTrace();
						}
					}	
				}
					//如果用户点的是保存按钮
				if(e.getActionCommand().equals("保存"))
				{
					//创建一个保存窗口
					JFileChooser jFileChooser1 = new JFileChooser();
					//设置窗口名字
					jFileChooser1.setDialogTitle("另存为... ...");
					//设置默认设置
					jFileChooser1.showSaveDialog(null);
					//显示窗口
					jFileChooser1.setVisible(true);
					try {
						//为fileWrite分配空间
						fileWriter = new FileWriter(jFileChooser1.getSelectedFile().getAbsolutePath());
						//为bufferedWrite分配空间
						bufferedWriter = new BufferedWriter(fileWriter);
						//保存进去
						bufferedWriter.write(this.jTextArea.getText());
					} catch (Exception e2) {
						e2.printStackTrace();
					}finally{
						//关闭文件
						try {
							bufferedWriter.close();
							fileWriter.close();
						} catch (Exception e3) {
							e3.printStackTrace();
						}
					}
				}
			}
		}
	  				//端口扫描功能模块
	  class PortScan extends JFrame {
		  	//直接采用与主类相同的方法直接继承JFrame,使得避免写窗口关闭等方法
		    JPanel center=new JPanel();
		    Box hBox0=Box.createHorizontalBox();
		     Box hBox1= Box.createHorizontalBox();
		     Box hBox2= Box.createHorizontalBox();
		     Box hBox3= Box.createHorizontalBox();
		    private JLabel state=new JLabel("关闭");
		    private JLabel HOST=new JLabel("主机名:");
		    private JLabel PORT=new JLabel("端口号:");
		    private JLabel STATE=new JLabel("状态:");
		    private JButton btn1=new JButton("开始扫描");
		    private JButton reset=new JButton("重置");
		    private JTextField host=new JTextField(20);
		    private JTextField port=new JTextField(7);
		    Font f1=new Font("隶书",Font.PLAIN,15);
		    public static void scan() {
		       //方法迁移到按钮点击事件中
		    }
		    
		    public PortScan(){
		        setTitle("SINSY端口扫描");
		        setSize(300, 200);
		        center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS));
		         Toolkit kit = Toolkit.getDefaultToolkit();
		            Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
		          setLocation(screenSize.width/4,screenSize.height/4);//位置
		          //给参数设置字体
		          state.setFont(f1);
		          HOST.setFont(f1);
		          PORT.setFont(f1);
		          btn1.setFont(f1);
		          reset.setFont(f1);
		          STATE.setFont(f1);
		          //在容器中添加控件
		         center.add(hBox0);
		         center.add(Box.createRigidArea(new Dimension(10,20)));
		         center.add(hBox1);
		         center.add(Box.createRigidArea(new Dimension(2,20)));
		         center.add(hBox2);
		         center.add(Box.createRigidArea(new Dimension(2,20)));
		         center.add(hBox3);
		         hBox0.add(HOST);
		         hBox0.add(host);
		         hBox1.add(PORT);
		         hBox1.add(port);
		         hBox2.add(btn1);
		         hBox2.add(reset);
		         hBox3.add(STATE);
		         hBox3.add(state);
		         //界面中添加主控件
		         add(center);
		         //添加动作监听事件
		         btn1.addActionListener(new MyActionListener());
		         reset.addActionListener(new MyActionListener());
		    }
		    class MyActionListener implements ActionListener{
		        public void actionPerformed(ActionEvent e) {
		            String post1=host.getText();
		            int port1=Integer.parseInt(port.getText());
		            if(e.getActionCommand()=="开始扫描"){
		            if(    PortScannerByIP.scan(post1, port1)){
		                state.setText("开放");
		            }else{
		                state.setText("关闭");
		            }    
		            }
		            if(e.getActionCommand()=="重置"){
		                host.setText("");
		                port.setText("");
		            }
		        }
		    }
		}
	  class PortScannerByIP {
		  			//创建端口扫描类,实现端口扫描功能
			 		//端口扫描IP地址(网址也就是IP地址)
			    public static boolean scan(String host,int port){
			    	//新建scan扫描方法,定义参数ip地址与端口号
			    	//方法调用
			        boolean flag=true;
			        Socket socket=null;
			        try {
			        	//将主机值与端口值放在socket中
			            socket=new Socket(host,port);
			            return flag;
			        } catch (IOException e) {
			            flag=false;
			            return flag;
			        }finally{
			            try {
			                if(socket!=null)
			                	//关闭数据端口测试
			                    socket.close();
			            } catch (IOException e) {
			                e.printStackTrace();
			            }
			        }
			    }
			}

项目截图实例:

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

关于注释:

该有的注释我已经在文中注明,看不懂的可以自行在下方留言,或者加作者QQ358566760进行详细讨论!fntp_sinsy

关于程序制作的基本思路:

  • 框架图与构思
    • 功能实现与算法
      • 应用编程与程序设计(包含软件测试与分析)

(开发简单的程序需不需要写下构思与项目清单呢?)

  • 不做项目清单
  • 制作项目清单
    答案是必须的

程序设计之路是漫长且痛苦的,一起共勉吧!
有疑惑不懂的地方,请及时与笔者沟通:
作者QQ358566760
fntp

发布了15 篇原创文章 · 获赞 29 · 访问量 5408

猜你喜欢

转载自blog.csdn.net/weixin_44085593/article/details/90670129
今日推荐