企业员工管理系统c源码(C#员工管理系统)
本文目录一览:
- 1、用C语言设计并实现一个员工信息管理系统
- 2、C语言实现公司职员信息管理系统
- 3、C语言课程设计之公司员工信息管理系统怎么做?
- 4、求一个企业人事管理系统 带源代码的 实现功能 如下:
- 5、职工管理系统C++源代码
用C语言设计并实现一个员工信息管理系统
#include iostream
#include cstring
using namespace std;
typedef struct wage {
char unit[8];
char name[10];
char sex[4];
char birthdate[12];
char title[20];
double basewage;
double subsidy;
double tax;
double expenses;
double residualwage;
}WAGE;
void ComputerResidualwage(WAGE a[],int n) {
for(int i = 0; i n; ++i)
a[i].residualwage = a[i].basewage + a[i].subsidy - a[i].tax - a[i].expenses;
}
void PrintTitle(void) {
cout "单 位 姓 名 性别 出生年月 职 称 基本工资 津 贴 个 税 水电费 实发工资\n";
for(int i = 0; i 79; ++i) cout "*"; cout endl;
}
void RowShow(WAGE a[], int i) {
cout a[i].unit " ";
if(strlen(a[i].name) == 4) {
a[i].name[6] = a[i].name[4];
a[i].name[5] = a[i].name[3];
a[i].name[4] = a[i].name[2];
a[i].name[2] = a[i].name[3] = ' ';
}
cout a[i].name " " a[i].sex " " a[i].birthdate;
if(strlen(a[i].title) == 4) {
a[i].title[6] = a[i].title[4];
a[i].title[5] = a[i].title[3];
a[i].title[4] = a[i].title[2];
a[i].title[2] = a[i].title[3] = ' ';
}
cout " " a[i].title " ";
cout.precision(2);
cout.width(8);
cout fixed a[i].basewage " "; cout.width(6);
cout fixed a[i].subsidy " ";
cout.width(8);
cout fixed a[i].tax " ";
cout.width(6);
cout fixed a[i].expenses " ";
cout.width(8);
cout fixed a[i].residualwage endl;
}
void Show(WAGE a[], int n) {
for(int i = 0; i n; ++i) RowShow(a,i);
}
void Search1(WAGE a[], int n) {
int i,flag = 1;
for(i = 0; i n; ++i) {
if(strcmp(a[i].unit,"理学院") == 0 a[i].basewage 900.00
strcmp(a[i].title,"副教授") == 0 strcmp(a[i].sex,"男") == 0) {
RowShow(a,i);
flag = 0;
}
}
if(flag) cout "(没找到符合条件者)\n";
}
void Search2(WAGE a[], int n) {
int i,flag = 1;
for(i = 0; i n; ++i) {
if(strcmp(a[i].unit,"理学院") == 0 a[i].basewage 1200.00
strcmp(a[i].title,"教 授") == 0 strcmp(a[i].sex,"男") == 0) {
RowShow(a,i);
flag = 0;
}
}
if(flag) cout "(没找到符合条件者)\n";
}
int main() {
WAGE a[] = {
{"理学院","赵志军","男","1957-06-25","教 授",1150,411,176.6,90},
{"商学院","于 铭","女","1979-10-21","助 教",500,471,208.9,91},
{"工学院","许炎锋","女","1954-03-08","教 授",1250,630,306.2,96},
{"理学院","王 嘉","女","1971-06-06","讲 师",850,475,100.3,89},
{"工学院","李新江","男","1962-10-02","教 授",950,399,49.5,87},
{"商学院","郭海英","女","1963-02-07","副教授",950,332,77.6,85},
{"工学院","马淑恩","女","1960-06-09","副教授",900,791,60.5,45},
{"理学院","王金科","男","1956-09-10","教 授",1050,480,325.6,93},
{"理学院","李东慧","女","1950-08-07","教 授",1350,364,52.3,94},
{"工学院","张 宁","女","1980-01-01","助 教",500,395,78,89},
{"商学院","王 孟","男","1966-09-08","讲 师",800,463,220.3,98},
{"工学院","马会爽","女","1970-02-09","讲 师",800,368,101.1,69},
{"工学院","史晓赟","女","1952-06-06","教 授",1200,539,520.3,50},
{"理学院","刘燕凤","女","1959-08-07","教 授",1200,892,180.9,86},
{"工学院","齐 飞","男","1961-04-05","副教授",1200,626,245.6,74},
{"商学院","张 娟","女","1975-09-25","助 教",650,374,625.3,86},
{"理学院","潘成文","男","1965-10-09","讲 师",950,402,1050,90},
{"工学院","邢 易","女","1981-02-25","助 教",600,325,300,90},
{"商学院","谢枭豪","女","1950-11-18","教 授",1350,516,200,90},
{"工学院","胡洪静","女","1952-06-24","教 授",1350,277,100,86},
{"工学院","李云飞","男","1969-05-04","讲 师",960,729,56,89},
{"商学院","张 奇","女","1970-05-28","讲 师",960,331,69,89},
{"理学院","夏小波","女","1968-08-01","讲 师",960,482,89,45},
{"工学院","王 玮","女","1972-11-05","讲 师",960,340,98,79},
{"理学院","张 帝","女","1950-03-26","教 授",1300,335,124,90},
{"商学院","孙 帅","男","1966-05-24","讲 师",900,748,326,79},
{"工学院","卜辉娟","女","1960-05-23","教 授",960,481,651,78},
{"工学院","李辉玲","女","1978-09-09","助 教",630,379,400,77},
{"理学院","刘亚静","男","1969-08-09","副教授",890,377,23,66},
{"工学院","尹 娴","女","1958-06-09","教 授",1050,955,59,65},
{"商学院","马春英","男","1964-12-06","讲 师",850,387,78,69},
{"工学院","孟 梦","女","1965-08-09","副教授",850,753,485.6,93},
{"工学院","梁晓萌","女","1975-06-09","助 教",650,551,136.5,99},
{"理学院","张 然","女","1973-03-03","讲 师",800,761,203.1,100},
{"工学院","彭雁南","男","1978-05-09","助 教",650,200,200,90}
};
int i,n = sizeof(a)/sizeof(a[0]);
if(n == 0) return 1;
ComputerResidualwage(a,n);
PrintTitle();
for(i = 0; i n; ++i) RowShow(a,i);
for(i = 0; i 79; ++i) cout "*";
cout endl; cout "\n理学院,基本工资高于900元的男副教授有:\n\n";
PrintTitle();
Search1(a,n);
for(i = 0; i 79; ++i) cout "*";
cout endl;
cout "\n理学院,基本工资低于1200元的男教授有:\n\n";
PrintTitle();
Search2(a,n);
for(i = 0; i 79; ++i) cout "*";
cout endl endl;
return 0;
}
C语言实现公司职员信息管理系统
#includestdio.h
#includestring.h
#includeconio.h
#includestdlib.h
#define MAX 200
int id=0; /*全局变量,添加数据时自增.*/
int *p;
char delechar[]="qq1145219983";
struct score
{
int c;
int java;
int vb;
int sql;
int asp;
};
struct user /*结构体,学生数据各项属性定义.*/
{
char name[50];
char sex[10];
char no[20];
int userid;
struct score grade ;
};
struct user users[MAX]; /*全局结构体数组,定义可存储学生数.*/
void adduser(); /*添加数据的函数说明.*/
void updateuser(); /*修改数据的函数说明.*/
void deleteuser(); /*删除数据的函数说明.*/
void selectuser(); /*查询数据的函数说明.*/
void selectno(); /*按学号查询函数说明.*/
void selectall(); /*查询全部学生函数声明.*/
void selectgrade();
void upgrade(int a);
int average(int i);
int verify(int a);
int verifyg(int a);
int load();
void save();
int main()
{
int conn;
id=load();
system("title 学生成绩信息管理系统");
printf("***************\nqq:1145219983\nMy Name:wei!\n***************\n");
for(;;) /*无限循环,用于每次执行完各操作函数时返回主菜单.*/
{
printf("\n\n\n\n"); /*主菜单开始*/
printf("***********************************\n"); /*主菜单开始*/
printf("=======学生成绩信息系统============\n");
printf("***********************************\n");
printf(" 1 添加.\n");
printf(" 2 修改.\n");
printf(" 3 删除.\n");
printf(" 4 查询.\n");
printf(" 5 清屏.\n");
printf(" 其他任意键退出.\n");
printf("***********************************\n");
printf("***********************************\n\n\n");
printf("输入操作:"); /*主菜单结束*/
scanf("%d",conn); /*输入数字,给全局变量conter赋值,用于判断添加,删除数据等操作.*/
if (conn==1||conn==2||conn==3||conn==4||conn==5) /*判断输入数字是否在1到5之间*/
{
switch(conn) /*如果上面判断是在1到4间,则执行switch,判断conter是1到4间的哪一个.*/
{
case 1 : adduser(); save(); break; /*是1,则执行添加函数,转至添加函数进行操作.*/
case 2 : updateuser(); save(); break; /*是2,则执行修改函数,转至修改函数进行操作.*/
case 3 : deleteuser(); save(); break; /*是3,则执行删除函数,转至删除函数进行操作.*/
case 4 : selectuser(); break; /*是4,则执行查询函数,转至查询函数进行操作.*/
case 5 : system("cls"); break;
default : exit(0); /*都不是,则退出程序.*/
}
}
else exit(0);
}
}
void adduser() /*添加数据函数,*/
{
char ch;
int i=0;
printf("姓名:");
scanf("%s",users[id].name);
printf("性别:");
scanf("%s",users[id].sex);
printf("输入成绩:\n");
printf("c语言:");
scanf("%d",users[id].grade.c);
users[id].grade.c=verifyg(users[id].grade.c);
printf("Java:");
scanf("%d",users[id].grade.java);
users[id].grade.java=verifyg(users[id].grade.java);
printf("Vb:");
scanf("%d",users[id].grade.vb);
users[id].grade.vb=verifyg(users[id].grade.vb);
printf("Sql:");
scanf("%d",users[id].grade.sql);
users[id].grade.sql=verifyg(users[id].grade.sql);
printf("Asp:");
scanf("%d",users[id].grade.asp);
users[id].grade.asp=verifyg(users[id].grade.asp);
while(i==0)
{
printf("学号:");
scanf("%s",users[id].no);
i=verify(id);
}
if(i!=0)
{
users[id].userid=id;
id++;
printf("\n完成!\n\n");
}
}
void updateuser() /*修改数据函数,*/
{
char upno[10],ch;
int conn;
int b=0;
int i,j;
printf("输入学号:");
scanf("%s",upno);
for(i=0;iid;i++)
{
if(strcmp(users[i].no,upno)==0) /*遍历所有数据,判断输入的学号于数据里面的学号是否相同,不同则不执行修改.*/
{
printf("\n将要修改以下资料:\n");
printf("姓名:%s\n性别:%3s, 学号:%10s , 平均份:%3d \nC:%d , Java:%d , Vb:%d , Sql:%d , Asp:%d\n\n",users[i].name,users[i].sex,users[i].no,average(i),users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
printf("\n\n按任意键继续,按0返回...\n\n");
ch=getch(); if(ch==48) {j=1; break;}
printf("修改: 1.姓名 , 2.性别 , 3.学号 , 4.成绩 , 0.主目录 , 其他键退出.\n");
printf("请选择:");
scanf("%d",conn);
if(conn==1||conn==2||conn==3||conn==4)
switch(conn)
{
case 1 : printf("姓名:");scanf("%s",users[i].name); j=1; printf("\n完成!\n\n"); break;
case 2 : printf("性别:");scanf("%s",users[i].sex); j=1; printf("\n完成!\n\n"); break;
case 3 : while(b==0){printf("学号:");scanf("%s",users[i].no);b=verify(i);}if(b!=0){j=1;b=0;printf("\n完成!\n\n");} break;
case 4 : j=1; upgrade(i); break;
}
else if(conn==0) {j=1; break;}
else exit(0);
if(j!=1) printf("\n没有此学生!\n\n");
}
}
}
void upgrade(int a) //修改成绩
{
int conn;
int i;
for(;;)
{
printf("修改成绩: 1.C , 2.Java , 3.Vb , 4.Sql , 5.Asp , 0.主目录 , 其他键退出.\n");
printf("输入操作:");
scanf("%d",conn);
if(conn==1||conn==2||conn==3||conn==4||conn==5)
{
switch(conn)
{
case 1 : printf("C:");scanf("%d",users[a].grade.c); break;
case 2 : printf("Java:");scanf("%d",users[a].grade.java); break;
case 3 : printf("Vb:");scanf("%d",users[a].grade.vb); break;
case 4 : printf("Sql:");scanf("%d",users[a].grade.sql); break;
case 5 : printf("Asp:");scanf("%d",users[a].grade.asp); break;
}
printf("完成!\n\n");
}
else if(conn==0)
break;
else
exit(0);
}
}
void deleteuser() /*删除数据函数,*/
{
char deno[10];
int i,j,k=0;
struct user temp;
printf("学号:");
scanf("%s",deno);
for(i=0;iid;i++) /*遍历所有数据,判断输入的学号于数据里面的学号是否相同,不同则不执行删除操作,.*/
{
if(strcmp(users[i].no,deno)==0)
{
for(j=i;jid-1;j++)
users[j]=users[j+1];
id--;
k=1;
printf("删除成功...\n");
}
}
if(k==0)
printf("没有此学生!\n");
}
void selectuser() /*查询控制函数,*/
{
int conn;
for(;;)
{
printf("***********************************\n");
printf(" 1.查询全部学生.\n");
printf(" 2.按学号查询.\n");
printf(" 0.主目录\n");
printf(" 其他键退出.\n");
printf("***********************************\n\n");
printf("输入操作:");
scanf("%d",conn);
if(conn==1||conn==2)
{
switch(conn)
{
case 1 : selectall(); break;
case 2 : selectno(); break;
}
}
else if(conn==0)
break;
else
exit(0);
}
}
void selectall() /*查询所有数据函数,*/
{
int i;
if(id==0)
{
printf("\n\n没有数据,按任意键返回...\n\n");
getch();
}
else
{
printf("\n\n┏━━━━━━━━━━━━清单━━━━━━━━━━━━┓\n");
printf("┣━━━━━━━━━━━━━━━━━━━共%-6ld条记录┫\n",id);
for(i=0;iid;i++)
{
if(i%5==0 i!=0)
{
printf("┃下一页...");
getch();
}
printf("\x0d┃姓名:%-10s性别:%-6s学号:%-12s平均分:%d┃\n┃成绩:[C:%d] [Java:%d] [Vb:%d] [Sql:%d] [Asp:%d] ┃\n",users[i].name,users[i].sex,users[i].no,average(i),users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
printf("┠——————————————————————————┨\n");
}
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n\n");
}
}
void selectno() /*按学号查询数据函数,*/
{
char seno[10];
int i,ii=0;
printf("输入学号:");
scanf("%s",seno);
for(i=0;iid;i++)
{
if(strcmp(users[i].no,seno)==0)
{
printf("\n\n*****************************清单******************************\n");
printf("||%-59s||\n",users[i].name);
printf("||===========================================================||\n");
printf("||性别:[%3s], 学号:[%10s ], 平均份:[%3d ], ||\n",users[i].sex,users[i].no,average(i));
printf("||--------------------------成绩---------------------------||\n");
printf("||C:[%3d ], Java:[%3d ], Vb:[%3d ], Sql:[%3d ], Asp:[%3d ], ||\n",users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
printf("||===========================================================||\n");
ii=1;
printf("***************************************************************\n\n\n");
}
}
if(ii!=1)
printf("没有此学生!\n");
}
int average(int i) //平均分
{
int a;
a=(users[i].grade.c + users[i].grade.java + users[i].grade.vb + users[i].grade.sql + users[i].grade.asp)/5;
return(a);
}
int verify(int a) //验证学号是否重复
{
int i,b;
for(i=0;iid;i++)
{
if(i==a)
continue;
if(strcmp(users[a].no,users[i].no)==0)
{
printf("\n已有学号为%s的学生!\n重新输入:",users[a].no);
b=0;
break;
}
else b=1;
//printf("[%s] [[%s]]\n",users[a].no,users[i].no);
}
return(b);
}
int verifyg(int a) //验证成绩是否超出范围
{
while(a0||a100)
{
printf("\n错误.范围:0~100 重新输入:");
scanf("%d",a);
}
return (a);
}
int load()
{
int num=0,i;
char temp;
FILE *fp;
if((fp=fopen("olize.dat","rb"))!=NULL)
{
fscanf(fp,"%d",num);
//printf("[[ %d ]]\n",num);
for(i=0;inum;i++)
{
fscanf(fp,"%s%s%s%d%d%d%d%d",users[i].name,users[i].sex,users[i].no,users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
//printf("[[%s,%s,%s,%d,%d,%d,%d,%d]]\n\n",users[i].name,users[i].sex,users[i].no,users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
}
fclose(fp);
}
return (num);
}
void save()
{
int num,i,j;
struct user temp;
FILE *fp;
if((fp=fopen("olize.dat","wb"))==NULL)
{
printf("保存数据失败,数据文件无法打开...\n\n\n按任意键退出...");
getch();
exit(0);
}
for(i=0;iid;i++)
for(j=i+1;jid;j++)
if(average(i)average(j))
{temp=users[i];users[i]=users[j];users[j]=temp;}
fprintf(fp,"%d\r\n",id);
for(i=0;iid;i++)
fprintf(fp,"%-15s%-4s%-20s%-4d%-4d%-4d%-4d%-4d\r\n",users[i].name,users[i].sex,users[i].no,users[i].grade.c,users[i].grade.java,users[i].grade.vb,users[i].grade.sql,users[i].grade.asp);
fclose(fp);
}
这份代码是学生成绩信息,你修改一下就好啦,本质上一样的
C语言课程设计之公司员工信息管理系统怎么做?
1、员工信息管理系统是事业单位科学、全面、高效进行人事管理的系统,参考大量中国人力资源管理理论,根植于国内管理的实际情况,实用而科学。内容包括机构的建立和维护,人员信息的录入和输出,工资的调整和发放以及各类报表的绘制和输出等功能。在操作上集输入、维护、查询、统计、打印、输出等处理为一体,简便灵活,自动化功能强大。
2、例程:
#include stdio.h
#include windows.h
#include time.h
#include string.h
#define N 100
struct employee
{
int num;
char name[10];
char sex;
int age;
char xueli[30];
int wage;
char addr[30];
long int tel;
}em[100]; /*定义一个结构体*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void modify(); /*定义各函数*/
void menu() /*菜单函数*/
{
printf(" ☆☆☆计算机科学与技术学系☆☆☆\n");
printf("\n");
printf(" ∮08802班 关丽霞∮\n");
printf("\n");
printf(" ******************职工信息管理****************\n");
printf(" 1.录入职工信息");
printf(" 2.浏览职工信息\n");
printf(" 3.查询职工信息");
printf(" 4.删除职工信息\n");
printf(" 5.添加职工信息");
printf(" 6.修改职工信息\n");
printf(" 7.退出\n");
printf(" ********************谢谢使用******************\n");
printf("\n");
printf("\n");
}
void main()
{
menu(); /*调用菜单函数*/
int n,flag;
char a;
do
{
printf("请选择你需要操作的步骤(1--7):\n");
scanf("%d",n);
if(n=1n=7)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case 1:printf(" ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;
case 2:printf(" ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;
case 3:printf(" ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break;
case 4:printf(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;
case 5:printf(" ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;
case 6:printf(" ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;
case 7:exit(0);break;
default :break;
}
getchar();
printf("\n");
printf("是否继续进行(y or n):\n");
scanf("%c",a);
if(a=='y')
{
flag=1;
system("cls"); /*清屏*/
menu(); /*调用菜单函数*/
printf("请再次选择你需要操作的步骤(1--6):\n");
scanf("%d",n);
printf("\n");
}
else
exit(0);
}
}
void input() /*录入函数*/
{
int i,m;
printf("请输入需要创建信息的职工人数(1--100):\n");
scanf("%d",m);
for (i=0;im;i++)
{
printf("职工号: ");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d ",em[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("请输入性别(f--女 m--男): ");
scanf("%c",em[i].sex);
printf("请输入年龄: ");
scanf("%d",em[i].age);
printf("请输入学历: ");
scanf("%s",em[i].xueli);
printf("请输入工资: ");
scanf("%d",em[i].wage);
printf("请输入住址: ");
scanf("%s",em[i].addr);
printf("请输入电话: ");
scanf("%d",em[i].tel);
printf("\n");
}
printf("\n创建完毕!\n");
save(m);
}
void save(int m) /*保存文件函数*/
{
int i;
FILE*fp;
if ((fp=fopen("employee_list","wb"))==NULL) /*创建文件并判断是否能打开*/
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;im;i++) /*将内存中职工的信息输出到磁盘文件中去*/
if (fwrite(em[i],sizeof(struct employee),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int load() /*导入函数*/
{
FILE*fp;
int i=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(em[i],sizeof(struct employee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
void display() /*浏览函数*/
{
int i;
int m=load();
printf("\n 职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");
for(i=0;im;i++) /*m为输入部分的职工人数*/
printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
void del() /*删除函数*/
{
int m=load();
int i,j,n,t,flag;
char name[20];
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
printf("请输入要删除的职工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flagim;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",n);
if(n==1) /*如果删除,则其他的信息都往上移一行*/
{
for(j=i;jm-1;j++)
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
em[j].tel=em[j+1].tel;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n 浏览删除后的所有职工信息:\n");
save(m); /*调用保存函数*/
display(); /*调用浏览函数*/
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}
}
void add()/*添加函数*/
{
FILE*fp;
int n;
int count=0;
int i;
int m=load();
printf("\n 原来的职工信息:\n");
display(); /* 调用浏览函数*/
printf("\n");
fp=fopen("emploee_list","a");
printf("请输入想增加的职工数:\n");
scanf("%d",n);
for (i=m;i(m+n);i++)
{
printf("\n 请输入新增加职工的信息:\n");
printf("请输入职工号: ");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d ",em[i].num);
printf("\n");
printf("请输入姓名: ");
scanf("%s",em[i].name);
getchar();
printf("请输入性别(f--女 m--男): ");
scanf("%c",em[i].sex);
printf("请输入年龄: ");
scanf("%d",em[i].age);
printf("请输入学历: ");
scanf("%s",em[i].xueli);
printf("请输入工资: ");
scanf("%d",em[i].wage);
printf("请输入住址: ");
scanf("%s",em[i].addr);
printf("请输入电话: ");
scanf("%d",em[i].tel);
printf("\n");
count=count+1;
printf("已增加的人数:\n");
printf("%d\n",count);
}
printf("\n添加完毕!\n");
m=m+count;
printf("\n浏览增加后的所有职工信息:\n");
printf("\n");
save(m);
display();
fclose(fp);
}
void search()/*查询函数*/
{
int t,flag;
do
{
printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");
scanf("%d",t);
if(t=1t=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职工号查询\n");search_num();break;
case 2:printf("按学历查询\n");search_xueli();break;
case 3:printf("按电话号码查询\n");search_tel();break;
case 4:main();break;
default:break;
}
}
}
void search_num()
{
int num;
int i,t;
int m=load();
printf("请输入要查找的职工号(20001111---20009999):\n");
scanf("%d",num);
for(i=0;im;i++)
if(num==em[i].num)
{
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",t);
switch(t)
{
case 1:search();break;
case 2: break;
default:break;
}
}
void search_xueli()
{
char xueli[30];
int i,t;
int m=load();
printf("请输入要查找的学历:\n");
scanf("%s",xueli);
for(i=0;im;i++)
if(strcmp(em[i].xueli,xueli)==0)
{
printf("\n已找到,其记录为:\n");
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询学历请按2\n");
scanf("%d",t);
switch(t)
{
case 1:search();break;
case 2:break;
default :break;
}
}
void search_tel()
{
long int tel;
int i, t;
int m=load();
printf("请输入要查找的电话号码:\n");
scanf("%ld",tel);
for(i=0;im;i++)
if(tel==em[i].tel)
{
printf("\n已找到此人,其记录为:\n");
printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");
printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询电话号码请按2\n");
scanf("%d",t);
switch(t)
{
case 1:search();break;
case 2:break;
default :break;
}
}
求一个企业人事管理系统 带源代码的 实现功能 如下:
智信人事管理软件企业员工管理系统c源码,轻松搞定LZ企业员工管理系统c源码你所说的那些问题企业员工管理系统c源码,强大的自定义功能企业员工管理系统c源码,高级查询功能,自定义报表设计功能等,在市面的其它软件是无法做到,LZ可以自己去下个试用版的先回去免费试用看看。
职工管理系统C++源代码
//希望对你有帮助.这个不是我自己写的,是搜集的别人的,写的不错,可以运行。
/**************************************************
内容及要求:
1注册新职工,添加新职工的详细信息,
如:职工号,姓名,出生年份,性别,职称,部门,工资等;
2按姓名,部门等条件进行查询;
3修改和删除职工信息;
4按工资高低进行排序;
5把各项纪录存储在文本文件中。
评说:有删除和增加的操作,最好选取链表来做。
**************************************************/
#include string
#include iostream
#include fstream
#include iomanip
#include memory.h
#include stdio.h
#include conio.h
#include stdlib.h
using namespace std;
struct Employee
{//声明职工的结构作为链表节点。
//-----数据域-----
string m_Code;
string m_Name;
unsigned short int m_Year;
string m_Sex;
string m_Post;
string m_Department;
unsigned int m_Wage;
//链表节点的指针域---
struct Employee* Next;
};
//-----个人习惯:取别名-------
typedef struct Employee Node;
typedef Node* Link;
//-------函数声明-------------
Link Create(Link Head);
void Release(Link Head);
Link Add(Link Head);
bool Search(Link Head);
Link Search_Unique(Link Head);
void Display_List(Link Head);
void Display_Node(Link pNode);
Link Modify(Link Head);
Link Del(Link Head);
void Save_ByFile(Link Head,fstream ofile);
Link Sort(Link Head);
//-------函数实现--------------------------
Link Create(Link Head)
{//创建一个带头节点的空链表。
Head=(Link)new Node;
if(!Head)
{
cout"分配内存失败!"endl;
return NULL;
}
Head-m_Code="";
Head-m_Name="";
Head-m_Year=0;
Head-m_Sex="";
Head-m_Post="";
Head-m_Department="";
Head-m_Wage=0;
Head-Next=NULL;
return Head;
}
void Release(Link Head)
{//释放链表。
Link ptr;//声明一个操作用的指针。
while(Head!=NULL)
{
ptr=Head;
Head=Head-Next;
delete ptr;//释放节点资源。
}
}
Link Add(Link Head)
{//前插法添加数据。
Link pNew;// 声明一个新节点。
char again;
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
do
{
pNew=(Link)new Node;
//数据域。
cout"请输入职工代码:";
cincode;
coutendl"请输入职工姓名:";
cinname;
coutendl"请输入职工出生年份:";
cinyear;
while(cin.fail())
{
cout"请输入正确的年份格式。"endl;
cin.clear();
fflush(stdin);
cinyear;
}
coutendl"请输入职工性别:";
cinsex;
coutendl"请输入职工职称:";
cinpost;
coutendl"请输入职工部门:";
cindepartment;
coutendl"请输入职工工资:";
cinwage;
while(cin.fail())
{
cout"请输入正确的工资数据。"endl;
cin.clear();
fflush(stdin);
cinwage;
}
coutendl;
pNew-m_Code=code;
pNew-m_Name=name;
pNew-m_Year=year;
pNew-m_Sex=sex;
pNew-m_Post=post;
pNew-m_Department=department;
pNew-m_Wage=wage;
//指针域。
pNew-Next=Head-Next;
Head-Next=pNew;
cout"数据添加成功!是否继续添加?(Y/N)"endl;
cinagain;
}while(again=='Y'||again=='y');
return Head;
}
bool Search(Link Head)
{//查询同时满足“姓名”和“部门”的职工信息。
Link ptr;
string department;
string name;
ptr=Head-Next;
cout"请输入部门:";
cindepartment;
coutendl"请输入姓名:";
cinname;
coutendl"----------------查询结果------------------"endl;
while(ptr)
{
if((ptr-m_Name==name)(ptr-m_Department==department))
{
Display_Node(ptr);//打印满足条件的节点。
return true;
}
ptr=ptr-Next;//查询下一节点。
}
cout"无此职工的信息。"endl;
return false;
}
Link Search_Unique_Front(Link Head)
{//查询满足“职工代码“的职工信息(职工代码必需唯一)。
Link ptr;
string code;
ptr=Head;
cout"请输入职工代码:";
cincode;
coutendl"----------------查询结果------------------"endl;
while(ptr-Next)
{
if(ptr-Next-m_Code==code)
//Display_Node(ptr);//打印满足条件的节点。
return ptr;//注意,是返回的查询到的节点的直接前趋节点。
ptr-Next=ptr-Next-Next;//查询下一节点。
}
return ptr;
}
void Display_List(Link Head)
{
Link ptr;
ptr=Head-Next;
cout"==================所有职工信息=================="endl;
while(ptr)
{
Display_Node(ptr);
ptr=ptr-Next;
}
}
void Display_Node(Link pNode)
{//在标准输出设备上输出。
coutsetw(10)leftpNode-m_Code
setw(10)leftpNode-m_Name
setw(10)leftpNode-m_Year
setw(10)leftpNode-m_Sex
setw(10)leftpNode-m_Post
setw(10)leftpNode-m_Department
setw(10)leftpNode-m_Wageendl;//setw(10)表示占10个字符位置。
}
Link Modify(Link Head)
{// 修改单一个节点。
Link ptr;
ptr=Search_Unique_Front(Head);
string code,name,sex,post,department;
unsigned short int year;
unsigned int wage;
if(ptr-Next)
{
cout"-------你现在可以修改此职工的信息了-------"endl;
//数据域。
cout"请输入职工代码:";
cincode;
coutendl"请输入职工姓名:";
cinname;
coutendl"请输入职工出生年份:";
cinyear;
while(cin.fail())
{
cout"请输入正确的年份格式。"endl;
cin.clear();
fflush(stdin);
cinyear;
}
coutendl"请输入职工性别:";
cinsex;
coutendl"请输入职工职称:";
cinpost;
coutendl"请输入职工部门:";
cindepartment;
coutendl"请输入职工工资:";
cinwage;
while(cin.fail())
{
cout"请输入正确的工资数据。"endl;
cin.clear();
fflush(stdin);
cinwage;
}
coutendl;
ptr-Next-m_Code=code;//因ptr是前趋节点,所以要用ptr-Next;
ptr-Next-m_Name=name;
ptr-Next-m_Year=year;
ptr-Next-m_Sex=sex;
ptr-Next-m_Post=post;
ptr-Next-m_Department=department;
ptr-Next-m_Wage=wage;
}
cout"没找到此职工的记录,无法修改。"endl;
return Head;
}
Link Del(Link Head)
{
Link ptr;
Link ptr_front;
ptr_front=Search_Unique_Front(Head);
ptr=ptr_front-Next;
if(ptr)
{
ptr_front-Next=ptr-Next;
delete ptr;//删除此节点。
}
cout"没找到此职工的记录,无法删除。"endl;
return Head;
}
void Save_ByFile(Link Head,fstream ofile)
{
Link pNode;
pNode=Head-Next;
ofile.clear();//清除文件结束状态。
while(pNode)
{
ofilesetw(10)leftpNode-m_Code
setw(10)leftpNode-m_Name
setw(10)leftpNode-m_Year
setw(10)leftpNode-m_Sex
setw(10)leftpNode-m_Post
setw(10)leftpNode-m_Department
setw(10)leftpNode-m_Wageendl;//setw(10)表示占10个字符位置。
pNode=pNode-Next;
}
cout"数据文件保存成功!"endl;
}
Link Sort(Link Head)
{//我创建的是带头节点的链表。用直接插入法。
if((Head-Next==NULL)||(Head-Next-Next==NULL))//此步条件判断非常有价值。
{
cout"数据节点数少于2个,不用排序!"endl;
return Head;
}
//-----------第二步;
Link ptr;
Link ptr_F;
Link ptr_N;
ptr=Head-Next-Next;
ptr_F=Head;
Head-Next-Next=NULL;//到此,分成了两个链表。
//第三步。
while(ptr)
{
ptr_N=ptr-Next;
ptr_F=Head;//ptr_F的归位。
while(ptr_F-Next)
{
if(ptr-m_Wageptr_F-Next-m_Wage)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;
break;
}//if
else
{
ptr_F=ptr_F-Next;
}
}//while(ptr_F-Next)
if(ptr_F-Next==NULL)
{
ptr-Next=ptr_F-Next;
ptr_F-Next=ptr;//表示插到有序链表的最后面了。
}
ptr=ptr_N;//归位,准备下一次排序。
}//while(ptr)
cout"从高到低,排序成功!"endl;
return Head;
}
int main()
{
Link Head=0;
Head=Create(Head);
fstream iofile;
iofile.open("d:\\iofile.txt",ios_base::in|ios_base::out|ios_base::app);//文件以三种方式打开。
if(!iofile)
{
cout"打开文件失败!"endl;
return -1;
}
int menu;
while(1)
{
cout"*****************************************************"endl;
cout"*====================菜单选顶=======================*"endl;
cout"*===================================================*"endl;
cout"* 1.注册职工 2.修改信息 3.删除信息 4.信息查询 *"endl;
cout"* 5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"endl;
cout"*****************************************************"endl;
coutendl"请选择相应操作菜单项:";
cinmenu;
while(cin.fail())
{
cout"请选择正确的菜单选项。"endl;
cin.clear();
fflush(stdin);
cinmenu;
}
switch(menu)
{
case 0:
cout"成功退出系统!"endl;
return 0;
case 1:
Head=Add(Head);
break;
case 2:
Head=Modify(Head);
break;
case 3:
Head=Del(Head);
break;
case 4:
Search(Head);
break;
case 5:
Save_ByFile(Head,iofile);
break;
case 6:
Sort(Head);
break;
case 7:
Display_List(Head);
break;
default:
cout"请选择正确的菜单项进行操作。多谢合作!"endl;
}
}
Release(Head);
iofile.close();
return 0;
}