白羽
2018-07-09
来源 :网络
阅读 1566
评论 0
摘要:本文将带你了解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频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号