基于c&c++课程设计-职工工作量统计系统(附源码+可执行程序)


前言

基于c&c++课程设计-职工工作量统计系统(附源码+可执行程序)

非常完整的一个项目,可以作为课程设计去学习。

本系统的完整源码在文章结尾处,大家自行获取即可。
在这里插入图片描述

项目简介

职工工作量统计系统2.0 有8个子菜单。

  1. 职工基本信息输入
  2. 输出信息
  3. 工作量输入
  4. 按工作量排序 打印出职工名次
  5. 按职工工号查询
  6. 按职工姓名查询
  7. 按职工工号进行信息删除
  8. 程序结束

涉及知识点

文件读写、内存管理、结构体定义、基本数据结构、高级格式化输入输出。
在这里插入图片描述

源码获取方法:

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~

从文件读信息到结构体数组中

在这里插入图片描述

代码如下:

int readFromFile(struct worker w[])
 {
	FILE *fp=NULL;
	int i=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);
	}
    return i;
}

信息显示到屏幕

代码如下(示例):

 int f(struct worker w[],int length)
{
	
	 int i=length;
	 while(i<N)
	 {
		  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("%s",w[i].name);
		  printf("\n");
		  printf("请你输入性别以m为男f为女:\n");/*输入性别*/
		  scanf("%s",&w[i].sex);
		  printf("\n");
		  printf("请你输入学历:\n");/*输入学历*/
		  printf("1为大专2为本科3为其他\n");
		  scanf("%d",&w[i].cult);
		  printf("\n");
          printf("请你输入年龄:\n");/*输入年龄*/
		  scanf("%d",&w[i].age);
		  printf("\n"); 
          printf("请你输入工资:\n");/*输入工资*/
		  scanf("%d",&w[i].income);
		  printf("\n"); 
		  printf("请你输入住址:\n");/*输入地址*/
		  scanf("%s",w[i].address);
		  printf("\n"); 
          printf("请你输入电话:\n");/*输入电话*/
		  scanf("%d",&w[i].phone);
		  printf("\n"); 
          printf("请你输入数量:\n");/*输入数量*/
		  scanf("%d",&w[i].counts);
		  printf("\n"); 
		  i++;
	 }
	
 	 return i;
	 }

工作量输入并累加

void sortCounts(struct worker w[],int length)
{
	int i=0,j=0,k=0;
	struct worker s;
	for(i=0;i<length;i++)
	{      
		k=i;
		for(j=i+1;j<length;j++)
			if(w[j].counts>w[k].counts)
				k=j;
        /*  交换 w[i] and w[k] */
        s = w[k];
        w[k] =w[i];
        w[i] = s;
    }
	if(length>0)
		w[0].grade =1;
	for(i=1;i<length;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;  
 

}

按职工号删除职工信息

void writeToFile(struct worker w[],int length)
{
	FILE *fp=NULL;
	int i=0;

	fp=fopen(FILENAME,"wb");

	if(fp==NULL)
	{
		printf("打开文件出错!\n");
		exit(0);
	}

	for(i=0;i<length;i++)
		fwrite(w+i,sizeof(worker),1,fp);

	fclose(fp);

}

源码获取方法:

源码下载点击此处

需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~

  • 26
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯烟火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值