职工工作量统计课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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< p=p->next; }while(p!=NULL); }