#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h>

struct employee{ char number[10]; //编号 char name[10]; //姓名 char sex[10]; //性别 char birthday[10]; //出生年月 char date[10]; //入职年月 char degree[10]; //学历 char position[10]; //职位 char add[10]; //地址 char tel[20]; //电话 struct employee *next; }em[100], *head;

int n; //全局变量

void read() { FILE *fp; int i; if ((fp = fopen("职工信息.txt", "r")) == NULL) { printf("打开文件失败!请创建一个文本文件,文件名叫职工信息\n\n\n"); system("pause"); // 冻结屏幕 system("cls"); // 清屏 exit(0); } fscanf(fp, "%d\n", &n); for (i = 0; i < n; i++) { fscanf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", em[i].number, em[i].name, em[i].sex, em[i].birthday, em[i].date, em[i].degree, em[i].position, em[i].add, em[i].tel); } head = &em[0]; fclose(fp); }

void write() { FILE *fp; int i = 0; if ((fp = fopen("职工信息录入.txt", "w+")) == NULL) { printf("!!!打开文件失败!!!\n"); return; } fprintf(fp,"%d\n",n); while(i < n) { fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",em[i].number, em[i].name, em[i].sex, em[i].birthday, em[i].date, em[i].degree, em[i].position, em[i].add, em[i].tel); i++; } fclose(fp); }

// 增加

void add() { int i, flag; char c; read(); do { flag = 0; printf("\n\n"); printf("请输入职工的编号:"); scanf("%s", &em[n].number); for (i = 0; i < n; i++) { if(strcmp(em[i].number, em[n].number) == 0) { flag = 1; break; } } if(flag) { printf("!!!该职工已存在!!!\n\n"); printf("\t\t是否继续输入?(Y/N): "); scanf("%c", &c); if(c == 'N' || c == 'n') break; continue; } printf("请输入职工姓名:"); scanf("%s", &em[n].name); printf("请输入职工性别:"); scanf("%s", &em[n].sex); printf("请输入职工出生年月:"); scanf("%s", &em[n].birthday); printf("请输入职工入职年月:"); scanf("%s", &em[n].date); printf("请输入职工学历:"); scanf("%s", &em[n].degree); printf("请输入职工职务:"); scanf("%s", &em[n].position); printf("请输入职工住址:"); scanf("%s", &em[n].add); printf("请输入职工电话:"); scanf("%s", &em[n].tel); printf("是否继续输入?(Y/N): "); scanf("%*c%c", &c); n++; }while (c != 'N' && c != 'n'); write(); printf("\n\n数据已保存!\n\n"); }

//输出函数

void output(int t) { printf("+--------+----+----+--------+--------+----+--------+----+------------+\n"); printf("|职工编号|姓名|性别|出生年月|入职年月|学历| 职务 |地址| 电话 |\n"); printf("+--------+----+----+--------+--------+----+--------+----+------------+\n"); { printf("|%4s |%3s|%3s |%7s |%7s |%4s|%6s |%4s|%11s |\n", em[t].number, em[t].name, em[t].sex, em[t].birthday, em[t].date, em[t].degree, em[t].position, em[t].add, em[t].tel); } }

//显示

void show() { int i; read(); if (n == 0) printf("无记录!\n\n"); else for (i = 0; i < n; i++) { output(i); } }

// 查询

void search() { int num, flag, i; char a[10], name[10], degree[10], position[10], sex[10], birthday[10], date[10], add[10], tel[20];
char c; read(); while (1) { printf("\n"); printf("+---------------------------------+\n"); printf("| 职 工 信 息 查 询 系 统 |\n"); 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("| 输入其他任意键退出本模块 |\n"); printf("+---------------------------------+\n"); printf("请选择操作:"); scanf("%d", &num); if (num < 1 || num > 9) { printf("!!!输入错误!!!\n\n"); system("cls"); // 清屏 }
if (num == 1) { printf("\n请输入您要查询的职工的编号:"); scanf("%s", &a); for (i = 0; i < n; i++) { if (strcmp(em[i].number, a) == 0) { output(i); flag = 1; } } } else if (num == 2)
{ printf("\n请输入您要查询的职工的姓名:"); scanf("%s", &name); for (i = 0; i < n; i++) { if (strcmp(em[i].name, name) == 0) { output(i); flag = 1;
} } } else if (num == 3)
{ printf("\n请输入您要查询的职工的学历:"); scanf("%s", &degree); for (i = 0; i < n; i++) { if (strcmp(em[i].degree, degree) == 0) { output(i); flag = 1; } } } else if (num == 4) { printf("\n请输入您要查询的职工的职务:"); scanf("%s", &position); for (i = 0; i < n; i++) { if (strcmp(em[i].position, position) == 0) { output(i); flag = 1;
} } } else if (num == 5)
{ printf("\n请输入您要查询的职工的性别:"); scanf("%s", &sex); for (i = 0; i < n; i++) { if (strcmp(em[i].sex, sex) == 0) { output(i); flag = 1;
} } } else if (num == 6) { printf("\n请输入您要查询的职工的出生年月:"); scanf("%s", &birthday); for (i = 0; i < n; i++) { if (strcmp(em[i].birthday, birthday) == 0) { output(i); flag = 1; } } } else if (num == 7)
{ printf("\n请输入您要查询的职工的入职年月:"); scanf("%s", &date); for (i = 0; i < n; i++) { if (strcmp(em[i].date, date) == 0) { output(i); flag = 1;
} } } else if (num == 8)
{ printf("\n请输入您要查询的职工的地址:"); scanf("%s", &add); for (i = 0; i < n; i++) { if (strcmp(em[i].add, add) == 0) { output(i); flag = 1;
} } } else if (num == 9) { printf("\n请输入您要查询的职工的电话:"); scanf("%s", &tel); for (i = 0; i < n; i++) { if (strcmp(em[i].tel, tel) == 0) { output(i); flag = 1;
} } } if(!flag)
{ printf("\n\n!!!无该职工信息!!!\n\n"); }

    printf("\n\n是否继续查询?(Y/N):");
    scanf("%*c%c", &c);
    if(c == 'N' || c == 'n')
		break;
}

}

// 修改

void modify()
{ int num, flag, i, j; char a[10];
char change[20];
char c; read(); while (1) { flag = 0; printf("\n请输入需要修改的职工编号:"); scanf("%s", &a); for (i = 0; i < n; i++) { if (strcmp(em[i].number, a) == 0 ) { j = i; flag = 1; } } if (!flag) { printf("\n\n!!!无此员工的信息!!!\n\n"); printf("\n\n是否继续修改(Y/N):"); scanf("%c", &c); if(c == 'N' || c == 'n') break; } printf("\n"); printf("+-------------------------------+\n"); printf("| 职 工 信 息 修 改 系 统 |\n"); 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("| 输入其他任意键退出本模块 |\n"); printf("+-------------------------------+\n"); printf("请选择操作:"); scanf("%d", &num); if (num < 1 || num > 8) { printf("!!!操作错误!!!\n\n"); continue; } system("cls"); // 清屏 printf("\n请输入修改后的信息:"); scanf("%s", &change); switch (num) { case 1 : strcpy(em[j].name, change); break; case 2 : strcpy(em[j].degree, change); break; case 3 : strcpy(em[j].position, change); break; case 4 : strcpy(em[j].add, change); break; case 5 : strcpy(em[j].birthday, change); break; case 6 : strcpy(em[j].date, change); break; case 7 : strcpy(em[j].tel, change); break; case 8 : strcpy(em[j].number, change); break; } printf("\n\n是否继续修改?(Y/N):"); scanf("%*c%c", &c); if (c == 'N' || c == 'n') break; continue; } write(); }

// 删除函数

void Delete()
{ char a[10];
int i, j, flag;
char c; read(); while (1) { system("cls"); // 清屏 flag = 0; printf("\n请输入需要删除的职工编号:"); scanf("%s", &a); for (i = 0; i < n; i++) { if (strcmp(em[i].number, a) == 0) { n--; flag = 1; for (j = i; j < n; j++) { em[j] = em[j + 1]; } break; } } if (!flag) printf("\n\n!!!无此员工信息!!!\n\n"); else printf("\n\n!!!删除成功!!!\n"); printf("\n\n是否继续删除?(Y/N):"); scanf("%c", &c); if (c == 'N' || c == 'n') break; continue; } write(); }

//输出函数

void show(employee *head) { employee *p = head; int j = 1; int i; char c; while (p != NULL) { for (i = 1; i < n; i++) { printf("%d. %s %s %s %s %s %s %s %s %s\n",j++,p->number,p->name ,p->sex ,p->birthday, p->date, p->degree, p->position, p->add, p->tel); p = p->next; } } }

//交换

void exchange(char *p,char *q) { read(); char c[20]; strcpy(c, p); strcpy(p, q); strcpy(q, c); }

//排序

void sort() { char ch; char c; employee *p, *q, *r; read() ; while (1) { printf("按职工编号从小到大的排序信息如下:\n"); p = head; while (p->next != NULL) //选择排序 { q = p->next; r = p; if (r != p) //交换信息 { exchange(r->number, p->number); exchange(r->name, p->name); exchange(r->sex, p->sex); exchange(r->birthday, p->birthday); exchange(r->date, p->date); exchange(r->degree, p->degree); exchange(r->position, p->position);
exchange(r->add, p->add); exchange(r->tel, p->tel); } } show(); system("pause"); } }

//菜单

void menu() { printf("\n"); printf(" ○主菜单 ○ \n"); printf(" 0.退 出 菜 单 \n"); printf(" 1.录入职工信息 \n"); printf(" 2.显示职工信息 \n"); printf(" 3.查询职工信息 \n"); printf(" 4.修改职工信息 \n"); printf(" 5.删除职工信息 \n"); printf(" 6.职工信息排序 \n"); printf("\n"); printf("请输入操作: "); }

int main() { int num; n = 0; system("color 0B"); printf("\n"); printf(" 欢 迎 使 用 职 工 管 理 系 统 \n"); printf("\n"); while (1) { menu(); scanf("%d",&num); system("cls"); // 清屏 switch (num) { case 1: add(); break; case 2: show(); break; case 3: search(); break; case 4: modify(); break; case 5: Delete(); break; case 6: sort(); break; case 0: printf("\t\t\n\n☆☆☆☆欢迎下次使用☆☆☆☆\n\n"); return 0; default:printf("\n无效指令!\n\n\n");
} system("pause"); system("cls"); } }

This is a program for managing employee information. It allows users to add, display, search, modify, delete, and sort employee information.

C语言员工信息管理系统 - 添加、显示、查询、修改、删除和排序

原文地址: https://www.cveoy.top/t/topic/fwUT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录