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

java高校结课项目开发——项目设计:小型软件开发

    • 项目介绍:鑫软工具包
    • 项目完整代码部分:
    • 项目截图实例:
    • 关于注释:
    • 关于程序制作的基本思路:

本项目由本文作者独立开发,引用请标明出处
项目开源: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("

" +u2.toString()+ "
"
+ u1.toString() +""); //实现换行 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(); } } } }

项目截图实例:

java结课项目开发(程序设计)——工具包源码(fntp开源)_第1张图片
java结课项目开发(程序设计)——工具包源码(fntp开源)_第2张图片
java结课项目开发(程序设计)——工具包源码(fntp开源)_第3张图片

关于注释:

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

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

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

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

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

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

你可能感兴趣的:(java)