C语言职工工作量统计系统.docx

上传人:b****7 文档编号:9800480 上传时间:2023-02-06 格式:DOCX 页数:18 大小:229.07KB
下载 相关 举报
C语言职工工作量统计系统.docx_第1页
第1页 / 共18页
C语言职工工作量统计系统.docx_第2页
第2页 / 共18页
C语言职工工作量统计系统.docx_第3页
第3页 / 共18页
C语言职工工作量统计系统.docx_第4页
第4页 / 共18页
C语言职工工作量统计系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言职工工作量统计系统.docx

《C语言职工工作量统计系统.docx》由会员分享,可在线阅读,更多相关《C语言职工工作量统计系统.docx(18页珍藏版)》请在冰豆网上搜索。

C语言职工工作量统计系统.docx

C语言职工工作量统计系统

 

《C语言课程设计》报告

题目:

职工工作量统计系统

 

班级:

学号:

__

指导

成绩:

1.课程设计的目的和意义···········································1

2.总体设计思路(功能模块图)······························2

3.详细设计··························································3

4.课程设计总体会··············································15

5.教师评语························································15

一、课程设计目的和意义

通过课程设计的实践环节的教学,可以加深对课堂所学基础知识的掌握与理解,提高所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。

“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。

二、总体设计思路(功能模块图)

三、详细设计

1、模块功能介绍

一.输入职工基本信息

 

 

二.工作量输入并累加

 

三.按工作量从大到小排序并标上名次

四.按职工号删除职工信息

2、程序清单

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

#defineFILENAME"worker.bin"

#defineN20

structworker

{

intnumber;/*工号*/

intcounts;/*数量*/

intgrade;/*等级*/

};

/*******************************************************

定义

*******************************************************/

voidxinxi()

{

printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("+职工工作量统计系统+\n");

printf("++\n");

printf("+1.职工基本信息输入+\n");

printf("++\n");

printf("+2.工作量输入+\n");

printf("++\n");

printf("+3.按工作量排序+\n");

printf("++\n");

printf("+4.按职工工号进行信息删除+\n");

printf("++\n");

printf("+5.结束程序+\n");

printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

}

/*******************************************************

显示菜单

*******************************************************/

intreadFromFile(structworkerw[])

{

FILE*fp=NULL;

inti=0;

fp=fopen(FILENAME,"rb");/*打开文件*/

if(fp!

=NULL)

{

while(!

feof(fp))/*从文件中读入学生*/

{

if(i>=N)

break;

if(fread(w+i,sizeof(worker),1,fp)==1)

i++;

}

fclose(fp);

}

returni;

}

/*******************************************************

信息显示到屏幕

*******************************************************/

intf(structworkerw[],intlength)

{

inti=length;

while(i

{

printf("第%d个职工\n",i);

printf("\n");

printf("请你输入工号(以职工号为0结束):

\n");/*输入工号*/

scanf("%d",&w[i].number);

if(w[i].number==0)

break;

printf("\n");

printf("\n");

printf("请你输入数量:

\n");/*输入数量*/

scanf("%d",&w[i].counts);

printf("\n");

i++;

}

returni;

}

/*******************************************************

功能:

输入职工基本信息

*******************************************************/

voidinput(structworkerw[],intlength)

{

inti=1;

intnumber,counts;

printf("请输入工号:

");

scanf("%d",&number);

while(number!

=0)

{

printf("请输入完成数量:

\n");

scanf("%d",&counts);

for(i=0;i

if(w[i].number==number)

{

w[i].counts+=counts;

break;

}

if(i>=length)

printf("工号不存在:

\n");

printf("请输入工号:

");

scanf("%d",&number);

}

}

/*******************************************************

功能:

工作量输入并累加

*******************************************************/

voidsortCounts(structworkerw[],intlength)

{

inti=0,j=0,k=0;

structworkers;

for(i=0;i

{

k=i;

for(j=i+1;j

if(w[j].counts>w[k].counts)

k=j;

/*交换w[i]andw[k]*/

s=w[k];

w[k]=w[i];

w[i]=s;

}

if(length>0)

w[0].grade=1;

for(i=1;i

if(w[i].counts==w[i-1].counts)

w[i].grade=w[i-1].grade;

else

w[i].grade=w[i-1].grade+1;

 

}

////////////////////////////////////////////////////////////////////////////////

/*按工作量从大到小排序并标上名次*/

////////////////////////////////////////////////////////////////////////////////

voidsortNumber(structworkerw[],intlength)

{

inti=0;

intgrade,count;

if(length>0)

{while(i

{

count=0;

grade=w[i].grade;

printf("名次:

%d",grade);

printf("工作量:

%d",w[i].counts);

printf("%s","工号:

");

while(i

{

if(grade==w[i].grade)

{

printf("%d",w[i].number);

count++;

}

else

break;

i++;

}

printf("人数:

%d\n",count);

}

}

else

printf("职工数据不存在!

\n");

 

}

////////////////////////////////////////////////////////////////////////////////

/*输出名次、同一名次的职工人数与他们的工号,XX*/

////////////////////////////////////////////////////////////////////////////////

intdelet(structworkerw[],intlength,intstuNum)

{

inti,j;

charchoice;

for(i=0;i

{

if(stuNum==w[i].number)

{

printf("%s","欲删除职工号为:

");

printf("%d\n",w[i].number);

break;

}

}

if(i

{

printf("你确实要删除这个职工吗?

(Y/N)");

scanf("%c",&choice);

if(choice=='Y'||choice=='y')

{

for(j=i;j

w[j]=w[j+1];

length--;

printf("删除成功!

\n");

}

}

else

printf("\n指定的职工不存在!

\n");

returnlength;

}

/********************************************************

按职工号删除职工信息

********************************************************/

voidwriteToFile(structworkerw[],intlength)

{

FILE*fp=NULL;

inti=0;

fp=fopen(FILENAME,"wb");

if(fp==NULL)

{

printf("打开文件出错!

\n");

exit(0);

}

for(i=0;i

fwrite(w+i,sizeof(worker),1,fp);

fclose(fp);

}

/********************************************************

结构体数组中的职工信息输出到文件

********************************************************/

voidmain()

{

intchoice;

structworkerw[N];

intNUM;charstuName[100];

intstuNum;

intlength=0;

length=readFromFile(w);//读入

do

{xinxi();

scanf("%d",&choice);

switch(choice)

{case1:

length=f(w,length);

break;

case2:

input(w,length);

break;

case3:

sortCounts(w,length);

sortNumber(w,length);

break;

case4:

printf("请输入欲删除的职工号");

scanf("%d",&stuNum);

length=delet(w,length,stuNum);

break;

case5:

{

writeToFile(w,length);//保存

printf("程序使用以结束\n");

exit(0);

}

default:

{

printf("输入有错误请重新输入:

\n");

}

}

}while

(1);

}

 

3、系统运行结果

显示菜单

 

职工信息输入

 

工作量输入

 

按工作量排序

按工号删除信息

结束程序

四、课程设计总结体会

经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,这段时间里,我又学到了更多C知识,如:

对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。

,这一点会让我终生受益。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以与其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

五、教师评语

评阅教师:

 

评阅日期:

2010年9月

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1