首页 > 编程语言 >【C#】Dictionary集合解决实际问题

【C#】Dictionary集合解决实际问题

时间:2024-10-12 08:52:28浏览次数:1  
标签:Salary Console Dictionary C# Employee WriteLine employee 集合 public

们将使用C#的Dictionary集合(它是一个键值对集合,类似于其他编程语言中的Map)来存储员工的ID和他们的薪水。我们将创建一个简单的控制台应用程序,用于添加员工、显示员工薪水以及更新员工薪水。

首先,我们需要创建一个Employee类来存储员工的信息:

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Salary { get; set; }
}

 接下来,我们将创建一个EmployeeManager类来处理员工的添加、显示和更新操作:

using System;
using System.Collections.Generic;

public class EmployeeManager
{
    private Dictionary<int, Employee> _employees = new Dictionary<int, Employee>();

    public void AddEmployee(Employee employee)
    {
        if (!_employees.ContainsKey(employee.Id))
        {
            _employees.Add(employee.Id, employee);
        }
        else
        {
            Console.WriteLine("Employee with this ID already exists.");
        }
    }

    public void DisplayEmployeeSalary(int employeeId)
    {
        if (_employees.ContainsKey(employeeId))
        {
            Employee employee = _employees[employeeId];
            Console.WriteLine($"Employee {employee.Name} has a salary of {employee.Salary}.");
        }
        else
        {
            Console.WriteLine("Employee not found.");
        }
    }

    public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
    {
        if (_employees.ContainsKey(employeeId))
        {
            Employee employee = _employees[employeeId];
            employee.Salary = newSalary;
            Console.WriteLine($"Employee {employee.Name}'s salary has been updated to {employee.Salary}.");
        }
        else
        {
            Console.WriteLine("Employee not found.");
        }
    }
}

最后,我们将在Main方法中使用EmployeeManager类来处理用户输入:

using System;

class Program
{
    static void Main(string[] args)
    {
        EmployeeManager manager = new EmployeeManager();

        while (true)
        {
            Console.WriteLine("1. Add Employee");
            Console.WriteLine("2. Display Employee Salary");
            Console.WriteLine("3. Update Employee Salary");
            Console.WriteLine("4. Exit");
            Console.Write("Enter your choice: ");
            int choice = Convert.ToInt32(Console.ReadLine());

            switch (choice)
            {
                case 1:
                    Console.Write("Enter employee ID: ");
                    int id = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Enter employee name: ");
                    string name = Console.ReadLine();
                    Console.Write("Enter employee salary: ");
                    decimal salary = Convert.ToDecimal(Console.ReadLine());

                    Employee employee = new Employee { Id = id, Name = name, Salary = salary };
                    manager.AddEmployee(employee);
                    break;

                case 2:
                    Console.Write("Enter employee ID: ");
                    int displayId = Convert.ToInt32(Console.ReadLine());
                    manager.DisplayEmployeeSalary(displayId);
                    break;

                case 3:
                    Console.Write("Enter employee ID: ");
                    int updateId = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Enter new salary: ");
                    decimal newSalary = Convert.ToDecimal(Console.ReadLine());
                    manager.UpdateEmployeeSalary(updateId, newSalary);
                    break;

                case 4:
                    Environment.Exit(0);
                    break;

                default:
                    Console.WriteLine("Invalid choice. Please try again.");
                    break;
            }
        }
    }
}

现在,当你运行这个程序时,你可以添加员工、显示员工薪水以及更新员工薪水。这个简单的例子展示了如何使用C#的Dictionary集合(类似于其他编程语言中的Map)来解决实际应用问题。

标签:Salary,Console,Dictionary,C#,Employee,WriteLine,employee,集合,public
From: https://www.cnblogs.com/luyj00436/p/18459725

相关文章

  • 200号资源-源程序:(SCI论文+程序)使用多描述编码的状态估计外包传输网络------已提供下载
    ......
  • 198号资源-源程序:(SCI论文+程序)未知时延下无线传感器网络时钟同步算法研究-----已提供下
    ......
  • CSP2024-25
    2A题意(gym105158C):给定正整数序列\(\{a\}\),构造一个\(\mathbbZ\to\mathbbZ\)的映射\(f\),满足\(\foralli<n,\f(a_{i})\lef(a_{i+1})\)。最小化\(f(x)\nex\)的\(x\)数量。数据范围:\(1\len\le10^6,\1\lea_i\len\)。对于\(i\notin\{......
  • 使用C#获取系统关键信息:CPU、内存、硬盘、用户与网络状态
    在C#中,获取系统信息如CPU、内存、硬盘、用户以及网络状态等,可以通过多种方式实现,包括使用System.Management命名空间中的类来查询WMI(WindowsManagementInstrumentation)信息,或者使用.NETFramework自带的类库。以下是一些基本示例来展示如何获取这些信息。1.引入必要的命......
  • [ARC119E] Pancakes
    题意定义一个序列的权值为相邻两项的差的绝对值,你可以翻转一次\([l,r]\)并使得权值最小。\(n\le3\times10^5\)。Sol显然考虑翻转一次\([i,j]\)的方案。当前贡献便为:\[|a_{i-1}-a_{j}|+|a_{j+1}-a_{i}|-|a_{i-1}-a_{i}|-|a_{j+1}-j|\]但......
  • C#设计模式详解:从简单工厂到抽象工厂
    在C#中,简单工厂(SimpleFactory)和抽象工厂(AbstractFactory)是两种常用的设计模式,它们都属于创建型设计模式,用于创建对象而无需在代码中显式指定具体的类。尽管它们的目的相似,但在复杂性和灵活性方面存在显著差异。简单工厂(SimpleFactory)简单工厂模式是一种不属于GoF(四人帮......
  • 2023 Benelux Algorithm Programming Contest (BAPC 23)
    A-\texttt题意\(n\)个软件包,已知大小,可以同时下载\(k\)个,已经下载好了\(m\)个,选\(k\)个下载使得下载完后进度最大,输出已完成进度所占百分比。思路选最大的\(m+k\)个。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoid......
  • R语言使用randomForest包中的randomForest函数构建随机森林模型、使用importance函数
    R语言使用randomForest包中的randomForest函数构建随机森林模型、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB(out-of-bagerrorestimate)目录R语言使用randomForest包中的randomForest函数构建随机森林模型(Randomfores......
  • electron-vite_4使用WebContentsView快速集成已有项目
    Web嵌入官方推荐使用WebContentsView;集成也比较简单,但还是需要你单独写点东西;src/main/index.ts进行修改import{app,shell,BrowserWindow,ipcMain,nativeImage,WebContentsView,dialog}from'electron';functioncreateWindow():void{//1.创建br......
  • electron-vite_6js-cookie失效
    我们项目是用了js-cookie,后续集成的时候发现,无法进入首页;经过排查是js-cookie无法使用,可能是electron打包后的项目运行的时候是file:///猜测原因:因为Cookie是与域名相关联的,而file:///协议没有域名,因此Cookie可能无法正常工作。file:///C:/Users/Administrator/AppData/......