一个简陋至极的员工考勤系统

这是一篇介绍初学者使用Java编程实现的一个简单员工考勤系统。程序中定义了员工类和人事部类,用于获取员工的上下班时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学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);
}

}

本例是轻量急速的Java开源企业考勤系统ClockSimpleJEE4。 以下是他的Readme和Release Note Readme: ClockSimpleJEE4是开源企业考勤系统 用于Java,mysql学习。 所有程序在GPLv3条款下开源,关于GPLv3相关pdf已放置在doc子目录下。 数据库脚本在sql子目录下。请恢复名为clock的产品库和名为clock_test的测试库。 clock_test是用于单元测试的JUnit套件的测试空库。 请启动测试套件,享受104个测试方法编制的绵密的测试网。 doc下另有所有版本的release note bug报告jerry_shen_sjf@qq.com 用如下管理员登录 用户名:160208 密码:jerry 火鸟 2013.6.10 Release Note 本版本是ClockSimpleJEE4的预发布版本0.9.0 ClockSimpleJEE4是Java开源企业考勤系统。基于笔者PHP作品Clock Online System 本版本所有的亮点如下。 1)集成的一体化JUnit测试套件,共104个测试方法,编集为绵密的测试安全网。 2)JUnit单元测试黄金法则:在测试空库上无限次运行不出错。 3)测试并行系统:可以在正常工作时启动测试套件,测试套件任然使用测试空库, 而同时的正常操作使用产品库。 4)JUnit EE,可以使用Web界面运行JUnit测试套件。 5)优化的加班算法。9:00上班,但是工作日的计算是从7:00到次日的6:59:59 保证彻夜加班的码农们的利益。 6)报表自动化生成系统:所有的原始数据只有员工的打卡记录。所有的报表都是 算法生成的。 本软件还不完善,所以需要广泛的测试和反馈。希望读者不吝反馈。 作者:火鸟 jerry_shen_sjf@qq.com 2013.6.10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值