一段代码,调试很久没调试出来,求帮忙,哪里出了问题,代码贴在下面
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,如何解決?