职工工作量统计课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《职工工作量统计系统》程序设计基础课程设计报告

2008年6月28日

目录

1.课程设计目的 ......................... 错误!未定义书签。

2.课程设计题目描述和要求................ 错误!未定义书签。

2.1课程题目......................... 错误!未定义书签。

2.2课程要求......................... 错误!未定义书签。

3.课程设计报告内容..................... 错误!未定义书签。

3.1目标程序........................ 错误!未定义书签。

3.2运行结果 (8)

4. 课程设计总结 (8)

5.参考书目 (9)

6.程序流程图 (9)

1:课程设计目的

开拓思维,检查和巩固所学的知识,为以后的学习和编程打下基础。

2.课程设计题目描述和要求

2.1课程题目

职工工作量统计系统

2.2课程要求

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

3.课程设计报告内容

3.1目标程序

#include

#include

#include //输出设置头文件

using namespace std;

const int n=20; //定义有20明工人的数组

struct Work //结构体

{

int degree;

int work;

int num;

Work *next;

};

Work a[20]; //有20名工人,可以根据具体情况改动

void display(Work a[20]) //处理函数

{

void output(Work b[20]);

int i,j,work,degree,num,p,q,total=0;

Work b[20],*next;

for(i=0;i

b[i].num=a[i].num;

b[i].work=a[i].work;

b[i].degree=a[i].degree;

b[i].next=a[i].next;

}

for(i=0;i

for(j=0;j

{

if(b[j].work

{

work=b[j].work;

num=b[j].num;

degree=b[j].degree;

next=b[j].next;

b[j].work=b[j+1].work;

b[j].num=b[j+1].num;

b[j].degree=b[j+1].degree;

b[j].next=b[j+1].next;

b[j+1].work=work;

b[j+1].num=num;

b[j+1].degree=degree;

b[j+1].next=next;

}

}

for(i=0;i

if(b[i+1].work!=b[i].work)b[i+1].degree=b[i].degree+1;

else b[i+1].degree=b[i].degree;

output(b); //输出b

for(i=1;i<=b[n-1].degree;i++) //输出b同一名次的人数及其工作量,最后算出总工作量{

p=0;

for(j=0;j

cout<<"工作量排第"<

}

void input(Work a[20]) //输入函数

{

int n,w;

for(;;) //无限空循环,可以多次输入{

cout<<"请依次输入工人工号及其工作量,并以回车结尾:"<<'\n';

do

{

cin>>n>>w;

if(n>20||n<=0) //n值的要求

{

cout<<"输入有误!重新输入:"<<'\n'; //错误处理

input(a); //若输入出错,则进行递归调用

}

a[n-1].work+=w; //工作量累积

}while((getchar())!='\n'); //当回车时跳出

break;

}

}

void output(Work b[20]) //输出函数:用链表输出{

int i;

Work *p,*head;

for(i=0;i

head=&b[0]; //下面部分为题目中要求的链表结构if(i

else b[i].next=NULL;

}

p=head;

cout<<"工号"<

do //用链表进行输出{

cout<num<work<degree<<'\n';

p=p->next;

}while(p!=NULL);

}

相关文档
最新文档