编写Java程序 不可随意查看年龄等隐私

编写Java程序,不能随便查看用户的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认年龄,必须在1-150,年龄工资不能直接查看,name长度在2-5字符之间。

首先创造一个类,在这个类中定义姓名,年龄,工资等变量。

package test01;

public class employee {
	public String name; // 姓名
	private int age; // 年龄
	private double salary; // 工资

然后在进行对刚才的变量的封装

    //封装姓名
    public String getName() {
		return name;
	}

	public void setName(String name) {
			this.name = name;
	}

	// 封装年龄
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
			this.age = age;
	}

	// 封装工资
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary=salary;
	}

题目中说道要对变量进行合理的验证,所以在方法    public void ......... 下面用 IF 进行判断。

因为新疆地区少数名族名字普遍很长所以我把条件加到20字符。

年龄就按照题目所说0-150,给个默认值3岁

最后因为要输出所有信息,所以创造一个 printInfo()方法

public String getName() {
		return name;
	}

	public void setName(String name) {
		if (name.length() >= 0 && name.length() <= 5) {
			this.name = name;
		} else if (name.length() <= 20) {
			this.name = name;
			System.out.println("哇~ 你名字这么长");
		} else if (name.length() > 20) {
			System.out.println("过分了啊!达芬奇全名都没你这么长, (→_→)");
		}
	}

	// 封装年龄
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if (age >= 0 && age <= 150) {
			System.out.println("好了~ ,你的信息录入好了");
			this.age = age;
		} else if (age < 0) {
			System.out.println("你还是人吗?(╯▔皿▔)╯,给你默认岁数3岁 (→_→)");
            this.age = 3;
		} else if (age > 150) {
			System.out.println("你是吸血鬼吗?活这么久!给你默认岁数3岁 (→_→)");
            this.age = 3;
		}
	}

	// 封装工资
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {	
		this.salary=salary;
	}
    public void printInfo() {
		System.out.println("姓名:" + name + "\t\t" + "年龄:" + age + "\t\t" + "工资:"+salary);
	}
}

在创建一个类,用来输出刚才的变量

package test01;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);//键盘录入

        employee em = new employee();// 封装的类
        System.out.print("请输入姓名:");
        int a = sc.nextInt();
		em.setName(a);// 输出姓名
        System.out.print("请输入年纪:");
        int b = sc.nextInt();
        em.setAge(b);// 输出年纪

        em.printInfo();

输出结果是: 

请输入姓名:小明

请输入年纪:20

姓名:小明        年龄:20        工资:0.0

 题目上说不可随意查看年龄等信息,所以我想给他一个需要登陆密码才可查看信息的功能和按1号键输入信息,按2号键查看信息的功能。

首先创造新的类用来编写登陆密码的页面

package test01;

import java.util.Scanner;

public class password {
	private String[] userBox = { "qixian", "123456" };// 数据库存储的账号和密码,private修饰,只能在本类中使用

	public void secretKey() {
		password t = new password(); // 创建一个类的对象
		Scanner input = new Scanner(System.in);

		boolean userNameExist = false; // 用户名已存在标志
		boolean loginSuccess = false; // 账号和密码输入都正确,则登录成功标志
		do {
			System.out.println("请输入账号:");
			String user = input.nextLine(); // 获取用户输入的账号

			System.out.println("请输入密码:");
			String password = input.nextLine();// 获取用户输入的密码

			if (t.userBox[0].equals(user)) { // 输入的账号和数据库存在的用户名比较
				if (t.userBox[1].equals(password)) {// 输入的密码和数据库存在的密码比较
					System.out.println("恭喜您登录成功!");
					loginSuccess = true;
					// 在这里插入数据
				} else {
					loginSuccess = false;
					System.out.println("账号或者密码输入错误,请重新输入!");
				}
				userNameExist = true;
			} else {
				userNameExist = false;
			}

			if (!userNameExist == true) {
				System.out.println("用户名不存在,请重新输入!");
			}
		} while ((!userNameExist == true) || (!loginSuccess == true));// 用户名或者密码任意一个错误,都重新输入,两者输入正确,则退出do{}while();继续往下执行
	}
}

突然想到,想给代码加一个功能:

用密码登陆的时候按”+“是给对方发工资,按”-“是扣工资

所以创建了一个新的类用来编写

package test01;

import java.util.Scanner;

public void access() {
				
		Scanner sc = new Scanner(System.in);
		employee em = new employee();// 封装的类
				
		System.out.println("发工资按(+)号,扣钱按(-)号");
		double salary;
		char income = sc.next().charAt(0);

		if (income == '+') {
			System.out.println("对方工资是多少元");
			double c = sc.nextInt();
			salary = c;
			em.setSalary(salary);
			System.out.println("工资已发过去,请注意提醒员工!");
		} else if (income == '-') {
			System.out.println("您要扣多少元");
			double c = sc.nextInt();
			salary = c;
			em.setSalary(salary);
			System.out.println("金额已被对方工资中扣出,请注意提醒员工!");
		}
	}

在完成第二个功能之前,在Interface类中用 printInfo()方法提示都有哪些功能

public void printInfo() {
		System.out.println("录入信息,		按1号键");
		System.out.println("查看信息,		按2号键");
		System.out.println("发工资或扣工资,	按3号键");
		System.out.println("推出程序,		按4号键");
		System.out.println("请输入(1-4)");
	}

最后用do-while循环完成完成第二功能。

package test01;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		employee em = new employee();// 封装的类
		Interface as = new Interface();
		password sd = new password();// 用户登录的类

		String key = ""; // 键盘录入环节
		boolean loop = true; // 用在死循环上

		as.printInfo();

		do {
			key = sc.next();
			switch (key) {
			case "1": // 录入信息
				System.out.print("请输入姓名:");
				String a = sc.next();
				em.setName(a);

				System.out.print("请输入年纪:");
				int b = sc.nextInt();
				em.setAge(b);
				
				System.out.print("您的信息已经录入好了,按2号键可以查看信息");
				break;

			case "2": // 查看信息
				sd.secretKey();
				em.printInfo();
				break;

			case "3": // 发,扣工资
				sd.secretKey();
				as.access();

				break;

			case "4": // 退出程序
				String choice = "";
				while (true) {
					System.out.println("你确定要退出吗? 请输入YES或NO");
					choice = sc.next();
					if (choice.equals("YES") || choice.equals("NO")) { // A
						break;
					}
				}
				if (choice.equals("YES")) {
					loop = false;
				}
				break;
			default:
				System.out.println("输入有误!请重新选择!");
			}

		} while (loop);

		System.out.println("系统已推出!");
	}
}

//  谢谢您看到这里,我是一个编程界的小白,这个也是自己独立完成的第一个完整的小小项目,也是第一次写博客 ,可能代码很多地方有bug,或者写的不是很好,有更好的意见的话希望前辈们指点一二,谢谢。

下面是全部代码

package test01;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		employee em = new employee();// 封装的类
		Interface as = new Interface();
		password sd = new password();// 用户登录的类

		String key = ""; // 键盘录入环节
		boolean loop = true; // 用在死循环上

		as.printInfo();

		do {
			key = sc.next();
			switch (key) {
			case "1": // 录入信息
				System.out.print("请输入姓名:");
				String a = sc.next();
				em.setName(a);

				System.out.print("请输入年纪:");
				int b = sc.nextInt();
				em.setAge(b);
				
				System.out.print("您的信息已经录入好了,按2号键可以查看信息");
				break;

			case "2": // 查看信息
				sd.secretKey();
				em.printInfo();
				break;

			case "3": // 发,扣工资
				sd.secretKey();
				as.access();

				break;

			case "4": // 退出程序
				String choice = "";
				while (true) {
					System.out.println("你确定要退出吗? 请输入YES或NO");
					choice = sc.next();
					if (choice.equals("YES") || choice.equals("NO")) { // A
						break;
					}
				}
				if (choice.equals("YES")) {
					loop = false;
				}
				break;
			default:
				System.out.println("输入有误!请重新选择!");
			}

		} while (loop);

		System.out.println("系统已推出!");
	}
}

package test01;

public class employee {
	public String name; // 姓名
	private int age; // 年龄
	private double salary; // 工资

	// 封装姓名
	public String getName() {
		return name;
	}

	public void setName(String name) {
		if (name.length() >= 0 && name.length() <= 5) {
			this.name = name;
		} else if (name.length() <= 20) {
			this.name = name;
			System.out.println("哇~ 你名字这么长");
		} else if (name.length() > 20) {
			System.out.println("过分了啊!达芬奇全名都没你这么长,按1号键重写 (→_→)");
		}
	}

	// 封装年龄
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if (age >= 0 && age <= 150) {
			this.age = age;
		} else if (age < 0) {
			System.out.println("你还是人吗?(╯▔皿▔)╯,给你默认岁数3岁(→_→)");
			this.age = 3;
		} else if (age > 150) {
			System.out.println("你是吸血鬼吗?活这么久!给你默认岁数3岁(→_→)");
			this.age = 3;
		}
	}

	// 封装工资
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {		
		this.salary=salary;
	}

	public void printInfo() {
		System.out.println("姓名:" + name + "\t\t" + "年龄:" + age + "\t\t" + "工资:"+salary);
	}
}
package test01;

import java.util.Scanner;

public class Interface {
	public void printInfo() {
		System.out.println("录入信息,		按1号键");
		System.out.println("查看信息,		按2号键");
		System.out.println("发工资或扣工资,	按3号键");
		System.out.println("推出程序,		按4号键");
		System.out.println("请输入(1-4)");
	}
	
	public void access() {
				
		Scanner sc = new Scanner(System.in);
		employee em = new employee();// 封装的类
				
		System.out.println("发工资按(+)号,扣钱按(-)号");
		double salary;
		char income = sc.next().charAt(0);

		if (income == '+') {
			System.out.println("对方工资是多少元");
			double c = sc.nextInt();
			salary = c;
			em.setSalary(salary);
			System.out.println("工资已发过去,请注意提醒员工!");
		} else if (income == '-') {
			System.out.println("您要扣多少元");
			double c = sc.nextInt();
			salary = c;
			em.setSalary(salary);
			System.out.println("金额已被对方工资中扣出,请注意提醒员工!");
		}
	}
}
package test01;

import java.util.Scanner;

public class password {
	private String[] userBox = { "mrziyulla", "123456" };// 数据库存储的账号和密码,private修饰,只能在本类中使用

	public void secretKey() {
		password t = new password(); // 创建一个类的对象
		Scanner input = new Scanner(System.in);

		boolean userNameExist = false; // 用户名已存在标志
		boolean loginSuccess = false; // 账号和密码输入都正确,则登录成功标志
		do {
			System.out.println("请输入账号:");
			String user = input.nextLine(); // 获取用户输入的账号

			System.out.println("请输入密码:");
			String password = input.nextLine();// 获取用户输入的密码

			if (t.userBox[0].equals(user)) { // 输入的账号和数据库存在的用户名比较
				if (t.userBox[1].equals(password)) {// 输入的密码和数据库存在的密码比较
					System.out.println("恭喜您登录成功!");
					loginSuccess = true;
					// 在这里插入数据
				} else {
					loginSuccess = false;
					System.out.println("账号或者密码输入错误,请重新输入!");
				}
				userNameExist = true;
			} else {
				userNameExist = false;
			}

			if (!userNameExist == true) {
				System.out.println("用户名不存在,请重新输入!");
			}
		} while ((!userNameExist == true) || (!loginSuccess == true));// 用户名或者密码任意一个错误,都重新输入,两者输入正确,则退出do{}while();继续往下执行
	}
}

猜你喜欢

转载自blog.csdn.net/m0_69655483/article/details/127610836