java模拟考勤系统,用Java设计一个考勤模拟程序Attendance

用Java设计一个考勤模拟程序Attendance,实现如下功能选择界面:

1--上班签到

2--下班签出

3--考勤信息查阅

4--退出

考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在HashMap中。

如果是上班签到,记录签到信息,如果签到时间大于上午9时,则提示用户迟到,并记录该迟到信息到attendance+username.txt中(username指的是登录用户)。

如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到attendance+username.txt中(username指的是登录用户)。

如果用户选择考勤信息查询,则将attendance+username.txt中对应该用户的迟到早退信息查出并显示。

用户选择功能执行完,程序继续回到功能选择界面等待下一个用户进行操作。

李纯宇 22:36:58

1、完成课设前的准备工作:(1)安装JDK1.8;(2)配置环境变量;(3)安装开发工具Eclipse。

2、编写Map存储用户信息,包括用户名、密码和考勤信息。

3、编写用户登录验证方法login(如果密码错误允许重新输入直至输入正确为加分项,非必须完成)

3、编写新用户注册的方法reg(此项为加分项,非必须完成)

4、撰写相关部分的课设报告书

李纯宇 22:37:31

1、编写上班签到方法check_in()

记录签到信息,如果签到时间大于上午9时,则提示用户迟到,并记录该迟到信息到attendance+username.txt中(username指的是登录用户)。

李纯宇 22:37:43

1、下班签出方法check_out()

记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到attendance+username.txt中(username指的是登录用户)。

李纯宇 22:37:58

1、编写查询考勤信息方法display_record()

2、编写系统功能选择方法opera()并编写测试类Test

在main方法中创建Attendance类的对象,并调用相应的方法,

3、程序测试

Attendance.java

import java.io.*;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.Scanner;

public class Attendance {

Scanner scan = new Scanner(System.in);

static HashMap map = new HashMap<>();

private String username;

private String password;

static boolean circulation = true;

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String format = df.format(new Date());

String time = format.substring(11, 13);

public Attendance() {

}

public Attendance(String username, String password) {

setUsername(username);

setPassword(password);

map.put(getUsername(),getPassword());

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public void opera(){

while(true) {

System.out.println("-------------------------------------------------------");

System.out.println("请选择功能 1.(注册) 2.(登陆)");

System.out.println("-------------------------------------------------------");

int option = 0;

boolean b = true;

while (b){

try {

option = scan.nextInt();

b = false;

} catch (Exception e) {

System.out.println("输入错误,请重新输入!");

scan.nextLine();

}

}

switch (option) {

case 1:

reg();

circulation = true;

while (circulation) {

menu();

}

break;

case 2:

login();

circulation = true;

while (circulation) {

menu();

}

break;

default:

System.out.println("你的选择有误,请重新输入");

}

}

}

public void menu(){

System.out.println("-------------------------------------------------------");

System.out.println(" 1——上班签到");

System.out.println(" 2——下班签出");

System.out.println(" 3——考勤信息查阅");

System.out.println(" 4——退出");

System.out.println("-------------------------------------------------------");

int choice = 0;

boolean b = true;

while (b){

try {

choice = scan.nextInt();

b = false;

} catch (Exception e) {

System.out.println("输入错误,请重新输入!");

scan.nextLine();

}

}

switch(choice){

case 1:

check_in();

break;

case 2:

check_out();

break;

case 3:

display_record();

break;

case 4:

System.out.println(getUsername()+"用户已退出!");

circulation = false;

break;

default:

System.out.println("输入错误!");

}

}

public void login(){

boolean input = true;

while (input){

System.out.print("请输入用户名:");

setUsername(scan.next());

System.out.print("请输入密码:");

setPassword(scan.next());

if (map.containsKey(getUsername())){

if (map.get(getUsername()).equals(getPassword())){

input = false;

System.out.println(getUsername()+"用户,登录成功!");

}else {

System.out.println("密码错误!");

}

}else {

System.out.println("密码或用户名错误,请重新输入!");

}

}

}

public void reg(){

while(true){

System.out.println("请输入用户名:");

setUsername(scan.next());

if(map.get(getUsername())!=null){

//如果存在

System.out.println("该账号已经存在,请重新输入账号");

}else{

//不存在

break;

}

}

System.out.println("请输入密码:");

setPassword(scan.next());

//添加用户到map集合

map.put(getUsername(),getPassword());

System.out.println("注册成功!");

System.out.println("当前注册的人员:"+getUsername());

}

//上班签到

public void check_in(){

if (Integer.valueOf(time)>9){

System.out.println(getUsername()+"用户迟到,已经记录!");

//写入到attendance+username.txt文件

String saveFile = "attendance"+getUsername()+".txt";

String fileContent = format+" "+getUsername()+"迟到";

File file = new File(saveFile);

FileOutputStream fos = null;

OutputStreamWriter osw = null;

try {

if (!file.exists()){

fos = new FileOutputStream(file);

}else {

fos = new FileOutputStream(file,true);

}

osw = new OutputStreamWriter(fos,"utf-8");

osw.write(fileContent);

osw.write("\r\n");

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

if (osw != null) {

osw.close();

}

} catch (IOException e) {

e.printStackTrace();

}

try {

if (fos != null) {

fos.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}else {

System.out.println("签到成功!");

}

System.out.println(format);

}

//下班签出

public void check_out(){

if (Integer.valueOf(time)<18){

System.out.println(getUsername()+"用户早退,已经记录!");

//写入到attendance+username.txt文件

String saveFile = "attendance"+getUsername()+".txt";

String fileContent = format+" "+getUsername()+"早退";

File file = new File(saveFile);

FileOutputStream fos = null;

OutputStreamWriter osw = null;

try {

if (!file.exists()){

fos = new FileOutputStream(file);

}else {

fos = new FileOutputStream(file,true);

}

osw = new OutputStreamWriter(fos,"utf-8");

osw.write(fileContent);

osw.write("\r\n");

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

if (osw != null) {

osw.close();

}

} catch (IOException e) {

e.printStackTrace();

}

try {

if (fos != null) {

fos.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}else {

System.out.println("签出成功!");

}

System.out.println(format);

}

//查询考勤信息

public void display_record(){

String filePath = "attendance"+getUsername()+".txt";

try {

String encoding="utf-8";

File file=new File(filePath);

if(file.isFile() && file.exists()){ //判断文件是否存在

InputStreamReader read = new InputStreamReader(

new FileInputStream(file),encoding);//考虑到编码格式

BufferedReader bufferedReader = new BufferedReader(read);

String lineTxt = null;

while((lineTxt = bufferedReader.readLine()) != null){

System.out.println(lineTxt);

}

read.close();

}else{

System.out.println("找不到指定的文件");

}

} catch (Exception e) {

System.out.println("读取文件内容出错");

e.printStackTrace();

}

}

}

Test.java

public class Test {

public static void main(String[] args) {

//新建默认用户

Attendance at = new Attendance("root","123");

at.opera();

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 和 MySQL 结合可以创建一个强大的考勤管理系统,通常包括以下几个关键部分: 1. **数据库设计**: - 使用 MySQL 创建表格,比如员工表 (employees) 包含员工ID、姓名、部门等基本信息;考勤记录表 (attendance_records) 包含员工ID、日期、签到/签退状态等字段。 2. **Java 与 JDBC**: - 使用 Java 的 JDBC (Java Database Connectivity) 库连接 MySQL 数据库,执行 CRUD(创建、读取、更新和删除)操作。 - 创建连接对象,执行 SQL 查询获取和保存数据。 3. **实体类与 DAO(Data Access Object)**: - 在 Java 中定义实体类,如 Employee 对应数据库中的员工信息,使用 Hibernate 或 JPA 进行 ORM (Object-Relational Mapping) 映射。 - 创建 DAO 类处理数据库交互,封装 SQL 查询或存储过程调用。 4. **业务逻辑层**: - 编写业务逻辑,比如处理员工签到、签退操作,计算迟到、早退等考勤指标。 5. **用户界面**: - 可以用 JavaFX 或者 Swing 创建图形用户界面,显示员工信息、考勤记录,以及签到/签退功能。 6. **登录验证**: - 设计用户登录系统,确保只有授权的员工可以访问系统。 7. **安全与权限管理**: - 考虑添加用户权限控制,比如管理员才能查看或修改所有记录,普通员工只能查看自己的记录。 8. **定时任务与自动化**: - 如果需要,可以设置定时任务来自动处理批量考勤记录的录入或统计。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值