⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gooda.c

📁 小型工资管理系统的课程设计
💻 C
📖 第 1 页 / 共 2 页
字号:
   {
      i=0;       /*记录一页的输出行数*/
      clrscr();   /*清屏*/
      printf("\n\n\n"); /*换行三次*/
      printf("*************************************SALARY***********************************\n");   /*输出大标题*/
      printf("|nO        |      name     |   jbgz  | koukuan |   yfgz  | shuijin |   sfgz  |\n");  /*输出字段标题*/
      printf("|----------|---------------|---------|---------|---------|---------|---------|\n");  /*输出水平线*/
      while(p!=NULL)  /*当p不为空时*/
      {
     printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",
     p->no,p->name,p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);
     p=p->next;  /*指针后移*/
     i++;   /*输出行数加1 */
     if(i%10==0)
        break;  /*如果满10行,跳出内循环*/
      }
      printf("****************************************end***********************************\n");  /*输出本页的结束行*/
      printf("Press any key congtinue...\n");
      getch(); /*输出一页暂停一下,压任意键继续*/
   }  /*返回到外循环,准备下一页的输出*/
}



/*输出指针所指结点信息*/
void print(SALARY *p)
{
   if(p)   /*如果指针不为空,则显示信息*/
   {
      clrscr();  /*清屏*/
      printf("\n\n\n");  /*换行*/
      printf("************************************SALARY************************************\n");  /*输出标题信息*/
      printf("|no        |      name     |   jbgz  | koukuan|   yfgz  | shuijin |   sfgz   |\n"); /*输出字段标题*/
      printf("|----------|---------------|---------|---------|---------|---------|---------|\n"); /*输出分割线*/
      printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n", p->no,p->name,
      p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*输出结点信息*/
      printf("***************************************end***************************** *******\n");  /*输出结束标记*/
   }
}
/*计算实发工资*/
void calc()
{
   int x; /*行坐标*/
   int i=0; /*记录数*/
   float temp; /*临时变量扣款*/
   SALARY *p;  /*移动指针*/
   clrscr();   /*清屏*/
   p=First;  /*从头指针开始*/
   while(p!=NULL)  /*当p不为空时,也就是有记录时,外循环控制换页*/
   {
      x=0;
      clrscr();
      gotoxy(1,3);
      printf("***************************gongziguanli************************************");   /*输出标题*/
      gotoxy(1,5);
      printf("|--------------------------------------------------------------------------|");
      gotoxy(1,6);/*下面输出字段标题*/
      printf("|    no    |      name      |  jbgz  |  koukuan |  yfgz  |shuijin |  sfgz  |");
      while(p!=NULL) /*当p不为空时,也就是有记录时,内循环控制处理9条*/
      {
     gotoxy(1,7+x);
     printf("|----------|----------------|--------|----------|--------|--------|--------|");
     gotoxy(1,8+x);printf("|");
     gotoxy(12,8+x);printf("|");
     gotoxy(29,8+x);printf("|");
     gotoxy(38,8+x);printf("|");
     gotoxy(49,8+x);printf("|");
     gotoxy(58,8+x);printf("|");
     gotoxy(67,8+x);printf("|");
     gotoxy(76,8+x);printf("|");
     gotoxy(2,8+x);
     printf("%-10s",p->no); /*输出编号*/
     gotoxy(13,8+x);
     printf("%-15s",p->name); /*输出姓名*/
     gotoxy(30,8+x);
     printf("%.2f",p->jbgz);  /*输出基本工资*/
     gotoxy(39,8+x);
     scanf("%f",&temp);  /*输入扣款*/
     p->koukuan=temp; /*扣款字段赋值*/
     p->yfgz=p->jbgz-p->koukuan; /*计算应发工资=基本工资-扣款*/
     gotoxy(50,8+x);
     printf("%.2f",p->yfgz);  /*输出应发工资*/
     gotoxy(59,8+x);
     p->shuijin=(p->yfgz-1000)*fax(p->yfgz); /*否则按税率计算税金*/
     printf("%.2f",p->shuijin);  /*输出税金*/
     gotoxy(68,8+x);
     p->sfgz=p->yfgz-p->shuijin;  /*计算实发工资*/
     printf("%-8.2f",p->sfgz);  /*输出实发工资*/
     x+=2;   /*行坐标下移两行*/
     i++;   /*记录数加1*/
     if(i%9==0)break;  /*记录数超过9条,跳出内循环*/
     p=p->next;   /*指针后移,处理下一条*/
      }
      gotoxy(1,7+x);
      printf("|----------|----------------|--------|----------|--------|--------|--------|\n"); /*输出结束行*/
      printf("Press any key congtinue...\n");
      getch();
   }
}
/*根据应发工资,计算税率*/
float fax(float x)
{
   float f1;
   if(x<1000)
      return 0;   /*小于1000,返回0*/
   switch((int)(x/1000))
   {
      case 1:f1=0.05;break; /*1000~1999,返回0.05*/
      case 2:f1=0.1;break; /*2000~2999,返回0.1*/
      case 3:f1=0.15;break; /*3000~3999,返回0.15*/
      case 4:f1=0.2;break; /*4000~4999,返回0.2*/
      default:f1=0.3;break; /*5000以上,返回0.3*/
   }
   return f1;
}


/*按编号查找记录*/
SALARY *find(char *no)
{
   SALARY *p; /*定义移动指针*/
   p=First;  /*从头指针开始*/
   while(p) /*当p不为空时*/
   {
      if(!strcmp(no,p->no))
     return p; /*比较相等,查找成功,返回指针*/
      p=p->next; /*不相等指针后移*/
   }
   printf("not found\n");  /*没有找到*/
   return NULL; /*返回为空指针*/
}
/*删除结点*/
void delete()
{
   SALARY *p; /*定义临时变量,p指向要删除的结点p*/
   char s[11]; /*要删除结点的编号*/
   clrscr();  /*清屏*/
   printf("please deleted no\n"); /*提示输入信息*/
   scanf("%s",s);   /*输入要删除的职工编号*/
   if((p=find(s))!=NULL) /*调用查找函数,如果找到做下面的处理*/
   {
      if(First==p)    /*如果是第一个结点*/
      {
     First=p->next;  /*将头指针指向其后继结点*/
     if(First)    /*如头指针不为空*/
        First->prior=NULL;  /*将头结点的前驱设为空*/
     else
        Last=NULL;   /*否则头为空,尾也为空*/
      }
      else   /*删除的不是第一个结点*/
      {
     p->prior->next=p->next;  /*p的前驱的后继指向p原来的后继*/
     if(p!=Last)   /*如果p不是最后个结点*/
        p->next->prior=p->prior;  /*p后继的前驱指向p原来的前驱*/
     else
        Last=p->prior;/*如p是最后一个结点,修改尾指针为p的前驱*/
      }
      free(p);  /*删除结点后,不要忘记释放空间*/
      printf("\n have deleted %s SALARY\n",s);
      printf("Don't forget save\n");
   }
}
/*按姓名查找结点*/
void search()
{
   SALARY *p;  /*移动指针*/
   char s[15];  /*保存姓名*/
   clrscr(); /*清屏*/
   printf("please enter name for search\n"); /*提示输入*/
   scanf("%s",s);  /*输入要查找人的姓名*/
   p=First;  /*移动指针从头指针开始*/
   while(strcmp(p->name,s)&&p!=NULL) /*做比较判断*/
      p=p->next;   /*没找到,指针后移继续查找*/
   if(p==NULL)  /*指针为空,说明没有找到*/
      printf("\nlist no %s SALARY\n",s); /*显示没找到信息*/
   else
   {
      printf("\n\n"); /*换行*/
      print(p);  /*查找成功,调用输出函数输出指针p所指记录*/
   }
}

/*保存文件*/
void save()
{
   FILE *fp;  /*定义指向文件的指针*/
   SALARY *p; /*定义移动指针*/
   char outfile[10]; /*保存输出文件名*/
   clrscr();/*清屏*/
   printf("Enter outfile name,for example c:\\f1\\te.txt:\n");/*提示输入文件名格式信息*/
   scanf("%s",outfile);
   if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件*/
   {
      printf("can not open file\n");
      return; /*返回*/
   }
   printf("\nSaving file......\n");
   p=First; /*移动指针从头指针开始*/
   while(p!=NULL) /*如p不为空*/
   {
      fwrite(p,sizeof(SALARY),1,fp); /*写入一条记录*/
      p=p->next;  /*指针后移,处理下一条记录*/
   }
   fclose(fp); /*关闭文件*/
   printf("-----save success!!-----\n");/*显示保存成功*/
}

void modify()
{
    SALARY *p;
    char d[11];
    clrscr(); /*清屏*/
    printf("pleae enter the no. of the person you want to modify:");
    scanf("%s",d);
    p=First;
    while(p)
    {
          if(!strcmp(d,p->no))
          {
              printf("pleae enter the no. you want to modify:");
              scanf("%s",p->no);
              printf("pleae enter the name. you want to modify:");
              scanf("%s",p->name);
              printf("pleae enter the salary you want to modify:");
              scanf("%f",&p->jbgz);
              return;
          }
          else
              p=p->next;
     }

     printf("\nno this person.\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -