员工绩效管理系统功能_员工绩效表格怎么制作

(18) 2024-06-08 15:01:01

这次项目使用的是顺序表去完成员工绩效系统,学会这个系统之后,你还可以去做图书管理系统,学生成绩管理系统,这些代码可以作为实验课程作业参考。

这些代码要去慢慢看,去慢慢理解,我的英文不太好,只需要理解其中的逻辑即可。

如果有些语句真的不太会的话可以去搜索一下哈。

定义结构体数组:

id是员工号,name是员工名称,depar是部门,performance是绩效。

gNumber,filepath,temp后面会用到。

#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> //定义全局 #define MAXSIZE 1000 //定义结构体数组 struct staff { int id; char name[MAXSIZE]; char depar[MAXSIZE]; float performance; }sta[MAXSIZE]; //定义记录变量 int gNumber; //定义全局文件路径filepath char filepath[50]; //定义替代temp struct staff temp;

函数的定义:

这里定义了该管理系统的所有功能。

//函数定义 //连续输入员工信息 void add (); //检测学号是否存在 int exist (); //菜单 void menu(); //插入单个员工信息 void insert(); //打印所有员工信息 void printing(); //查看录入员工信息的个数 void gnum(); //打印单个员工信息 void single(); //清空所有员工信息 void cleaning (); //排序函数 void pai(); //删除员工信息 void dis(); //创建一个保存数据的文件 void keep (); //读取文件信息 void read(); //版本信息 void message(); //设置文件保存地址 void setting(); //更改员工信息 void updata() ;

主函数:

/* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { setting();//设置文件路径 int k; while(1) { menu();//菜单函数 printf("输入功能键0-12:"); scanf("%d",&k); getchar(); switch(k) { case 1: add();//连续输入员工信息函数 break; case 2: single();//打印单个员工函数 break; case 3: cleaning();//清空所有员工信息 break; case 4: insert();//插入单个员工信息 break; case 5: printing();//打印所有员工信息 break; case 6: gnum();//查看录入员工的个数 break; case 7: dis();//删除员工信息 break; case 8: setting();//设置文件保存地址 break; case 9: pai();//排序函数 break; case 10: read();//读取文件信息 break; case 11: message();//版本信息 break; case 12: updata();//更改员工信息 break; case 0: return 0; break; default: printf("输入数字有误或功能未更新!!!\n"); getch(); break; } } return 0; }

菜单系统:

这是一个菜单系统,到时候根据菜单的数字输出实现管理系统的功能。

这个功能菜单有点乱,希望大家不要介意。

//菜单 void menu () { system("cls"); printf("员工绩效管理系统1.1.1\n\n"); printf("\t\t|============功能列表============|\n"); printf("\t\t|----------1插入n个员工信息------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------2打印单个员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------3--清空数据-----------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------4添加n个员工信息------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------5输出所有员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------6查询已录入员工个数---|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------7删除一个员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------8设置文件路径---------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------9排序-----------------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------10读取文件数据--------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------11版本信息------------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------12更改员工信息--------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------0退出系统-------------|\n"); printf("\t\t|================================|\n\n\n"); } 

输入N个员工信息函数:

如果是第一次添加员工信息就可以使用这个函数。

//连续输入员工信息 void add() { system("cls"); int i,n,k,j,num; printf("请输入需要输入员工的个数n:\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("员工ID:"); scanf("%d",&num); for(j=0;j<i;j++) { if(sta[j].id == num) { printf("工号已存在......\n"); printf("请重新输入员工ID:\n"); scanf("%d",&num); j = 0; } } sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); // pai(); system("cls"); printf("\n一个新职工的信息档案创建完毕!\n\n"); gNumber++; } keep(); return; }

后续添加员工信息的函数:

如果是后续添加员工信息,可以使用这个函数去添加。

//添加n个员工信息 void insert() { system("cls"); int n,m,i,num,j; n = gNumber; //printf("n = %d",gNumber); printf("请输入要添加的员工数m:"); scanf("%d",&m); for(i=n;i<n+m;i++) { printf("第%d个员工信息输入: \n", i+1); printf("员工ID: "); scanf("%d",&num); for(j=0;j<i;j++) { if(sta[j].id == num) { printf("该工号已存在,请重新输入:"); scanf("%d",&num); j=0; } } sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); // pai(); system("cls"); printf("\n一个新职工的信息档案创建完毕!\n\n"); gNumber++; } system("cls"); printf("已保存数据到文件中"); printf("已成功添加%d个员工信息!\n回车继续",m); getch(); keep(); return; } 

删除员工信息:

//删除员工信息 void dis() { system("cls"); int num,g,i,j; printf("请输入要删除的员工ID:\n"); scanf("%d",&num); for(i=0;i<num;i++) { if(sta[i].id == num) { printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[num-1].id,sta[num-1].name,sta[num-1].performance,sta[num-1].depar); printf("如果输入1表示删除,其他表示取消删除并返回菜单。\n"); printf("输入数字:"); scanf("%d",&g); if(g == 1) { for(j=i;j<gNumber-1;j++) { sta[j] = sta[j+1]; } gNumber--; } else { return; } printf("已成功删除该员工信息,回车继续。\n"); getch(); keep(); return; } } } 

更改员工信息:

//更改员工信息 void updata() { system("cls"); int i,num,j,g; printf("请输入要更改信息的员工ID:\n"); scanf("%d",&num); for(i=0;i<num;i++) { if(sta[i].id == num) { printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[num-1].id,sta[num-1].name,sta[num-1].performance,sta[num-1].depar); printf("如果输入1表示更改,其他表示取消更改并返回菜单。\n"); printf("输入数字:"); scanf("%d",&g); if(g == 1) { sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); } else { return; } printf("已成功更改该员工信息。(回车继续)\n"); getch(); keep(); return; } } return; }

打印员工信息:

//打印员工所有信息 void printing() { int i; printf("\n贵公司所有职工信息:\n"); printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); for(i=0;i<gNumber;i++) { printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); printf("\n"); } getch(); return; } 
//打印单个员工信息 void single() { int n; printf("请输入要打印的员工ID:"); scanf("%d",&n); printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[n-1].id,sta[n-1].name,sta[n-1].performance,sta[n-1].depar); printf("\n"); printf("输入完毕!回车返回菜单"); getch(); return; } 

清空所有员工信息:

//清空所有员工信息 void cleaning() { int i; sta[MAXSIZE] = sta[0]; sta[0] = sta[MAXSIZE]; gNumber = 0; printf("已清空所有员工信息,回车返回菜单。"); keep(); getch(); return; } 

查看已录入的员工信息个数:

//测试函数 void gnum() { system("cls"); printf("已录入%d个员工。\n(回车返回菜单)",gNumber); getch(); } 

设置文件路径函数:

//设置全局文件保存路径 void setting() { system("cls"); // char filepath[50]; printf("请设置保存数据的文件路径:(例如:E:\\staff.txt)\n"); scanf("%s",filepath); FILE *fp; if((fp = fopen(filepath,"w"))!= NULL) { printf("文件路径设置完毕!\n(文件路径为: %s )",filepath); return; } else if((fp = fopen(filepath,"w")) == NULL) { printf("文件创建失败!\n"); printf("回车返回菜单\n"); getch(); return; } return; } 

保存员工信息到文件中:

//保存数据到文件中 void keep() { system("cls"); int i; // char filepath[50]; FILE *fp; if((fp = fopen(filepath,"w")) == NULL) { printf("创建文本失败!\n"); return; } else { for(i=0;i<gNumber;i++) { fprintf(fp,"%d %s %f %s \n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); } fclose(fp); printf("文件保存在==>> %s\n\n",filepath); printf("(回车返回菜单)"); getch(); return; } return; }

读取文件信息:

//读取文件信息 void read() { system("cls"); // char filepath[50]; // printf("请输入文件地址:(例如: E:\\staff.txt)\n"); // scanf("%s",filepath); FILE *fp; if((fp = fopen(filepath,"r")) == NULL) { printf("无法打开此文件!\n"); return; } else { int i; printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); for(i=0;i<gNumber;i++) { fscanf(fp,"%d %s %f %s \n\n",&sta[i].id,sta[i].name,&sta[i].performance,sta[i].depar); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); } fclose(fp); printf("输出了 %d 个员工信息。\n",gNumber); printf("(回车返回菜单。)"); getch(); return; } } 

版本信息:

//版本信息 void message() { system("cls"); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //SetConsoleTextAttribute(handle,0xf0); printf("\t\t\t|================================|\n"); printf("\t\t\t|========软件项目:==============|\n"); printf("\t\t\t|========员工绩效管理系统========|\n"); printf("\t\t\t|========版本:1.1.1=============|\n"); printf("\t\t\t|========作者:歌者EX============|\n"); printf("\t\t\t|========号:========|\n"); printf("\t\t\t|==============学院==============|\n"); printf("\t\t\t|========软件工程================|\n"); printf("\t\t\t|================================|\n\n\n"); //SetConsoleTextAttribute(handle,0xf0); getch(); return; } 

总代码:

#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> //定义全局 #define MAXSIZE 1000 //定义结构体数组 struct staff { int id; char name[MAXSIZE]; char depar[MAXSIZE]; float performance; }sta[MAXSIZE]; //定义记录变量 int gNumber; //定义全局文件路径filepath char filepath[50]; //定义替代temp struct staff temp; //函数定义 //连续输入员工信息 void add (); //检测学号是否存在 int exist (); //菜单 void menu(); //插入单个员工信息 void insert(); //打印所有员工信息 void printing(); //查看录入员工信息的个数 void gnum(); //打印单个员工信息 void single(); //清空所有员工信息 void cleaning (); //排序函数 void pai(); //删除员工信息 void dis(); //创建一个保存数据的文件 void keep (); //读取文件信息 void read(); //版本信息 void message(); //设置文件保存地址 void setting(); //更改员工信息 void updata() ; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { setting();//设置文件路径 int k; while(1) { menu();//菜单函数 printf("输入功能键0-12:"); scanf("%d",&k); getchar(); switch(k) { case 1: add();//连续输入员工信息函数 break; case 2: single();//打印单个员工函数 break; case 3: cleaning();//清空所有员工信息 break; case 4: insert();//插入单个员工信息 break; case 5: printing();//打印所有员工信息 break; case 6: gnum();//查看录入员工的个数 break; case 7: dis();//删除员工信息 break; case 8: setting();//设置文件保存地址 break; case 9: pai();//排序函数 break; case 10: read();//读取文件信息 break; case 11: message();//版本信息 break; case 12: updata();//更改员工信息 break; case 0: return 0; break; default: printf("输入数字有误或功能未更新!!!\n"); getch(); break; } } return 0; } //设置全局文件保存路径 void setting() { system("cls"); // char filepath[50]; printf("请设置保存数据的文件路径:(例如:E:\\staff.txt)\n"); scanf("%s",filepath); FILE *fp; if((fp = fopen(filepath,"w"))!= NULL) { printf("文件路径设置完毕!\n(文件路径为: %s )",filepath); return; } else if((fp = fopen(filepath,"w")) == NULL) { printf("文件创建失败!\n"); printf("回车返回菜单\n"); getch(); return; } return; } //保存数据到文件中 void keep() { system("cls"); int i; // char filepath[50]; FILE *fp; if((fp = fopen(filepath,"w")) == NULL) { printf("创建文本失败!\n"); return; } else { for(i=0;i<gNumber;i++) { fprintf(fp,"%d %s %f %s \n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); } fclose(fp); printf("文件保存在==>> %s\n\n",filepath); printf("(回车返回菜单)"); getch(); return; } return; } //读取文件信息 void read() { system("cls"); // char filepath[50]; // printf("请输入文件地址:(例如: E:\\staff.txt)\n"); // scanf("%s",filepath); FILE *fp; if((fp = fopen(filepath,"r")) == NULL) { printf("无法打开此文件!\n"); return; } else { int i; printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); for(i=0;i<gNumber;i++) { fscanf(fp,"%d %s %f %s \n\n",&sta[i].id,sta[i].name,&sta[i].performance,sta[i].depar); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); } fclose(fp); printf("输出了 %d 个员工信息。\n",gNumber); printf("(回车返回菜单。)"); getch(); return; } } //连续输入员工信息 void add() { system("cls"); int i,n,k,j,num; printf("请输入需要输入员工的个数n:\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("员工ID:"); scanf("%d",&num); for(j=0;j<i;j++) { if(sta[j].id == num) { printf("工号已存在......\n"); printf("请重新输入员工ID:\n"); scanf("%d",&num); j = 0; } } sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); // pai(); system("cls"); printf("\n一个新职工的信息档案创建完毕!\n\n"); gNumber++; } keep(); return; } //添加n个员工信息 void insert() { system("cls"); int n,m,i,num,j; n = gNumber; //printf("n = %d",gNumber); printf("请输入要添加的员工数m:"); scanf("%d",&m); for(i=n;i<n+m;i++) { printf("第%d个员工信息输入: \n", i+1); printf("员工ID: "); scanf("%d",&num); for(j=0;j<i;j++) { if(sta[j].id == num) { printf("该工号已存在,请重新输入:"); scanf("%d",&num); j=0; } } sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); // pai(); system("cls"); printf("\n一个新职工的信息档案创建完毕!\n\n"); gNumber++; } system("cls"); printf("已保存数据到文件中"); printf("已成功添加%d个员工信息!\n回车继续",m); getch(); keep(); return; } //删除员工信息 void dis() { system("cls"); int num,g,i,j; printf("请输入要删除的员工ID:\n"); scanf("%d",&num); for(i=0;i<num;i++) { if(sta[i].id == num) { printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[num-1].id,sta[num-1].name,sta[num-1].performance,sta[num-1].depar); printf("如果输入1表示删除,其他表示取消删除并返回菜单。\n"); printf("输入数字:"); scanf("%d",&g); if(g == 1) { for(j=i;j<gNumber-1;j++) { sta[j] = sta[j+1]; } gNumber--; } else { return; } printf("已成功删除该员工信息,回车继续。\n"); getch(); keep(); return; } } } //更改员工信息 void updata() { system("cls"); int i,num,j,g; printf("请输入要更改信息的员工ID:\n"); scanf("%d",&num); for(i=0;i<num;i++) { if(sta[i].id == num) { printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[num-1].id,sta[num-1].name,sta[num-1].performance,sta[num-1].depar); printf("如果输入1表示更改,其他表示取消更改并返回菜单。\n"); printf("输入数字:"); scanf("%d",&g); if(g == 1) { sta[i].id = num; printf("员工姓名:"); scanf("%s",sta[i].name); printf("员工绩效:"); scanf("%f",&sta[i].performance); printf("员工部门:"); scanf("%s",sta[i].depar); } else { return; } printf("已成功更改该员工信息。(回车继续)\n"); getch(); keep(); return; } } return; } //排序函数 void pai() { system("cls"); int m,k; for(m=0;m<gNumber-1;m++) { for(k=0;k<gNumber-1-m;k++) { if(sta[k].performance > sta[k+1].performance) { temp = sta[k+1]; sta[k+1] = sta[k]; sta[k] = temp; } } } printf("排序完毕!(回车返回菜单)"); keep(); getch(); return; } //打印员工所有信息 void printing() { int i; printf("\n贵公司所有职工信息:\n"); printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); for(i=0;i<gNumber;i++) { printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[i].id,sta[i].name,sta[i].performance,sta[i].depar); printf("\n"); } getch(); return; } //菜单 void menu () { system("cls"); printf("员工绩效管理系统1.1.1\n\n"); printf("\t\t|============功能列表============|\n"); printf("\t\t|----------1插入n个员工信息------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------2打印单个员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------3--清空数据-----------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------4添加n个员工信息------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------5输出所有员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------6查询已录入员工个数---|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------7删除一个员工信息-----|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------8设置文件路径---------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------9排序-----------------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------10读取文件数据--------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------11版本信息------------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------12更改员工信息--------|\n"); printf("\t\t|--------------------------------|\n"); printf("\t\t|----------0退出系统-------------|\n"); printf("\t\t|================================|\n\n\n"); } //版本信息 void message() { system("cls"); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //SetConsoleTextAttribute(handle,0xf0); printf("\t\t\t|================================|\n"); printf("\t\t\t|========软件项目:==============|\n"); printf("\t\t\t|========员工绩效管理系统========|\n"); printf("\t\t\t|========版本:1.1.1=============|\n"); printf("\t\t\t|========作者:歌者EX============|\n"); printf("\t\t\t|========号:========|\n"); printf("\t\t\t|==============学院==============|\n"); printf("\t\t\t|========软件工程================|\n"); printf("\t\t\t|================================|\n\n\n"); //SetConsoleTextAttribute(handle,0xf0); getch(); return; } //测试函数 void gnum() { system("cls"); printf("已录入%d个员工。\n(回车返回菜单)",gNumber); getch(); } //打印单个员工信息 void single() { int n; printf("请输入要打印的员工ID:"); scanf("%d",&n); printf("\n职工号\t姓名\t绩效\t 部门\t\n\n\n"); printf("\n %d\t%s\t%f\t%s\t\n\n\n",sta[n-1].id,sta[n-1].name,sta[n-1].performance,sta[n-1].depar); printf("\n"); printf("输入完毕!回车返回菜单"); getch(); return; } //清空所有员工信息 void cleaning() { int i; sta[MAXSIZE] = sta[0]; sta[0] = sta[MAXSIZE]; gNumber = 0; printf("已清空所有员工信息,回车返回菜单。"); keep(); getch(); return; } 
THE END

发表回复