Java游戏用户登录注册_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 packagecn.lzl.pojo;2 /**

3 * 这是用户的基本描述类4 *5 *@authorLZL6 *7 *@versionV1.08 */

9 public classUser {10 //成员变量

11 privateString username;12 privateString password;13

14 //无参构造

15 publicUser() {16 }17

18 //成员方法

19 publicString getUsername() {20 returnusername;21 }22

23 public voidsetUsername(String username) {24 this.username =username;25 }26

27 publicString getPassword() {28 returnpassword;29 }30

31 public voidsetPassword(String password) {32 this.password =password;33 }34

35

36

37 }

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

1 packagecn.lzl.Dao.impl;2

3 importcn.lzl.pojo.User;4

5 /**

6 * 这是针对用户进行操作的接口7 *8 *@authorLZL9 *10 *@versionV1.011 */

12 public interfaceUserDao {13 /**

14 * 这是用户进行登陆的功能15 *16 *@paramusername17 * 用户名18 *@paramuserpassworld19 * 密码20 *@return是否登陆成功21 */

22 public abstract booleanisLogin(String username, String passworld);23

24 /**

25 * 这是用户进行注册的功能 PS:如果方法的参数列表大于3种,就创建一个类,调用这个类26 *27 *@paramuser28 * 用户信息29 */

30 public abstract voidregist(User user);31

32 }

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

1 packagecn.lzl.Dao.impl;2

3 /**

4 * 这是用户操作类包(集合版)5 *6 *@authorLZL7 *8 *9 */

10 importjava.util.ArrayList;11

12 importcn.lzl.pojo.User;13

14 public class UserDaoimpl implementsUserDao {15 //因为登陆和注册要共用同一个集合(服务端),所以用static修饰

16 private static ArrayList array = new ArrayList();17

18 public booleanisLogin(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 returnflag;30 }31

32 public voidregist(User user) {33 //用户注册时,把用户信息添加到集合中

34 array.add(user);35 }36

37 }

随机数小游戏类:

1 packagecn.lzl.GuessGame;2

3 importjava.util.Scanner;4

5 /**

6 * 这是个猜数字的小游戏 1-1007 *8 *@authorLZL9 *10 *11 */

12 public classGuessNmuber {13 //无参构造

14 publicGuessNmuber(){15

16 }17 public static voidstart (){18 //产生一个随机数

19 int number = (int)(Math.random() * 100) + 1;20

21 //定义一个统计变量

22 int count = 0;23 //进入循环,直到猜中才退出,猜错就重新来,并进行计数

24 while(true){25

26 //键盘录入猜测数据

27 Scanner sc = newScanner(System.in);28 System.out.println("请输入你的猜测:");29 int num =sc.nextInt();30 count ++;31 //猜测数据进行对比

32 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 packagecn.lzl.test;2

3 importjava.util.Scanner;4

5 importcn.lzl.Dao.impl.UserDao;6 importcn.lzl.Dao.impl.UserDaoimpl;7 importcn.lzl.GuessGame.GuessNmuber;8 importcn.lzl.pojo.User;9

10 /**

11 * 这是用户测试类 测试用户登录、注册、退出以及登陆成功后进行的小游戏功能12 *13 *@authorLZL14 *15 *@versionV1.016 */

17 public classUserTest {18

19 public static voidmain(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 = newScanner(System.in);28 System.out.println("请输入你的选择:");29 //为了后面的录入信息的方便,我所有的数据录入全部用字符接收

30 String choise =sc.nextLine();31

32

33 //由于登陆和注册都要调用UserDao类里面的方法,所以写在switch语句外面

34 UserDao ud = newUserDaoimpl();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 = newUser();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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值