用C语言写高校员工信息管理系统,人员包括教师,实验员,行政人员,教师兼行政人员,功能包括添加,查询,显示,编辑,删除,统计,保存,读取
时间: 2023-08-05 11:07:27 浏览: 92
c语言设计 公司人员信息管理
好的,这个项目可以分为以下几个模块:
1. 数据结构模块:需要定义不同类型的员工结构体,并且在结构体中包含员工的各项信息,例如姓名、工号、性别、年龄、职称、部门等。
2. 添加、查询、显示、编辑和删除模块:这些功能都需要对员工信息进行操作,包括添加新员工、查询员工信息、显示所有员工信息、编辑员工信息和删除员工信息等。这些操作可以通过菜单选择实现。
3. 统计模块:需要根据不同的统计要求,对员工信息进行统计,例如按部门统计、按职称统计、按性别统计等。
4. 保存和读取模块:需要将员工信息保存到文件中,以便下次程序启动时读取之前保存的员工信息。可以用文本文件或二进制文件保存员工信息。
下面是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义员工结构体
typedef struct {
char name[20]; // 姓名
char id[10]; // 工号
char gender; // 性别
int age; // 年龄
char title[20]; // 职称
char department[20];// 部门
} Employee;
// 添加员工信息
void addEmployee(Employee *emps, int *num) {
printf("请输入员工姓名:");
scanf("%s", emps[*num].name);
printf("请输入员工工号:");
scanf("%s", emps[*num].id);
printf("请输入员工性别(M/F):");
scanf(" %c", &emps[*num].gender);
printf("请输入员工年龄:");
scanf("%d", &emps[*num].age);
printf("请输入员工职称:");
scanf("%s", emps[*num].title);
printf("请输入员工部门:");
scanf("%s", emps[*num].department);
(*num)++;
printf("添加成功!\n");
}
// 查询员工信息
void queryEmployee(Employee *emps, int num) {
char id[10];
printf("请输入要查询的工号:");
scanf("%s", id);
int i;
for (i = 0; i < num; i++) {
if (strcmp(emps[i].id, id) == 0) {
printf("姓名:%s\n", emps[i].name);
printf("工号:%s\n", emps[i].id);
printf("性别:%c\n", emps[i].gender);
printf("年龄:%d\n", emps[i].age);
printf("职称:%s\n", emps[i].title);
printf("部门:%s\n", emps[i].department);
return;
}
}
printf("没有找到该员工!\n");
}
// 显示所有员工信息
void showAllEmployees(Employee *emps, int num) {
printf("姓名\t工号\t性别\t年龄\t职称\t部门\n");
int i;
for (i = 0; i < num; i++) {
printf("%s\t%s\t%c\t%d\t%s\t%s\n", emps[i].name, emps[i].id,
emps[i].gender, emps[i].age, emps[i].title, emps[i].department);
}
}
// 编辑员工信息
void editEmployee(Employee *emps, int num) {
char id[10];
printf("请输入要编辑的员工工号:");
scanf("%s", id);
int i;
for (i = 0; i < num; i++) {
if (strcmp(emps[i].id, id) == 0) {
printf("请输入员工姓名:");
scanf("%s", emps[i].name);
printf("请输入员工工号:");
scanf("%s", emps[i].id);
printf("请输入员工性别(M/F):");
scanf(" %c", &emps[i].gender);
printf("请输入员工年龄:");
scanf("%d", &emps[i].age);
printf("请输入员工职称:");
scanf("%s", emps[i].title);
printf("请输入员工部门:");
scanf("%s", emps[i].department);
printf("编辑成功!\n");
return;
}
}
printf("没有找到该员工!\n");
}
// 删除员工信息
void deleteEmployee(Employee *emps, int *num) {
char id[10];
printf("请输入要删除的员工工号:");
scanf("%s", id);
int i;
for (i = 0; i < *num; i++) {
if (strcmp(emps[i].id, id) == 0) {
(*num)--;
for (; i < *num; i++) {
emps[i] = emps[i+1];
}
printf("删除成功!\n");
return;
}
}
printf("没有找到该员工!\n");
}
// 按部门统计员工信息
void statisticByDepartment(Employee *emps, int num) {
char department[20];
printf("请输入要统计的部门:");
scanf("%s", department);
int count = 0;
int i;
for (i = 0; i < num; i++) {
if (strcmp(emps[i].department, department) == 0) {
count++;
}
}
printf("%s部门共有%d名员工。\n", department, count);
}
// 保存员工信息到文件
void saveToFile(Employee *emps, int num, char *filename) {
FILE *fp = fopen(filename, "wb");
if (fp == NULL) {
printf("无法创建文件!\n");
return;
}
fwrite(&num, sizeof(int), 1, fp);
fwrite(emps, sizeof(Employee), num, fp);
fclose(fp);
printf("保存成功!\n");
}
// 从文件中读取员工信息
void readFromFile(Employee *emps, int *num, char *filename) {
FILE *fp = fopen(filename, "rb");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
fread(num, sizeof(int), 1, fp);
fread(emps, sizeof(Employee), *num, fp);
fclose(fp);
printf("读取成功!\n");
}
int main() {
Employee emps[100];
int num = 0;
char filename[] = "employees.dat";
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("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addEmployee(emps, &num);
break;
case 2:
queryEmployee(emps, num);
break;
case 3:
showAllEmployees(emps, num);
break;
case 4:
editEmployee(emps, num);
break;
case 5:
deleteEmployee(emps, &num);
break;
case 6:
statisticByDepartment(emps, num);
break;
case 7:
saveToFile(emps, num, filename);
break;
case 8:
readFromFile(emps, &num, filename);
break;
case 9:
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
注意,以上代码只是一个简单的示例,实际开发中需要考虑更多细节问题,例如输入数据的合法性、文件操作的异常处理等。
阅读全文