用C语言实现输入人员姓名并在之后实时签到并在xis中统计
时间: 2023-05-27 15:06:46 浏览: 147
抱歉,作为AI语言模型,我无法直接访问硬件设备或操作系统,无法实现实时签到和统计。但是,我可以提供实现思路,供参考。
1. 定义一个结构体,包含姓名和签到状态两个成员变量。
```c
struct Person {
char name[20]; // 姓名
bool signed_in; // 签到状态,true表示已签到,false表示未签到
};
```
2. 定义一个数组,用于存储人员信息。
```c
struct Person persons[100]; // 最多存储100个人员信息
```
3. 实现输入人员姓名的函数,可以使用scanf函数获取用户输入的姓名并存储到结构体中。
```c
void input_name(struct Person *p) {
printf("请输入姓名:");
scanf("%s", p->name);
}
```
4. 实现签到函数,根据输入的姓名在数组中查找对应的人员信息,将签到状态置为true。
```c
void sign_in(char *name) {
int i;
for (i = 0; i < 100; i++) {
if (strcmp(persons[i].name, name) == 0) {
persons[i].signed_in = true;
printf("%s已签到\n", name);
break;
}
}
if (i == 100) {
printf("未找到%s的信息\n", name);
}
}
```
5. 统计签到情况,遍历数组,统计签到人数并输出。
```c
void count_signed_in() {
int count = 0;
int i;
for (i = 0; i < 100; i++) {
if (persons[i].signed_in) {
count++;
}
}
printf("已签到人数:%d\n", count);
}
```
完整代码如下:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
struct Person {
char name[20];
bool signed_in;
};
struct Person persons[100];
void input_name(struct Person *p) {
printf("请输入姓名:");
scanf("%s", p->name);
}
void sign_in(char *name) {
int i;
for (i = 0; i < 100; i++) {
if (strcmp(persons[i].name, name) == 0) {
persons[i].signed_in = true;
printf("%s已签到\n", name);
break;
}
}
if (i == 100) {
printf("未找到%s的信息\n", name);
}
}
void count_signed_in() {
int count = 0;
int i;
for (i = 0; i < 100; i++) {
if (persons[i].signed_in) {
count++;
}
}
printf("已签到人数:%d\n", count);
}
int main() {
int choice;
while (true) {
printf("1. 输入姓名\n");
printf("2. 签到\n");
printf("3. 统计签到情况\n");
printf("4. 退出\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1: {
int i;
for (i = 0; i < 100; i++) {
if (persons[i].name[0] == '\0') {
input_name(&persons[i]);
break;
}
}
if (i == 100) {
printf("人员信息已满\n");
}
break;
}
case 2: {
char name[20];
printf("请输入签到人姓名:");
scanf("%s", name);
sign_in(name);
break;
}
case 3: {
count_signed_in();
break;
}
case 4: {
return 0;
}
default: {
printf("无效操作\n");
break;
}
}
}
}
```
阅读全文