编写出能在Dev-C++能用c语言运行的项目,不要用C++的语言 员工绩效有编号(int)、姓名(字符数组)、部门(字符数组)、绩效分数(float)等属性 使用结构体表示员工绩效 使用全局结构体数组存放绩效数据(最多1000个员工) 再定义一个全局结构体数组用来排序; 定义一个表示实际记录数量的全局变量(初值为0) 功能要求: 创建员工绩效记录 显示所有员工绩效记录 清空所有记录 创建员工绩效记录 显示所有员工绩效记录 清空所有记录 保存记录到文件 从文件读取员工绩效记录 查询员工绩效记录 删除员工绩效记录 添加一个员工绩效记录 修改员工绩效记录 绩效排名
时间: 2023-12-29 08:06:04 浏览: 79
以下是一个可在Dev-C++中使用C语言运行的员工绩效管理系统项目:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM 1000 // 最多1000个员工
// 定义员工绩效记录的结构体
struct Performance {
int id; // 编号
char name[20]; // 姓名
char department[20]; // 部门
float score; // 绩效分数
};
// 全局变量
struct Performance performances[MAX_NUM]; // 存储绩效数据的数组
struct Performance sortedPerformances[MAX_NUM]; // 存储排序后的绩效数据的数组
int count = 0; // 记录实际记录数量
// 函数声明
void createPerformance();
void displayPerformances();
void clearPerformances();
void savePerformancesToFile();
void readPerformancesFromFile();
void queryPerformance();
void deletePerformance();
void addPerformance();
void modifyPerformance();
void sortPerformances();
int main() {
int choice;
do {
printf("\n1.创建员工绩效记录\n2.显示所有员工绩效记录\n3.清空所有记录\n4.保存记录到文件\n5.从文件读取员工绩效记录\n6.查询员工绩效记录\n7.删除员工绩效记录\n8.添加一个员工绩效记录\n9.修改员工绩效记录\n10.绩效排名\n0.退出程序\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
createPerformance();
break;
case 2:
displayPerformances();
break;
case 3:
clearPerformances();
break;
case 4:
savePerformancesToFile();
break;
case 5:
readPerformancesFromFile();
break;
case 6:
queryPerformance();
break;
case 7:
deletePerformance();
break;
case 8:
addPerformance();
break;
case 9:
modifyPerformance();
break;
case 10:
sortPerformances();
break;
case 0:
printf("程序已退出!");
break;
default:
printf("输入有误,请重新选择操作!");
}
} while (choice != 0);
return 0;
}
// 创建员工绩效记录
void createPerformance() {
if (count >= MAX_NUM) {
printf("员工绩效记录已满,无法继续创建!");
return;
}
printf("请输入员工编号:");
scanf("%d", &performances[count].id);
printf("请输入员工姓名:");
scanf("%s", performances[count].name);
printf("请输入员工部门:");
scanf("%s", performances[count].department);
printf("请输入员工绩效分数:");
scanf("%f", &performances[count].score);
count++;
printf("员工绩效记录创建成功!");
}
// 显示所有员工绩效记录
void displayPerformances() {
if (count == 0) {
printf("没有任何员工绩效记录!");
return;
}
printf("编号\t姓名\t部门\t绩效分数\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%s\t%.2f\n", performances[i].id, performances[i].name, performances[i].department, performances[i].score);
}
}
// 清空所有记录
void clearPerformances() {
count = 0;
printf("所有员工绩效记录已清空!");
}
// 保存记录到文件
void savePerformancesToFile() {
char filename[50];
printf("请输入要保存的文件名:");
scanf("%s", filename);
FILE *fp;
fp = fopen(filename, "w");
if (fp == NULL) {
printf("文件打开失败!");
return;
}
fprintf(fp, "编号\t姓名\t部门\t绩效分数\n");
for (int i = 0; i < count; i++) {
fprintf(fp, "%d\t%s\t%s\t%.2f\n", performances[i].id, performances[i].name, performances[i].department, performances[i].score);
}
fclose(fp);
printf("员工绩效记录已保存到文件 %s 中!", filename);
}
// 从文件读取员工绩效记录
void readPerformancesFromFile() {
char filename[50];
printf("请输入要读取的文件名:");
scanf("%s", filename);
FILE *fp;
fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败!");
return;
}
char line[100];
int i = 0;
while (fgets(line, sizeof(line), fp) != NULL) {
if (i != 0) { // 第一行是标题,不读取
sscanf(line, "%d\t%s\t%s\t%f\n", &performances[count].id, performances[count].name, performances[count].department, &performances[count].score);
count++;
}
i++;
}
fclose(fp);
printf("员工绩效记录已从文件 %s 中读取!", filename);
}
// 查询员工绩效记录
void queryPerformance() {
if (count == 0) {
printf("没有任何员工绩效记录!");
return;
}
char name[20];
printf("请输入要查询的员工姓名:");
scanf("%s", name);
int found = 0;
printf("编号\t姓名\t部门\t绩效分数\n");
for (int i = 0; i < count; i++) {
if (strcmp(name, performances[i].name) == 0) {
printf("%d\t%s\t%s\t%.2f\n", performances[i].id, performances[i].name, performances[i].department, performances[i].score);
found = 1;
}
}
if (!found) {
printf("未找到员工 %s 的绩效记录!", name);
}
}
// 删除员工绩效记录
void deletePerformance() {
if (count == 0) {
printf("没有任何员工绩效记录!");
return;
}
int id;
printf("请输入要删除的员工编号:");
scanf("%d", &id);
int found = 0;
for (int i = 0; i < count; i++) {
if (id == performances[i].id) {
for (int j = i; j < count - 1; j++) {
performances[j] = performances[j + 1];
}
count--;
found = 1;
printf("员工编号为 %d 的绩效记录已删除!", id);
break;
}
}
if (!found) {
printf("未找到员工编号为 %d 的绩效记录!", id);
}
}
// 添加一个员工绩效记录
void addPerformance() {
if (count >= MAX_NUM) {
printf("员工绩效记录已满,无法继续添加!");
return;
}
int id;
printf("请输入要添加的员工编号:");
scanf("%d", &id);
int found = 0;
for (int i = 0; i < count; i++) {
if (id == performances[i].id) {
printf("员工编号为 %d 的记录已存在,无法添加!", id);
found = 1;
break;
}
}
if (!found) {
printf("请输入要添加的员工姓名:");
scanf("%s", performances[count].name);
printf("请输入要添加的员工部门:");
scanf("%s", performances[count].department);
printf("请输入要添加的员工绩效分数:");
scanf("%f", &performances[count].score);
performances[count].id = id;
count++;
printf("员工编号为 %d 的绩效记录已添加!", id);
}
}
// 修改员工绩效记录
void modifyPerformance() {
if (count == 0) {
printf("没有任何员工绩效记录!");
return;
}
int id;
printf("请输入要修改的员工编号:");
scanf("%d", &id);
int found = 0;
for (int i = 0; i < count; i++) {
if (id == performances[i].id) {
printf("请输入要修改的员工姓名(原姓名为 %s):", performances[i].name);
scanf("%s", performances[i].name);
printf("请输入要修改的员工部门(原部门为 %s):", performances[i].department);
scanf("%s", performances[i].department);
printf("请输入要修改的员工绩效分数(原绩效分数为 %.2f):", performances[i].score);
scanf("%f", &performances[i].score);
found = 1;
printf("员工编号为 %d 的绩效记录已修改!", id);
break;
}
}
if (!found) {
printf("未找到员工编号为 %d 的绩效记录!", id);
}
}
// 绩效排名
void sortPerformances() {
if (count == 0) {
printf("没有任何员工绩效记录!");
return;
}
// 复制绩效数据到排序数组
for (int i = 0; i < count; i++) {
sortedPerformances[i] = performances[i];
}
// 冒泡排序
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (sortedPerformances[j].score < sortedPerformances[j + 1].score) {
struct Performance temp = sortedPerformances[j];
sortedPerformances[j] = sortedPerformances[j + 1];
sortedPerformances[j + 1] = temp;
}
}
}
printf("绩效排名:\n");
printf("排名\t编号\t姓名\t部门\t绩效分数\n");
for (int i = 0; i < count; i++) {
printf("%d\t%d\t%s\t%s\t%.2f\n", i + 1, sortedPerformances[i].id, sortedPerformances[i].name, sortedPerformances[i].department, sortedPerformances[i].score);
}
}
```
以上代码实现了员工绩效管理系统的基本功能,包括创建员工绩效记录、显示所有员工绩效记录、清空所有记录、保存记录到文件、从文件读取员工绩效记录、查询员工绩效记录、删除员工绩效记录、添加一个员工绩效记录、修改员工绩效记录和绩效排名。
阅读全文