当前位置:首页 » 编程语言 » c语言按工资排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言按工资排序

发布时间: 2023-05-16 05:47:50

c语言 输入10个职工的职工号 姓名 工资 按照工资从低到到高输出职工的职工号 姓名和工资

排序 j<= 9-i

㈡ 用c语言写一个职工工资管理程序

思路:

使用结构体保存职工信息,设计单独的函数,实现录入,按职工工资排序,分解单双数职工,读取和写入文件,显示数据等功能。

1 - 从键盘录入信息到数组结构并保存至弯坦文件,录入+写入文件。

2 - 从磁盘文件中读出这些数据,依次打印出来, 读取文件+显示数据。

3 -对职工数据按工资高低排序,将排好序的各记录存放在文件worker2.dat中, 排序+写入文件。

4 -将职工号为单数和偶数的职工信息分别存放另两个磁盘文件worker3.dat和worker4.dat中,分解单双数职工+写入文件。

5 -并从这两个文件中读出职工信息在显示器拆闹世上显示出来, 读取文件+显示数据。


代码片段如下:

intmain(intargc,char*argv[])
{
workerarr[WORKER_NUMBER];
intcnt=WORKER_NUMBER;
workerodd[WORKER_NUMBER];
intoddnum=0;
workereven[WORKER_NUMBER];
intevennum=0;

clear_worker_array(arr,cnt);
clear_worker_array(odd,cnt);
clear_worker_array(even,cnt);

//1.录入并保存至worker1.dat
entering_data(arr,cnt);
if(save_file(arr,cnt,filename[0])==0)
{
printf("原始记录已成功保存至文件-%s ",filename[0]);
}

//2.读取worker1.dat并显示
clear_worker_array(arr,cnt);
if(load_file(arr,&cnt,filename[0])==0)
{
printf("载入文件-%s ",filename[0]);
}
show_data(arr,cnt);

//3.排序并保存至worker2.dat
sort_by_salary(arr,cnt);
if(save_file(arr,cnt,filename[1])==0)
{
printf("按工资排序后的记录已成功保存至文件-%s ",filename[1]);
}

//4.保存单数和双数职工号信息至worker3.dat和worker4.dat
filter_workers(arr,cnt,odd,&oddnum,even,&evennum);
if(save_file(odd,oddnum,filename[2])==0)
{
printf("职工号为单数的记录已成功保存至文件-%s ",filename[2]);
}
if(save_file(even,evennum,filename[3])==0)
{
printf("职工号为双数的记录已成功保存至文件-%s ",filename[3]);
}

//5.读取worker3.dat和worker4.dat并显示
clear_worker_array(odd,oddnum);
oddnum=0;
if(load_file(odd,&oddnum,filename[2])==0)
{
printf("载入文件-%s ",filename[2]);
}
show_data(odd,oddnum);

clear_worker_array(even,oddnum);
evennum=0;
if(load_file(even,&evennum,filename[3])==0)
旅肢{
printf("载入文件-%s ",filename[3]);
}
show_data(even,evennum);

return0;
}

为了测试方便,此处的宏只指定了5个职工的信息,若要达到你要求的,直接改成10即可。运行结果如下:

㈢ 用C语言做员工工资排序

#include<stdio.h>

#include<string.h>

typedef struct _student{

char name[20];

char sex[20];

double salary;

}Student;

int main(){

int i,j;

Student student[5];

for(i=0;i<5;i++){

scanf("%s %s %lf",student[i].name,student[i].sex,&student[i].salary);

}

for(i=0;i<5;i++){

for(j=i;j<5;j++){

if(student[i].salary > student[j].salary){

Student temp = student[i];

student[i]=student[j];

student[j]=temp;

}

}

}

for(i=0;i<5;i++){

printf("%s %s %.2f\n",student[i].name,student[i].sex,student[i].salary);

}

return 0;

}

㈣ C语言工资排序

#include<中则stdio.h>卖咐棚
struct worker
{
char name[20];
double a,b,c,sum;
};
int main()
{
int i,n,j;
scanf("%d",&n);
struct worker x[100],temp;
for(i=1;i<=n;i++)
{
scanf("%s%lf%lf%lf",&x[i-1].name,&x[i-1].a,&x[i-1].b,&x[i-1].c);
x[i-1].sum=x[i-1].a+x[i-1].b+x[i-1].c;
}
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
if(x[i].sum<简晌x[j].sum)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
for(i=0;i<n;i++)
printf("%s %.2f\n",x[i].name,x[i].sum);
return 0;
}

㈤ 工资管理系统c语言(急求)

灰姑娘漫画家共产党你共患难共同点豪门惊梦奖惩分明jhgmj

㈥ 用C语言编程某单位进行工资调整,要求按技术等级分为A,B,C, D四个档次进行调整

从题意,程序需要先输入工资信息,再根据技术等级对应系数调整工资,以后打印工资信息。

单位工资信息一般包含员工编号,姓名,工资等,适合用结构类型存储

技术等级ABCD对应一个调整系数,这是一组有关联的常量,适合用枚举。

下面是代码,工资我用的是整型,计算系数是整除,需要浮点数,自行修改类型。员工人数修改常量PN,我测试用3个员工。

#include<stdio.h>

#define PN 3//员工数量

enum tLevel{ A = 110, B= 120, C = 130, D = 140};//技术级别ABCD对应调整系数%

typedef struct personnel

{

int id;//员工编号,唯一

char pName[20];//员工姓名

int basePay;//基础工资

enum tLevel tll;

}PERL;

void init(PERL *perl);

void show(PERL *perl);

int main()

{

PERL perl[PN];

init(perl);

show(perl);

return 0;

}

void show(PERL *perl)

{

int i;

printf(" 员工工资表: ");

for(i=0;i<PN;i++)

{

printf("员工编号%d: ",perl[i].id);

printf("员工姓名%s: ",perl[i].pName);

printf("基本工资%d: ",perl[i].basePay);

printf("等级系数%d: ",perl[i].tll);

printf("结算工资%d: ",perl[i].basePay*perl[i].tll/100);

}

}

void init(PERL *perl)

{

static int id=1;//自增,作为唯一的员id

int i;

char lv[2]={0};

printf("输入%d个员工信息! ",PN);

for(i=0;i<PN;i++,id++)

{

printf("请输入员工局友姓名:"),scanf("%s",perl[i].pName);

printf("请输入基础工资:"),scanf("%d",&perl[i].basePay);

while(lv[0]<'A'族余 || lv[0]>'D')

printf("请输入员技术等级(A~D):"),scanf("%s",lv);

switch(lv[0])

{

case 'A':perl[i].tll=A;break;

case 'B':perl[i].tll=B;break;

case 'C':perl[i].tll=C;break;

case 'D':perl[i].tll=D;break;

兆腊滚 }

lv[0]=0;

perl[i].id=id;

printf(" ");

}

}

㈦ c语言程序设计、工资管理系统

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
int num;
char name[10];
char cheng;
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_cheng();
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=0;i<m;i++)
{
printf("请输入职工号: ");
scanf("%d",&em[i].num); //这里的代码错,要用数组下标
printf("\n");
printf("请输入姓名: ");
scanf("%s",em[i].name);//这里的代码错,要用数组下标
getchar();
printf("请输入职称: ");
scanf("%c",&em[i].cheng);//这里的代码错,要用数组下标
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=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
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=0;i<m;i++) /*m为输入部分的职工人数*/
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].cheng,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=0;flag&&i<m;i++)
{
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].cheng,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=i;j<m-1;j++)
{
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_cheng();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=0;i<m;i++)
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].cheng,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_cheng()
{
char cheng;
int i,t=0;
int m=load();
system("cls");
printf("请输入要查找的职称:\n");
scanf("%c",&cheng); //这里要用地址
for(i=0;i<m;i++)
if(em[i].cheng==cheng)
{
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].cheng,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 cheng;
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=0;flag&&i<m;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%d\t%d\t%d\t%d\n",em[i].num,em[i].name,em[i].cheng,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) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的
信息赋值给第i-1个人*/
{
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",&cheng);
em[i-1].cheng=cheng;
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");

}

㈧ 用C语言编写一个程序,内容为职工工资管理系统的设计与实现

就这样吧,工资排序就是比较数的大小,这个会吧?既然只有3个人,就这么简单。如果要查询,就要先保存,写保存函数,再写读取函数,我就不写了。最后建议这种用链表比较好。
#include<stdio.h>
#include<stdlib.h>
void main()
{
char num[3];
char name[3][9];
char type[3][9];
float money[3];
float sum = 0;
int i;
float average;
printf("请输入职工的信息,\n:");
for(i = 0;i<3;i++)
{
num[i] = i+1;
printf("请输入第%d个信息name:\n",i+1);
scanf("%s",name[i]);
printf("请输入第%d个信息type:\n",i+1);
scanf("%s",type[i]);
printf("请输入第%d个信息money:\n",i+1);
scanf("%f",&money[i]);

}
for(i = 0;i<3;i++)
{
printf("%d %s %s %f",num[i],name[i],type[i],money[i]);
printf("\n");
}
for(i = 0;i<3;i++)
{
sum+=money[i];
}
average = sum/3;
printf("平均工资是:%f\n",average);
getch();
}

㈨ 请大家帮我写一个C语言的程序设计,

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

#defineAStaff
typedefstructA{
charsno[16];
charname[16];
charsex[6];
intage;
charecation[16];
doublesalary;
charaddress[32];
charphone[16];
}St;

intinput(Sta[],intn){
inti=0;
for(i=0;i<n;i++){
scanf("%s%s%s%d%s%lf%s%s ",a[i].sno,a[i].name,a[i].sex,&a[i].age,a[i].ecation,&a[i].salary,a[i].address,a[i].phone);
}
returni;
}
voidshow_one(Sta[],inti){
printf("%16s%16s%6s%3d%16s%lf%32s%16s ",a[i].sno,a[i].name,a[i].sex,a[i].age,a[i].ecation,a[i].salary,a[i].address,a[i].phone);
}

voidshow(Sta[],intn){
inti;
for(i=0;i<n;i++)
show_one(a,i);
}
intlookup_sno(Sta[],intn,charsno[])//查找,通过职工号
{
inti=0;
while(strcmp(a[i].sno,sno)!=0&&i<n){
i++;
}
if(i==n){
printf("没有该员工 ");
return-1;
}
else{
show_one(a,i);
returni;
}
}
intlookup_ecation(Sta[],intn,charecation[])//查找,通过学历
{
inti=0;

while(i<n){
if(strcmp(a[i].ecation,ecation)==0){
show_one(a,i);
}
}

}
intdel(Sta[],intn,charsno[]){//删除,通过职工号
inti;
printf("请输入职工号: ",sno);
i=lookup_sno(a,n,sno);
if(i!=-1){
intj;
for(j=i+1;j<空正n;j++){
a[j-1]=a[j];
判亏衡}
掘做returnn-1;
}
else{
return-1;
}
}

intmain(){
Sta[1024];
intn;
printf("请输入员工总数: ");
scanf("%d",&n);
n=input(a,n);
show(a,n);
charsno[16];
scanf("%s",sno);
inti=lookup_sno(a,n,sno);
n=del(a,n,sno);
getchar();
getchar();
return0;

}


给你提供个示例,如果有什么问题,一块讨论~~~

㈩ 哪位大神能帮我用c语言写个程序,是职工工资管理系统的,要求如下:


分数太低了。这个不好做啊。

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>
#define N 2
typedef struct Workers
{
int id;
char name[9];
char sex;
int age;
int sal;
struct Workers *next;
} worker;
worker *head;
int odd=0,even=0;
void initList()
{
head=(worker *)malloc(sizeof(worker));
head->next=NULL;
}
void getMsg()
{
int i;
worker *newD,*p=head;
while(p->next)
{
p=p->next;
}
for(i=0;i<N;i++)
{
newD=(worker *)malloc(sizeof(worker));
newD->next=NULL;
printf("please enter date id name sex age salary ");
scanf("%d %s %c %d %d",&newD->id,newD->name,&newD->sex,&newD->age,&newD->sal);
p->next=newD;
p=p->next;
}
}
void saveData()
{
FILE *fpwd,*fpwo;
worker *p=head;
FILE *fp=fopen("output.txt","wb+");
fpwd=fopen("worker3.txt","wb+");
fpwo=fopen("worker4.txt","wb+");
odd=even=0;
while(p->next)
{
p=p->next;
fwrite(p,sizeof(worker),1,fp);
if(p->id%2==0){
洞败even++;
fwrite(p,sizeof(worker),1,fpwo);}
else{
并颤谨even++;
fwrite(p,sizeof(worker),1,fpwd);}
}
fclose(fp);
fclose(fpwd);
fclose(fpwo);
}
void readData()
{
FILE *fp;int i;
worker *p,*newD;
p=head;
fp=fopen("output.txt","rb+");

while(p->next)
{
p=p->next;
}
for(i=0;i<N;i++)
{
newD=(worker *)malloc(sizeof(worker));
newD->next=NULL;
fread(newD,sizeof(worker),1,fp);
p->next=newD;
p=p->next;
}
fclose(fp);
}
void showodd()
{
FILE *fp;int i;
fp=fopen("worker3.txt","rb+");
printf("以下为奇数 ");
while(!feof(fp))
{
worker date;
fread(&date,sizeof(worker),1,fp);
printf("%d %s %c %d %d ",date.id,date.name,date.sex,date.age,date.sal);
}
fclose(fp);
}
void showeven()
{
FILE *fp;int i;
fp=fopen("worker4.txt","rb+");
printf("以下为偶数 ");
while(!feof(fp))
{
worker date;
fread(&date,sizeof(worker),1,fp);
printf("%d %s %c %d %d ",date.id,date.name,date.sex,date.age,date.sal);
}
fclose(fp);
}
void main()
{
while(1){
worker *p;
char ch;
initList();
p=head;
printf(" please select 1,2,others ");
ch=getch();
绝基if(ch==Ƈ')
{
getMsg();
saveData();
}
else if(ch==ƈ')
{
readData();
while(p->next)
{
p=p->next;
printf("%d %s %c %d %d ",p->id,p->name,p->sex,p->age,p->sal);
}
}
else
{

printf("are u need to show odd and even ");
ch=getch();
if(ch==Ƈ')
{
showodd();
showeven();
}


}


}
}