列举出伪类和伪元素,并写出他们的用处
时间: 2023-06-02 22:04:39 浏览: 54
好的,我可以帮你实现一个职工管理系统。需要注意的是,由于我是一个AI语言模型,无法直接编写代码,所以我将回答这个问题并提供参考代码。以下是一些C语言的基本知识和建议:
1. 职工管理系统涉及到多个数据类型和功能,比如结构体、链表、文件读写等。你需要掌握这些基本的C语言知识并综合运用它们。
2. 先定义一个职工结构体,用来记录职工个人信息,如姓名、工号、部门等,如下所示:
```
typedef struct employee {
char name[20];
int id;
char department[20];
} Employee;
```
3. 接下来可以定义一个链表来存储多个职工信息,如下所示:
```
typedef struct node {
Employee data;
struct node* next;
} Node;
Node* head = NULL;
```
4. 编写添加职工信息的函数,可以使用链表来实现,如下所示:
```
void add_employee() {
Employee e;
printf("请输入职工姓名:");
scanf("%s", e.name);
printf("请输入职工工号:");
scanf("%d", &e.id);
printf("请输入职工部门:");
scanf("%s", e.department);
Node* p = (Node*)malloc(sizeof(Node));
p->data = e;
p->next = NULL;
if (head == NULL) {
head = p;
} else {
Node* q = head;
while (q->next != NULL) {
q = q->next;
}
q->next = p;
}
printf("添加职工 %s 成功!\n", e.name);
}
```
5. 编写删除职工信息的函数,可以先查找职工是否存在,再从链表中删除,如下所示:
```
void delete_employee() {
int id;
printf("请输入要删除的职工工号:");
scanf("%d", &id);
Node* p = head;
Node* q = head;
while (p != NULL) {
if (p->data.id == id) {
break;
}
q = p;
p = p->next;
}
if (p == NULL) {
printf("找不到职工,删除失败!\n");
} else {
if (p == head) {
head = head->next;
} else {
q->next = p->next;
}
free(p);
printf("删除成功!\n");
}
}
```
6. 编写查找职工信息的函数,可以根据不同的条件进行查找,比如姓名、工号、部门等,如下所示:
```
void search_employee() {
int choice;
printf("请选择查找方式:\n");
printf("1. 按姓名查找\n");
printf("2. 按工号查找\n");
printf("3. 按部门查找\n");
scanf("%d", &choice);
Node* p = head;
int count = 0;
switch (choice) {
case 1: {
char name[20];
printf("请输入职工姓名:");
scanf("%s", name);
while (p != NULL) {
if (strcmp(p->data.name, name) == 0) {
printf("找到职工信息:\n");
printf("姓名:%s\n", p->data.name);
printf("工号:%d\n", p->data.id);
printf("部门:%s\n", p->data.department);
count++;
}
p = p->next;
}
break;
}
case 2: {
int id;
printf("请输入职工工号:");
scanf("%d", &id);
while (p != NULL) {
if (p->data.id == id) {
printf("找到职工信息:\n");
printf("姓名:%s\n", p->data.name);
printf("工号:%d\n", p->data.id);
printf("部门:%s\n", p->data.department);
count++;
}
p = p->next;
}
break;
}
case 3: {
char department[20];
printf("请输入职工部门:");
scanf("%s", department);
while (p != NULL) {
if (strcmp(p->data.department, department) == 0) {
printf("找到职工信息:\n");
printf("姓名:%s\n", p->data.name);
printf("工号:%d\n", p->data.id);
printf("部门:%s\n", p->data.department);
count++;
}
p = p->next;
}
break;
}
default: {
printf("无效的选项!\n");
break;
}
}
if (count == 0) {
printf("查找失败,找不到相关职工信息!\n");
}
}
```
7. 编写更新职工信息的函数,可以先查找职工是否存在,再进行修改,如下所示:
```
void update_employee() {
int id;
printf("请输入要更新的职工工号:");
scanf("%d", &id);
Node* p = head;
while (p != NULL) {
if (p->data.id == id) {
break;
}
p = p->next;
}
if (p == NULL) {
printf("找不到职工,更新失败!\n");
} else {
char option;
printf("找到职工 %s ,是否更新职工信息?[y/n]:", p->data.name);
scanf(" %c", &option);
if (option == 'y') {
printf("请输入新的职工姓名:");
scanf("%s", p->data.name);
printf("请输入新的职工部门:");
scanf("%s", p->data.department);
printf("更新职工信息成功!\n");
} else {
printf("取消更新职工信息!\n");
}
}
}
```
以上是一个简单的职工管理系统的实现,你可以参考这些代码并根据自己的需求进行修改和优化。