用C语言设计职工工资管理系统
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<iomanip.h>
using namespace std
#define OK 1
#define ERROR 0
typedef struct LNode{
char num[20]
char name[20]
double basic
double reward
double total
struct LNode *next
}LNode,*LinkListint initlist(LinkList &L)
{ L=(LinkList)malloc(sizeof(LNode))
L->next=NULL
return OK
} int DisplayInfo(LinkList L)
{
LinkList p=L->next
if(!p)
{
cout<<"当前无记录!"<<endl
return ERROR
}
cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endlwhile(p!=NULL)
{
cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl
p=p->next
}
cout<<'\n'<<'\n'
return OK
} int InputInfo(LinkList &L)
{
LinkList pp=(LinkList)malloc(sizeof(LNode))
cout<<"请输入职工工资信息:(格式如:2001001 james 1980 600 )"<<endl
cin>>p->num
cin>>p->name
cin>>p->basic
cin>>p->reward
p->total=p->basic+p->reward
p->next=L->next
L->next=preturn OK
}int DeleteByCode(LinkList &L,char key[])
{
LinkList p=L,q
while(p->next!=NULL)
{
if(strcmp(p->next->num,key)==0)
{
q=p->next
p->next=q->next
free(q)
return OK
}
p=p->next
}
return ERROR} int Search(LinkList L,int tag)
{
LinkList p=L->next
if(tag==1)
{
char num[20]
cout<<"请输入要查找职工编号号:"<<endl
cin>>num
while(p)
{
if(strcmp(p->num,num)==0)
{
cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl
cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl
cout<<'\n'
return OK
}
p=p->next
}
}
else if(tag==2)
{
char name[20]
cout<<"请输入要查找的姓名:"<<endl
cin>>name
while(p)
{
if(strcmp(p->name,name)==0)
{
cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl
cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl
cout<<'\n'
return OK
}
p=p->next
}
}
else
cout<<"输入错误!"<<endl
return ERROR}
int Sort(LinkList &L)
{
LinkList p
LinkList q,min,w=L
for(p=L->nextp->nextp=p->next)
{
min=p
for(q=p->nextqq=q->next)if(min->total>q->total)
min=q if(min!=p)
{strcpy(w->num,p->num)
strcpy(w->name,p->name)
w->basic=p->basic
w->reward=p->reward
w->total=p->total
strcpy(p->num,min->num)
strcpy(p->name,min->name)
p->basic=min->basic
p->reward=min->reward
p->total=min->total
strcpy(min->num,w->num)
strcpy(min->name,w->name)
min->basic=w->basic
min->reward=w->reward
min->total=w->total }
}
return OK
}
int change(LinkList &L)
{
LinkList p=L->next
char q[20]
cout<<"请输入要修改的职工编号号:"<<endl
cin>>q
while(p)
{
if(strcmp(p->num,q)==0)
{
cout<<"编号"<<setw(12)<<"姓名"<<setw(12)<<"基本工资"<<setw(9)<<"奖金"<<setw(12)<<"工资总额"<<endl
cout<<p->num<<setw(9)<<p->name<<setw(8)<<p->basic<<setw(12)<<p->reward<<setw(12)<<p->total<<endl
cout<<"请重新输入该职工的工资信息:"<<endl
cin>>p->basic
cin>>p->reward
cout<<'\n'
return OK
}
p=p->next
}
}
int Menu(LinkList &S)
{
int sign=1
while(sign)
{
int i
cout<<"请选择要进行的操作:1:插入 2:删除 3:输出 4:查找 5:排序 6:修改 0:退出"<<endl
cin>>i
if(i==1)
{ if(InputInfo(S))
cout<<"操作成功!"<<endl
cout<<'\n'
}
else if(i==2)
{
char num[20]
cout<<"请输入要删除的职工编号:"<<endl
cin>>num if(DeleteByCode(S,num))
cout<<"操作成功!"<<endl else
{
cout<<"此编号不存在!"<<endl
cout<<'\n'
}
}
else if(i==3)
DisplayInfo(S)
else if(i==4)
{
int tag
cout<<"1:按编号查找 2:按姓名查找 "<<endl
cin>>tag
if(!Search(S,tag))
cout<<"未找到!"<<endl
cout<<'\n' }
else if(i==5)
{
if(Sort(S))
cout<<"操作成功!"<<endl
cout<<'\n'
}
else if(i==6)
{
if(change(S))
cout<<"修改成功!"<<endl
} else if(i==0)
sign=0
else
cout<<"输入有误,请重新输入!"<<endl
cout<<'\n'
}
return OK
}
int main()
{
LinkList S
initlist(S)
Menu(S)
return OK} 已经调试无bug 有问题的话联系我。
属于。
1、计算机网络技术专业主要学习组网技术与网络管理、网络操作系统、网络数据库、网页制作、计算机网络与应用、网络通信技术、网络应用软件、JAVA编程基础方面的知识
2、而工资管理系统设计毕业运用到了JAVA编程基础、网络数据库、网页制作方面的知识,所以属于计算机网络技术专业。
1.1 功能要求
1.1.1 功能概况
本次设计要求运用面向对象设计知识,利用 JAVA 语言设计实现一个“小型公司工资管理系统”。
1.1.2 存储功能
能够存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。 其中,雇员级别分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。由此要求,该项目需要利用数据库的关系表存储数据。
1.1.3 添加功能
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。需要利用 Java 语言连接数据库,使用数据库添加语句。
1.1.4 查询功能
可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。利用 Java Swing 控件进行展示。
1.1.5 编辑功能
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
1.1.6 删除功能
主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录, 则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。
1.1.7 统计功能
能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。利用数据库语句完成统计。
1.1.8 界面功能
利用 java 的 GUI 功能设计系统的图形用户界面,要求界面美观,易用。
#include "stdio.h"
void AddRecord()
{
FILE *fp = NULL
yuangong TmpS
char DataFile[40] = ""
int count = 1
printf("\n please input the file name which you will add recored to.")
printf("\n Notice:Name of file can't exceed 8 characters.suffix can't exceed 3 characters,part of exceed will be discarded.\n")
gets(DataFile)
while(*DataFile == ('\0'))
{
printf("\n please input new file name to store data,end with enter.")
printf("\n Notice:Name of file can't exceed 8 characters,suffix can't exceed 3 characters.part of exceed will be discarded.\n")
gets(DataFile)
}
fp = fopen(DataFile,"a+")
if (fp == NULL)
{
printf("\n Open file %s fail!End with any key.\n",DataFile)
perror("Open file fail")
getch()
exit(1)
}
printf("input number,name and salary.number is 0 means input is end.\n")
printf("Number is not exceed 9 figures,Name is not exceed 20 characters,range of grade:0.00~1000.00\n")
while(count <= SIZE)
{
printf("\n input 'number =0' means end input.\n")
printf("number=")
scanf("%ld",&TmpS.Number)
if (TmpS.Number == 0 )
break
printf("name=")
scanf("%s",TmpS.Name)
printf("gongzi=")
scanf("%f",&TmpS.gongzi)
printf("jiangjin=")
scanf("%f",&TmpS.jiangjin)
printf("baoxian=")
scanf("%f",&TmpS.baoxian)
printf("shuijin=")
scanf("%f",&TmpS.shuijin)
TmpS.heji=TmpS.gongzi+TmpS.jiangjin-TmpS.baoxian-TmpS.shuijin
printf("\n")
if(fwrite(&TmpS,sizeof(yuangong),1,fp)!=1)
{
printf("\nwrite file %s fail!End with any key\n",DataFile)
perror("Write file fail ")
getch()
exit(1)
}
count++
}
if (count>SIZE)
printf("\nsorry,number of data can not exceed%d\n",SIZE)
fclose(fp)
printf("The data you input is store successful %s in file.\n",DataFile)
printf("Content as follow:\n")
fp=fopen(DataFile,"rb")
if (fp == NULL)
{
printf("\nOpen file%sfail!End with any key \n",DataFile)
perror("Open file fail")
getch()
exit(1)
}
printf("\nNumber\t\tName\tgongzi\tjiangjin\tbaoxian\tshuijin\theji\n")
while(fread(&TmpS,sizeof(yuangong),1,fp) != (int)NULL)
{
printf("\n%ld\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",TmpS.Number,TmpS.Name,TmpS.gongzi,TmpS.jiangjin,TmpS.baoxian,TmpS.shuijin,TmpS.heji)
}
fclose(fp)
}
#define NUM 100
void input()
void search()
void search_num()
void dele()
void dele_name()
void dele_num()
void modi()
void modi_num()
void output()
void stat()
void fun()
void run()
struct emploee
{
char no[5]
char name[8]
char sex[3]
int age
int salar
}emp[NUM],newemp
main()
{int x
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("0. 退出系统\n")
printf("\n")
printf("*** 欢迎使用职工工资管理系统 ***\n")
printf("请选择(0-8):\n")
scanf("%d",&x)
switch(x)
{
case 1: input()break
case 2: search()break
case 3: modi()break
case 4: dele()break
case 5: output()break
case 6: stat()break
case 7: run()break
case 8: fun()break
default:printf("\n Wrong!")
}
if(x==0)break
}
}
void input()
{
FILE *fp
int n,i
if ((fp=fopen("emp","wb"))==NULL)
{
printf("不能建立emp文件\n")
exit(1)
}
printf("输入职工人数:")
scanf("%d",&n)
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n")
for(i=0i<ni++)
{
printf("第%d个职工:",i+1)
scanf("%s%s%s%d%d",emp[i].no,emp[i].name,emp[i].sex,
&emp[i].age,&emp[i].salar)
}
for(i=0i<ni++)
fwrite(&emp[i],sizeof(struct emploee),1,fp)
fclose(fp)
}
void stat( )
{
FILE *fp
int n,num
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n")
exit(1)
}
printf("工资数:")
scanf("%d",&num)
printf("记录号 职工号 姓名 性别 年龄 工资\n")
for(n=0fread(&emp,sizeof(struct emploee),1,fp)n++)
if(emp[n].salar>=num)
printf("%6d%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar)
fclose(fp)
}
void dele()
{
int x
while(1)
{
printf("\n\n\t\t删除子菜单\n")
printf("\t\t*********\n")
printf("\t\t 1.按职工号删除记录\n")
printf("\t\t 0.返回主菜单\n")
printf("\t\t*********\n")
printf("\t 请选择(0-1):")
scanf("%d",&x)
switch(x)
{case 1:dele_num()break
default:printf("\nWrong!")
}
if(x==0)break
}
}
void dele_num()
{
FILE *fp
int i,j,n
char num[5]
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n")
exit(1)
}
printf("删除前:\n")
printf("记录号 职工号姓名 性别 年龄 工资\n")
for(n=0fread(&emp[n],sizeof(struct emploee),1,fp)n++)
printf("%6s%6s%9s%4s%5d%6d\n",n+1,emp[n].no,emp[n].name,emp[n].sex,
emp[n].age,emp[n].salar)
printf("要删除的职工号:")
scanf("%s",num)
for(i=0(strcmp(emp[i].no,num)!=0&&i<n)i++)
if(i>=n)
{
printf("\t没有%s职工号的职工\n",num)
exit(2)
}
fclose(fp)
fp=fopen("emp","w+")
if(n==1)
{
fclose(fp)
exit(3)
}
for(j=0j<ij++)
fwrite(&emp[j],sizeof(struct emploee),1,fp)
for(j=i+1j<nj++)
fwrite(&emp[j],sizeof(struct emploee),1,fp)
printf("删除后:\n")
fseek(fp,0,SEEK_SET)
printf("记录号 职工号 姓名 性别 年龄 工资\n")
for(i=0fread(&emp[i],sizeof(struct emploee),1,fp)i++)
printf("%6s%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar)
fclose(fp)
}
void modi()
{
int x
while(1)
{
printf("\n\n\t\t修改子菜单\n")
printf("\t\t*********************\n")
printf("\t\t1. 按职工号修改\n")
printf("\t\t0. 返回主菜单\n")
printf("\t\t*********************\n")
printf("\t请选择(0-1):")
scanf("%d",&x)
switch(x)
{
case 1:modi_num()break
default:printf("\n输错误!")
}
if(x==0)break
}
}
void modi_num()
{
FILE *fp
int i,j
char num[5]
if((fp=fopen("emp","rb+"))==NULL)
{
printf("不能 打开emp文件\n")
exit(1)
}
printf("要修改的职工号:")
scanf("%s",num)
for(i=0fread(&emp[i],sizeof(struct emploee),1,fp)i++)
if(!strcmp(emp[i].no,num))break
if(feof(fp))
{
printf("\t没有%s职工号的职工\n",num)
exit(2)
}
printf("记录号 职工号 姓名 性别 年龄 工资\n")
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar)
printf("输入格式:职工号 姓名 性别 年龄 工资<Enter>\n")
printf("第%d个记录:",i+1)
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar)
fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR)
fwrite(&newemp,sizeof(struct emploee),1,fp)
printf(" 修改后:\n")
fseek(fp,0,SEEK_SET)
printf("记录号 职工号 姓名 性别 年龄 工资\n")
for(i=0fread(&emp[i],sizeof(struct emploee),1,fp)!=0i++)
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar)
fclose(fp)
}
void search( )
{
int x
while(1)
{
printf("\n\n\t\t查子菜单\n")
printf("\t\t********************\n")
printf("\t\t 1.按职工号查询\n")
printf("\t\t 0.返回主菜单\n")
printf("\t\t********************\n")
printf("\t请选择(0-1):")
scanf("%d",&x)
switch(x)
{
case 1:search_num()break
default :printf("\n Wrong!")
}
if(x==0) break
}
}
void search_num()
{
FILE *fp
int i
char num
if((fp=fopen("emp","rb"))==NULL)
{
printf("不能打开emp文件\n")
exit(1)
}
printf("要查询的职工号:")
scanf("%s",num)
for(i=0fread(&emp[i],sizeof(struct emploee),1,fp)i++)
if(!strcmp(emp[i].no,num)) break
if(feof(fp))
{
printf("\t查无此人\n")
exit(2)
}
printf("记录号 职工号 姓名 性别 年龄 工资\n")
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar)
fclose(fp)
}
void output()
{int i
FILE *fp
if((fp=fopen("emp","r"))==NULL)
{printf("不能打开emp文件\n")
exit(0)
}
printf("记录号 职工号 姓名 性别 年龄 工资\n")
for(i=0fread(&emp[i],sizeof(struct emploee),1,fp)!=0i++)
{
printf("%6d%6s%9s%4s%5d%6d\n",i+1,emp[i].no,emp[i].name,emp[i].sex,
emp[i].age,emp[i].salar)
}
fclose(fp)
}
void run()
{
FILE *fp
int n,i,j
if((fp=fopen("emp","ab+"))==NULL)
{printf("不能打开emp文件\n")
exit(0)
}
printf("要追加的职工人数:")
scanf("%d",&n)
for(i=0i<ni++)
{ printf("输入格式:职工号 姓名 性别 年龄 工资<enter>\n")
printf("职工记录:")
scanf("%s%s%s%d%d",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.salar)
fwrite(&newemp,sizeof(struct emploee),1,fp)
}
fclose(fp)
}
void fun()
{printf("\t\t******************************************\n")
printf("\t\t* *\n")
printf("\t\t* *\n")
printf("\t\t* 谢 谢 使 用 ! *\n")
printf("\t\t* *\n")
printf("\t\t* *\n")
printf("\t\t******************************************\n")
}
(在市场经济的大环境下,越来越多的人士逐渐认识到用计算机技术进行各类管理,交流的便捷,其中最突出的要算企事业单位的人事工资管理了,为了提高人事工资管理效率,减轻劳动强度,提高信息处理速度和准确性,在对其组成结构和系统功能进行了全面地分析,提出了人事工资管理系统的实现和解决方案,该方案利用计算机支持高效率地完成人事工资管理的日常事务,是适应现代企事业单位制度要求、推动企事业单位人事工资管理走向科学化、规范化的必要条件。)
设计的思路:
应该以Visual
Basic6.0为开发语言和ACCESS2000为数据库以及其他第三方控件等软件作为设计工具,以工资为对象,开发的一个能够满足企事业单位的工资管理的要求的“人事工资管理系统”。
要求本系统具有完成单位人员工资管理的全过程,包括用户管理,员工管理,维护不同职务,职称,其他工资的工资标准以及浏览与结算和查询等。
关键词:工资管理系统
VB
ACCESS
#include "iostream"
#include "string"
#include "list"
#include "cassert"
using namespace std
struct employee{
string m_num//编号
string m_name//姓名
string m_dep//部门
double m_salary//应付工资
double m_insurance//保险
double m_tax//税金
}list<employee>empsint _tmain(int argc, _TCHAR* argv[])
{
void print(const employee &e)
void input()
void del()
void mod()
void show_all()
void show_name()
void show_dep()cout<<"简易职工薪水管理程序 by 做他\n"// delete this line
cout<<"版权没有 请随意复制或修改任何代码\n"//delete this linecout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :"
int choose=0
cin>>choose
assert(!cin.fail())
while (choose!=6)
{
if (choose==1) input()
if (choose==2) del()
if (choose==3) mod()
if (choose==4)
{
int choice=0
cout<<"请选择操作 1.按姓名查询 2.按部门查询 3.退出:"
cin>>choice
if (choice==1) show_name()
if (choice==2) show_dep()
if (choice==3)
{
cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :"
cin>>choose
assert(!cin.fail())
continue
}
}
if (choose==5) show_all()
cout<<"请选择操作:1.录入 2.删除 3.修改 4.查询 5.显示所有员工 6.退出 :"
cin>>choose
assert(!cin.fail())
}
return 0
}void print(const employee &e)
{
cout<<"编号:"<<e.m_num<<endl
cout<<"姓名:"<<e.m_name<<endl
cout<<"部门:"<<e.m_dep<<endl
cout<<"保险:"<<e.m_insurance<<endl
cout<<"税金:"<<e.m_tax<<endl
cout<<"应付工资:"<<e.m_salary<<endl
cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_tax<<endl
}void input()
{
string num,name,dep
double salary,ins,tax
cout<<"请输入员工编号:"
cin>>num
cout<<"请输入员工姓名:"
cin>>name
cout<<"请输入员工部门:"
cin>>dep
cout<<"请输入员工保险:"
cin>>ins
assert(!cin.fail())
cout<<"请输入员工税金:"
cin>>tax
assert(!cin.fail())
cout<<"请输入员工应付工资:"
cin>>salary
assert(!cin.fail())
employee temp
temp.m_dep=dep
temp.m_insurance=ins
temp.m_name=name
temp.m_num=num
temp.m_salary=salary
temp.m_tax=tax
emps.push_back(temp)
cout<<"员工录入操作完毕.\n"
}void del()
{
if (emps.size()==0)
{
cout<<"没有员工记录.\n"
return
}
string name
bool isfind=false
cout<<"请输入要删除的员工姓名:"
cin>>name
list<employee>::iterator iter
for (iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_name==name)
{
isfind=true
emps.erase(iter)
cout<<"姓名为\""<<name<<"\"的员工记录已删除.\n"
return
}
}
if (!isfind)
{
cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"
return
}
}void mod()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n"
return
}
bool isfind=false
string name
cout<<"请输入要修改的员工姓名:"
cin>>name
list<employee>::iterator iter
for (iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_name==name)
{
isfind=true
cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n"
break
}
}
if (isfind)
{
string num,name,dep
double tax,ins,salary
print(*iter)
cout<<endl
cout<<"请输入新的员工编号:"
cin>>num
cout<<"请输入新的员工姓名:"
cin>>name
cout<<"请输入新的员工部门:"
cin>>dep
cout<<"请输入新的员工保险:"
cin>>ins
assert(!cin.fail())
cout<<"请输入新的员工税金:"
cin>>tax
assert(!cin.fail())
cout<<"请输入新的员工工资:"
cin>>salary
assert(!cin.fail())
iter->m_dep=dep
iter->m_insurance=ins
iter->m_name=name
iter->m_num=num
iter->m_salary=salary
iter->m_tax=tax
cout<<"1 员工记录被成功修改.\n"
}
else
{
cout<<"没有找到姓名为\""<<name<<"\"的员工记录.\n"
}
}void show_all()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n"
return
}
cout<<"显示全体员工数据:\n"
cout<<"--------------------\n"
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()iter++)
{
cout<<endl
print(*iter)
cout<<endl
}
cout<<"--------------------\n"
}void show_name()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n"
return
}
bool isfind=false
string name
cout<<"请输入要查询的员工姓名:"
cin>>name
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_name==name)
{
isfind=true
cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n"
print(*iter)
break
}
}
if (!isfind)
{
cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"
return
}
}void show_dep()
{
if (emps.size()==0)
{
cout<<"员工记录为空.\n"
return
}
double isfind=0.00
double total_salary=0.00
string dep
cout<<"请输入要查询的部门名称:"
cin>>dep
cout<<"部门["<<dep<<"]的员工信息:\n"
cout<<"--------------------\n\n"
list<employee>::iterator iter
for(iter=emps.begin()iter!=emps.end()iter++)
{
if (iter->m_dep==dep)
{
isfind++
total_salary+=iter->m_salary
print(*iter)
cout<<endl
continue
}
}
cout<<"--------------------\n"
if (isfind==0)
{
cout<<"没有找到名称为["<<dep<<"]的部门.\n"
}
else
{
cout<<"部门["<<dep<<"]工资统计:\n"
cout<<"工资总额:"<<total_salary<<endl
cout<<"平均工资:"<<total_salary/isfind<<endl
}
}
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num
char name[10]
char zhicheng
int jiben
int jiangjin
int baoxian
int zafei
int shiji
}em[100]
void menu()
void input()
void save(int)
void display()
void del()
void search()
void search_zhicheng()
void search_name()
void modify()
void menu()
{
printf("\n")
printf(" 网计091 第7小组\n")
printf("\n")
printf("******************职工信息管理****************\n")
printf(" 1.录入职工信息")
printf(" 2.浏览职工信息\n")
printf(" 3.查询职工信息")
printf(" 4.删除职工信息\n")
printf(" 5.修改职工信息\n")
printf(" 6.退出\n")
printf("********************谢谢使用******************\n")
printf("\n")
printf("\n")
}
void main()
{
int n,flag
char a
while(1)
{
do
{
menu()
printf("请选择你需要操作的步骤(1--6):\n")
scanf("%d",&n)
if(n>=1&&n<=6)
{
flag=1
break
}
else
{
flag=0
printf("您输入有误,请重新选择!")
}
}while(flag==0)
switch(n)
{
case 1:printf(" 输入职工信息\n")printf("\n")input()break
case 2:printf(" 浏览职工信息\n")printf("\n")system("cls")display()break
case 3:printf(" 按职工号查询职工信息\n")printf("\n")system("cls")search()break
case 4:printf(" 删除职工信息\n")printf("\n")system("cls")del()break
case 5:printf(" 修改职工信息\n")printf("\n")system("cls")modify()break
case 6:goto la
default :break
}
}
la:
system("cls")
printf("\n\n\n\n\n谢谢使用!\n")
}
void input()
{
int i,m
printf("请输入需要创建信息的职工人数(1--100):\n")
scanf("%d",&m)
for (i=0i<mi++)
{
printf("请输入职工号: ")
scanf("%d",&em[i].num) //这里的代码错,要用数组下标
printf("\n")
printf("请输入姓名: ")
scanf("%s",em[i].name)//这里的代码错,要用数组下标
getchar()
printf("请输入职称: ")
scanf("%c",&em[i].zhicheng)//这里的代码错,要用数组下标
printf("请输入基本工资: ")
scanf("%d",&em[i].jiben)//这里的代码错,要用数组下标
printf("请输入奖金: ")
scanf("%d",&em[i].jiangjin)//这里的代码错,要用数组下标
printf("请输入保险: ")
scanf("%d",&em[i].baoxian)//这里的代码错,要用数组下标
printf("请输入杂费: ")
scanf("%d",&em[i].zafei)//这里的代码错,要用数组下标
em[i].shiji=em[i].jiben + em[i].jiangjin - em[i].baoxian - em[i].zafei//这里的代码错,要用数组下标
printf("\n")
}
printf("\n创建完毕!\n")system("cls")
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=0i<mi++)
if (fwrite(&em,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,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=0i<mi++)
printf("\n %d\t %s\t %c\t %d\t %d\t %d\t %d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)//这里的代码错,要用数组下标
printf("按任意键继续\n")
getchar()getchar()system("cls")
}
void del()
{
int m=load()
int i,j,n,t,flag
char name1[10]
printf("\n 原来的职工信息:\n")
display()
printf("\n")
printf("请输入要删除的职工的姓名:\n")
scanf("%s",name1)
for(flag=1,i=0flag&&i<mi++)
{
if(strcmp(em[i].name,name1)==0)
{
printf("\n已找到此人,原始记录为:\n")
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n")
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
printf("\n确实要删除此人信息请按1,不删除请按0\n")
scanf("%d",&n)
if(n==1)
{
for(j=ij<m-1j++)
{
em[j]=em[j+1]
}
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
}system("cls")
}
void search()
{
int t,flag
do
{
printf("\n按姓名查询请按1 按职称查询请按2 进入主函数按3\n")
scanf("%d",&t)
if(t>=1&&t<=3)
{
flag=1
break
}
else
{
flag=0
printf("您输入有误,请重新选择!")
}
}while(flag==0)system("cls")
while(flag==1)
{
switch(t)
{
case 1:printf("按姓名查询\n")search_name()break
case 2:printf("按职称查询\n")search_zhicheng()break
case 3:main()break
default:break
}
system("cls")
}
}
void search_name()
{
char name1[10]
int i,t
int m=load()
printf("请输入要查找的姓名:\n")
scanf("%s",name1)
for(i=0i<mi++)
if(strcmp(name1,em[i].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%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
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_zhicheng()
{
char zhicheng
int i,t=0
int m=load()
system("cls")
printf("请输入要查找的职称:\n")
scanf("%c",&zhicheng) //这里要用地址
for(i=0i<mi++)
if(em[i].zhicheng==zhicheng)
{
printf("\n已找到,其记录为:\n")
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n")
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
}
if(i==m)
printf("\n对不起,查无此人\n")
printf("\n")
printf("返回查询函数请按1,继续查询学历请按2\n")
scanf("%d",&t)
switch(t)
{
case 1:system("cls")search()break
case 2:break
default :break
}
}
void modify()
{
int num
char name[10]
char zhicheng
int jiben
int jiangjin
int baoxian
int zafei
int shiji
int b,c,i,n,t,flag
int m=load()
printf("\n 原来的职工信息:\n")
display()
printf("\n")
printf("请输入要修改的职工的姓名:\n")
scanf("%s",name)
for(flag=1,i=0flag&&i<mi++)
{
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%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
printf("\n确实要修改此人信息请按1 不修改请按0\n")
scanf("%d",&n)
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.职称 4.基本工资 5.奖金 6.保险 7.杂费 8.实际工资\n")
printf("请输入你想修改的那一项序号:\n")
scanf("%d",&c)
if(c>8||c<1)
printf("\n选择错误,请重新选择!\n")
}
flag=0
}
}
if(flag==1)
printf("\n对不起,查无此人!\n")
do
{
switch(c)
{
case 1:printf("职工号改为: ")
scanf("%d",&num)
em[i-1].num=num
break
case 2:printf("姓名改为: ")
scanf("%s",name)
strcpy(em[i-1].name,name)
break
case 3:printf("职称改为: ")
getchar()
scanf("%c",&zhicheng)
em[i-1].zhicheng=zhicheng
break
case 4:printf("基本工资改为: ")
scanf("%d",&jiben)
em[i-1].jiben=jiben
break
case 5:printf("奖金改为: ")
scanf("%d",&jiangjin)//这里要用地址
em[i-1].jiangjin=jiangjin
break
case 6:printf("保险改为: ")
scanf("%d",&baoxian)//这里要用地址
break
case 7:printf("杂费改为: ")
scanf("%d",&zafei)//这里要用地址
em[i-1].zafei=zafei
break
case 8:printf("实际工资改为: ")
scanf("%d",&shiji)
em[i-1].shiji=shiji
break
}
printf("\n")
printf("\n是否确定所修改的信息?\n 是 请按1 不,重新修改 请按2: \n")
scanf("%d",&b)
}
while(b==2)
printf("\n浏览修改后的所有职工信息:\n")
printf("\n")
save(m)
display()
printf("\n继续修改请按1,不再修改请按0\n")
scanf("%d",&t)
switch(t)
{
case 1:modify()break
case 0:break
default :break
}system("cls")
}
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num
char name[10]
char zhicheng
int jiben
int jiangjin
int baoxian
int zafei
int shiji
}em[100]
void menu()
void input()
void save(int)
void display()
void del()
void search()
void search_zhicheng()
void search_name()
void modify()
void menu()
{
printf("\n")
printf(" 网计091 第7小组\n")
printf("\n")
printf("******************职工信息管理****************\n")
printf(" 1.录入职工信息")
printf(" 2.浏览职工信息\n")
printf(" 3.查询职工信息")
printf(" 4.删除职工信息\n")
printf(" 5.修改职工信息\n")
printf(" 6.退出\n")
printf("********************谢谢使用******************\n")
printf("\n")
printf("\n")
}
void main()
{
int n,flag
char a
while(1)
{
do
{
menu()
printf("请选择你需要操作的步骤(1--6):\n")
scanf("%d",&n)
if(n>=1&&n<=6)
{
flag=1
break
}
else
{
flag=0
printf("您输入有误,请重新选择!")
}
}while(flag==0)
switch(n)
{
case 1:printf(" 输入职工信息\n")printf("\n")input()break
case 2:printf(" 浏览职工信息\n")printf("\n")system("cls")display()break
case 3:printf(" 按职工号查询职工信息\n")printf("\n")system("cls")search()break
case 4:printf(" 删除职工信息\n")printf("\n")system("cls")del()break
case 5:printf(" 修改职工信息\n")printf("\n")system("cls")modify()break
case 6:goto la
default :break
}
}
la:
system("cls")
printf("\n\n\n\n\n谢谢使用!\n")
}
void input()
{
int i,m
printf("请输入需要创建信息的职工人数(1--100):\n")
scanf("%d",&m)
for (i=0i<mi++)
{
printf("请输入职工号: ")
scanf("%d",&em[i].num) //这里的代码错,要用数组下标
printf("\n")
printf("请输入姓名: ")
scanf("%s",em[i].name)//这里的代码错,要用数组下标
getchar()
printf("请输入职称: ")
scanf("%c",&em[i].zhicheng)//这里的代码错,要用数组下标
printf("请输入基本工资: ")
scanf("%d",&em[i].jiben)//这里的代码错,要用数组下标
printf("请输入奖金: ")
scanf("%d",&em[i].jiangjin)//这里的代码错,要用数组下标
printf("请输入保险: ")
scanf("%d",&em[i].baoxian)//这里的代码错,要用数组下标
printf("请输入杂费: ")
scanf("%d",&em[i].zafei)//这里的代码错,要用数组下标
em[i].shiji=em[i].jiben + em[i].jiangjin - em[i].baoxian - em[i].zafei//这里的代码错,要用数组下标
printf("\n")
}
printf("\n创建完毕!\n")system("cls")
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=0i<mi++)
if (fwrite(&em,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,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=0i<mi++)
printf("\n %d\t %s\t %c\t %d\t %d\t %d\t %d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)//这里的代码错,要用数组下标
printf("按任意键继续\n")
getchar()getchar()system("cls")
}
void del()
{
int m=load()
int i,j,n,t,flag
char name1[10]
printf("\n 原来的职工信息:\n")
display()
printf("\n")
printf("请输入要删除的职工的姓名:\n")
scanf("%s",name1)
for(flag=1,i=0flag&&i<mi++)
{
if(strcmp(em[i].name,name1)==0)
{
printf("\n已找到此人,原始记录为:\n")
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n")
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
printf("\n确实要删除此人信息请按1,不删除请按0\n")
scanf("%d",&n)
if(n==1)
{
for(j=ij<m-1j++)
{
em[j]=em[j+1]
}
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
}system("cls")
}
void search()
{
int t,flag
do
{
printf("\n按姓名查询请按1 按职称查询请按2 进入主函数按3\n")
scanf("%d",&t)
if(t>=1&&t<=3)
{
flag=1
break
}
else
{
flag=0
printf("您输入有误,请重新选择!")
}
}while(flag==0)system("cls")
while(flag==1)
{
switch(t)
{
case 1:printf("按姓名查询\n")search_name()break
case 2:printf("按职称查询\n")search_zhicheng()break
case 3:main()break
default:break
}
system("cls")
}
}
void search_name()
{
char name1[10]
int i,t
int m=load()
printf("请输入要查找的姓名:\n")
scanf("%s",name1)
for(i=0i<mi++)
if(strcmp(name1,em[i].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%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
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_zhicheng()
{
char zhicheng
int i,t=0
int m=load()
system("cls")
printf("请输入要查找的职称:\n")
scanf("%c",&zhicheng) //这里要用地址
for(i=0i<mi++)
if(em[i].zhicheng==zhicheng)
{
printf("\n已找到,其记录为:\n")
printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t保险\t杂费\t实际工资 \n")
printf("\n%d\t%s\t%c\t%d\t%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
}
if(i==m)
printf("\n对不起,查无此人\n")
printf("\n")
printf("返回查询函数请按1,继续查询学历请按2\n")
scanf("%d",&t)
switch(t)
{
case 1:system("cls")search()break
case 2:break
default :break
}
}
void modify()
{
int num
char name[10]
char zhicheng
int jiben
int jiangjin
int baoxian
int zafei
int shiji
int b,c,i,n,t,flag
int m=load()
printf("\n 原来的职工信息:\n")
display()
printf("\n")
printf("请输入要修改的职工的姓名:\n")
scanf("%s",name)
for(flag=1,i=0flag&&i<mi++)
{
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%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].zhicheng,em[i].jiben,em[i].jiangjin,em[i].baoxian,em[i].zafei,em[i].shiji)
printf("\n确实要修改此人信息请按1 不修改请按0\n")
scanf("%d",&n)
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.职称 4.基本工资 5.奖金 6.保险 7.杂费 8.实际工资\n")
printf("请输入你想修改的那一项序号:\n")
scanf("%d",&c)
if(c>8||c<1)
printf("\n选择错误,请重新选择!\n")
}
flag=0
}
}
if(flag==1)
printf("\n对不起,查无此人!\n")
do
{
switch(c)
{
case 1:printf("职工号改为: ")
scanf("%d",&num)
em[i-1].num=num
break
case 2:printf("姓名改为: ")
scanf("%s",name)
strcpy(em[i-1].name,name)
break
case 3:printf("职称改为: ")
getchar()
scanf("%c",&zhicheng)
em[i-1].zhicheng=zhicheng
break
case 4:printf("基本工资改为: ")
scanf("%d",&jiben)
em[i-1].jiben=jiben
break
case 5:printf("奖金改为: ")
scanf("%d",&jiangjin)//这里要用地址
em[i-1].jiangjin=jiangjin
break
case 6:printf("保险改为: ")
scanf("%d",&baoxian)//这里要用地址
break
case 7:printf("杂费改为: ")
scanf("%d",&zafei)//这里要用地址
em[i-1].zafei=zafei
break
case 8:printf("实际工资改为: ")
scanf("%d",&shiji)
em[i-1].shiji=shiji
break
}
printf("\n")
printf("\n是否确定所修改的信息?\n 是 请按1 不,重新修改 请按2: \n")
scanf("%d",&b)
}
while(b==2)
printf("\n浏览修改后的所有职工信息:\n")
printf("\n")
save(m)
display()
printf("\n继续修改请按1,不再修改请按0\n")
scanf("%d",&t)
switch(t)
{
case 1:modify()break
case 0:break
default :break
}system("cls")
}
工资结构最近很多朋友问我如何科学地设置工资结构。完善的工资结构应包括固定工资基本工资、职级工资、工龄工资、津贴流动工资奖金、扣除额、奖金等福利工资租房补贴、交通补贴、通信补贴、伙食费、节日补贴等社会保障、扣除、加班等薪酬管理的原则工资设计,要遵循大基本原则补偿性原则、公平原则、透明度原则、激励性原则、竞争原则、经济性原则、合法性原则。
补偿原则工资要保证员工收入能充分补偿劳动力再生产费用,这不仅是对员工工作恢复的补偿。还必须包括必要的衣服、食物、住宿、行费,以及为了补偿职员而获得工作所需的知识、技能和生理发育以前支付的费用。公平原则根据行为科学理论,人们总是用自己付给组织的代价,从组织那里得到的报酬来与他人相称。如果他得到包括物质补偿、津贴、奖金、福利等精神上的社会杂志在内的报酬。
位置、受人尊敬的程度等他自己付出的代价是他花费的体力、精神力量、过去的学习和成长而付出的。与支出的费用和产量相比,如果低于其他人的相应比例,可能会发生一系列消极行为,如利息怠工、辞职和攻击其他等,工资分配要全面考虑员工的业绩、能力、劳动强度、责任等因素,并考虑外部竞争力,内部一致性要求。透明度原则奖励方案必须公开,让员工了解自己获得的所有利益,了解其利益和贡献、能力、选票
目前的连接是为了充分发挥物质利益的激励作用。激励原则有效的薪酬管理应该能刺激员工努力工作,做出更多贡献,有助于吸引、维持和激励员工。工资薪酬管理系统的重点是建立这样的系统。竞争原则一个组织的工资,缺乏吸引力,只会留下只想维持自己的职位和报酬的普通职员周边、素质高、能力强的优秀员工很难维持。经济原则补偿是产品成本的一部分,补偿标准设计得太高,有竞争性和激励作用,但不能。