职工信息管理职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复),职工信息管理,可具有以下功能:职工信息录入、输出、查询、删除、修改、数据保存、文件打开等。 C语言实现中文
时间: 2023-07-03 19:06:43 浏览: 151
以下是用 C 语言实现职工信息管理系统的示例代码,支持中文:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORKERS 100 // 最大职工数量
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ADDRESS_LEN 50 // 住址最大长度
#define MAX_PHONE_LEN 15 // 电话最大长度
// 职工结构体
struct Worker {
int id; // 职工号
char name[MAX_NAME_LEN]; // 姓名
char gender[3]; // 性别,"男" 或 "女"
char birth[11]; // 出生年月,格式为 "yyyy-mm-dd"
char education[10]; // 学历,如 "本科"
char position[10]; // 职务,如 "经理"
double salary; // 工资
char address[MAX_ADDRESS_LEN]; // 住址
char phone[MAX_PHONE_LEN]; // 电话
};
// 全局变量
struct Worker workers[MAX_WORKERS]; // 职工数组
int numWorkers = 0; // 实际职工数量
// 函数声明
void addWorker(); // 添加职工
void outputWorkers(); // 输出所有职工信息
void searchWorker(); // 查询职工信息
void deleteWorker(); // 删除职工信息
void modifyWorker(); // 修改职工信息
void saveToFile(); // 将职工信息保存到文件中
void loadFromFile(); // 从文件中读取职工信息
// 主函数
int main() {
int choice;
// 从文件中读取职工信息
loadFromFile();
// 显示菜单
printf("职工信息管理系统\n");
printf("1. 添加职工\n");
printf("2. 输出所有职工信息\n");
printf("3. 查询职工信息\n");
printf("4. 删除职工信息\n");
printf("5. 修改职工信息\n");
printf("6. 退出程序\n");
// 循环处理用户输入
while (1) {
printf("\n请选择操作(1-6):");
scanf("%d", &choice);
switch (choice) {
case 1:
addWorker();
break;
case 2:
outputWorkers();
break;
case 3:
searchWorker();
break;
case 4:
deleteWorker();
break;
case 5:
modifyWorker();
break;
case 6:
// 将职工信息保存到文件中
saveToFile();
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("无效的选择,请重新输入!\n");
}
}
return 0;
}
// 添加职工
void addWorker() {
struct Worker worker;
int i;
// 输入职工信息
printf("请输入职工号(不重复):");
scanf("%d", &worker.id);
for (i = 0; i < numWorkers; i++) {
if (workers[i].id == worker.id) {
printf("职工号已存在,请重新输入!\n");
return;
}
}
printf("请输入姓名:");
scanf("%s", worker.name);
printf("请输入性别(男或女):");
scanf("%s", worker.gender);
printf("请输入出生年月(yyyy-mm-dd):");
scanf("%s", worker.birth);
printf("请输入学历:");
scanf("%s", worker.education);
printf("请输入职务:");
scanf("%s", worker.position);
printf("请输入工资:");
scanf("%lf", &worker.salary);
printf("请输入住址:");
scanf("%s", worker.address);
printf("请输入电话:");
scanf("%s", worker.phone);
// 将职工信息添加到数组末尾
workers[numWorkers++] = worker;
printf("职工信息添加成功!\n");
}
// 输出所有职工信息
void outputWorkers() {
int i;
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t住址\t电话\n");
for (i = 0; i < numWorkers; i++) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\t%s\t%s\n",
workers[i].id, workers[i].name, workers[i].gender,
workers[i].birth, workers[i].education, workers[i].position,
workers[i].salary, workers[i].address, workers[i].phone);
}
}
// 查询职工信息
void searchWorker() {
int id, i;
printf("请输入要查询的职工号:");
scanf("%d", &id);
// 查找职工信息
for (i = 0; i < numWorkers; i++) {
if (workers[i].id == id) {
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t住址\t电话\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\t%.2f\t%s\t%s\n",
workers[i].id, workers[i].name, workers[i].gender,
workers[i].birth, workers[i].education, workers[i].position,
workers[i].salary, workers[i].address, workers[i].phone);
return;
}
}
printf("职工号不存在!\n");
}
// 删除职工信息
void deleteWorker() {
int id, i, j;
printf("请输入要删除的职工号:");
scanf("%d", &id);
// 查找职工信息
for (i = 0; i < numWorkers; i++) {
if (workers[i].id == id) {
// 将数组中该职工后面的元素往前移动
for (j = i + 1; j < numWorkers; j++) {
workers[j - 1] = workers[j];
}
numWorkers--;
printf("职工信息删除成功!\n");
return;
}
}
printf("职工号不存在!\n");
}
// 修改职工信息
void modifyWorker() {
int id, i;
printf("请输入要修改的职工号:");
scanf("%d", &id);
// 查找职工信息
for (i = 0; i < numWorkers; i++) {
if (workers[i].id == id) {
// 修改职工信息
printf("请输入姓名:");
scanf("%s", workers[i].name);
printf("请输入性别(男或女):");
scanf("%s", workers[i].gender);
printf("请输入出生年月(yyyy-mm-dd):");
scanf("%s", workers[i].birth);
printf("请输入学历:");
scanf("%s", workers[i].education);
printf("请输入职务:");
scanf("%s", workers[i].position);
printf("请输入工资:");
scanf("%lf", &workers[i].salary);
printf("请输入住址:");
scanf("%s", workers[i].address);
printf("请输入电话:");
scanf("%s", workers[i].phone);
printf("职工信息修改成功!\n");
return;
}
}
printf("职工号不存在!\n");
}
// 将职工信息保存到文件中
void saveToFile() {
FILE *fp;
int i;
fp = fopen("workers.dat", "wb");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
fwrite(&numWorkers, sizeof(int), 1, fp); // 先写入职工数量
fwrite(workers, sizeof(struct Worker), numWorkers, fp); // 再写入职工信息
fclose(fp);
}
// 从文件中读取职工信息
void loadFromFile() {
FILE *fp;
int i;
fp = fopen("workers.dat", "rb");
if (fp == NULL) {
return;
}
fread(&numWorkers, sizeof(int), 1, fp); // 先读取职工数量
fread(workers, sizeof(struct Worker), numWorkers, fp); // 再读取职工信息
fclose(fp);
}
```
注意,在使用 fwrite 和 fread 函数写入和读取结构体时,要确保结构体的成员顺序和类型与文件中的数据一致。此外,可以通过文件操作函数 fopen 和 fclose 来打开和关闭文件,通过参数 "wb" 和 "rb" 来指定以二进制方式打开文件,并进行写入和读取操作。
阅读全文