摘要:本文将带你了解Java入门之图形界面开发—简易登录注册小程序,希望本文对大家学JAVA有所帮助。
功能介绍:简单的登录注册系统,使用了数据库sqlserver、单例模式、正则表达式以及图形化开发等知识。
1、在登录界面,可以登录或者注册用户。 注册用户界面,按照正则表达式规定的格式要求来输入信息,若有误,则重新输入。
2、点击注册,首先连接SQLserver数据库,连接成功则会判断该用户名是否已经存在,若存在,则给出提示。反之则进行注册。
3、登录界面,点击登录按钮时,首先与数据库建立连接。按照用户名和密码来向数据库中查找,若有,则登录成功。反之给出提示。
4、利用单例模式,实现了只创建类SQLserver的一个对象,大大节省了内存开销 。
程序完整代码见:https://github.com/chaohuangtianjie994/A-login-register-System
5、基于此,可以进行大量的拓展功能。
代码如下:
UserRegister.java 登录界面。 [java] view plain copy 1. package package1; 2. /* 3. * 功能:登录界面带着注册功能,弹出注册界面。 4. * 将注册的信息保存在数据库中,并且可以进行登录操作。 5. * author:ywq 6. */ 7. import javax.swing.*; 8. 9. import java.awt.*; 10. import java.awt.event.*; 11. import java.sql.*; 12. 13. public class UserRegister extends JFrame implements ActionListener{ 14. 15. //定义登录界面的组件 16. JButton jb1,jb2,jb3=null; 17. JRadioButton jrb1,jrb2=null; 18. JPanel jp1,jp2,jp3=null; 19. JTextField jtf=null; 20. JLabel jlb1,jlb2=null; 21. JPasswordField jpf=null; 22. 23. 24. public static void main(String[] args) 25. { 26. UserRegister ur=new UserRegister(); 27. } 28. 29. public UserRegister() 30. { 31. //创建组件 32. //创建组件 33. jb1=new JButton("登录"); 34. jb2=new JButton("注册"); 35. jb3=new JButton("退出"); 36. //设置监听 37. jb1.addActionListener(this); 38. jb2.addActionListener(this); 39. jb3.addActionListener(this); 40. 41. jlb1=new JLabel("用户名:"); 42. jlb2=new JLabel("密 码:"); 43. 44. jtf=new JTextField(10); 45. jpf=new JPasswordField(10); 46. 47. jp1=new JPanel(); 48. jp2=new JPanel(); 49. jp3=new JPanel(); 50. 51. jp1.add(jlb1); 52. jp1.add(jtf); 53. 54. jp2.add(jlb2); 55. jp2.add(jpf); 56. 57. jp3.add(jb1); 58. jp3.add(jb2); 59. jp3.add(jb3); 60. this.add(jp1); 61. this.add(jp2); 62. this.add(jp3); 63. 64. this.setVisible(true); 65. this.setResizable(false); 66. this.setTitle("注册登录界面"); 67. this.setLayout(new GridLayout(3,1)); 68. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 69. this.setBounds(300, 200, 300, 180); 70. 71. 72. } 73. 74. @Override 75. public void actionPerformed(ActionEvent e) { 76. 77. //监听各个按钮 78. if(e.getActionCommand()=="退出") 79. { 80. System.exit(0); 81. }else if(e.getActionCommand()=="登录") 82. { 83. //调用登录方法 84. this.login(); 85. }else if(e.getActionCommand()=="注册") 86. { 87. //调用注册方法 88. this.Regis(); 89. } 90. 91. } 92. 93. //注册方法 94. public void Regis() { 95. 96. 97. this.dispose(); //关闭当前界面 98. new UI(); //打开新界面 99. 100. 101. 102. } 103. 104. //登录方法 105. public void login() { 106. 107. SQLserver s=new SQLserver(); 108. s.ConnectSQL(); 109. s.SQLverify(jtf.getText(), jpf.getText()); 110. 111. this.jtf.setText(""); 112. this.jpf.setText(""); 113. 114. } 115. 116. } UI.java 用于注册的页面显示。使用了正则表达式来规定输入的内容。注册时候,需要首先判断用户名是否存在,若存在,则给出提示,反之进行注册。 [java] view plain copy 1. package package1; 2. 3. import java.awt.event.*; 4. import java.awt.*; 5. 6. import javax.swing.*; 7. 8. /* 9. * 注册界面。 10. */ 11. class UI extends JFrame implements ActionListener{ 12. 13. //定义组件 14. JFrame jf; 15. JPanel jp; 16. JLabel jl1,jl2,jl3,jl4; 17. JTextField jtf1,jtf2,jtf3,jtf4; 18. JButton jb1,jb2; 19. 20. public UI() 21. { 22. //初始化组件 23. jf=new JFrame(); 24. jp=new JPanel(); 25. jl1=new JLabel("请输入用户名:"); 26. jtf1=new JTextField(10); 27. jtf1.setToolTipText("用户名必须为3-6位字母_或者数字"); 28. jl2=new JLabel("请输入密码:"); 29. jtf2=new JTextField(10); 30. jtf2.setToolTipText("密码必须为6位字母_或者数字"); 31. jl3=new JLabel("请输入姓名:"); 32. jtf3=new JTextField(10); 33. jtf3.setToolTipText("姓名必须汉字2-4位"); 34. jl4=new JLabel("请输入学号:"); 35. jtf4=new JTextField(10); 36. jtf4.setToolTipText("学号必须为3-6位数字"); 37. 38. jb1=new JButton("返回"); 39. jb1.setToolTipText("点我返回登录界面哦"); 40. jb2=new JButton("注册"); 41. jb1.addActionListener(this); 42. jb2.addActionListener(this); 43. 44. jp.setLayout(new GridLayout(5,2)); 45. 46. jp.add(jl1); 47. jp.add(jtf1); 48. 49. jp.add(jl2); 50. jp.add(jtf2); 51. 52. jp.add(jl3); 53. jp.add(jtf3); 54. 55. jp.add(jl4); 56. jp.add(jtf4); 57. 58. jp.add(jb1); 59. jp.add(jb2); 60. 61. this.add(jp); 62. this.setTitle("注册界面"); 63. this.setBounds(200, 100, 250, 150); 64. this.setVisible(true); 65. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 66. // this.setResizable(false); 67. 68. 69. 70. } 71. 72. 73. 74. 75. 76. public void actionPerformed(ActionEvent e) { 77. 78. if(e.getActionCommand()=="返回") 79. { 80. this.dispose(); 81. new UserRegister(); 82. // System.out.println("-------"); 83. 84. }else if(e.getActionCommand()=="注册") 85. { 86. //调用注册方法 87. this.zhuce(); 88. 89. } 90. 91. } 92. public void zhuce() 93. { 94. String regex1="\\w{3,6}"; //用户名必须是3-6位 95. boolean flag1=jtf1.getText().matches(regex1); 96. 97. String regex2="\\w{6}"; //密码必须是6位 98. boolean flag2=jtf2.getText().matches(regex2); 99. 100. String regex3="[\\u4e00-\\u9fa5]{2,4}"; //姓名必须是汉字2-4个字 101. boolean flag3=jtf3.getText().matches(regex3); 102. 103. String regex4="\\d{3,6}"; //学号必须是3-6位 104. boolean flag4=jtf4.getText().matches(regex4); 105. 106. // if(jtf1.getText()==null||jtf2.getText()==null||jtf3.getText()==null||jtf4.getText()==null) 107. if(flag1==false) 108. { 109. JOptionPane.showMessageDialog(null, "用户名填写错误,必须为3-6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE); 110. jtf1.setText(""); 111. }else if(flag2==false) 112. { 113. JOptionPane.showMessageDialog(null, "密码填写错误,必须为6位字母_或者数字", "提示信息", JOptionPane.WARNING_MESSAGE); 114. jtf2.setText(""); 115. }else if(flag3==false) 116. { 117. JOptionPane.showMessageDialog(null, "姓名填写错误,必须汉字2-4位", "提示信息", JOptionPane.WARNING_MESSAGE); 118. jtf3.setText(""); 119. }else if(flag4==false) 120. { 121. JOptionPane.showMessageDialog(null, "学号填写错误,必须为3-6位数字", "提示信息", JOptionPane.WARNING_MESSAGE); 122. jtf4.setText(""); 123. }else 124. { 125. //调用注册方法/先检查要注册的用户名是否存在 126. SQLserver ss=new SQLserver(); 127. ss.ConnectSQL(); 128. ss.ZhuceVerify(jtf1.getText()); 129. 130. // ss.UserRegis(jtf1.getText(),jtf2.getText(),jtf3.getText(), jtf4.getText()); 131. this.jtf1.setText(""); 132. this.jtf2.setText(""); 133. this.jtf3.setText(""); 134. this.jtf4.setText(""); 135. 136. } 137. } 138. 139. } SQLserver.java实现了与数据库的连接以及查询验证等各个功能。 [java] view plain copy 1. package package1; 2. 3. import java.sql.*; 4. 5. import javax.swing.JOptionPane; 6. /* 7. * 与数据库相关的操作,单独封装成类 8. */ 9. 10. class SQLserver { 11. 12. Connection ct; 13. PreparedStatement ps; 14. ResultSet rs; 15. String user,pwd; 16. 17. //将连接数据库的方法封装为一个方法 18. public void ConnectSQL() 19. { 20. try { 21. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动 22. 23. ct=DriverManager.getConnection("jdbc:odbc:ywq"); //得到连接 24. 25. System.out.println("已成功连接数据库..."); 26. 27. } catch (Exception e) { 28. // TODO Auto-generated catch block 29. e.printStackTrace(); 30. } 31. } 32. 33. //注册用户的方法 34. public void UserRegis(String a,String b,String c,String d) 35. { 36. //创建火箭车 37. try { 38. ps=ct.prepareStatement("insert into users values(?,?,?,?)"); 39. ps.setString(1,a); 40. ps.setString(2,b); 41. ps.setString(3,c); 42. ps.setString(4,d); 43. 44. //执行 45. int i=ps.executeUpdate(); 46. if(i==1) 47. { 48. JOptionPane.showMessageDialog(null, "注册成功","提示消息",JOptionPane.WARNING_MESSAGE); 49. 50. }else 51. { 52. JOptionPane.showMessageDialog(null, "注册失败","提示消息",JOptionPane.ERROR_MESSAGE); 53. } 54. 55. 56. } catch (SQLException e) { 57. // TODO Auto-generated catch block 58. e.printStackTrace(); 59. } 60. } 61. 62. // 登录验证方法 63. public void SQLverify(String a,String b) 64. { 65. try { 66. ps=ct.prepareStatement("select * from users where 用户名=? and 密码=? "); 67. ps.setString(1, a); 68. ps.setString(2, b); 69. 70. // ResultSet结果集,大家可以把ResultSet理解成返回一张表行的结果集 71. rs = ps.executeQuery(); 72. 73. if(rs.next()) 74. { 75. user = rs.getString(1); 76. pwd = rs.getString(2); 77. JOptionPane.showMessageDialog(null, "登录成功!!!", "提示消息", JOptionPane.WARNING_MESSAGE); 78. System.out.println("成功获取到密码和用户名from数据库"); 79. System.out.println(user + "\t" + pwd + "\t"); 80. }else 81. { 82. JOptionPane.showMessageDialog(null, "用户名或者密码错误,请重新输入!", "提示消息", JOptionPane.ERROR_MESSAGE); 83. 84. } 85. 86. } catch (SQLException e) { 87. 88. e.printStackTrace(); 89. } 90. } 91. 92. //注册验证方法,判断用户名是否已经存在 93. public void ZhuceVerify(String a) 94. { 95. try { 96. ps=ct.prepareStatement("select * from users where 用户名=?"); 97. // System.out.println(ps); 98. ps.setString(1, a); 99. 100. rs=ps.executeQuery(); 101. if(rs.next()) 102. { 103. JOptionPane.showMessageDialog(null, "该用户名已经存在", "提示信息", JOptionPane.WARNING_MESSAGE); 104. }else 105. { 106. // 进行注册 107. UI ui=new UI(); 108. this.UserRegis(ui.jtf1.getText(),ui.jtf2.getText(),ui.jtf3.getText(),ui.jtf4.getText()); 109. } 110. 111. } catch (SQLException e) { 112. 113. e.printStackTrace(); 114. } 115. } 116. 117. 118. 119. 120. 121. }
以上就介绍了JAVA的相关知识,希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号