编程练习(4)

需求说明
声明一个类Student以描述其共有特性”姓名”,“密码”,“年龄”,
“电话”(name,pass,age,tel)
(1)在Student类 中,为每个属性添加修改和访问的方法(如:setAge, getAge),并添加一个showInfo()方法;
(2)为上面的Student类添加一个有四个参(name,pass,age,tel)的构造方法;
(3)在main方法中创建三个学生对象,并调用showInfo()方法,打印其中某个学生对象的信息。
(4)在Student类中的修改手机号码的方法中实现电话号码的格式检查,若出现非数字,则提示”手机格式错误”;
(5)创建个对象数组,实现登录功能。

import java.util.*;
class Student{
    String name;
    String pass;
    int age;
    String tel;
    public Student(String name,String pass,int age,String tel){
        this.name=name;
        this.pass=pass;
        this.age=age;
        this.tel=tel;
        }
    public String getName(){
        return name;
        }
    public void setName(String name){
        this.name=name;
        }
    public String getPhone(){
        return tel;
        }
    public void setPhone(String tel){
        for(int i=0;i<tel.length();i++){
            if(tel.charAt(i)<'0'||tel.charAt(i)>'9'){
                System.out.println("手机格式错误!");
                return;
            }
            }
        this.tel=tel;
        }
    public int getAge(){
        return age;
        }
    public void setAge(int age){
        this.age=age;
        }
    public String getPass(){
        return pass;
        }
    public void setPass(String pass){
        this.pass=pass;
        }

     public void showInfo(){
        System.out.println("姓名:"+name+",密码:"+pass+",年龄"+age+",电话"+tel);
        }

}
import java.util.*;
class testStudent{
    public static void main(String[] args){
    Student stu1=new Student("张华","123456",18,"18702697364");
    Student stu2=new Student("杨杰","234567",20,"13502697169");
    Student stu3=new Student("宋茜","789123",23,"169702697365");
    Scanner in=new Scanner(System.in);
    //System.out.println("请输入新的号码:");
    //String newtel=in.nextLine();
    //stu1.setPhone(newtel);
    //stu1.showInfo();
    //对象数组
    Student[] Str=new Student[3];
    Str[0]=stu1;
    Str[1]=stu2;
    Str[2]=stu3;
    System.out.println("请输入姓名:");
      String name=in.nextLine();
      System.out.println("请输入密码:");
      String pass=in.nextLine();
      int i=0;
      for(;i<Str.length;i++){
      if(name.equals(Str[i].getName())&&pass.equals(Str[i].getPass())){
        System.out.println("登陆成功!");
        break;
      }

    }
      if(i==Str.length){
          System.out.println("登陆失败!");
        }
  }
}

需求说明:
 任务
 为某商场开发一套幸运抽奖系统,客户首先注册成为商场会员,会员登录系统,参加抽奖活动
主要功能:
 注册
 登录
 幸运抽奖
阶段1:实现菜单的输出显示
 需求说明
 输出菜单
 选择菜单编号,输出菜单信息
 如果编号选择错误,输出“您的输入有误!”

这里写图片描述

阶段2:实现循环执行功能
 需求说明
 系统询问用户是否继续
 如果用户选择继续,则可以继续选择菜单,否则程序结束,退出系统

这里写图片描述

阶段3:实现注册
 需求说明
 输入用户名和密码,系统产生4位随机数作为卡号。
 注册成功,显示注册信息并修改注册标识为true

这里写图片描述

阶段4:实现登录功能
 需求说明
 输入注册时的用户名和密码,登录成功,提示欢迎信息
 如果用户名和密码输入错误,提示用户继续输入,最多有
3次输入机会
这里写图片描述

阶段5:实现幸运抽奖
 需求说明
 登录成功后,用户选择幸运抽奖菜单,进入幸运抽奖功能
 输入会员卡号,系统生成5个4位随机数作为幸运数字
 如果会员卡号是其中之一,则成为本日幸运会员;否则不是幸运会员

这里写图片描述
注:

//如下代码生成四位随机数
int max=9999;
int min=0000;
cardNumber=(int)(Math.random()*(max-min))+min;
package test;
//创建Data类,存放系统全局变量
public class Data {
    public static User[] user=new User[10];

}
package test;
//创建用户类
public class User {
    private String name;
    private String password;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}
//创建工具类
package test;
import java.util.*;
public class Util {
    public static String Message(){
        Scanner in=new Scanner(System.in);
        String xy=in.nextLine();
        return xy;
    }

}
package test;
//运行的主文件
public class Run {
    public static void main(String[] args){
        showMenu();
        String choice=Util.Message();
        if(choice.equals("1")){
            Register();
            //main(args);
        }
        else if(choice.equals("2")){
            Login(3);
            //main(args);
        }
        else if(choice.equals("3")){
            chouJiang();
            //main(args);
        }
        else{
            System.out.println("输入有误");
        }
        System.out.print("是否继续(y/n)");
        String st=Util.Message();
        if(st.equals("y")){
            main(args);}//main方法递归调用
        else{
            System.out.print("系统退出,谢谢使用!");
        }
    }
    public static void chouJiang() {
        System.out.println("[奖客富翁系统>抽奖]");
        System.out.println("请输入你的卡号:");
        String card=Util.Message();
        int[] arr=new int[5];
        int max=9999;
        int min=0000;
        boolean flag=true;
        System.out.print("本日的幸运数字为:");
        for(int i=0;i<=4;i++){
            arr[i]=(int)(Math.random()*(max-min))+min;
            System.out.print(arr[i]);
            System.out.print("\t");
        }
        for(int j=0;j<=4;j++){
            if(card.equals(arr[j])){
                System.out.println("恭喜你,成为本日的幸运会员!");
                flag=false;
                break;
            }       
        }
        if(flag==true){
            System.out.println("抱歉!你不是本日的幸运会员!");
        }


    }
    public static void Login(int n) {
        System.out.println("[奖客富翁系统>登录]");
        if(n>0){
            System.out.println("你还有"+n+"次机会!");
            System.out.print("请输入用户名:");
            String name=Util.Message();
            System.out.print("请输入密码:");
            String pass=Util.Message();
            User[] user=Data.user;
            int i=0;
            for(;i<user.length;i++){
                try{
                if(name.equals(user[i].getName())&&pass.equals(user[i].getPassword())){
                    System.out.println("欢迎您:"+name);
                    break;
                }}catch(NullPointerException e){}

            }
            if(i==user.length){
            n--;
            Login(n);
            }
        }
    }
    public static void Register() {
        System.out.println("[奖客富翁系统>注册]");
        System.out.println("请填写个人注册信息:");
        System.out.print("用户名:");
        String name=Util.Message();
        System.out.print("密码:");
        String pass=Util.Message();
        int max=9999;
        int min=0000;

        User user=new User();
        user.setName(name);
        user.setPassword(pass);
        User[] use=Data.user;//创建一个数组use来接收user地址,使它指向与user同一个数组空间
        for(int i=0;i<use.length;i++){
            if(use[i]==null){
                use[i]=user;        
                break;
            }
        }
        System.out.println("注册成功,请记录好您的会员卡号");
        System.out.println("用户名"+"\t"+"密码"+"\t"+"会员卡号");
        for(int j=0;j<use.length;j++){
            if(use[j]!=null){
                int cardNumber=(int)(Math.random()*(max-min))+min;
                System.out.println(use[j].getName()+"\t"+use[j].getPassword()+"\t"+cardNumber);
            }
        }
    }
    public static void showMenu(){
        System.out.println("********欢迎进入奖客富翁系统********");
        System.out.println("             1.注册                 ");
        System.out.println("             2.登录                 ");
        System.out.println("             3.抽奖                 ");
        System.out.println("************************************");
        System.out.print("请选择菜单:");
    }

}

需求说明
完成人机互动版猜拳游戏的开发
要求:
1. 能够选取对战角色
a) 选择对战角色
2. 能够猜拳
a) 开始对战,用户选择出拳,与对手进行比较,提示胜负信息
3. 能够记录分数(提示:可以选择对战角色是进入一局游戏,可以选择是否进入下一轮是选择一局里面的下一轮)
a) 每一轮猜拳结束,获胜一方加1分(平局都不加分),结束游戏时,显示对战次数以及对战最终结果
这里写图片描述

这里写图片描述

这里写图片描述

package test;
//定义Data类来存放全局变量
public class Data {
    public static String[] str=new String[]{"剪刀","石头","布"};
    public static String[] role=new String[]{"刘备","孙权","曹操"};
    public static int[] array=new int[]{0,1,2};
    public static int cishu=0,score1=0,score2=0;

}
package test;
import java.util.*;
//定义一个工具类
public class Util {
    //控制台输入整型数据
    public static int getRole(){
        Scanner in=new Scanner(System.in);
        int x=in.nextInt();
        return x;
    }
    //控制台输入字符串
    public static String getName(){
        Scanner in=new Scanner(System.in);
        String x=in.next();
        return x;
    }
    //获得0,1,2任意一个随机数
    public static int getCount(){
        Random in=new Random();
        int count=in.nextInt(3);
        return count;
    }


}
package test;

public class Run {
    public static void main(String[] args){
        showMenu();
        GameBefore();
    }
    public static void showMenu(){
        System.out.println("********************");
        System.out.println("     猜拳游戏开始                     ");
        System.out.println("********************");
        System.out.println("出拳规则:剪刀--石头--布");
        System.out.print("请选择对方角色(1.刘备 2.孙权 3.曹操):");
    }
    //游戏首页环节
    public static void GameBefore(){
        int choice=Util.getRole();
        for(int i=0;i<3;i++){
            if(choice==i+1){
            System.out.println("你选择了与"+Data.role[i]+"对战");
            GameMiddle(i);
            }
        }
    }
    //游戏中间环节
    public static void GameMiddle(int x){
        System.out.print("请输入你的名字:");
        String name=Util.getName();
        System.out.println(name+"\t VS\t"+Data.role[x]+"\n");
        System.out.print("要开始吗?(y/n):");
        String choice=Util.getName();
        switch(choice){
        case "y":
            GameAfter(name,x);
            break;
        case "n":
            return;
        default:
            System.out.println("输入错误");

        }
    }
    //游戏尾部环节
    public static void GameAfter(String y,int x){
        System.out.print("请出拳:");
        String quan=Util.getName();
        for(int i=0;i<3;i++){
            if(quan.equals(Data.str[i])){
                System.out.println(y+",你出的是"+quan+"!");
                break;
            }
        }
        int j=0;
        for(;j<3;j++){
            //字符串,字符判断相不相等才用equals
            if(Util.getCount()==(Data.array[j])){
                System.out.println(Data.role[x]+",出的是"+Data.str[j]+"!");
                break;
            }
        }
        int xy=Rule.getRule(quan,j);
        if(xy==1){Data.score1+=1;}
        else if(xy==-1){Data.score2+=1;}
        System.out.println("是否继续下一局!(y/n)");
        String choice=Util.getName();
        if(choice.equals("y")){
            Data.cishu+=1;
            GameAfter(y,x);
        }
        else{

            GameResult(y,x);

        }
    }
    //游戏结果
    public static void GameResult(String name,int x){
        System.out.println("-----------------------------");
        System.out.println("\t"+name+"\t VS\t"+Data.role[x]+"\n");
        System.out.println("对战次数:"+(++Data.cishu));
        System.out.println("姓名"+"\t"+"得分");
        System.out.println(name+"\t"+Data.score1);
        System.out.println(Data.role[x]+"\t"+Data.score2);   
    }


}
package test;
//0剪刀   1石头  2布  
//                  赢                      输                  平
//人的选择-电脑的选择:   -2  1     else     0
//定义一个规则类
public class Rule {
    public static int getRule(String x,int y){
        for(int i=0;i<3;i++){
            if(x.equals(Data.str[i])){
                if(i-y==-2||i-y==1){
                    System.out.println("恭喜你,胜利了!");
                    return 1;
                }
                else if(i-y==0){
                    System.out.println("哎呀,打平了,再接再厉!");
                    break;
                }
                else{
                    System.out.println("哈哈,你输了!");
                    return -1;
                }
            }
        }
        return 0;
    }

}

运行结果:

********************
     猜拳游戏开始                     
********************
出拳规则:剪刀--石头--布
请选择对方角色(1.刘备 2.孙权 3.曹操):2
你选择了与孙权对战
请输入你的名字:happy
happy    VS 孙权

要开始吗?(y/n):y
请出拳:石头
happy,你出的是石头!
孙权,出的是剪刀!
恭喜你,胜利了!
是否继续下一局!y/ny
请出拳:布
happy,你出的是布!
孙权,出的是石头!
恭喜你,胜利了!
是否继续下一局!y/ny
请出拳:剪刀
happy,你出的是剪刀!
哈哈,你输了!
是否继续下一局!y/nn

-----------------------------
    happy    VS 孙权

对战次数:3
姓名  得分
happy   2
孙权    1

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值