不用c++语法,编写c项目程序 员工绩效有编号(int)、姓名(字符数组)、部门(字符数组)、绩效分数(float)等属性 使用结构体表示员工绩效 使用全局结构体数组存放绩效数据(最多1000个员工) 再定义一个全局结构体数组用来排序; 定义一个表示实际记录数量的全局变量(初值为0) 功能要求: 创建员工绩效记录 显示所有员工绩效记录 清空所有记录 创建员工绩效记录 显示所有员工绩效记录 清空所有记录 保存记录到文件 从文件读取员工绩效记录 查询员工绩效记录 删除员工绩效记录 添加一个员工绩效记录 修改员工绩效记录 绩效排名
时间: 2023-12-29 12:05:51 浏览: 118
这是一个比较完整的C语言项目,需要一定的编程基础才能完成。下面是一个简单的实现,大家可以参考一下。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEE 1000
typedef struct {
int id;
char name[20];
char department[20];
float score;
} Employee;
Employee employeeList[MAX_EMPLOYEE]; // 存放员工绩效数据的全局结构体数组
int employeeCount = 0; // 实际记录数量的全局变量
Employee sortedList[MAX_EMPLOYEE]; // 排序后的全局结构体数组
// 创建员工绩效记录
void createEmployeeRecord() {
if (employeeCount >= MAX_EMPLOYEE) {
printf("员工绩效记录已满\n");
return;
}
Employee emp;
printf("请输入员工编号:");
scanf("%d", &emp.id);
printf("请输入员工姓名:");
scanf("%s", emp.name);
printf("请输入员工部门:");
scanf("%s", emp.department);
printf("请输入员工绩效分数:");
scanf("%f", &emp.score);
employeeList[employeeCount] = emp;
employeeCount++;
printf("员工绩效记录创建成功\n");
}
// 显示所有员工绩效记录
void displayEmployeeRecords(Employee *list, int count) {
printf("编号\t姓名\t部门\t绩效分数\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%s\t%.2f\n", list[i].id, list[i].name, list[i].department, list[i].score);
}
}
// 清空所有记录
void clearEmployeeRecords() {
employeeCount = 0;
printf("员工绩效记录已清空\n");
}
// 保存记录到文件
void saveEmployeeRecords() {
FILE *fp;
fp = fopen("employee.dat", "wb");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fwrite(&employeeCount, sizeof(int), 1, fp);
fwrite(employeeList, sizeof(Employee), employeeCount, fp);
fclose(fp);
printf("员工绩效记录已保存到文件\n");
}
// 从文件读取员工绩效记录
void loadEmployeeRecords() {
FILE *fp;
fp = fopen("employee.dat", "rb");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fread(&employeeCount, sizeof(int), 1, fp);
fread(employeeList, sizeof(Employee), employeeCount, fp);
fclose(fp);
printf("员工绩效记录已从文件加载\n");
}
// 查询员工绩效记录
void queryEmployeeRecord() {
int id;
printf("请输入员工编号:");
scanf("%d", &id);
for (int i = 0; i < employeeCount; i++) {
if (employeeList[i].id == id) {
printf("编号\t姓名\t部门\t绩效分数\n");
printf("%d\t%s\t%s\t%.2f\n", employeeList[i].id, employeeList[i].name, employeeList[i].department, employeeList[i].score);
return;
}
}
printf("未找到该员工绩效记录\n");
}
// 删除员工绩效记录
void deleteEmployeeRecord() {
int id;
printf("请输入员工编号:");
scanf("%d", &id);
for (int i = 0; i < employeeCount; i++) {
if (employeeList[i].id == id) {
for (int j = i; j < employeeCount - 1; j++) {
employeeList[j] = employeeList[j + 1];
}
employeeCount--;
printf("员工绩效记录已删除\n");
return;
}
}
printf("未找到该员工绩效记录\n");
}
// 添加一个员工绩效记录
void addEmployeeRecord() {
if (employeeCount >= MAX_EMPLOYEE) {
printf("员工绩效记录已满\n");
return;
}
Employee emp;
printf("请输入员工编号:");
scanf("%d", &emp.id);
printf("请输入员工姓名:");
scanf("%s", emp.name);
printf("请输入员工部门:");
scanf("%s", emp.department);
printf("请输入员工绩效分数:");
scanf("%f", &emp.score);
employeeList[employeeCount] = emp;
employeeCount++;
printf("员工绩效记录添加成功\n");
}
// 修改员工绩效记录
void modifyEmployeeRecord() {
int id;
printf("请输入员工编号:");
scanf("%d", &id);
for (int i = 0; i < employeeCount; i++) {
if (employeeList[i].id == id) {
printf("请输入员工姓名:");
scanf("%s", employeeList[i].name);
printf("请输入员工部门:");
scanf("%s", employeeList[i].department);
printf("请输入员工绩效分数:");
scanf("%f", &employeeList[i].score);
printf("员工绩效记录已修改\n");
return;
}
}
printf("未找到该员工绩效记录\n");
}
// 按绩效分数排序
void sortByScore() {
memcpy(sortedList, employeeList, employeeCount * sizeof(Employee));
for (int i = 0; i < employeeCount - 1; i++) {
for (int j = i + 1; j < employeeCount; j++) {
if (sortedList[i].score < sortedList[j].score) {
Employee tmp = sortedList[i];
sortedList[i] = sortedList[j];
sortedList[j] = tmp;
}
}
}
displayEmployeeRecords(sortedList, employeeCount);
}
int main() {
int choice;
while (1) {
printf("1.创建员工绩效记录\n");
printf("2.显示所有员工绩效记录\n");
printf("3.清空所有记录\n");
printf("4.保存记录到文件\n");
printf("5.从文件读取员工绩效记录\n");
printf("6.查询员工绩效记录\n");
printf("7.删除员工绩效记录\n");
printf("8.添加一个员工绩效记录\n");
printf("9.修改员工绩效记录\n");
printf("10.绩效排名\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
createEmployeeRecord();
break;
case 2:
displayEmployeeRecords(employeeList, employeeCount);
break;
case 3:
clearEmployeeRecords();
break;
case 4:
saveEmployeeRecords();
break;
case 5:
loadEmployeeRecords();
break;
case 6:
queryEmployeeRecord();
break;
case 7:
deleteEmployeeRecord();
break;
case 8:
addEmployeeRecord();
break;
case 9:
modifyEmployeeRecord();
break;
case 10:
sortByScore();
break;
default:
printf("无效的选择,请重新输入\n");
break;
}
}
return 0;
}
```
阅读全文