请用C语言编写一个:职工工作量统计系统

编写一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。要求程序有序链表存储数据。『答案仅供参考』
要求程序有序链表存储数据

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

/*
编写一个程序,该程序输入职工工号和完成的产品数量,
程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。
程序按完成数量对他们排序,并确定他们的名次。按完成产品数量由多到少的顺序,
输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。

信息:职工编号(nEmployId,nProductNumber)
要求:1.允计同一人多次输入,对产品实行累计
*/
const int nPerson = 10;//车间工人数
char *arr_personId[] = {"001", "002", "003", "004", "005", "006", "007", "008", "009", "010"};
int arr_proNumber[nPerson] = {0};
/*
某个员工的产品数量
*/
void PersonOne(int index)
{
int nProCount, nClear;
scanf("%d", &nProCount);
while(nProCount < 0)
{
printf("您输入的计件数量不符合标准,请输入数字:\n");
while((nClear = getchar()) != '\n' && nClear != EOF);
scanf("%d", &nProCount);
}
arr_proNumber[index] += nProCount;
}
/*
所有员工计量统计
*/
void AllPersonPro()
{
int i =0;
while(i < nPerson)
{
char nPerId[nPerson];
memset(nPerId, '\0', nPerson);
printf("请输入您的编号及完成的产品数量:\n");
scanf("%s", nPerId);
int j = 0, index = 0, flag = 0;
for(j = 0;j < nPerson;++j)
{
if(!strcmp(nPerId, arr_personId[j]))
{
index = j;
++flag;
}
}
j = 0;
while(flag == 0)
{
printf("对不起,您输入的编号不正确,请确认后重新输入:\n");
scanf("%s", nPerId);
while(j < nPerson)
{
if(!strcmp(nPerId, arr_personId[j]))
{
index = j;
++flag;
break;
}
++j;
}

}
if(arr_proNumber[index] == 0)
{
++i;
}
PersonOne(index);
}
}
struct Employ
{
char cEmpNum[nPerson];
int nNumber;
};
/*
员工计件排名
*/
void sort()
{
AllPersonPro();
struct Employ p[nPerson];
int i = 0;
for(i = 0;i < nPerson;++i)
{
strcpy(p[i].cEmpNum, arr_personId[i]);
p[i].nNumber = arr_proNumber[i];
}
//对员工作进行排名
for(i = 0;i < nPerson;++i)
{
for(int j = i; j > 0;--j)
{
//根据计件数排名
if(p[j].nNumber > p[j-1].nNumber)
{
struct Employ temp = p[j];
p[j] = p[j-1];
p[j-1] = temp;
}
//如果计件数相同,根据工号排名
if(p[j].nNumber == p[j-1].nNumber)
{
if(strcmp(p[j].cEmpNum, p[j-1].cEmpNum) < 0)
{
struct Employ temp = p[j-1];
p[j-1] = p[j];
p[j] = temp;
}
}
}
}
for(i = 0;i < nPerson;++i)
{
printf("编号:%s 计件数:%d\n", p[i].cEmpNum, p[i].nNumber);
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-02
这里有一个很有意思的最佳答案:
http://zhidao.baidu.com/question/27182415.html?si=1
第2个回答  2009-05-02
哥们了。编程不是很轻易地东西,要算法、要精心编写,要调试,不给报酬谁干啊?我不干。。。。。本回答被提问者和网友采纳
相似回答