java 考勤系统

问题描述

考勤系统功能说明:1、in.txt中存储员工的刷卡记录,格式:ID,NAME,TIME(半角逗号分隔),举例如下:·22,yangxi,07:2322,yangxi,10:481)最少有1条记录,最多有50条记录;2)最多有10个员工的刷卡记录3)员工的名字最长为10个英文字符4)每个员工最多可能有5条记录5)记录没有时间先后顺序,也没有ID前后顺序6)ID的范围是1~10002、规定上班时间为8:00~17:30,所有刷卡时间精确到分;3、考勤类型分为“NORMAL(正常)、ABSENT(旷工)、WORKLATE(迟到)、LEAVEEARLY(早退)、WORKLATE&LEAVEEARLY(既迟到又早退),PUNCHABNORMAL(刷卡异常)”:1)NORMAL(正常):至少两次刷卡,最早的刷卡时间早于8:00(注意:8:00刷卡算迟到),且最晚的刷卡时间晚于17:30(注意:17:30刷卡算早退);2)ABSENT(旷工):至少两次刷卡,有两种情况记为旷工:a、最早的刷卡时间晚于17:30;b、最晚的刷卡时间早于8:00;3)WORKLATE(迟到):至少两次刷卡,最早的刷卡时间晚于8:00,且最晚的刷卡时间晚于17:30;4)LEAVEEARLY(早退):至少两次刷卡,最早的刷卡时间早于8:00,且最晚的刷卡时间早于17:30;5)WORKLATE&LEAVEEARLY(既迟到又早退):至少两次刷卡,最早的刷卡时间晚于8:00,且最晚的刷卡时间早于17:30;6)PUNCHABNORMAL(刷卡异常):只有1次刷卡记录;4、工时计算方法:最晚的刷卡时间-最早的刷卡时间,有以下几种情况:1)旷工的情况下,工时记为0;2)刷卡异常的情况下,工时记为0。5、输出到out.txt当中,输出格式如下:ID=5NAME=zhangtingTYPE=WORKLATECHECKIN=09:15CHECKOUT=19:15WORKTIME=10H0MID=9NAME=zhangleiTYPE=WORKLATE&LEAVEEARLYCHECKIN=08:30CHECKOUT=17:29WORKTIME=8H59M输出有如下要求:1)每个记录中间使用一个空行分隔,最后一条记录后面没有空行;2)CHECKIN为最早刷卡的时间3)CHECKOUT为最晚刷卡的时间4)如果1次刷卡记录,则CHECKOUT后面为空5)如果工时为0,则为0H0M6)需要按照ID排序,从小到大输出

解决方案

解决方案二:
代码如下:packagehuawei;publicfinalclassDemo{/***考勤系统:统计考勤时间*@paraminFilePath*@paramoutFilePath*@return正常返回true,异常返回false*/publicbooleanattandentSystem(StringinFilePath,StringoutFilePath){returntrue;}}
解决方案三:
测试用例的代码:packagetestcase;importhuawei.Demo;importjunit.framework.TestCase;importjava.io.*;importjava.util.Vector;publicclassDemoTestextendsTestCase{privateDemodemo;privatefinalstaticStringUSER_DIR=System.getProperty("user.dir");privatefinalstaticStringTEST_FOLDER_PATH=USER_DIR+"\testCase\";privatefinalstaticStringTEST_FOLDER_TARGET=TEST_FOLDER_PATH+"target\";publicvoidsetUp(){demo=newDemo();}privateVector<String>readOutputFile(StringfilePath){Vector<String>vector=newVector<String>();try{FileInputStreamfs=newFileInputStream(filePath);InputStreamReaderisr=newInputStreamReader(fs);BufferedReaderbr=newBufferedReader(isr);Stringdata="";while((data=br.readLine())!=null){if(data.length()==0){continue;}vector.add(data);}}catch(FileNotFoundExceptione){thrownewRuntimeException("文件路径错误!");}catch(IOExceptione){thrownewRuntimeException("文件读取失败!");}returnvector;}privatebooleanisSame(Stringoutput,StringtargetPath){Vector<String>vector=this.readOutputFile(output);Vector<String>tgVector=this.readOutputFile(targetPath);if(vector.size()!=tgVector.size()){returnfalse;}for(inti=0;i<vector.size();i++){if(!vector.get(i).equals(tgVector.get(i))){returnfalse;}}returntrue;}privatevoidtestcaseHelper_Should_Fail(StringinFilePath,StringoutFilePath){try{booleanresult=demo.attandentSystem(inFilePath,outFilePath);assertFalse(result);}catch(Exceptione){assertTrue(true);}}privatevoidtestcaseHelper_Should_Success(StringinFilePath,StringoutFilePath,StringtargetPath){try{booleanresult=demo.attandentSystem(inFilePath,outFilePath);assertTrue(result);assertTrue(isSame(outFilePath,targetPath));}catch(Exceptione){assertTrue(false);}}publicvoidtestcaseSortDate_Case_01(){testcaseHelper_Should_Success(TEST_FOLDER_PATH+"in.txt",TEST_FOLDER_PATH+"out.txt",TEST_FOLDER_TARGET+"check.txt");}}
解决方案四:
这题有大神用2个小时做出来了,我用了10+个小时。。。我的做法:读取数据到Vector,然后转化成数组进行处理,最后输出。有人想看的话我把原工程和我做好的工程发给你。
解决方案五:
代码用格式专用格式贴吧,publicclassHello{static{System.out.println("hello");}}

你是要分享你做的工程吗?
解决方案六:
packagehuawei;publicfinalclassDemo{/***考勤系统:统计考勤时间*@paraminFilePath*@paramoutFilePath*@return正常返回true,异常返回false*/publicbooleanattandentSystem(StringinFilePath,StringoutFilePath){returntrue;}}

解决方案七:
packagehuawei;publicfinalclassDemo{/***考勤系统:统计考勤时间*@paraminFilePath*@paramoutFilePath*@return正常返回true,异常返回false*/publicbooleanattandentSystem(StringinFilePath,StringoutFilePath){returntrue;}}

解决方案八:
packagetestcase;importhuawei.Demo;importjunit.framework.TestCase;importjava.io.*;importjava.util.Vector;publicclassDemoTestextendsTestCase{privateDemodemo;privatefinalstaticStringUSER_DIR=System.getProperty("user.dir");privatefinalstaticStringTEST_FOLDER_PATH=USER_DIR+"\testCase\";privatefinalstaticStringTEST_FOLDER_TARGET=TEST_FOLDER_PATH+"target\";publicvoidsetUp(){demo=newDemo();}privateVector<String>readOutputFile(StringfilePath){Vector<String>vector=newVector<String>();try{FileInputStreamfs=newFileInputStream(filePath);InputStreamReaderisr=newInputStreamReader(fs);BufferedReaderbr=newBufferedReader(isr);Stringdata="";while((data=br.readLine())!=null){if(data.length()==0){continue;}vector.add(data);}}catch(FileNotFoundExceptione){thrownewRuntimeException("文件路径错误!");}catch(IOExceptione){thrownewRuntimeException("文件读取失败!");}returnvector;}privatebooleanisSame(Stringoutput,StringtargetPath){Vector<String>vector=this.readOutputFile(output);Vector<String>tgVector=this.readOutputFile(targetPath);if(vector.size()!=tgVector.size()){returnfalse;}for(inti=0;i<vector.size();i++){if(!vector.get(i).equals(tgVector.get(i))){returnfalse;}}returntrue;}privatevoidtestcaseHelper_Should_Fail(StringinFilePath,StringoutFilePath){try{booleanresult=demo.attandentSystem(inFilePath,outFilePath);assertFalse(result);}catch(Exceptione){assertTrue(true);}}privatevoidtestcaseHelper_Should_Success(StringinFilePath,StringoutFilePath,StringtargetPath){try{booleanresult=demo.attandentSystem(inFilePath,outFilePath);assertTrue(result);assertTrue(isSame(outFilePath,targetPath));}catch(Exceptione){assertTrue(false);}}publicvoidtestcaseSortDate_Case_01(){testcaseHelper_Should_Success(TEST_FOLDER_PATH+"in.txt",TEST_FOLDER_PATH+"out.txt",TEST_FOLDER_TARGET+"check.txt");}}

解决方案九:
huawei的面试题?这工程是什么意思?需求功能是什么?完整吗?如果要分享项目请到http://code.csdn.net
解决方案十:
引用8楼guest6379的回复:

huawei的面试题?这工程是什么意思?需求功能是什么?完整吗?如果要分享项目请到http://code.csdn.net

需求在一楼。代码是原工程,没有具体实现,只需要在demo里面写出函数实现就好,demotest是测试用例。这题我做了10+个小时才做出来,我想来跟大家交流一下,找找自己不足。

时间: 2024-11-02 10:34:57

java 考勤系统的相关文章

求助!考勤系统思路分析!

问题描述 有如下数据:工作时段:上午:08:30~12:00下午:14:00~18:00610周承杰2008-09-1917:44:3212007358720001910陈子兰2008-09-1917:50:2012007362200001210成程2008-09-1917:51:3612007362960002110颜枝军2008-09-1917:57:0512007366250001610黄建强2008-09-1917:57:0912007366290001610黄建强2008-09-191

Java IO系统总结

1 Java IO版本 Java库的IO分为输入/输出两部分. 早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类. 后来的Java 1.1版本对IO系统进行了重新设计.输入系统是Reader及其子类,输出系统是Writer及其子类. Java1.1之所以要重新设计,主要是为了添加国际化支持(即添加了对16位Unicode码的支持).具体表现为Java 1.0的IO系统是字节流,而Java 1.1的IO系统是字符流. 字节流,就是数据

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

前端框架-我要做一个Java演示系统,用哪些前台技术比较好?

问题描述 我要做一个Java演示系统,用哪些前台技术比较好? 我正在做一个大数据信贷评估的系统,用了一些机器学习的算法,在单机.Hadoop和Spark上都实现了,现在想做一个美观一些的演示系统,我想用Tomcat做一个Web应用,后台提供Restful服务,用JSON格式传递数据,我以前用过Html.CSS.Javascript和JQuery,这些年又出现了很多新的库/框架,现在的界面还不复杂,请问像我这样的情况UI用哪些技术实现比较好呢? 还有我想显示一些机器学习的处理结果,有什么前端框架可

java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径_java

java获取系统路径字体.得到某个目录下的所有文件名.获取当前路径 复制代码 代码如下: package com.liuxing.test; import java.awt.GraphicsEnvironment;import java.io.File;public class Test {  private static GraphicsEnvironment environment; /**  * @param args  */ public static void main(String[

产品-关于java遗留系统重构的问题,请教讨论方案。

问题描述 关于java遗留系统重构的问题,请教讨论方案. 目前公司的项目已经有十多年的历史了,现在想进行重构,不知道该如何下手. 目前的实现是:所有的产品代码都在一个项目里面,分了有十几个产品,用包名进行区分, 产品代码之间相互调用有点乱,主要有三个基础产品. 现在是想把各个产品之间的代码拆分,只依赖三个基础产品.如果这样处理的话,jsp,js,css等文件该如何处理? 另外还有一些系统公用的接口重构问题:例如用户选择,目前所有产品的用户选择都用同一个,各个产品的参数过滤条件都不一样,所以写了很

java web-web系统页面展示中文简体怎么翻译成繁体。

问题描述 web系统页面展示中文简体怎么翻译成繁体. 有多个java web系统,想提供给港澳台地区使用,不知道怎么把他们都翻译成繁体,或者有什么收费系统能实现? 解决方案 建议调用google翻译来进行.简体翻译成繁体比较麻烦,需要语义的理解,相当于翻译.因为简体字对应不同含义的多个繁体字. 比如游泳.游玩:皇后.后面:头发,发财(游泳.遊玩:皇后.後面:頭髮,發財)等等.简单的转换显得太不专业. 解决方案二: 客户端js就可以做翻译,自己整个简繁体对照表,然后遍历dom内容进行翻译,不过意义

设计-考勤系统中考勤排班和结果计算

问题描述 考勤系统中考勤排班和结果计算 对于考勤系统中的班次,出现跨天的情况,在这种情况下,如何设计表结构,如何计算考勤结果 解决方案 可以把日期转换成浮点数来计算.日期浮点数是这样的数:如果两个时间差1天,那么就差1,如果差1小时,就差1/24,以此类推.不用理会跨天还是跨月.它永远和时间差对应. 解决方案二: 你用分钟数表示排班的起至时间,设置的时候就可以超过24:00 了.转换成实际时间,就用当天0点 + 开始分钟数-当天0点 + 结束分钟数,得到的时段自然就跨天了. 解决方案三: 可以设

不用java的系统函数,把char转换成double

问题描述 不用java的系统函数,把char转换成double 就是,不用java的系统函数,把char转换成double,java菜鸟求帮忙- 解决方案 额,我初学还请指教,代码不写了感觉原理是这样:每次从字符串取一个字符,ch-'0'表示一位数字,然后d=10d+t,是不是这样呢 解决方案二: double优先级高于char,直接转:char a = 'a';double b = (double)a; 输出b应该是97.0:这个输出的是对应的ASCii码:如果用Double.parseDou