03.17 实训第十三天

客户端:

1.Client类

2.添加部门信息(录入)DeptAddManager类

package com.zbdx.ui;

import com.zbdx.client.Client;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

/**
 * @Author: 王小甜
 * @Description:
 * @Date Created in 2024-03-17 16:46
 * @Modified By:添加部门信息
 */
public class DeptAddManager extends JFrame {
    //准备显示文字
    JLabel showMsg=new JLabel("部门信息添加");
    JLabel dNum=new JLabel("部门编号:");
    JLabel dName=new JLabel("部门名称:");
    JLabel dDate=new JLabel("成立日期:");
    JLabel dLoc=new JLabel("部门位置:");
    //准备文本编辑框
    JTextField dNumField=new JTextField();
    JTextField dNameField=new JTextField();
    JTextField dDateField=new JTextField();
    JTextField dLocField=new JTextField();
    //准备按钮
    JButton centerBtn=new JButton("添加");
    JButton clearBtn=new JButton("清空");

    public DeptAddManager(DefaultTableModel dtm) {
        setTitle("部门信息添加");
        Container con = getContentPane();//取得父容器
        setLayout(null);//为了使用setBound(参数...)方法
        Font font = new Font("新宋体", Font.PLAIN, 14);
        showMsg.setBounds(150, 20, 160, 30);
        showMsg.setFont(new Font("新宋体", Font.PLAIN, 20));
        con.add(showMsg);

        dNum.setBounds(40, 85, 70, 20);
        dNum.setFont(font);
        con.add(dNum);
        dNumField.setBounds(110, 85, 80, 20);
        con.add(dNumField);

        dName.setBounds(210, 85, 70, 20);
        dName.setFont(font);
        con.add(dName);
        dNameField.setBounds(280, 85, 80, 20);
        con.add(dNameField);

        dDate.setBounds(40, 140, 70, 20);
        dDate.setFont(font);
        con.add(dDate);
        dDateField.setBounds(110, 140, 80, 20);
        con.add(dDateField);

        dLoc.setBounds(210, 140, 70, 20);
        dLoc.setFont(font);
        con.add(dLoc);
        dLocField.setBounds(280, 140, 80, 20);
        con.add(dLocField);

        centerBtn.setBounds(40, 200, 70, 24);
        centerBtn.setFont(font);
        con.add(centerBtn);

        clearBtn.setBounds(300, 200, 70, 24);
        clearBtn.setFont(font);
        con.add(clearBtn);

        Toolkit toolkit = Toolkit.getDefaultToolkit();
        int w = toolkit.getScreenSize().width;//得到屏幕的宽度
        int h = toolkit.getScreenSize().height;//屏幕的高度
        setBounds(w / 2 - 205, h / 2 - 140, 410, 280);//设置窗体的宽度和高度,坐标
        setVisible(true);

        //给添加按钮设置点击事件
        centerBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //获取文本输入框中的数据
                String deptNo = dNumField.getText().trim();
                String deptName = dNameField.getText().trim();
                String deptDate = dDateField.getText().trim();
                String deptLoc = dLocField.getText().trim();
                //将上面获取的内容传递给服务端
                //从服务端获取部门的数据渲染到表格中
                String data = Client.getServerData("addDept%"+deptNo+"%"+deptName+"%"+deptDate+"%"+deptLoc);
                if(Integer.parseInt(data) > 0){//添加成功
                    JOptionPane.showMessageDialog(null,"添加成功!");
                    //当前的窗口消失
                    setVisible(false);
                    //将上面填写的数据添加到列表
                    Vector<String> vector = new Vector<>();
                    vector.add(deptNo);
                    vector.add(deptName);
                    vector.add(deptDate);
                    vector.add(deptLoc);
                    dtm.addRow(vector);
                }else{//添加失败
                    JOptionPane.showMessageDialog(null,"添加失败!");
                }
            }
        });
        //给清空按钮设置点击事件
        clearBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dDateField.setText("");
                dLocField.setText("");
                dNameField.setText("");
                dNumField.setText("");
            }
        });
    }
}

3.表格DeptManager类

package com.zbdx.ui;

import com.zbdx.client.Client;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Vector;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
/**
 * @Author: 王小甜
 * @Description:
 * @Date Created in 2024-03-17 21:07
 * @Modified By:
 */
public class DeptManager extends JPanel{
   private static final long serialVersionUID = 1L;
   //添加信息
   private JLabel showMsg=new JLabel("部门基本信息查询");
   private JLabel empnoLab=new JLabel("部门编号:");
   private JLabel enameLab=new JLabel("部门名称:");
   //两个输入框
   private JTextField deptField=new JTextField();//填写部门编号
   private JTextField deptNameField=new JTextField();//填写部门名称
   //查询按钮
   private JButton searchBtn=new JButton("查询");
   //表格
   private JTable table=null;
   //执行表格列名称
   private String[] colsName={"部门编号","部门名称","部门成立时间","部门位置"};
   private DefaultTableModel dtm=null;//主要是用来封装数据的
   //定义两个属性用于传参
   private JTable jTable=null;
   private DefaultTableModel model=null;

   public DeptManager() {
      this.setLayout(null);
      //实例化其他内容
      Font f=new Font("宋体", Font.PLAIN,14);
      empnoLab.setBounds(20,80,300,20);
      empnoLab.setFont(f);
      add(empnoLab);
      enameLab.setBounds(20,120,300,20);
      enameLab.setFont(f);
      add(enameLab);
      //添加文本输入框
      deptField.setBounds(100,80,80,20);
      deptField.setFont(f);
      add(deptField);
      deptNameField.setBounds(100,120,80,20);
      deptNameField.setFont(f);
      add(deptNameField);
      //添加按钮
      searchBtn.setBounds(100,160,80,20);
      searchBtn.setFont(new Font("新宋体",Font.PLAIN,14));
      add(searchBtn);
      //添加提示
      showMsg.setBounds(360,20,300,26);
      showMsg.setFont(new Font("新宋体",Font.PLAIN,24));
      add(showMsg);
      //添加Table
      dtm=new DefaultTableModel(){//可以消除内容双击获取焦点
         @Override
         public boolean isCellEditable(int row, int column) {
            return false;//内容不可编辑
         }
      };
      table=new JTable(dtm);
      //让JTable中的内容文字居中显示
      DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
      renderer.setHorizontalAlignment(JLabel.CENTER);
      table.setDefaultRenderer(Object.class,renderer);

      JScrollPane pane=new JScrollPane();
      pane.getViewport().add(table);
      dtm.setColumnCount(6);
      dtm.setColumnIdentifiers(colsName);
      pane.setBounds(200,60,480,350);
      add(pane);
      //给要传值的内容赋值
      this.jTable=table;
      this.model=dtm;
      //给内容添加边框
      deptField.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      deptNameField.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      searchBtn.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      pane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      //从服务端获取部门的数据渲染到表格中
      String data = Client.getServerData("getAllDepts");
      //将上面的字符串拆分为单个数据
      String[] item = data.split("%");
      //将数据库中的每行数据的对应字段封装到表格中
      for(int i = 0;i<item.length;i++){
         Vector<String> vr = new Vector<>();
         String[] itemData = item[i].split(",");
         for (int j = 0; j < itemData.length; j++) {
            vr.add(itemData[j]);
         }
         dtm.addRow(vr);
      }
      //给表格中的数据添加事件
      table.addMouseListener(new MouseListener() {

         @Override
         public void mouseReleased(MouseEvent e) {//弹起鼠标执行此方法
         }

         @Override
         public void mousePressed(MouseEvent e) {//按下鼠标执行的方法
         }

         @Override
         public void mouseExited(MouseEvent e) {//失去焦点的时候执行此方法
         }

         @Override
         public void mouseEntered(MouseEvent e) {//获取焦点则执行此方法
         }

         @Override
         public void mouseClicked(MouseEvent e) {//完成点击执行此方法
            new DeptUpdateManager();
         }
      });
      //给查询按钮设置点击事件
      searchBtn.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
            //获取查询的条件
            String deptNo = deptField.getText().trim();
            String deptName = deptNameField.getText().trim();
            System.out.println("要查询部门信息-->"+deptNo+"-->"+deptName);
            //从服务端获取部门的数据渲染到表格中
            String data = Client.getServerData("getAllDepts%"+deptNo+"%"+deptName);
            //将上面的字符串拆分为单个数据
            String[] item = data.split("%");
            //清空之前列表的数据
            dtm.setRowCount(0);
            //将数据库中的每行数据的对应字段封装到表格中
            for(int i = 0;i<item.length;i++){
               String[] itemData = item[i].split(",");
               dtm.addRow(itemData);
            }
         }
      });
   }

   public JTable getjTable() {
      return jTable;
   }
   public DefaultTableModel getModel() {
      return model;
   }
}

4.部门信息管理界面DeptUpdateManager类

package com.zbdx.ui;

import javax.swing.*;
import java.awt.*;

/**
 * @Author: 王小甜
 * @Description:
 * @Date Created in 2024-03-17 21:07
 * @Modified By:
 */
public class DeptUpdateManager extends JFrame {
    //准备显示文字
    JLabel showMsg=new JLabel("部门信息管理");
    JLabel dNum=new JLabel("部门编号:");
    JLabel dName=new JLabel("部门名称:");
    JLabel dDate=new JLabel("成立日期:");
    JLabel dLoc=new JLabel("部门位置:");
    //准备文本编辑框
    JTextField dNumField=new JTextField();
    JTextField dNameField=new JTextField();
    JTextField dDateField=new JTextField();
    JTextField dLocField=new JTextField();
    //准备按钮
    JButton centerBtn=new JButton("更新");
    JButton delBtn=new JButton("删除");
    JButton clearBtn=new JButton("清空");

    public DeptUpdateManager() {
        setTitle("部门信息管理");
        Container con = getContentPane();//取得父容器
        setLayout(null);//为了使用setBound(参数...)方法
        Font font = new Font("新宋体", Font.PLAIN, 14);
        showMsg.setBounds(150, 20, 160, 30);
        showMsg.setFont(new Font("新宋体", Font.PLAIN, 20));
        con.add(showMsg);

        dNum.setBounds(40, 85, 70, 20);
        dNum.setFont(font);
        con.add(dNum);
        dNumField.setBounds(110, 85, 80, 20);
//        dNumField.setEditable(false);//当前输入框不能编辑了
        con.add(dNumField);

        dName.setBounds(210, 85, 70, 20);
        dName.setFont(font);
        con.add(dName);
        dNameField.setBounds(280, 85, 80, 20);
        con.add(dNameField);

        dDate.setBounds(40, 140, 70, 20);
        dDate.setFont(font);
        con.add(dDate);
        dDateField.setBounds(110, 140, 80, 20);
        con.add(dDateField);

        dLoc.setBounds(210, 140, 70, 20);
        dLoc.setFont(font);
        con.add(dLoc);
        dLocField.setBounds(280, 140, 80, 20);
        con.add(dLocField);

        centerBtn.setBounds(40, 200, 70, 24);
        centerBtn.setFont(font);
        con.add(centerBtn);

        clearBtn.setBounds(270, 200, 70, 24);
        clearBtn.setFont(font);
        con.add(clearBtn);

        delBtn.setBounds(154, 200, 70, 24);
        delBtn.setFont(font);
        con.add(delBtn);

        //初始化数据
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        int w = toolkit.getScreenSize().width;//得到屏幕的宽度
        int h = toolkit.getScreenSize().height;//屏幕的高度
        setBounds(w / 2 - 205, h / 2 - 140, 410, 280);//设置窗体的宽度和高度,坐标
        setVisible(true);
    }
    public static void main(String[] args) {
        new DeptUpdateManager();
    }
}

运行截图:

5.员工基本信息查询EmpManager类

package com.zbdx.ui;
import com.zbdx.client.Client;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;

public class EmpManager extends JPanel{
   private static final long serialVersionUID = 1L;
   //添加信息
   private JLabel showMsg=new JLabel("员工基本信息查询");
   private JLabel empnoLab=new JLabel("员工编号:");
   private JLabel enameLab=new JLabel("员工姓名:");
   //两个输入框
   private JTextField empnoField=new JTextField();//同来填写员工编号的
   private JTextField enameField=new JTextField();//同来填写员工姓名的
   //查询按钮
   private JButton searchBtn=new JButton("查询");
   //表格
   private JTable table=null;
   //执行表格列名称
   private String[] colsName={"员工编号","员工名称","工作岗位","薪资","部门编号","雇佣日期"};
   private DefaultTableModel dtm=null;//主要是用来封装数据的
   //定义两个属性用于传参
   private JTable jTable=null;
   private DefaultTableModel model=null;

   public EmpManager() {
      this.setLayout(null);
      //实例化其他内容
      Font f=new Font("宋体", Font.PLAIN,14);
      empnoLab.setBounds(20,80,300,20);
      empnoLab.setFont(f);
      add(empnoLab);
      enameLab.setBounds(20,120,300,20);
      enameLab.setFont(f);
      add(enameLab);
      //添加文本输入框
      empnoField.setBounds(100,80,80,20);
      empnoField.setFont(f);
      add(empnoField);
      enameField.setBounds(100,120,80,20);
      enameField.setFont(f);
      add(enameField);
      //添加按钮
      searchBtn.setBounds(100,160,80,20);
      searchBtn.setFont(new Font("新宋体",Font.PLAIN,14));
      add(searchBtn);
      //添加提示
      showMsg.setBounds(360,20,300,26);
      showMsg.setFont(new Font("新宋体",Font.PLAIN,24));
      add(showMsg);
      //添加Table
      dtm=new DefaultTableModel(){//可以消除内容双击获取焦点
         @Override
         public boolean isCellEditable(int row, int column) {
            return false;//内容不可编辑
         }
      };
      table=new JTable(dtm);
      //让JTable中的内容文字居中显示
      DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
      renderer.setHorizontalAlignment(JLabel.CENTER);
      table.setDefaultRenderer(Object.class,renderer);

      JScrollPane pane=new JScrollPane();
      pane.getViewport().add(table);
      dtm.setColumnCount(6);
      dtm.setColumnIdentifiers(colsName);
      pane.setBounds(200,60,480,350);
      add(pane);
      //给要传值的内容赋值
      this.jTable=table;
      this.model=dtm;
      //给内容添加边框
      empnoField.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      enameField.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      searchBtn.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      pane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
      //从服务端获取部门的数据渲染到表格中
      String data = Client.getServerData("getAllEmps");
      //将上面的字符串拆分为单个数据
      String[] item = data.split("%");
      //将数据库中的每行数据的对应字段封装到表格中
      for(int i = 0;i<item.length;i++){
         String[] itemData = item[i].split(",");
         dtm.addRow(itemData);
      }

      //给表格中的数据添加事件
      table.addMouseListener(new MouseListener() {

         @Override
         public void mouseReleased(MouseEvent e) {//弹起鼠标执行此方法
         }

         @Override
         public void mousePressed(MouseEvent e) {//按下鼠标执行的方法
         }

         @Override
         public void mouseExited(MouseEvent e) {//失去焦点的时候执行此方法
         }

         @Override
         public void mouseEntered(MouseEvent e) {//获取焦点则执行此方法
         }

         @Override
         public void mouseClicked(MouseEvent e) {//完成点击执行此方法
            new EmpUpdateManager();
         }
      });
      //给查询按钮设置点击事件
      searchBtn.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
            //获取查询的条件
            String empNo = empnoField.getText().trim();
            String eName = enameField.getText().trim();
            //从服务端获取部门的数据渲染到表格中
            String data = Client.getServerData("getAllEmps%"+empNo+"%"+eName);
            //将上面的字符串拆分为单个数据
            String[] item = data.split("%");
            //清空之前列表的数据
            dtm.setRowCount(0);
            //将数据库中的每行数据的对应字段封装到表格中
            for(int i = 0;i<item.length;i++){
               String[] itemData = item[i].split(",");
               dtm.addRow(itemData);
            }
         }
      });
   }

   public JTable getjTable() {
      return jTable;
   }
   public DefaultTableModel getModel() {
      return model;
   }
}

6.员工信息管理EmpUpdateManager类

package com.zbdx.ui;
import javax.swing.*;
import java.awt.*;

/**
 * @Author: 王小甜
 * @Description:
 * @Date Created in 2024-03-17 21:09
 * @Modified By:
 */
public class EmpUpdateManager extends JFrame {
    //准备显示文字
    JLabel showMsg=new JLabel("员工信息管理");
    JLabel eNum=new JLabel("员工编号:");
    JLabel eName=new JLabel("员工姓名:");
    JLabel eDate=new JLabel("入职日期:");
    JLabel eSal=new JLabel("员工薪资:");
    JLabel eJob=new JLabel("职    位:");
    JLabel deptno=new JLabel("部门编号:");
    //准备文本编辑框
    JTextField eNumField=new JTextField();
    JTextField eNameField=new JTextField();
    JTextField eDateField=new JTextField();
    JTextField eSalField=new JTextField();
    JTextField eJobField=new JTextField();
    JTextField deptnoField=new JTextField();
    //准备按钮
    JButton centerBtn=new JButton("提交");
    JButton clearBtn=new JButton("清空");
    JButton delBtn=new JButton("删除");

    public EmpUpdateManager() {
        setTitle("部门信息管理");
        Container con=getContentPane();//取得父容器
        setLayout(null);//为了使用setBound(参数...)方法
        Font font=new Font("新宋体",Font.PLAIN,14);
        showMsg.setBounds(150,20,160,30);
        showMsg.setFont(new Font("新宋体",Font.PLAIN,20));
        con.add(showMsg);

        eNum.setBounds(40,85,70,20);
        eNum.setFont(font);
        con.add(eNum);
        eNumField.setBounds(110,85,60,20);
        con.add(eNumField);

        eName.setBounds(210,85,70,20);
        eName.setFont(font);
        con.add(eName);
        eNameField.setBounds(280,85,60,20);
        con.add(eNameField);

        deptno.setBounds(40,140,70,20);
        deptno.setFont(font);
        con.add(deptno);
        deptnoField.setBounds(110,140,60,20);
        con.add(deptnoField);

        eDate.setBounds(210,140,70,20);
        eDate.setFont(font);
        con.add(eDate);
        eDateField.setBounds(280,140,60,20);
        con.add(eDateField);

        eSal.setBounds(40,195,70,20);
        eSal.setFont(font);
        con.add(eSal);
        eSalField.setBounds(110,195,60,20);
        con.add(eSalField);

        eJob.setBounds(210,195,70,20);
        eJob.setFont(font);
        con.add(eJob);
        eJobField.setBounds(280,195,60,20);
        con.add(eJobField);

        centerBtn.setBounds(40,260,70,24);
        centerBtn.setFont(font);
        con.add(centerBtn);

        clearBtn.setBounds(270,260,70,24);
        clearBtn.setFont(font);
        con.add(clearBtn);

        delBtn.setBounds(154,260,70,24);
        delBtn.setFont(font);
        con.add(delBtn);
        Toolkit toolkit=Toolkit.getDefaultToolkit();
        int w=toolkit.getScreenSize().width;//得到屏幕的宽度
        int h=toolkit.getScreenSize().height;//屏幕的高度
        setBounds(w/2-205,h/2-170,410,340);//设置窗体的宽度和高度,坐标
        setVisible(true);
    }
}

7.员工管理系统的登陆界面Login类

package com.zbdx.ui;

import com.zbdx.client.Client;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Login extends JFrame{//窗体的子类
    //单行文本框   密码输入框
    private JTextField userNameField = new JTextField();
    private JPasswordField passwordField = new JPasswordField();
    //两个按钮  重置   登录
    private JButton loginBtn = new JButton("登录");
    private JButton resetBtn = new JButton("重置");
    //文本显示组件 title     用户名:   密码:
    private JLabel userNameText = new JLabel("用户名:");
    private JLabel passwordText = new JLabel("密码:");
    private JLabel titleText = new JLabel("员工管理系统");
    //无参构造
    public Login() {
        //创建窗体对象
        setTitle("登录");
        //设置字体
        Font font = new Font("新宋体",Font.PLAIN,12);
        //获取当前窗体的容器
        Container container = getContentPane();
        //设置布局管理器
        container.setLayout(null);
        //设置上面定义好的组件的显示位置
        //系统名称
        titleText.setBounds(105,10,110,20);
        titleText.setFont(new Font("新宋体",Font.PLAIN,16));
        //用户名字体显示
        userNameText.setBounds(45,40,55,20);
        userNameText.setFont(font);
        //用户名输入
        userNameField.setBounds(95,40,120,20);
        userNameField.setFont(font);
        //密码文字显示
        passwordText.setBounds(45,70,55,20);
        passwordText.setFont(font);
        //密码输入
        passwordField.setBounds(95,70,120,20);
        passwordField.setFont(font);
        //重置  登录  按钮
        loginBtn.setBounds(90,110,60,20);
        loginBtn.setFont(font);
        resetBtn.setBounds(155,110,60,20);
        resetBtn.setFont(font);
        //向容器中添加title文本
        container.add(titleText);
        container.add(userNameText);
        container.add(passwordText);
        container.add(userNameField);
        container.add(passwordField);
        container.add(loginBtn);
        container.add(resetBtn);
        //获取屏幕的大小
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        int width = toolkit.getScreenSize().width;
        int height = toolkit.getScreenSize().height;
        //设置窗体的显示位置大小
        setBounds((width-300)/2,(height-180)/2,300,180);
        //显示窗体
        setVisible(true);
        //给相应的组件设置事件处理
        loginBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String userName = userNameField.getText().trim();//获取用户名输入的内容并去掉空格
                String password = passwordField.getText().trim();//获取密码输入的内容并去掉空格
                //判断用户名和密码是否为空
                if("".equals(userName)){
                    JOptionPane.showMessageDialog(null,"用户名不能为空...");
                }else if("".equals(password)){
                    System.out.println("密码不能为空");
                    JOptionPane.showMessageDialog(null,"密码不能为空...");
                }else{
                    //将是用户名和密码发送给服务端进行相关的验证
                    boolean result = Boolean.parseBoolean(Client.getServerData("login%"+userName+"%"+password));
                    //判断是否登录成功
                    if(result){
                        //登录成功进行页面的跳转--弹出主页面
                        new Main();
                        //让登录界面隐藏
                        setVisible(false);
                    }else{
                        JOptionPane.showMessageDialog(null,"用户名或者密码错误...");
                    }
                }
            }
        });
        resetBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //清空用户名和密码的输入框
                userNameField.setText("");
                passwordField.setText("");
            }
        });
    }
    public static void main(String[] args) {
        new Login();
    }
}

运行截图:

8.主方法Main类

package com.zbdx.ui;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame{//窗体的子类
    private CardLayout cardLayout = null;
    private JTable table = null;
    //定义两个参数用于传参
    private JTable jTable = null;
    private DefaultTableModel model = null;

    //无参构造
    public Main() {
        //创建窗体对象
        setTitle("基本信息查询");
        //设置字体
        Font font = new Font("新宋体",Font.PLAIN,12);
        //获取当前窗体的容器
        Container container = getContentPane();
        //设置布局管理器  卡片布局
        cardLayout = new CardLayout();
        container.setLayout(cardLayout);
        //添加菜单
        addMenu();
        //添加功能页面
        DeptManager deptManager = new DeptManager();
        model =deptManager.getModel();
        container.add("dept",deptManager);
        container.add("emp",new EmpManager());

        //获取屏幕的大小
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        int width = toolkit.getScreenSize().width;
        int height = toolkit.getScreenSize().height;
        //设置窗体的显示位置大小
        setBounds((width-700)/2,(height-480)/2,700,480);
        //显示窗体
        setVisible(true);
    }
    //给主界面添加菜单
    public void addMenu(){
        Font font=new Font("新宋体",Font.PLAIN,12);//指定文字的
        JMenuBar jMenuBar=new JMenuBar();//用来添加菜单的
        //实例化菜单
        //第一个菜单及其子菜单
        JMenu first=new JMenu("系统管理");
        first.setFont(font);
        //添加子菜单
        JMenuItem password=new JMenuItem("修改密码");
        password.setFont(font);
        JMenuItem exit=new JMenuItem("退出程序");
        exit.setFont(font);
        password.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //弹出一个新的窗口

            }
        });
        exit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);//退出程序
            }
        });

        first.add(password);
        first.add(exit);

        //第二个菜单及其子菜单
        JMenu second=new JMenu("增加信息");
        second.setFont(font);
        //添加子菜单
        JMenuItem empM=new JMenuItem("增加员工信息");
        empM.setFont(font);
        JMenuItem deptM=new JMenuItem("增加部门信息");
        deptM.setFont(font);

        empM.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("增加员工信息");
            }
        });

        deptM.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new DeptAddManager(model);
            }
        });

        second.add(empM);
        second.add(deptM);

        //第三个菜单及其子菜单
        JMenu third=new JMenu("信息查询");
        third.setFont(font);
        //添加子菜单
        JMenuItem deptS=new JMenuItem("部门信息查询");
        deptS.setFont(font);
        JMenuItem empS=new JMenuItem("员工信息查询");
        empS.setFont(font);

        third.add(deptS);
        third.add(empS);
        deptS.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //显示部门信息列表
                cardLayout.show(getContentPane(),"dept");
            }
        });
        empS.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //显示员工信息列表
                cardLayout.show(getContentPane(),"emp");
            }
        });

        //第四个菜单及其子菜单
        JMenu forth=new JMenu("帮组");
        forth.setFont(font);

        //第五个菜单及其子菜单
        JMenu fifth=new JMenu("关于");
        fifth.setFont(font);
        //将菜单放入JMenuBar李
        jMenuBar.add(first);
        jMenuBar.add(second);
        jMenuBar.add(third);
        jMenuBar.add(forth);
        jMenuBar.add(fifth);
        setJMenuBar(jMenuBar);//将菜单添加到左上方
    }
    public static void main(String[] args) {
        new Main();
    }
}

运行截图:

服务端:

1.DeptDao类

package com.zbdx.dao;

import com.zbdx.util.DBUtils;

import javax.swing.table.DefaultTableModel;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

//持久层代码编写
public class DeptDao {
    //查询全部部门信息
    public static String getAllDepts(String content){
        //给客户端返回的字符串
        String data = "";
        try {
            //获取数据库连接对象
            Connection connection = DBUtils.getConnection();
            //编写sql语句
            String sql = "";
            String[] item = content.split("%");
            if(item.length == 2){//根据闭门编号查询数据
                sql = "select * from dept where deptno like '%"+item[1]+"%'";
            }else if(item.length == 3){
                sql = "select * from dept where deptno like '%"+item[1]+"%' and  dname like '%"+item[2]+"%'";
            }else{
                sql = "select * from dept";
            }
            //获取sql语句的对象
            PreparedStatement pst = connection.prepareStatement(sql);
            //执行sql语句
            ResultSet resultSet = pst.executeQuery();//查询的结果集

            //从结果集中获取数据
            while(resultSet.next()){
                data += resultSet.getString("deptno")+","+resultSet.getString("dname")+","+resultSet.getString("ddate")
                        +","+resultSet.getString("dloc")+"%";
            }
            System.out.println(data);
            //释放自愿
            DBUtils.close(connection,pst,resultSet);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return data;
    }
    //查询全部部门信息
    public static int addDept(String content){
        //给客户端返回的结果
        int result = 0;
        try {
            //获取数据库连接对象
            Connection connection = DBUtils.getConnection();
            String[] item = content.split("%");
            //编写sql语句
            String sql = "insert into dept values(?,?,?,?)";
            //获取sql语句的对象
            PreparedStatement pst = connection.prepareStatement(sql);
            //设置参数内容
            pst.setInt(1,Integer.parseInt(item[1]));
            pst.setString(2,item[2]);
            pst.setString(3,item[3]);
            pst.setString(4,item[4]);
            //执行sql语句
            result = pst.executeUpdate();//执行添加操作
            //释放自愿
            DBUtils.close(connection,pst,null);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return result;
    }
}

2.EmpDao类

3.ManagerDao类

4.Server类

package com.zbdx.server;

import com.zbdx.dao.DeptDao;
import com.zbdx.dao.EmpDao;
import com.zbdx.dao.ManagerDao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        //实例化服务端的对象
        ServerSocket server = new ServerSocket(7777);
        //接收多个客户端的连接请求
        boolean flag = true;
        while(flag){
            System.out.println("服务端已经启动,等待客户端的连接:");
            //等待客户端的连接
            Socket client = server.accept();
            System.out.println("有客户端连接了服务端-->"+client);
            //获取客户端的对象的输入输出流对象
            PrintStream printStream = new PrintStream(client.getOutputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));//获取字节输入流对应的缓冲流对象
            //一直保持和客户端的通信
            //处理业务(接收客户端发送的数据)
            String data = reader.readLine();//读取客户端发送过来的数据
            System.out.println("客户端发送的数据为--->"+data);
            //根据客户端发送过来的数据做出数据库的相关执行操作
            String[] content = data.split("%");//拆分客户端发送过来的字符串
            String tag = content[0];//获取第一个字符串---用来判断呀执行的操作
            //定义字符串给客户端输出
            String result = "";
            if("login".equals(tag)){//执行登录操作
                result = String.valueOf(ManagerDao.login(content[1],content[2]));
            }else if("getAllDepts".equals(tag)){
                result = DeptDao.getAllDepts(data);//获取所有部门的信息
            }else if("addDept".equals(tag)){
                result = DeptDao.addDept(data)+"";//获取所有员工的信息
            }else if("getAllEmps".equals(tag)){
                result = EmpDao.getAllEmps(data);//获取所有员工的信息
            }
            printStream.println(result);//将查询结果返回给客户端
            //释放资源
            printStream.close();
            reader.close();
            client.close();
        }
    }
}

运行截图:

5.DBUtils类

package com.zbdx.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

//封装连接与关闭的工具类
public class DBUtils {
    private static String url = "";
    private static String username = "";
    private static String password = "";

    //静态代码块  只执行一次
    static {
        InputStream inputStream = DBUtils.class.getClassLoader().getResourceAsStream("com/zbdx/util/jdbc.properties");
        Properties properties = new Properties();
        try {
            properties.load(inputStream);
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            try {
                Class.forName("java.sql.Driver");
//                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println();
    }



    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }

    public static  void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){
        //6.释放资源 Connection,PreparedStatement,ResultSet,释放时需从后往前 先创建的最后释放
        //如果connection,preparedStatement,resultSet对象为 null 触发JVM GC(垃圾回收机制) 过一会自动回收
        if (resultSet != null) {
            try {

                //释放
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws SQLException {
        System.out.println( DBUtils.getConnection());
    }
}
  • 31
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值