分析:
A:有哪些类呢?
用户类
测试类
B:每个类有哪些东西呢?
用户类:
成员变量:用户名,密码
构造方法:无参构造
成员方法:getXxx()/setXxx()
登录,注册
假如用户类的内容比较对,将来维护起来就比较麻烦,为了更清晰的分类,我们就把用户又划分成了两类
用户基本描述类
成员变量:用户名,密码
构造方法:无参构造
成员方法:getXxx()/setXxx()
用户操作类
登录,注册
测试类:
main方法。
C:类与类之间的关系是什么呢?
在测试类中创建用户操作类和用户基本描述类的对象,并使用其功能。
分包:
A:功能划分
B:模块划分
C:先按模块划分,再按功能划分
今天我们选择按照功能划分:
用户基本描述类包 cn.itcast.pojo
用户操作接口 cn.itcast.dao
用户操作类包 cn.itcast.dao.impl---实现接口类
今天是集合实现,过几天是IO实现,再过几天是GUI实现,就业班我们就是数据库实现
用户测试类 cn.itcast.test
用户基本描述类
1 package YongHuMaoShuLei; 2 /** 3 * 这是用户基本描述类 4 * 5 * @author Spring 6 * @version V1.0 7 * 8 * 描述内容: 9 * 成员变量: 用户名,登录密码 10 * 构造方法:选择无参 11 * 成员方法:setXxx和getXxx 12 * */ 13 14 public class User { 15 private String username; 16 private String password; 17 18 public User(){} 19 20 public String getUsername() { 21 return username; 22 } 23 24 public void setUsername(String username) { 25 this.username = username; 26 } 27 28 public String getPassworld() { 29 return password; 30 } 31 32 public void setPassworld(String passworld) { 33 this.password = passworld; 34 } 35 }
用户操作接口
1 package JiKouGongNengLei; 2 3 import YongHuMaoShuLei.User; 4 5 /** 6 * 根据用户实现功能的接口 7 * @author Spring 8 * @version 1.0 9 * 10 * */ 11 12 public interface UserDao { 13 /** 14 * 这是用户登录功能 15 * 16 * @param username 17 * 用户名 18 * @param password 19 * 密码 20 * @return 返回登录是否成功 21 */ 22 public abstract boolean show(String Username,String password); 23 /** 24 * 这是用户注册功能 25 * 26 * @param user 27 * 要注册的用户信息--此时参数----是用户类基本描述类类对象 28 */ 29 public abstract void show1(User user); 30 /** 31 * 这是猜数游戏功能 32 */ 33 public abstract void show2(); 34 35 36 37 }
用户实现接口类--操作包
package ShiXianJiKouLei; import JiKouGongNengLei.UserDao; import YongHuMaoShuLei.User; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; /** * 这是用户操作的接口功能的具体实现类(集合版) * * @author Spring * @version V1.0 * */ public class UserDemoimpl implements UserDao { //为了登录功能进行用户名和登录密码的校验 // 为了让多个方法能够使用同一个集合,就把集合定义为成员变量 // 为了不让外人看到,用private // 为了让多个对象共享同一个成员变量,用static //static变量也称作静态变量,静态变量和非静态变量的区别是: // 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。 // 而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。 private static ArrayList<User> A= new ArrayList<User>(); //登录校验 public boolean show(String username,String password){ boolean flag = false; //对集合中的数据进行遍历 //遍历其用户用和登录密码是否和传递过来的参数相等---使用增强否进行遍历 for(User m : A){ //遍历得到User中的m对象---其m对象调用其获取方法getXxx来获取集合中的注册的用户和密码信息 //此时注册信息中的用户和密码信息进行比较String类型采用equals方法进行 if (m.getUsername().equals(username)&& m.getPassworld().equals(password)){ flag =true; break; } } return flag;//返回的是flag变量的boolean值 } //注册实现 public void show1(User user){ //把基本描述用户信息添加到集合 //创建集合对象 // ArrayList<User> A= new ArrayList<User>(); //向集合中添加信息 A.add(user); } //猜数游戏 public void show2(){ //提示用户进行猜数游戏 System.out.println(\"--------\"+\"欢迎来到猜数小游戏\"+\"-----------\"); //随机产生一个生成数 int suijishu = (int) (Math.random()*100)+1; System.out.println(suijishu); //创建键盘输入对象 Scanner sc = new Scanner(System.in); //进行循环判断猜数猜数游戏--给出三次猜数机会--并提示用户还剩多少次机会 for(int x=0;x<3;x++){ //给出用户提示 System.out.println(\"请你输入你所猜的数\"); //定义键盘输入对象的类型 int aa = sc.nextInt(); //给出初始的次数 int count = 2; if (aa==suijishu){ System.out.println(\"恭喜你猜对了,本轮游戏结束\"); break; }else if(aa>suijishu){ System.out.println(\"你猜的数有点大\"); if(count-x==0){ System.out.println(\"游戏结束\"); break; }else{ System.out.println(\"你还有\"+(count-x)+\"次机会\"); } }else if(aa<suijishu){ System.out.println(\"你猜的数有点小\"); if(count-x==0){ System.out.println(\"游戏结束\"); break; }else{ System.out.println(\"你还有\"+(count-x)+\"次机会\"); } } } } }
测试类
package CeShiLei; import JiKouGongNengLei.UserDao; import ShiXianJiKouLei.UserDemoimpl; import YongHuMaoShuLei.User; import com.sun.jmx.snmp.SnmpInt; import java.util.Scanner; public class Usertest { public static void main(String[] args) { //创建键盘输入对象 Scanner sc = new Scanner(System.in); while (true) { //首先给出一个选择界面---提供用户进行选择 System.out.println(\"----------\" + \"欢迎光临\" + \"------------\"); System.out.println(\"1:注册\"); System.out.println(\"2:登录\"); System.out.println(\"3:退出\"); System.out.println(\"---------------------\"); System.out.println(\"请你输入您的选择\"); //规定键盘输入对象的类型是String类型 String xuanze = sc.nextLine(); //对UserDao创建对象---利用多态、----对UserDemoimpol中的集合使用其静态变量static //static修饰的变量被所有对象所共享 //switch语句中有多个地方要使用,我们就定义到外边 UserDao gongneng = new UserDemoimpl(); //对给出的页面进行选项进行选择 switch (xuanze) { case \"1\": //注册界面 System.out.println(\"----------\" + \"欢迎来到注册界面\" + \"------------\"); System.out.println(\"注册用户名:\"); String newusername = sc.nextLine(); System.out.println(\"注册密码:\"); String newpassword = sc.nextLine(); //创建User对象---利用对象将数据传递给User中的成员变量 User jiben = new User(); jiben.setUsername(newusername); jiben.setPassworld(newpassword); //利用UserDemoimpl实现接口类---将User对象中的信息添加到集合中 //利于集合中的数据与登录数据进行比较 //利用上面创建的UserDao gongneng = new UserDemoimpl();向集合添加数据 gongneng.show1(jiben); //数据添加完毕显示注册成功 System.out.println(\"注册成功\"); break; case \"2\": //登录界面 System.out.println(\"----------\" + \"欢迎来到登录界面\" + \"------------\"); System.out.println(\"登录用户名:\"); String username = sc.nextLine(); System.out.println(\"登录密码:\"); String password = sc.nextLine(); //对输入的用户名和密码进行比较 //调用其UserDemoimpl中的show方法来进行对集合中存在的注册信息进行比较 //比较其注册用户名,密码是否和输入这输入的一样 //UserDao gongneng = new UserDemoimpl();--多态 //方法返回值为boolean boolean AA = gongneng.show(username,password); //如果Boolean值是true的则执行循环体内的语句否则执行else{} if(AA){ System.out.println(\"恭喜你,登录成功\"); System.out.println(\"你是否要玩猜数游戏--y继续--n退出\"); while(true) { String tt = sc.nextLine(); //equalsIgnoreCase不区分大小写 if (tt.equalsIgnoreCase(\"y\")) { gongneng.show2(); System.out.println(\"你还玩吗?y/继续--n/退出\"); } else if (tt.equalsIgnoreCase(\"n\")) { System.exit(0); } } }else{ System.out.println(\"用户名或者密码错误\"); System.out.println(\"请你再次输入\"); } break; case \"3\": default: System.out.println(\"欢迎您的使用,再见\"); //强制结束此程序的运行--此语句执行后后面的语句不再被执行 System.exit(0); } } } }
来源:https://www.cnblogs.com/ztg-java-xuexi/p/16055549.html
本站部分图文来源于网络,如有侵权请联系删除。