初学java一周的小程序
时间8:30用830表示,类推
package com.study.weekend2.day2;
import java.util.Scanner;
public class Employee {//定义一个员工类
int pay;//薪水
String userName;//姓名
String telphone;//电话
String address;//地址
String job;//职位
int state;//状态
public static void main(String[] args) {
}
}
class ManagerDept{//人事部类
//String deptName = "人事部";
int startDate; //员工上班打卡时间
int endDate; //员工下班打卡时间
int wages; //员工当天发放工资
int state; //状态 0请假 1上班 2离职
public static void main(String[] args) {
ManagerDept emp = new ManagerDept(); //创建一个人事部的管理员工的对象emp
emp.setUserName(); //对象emp调用设置员工姓名方法
emp.setPay(); //对象emp调用设置员工工资方法
emp.setTelphone(); //对象emp调用设置员工电话号码方法
emp.setAddress(); //对象emp调用设置员工家庭住址方法
emp.setJob(); //对象emp调用设置员工职务方法
emp.setState(); //对象emp调用设置员工今日状态的方法
emp.attence(); //对象emp调用判断员工今日状态的方法
emp.formalities(); //对象emp调用离职方法
emp.deductWages(); //对象emp调用扣工资方法
emp.payoff(); //对象emp调用发工资方法
}
//设置员工姓名
private void setUserName() {
System.out.println("请输入员工姓名");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
String regex = "[\u4E00-\u9FA5]+"; //判断输入信息是否为汉字
if(!str.matches(regex)){ //如果不是汉字
System.out.println("您输入的不是汉字,请重新输入。");
setUserName(); //重新调用设置员工姓名方法
}else{ //如果是汉字,则输出员工信息,继续执行下一步
System.out.println("员工姓名: "+str);
}
}
//设置员工工资
private void setPay() {
System.out.println("请输入员工工资");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
int wage = Integer.parseInt(str); //将输入的值转为整型变量wage
wages = wage; //将输入的值作为初始工资的值
String regex = "[0-9]*[1-9][0-9]*"; //匹配输入的值是否是正整数
if(!str.matches(regex)){ //不是正整数
System.out.println("您输入的工资不合法,请重新输入。");
setPay(); //重新调用设置员工工资方法重新赋值
}else{ //是正整数
System.out.println("今天原发放工资为"+wage);
}
}
//设置员工电话
private void setTelphone() {
System.out.println("请输入员工电话");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
String regex = "1\\d{10}"; //匹配电话号码是否为1开头的十一位纯数字
if(!str.matches(regex)){ //如果不是
System.out.println("您输入的电话号码非法,请重新输入。");
setTelphone(); //重新调用设置员工电话方法
}else{
System.out.println("员工电话: "+str);
}
}
//设置员工家庭地址
private void setAddress() {
System.out.println("请输入员工家庭地址");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
String regex = "[\u4E00-\u9FA5\0-9]+"; //匹配输入的内容是否是数字和汉字
if(!str.matches(regex)){ //如果匹配失败
System.out.println("您输入的不是汉字或者数字,请重新输入。");
setAddress(); //重新调用方法
}else{ //匹配成功
System.out.println("员工家庭住址: "+str);
}
}
//设置员工职务
private void setJob() {
System.out.println("请输入员工职务");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
System.out.println("员工职务: "+str); //输出
}
//设置员工状态
private void setState() {
System.out.println("请输入员工状态:0表示请假,1表示上班,2表示离职");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
int state = Integer.parseInt(str); //将输入的内容转为整型
String regex = "[0-2]+"; //匹配内容是否是0--2中一个
if(!str.matches(regex)){ //不满足条件
System.out.println("您输入的值不正确,请输入正确的状态表示值");
setState(); //重新调用设置员工状态
}else{
System.out.println("员工状态: "+state);
this.state = state;
attence(); //调用考勤方法
}
}
//设置上班时间
public void setStartDate(){
System.out.println("请输入员工上班时间");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
int uptime = Integer.parseInt(str); //将获取的值转化为整型并赋值给uptime变量
//System.out.println(uptime);
startDate = uptime; //将变量uptime的值赋值给上班时间初始值
}
//设置下班时间
public void setEndDate(){
System.out.println("请输入员工下班时间");
Scanner sc = new Scanner(System.in); //从控制台获取输入信息
String str =sc.next(); //str变量接收输入信息
int downtime = Integer.parseInt(str); //将获取的值转化为整型并赋值给downtime变量
endDate = downtime; //将变量downtime的值赋值给上班时间初始值
}
//获取上班时间
public void getStartDate(){
System.out.println("员工上班时间: "+startDate);
}
//获取下班时间
public void getEndDate(){
System.out.println("员工下班时间: "+endDate);
}
//考勤
public int attence(){
if(state == 0){ //状态值为0,为请假
System.out.println("请假");
wages = 0; //请假今天没有工资,所以给工资赋值为0
payoff(); //调用发工资方法
System.exit(0); //正常退出系统
}else if(state == 1){ //状态值为1,为上班
System.out.println("上班");
deductWages(); //调用扣工资方法
}else if(state == 2){ //状态值 为2,离职
System.out.println("离职");
formalities(); //调用办理离职手续方法
}
return state;
}
//扣工资
public void deductWages(){
//System.out.println(state);
setStartDate(); //设置上班时间
getStartDate(); //获取上班时间
//System.out.println(startDate);
if(startDate >= 800 && startDate <= 810){ //如果时间在上午8点到8点10
wages -= 100; //工资减100
System.out.println("迟到了"+(startDate-800)+"分钟,扣工资100元");
}else if(startDate > 810){ //如果8点10之后开始上班
wages = (wages/2); //工资减半
System.out.println("迟到了"+(startDate-800)+"分钟,扣工资"+wages+"元");
}
setEndDate(); //设置下班时间
getEndDate(); //获取下班时间
//System.out.println(endDate);
if(endDate < 530 && endDate >= 520){ //如果下班时间在下午5点20到5点半
wages -= 100; //工资减100
System.out.println("早退了"+(530-endDate)+"分钟,扣工资100元");
}else if(endDate < 520){ //如果下班时间在下午5点20之前
wages = (wages/2); //工资减半
System.out.println("早退了"+(530-endDate)+"分钟,扣工资"+wages+"元");
}
payoff(); //调用发工资方法
System.exit(0); //退出
}
//发工资
public void payoff(){
System.out.println("实际发放工资为"+wages);
}
//手续办理
public void formalities(){
System.out.println("你今天离职了,办理离职手续,没有工资");
wages = 0;
payoff();
System.exit(0);
}
}