C语言课程设计-工资管理系统 第3页


C语言课程设计-工资管理系统 第3页
   while(bioskey(1)==0);      /*查询是否压下了一个键*/
      key=bioskey(0);            /*返回下一个在键盘压下的键*/
      key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/
      gotoxy(10,i+1);
      textbackground(BLUE);      /*设置背景颜色为蓝色*/
      cprintf("%s",f[i]);        /*输出菜单项*/
      if(key==72) i=i==1?17:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
      if(key==80)i=i==17?1:i+1;  /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
      gotoxy(10,i+1);            /*光标移动i的下一项*/
      textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/
      cprintf("%s",f[i]);        /*输出菜单项*/
      c=i-1;                     /*给代表菜单选项的整数赋值*/
   }
   textbackground(BLACK);        /*设置背景颜色为黑色*/
   window(1,1,80,25);            /*恢复原窗口大小*/
   return c;                     /*返回代表菜单选项的整数值*/
}
/*计算实发工资*/
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();
   }
}
/*按编号查找记录*/
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原来的后继*/
751com.cn
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 insert()
{
   SALARY *p,*info;                   /* info为新结点,p为新结点的后继*/
   char s[11];                        /*保存查找的姓名*/
   float temp;                        /*临时变量*/
   clrscr();                          /*清屏*/
   printf("please enter location  before the no\n"); /*提示输入在哪个结点之前插入*/
   scanf("%s",s);                     /*输入指定结点的编号*/
   printf("\nplease new record\n");   /*提示输入记录*/
   clrscr();                          /*清屏*/
   gotoxy(1,3);                       /*定位光标,按表格形式输入新结点信息*/
   printf("**************gongziguanli************");
   gotoxy(1,5);
   printf("|------------------------------------|");
   gotoxy(1,6);
   printf("|    no    |      name      |  jbgz  | ");
   gotoxy(1,7);
   printf("|----------|----------------|--------|");
   info=(SALARY *)malloc(sizeof(SALARY)); /*申请空间*/
   if(!info)

上一页  [1] [2] [3] [4] [5] [6] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有