日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 菜鸟修炼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 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");elseprintf("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<EMP_NUM; i++){if(company[i])if((company[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);elseprintf("從%d到%d年齡段的員工薪水平均值為%ld\n", low_age, high_age, (sum/j));elseprintf("沒有該年齡段的員工!\n"); return ;}if(sel == '2'){for(i=0; i<EMP_NUM; i++){if(company[i]){sum += company[i]->salary;j++;}}if(sum != 0)if(which == TOTAL)printf("所有員工薪水總和為%ld\n", sum);elseprintf("所有員工薪水平均值為%ld\n", sum/j);elseprintf("沒有員工信息!\n");return;}} }void display_msg(PEMP company[]) {int i;for(i=0; i<EMP_NUM; i++){if(company[i])printf("ID:%d 姓名:%s 年齡:%d 薪水:%d\n", i, company[i]->name,\company[i]->age, company[i]->salary );}}


轉載于:https://www.cnblogs.com/key000/archive/2011/11/02/4084763.html

總結

以上是生活随笔為你收集整理的菜鸟修炼C语言小设计之——工资统计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。