编写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();继续往下执行
}
}