java 17 -1 用户登陆注册案例(集合版)

需求:
  用户登录注册案例

按照如下操作,可以让我们更符合面向对象思想:
  A:这个案例有哪些类
  B:每个类中又有哪些东西
  C:类与类之间的关系

分析:
  A:这个案例有哪些类
    用户类
    测试类
  B:每个类中又有哪些东西
    用户类:
      成员变量:用户名、密码
      构造方法:无参构造
      成员方法:getXxx()、setXxx()
           登陆,注册

  但,如果用户类的内容过多的时候,维护起来比较麻烦。
  所以,为了以后维护起来比较容易,我们需要更清晰的分类:
  用户类可以再分为2个类:

    用户基本描述类:
      成员变量:用户名、密码
      构造方法:无参构造
      成员方法:getXxx()、setXxx()
    用户操作类:
      登陆、注册

  测试类:
    main方法

  C:类与类之间的关系是什么呢?
    在测试类中创建用户操作类和用户描述类的对象,并使用它们的功能

分包:
     A:按照功能划分
   B:按照模块划分
   C:先按照模块划分,再按照功能划分

这次先按照功能划分:
  用户基本描述类:cn.lzl.pojo
  用户操作接口:cn.lzl.dao
  用户操作类包:cn.lzl.dao.impl
          这次做的是集合实现,过几天是IO实现,再继续就是GUI实现,接着就是数据库实现
  用户测试类:cn.lzl.test

另外添加了一个小游戏类

用户基本描述类:cn.lzl.pojo

 1 package cn.lzl.pojo;
 2 /**
 3  * 这是用户的基本描述类
 4  *
 5  * @author LZL
 6  *
 7  *@version V1.0
 8  */
 9 public class User {
10     //成员变量
11     private String username;
12     private String password;
13
14     //无参构造
15     public User() {
16     }
17
18     //成员方法
19     public String getUsername() {
20         return username;
21     }
22
23     public void setUsername(String username) {
24         this.username = username;
25     }
26
27     public String getPassword() {
28         return password;
29     }
30
31     public void setPassword(String password) {
32         this.password = password;
33     }
34
35
36
37 }

用户操作接口:cn.lzl.dao

 1 package cn.lzl.Dao.impl;
 2
 3 import cn.lzl.pojo.User;
 4
 5 /**
 6  * 这是针对用户进行操作的接口
 7  *
 8  * @author LZL
 9  *
10  * @version V1.0
11  */
12 public interface UserDao {
13     /**
14      * 这是用户进行登陆的功能
15      *
16      * @param username
17      *            用户名
18      * @param userpassworld
19      *            密码
20      * @return 是否登陆成功
21      */
22     public abstract boolean isLogin(String username, String passworld);
23
24     /**
25      * 这是用户进行注册的功能 PS:如果方法的参数列表大于3种,就创建一个类,调用这个类
26      *
27      * @param user
28      *            用户信息
29      */
30     public abstract void regist(User user);
31
32 }

用户操作类包:cn.lzl.dao.impl(集合版)

 1 package cn.lzl.Dao.impl;
 2
 3 /**
 4  * 这是用户操作类包(集合版)
 5  *
 6  * @author LZL
 7  *
 8  *
 9  */
10 import java.util.ArrayList;
11
12 import cn.lzl.pojo.User;
13
14 public class UserDaoimpl implements UserDao {
15     // 因为登陆和注册要共用同一个集合(服务端),所以用static修饰
16     private static ArrayList<User> array = new ArrayList<User>();
17
18     public boolean isLogin(String username, String password) {
19         boolean flag = false;
20         // 对集合进行遍历,获取里面的每一个用户名和密码,来跟录入的用户名和密码进行比较
21         for (User user : array) {
22             if (user.getUsername().equals(username)
23                     && user.getPassword().equals(password)) {
24                 flag = true;
25                 break;
26             }
27         }
28
29         return flag;
30     }
31
32     public void regist(User user) {
33         //用户注册时,把用户信息添加到集合中
34         array.add(user);
35     }
36
37 }

随机数小游戏类:

 1 package cn.lzl.GuessGame;
 2
 3 import java.util.Scanner;
 4
 5 /**
 6  * 这是个猜数字的小游戏 1-100
 7  *
 8  * @author LZL
 9  *
10  *
11  */
12 public class GuessNmuber {
13     //无参构造
14     public  GuessNmuber(){
15
16     }
17     public static void start (){
18         //产生一个随机数
19         int number = (int)(Math.random() * 100) + 1 ;
20
21         //定义一个统计变量
22         int count = 0;
23         //进入循环,直到猜中才退出,猜错就重新来,并进行计数
24         while(true){
25
26         //键盘录入猜测数据
27         Scanner sc = new Scanner(System.in);
28         System.out.println("请输入你的猜测:");
29         int num = sc.nextInt();
30         count ++;
31         //猜测数据进行对比
32         if(num < number){
33             System.out.println("你猜的数字"+num+"小了");
34         }
35         else if(num > number){
36             System.out.println("你猜的数字"+num+"大了");
37         }
38         else{
39             System.out.println("恭喜你,猜了"+count+"次,猜中了");
40             break;
41         }
42     }
43 }
44 }

用户测试类:cn.lzl.test

  1 package cn.lzl.test;
  2
  3 import java.util.Scanner;
  4
  5 import cn.lzl.Dao.impl.UserDao;
  6 import cn.lzl.Dao.impl.UserDaoimpl;
  7 import cn.lzl.GuessGame.GuessNmuber;
  8 import cn.lzl.pojo.User;
  9
 10 /**
 11  * 这是用户测试类 测试用户登录、注册、退出以及登陆成功后进行的小游戏功能
 12  *
 13  * @author LZL
 14  *
 15  * @version V1.0
 16  */
 17 public class UserTest {
 18
 19     public static void main(String[] args) {
 20         //为了让用户注册完毕后,能立刻进行登陆
 21         while(true){
 22         //欢迎界面
 23         System.out.println("---------欢迎---------");
 24         System.out.println("1  登陆");
 25         System.out.println("2  注册");
 26         System.out.println("3  退出");
 27         Scanner sc = new Scanner(System.in);
 28         System.out.println("请输入你的选择:");
 29         // 为了后面的录入信息的方便,我所有的数据录入全部用字符接收
 30         String choise = sc.nextLine();
 31
 32
 33         //由于登陆和注册都要调用UserDao类里面的方法,所以写在switch语句外面
 34         UserDao ud = new UserDaoimpl();
 35         switch (choise) {
 36
 37         case "1"://进入登陆界面
 38
 39             System.out.println("---------用户登陆---------");
 40             System.out.println("请输入用户名:");
 41             String username = sc.nextLine();
 42             System.out.println("请输入密码:");
 43             String password = sc.nextLine();
 44
 45             //调用用户登录功能
 46             //UserDao ud = new UserDaoimpl();//多态调用
 47             boolean flag = ud.isLogin(username, password);
 48             if(flag){
 49
 50                 System.out.println("登陆成功,可以玩游戏了");
 51                 System.out.println("你想要玩吗? Y / N");
 52
 53                 while(true){//进入循环,直到游戏结束
 54                     //键盘输入是否玩游戏选项
 55                     String result = sc.nextLine();
 56                 if(result.equalsIgnoreCase("y")){//忽略大小写对比
 57                     //调用游戏类
 58                     GuessNmuber.start();
 59                     //结束后再次选择
 60                     System.out.println("你还想玩吗?Y / N");
 61                 }else{
 62                         break;
 63                     }
 64                 }
 65                 System.out.println("谢谢使用,欢迎下次再来");
 66                 System.exit(0);
 67                 // break; //这里写break,结束的是switch
 68
 69                 }
 70             else{
 71                 System.out.println("登录失败,用户名或者密码错误");
 72             }
 73
 74             break;
 75
 76         case "2":
 77             //进入注册界面
 78             System.out.println("---------用户登陆---------");
 79             System.out.println("请输入用户名:");
 80             String newusername = sc.nextLine();
 81             System.out.println("请输入密码:");
 82             String newpassword = sc.nextLine();
 83
 84             //由于用户注册需要的是一个对象,所以上面的内容要进行封装成一个对象
 85             User us = new User();
 86             us.setUsername(newusername);
 87             us.setPassword(newpassword);
 88
 89             //调用用户注册方法
 90             ud.regist(us);
 91             System.out.println("注册成功");
 92
 93             break;
 94         case "3":
 95             System.out.println("谢谢使用,欢迎下次再来");
 96             System.exit(0);//选择3和其他选项,都认为是退出程序
 97             break;
 98         default:
 99             System.out.println("输入错误,程序退出");
100             System.exit(0);//选择3和其他选项,都认为是退出程序
101             break;
102         }
103     }
104 }
105 }
时间: 2024-10-20 21:18:56

java 17 -1 用户登陆注册案例(集合版)的相关文章

用户登陆注册【JDBC版】

前言 在讲解Web开发模式的时候,曾经写过XML版的用户登陆注册案例!现在在原有的项目上,使用数据库版来完成用户的登陆注册!如果不了解的朋友,可以看看我Web开发模式的博文! 本来使用的是XML文件作为小型数据库,现在使用Mysql数据库,代码究竟要改多少呢?我们拭目以待! 使用C3P0数据库连接池 导入C3P0的开发包和导入配置文件 开发包导入的是这个:c3p0-0.9.2-pre1和mchange-commons-0.2.jar. C3P0不仅性能好,而且配置文件可以使用XML文档来配置!

登录、注册案例集合实现

登陆注册案例分析:          我们现在写代码需要面向对象,我们必须先找到能完成某个功能的类,接着调用里面的方法完成它   登陆注册案例中的类:          用户类                    成员变量:用户名,密码                    成员方法:登陆,注册功能                             测试类                    main     登陆注册案例中的类的详细分解:          用户类(User):用户名

Java基础知识强化之集合框架笔记37:用户登录注册案例

1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢?                 用户类                 测试类       • 每个类有哪些东西呢?                 用户类: 成员变量:用户名,密码                            构造方法:无参构造                            成

IO版的用户登录注册案例(Java)

2017-09-16 这是我在博客园的第一篇学习笔记. Java小白,努力进阶中... 今天学的是用户登录注册功能.4个包:itcast.cn.user包 User.java 用户类,描述用户基本信息,包括成员变量,无参构造函数,带参构造(可有可无).get和set方法 1 package itcast.cn.day22; 2 /* 3 * 用户基本描述包类 4 */ 5 6 public class User { 7 private int userName; 8 private int pa

jsp+servlet+mysql简单实现用户登陆注册

原码,项目中遇到的错误,解决方法,文章最后有链接可以获取 项目简介 功能描述 登陆,注册,用户一览表,修改,删除,添加,模糊查询和精确查询 采用的技术及环境 JSP:前端的信息展示 Servlet:业务逻辑功能实现,及调用数据库的实现数据处理和传输 MySQL:用来实现数据存储 利用Eclipse来实现,MySQL数据库版本:5.x 运行效果展示 数据库数据 项目结构图 *因屏幕小,截图用了两张图片 登陆页面 登陆成功用户一览表页面 注册页面 *因我在数据设计表时,性别(sex)设置的大小为2长

django 用户登陆注册

注册登陆 views.py #!/usr/bin/env python # -*- coding:utf-8 -*- from django.shortcuts import render,render_to_response,redirect,HttpResponse import models # Create your views here. def addusertype(request): data = models.usertpye.objects.all() for item in

用java进行LDAP用户登陆(用户认证)及修改密码

一.用户认证 public String execute(){ Hashtable env = new Hashtable(); String LDAP_URL = "ldap://8.8.8.8:389"; // LDAP访问地址 env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, LDAP_URL);

用户登录注册案例分析

项目需求: 按软件分层设计思想完成xml文件存储用户信息实现用户注册登录的功能.需求分析: 1.使用JAVAEE的经典三层结构 2.三层结构分别对应的包 M JavaBean com.hitech.domain   Service com.hitech.service   Dao com.hitech.dao                V/C Web/Servlet com.hitech.web     其他包  异常处理 com.hitech.exception     工具类 com.h

Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作

前言:本文代码参考自两篇英文博客,具体来源点击文末代码链接中文档说明. 运行效果: 首页: 注册页面: 登陆界面: 管理员登陆后界面: 添加.删除.修改和查询员工所在部门信息界面(角色和员工界面类似): 源码链接及说明:https://coding.net/u/LiuZhen1995/p/MyDemo/git/tree/ten/ 附学习过程中参考资料: 1.config配置处理