Java入门之图形界面开发—简易登录注册小程序
白羽 2018-07-09 来源 :网络 阅读 1037 评论 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
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程