cjskcnsic 2015-11-17 02:55 采纳率: 0%
浏览 1511

一段代码,调试很久没调试出来,求帮忙,哪里出了问题

一段代码,调试很久没调试出来,求帮忙,哪里出了问题,代码贴在下面

  • 写回答

6条回答 默认 最新

  • cjskcnsic 2015-11-17 02:56
    关注

    import java.awt.*;

    import javax.swing.*;

    import java.awt.event.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    class mywork
    {

    //定义下列变量是为了重复书写时更方便。
    private String driver="com.mysql.jdbc.Driver";
    private String url="jdbc:mysql://127.0.0.1:3306/technology";
    private String user="root";
    private String pass="root";
    
    JFrame jfMajor;        //主界面
    Dialog dEnter1,dRegister1,dFunction;      //定义:第一个登录弹窗,第一个注册弹窗,以及功能弹窗
    JButton jbLogin,jbRegister;       //主界面的登录、注册按钮
    JButton jbEnsure1,jbCanel1,jbEnsure2,jbCanel2,jbEnsure3;   //三组   “确定、取消” 按钮
    JButton jbInquire,jbInsert,jbDelete;           //登录成功界面后的  “查询、插入、删除”按钮
    JLabel jlTitle,jlUser,jlPass;     //标签:主标题标签、用户名标签、密码标签
    TextField tfUser;         //账号  输入框
    JPasswordField tfPass;    //密码  输入框
    
    mywork()                   //mywork类的构造方法,new一个对象时自动调用
    {
        init();
    }
    
    public void init()
    {
        //连接数据库的必备语句
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }
    
    
        //创建主登录界面
        jfMajor=new JFrame();
        jlTitle=new JLabel("江西农业大学三检工作系统");  //设置主标题
        jbLogin=new JButton("登陆");
        jbRegister=new JButton("注册");
    
        jfMajor.setVisible(true);
        jfMajor.setBounds(400,200,400,300);
        jfMajor.setLayout(null);
        jfMajor.setResizable(false);
        jbLogin.setBounds(110,130,70,30);
        jbRegister.setBounds(200,130,70,30);
        jlTitle.setBounds(110,70,200,50);
    
        jfMajor.add(jbLogin);
        jfMajor.add(jbRegister);
        jfMajor.add(jlTitle);
    
        dEnter1=new Dialog(jfMajor,"用户登陆",true);
        dRegister1=new Dialog(jfMajor,"用户注册",true);
        dFunction=new Dialog(jfMajor,"登陆成功",true);
    
        //不同界面的 “确定、取消” 按钮
        jbEnsure1=new JButton("确定");   
        jbEnsure2=new JButton("确定");
        jbEnsure3=new JButton("确定");
        jbCanel1=new JButton("取消");                     
        jbCanel2=new JButton("取消");   
    
        //查询按钮
        jbInquire=new JButton("查询");
    
        myEvent();    //监听事件
    }
    
    //所有事件的监听器都放在这个方法中
    public void myEvent() {
    
        jfMajor.addWindowListener(new WindowAdapter() {             //主登录窗口退出   事件监听
            public void windowClosing(WindowEvent e) {  
                System.exit(0);
            }
        });
    
        dFunction.addWindowListener(new WindowAdapter() {           //功能弹窗界面退出  事件监听
            public void windowClosing(WindowEvent e) {
                dFunction.setVisible(false);
            }
        }); 
    
        dEnter1.addWindowListener(new WindowAdapter() {             //第一个登录界面退出  事件监听         
            public void windowClosing(WindowEvent e) {          
                dEnter1.setVisible(false);
            }
        });
    
        dRegister1.addWindowListener(new WindowAdapter() {              //第一个注册界面退出  事件监听
            public void windowClosing(WindowEvent e) {  
                dRegister1.setVisible(false);
            }
        });
    
        jbEnsure1.addActionListener(new ActionListener() {          //确认按钮的的点击 事件监听                                                             
            public void actionPerformed(ActionEvent e) {                //点击后,运行指定方法
                //StudentLogin();
                ManagerLogin();                                         
            }
        });
    
        jbEnsure2.addActionListener(new ActionListener() {          //确认按钮的点击  事件监听                                                           
            public void actionPerformed(ActionEvent e) {                //点击后,运行指定方法
                Register();                                         
            }
        });
    
        jbEnsure3.addActionListener(new ActionListener() {          //确认按钮的点击 事件监听                                                        
            public void actionPerformed(ActionEvent e) {                //点击后,将第一个注册界面隐藏
                dRegister1.setVisible(false);
            }
        });
    
        jbCanel1.addActionListener(new ActionListener() {           //取消按钮的点击  事件监听                                           
            public void actionPerformed(ActionEvent e) {                //点击后,隐藏第一个登录界面
                dEnter1.setVisible(false);
            }
        });
    
        jbCanel2.addActionListener(new ActionListener() {           //取消按钮的点击  事件监听                                                                                                                                           
            public void actionPerformed(ActionEvent e) {                //点击后,隐藏第一个注册界面
                dRegister1.setVisible(false);
            }
        });
    
        jbLogin.addActionListener(new ActionListener() {                //登录按钮的点击  事件监听                                                               
            public void actionPerformed(ActionEvent e) {                    //点击后,运行指定方法
                Login();
            }
        });
    
        jbRegister.addActionListener(new ActionListener() {         //注册按钮的点击  事件监听                                                               //点击后,运行指定方法
            public void actionPerformed(ActionEvent e) {                //点击后,运行指定方法            
                Register();
            }
        }); 
    }
    
    //当点击第一个登录界面的确定按钮,输入的正确账号为学生账号时,运行该方法
    //该方法的功能为:验证输入的账号密码是否正确(学生),如正确,则弹出功能弹窗
    public void StudentLogin() {
        dEnter1.setVisible(false);         
    
        dFunction.setBounds(470,240,260,230);
        jbInquire.setBounds(70,90,100,40);  
        dFunction.setLayout(null);
    
        dFunction.add(jbInquire);
        dFunction.setResizable(false);
        dFunction.setVisible(true);
    }
    
    //当点击第一个登录界面的确定按钮,输入的正确账号为管理员账号时,运行该方法
    //该方法的功能为:验证输入的账号密码是否正确(管理员),如正确,则弹出功能弹窗
    public void ManagerLogin() {
        dEnter1 = new Dialog(jfMajor,"用户登录",true);
    
        //拿到输入框中的账号密码
        String z_user=String.valueOf(tfUser.getText());                 
        String z_pass=String.valueOf(tfPass.getText());
    
        //将输入框设置为空,方便下一次的输入
        tfUser.setText("");                                    
        tfPass.setText("");
    
        Connection conn = null;
        PreparedStatement psta=null;
        ResultSet rs = null;
    
        //这个sql语句的作用是将输入框中的账号进行检验,如果存在,就把这个账号对应的账号密码以表格的形式调出
        String sql = "select r_account,r_password from register where r_account = ?";
    
        //如果账号或者密码有一个输入框为空,则提示后重新输入
        if(z_user.equals("")||z_pass.equals("")) { 
            JOptionPane.showMessageDialog(dEnter1,"登录密码或账户不能为空!!!!","警告,提醒!!!",JOptionPane.INFORMATION_MESSAGE);
            tfUser.setText("");
            tfPass.setText("");
        }
    
        else {  
            try {       //如果账号密码都有输入,则连接数据库进行判断
                conn=DriverManager.getConnection(url,user,pass);
                psta=conn.prepareStatement(sql);
                psta.setString(1,z_user);                     
                rs=psta.executeQuery();
    
                //判断输入框输入的账号是否在数据库中存在,如果存在,则调出该账号对应的密码,与输入的密码进行判断
                if(rs.next()) {              
                    if(z_pass.equals(rs.getString(2))) {          //rs.getString(2) ,根据前面的那个sql语句,r_password是第二个参数,故getString(2),拿出密码  
                        tfUser.setText("");
                        tfPass.setText("");
                        //若密码也验证通过,提示登录成功,完成相应界面
                        JOptionPane.showMessageDialog(dEnter1,"登录成功");     
                        dEnter1.setVisible(false);                           //登录成功后,将第一个登录界面隐藏
    
                        //功能界面的完成
                        jbInquire=new JButton("查询");
                        jbInsert=new JButton("插入");
                        jbDelete=new JButton("删除");
                        dFunction.setBounds(470,240,260,230);
                        jbInquire.setBounds(70,50,100,40);
                        jbInsert.setBounds(70,100,100,40);
                        jbDelete.setBounds(70,150,100,40);
                        dFunction.setLayout(null);
                        dFunction.add(jbInquire);
                        dFunction.add(jbInsert);
                        dFunction.add(jbDelete);
                        dFunction.setResizable(false);
                        dFunction.setVisible(true);
                    }
                    else {     //若密码验证不通过,则进行相应提示
                        JOptionPane.showMessageDialog(dEnter1,"密码输入错误!!!","提醒!!警告!!!",JOptionPane.ERROR_MESSAGE);
                    }
                }
    
                else {     //若一开始的账号验证就没有通过,同样进行相应提示
                    JOptionPane.showMessageDialog(dEnter1,"用户名不存在,请重新输入或注册一个账户!!!","提醒!!!",JOptionPane.INFORMATION_MESSAGE);
                    tfUser.setText("");
                    tfPass.setText("");
                }
    
            } catch(SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(rs != null) {
                        rs.close();
                    }
                    if(psta != null) {
                        psta.close();
                    }
                    if(conn != null) {
                        conn.close();
                    }
                }catch(SQLException e) {
                    e.printStackTrace();
                } 
            }
    
        }   
    }
    
    //此方法为当点击主界面的登录按钮后,需响应的方法
    //主要功能为完成第一个登录界面
    public void Login() {
        jlUser=new JLabel("用户名");
        jlPass=new JLabel("密    码");
        tfUser=new TextField();
        tfPass=new JPasswordField();
    
        tfPass.setEchoChar('*');
        tfUser.setBounds(80,60,120,30);
        tfPass.setBounds(80,100,120,30);
        tfUser.setFont(new Font("宋体",1,20));
        tfPass.setFont(new Font("宋体",1,20));
    
        jbEnsure1.setBounds(50,150,70,30);
        jbCanel1.setBounds(150,150,70,30);
        jlUser.setBounds(20,60,50,30);
        jlPass.setBounds(20,100,50,30);
    
        dEnter1.setBounds(470,240,260,230);
        dEnter1.setLayout(null);
        dEnter1.setResizable(false);
    
        dEnter1.add(jlUser);
        dEnter1.add(jlPass);
        dEnter1.add(jbEnsure1);
        dEnter1.add(jbCanel1);
        dEnter1.add(tfUser);
        dEnter1.add(tfPass);
    
        dEnter1.setVisible(true);       
    }
    
    //此方法为当点击第一个注册界面中的确定按钮后,需相应的方法
    //此方法的功能为,完场合乎规格的账号的注册,将其写入到数据库中
    public void Register() {
        String z_user=String.valueOf(tfUser.getText());
        String z_pass=String.valueOf(tfPass.getText());
    
        tfUser.setText("");
        tfPass.setText("");
    
        Connection conn = null;
        PreparedStatement psta=null;
        ResultSet rs = null;
        String sql = null;
    
        try {
            conn = DriverManager.getConnection(url,user,pass);
    
            //这个sql语句的功能是判断输入的账号已在数据库中,已被注册
            sql = "select r_account from register where r_account=?";       
            psta = conn.prepareStatement(sql);
            psta.setString(1, z_user);
            rs = psta.executeQuery();
    
            if(rs.next()) {              //若输入的账号已被注册,则进行相应提示,重新输入
                JOptionPane.showMessageDialog(jbEnsure1, "该用户已注册,请重新输入用户名!!",
                        "提醒!",JOptionPane.INFORMATION_MESSAGE);
                tfUser.setText("");
                tfPass.setText("");
            }
    
            else {       //若账号未被注册 
                if(z_pass.length()>=6) {                 //注册账号的密码需不少于6位
    
                    //此sql语句的作用是将满足账号密码  插入到表中
                    sql = "insert into register (r_account,r_password) values (?, ?)";
                    psta = conn.prepareStatement(sql);
                    psta.setString(1,z_user);
                    psta.setString(2,z_pass);
                    psta.executeUpdate();
    
                    dRegister1.setVisible(false);
                    dRegister1=new Dialog(dRegister1, "提示", true);
                    jlUser=new JLabel("恭喜您注册成功!");
    
                    dRegister1.setBounds(520, 300, 80, 100);
    
                    dRegister1.add(jlUser);
                    dRegister1.add(jbEnsure3);
    
                    dRegister1.setVisible(true);
    
                }
                else {   //若密码不满足6位
                     JOptionPane.showMessageDialog(jbEnsure1,"密码须大于六位!!!","提醒!",JOptionPane.INFORMATION_MESSAGE);
                        tfUser.setText("");
                        tfPass.setText("");
                }
            }
        }
        catch(SQLException e) {
            e.printStackTrace();
        }
        finally {
            try {
                if(conn != null) {
                    psta.close();
                }
                if(psta != null) {
                    conn.close();
                }
            } catch(SQLException e) {
                e.printStackTrace();
            }
        }
    
    }
    
    //此方法在点击主登录界面的注册按钮时被调用
    //主要功能为完成第一个注册界面
    public void dRegister() {
    
        jlUser=new JLabel("注册名");
        jlPass=new JLabel("密    码");
        tfUser=new TextField();
        tfPass=new JPasswordField();
    
        tfPass.setEchoChar('*');
        tfUser.setBounds(80,60,120,30);
        tfPass.setBounds(80,100,120,30);
        tfUser.setFont(new Font("宋体",1,20));
        tfPass.setFont(new Font("宋体",1,20));
    
        jbEnsure2.setBounds(50,150,70,30);
        jbCanel2.setBounds(150,150,70,30);
        jlUser.setBounds(20,60,50,30);
        jlPass.setBounds(20,100,50,30);
    
        dRegister1.setBounds(470,240,260,230);
        dRegister1.setLayout(null);
        dRegister1.setResizable(false);
    
        dRegister1.add(jlUser);
        dRegister1.add(jlPass);
        dRegister1.add(jbEnsure2);
        dRegister1.add(jbCanel2);
        dRegister1.add(tfUser);
        dRegister1.add(tfPass);
    
        dRegister1.setVisible(true);
    }
    
    public static void main(String[] args) {
        new mywork();
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?