求一个用c语言编的奖金系统,条件如下 高手们谢谢了

1个回答

  • /* by QQ 116142142 */

    #include "stdio.h"

    #define STANDHOUR 8 //分界点

    //pre level

    #define PREFESSOR 0 //教授#define TEACHER 1 //讲师#define ASSISTANCE 2

    //teach level

    #define LEVELA 0

    #define LEVELB 1

    #define LEVELC 2

    //max week in one year

    #define MAXWEEK 54 // 366/7=52.4==53 53+1=54

    #define MAXCLASS 10000 //max class in one year

    #define MAXCLASSINFO 3

    //ref reward

    #define STANDREWARD 0

    #define OUTREWARD 1

    //ref classhour

    #define WEEK 0

    #define HOUR 1

    #define SUMSTU 2

    float weekhour[MAXWEEK];

    int classhour[MAXCLASS][MAXCLASSINFO];

    float sumstandhour=0;

    float sumouthour=0;

    int titlelevel=3;

    int teachlevel=3;

    int currentclass=0;

    int currentweek=0;

    float reward=0;

    const char title[][40]={"prefessor","teacher","assistance","null"};

    const char level[5]="abcx";

    const int rewardref[][2]={{10,40},{9,35},{8,30}};

    void init()//初始化{

    int i,j;

    for(i=0;i

    for(i=0;i

    for(j=0;j

    classhour[i][j]=0;

    sumstandhour=0;

    sumouthour=0;

    titlelevel=3;

    teachlevel=3;

    reward=0;

    }

    float getref(int num)//计算系数

    {

    if(num<=60)return 1.0f;

    if(num<=70)return 1.2f;

    if(num<=80)return 1.3f;

    if(num<=90)return 1.4f;

    if(num<=100)return 1.5f;

    if(num<=120)return 1.6f;

    if(num<=140)return 1.7f;

    if(num<=160)return 1.8f;

    if(num<=180)return 1.9f;

    if(num>=181)return 2.0f;

    }

    void test_getref()

    {

    int i;

    printf("enter stu num(int):");

    scanf("%d",&i);

    printf("%f",getref(i));

    }

    void get_title()//读取职称

    {

    printf("0:prefessern1:teachern2:assistancenplease enter title(0-2):");

    scanf("%d",&titlelevel);

    }

    void get_teachlevel()//读取评级

    {

    printf("0:An1:Bn2:Cnplease enter teachlevel(0-2):");

    scanf("%d",&teachlevel);

    }

    void get_weekhour()//读取周课时量及学生数

    {

    float sumhour=0;

    char c;

    int week=0;

    int day=0;

    int clas=0;

    while(1)

    {

    int hour,stu;

    float sum=0;

    printf("The %d week %d class:nPlease enter hour and stu No.(2 56 means 2 hours 56 students):",week,day);

    scanf("%d%d",&hour,&stu);

    sum=hour*getref(stu);

    day+=1;

    sumhour+=sum;

    classhour[clas][WEEK]=week;

    classhour[clas][HOUR]=hour;

    classhour[clas][SUMSTU]=stu;

    clas+=1;

    printf("nEnd week?(y/n):");

    getchar();

    c=getchar();

    //printf("%c",c);

    if(c=='y' || c=='Y')

    {

    weekhour[week]=sumhour;

    week+=1;

    printf("Do you want to enter next week?(y/n):");

    getchar();

    c=getchar();

    //printf("%c",c);

    if(c=='y' || c=='Y')

    {

    sumhour=0;

    day=0;

    }else

    {

    currentclass=clas;

    currentweek=week;

    break;

    }

    }

    }

    }

    void print_weekhour()

    {

    int i,j=0;

    printf("n");

    for(i=0;i

    {

    j+=1;

    printf("week%d %f ",i,weekhour[i]);

    if(j==10){printf("n");j=0;}

    }

    }

    void print_classhour()

    {

    int i,j=0;

    printf("n");

    for(i=0;i

    {

    j++;

    printf("CLASS%d week%d hour%d stu%d ",i,classhour[i][WEEK],classhour[i][HOUR],classhour[i][SUMSTU]);

    if(j==3){printf("n");j=0;}

    }

    }

    void get_info()

    {

    get_title();

    get_teachlevel();

    get_weekhour();

    print_classhour();

    print_weekhour();

    }

    void print_info()

    {

    printf("sums:%f sumo:%f title%s level:%c reward:%fn",sumstandhour,sumouthour,title[titlelevel],level[teachlevel],reward);

    }

    void caculatehour()计算标准课时和加时

    {

    int i;

    for(i=0;i

    {

    if(weekhour[i]>0)

    {

    if(weekhour[i]>STANDHOUR)

    {

    sumstandhour+=STANDHOUR;

    sumouthour+=weekhour[i]-STANDHOUR;

    }

    else

    {

    sumstandhour+=weekhour[i];

    }

    }

    }

    }

    void get_reward()//计算奖金

    {

    if(titlelevel==3 || teachlevel==3 || currentweek==0)

    {

    printf("you need input some info,check out:");

    print_info();

    return;

    }

    caculatehour();

    if(teachlevel==LEVELA || teachlevel==LEVELB)

    {

    reward=sumstandhour*(rewardref[titlelevel][STANDREWARD]+1)+sumouthour*(rewardref[titlelevel][OUTREWARD]+1);

    }

    else if(teachlevel==LEVELC)

    {

    reward=sumstandhour*(rewardref[titlelevel][STANDREWARD]-1)+sumouthour*(rewardref[titlelevel][OUTREWARD]-1);

    }

    }

    void main()

    {

    init();

    get_info();

    get_reward();

    print_info();

    }

    我是按课时输入的,每个周为一个结点,只是简单的读取加计算,没有保存,修改之类的。你可以自己添加。如果要做完整,我只怕三天也不够。英语不好,写的很混乱。现丑了。很久没有摸这东西了。希望对你有点小帮助。