问题描述
考勤系统功能说明: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+个小时才做出来,我想来跟大家交流一下,找找自己不足。