A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. 用户登录注册案例分析

  2. 需求:
  3.         编写一个系统,需要如下功能:
  4.         1,用户注册
  5.                 注册完成后,保存起来,方便下次登录。
  6.         2,用户登录
  7.                 登录成功,提示登录成功
  8.                 登录失败,提示三次以后加入黑名单
  9.         
  10. 思路:        
  11.         1,几个类以及类的成员
  12.                 用户类:
  13.                         属性:账户、密码
  14.                         行为:getters/setters
  15.                 用户操作类:
  16.                         登录                注册
  17.                 用户测试类:
  18.                         属性:无
  19.                         行为:main、测试登录以及注册功能
  20.         2,类之间的关系
  21.                 用户操作类:
  22.                         创建用户对象、并且对该对象进行操作
  23.                 用户测试类:
  24.                         创建用户操作类对象,并且对该对象中的方法进行测试(期间或许会用到基本用户类对象)
  25. 通过比较,我们的用户登录注册最终选择按操作分:
  26.         分包:
  27.                 cn.itcast.pojo一个简单的实体类
  28.                 cn.itcasst.dao操作接口
  29.                 cn.itcast.dao.impl操作的具体实现
  30.                 cn.itcast.test测试
  31.                
  32. 注意:
  33.         写方法的时候,如果参数超过三个,一般传递对象
复制代码
  1. package cn.itcast.test;

  2. import java.util.Scanner;
  3. //import cn.itcast.dao.UserDao;
  4. import cn.itcast.dao.impl.UserDaoImpl;
  5. import cn.itcast.pojo.User;

  6. public class UserTest {

  7.         /**
  8.          * @param args
  9.          *
  10.          * @param        登录测试
  11.          *
  12.          * @param        注册测试
  13.          */
  14.         public static void main(String[] args) {
  15.                 while (true) {
  16.                         System.out.println("欢迎来到itcast");
  17.                         System.out.print("1:登录\t");
  18.                         System.out.print("2:注册\t");
  19.                         System.out.println("3: 退出");
  20.                         System.out.println("请根据数字进行选择:");
  21.                         Scanner sc = new Scanner(System.in);
  22.                         String line = sc.nextLine();

  23.                         switch (line) {
  24.                         case "1":
  25.                                 System.out.println("欢迎来到登录界面!");
  26.                                 // 键盘录入信息
  27.                                 System.out.print("请输入用户名:");
  28.                                 String username = sc.nextLine();
  29.                                 System.out.print("请输入密码:");
  30.                                 String password = sc.nextLine();
  31.                                 /*
  32.                                  * 多态用法 UserDao ud = new UserDaoImpl(); 具体类用法
  33.                                  */
  34.                                 UserDaoImpl udi = new UserDaoImpl();
  35.                                 boolean flag = udi.isLogin(username, password);
  36.                                 if (flag) {
  37.                                         System.out.println("欢迎来到英雄联盟!");
  38.                                         System.exit(0);
  39.                                 } else {
  40.                                         System.out.println("登录失败,即将返回主界面!!!");
  41.                                 }
  42.                                 break;
  43.                         case "2":
  44.                                 System.out.println("欢迎来到注册界面");
  45.                                 // 键盘录入用户信息
  46.                                 System.out.println("请输入用户名:");
  47.                                 String newUsername = sc.nextLine();
  48.                                 // 此处可以加入判断,判断用户名是否已经存在、邮箱、电话都可以执行此操作。
  49.                                 System.out.println("请输入密码:");
  50.                                 String newPassword = sc.nextLine();
  51.                                 System.out.println("请输入邮箱:");
  52.                                 String newEmail = sc.nextLine();
  53.                                 System.out.println("请输入电话:");
  54.                                 String newPhone = sc.nextLine();

  55.                                 // 把数据用对象进行封装
  56.                                 User user = new User();
  57.                                 user.setUsername(newUsername);
  58.                                 user.setPassword(newPassword);
  59.                                 user.setEmail(newEmail);
  60.                                 user.setPhone(newPhone);

  61.                                 // 创建用户操作类对象
  62.                                 UserDaoImpl newUdi = new UserDaoImpl();

  63.                                 // 调用注册方法
  64.                                 newUdi.regist(user);
  65.                                 System.out.println("注册成功");
  66.                                 break;
  67.                         case "3":
  68.                                 System.out.println("谢谢你的使用");
  69.                                 System.exit(0);
  70.                                 break;
  71.                         default:
  72.                                 System.out.println("输入有误,返回主界面!!!");
  73.                                 break;
  74.                         }

  75.                 }
  76.         }

  77. }
复制代码
  1. package cn.itcast.pojo;

  2. public class User {
  3.         private String username;
  4.         private String password;
  5.         private String email;
  6.         private String phone;

  7.         public User() {
  8.                 super();
  9.                 // TODO Auto-generated constructor stub
  10.         }

  11.         public User(String username, String password, String email, String phone) {
  12.                 super();
  13.                 this.username = username;
  14.                 this.password = password;
  15.                 this.email = email;
  16.                 this.phone = phone;
  17.         }

  18.         public String getUsername() {
  19.                 return username;
  20.         }

  21.         public void setUsername(String username) {
  22.                 this.username = username;
  23.         }

  24.         public String getPassword() {
  25.                 return password;
  26.         }

  27.         public void setPassword(String password) {
  28.                 this.password = password;
  29.         }

  30.         public String getEmail() {
  31.                 return email;
  32.         }

  33.         public void setEmail(String email) {
  34.                 this.email = email;
  35.         }

  36.         public String getPhone() {
  37.                 return phone;
  38.         }

  39.         public void setPhone(String phone) {
  40.                 this.phone = phone;
  41.         }

  42.         @Override
  43.         public String toString() {
  44.                 // TODO Auto-generated method stub
  45.                 return "User [username=" + username + ",password=" + password
  46.                                 + ",email=" + email + ",phone" + phone + "]";
  47.         }

  48. }
复制代码
  1. package cn.itcast.dao;

  2. import cn.itcast.pojo.User;//不导包。User不能使用
  3. /**
  4. * 用户接口操作
  5. *
  6. * @author s-star
  7. *
  8. */
  9. public interface UserDao {
  10. /**
  11. * 这是用户登录的功能
  12. *
  13. * @param username
  14. *                         用户名
  15. * @param password
  16. *                         密码
  17. * @return        返回登录是否成功
  18. */
  19.         public abstract boolean isLogin(String username,String password);
  20.         
  21. /**
  22. * 这是用户注册的功能
  23. *
  24. * @param        user
  25. *                                 要注册的用户
  26. */
  27.         public abstract void regist(User user);
  28. }
复制代码
  1. package cn.itcast.dao.impl;

  2. //import java.util.ArrayList;
  3. //import java.util.Collection;

  4. import cn.itcast.dao.UserDao;
  5. import cn.itcast.pojo.User;

  6. /**
  7. * 用户操作类实现
  8. *
  9. * @author s-star     如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户
  10. *         目前,我们学过的能够存储的:对象,对象数组。通过分析,我们最终选择对象数组。 问题:
  11. *         用对象数组,就得定义数组;定义数组,就得知道数组长度。 所以,对象数组不够好,选择集合。 不过还没学,只能用对象数组,
  12. *         自己固定一个长度:5.
  13. */
  14. public class UserDaoImpl implements UserDao {
  15.         // 定义成员变量数组
  16.         private static User[] users = new User[5];
  17.         private static int index = 0;

  18.         // Collection c = new ArrayList();
  19.         //
  20.         // User users = new User();

  21.         @Override
  22.         public boolean isLogin(String username, String password) {
  23.                 /*
  24.                  * 遍历数组,获取到每一个对象, 然后再拿着对象的用户名和密码 和传递过来的用户名和密码进行比较
  25.                  */
  26.                 boolean flag = false;
  27.                 for (int i = 0; i < users.length; i++) {
  28.                         User user = users[i];
  29.                         // 判断是否为null
  30.                         if (user != null) {
  31.                                 if (user.getUsername().equals(username)
  32.                                                 && user.getPassword().equals(password)) {
  33.                                         flag = true;
  34.                                         break;
  35.                                 }
  36.                         }
  37.                 }
  38.                 return flag;
  39.         }
  40.         @Override
  41.         public void regist(User user) {
  42.                 users[index++] = user;
  43.         }
  44. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马