(第一个jdbc入门项目)java实现的登录系统(mysql实现的)
2014-04-13 12:13
731 查看
首次接触jdbc编程,本来想写一个成绩查询系统,感觉自己的数据库基础还是很差,所以找啦一个比较简单的登录程序做
但是由于水平有限,自动登录和记住密码功能没有写出来,希望大家指点一下
但是由于水平有限,自动登录和记住密码功能没有写出来,希望大家指点一下
import javax.swing.*; import java.net.*; import java.awt.event.*; import java.awt.*; import java.sql.*; public class Landing extends JFrame implements ActionListener,ItemListener { private String driver="com.mysql.jdbc.Driver"; private String url="jdbc:mysql://127.0.0.1:3306/denglusql"; private String user="root"; private String pass="yeqing123"; //数据库的连接信息 private JFrame jf=new JFrame("登录系统"); private JLabel jl_user=new JLabel("账号"); private JLabel jl_pass=new JLabel("密码"); private JButton jb_zhuce=new JButton("注册"); private JButton jb_landing=new JButton("登录"); private JComboBox jtf_user=new JComboBox(); private JPasswordField jtf_pass=new JPasswordField(); private JPanel jp_certen=new JPanel(null); private JPanel jp_main; private JLabel jb_top=new JLabel(); private JLabel jb_base=new JLabel(); private JCheckBox jcb_mm=new JCheckBox("记住密码"); private JCheckBox jcb_dl=new JCheckBox("自动登录"); //一些定义以及实现这个登录功能的组件 public void LandingWindows(){ try { Class.forName(driver); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } jb_landing.addActionListener(this); jb_zhuce.addActionListener(this); setcerten();//设置主界面的主要布局 adduser();//记住登录的用户名 jp_main=new JPanel(new BorderLayout()){ @Override public void paintComponent(Graphics g) { Graphics2D g2=(Graphics2D)g; super.paintComponents(g); Image image=Toolkit.getDefaultToolkit().getImage("F:\\JavaMedia\\landing2.jpg"); g2.drawImage(image,0,0,this.getWidth(),this.getHeight(),this); } }; //通过重写这个方法设置这个主见的背景图片,有很多实现方法,这是比较简单的方法吧,可以通过查阅api得到。 jp_main.add(jb_top,BorderLayout.NORTH); jp_main.add(jb_base,BorderLayout.SOUTH); jp_main.add(jp_certen,BorderLayout.CENTER); jb_top.setPreferredSize(new Dimension(jf.getWidth(),30)); jb_base.setPreferredSize(new Dimension(jf.getWidth(),25)); //通过设置两个空白面板来调整整个布局的位置 jf.setContentPane(jp_main); jf.setSize(390,250); Dimension scrp=Toolkit.getDefaultToolkit().getScreenSize(); jf.setLocation((scrp.width-jf.getWidth())/2,(scrp.height-jf.getHeight())/2); /*设置它的位置的常用方法吧,先得到它整个屏幕的宽高,然后用这种方法,不管在什么屏幕中都能显示在中间的 位置吧*/ jf.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent arg0) { quit(); } //退出ui的实现程序 }); jf.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); jf.setResizable(false); jf.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==jb_zhuce){ zhuce(); } if(e.getSource()==jb_landing){ denglu(); } } public void quit(){ int flag=0; String mesg="你确定要退出此登录系统?"; flag=JOptionPane.showConfirmDialog(jf,mesg,"提示",JOptionPane.YES_NO_OPTION); if(flag==JOptionPane.YES_OPTION){ System.exit(0); } } public void itemStateChanged(ItemEvent e){ if(e.getSource()==jcb_mm){ getpass(); } if(e.getSource()==jcb_dl){ denglu(); } } public void setcerten(){ jp_certen.setOpaque(false); //这个方法很重要,一定要设置false,才能显示出完整的背景图片 jl_user.setBounds(80,15,60,20); jl_pass.setBounds(80,55,60,20); jtf_user.setBounds(130,10,150,30); jtf_pass.setBounds(130,50,150,30); jcb_mm.setBounds(90, 90, 80, 20); jcb_mm.addItemListener(this); jcb_dl.setBounds(190,90,80,20); jcb_mm.addItemListener(this); jb_zhuce.setBounds(230,120,70,30); jb_landing.setBounds(80,120,70,30); jp_certen.add(jl_user); jl_user.setForeground(Color.red); jp_certen.add(jtf_user); jtf_user.setEditable(true); jp_certen.add(jl_pass); jl_pass.setForeground(Color.red); jp_certen.add(jcb_mm); jp_certen.add(jcb_dl); jp_certen.add(jtf_pass); jp_certen.add(jb_landing); jp_certen.add(jb_zhuce); } //主要的布局程序类 public void zhuce(){ String z_user=String.valueOf(jtf_user.getSelectedItem()); String z_pass=String.valueOf(jtf_pass.getPassword()); String sql; if(z_user.trim().equals("")||z_pass.equals("")) { JOptionPane.showMessageDialog(jf,"账号或密码不能为空!!!","提醒",JOptionPane.INFORMATION_MESSAGE); }else { Connection conn=null; PreparedStatement psta=null; ResultSet rs=null; try { sql="select j_user from denglu where j_user=?"; conn=DriverManager.getConnection(url,user,pass); psta=conn.prepareStatement(sql); //prepareStatement比Statement强大啦很多 psta.setString(1,z_user); rs=psta.executeQuery(); if(rs.next()){ JOptionPane.showMessageDialog(jf, "该用户已注册,请重新输入用户名!!", "提醒!",JOptionPane.INFORMATION_MESSAGE); }else{ if(z_pass.length()>=6) {sql="insert into denglu(j_user,j_pass) values(?,?)"; psta.setString(1,z_user); psta.setString(2,z_pass); conn=DriverManager.getConnection(url,user,pass); psta=conn.prepareStatement(sql); psta.executeUpdate(); JOptionPane.showMessageDialog(jf,"注册成功,请登录!!!");} else{ JOptionPane.showMessageDialog(jf,"密码须大于六位!!!","提醒!",JOptionPane.INFORMATION_MESSAGE); } } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } finally{ try { if(rs!=null){ rs.close(); rs=null;} if(psta!=null){ psta.close(); psta=null; } if(conn!=null){ conn.close(); conn=null; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } //实现注册功能的类,通过使用insert into语句把数据加入到数据库中,实现注册功能 public void adduser(){ String a_user=String.valueOf(jtf_user.getSelectedItem()); String a_pass=String.valueOf(jtf_pass.getPassword()); String sql="select j_user from denglu;"; try { Connection conn=DriverManager.getConnection(url,user,pass); PreparedStatement sta=conn.prepareStatement(sql); ResultSet rs=sta.executeQuery(); rs.afterLast(); int i=0; String s=null; while(rs.previous()&&i<4){ i++; s=rs.getString("j_user"); jtf_user.addItem(s); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }//通过查找数据库来实现的记住前四个用户名的功能 public void getpass(){ String g_user=String.valueOf(jtf_user.getSelectedItem()); String g_pass=String.valueOf(jtf_pass.getPassword()); String sql="select j_user,j_pass from denglu where j_user=?"; Connection conn=null; PreparedStatement psta=null; ResultSet rs=null; try { conn=DriverManager.getConnection(url,user,pass); psta=conn.prepareStatement(sql); psta.setString(1,g_user); rs=psta.executeQuery(); String s=null; while(rs.next()){ s=rs.getString("j_pass"); } jtf_user.addItem(s); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try{ if(rs!=null){ rs.close(); rs=null; } if(psta!=null){ psta.close(); psta=null;} if(conn!=null){ conn.close(); conn=null;} }catch (SQLException e){ e.printStackTrace();} } } public void denglu(){ String d_user=String.valueOf(jtf_user.getSelectedItem()); String d_pass=String.valueOf(jtf_pass.getPassword()); String sql="select j_user,j_pass from denglu where j_user=?"; if(d_user.equals("")||d_pass.equals("")){ JOptionPane.showMessageDialog(jf,"登录密码或账户不能为空!!!!","警告,提醒!!!",JOptionPane.INFORMATION_MESSAGE); }else{ Connection conn=null; PreparedStatement psta=null; ResultSet rs=null; try { conn=DriverManager.getConnection(url,user,pass); psta=conn.prepareStatement(sql); psta.setString(1,d_user); rs=psta.executeQuery(); if(rs.next()){ if(d_pass.equals(rs.getString(2))) { JOptionPane.showMessageDialog(jf,"登录成功"); System.exit(0); }else{ JOptionPane.showMessageDialog(jf,"密码输入错误!!!","提醒!!警告!!!",JOptionPane.ERROR_MESSAGE); } } else{ JOptionPane.showMessageDialog(jf,"用户名不存在,请重新输入或注册一个账户!!!","提醒!!!",JOptionPane.INFORMATION_MESSAGE); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try{ if(rs!=null){ rs.close(); rs=null; } if(psta!=null){ psta.close(); psta=null; } if(conn!=null){ conn.close(); conn=null; } } catch(SQLException e){ e.printStackTrace(); } }} } public static void main(String[] args) { new Landing().LandingWindows(); } }
相关文章推荐
- JDBC应用、控制台连MySQL接数据库实现学生管理系统的登录注册、增删改查
- java swing mysql 实现的家庭收支管理系统项目源码
- jsp+jdbc+Servlet实现登录系统(.java)
- java Swing mysql实现简单的购物系统项目源码
- Java swing mysql实现的学生选课系统项目源码
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- java swing mysql实现的ktv点歌系统项目源码附带视频教程
- Java swing mysql(Oracle)实现的飞机订票系统项目源码附带视频教程及设计文档
- 【Java】运用JDBC实现一个注册、登录系统的编写
- java Swing mysql实现简单的购物系统项目源码
- java Swing mysql实现的人事管理系统项目源码
- java swing mysql 实现的家庭收支管理系统项目源码
- java Swing mysql实现的人事管理系统项目源码
- java swing mysql实现的ktv点歌系统项目源码附带视频教程
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- J2EE初级学习项目——JSP+Servlet+JavaBean开发模式+Filter+(Listener)+Jdbc的用户登录注册系统
- [java源码] Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)
- java swing mysql实现的工程项目管理系统源码附带视频教程