当前位置:编程学习 > C/C++ >>

菜鸟修炼C语言小设计之——工资统计

 

本设计完成一个工资统计的小设计,涉及的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 <stdio.h> 

#include <stdlib.h> 

 

#define EMP_NUM 10 

 

typedef 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("年龄:"); 

       &n

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,