有一个公司有100个员工,员工编号从1到100;每天上班要打卡,通过健盘输入编号实现打卡,已经打卡的可以重复打卡,但只记录一次。最后,检入quit结束打卡,打印出所有已经打卡的员工编号。用数组c#表示
时间: 2024-09-14 16:15:24 浏览: 76
在C#中,你可以使用一个HashSet数据结构来实现这个功能。HashSet是一个无序、不包含重复元素的集合,非常适合用于存储唯一打卡的员工编号。下面是一个简单的实现步骤:
1. 创建一个名为`EmployeeCheckIn`的类,其中包含一个属性`Id`来代表员工编号。
```csharp
public class EmployeeCheckIn
{
public int Id { get; set; }
}
```
2. 定义一个HashSet来存储已打卡的员工编号:
```csharp
HashSet<int> checkedInEmployees = new HashSet<int>();
```
3. 编写一个方法`CheckIn`,接受员工编号作为参数并检查是否需要添加到HashSet中:
```csharp
public void CheckIn(int id)
{
if (!checkedInEmployees.Contains(id))
{
Console.WriteLine($"打卡成功: {id}");
checkedInEmployees.Add(id);
}
else
{
Console.WriteLine($"员工 {id} 已经打卡过了");
}
}
```
4. 提供一个`Quit`方法用于结束打卡并打印所有已打卡的员工:
```csharp
public void Quit()
{
Console.WriteLine("打卡结束。以下是已打卡的员工编号:");
foreach (int id in checkedInEmployees)
{
Console.Write($"{id}, ");
}
Console.WriteLine();
}
```
5. 最后,在主程序中模拟员工打卡的过程:
```csharp
class Program
{
static void Main(string[] args)
{
// 模拟员工打卡
for (int i = 1; i <= 100; i++)
{
Console.Write($"请输入员工编号({i}): ");
var input = int.Parse(Console.ReadLine());
CheckIn(input);
}
// 结束打卡并查看结果
Quit();
}
}
```
当你运行这个程序时,它会提示用户输入员工编号,并在每次输入后更新打卡信息。当输入`quit`时,会打印出所有已打卡的员工编号。注意,如果输入的不是数字,`int.Parse`可能会抛出异常,你需要处理这类异常情况。
阅读全文