需求:模拟用户登录注册--------集合进行完成
A.思想
Java语言,是一种面向对象的思想
1)分析当前需求有哪些类?
2)分析每一个类中有哪些东西?
3)类与类之间的关系是什么?
分析:
有哪些类?
A):用户类:
成员变量:用户名,密码
构造方法:有参/无参
成员方法:set()/get()公共访问方法
如果我们的用户比较多的时候,这样写非常麻烦,把用户类拆分开来,拆分法!(根据具体的需求去拆分)
1.用户基本描述类
2.用户操作类
B):测试类:
main()方法,主程序入口
B.在java中按照哪种模块进行分
1)按功能划分
2)按模块划分
3)先按照功能划分,在按照模块划分
模拟用户登录注册:按照功能划分:要么登陆,要么注册
分包命名
用户的描述类(基本类):包的命名:公司反域名小写:com/cn/org/net.公司域名.user
package com.xxxxx.user; /** * 这是用户的基本描述类 * * @author Wolf * @version V1.0 * */ public class User { /** * 成员变量 */ private String username; private String password; /** * 无参构造方法 */ public User() { super(); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
用户的操作类:包的命名:com/cn/org/net.公司域名.dao(接口:抽象方法)
package com.xxxxx.dao; import com.xxxxx.user.User; /** * 这是用户的操作接口 * * @author Wolf * @version V1.0 */ public interface UserDao { /** * 这是用户注册功能 * * @param user * 注册了用户信息 */ public abstract void regist(User user); /** * 这是用户登录功能 * * @param username * 用户名 * @param password * 密码 * @return 返回的是用户登录是否成功 */ public abstract boolean isLogin(String username, String password); }用户的操作了具体实现类:(接口的子实现类):com/cn/org/net.公司域名.dao.impl;实现类
package com.xxxxx.dao; import java.util.ArrayList; import com.xxxxx.user.User; /** * 这是用户操作的具体实现类(集合实现) * * @author Wolf * @version V1.0 */ public class UserDaoImpl implements UserDao { /* * 为了让多个功能共用这个集合对象,所以将集合对象封装成成员变量,为了不让外界看到,用private修饰 * 该集合对象被多个功能共享,所以用static修饰 */ private static ArrayList<User> array = new ArrayList<User>(); /** * 用户注册功能 */ @Override public void regist(User user) { // 将用户添加到集合中 array.add(user); } /** * 用户登录功能 */ @Override public boolean isLogin(String username, String password) { // 需要将每一个用户遍历出来 for (User u : array) { // 获取到每一个用户信息,进行帐号密码匹配 if (u.getUsername().equals(username) && u.getPassword().equals(password)) { // 如果匹配到,则返回true return true; } } // 若没有匹配到,返回false return false; } }测试类:com/cn/org/net.公司域名.test
package com.xxxxx.test; import java.util.Scanner; import com.xxxxx.dao.UserDao; import com.xxxxx.dao.UserDaoImpl; import com.xxxxx.user.User; /** * 用户测试类 * * @author Wolf * @version V1.0 */ public class UserTest { public static void main(String[] args) { // 写一个死循环,可以多次选择 while (true) { // 简单的界面 System.out.println("**********欢迎来到英雄联盟**********"); System.out.println("*************1--登录*************"); System.out.println("*************2--注册*************"); System.out.println("*************3--退出*************"); System.out.println("********************************"); // 创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请选择操作:"); String choice = sc.next(); // 创建UserDao对象 UserDao ud = new UserDaoImpl(); switch (choice) { case "1": System.out.println("*************登陆界面*************"); System.out.println("请输入用户名:"); String username = sc.next(); System.out.println("请输入密码"); String password = sc.next(); // 调用登陆功能 boolean b = ud.isLogin(username, password); // 判断 if (b) { /* * 这个位置可以调用一些功能,比如猜数字游戏,上一章的录入学生成绩 * 也可以将之前的《模拟银行账户功能》系统插入进来 * 下面就简单的写一些操作测试一下,具体的功能自行测试 */ System.out.println("登陆成功!欢迎来到召唤师峡谷!"); System.out.println("********************************"); System.out.println("是否开始游戏?y/n"); while (true) { String s = sc.next(); if (s.equalsIgnoreCase("y")) { System.out.println("********************************"); System.out.println("敌军还有30秒到达战场!"); System.out.println("碾碎他们!"); System.out.println("Victroy"); System.out.println("********************************"); System.out.println("是否开始下一局?y/n"); } else { break; } } System.out.println("********************************"); System.out.println("谢谢!再见"); System.exit(0); } else { System.out.println("********************************"); System.out.println("帐号或密码错误!登录失败"); } break; case "2": System.out.println("*************注册界面*************"); System.out.println("请输入用户名:"); String newUsername = sc.next(); System.out.println("请输入密码:"); String newPassword = sc.next(); // 把用户名和密码封装到User对象中 User u = new User(); u.setUsername(newUsername); u.setPassword(newPassword); // 调用注册功能 ud.regist(u); System.out.println("注册成功!欢迎加入英雄联盟!"); break; case "3": default: System.out.println("谢谢!再见"); System.exit(0); } } } }
测试结果
可自行在测试类中插入一些登陆成功后的后续功能:比如《模拟银行账户功能》,自行测试
《模拟银行账户功能》链接:http://blog.csdn.net/wpf719971425/article/details/74315596