前言
基于c&c++课程设计-职工工作量统计系统(附源码+可执行程序)
非常完整的一个项目,可以作为课程设计去学习。
本系统的完整源码在文章结尾处,大家自行获取即可。
项目简介
职工工作量统计系统2.0 有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);
}
源码获取方法:
需要完整源码的朋友,希望你能点赞+收藏+评论,然后私信我即可~