Java小程序之集合框架模拟数据库实现用户登录和注册功能

来源:互联网 发布:语音识别 算法 编辑:程序博客网 时间:2024/05/17 01:45
Java小程序之集合框架模拟数据库实现用户登录和注册功能

前言:关于Java中的集合框架知识,我以前也写过一篇博客,大家可以去查阅;通过再次学习java中的集合框架知识,我又有了新的理解,更能从整体上认知Java中的集合框架;其实,前面画板知识中用到了集合框架的一些知识的呢;


还是先看看简单的知识点吧!

Java中的集合框架:

1.概念

集合框架其实指的就是容器,能将大量的相同类型的元素进行统一封装(回想高级画板重绘的知识)

Java集合框架是Java语言的重要组成部分,封装了大量的数据结构的实现(我们前面自定义队列大体上实现了和ArrayList同样的功能,集合框架中还有很多的类和工具,它们有各自的优点的缺点,看时机情况需要,可以进行选择)

 

2.CollectionMap接口(整体认知)

 


3.List接口集合:ArrayListVector队列

a) ArrayList数组队列(知道该如何遍历)

b) Vector向量队列

特点:有序、可重复

 

4.Set接口集合:HashSet集合

特点:无序的、不能重复的

遍历set

   1)先拿到set容器的迭代器对象

   2)检测容器中是否有东西可以取

   3)有东西可以取,把东子取出来进行保存

   4)利用循环结构,遍历set


 

 

5.Map接口集合:HashMap集合

                HashMap是以键值对的形式进行存储的,需要注意的是,值可以相同,但键是唯一的,好比有很多人可以叫小明,但我们怎么确认哪一个小明是我们要找的呢?我们可以给每个小明一个独一无二的编号,通过编号去找到我们要找的小明;类似生活中每个人的身份证是独一无二的,但却有很多同名同姓的人;如果给同一个键赋值d的话,后面的值会覆盖前面赋的值,但键不变,返回的是被覆盖的值;详见JAVA中的API文档

 

 



好了,进入正题,我们接下来要用Map接口中的HashMap集合来模拟数据库实现用户登录和注册功能


思路:

1、创建窗体(登录界面)

2、给窗体添加登录和注册按钮以及相关控件(用户名和密码输入框以及标签)

3、给登录按钮添加监听器,处理登录逻辑

      3.1、先用HashMap创建对象,并添加<用户名、面>键值对(模拟数据库)

      3.2、当点击登录按钮时,检测输入框中输入的用户名和密码是否在数据库内(是否有该键值对)

      3.3、提示登录成功或者登录失败

4、给注册按钮天剑监听器,处理注册逻辑

      4.1、当点击注册按钮时,出现注册页面

      4.2、当用户输入新的用户名和密码时,检测数据库中是否已经存在该用户名并提示

      4.3、确认注册后,往数据库中添加新的数据(新的键值对)



原代码:

登录界面类:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.huaxin.login;  
  2.   
  3. import java.awt.FlowLayout;  
  4. import java.util.HashMap;  
  5.   
  6. import javax.swing.JButton;  
  7. import javax.swing.JFrame;  
  8. import javax.swing.JLabel;  
  9. import javax.swing.JTextField;  
  10. import javax.swing.text.StyledEditorKit.ForegroundAction;  
  11.   
  12. public class LoginFrame extends JFrame{  
  13.       
  14.     //HashMap对象,模拟数据库  
  15.       
  16.     //这里是集合的泛型形式,指定存储的内容是字符串、字符串键值对类型  
  17.       
  18.     //声明为静态类型,便于访问  
  19.     public static HashMap<String,String> map = new HashMap<String,String>();  
  20.       
  21.     //数据库初始化,当加载程序时,就要加载数据库  
  22.     static {  
  23.         for (int i = 0; i < 10; i++) {  
  24.               
  25.             map.put("user"+i, "pwd"+i);  
  26.         }  
  27.     }  
  28.       
  29.     //初始化窗体  
  30.       
  31.     public void initFrame(){  
  32.         this.setSize(250,200);  
  33.         this.setDefaultCloseOperation(3);  
  34.         this.setTitle("登录验证");  
  35.         this.setLocationRelativeTo(null);  
  36.         this.setLayout(new FlowLayout());  
  37.           
  38.         JLabel username = new JLabel("用户名:");  
  39.         JTextField name =new JTextField(15);  
  40.           
  41.         JLabel pwd = new JLabel("密  码 :");  
  42.         JTextField password =new JTextField(15);  
  43.           
  44.         JButton bt = new JButton("登录");  
  45.         JButton bt1 = new JButton("注册");  
  46.           
  47.         this.add(username);  
  48.         this.add(name);  
  49.         this.add(pwd);  
  50.         this.add(password);  
  51.         this.add(bt);  
  52.         this.add(bt1);  
  53.           
  54.         this.setVisible(true);  
  55.           
  56.         //登录按钮添加监听器,处理登录逻辑  
  57.         ButtonListener bl= new ButtonListener(name,password);  
  58.         bt.addActionListener(bl);  
  59.           
  60.         //注册按钮添加监听器,处理注册逻辑  
  61.         ZhuceLisener zl = new ZhuceLisener();  
  62.         bt1.addActionListener(zl);  
  63.       
  64.     }  
  65.   
  66. }  


登录监听类:
[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.huaxin.login;  
  2.   
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5.   
  6. import javax.swing.JOptionPane;  
  7. import javax.swing.JTextField;  
  8.   
  9. public class ButtonListener implements ActionListener{  
  10.       
  11.     public JTextField name;  
  12.     public JTextField password;  
  13.       
  14.     //获取传过来的输入框对象  
  15.   
  16.     public ButtonListener(JTextField name, JTextField password) {  
  17.         this.name=name;  
  18.         this.password=password;  
  19.     }  
  20.       
  21.     //处理登录逻辑  
  22.   
  23.     public void actionPerformed(ActionEvent e) {  
  24.           
  25.         //获取输入框的用户名和密码信息  
  26.         String username =name.getText();  
  27.         String pwd =password.getText();  
  28.           
  29.         //检测用户名和密码输入是否为空  
  30.         if(username.equals("")){  
  31.             JOptionPane.showMessageDialog(null"请输入用户名!");  
  32.         }  
  33.           
  34.         else if( pwd.equals("")){  
  35.             JOptionPane.showMessageDialog(null"请输入用户密码!");  
  36.         }  
  37.       
  38.         //不为空是查找数据库  
  39.         else{  
  40.             if(CheckLogin(username,pwd)){  
  41.                 JOptionPane.showMessageDialog(null"登录成功!");  
  42.             }else{  
  43.                 JOptionPane.showMessageDialog(null"登录失败!");  
  44.             }  
  45.         }  
  46.   
  47.           
  48.     }  
  49.       
  50.     public boolean CheckLogin(String name,String pawd){  
  51.         //数据库中是否包含该用户名  
  52.         if(LoginFrame.map.containsKey(name)){  
  53.               
  54.             String key =name;  
  55.               
  56.             //检验密码是否正确  
  57.             if(LoginFrame.map.get(key).equals(pawd)){  
  58.                 return true;  
  59.             }else{  
  60.                 JOptionPane.showMessageDialog(null"密码错误!");  
  61.                 return false;  
  62.             }  
  63.         }  
  64.           
  65.         return false;  
  66.     }  
  67.   
  68. }  


注册按钮监听类:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.huaxin.login;  
  2.   
  3. import java.awt.FlowLayout;  
  4. import java.awt.event.ActionEvent;  
  5. import java.awt.event.ActionListener;  
  6.   
  7. import javax.swing.JButton;  
  8. import javax.swing.JFrame;  
  9. import javax.swing.JLabel;  
  10. import javax.swing.JTextField;  
  11.   
  12. public class ZhuceLisener implements ActionListener{  
  13.       
  14.     public JTextField name;  
  15.       
  16.     public JTextField password;  
  17.       
  18.     public JFrame jf;  
  19.       
  20.     //注册按钮处理逻辑  
  21.   
  22.     public void actionPerformed(ActionEvent e) {  
  23.         //创建注册页面  
  24.         ZhuceLisener zhece = new ZhuceLisener();  
  25.         zhece.showFrame();  
  26.           
  27.     }  
  28.       
  29.     public void showFrame(){  
  30.           
  31.         jf = new JFrame();  
  32.         jf.setSize(250,200);  
  33.         jf.setTitle("欢迎注册");  
  34.         jf.setLocationRelativeTo(null);  
  35.         jf.setLayout(new FlowLayout());  
  36.           
  37.         JLabel username = new JLabel("请输入用户名:");  
  38.          name =new JTextField(15);  
  39.           
  40.         JLabel pwd = new JLabel("请输入密 码 :");  
  41.          password =new JTextField(15);  
  42.           
  43.          //该注册页面的注册按钮添加监听器  
  44.         JButton bt1 = new JButton("注册");  
  45.           
  46.         Listenerone one = new Listenerone(this);  
  47.         bt1.addActionListener(one);  
  48.           
  49.         jf.add(username);  
  50.         jf.add(name);  
  51.         jf.add(pwd);  
  52.         jf.add(password);  
  53.         jf.add(bt1);  
  54.         jf.setVisible(true);  
  55.     }  
  56.       
  57.   
  58. }  


注册页面中的注册按钮的监听类:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.huaxin.login;  
  2.   
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5.   
  6. import javax.swing.JOptionPane;  
  7.   
  8. public class Listenerone implements ActionListener{  
  9.       
  10.     public ZhuceLisener zhuceLisener;  
  11.       
  12.       
  13.     //接受传过来的对象  
  14.   
  15.     public Listenerone(ZhuceLisener zhuceLisener) {  
  16.           
  17.         this.zhuceLisener=zhuceLisener;  
  18.     }  
  19.   
  20.     public void actionPerformed(ActionEvent e) {  
  21.           
  22.         //拿到注册页面中输入的信息  
  23.   
  24.         String zhucename = zhuceLisener.name.getText();  
  25.         String zhucepwd = zhuceLisener.password.getText();  
  26.           
  27.         //检测用户输入  
  28.         if(zhucename.equals("")){  
  29.             JOptionPane.showMessageDialog(null"请输入用户名!");  
  30.         }else if(LoginFrame.map.containsKey(zhucename)){  
  31.             JOptionPane.showMessageDialog(null"该账号已经存在!");  
  32.         }  
  33.         else if(zhucepwd.equals("")){  
  34.             JOptionPane.showMessageDialog(null"请输入用户密码!");  
  35.         }  
  36.         else{  
  37.               
  38.             //添加新的键值对  
  39.             LoginFrame.map.put(zhucename, zhucepwd);  
  40.               
  41.             JOptionPane.showMessageDialog(null"注册成功!");  
  42.             //注册页面隐藏  
  43.             zhuceLisener.jf.setVisible(false);  
  44.         }  
  45.               
  46.               
  47.         }  
  48.   
  49. }  

主函数中的测试类:

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.huaxin.login;  
  2.   
  3. public class test {  
  4.   
  5.     public static void main(String[] args) {  
  6.   
  7.         LoginFrame login=new LoginFrame();  
  8.         login.initFrame();  
  9.     }  
  10.   
  11. }  


运行结果:

登录和注册页面

      


注册功能实现:



新注册用户登录验证:



总结:
1、通过该项目,深入理解Java中的集合框架知识;
2、对对象传递,静态对象的应用以及静态代码块等知识更加熟练了;
3、对写小程序的思路有了提升;发现写程序思路非常的重要,有了思路,写东西会顺畅很多;
0 0
原创粉丝点击