定义一个员工的集合,对员工集合内的元素进行查询和删除。实现员工的签到和签退,要求如下://A:每天只能签到一次//B:签退前必须已经签到//C:显示打卡记录     

代码如下:员工信息类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace StringTest
{class Employee{private int id;public int ID{get { return id; }set { id = value; }}private string name;public string Name{get { return name; }set { name = value; }}private string sex;public string Sex{get { return sex; }set { sex = value; }}private int age;public int Age{get { return age; }set { age = value; }}// A:实现新增员工(工号,年龄,姓名,性别)  public Employee(int _id, int _age, string _name, string _sex){this.Name = _name;this.Age = _age;this.Sex = _sex;this.ID = _id;}//B:展示员工信息, public void ShowMsg(){Console.WriteLine("工号:{0} 年龄:{1} 姓名:{2} 性别:{3}", this.ID, this.Age, this.Name, this.Sex);}}
}

View Code

公司信息类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace StringTest
{class Company{public List<Employee> list = new List<Employee>();public Dictionary<string, List<KaoqinRecord>> dicKaoQinEachDay = new Dictionary<string, List<KaoqinRecord>>();public void AddEmp(Employee sc){list.Add(sc);}public void DelEmp(int nID){for (int i = 0; i < list.Count; i++){if (list[i].ID == nID){list.RemoveAt(i);}}}public void PrintAllEmp(){for (int i = 0; i < list.Count; i++){list[i].ShowMsg();}}public Employee FindEmp(int nID){for (int i = 0; i < list.Count; i++){if (list[i].ID == nID){return list[i];}}return null;}}
}

View Code

考勤记录类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace StringTest
{class KaoqinRecord{public int nID;public DateTime dtStart;public DateTime dtEnd;}
}

View Code

主程序类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace StringTest
{class Program{static Company c = new Company();static void Main(string[] args){////  1、使用你所学的C#的容器类实现员工考勤信息管理, //实现以下功能:要求:使用泛型集合list的添加,查询和删除操作) // A:实现新增员工(工号,年龄,姓名,性别)List<Employee> list = new List<Employee>();c.AddEmp(new Employee(11, 18, "zhang3", "男"));c.AddEmp(new Employee(22, 28, "li4", "女"));c.AddEmp(new Employee(33, 38, "wang5", "男"));c.AddEmp(new Employee(44, 48, "zhao6", "女"));c.AddEmp(new Employee(55, 58, "qian7", "男"));c.AddEmp(new Employee(66, 68, "sun8", "女"));c.PrintAllEmp();//C:根据工号删除员工信息
Console.WriteLine("请输入删除员工信息!工号:");int numDel = Convert.ToInt32(Console.ReadLine());c.DelEmp(numDel);c.PrintAllEmp();//D根据员工工号查询员工信息 Console.WriteLine("请输入查询员工信息!工号:");int numShu = Convert.ToInt32(Console.ReadLine());Employee sc = c.FindEmp(numShu);sc.ShowMsg();while(true){Console.WriteLine("员工考勤系统");Console.WriteLine("0--------------exit");Console.WriteLine("1--------------qiandao");Console.WriteLine("2--------------qiantui");Console.WriteLine("3--------------ShowKaoqin");int n = Convert.ToInt32(Console.ReadLine());if (n == 0)break;switch(n){case 1:{Console.WriteLine("请输入要签到的员工号码");int nEmpNo = Convert.ToInt32(Console.ReadLine());qiandao(nEmpNo);break;}case 2:{Console.WriteLine("请输入要签退的员工号码");int nEmpNo = Convert.ToInt32(Console.ReadLine());qiantui(nEmpNo);break;}case 3:{Console.WriteLine("请输入考勤日期:");ShowKaoqins();break;}default:break;}}}public static void ShowKaoqins(){string strDate = System.DateTime.Now.Date.ToShortDateString(); List<KaoqinRecord> lst = c.dicKaoQinEachDay[strDate];Console.WriteLine("今天考勤的人数有:");foreach(KaoqinRecord kr in lst){int nId = kr.nID;Employee sc = c.FindEmp(nId);Console.WriteLine("{0} 今天签到时间为:{1} 签退时间为 {2}", sc.Name, kr.dtStart, kr.dtEnd);}}public static void qiantui(int nID){Employee sc = c.FindEmp(nID);string strDate = System.DateTime.Now.Date.ToShortDateString();if (!c.dicKaoQinEachDay.Keys.Contains(strDate))//第一个签到的员工
            {Console.WriteLine("{0}今天没有签到", sc.Name);return;}else{List<KaoqinRecord> lst = c.dicKaoQinEachDay[strDate];int nFindIndex = -1;int i = 0;foreach (KaoqinRecord kr in lst){if (kr.nID == nID){nFindIndex = i;break;}i++;}if(nFindIndex >= 0){KaoqinRecord kr = lst[nFindIndex];kr.dtEnd = System.DateTime.Now;}else{Console.WriteLine("{0}今天没有签到", sc.Name);}}}public static void qiandao(int nID){Employee sc = c.FindEmp(nID);string strDate = System.DateTime.Now.Date.ToShortDateString();if(!c.dicKaoQinEachDay.Keys.Contains(strDate))//第一个签到的员工
            {KaoqinRecord kr = new KaoqinRecord();kr.nID = sc.ID;kr.dtStart = System.DateTime.Now;List<KaoqinRecord> lst  = new List<KaoqinRecord>();lst.Add(kr);c.dicKaoQinEachDay.Add(strDate, lst);}else{List<KaoqinRecord> lst  = c.dicKaoQinEachDay[strDate];foreach(KaoqinRecord kr in lst){if(kr.nID == nID){Console.WriteLine("{0}今天已经签到了",sc.Name);return;}}KaoqinRecord krNew = new KaoqinRecord();krNew.nID = sc.ID;krNew.dtStart = System.DateTime.Now;lst.Add(krNew);}Console.WriteLine("{0}签到成功",sc.Name);}}
}

View Code

java版

公司信息类

package com.company;import java.text.SimpleDateFormat;
import java.util.*;/*** Created by ttc on 2017/6/30.*/
public class Company {private List<String> lstEmps = new ArrayList<String>();//key是签到日期private Map<String,List<KaoqinRecord>> map = new HashMap<>();public void qiandao(){Scanner sc = new Scanner(System.in);System.out.println("请输入要签到的员工姓名");String strName = sc.nextLine();if(!lstEmps.contains(strName)){System.out.println("不存在该员工");return;}Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");SimpleDateFormat sdfTime = new SimpleDateFormat("hh:mm:ss");String strDate = sdf.format(date);String strTime = sdfTime.format(date);if(!map.containsKey(strDate))//第一个签到的员工
        {List<KaoqinRecord> lst = new ArrayList<>();KaoqinRecord kq = new KaoqinRecord();kq.setEmpName(strName);kq.setTimeStart(strTime);kq.setTimeEnd("");lst.add(kq);map.put(strDate,lst);System.out.println(strName+"签到成功");}else//说明之前,今天已经有人签过到了
        {List<KaoqinRecord> lst = map.get(strDate);//判断是否已经签到过boolean bIsFind = false;//假设没找到,没签到过for(KaoqinRecord qr : lst){if(qr.getEmpName().equals(strName)){System.out.println("已经签过到了");bIsFind = true;break;}}if(!bIsFind){KaoqinRecord kq = new KaoqinRecord();kq.setEmpName(strName);kq.setTimeStart(strTime);kq.setTimeEnd("");lst.add(kq);System.out.println(strName+"签到成功");}}}public void qiantui(){System.out.println("请输入要签退的员工姓名");Scanner sc = new Scanner(System.in);String strName = sc.nextLine();if(!lstEmps.contains(strName)){System.out.println("不存在该员工");return;}Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");SimpleDateFormat sdfTime = new SimpleDateFormat("hh:mm:ss");String strDate = sdf.format(date);String strTime = sdfTime.format(date);if(!map.containsKey(strDate))//今天一个人也没签到
        {System.out.println("你没有签到,不能签退");}else{List<KaoqinRecord> lst = map.get(strDate);boolean bIsFind = false;//假设没找到for(KaoqinRecord kr : lst){if(kr.getEmpName().equals(strName)){kr.setTimeEnd(strTime);bIsFind = true;break;}}if(!bIsFind)//真的没找到,也即意味着没签到
            {System.out.println("你没有签到,不能签退");}else{System.out.println(strName+"签退成功");}}}public void showKaoqinInfo(){System.out.println("请输入要查找的日期(yyyyMMdd)");Scanner sc = new Scanner(System.in);String strDate = sc.nextLine();List<KaoqinRecord> lst = map.get(strDate);for(KaoqinRecord kr : lst){System.out.println(kr.getEmpName() + "签到时间为" + kr.getTimeStart()+ "签退时间为" + kr.getTimeEnd());}}public List<String> getLstEmps() {return lstEmps;}public void setLstEmps(List<String> lstEmps) {this.lstEmps = lstEmps;}public Map<String, List<KaoqinRecord>> getMap() {return map;}public void setMap(Map<String, List<KaoqinRecord>> map) {this.map = map;}
}

View Code

考勤记录类

package com.company;import java.util.Date;/*** Created by ttc on 2017/6/30.*/
//某一个员工,某天的的考勤情况
public class KaoqinRecord {private String empName;private String timeStart;private String timeEnd;public String getTimeStart() {return timeStart;}public void setTimeStart(String timeStart) {this.timeStart = timeStart;}public String getTimeEnd() {return timeEnd;}public void setTimeEnd(String timeEnd) {this.timeEnd = timeEnd;}public String getEmpName() {return empName;}public void setEmpName(String empName) {this.empName = empName;}}

View Code

主程序类:

package com.company;import java.util.Calendar;
import java.util.Scanner;public class Main {public static void main(String[] args) {// write your code here
//
//        20170630---zhangsan 9:00 18:00,lisi 9:00 18:00,wangwu 10:00 21:00
//        20170629---zhangsan 9:00 18:00,lisi 9:00 ,wangwu 10:00 21:00
//        Map<String,List<KaoqinRecord>>
//
//        map.put("20170630",[{name:hanwei,startTime:8:00,endTime:00},xiuwei])
Company company = new Company();company.getLstEmps().add("马云");company.getLstEmps().add("李连杰");company.getLstEmps().add("赵本山");Scanner sc = new Scanner(System.in);int cmd = -1;Calendar calendar = Calendar.getInstance();String str = calendar.toString();do{System.out.println("员工考勤系统");System.out.println("0------exit");System.out.println("1------签到");System.out.println("2------签退");System.out.println("3------显示考勤信息");cmd = sc.nextInt();switch (cmd){case 1: {company.qiandao();break;}case 2: {company.qiantui();break;}case 3: {company.showKaoqinInfo();break;}default:{break;}}}while (cmd != 0);return;}
}

View Code

 

转载于:https://www.cnblogs.com/ice-river/p/6565456.html

一道综合练习题实践list及dictionary集合类相关推荐

  1. java语言程序设计期末复习综合练习题_Java语言程序设计期末复习综合练习题答案...

    Java语言程序设计期末复习综合练习题 一.选择题. 2. main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )? A.public stat ...

  2. c++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取,C++综合练习题2...

    C++程序设计综合练习题(二) 一.单项选择题 1. 静态成员函数没有() A. 返回值 B. this指针 C. 指针参数 D. 返回类型 2. 假定AB为一个类,则执行"AB a(2), ...

  3. 2019电大计算机考试题及答案,2019年最新电大《计算机应用基础》期末考前复习综合练习题(A、B、C)及参考答案资料小抄...

    电大<计算机应用基础>期末复习综合练习题(A) 一.单选题(每题2分,共40分) 1 显示器是一种(B). A 输入设备 B 输出设备 C 存储器 D 运算器 2 在计算机中表示存储器容量 ...

  4. 第2章【综合练习题】“大润发”、“沃尔玛”、“好德”和“农工商”四个超市都卖苹果、香蕉、橘子和芒果四种水果。使用NumPy的ndarray实现以下功能。

    P33综合练习题 1."大润发"."沃尔玛"."好德"和"农工商"四个超市都卖苹果.香蕉.橘子和芒果四种水果.使用Num ...

  5. 北师大计算机excel折线图作业,北京师范大学附属教育集团Office2010——Excel综合练习题.docx...

    Office2010--Excel综合练习题 一.单项选择题 1.在Excel2010中,右要表示"Book1"从A2到D8的整个单元格区域(假设非当前工作表),则应书写为( ) ...

  6. 单击选定单元格后输入新内容_Excel综合练习题

    Excel综合练习题 一.选择题 1. 在单元格输入()该单元格显示0.3. A. 6/20 B. =6/20 C. "6/20" D. ="6/20" 2. ...

  7. 计算机逻辑练习题,逻辑学综合练习题集答案

    <逻辑学综合练习题集答案>由会员分享,可在线阅读,更多相关<逻辑学综合练习题集答案(9页珍藏版)>请在人人文库网上搜索. 1.综合练习题集,1.已知在B组甲.乙.丙三人的议论中 ...

  8. 三个变量存在一个协整方程_《计量经济学》综合练习题

    <计量经济学>综合练习题 一.单项选择题 1.对联立方程模型进行参数估计的方法可以分两类,即:( ) A.间接最小二乘法和系统估计法 B.单方程估计法和系统估计法 C.单方程估计法和二阶段 ...

  9. 2022年计算机四级考试每日综合练习题及答案

    2022年计算机四级考试每日综合练习题及答案,由优题宝公众号根据最新计算机四级大纲与历年真题汇总编写,包含计算机四级常考重点题型与知识点,有助于考生复习备考计算机四级,取得好成绩. 单选题 1.以下不 ...

  10. c语言作业重庆科技学院,4份重庆科技学院C语言综合练习题及答案

    资料简介 4份重庆科技学院C语言综合练习题及答案 C综合练习一(基础语法 )附参考答案 C综合练习2 (数组和常用算法练习题) C综合练习4附参考答案 (宏,结构体和文件) <C综合练习 3 - ...

最新文章

  1. Nature Chemistry | 化学机器学习的最佳实践:推荐的一套标准化指南
  2. 采访Jesús Fernandes(QA主管)
  3. 常用单词缩写(不断更新)
  4. TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
  5. c fscanf 按行读取文件_语言 文件 看这一篇就够了
  6. 一个基于DataTable的后台框架的实现
  7. Struts第八篇【资源国际化、对比JSP的资源国际化】
  8. poj Shortest Prefixes ——trie树、字典树,基础!!
  9. HolderView vs ViewHolder实例
  10. 蚂蚁金服一面:十道经典面试题解析
  11. c语言句子首单词大写,C语言单词开头大写.docx
  12. rgb到yuv的转换
  13. 图像处理中的forward warping 和 inverse warping
  14. Java构造方法以及构造方法的重载
  15. python爬取并下载代码_python 爬取并批量下载网易云歌单源代码
  16. 抖音安心购有假货吗?四川鹰迪
  17. 自考 02326 操作系统 综合题整理
  18. Java卡开发相关专利
  19. mac桌面文件夹突然消失解决办法
  20. 0*3038在c语言中的意义,电工学试题及答案3套(电工部分)

热门文章

  1. ue4 点击启动_4399游戏2020届校招启动
  2. 【Java】 剑指offer(65) 不用加减乘除做加法
  3. ueditor插入自定义内容和样式
  4. 排序算法(三) —— 直接插入排序
  5. ios开发 将json格式数据上传服务器
  6. Hdu 1026 Ignatius and the Princess I
  7. C#编程利器之四:委托与事件(Delegate and event) (下)
  8. P3211 [HNOI2011]XOR和路径
  9. CF161D Distance in Tree(点分治)
  10. HTML5移动端最新兼容问题解决方案