ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用Java设计一个考勤模拟程序Attendance

2020-06-12 12:51:23  阅读:410  来源: 互联网

标签:username Attendance Java String System 考勤 println public out


用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<String, String> 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();
    }
}

标签:username,Attendance,Java,String,System,考勤,println,public,out
来源: https://www.cnblogs.com/tanjiangtao/p/13098745.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有