C#公司有100名员工,编号从001-100,要求从键盘输入员工编号实现打卡,可重复打卡,但只能存储一次,用数组表示
时间: 2024-09-15 21:05:38 浏览: 31
在这个问题中,我们要设计一个简单的打卡系统,该系统使用数组来存储已经打卡的员工编号。由于员工编号是连续的从001到100,我们可以使用一个布尔类型的数组来表示每个员工的打卡状态。数组的长度为100,每个索引对应一个员工编号,索引值为真(true)表示该员工已经打卡,为假(false)表示该员工尚未打卡。
具体的实现步骤如下:
1. 创建一个布尔类型的数组,长度为100,所有元素初始值为假(false)。
2. 从键盘接收输入,并将输入的字符串格式化为3位数字(不足3位前面补零),以对应员工编号。
3. 将输入的员工编号转换为数组的索引。
4. 判断对应索引的值是否为假(false),如果为假,则将其设置为真(true),表示该员工已打卡;如果为真,则表示该员工已经打卡过一次,不再重复存储。
5. 循环接收用户输入直到用户决定停止打卡。
以下是实现该打卡系统的伪代码示例:
```csharp
// 初始化员工打卡数组
bool[] punchCards = new bool[100];
// 初始化为假(false),表示所有员工初始状态都未打卡
Array.Fill(punchCards, false);
// 打卡循环
while (true) // 可以根据实际情况使用其他方式控制循环结束,例如输入特定的命令
{
Console.WriteLine("请输入员工编号(001-100)进行打卡,输入'exit'退出:");
string input = Console.ReadLine();
// 检查是否为退出命令
if (input.ToLower() == "exit")
{
break;
}
// 格式化输入为三位数,不足补零
string formattedInput = input.PadLeft(3, '0');
int index = int.Parse(formattedInput) - 1; // 数组索引从0开始,所以编号减1
// 检查输入编号是否有效
if (index >= 0 && index < 100)
{
// 只有在尚未打卡的情况下才进行打卡操作
if (!punchCards[index])
{
punchCards[index] = true;
Console.WriteLine("员工编号" + formattedInput + "打卡成功!");
}
else
{
Console.WriteLine("员工编号" + formattedInput + "已经打卡过了!");
}
}
else
{
Console.WriteLine("输入编号无效,请输入001-100之间的编号!");
}
}
```
这段代码会根据用户输入的员工编号来进行打卡操作,并确保每个员工只打卡一次。如果输入的编号已经打卡过,则会提示已经打卡过,不再进行重复打卡。
阅读全文