博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
菜鸟修炼C语言小设计之——工资统计
阅读量:5953 次
发布时间:2019-06-19

本文共 3963 字,大约阅读时间需要 13 分钟。

本设计完成一个工资统计的小设计,涉及的C语言重点知识有:

1,结构体

2,结构体指针数组

3,枚举类型

1.1 设计题目

本课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资。

1.2 设计要求

设计要求实现如下功能:

(1)使用结构指针数组设计一个公司职员的数据结构,使用下述的结构定义:

typedef structemployee{

int age;

char *name;

doublesalary;

}*PEMP;

(2)在主函数里构造一个指针数组company,用来存放职工信息。

(3)设计一个update函数,用来给company赋值。

函数update(company,id, age, name, salary)的四个参数为:

company: 结构指针数组

id: company的下标

age: 年龄,整数类型

salary: 薪水,实数

(4)设计一个readin函数,直接采用调用update函数的方式进行赋值。例如:update(company, 2, 30, “LI MING”, 3000.0);

(5)编写total函数对工资求和。

这个函数应该能对全体职工和某一年龄段的职工的工资求和。

(6)编写mean函数求平均工资。

这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。

2.设计代码

#include 
#include
#define EMP_NUM 10typedef struct employee { int age; char name[20]; unsigned salary;}*PEMP; typedef enum sel_analy{ TOTAL, AVERAGE}sel_c; void update_msg(PEMP company[]);void display_msg(PEMP company[]);void salary_analysis(PEMP company[], sel_c which);int main(int argc, char *argv[]){ int i = 0; PEMP company[EMP_NUM]; char select; sel_c which; memset(company, NULL, sizeof(company)); do { printf(" <-----工资统计系统------->\n"); printf("1:更新职工信息 2:工资求和\n"); printf("3:工资求平均值 4:显示职工信息\n"); printf("0:退出\n"); select = getch(); switch(select){ case '1': update_msg(company); break; case '2': salary_analysis(company, TOTAL); break; case '3': salary_analysis(company, AVERAGE); break; case '4': display_msg(company); break; default: break; }; }while(select != '0'); return 0;}void update_msg(PEMP company[]){ int sel = 0; int id; while(1){ PEMP new_emp = (PEMP)malloc(sizeof(*new_emp)); printf("请输入员工信息,当需要退出输入时设ID为-1:\n"); printf("ID:"); scanf("%d", &id); while((id<-1) || (id>EMP_NUM-1)){ printf("输入信息错误,输入的ID范围应为0到%d之间的数:\n", EMP_NUM-1); printf("ID:"); scanf("%d", &id); } if(id == -1){ free(new_emp); return; } printf("姓名:"); scanf("%s", new_emp->name); printf("年龄:"); scanf("%d", &new_emp->age); while((new_emp->age<0) || (new_emp->age>60)){ printf("输入信息错误,输入的年龄范围应为0到60之间的数:\n"); printf("年龄:"); scanf("%d", &new_emp->age); } printf("薪水:"); scanf("%d", &new_emp->salary); while((new_emp->age<0) || (new_emp->age>20000)){ printf("输入信息错误,输入的薪水范围应为0到20000之间的数:\n"); printf("薪水:"); scanf("%d", &new_emp->salary); } company[id] = new_emp; }}void salary_analysis(PEMP company[], sel_c which){ char sel=0; int age1, age2; int low_age, high_age, i, j=0; unsigned long sum = 0; while(1){ if(which == TOTAL) printf("1:计算某一年龄段员工的薪水总和 2:计算全部员工薪水总和\n"); else printf("1:计算某一年龄段员工的薪水平均值 2:计算全部员工薪水平均值\n"); printf("0:返回上一层\n"); sel = getch(); if((sel != '0') && (sel != '1') && (sel != '2')){ printf("输入错误,请重新输入:\n"); continue; } if(sel == '0') return; if(sel == '1'){ printf("开始年龄:"); scanf("%d", &age1); while(age1<0 || age1>60){ printf("输入错误,请重新输入\n"); printf("开始年龄:"); scanf("%d", &age1); } printf("结束年龄:"); scanf("%d", &age2); while(age2<0 || age2>60){ printf("输入错误,请重新输入\n"); printf("结束年龄:"); scanf("%d", &age2); } if(age1>age2){ low_age = age2; high_age = age1; } else{ low_age = age1; high_age = age2; } for(i=0; i
age>=low_age) && (high_age>=company[i]->age)){ sum += company[i]->salary; j++; } } if(sum != 0) if(which == TOTAL) printf("从%d到%d年龄段的员工薪水总和为%ld\n", low_age, high_age, sum); else printf("从%d到%d年龄段的员工薪水平均值为%ld\n", low_age, high_age, (sum/j)); else printf("没有该年龄段的员工!\n"); return ; } if(sel == '2'){ for(i=0; i
salary; j++; } } if(sum != 0) if(which == TOTAL) printf("所有员工薪水总和为%ld\n", sum); else printf("所有员工薪水平均值为%ld\n", sum/j); else printf("没有员工信息!\n"); return; } }}void display_msg(PEMP company[]){ int i; for(i=0; i
name,\ company[i]->age, company[i]->salary ); } }

转载于:https://www.cnblogs.com/key000/archive/2011/11/02/4084763.html

你可能感兴趣的文章
iOS 单元测试(Unit Test 和 UI Test)
查看>>
[linux小技巧]
查看>>
文件下载_中文乱码:"Content-disposition","attachment; filename=中文名
查看>>
HBase 笔记3
查看>>
2017.11.23 display fun --STM8
查看>>
深入学习jQuery选择器系列第八篇——过滤选择器之伪子元素选择器
查看>>
一个关于log4j的悲伤的故事
查看>>
PCA
查看>>
ajax上传文件
查看>>
java中通过绝对路径将图片存入数据库
查看>>
简要记录浮点型数据的二进制存储格式
查看>>
ConcurrentHashMap(Java8)源码分析
查看>>
Python文件处理之文件指针(四)
查看>>
Numpy用法详解
查看>>
DataGridView在vb.net中的操作技巧
查看>>
PMP考试冲刺进行中。。。
查看>>
大换血的代价
查看>>
Learn in FCC(3)
查看>>
RunLoop--
查看>>
chrome 2行换行省略号 ... text-ellipse
查看>>