毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

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

更新时间:2008-12-18:  来源:毕业论文

C语言课程设计
 {
      printf("\nout of memory");      /*如没有得到空间,内存溢出*/
      exit(0);                        /*退出程序*/
   }
   info->next=NULL;                   /*新结点的后继为空*/
   info->prior=NULL;                  /*新结点的前驱为空*/
   gotoxy(1,8);printf("|");
   gotoxy(12,8);printf("|");
   gotoxy(29,8);printf("|");
   gotoxy(38,8);printf("|");
   gotoxy(2,8);
   inputs(info->no,10);               /*输入新结点的编号,并校验*/
   gotoxy(13,8);
   inputs(info->name,14);             /*输入新结点的姓名,并校验*/
   gotoxy(30,8);
   scanf("%f",&temp);                 /*输入基本工资*/
   info->jbgz=temp;                   /*给基本工资字段赋值*/
   info->koukuan=0;                   /*扣款初始为0*/
   info->yfgz=0;                      /*应发工资初始为0*/
   info->shuijin=0;                   /*税金初始为0*/
   info->sfgz=0;                      /*实发工资初始为0*/
   printf("|----------|----------------|--------|");
   p=First;                           /*移动指针从头指针开始*/
   while(strcmp(p->no,s)&&p!=NULL)    /*查找结点确定插入位置*/
      p=p->next;                      /*指针后移,继续查找*/
   if(p==NULL)                        /*如p为空*/
      if(p==First)                    /*如p为头指针,说明链表为空*/
      {
         First=info;                  /*新结点为头指针*/
         First->prior=NULL;           /*头结点的前驱为空*/
         Last=First;                  /*唯一结点,尾指针等于头指针*/
      }
      else                            /*新结点插在尾部*/
      {
         Last->next=info;
         info->prior=Last;
         Last=info;                   /*尾指针指向新结点*/
      }
   else
      if(p==First)                    /*p不为空,但p为头指针,新结点插在第一个结点位置*/
      {
         info->prior=NULL;            /*新结点的前驱为空*/
         info->next=p;                /*新结点的后继为p*/
         p->prior=info;               /*p的前驱是新结点*/
         First=info;                  /*修改头指针指向新结点*/
      }
      else                            /*新结点插入在中间某一个位置p之前*/
      {
         info->next=p;                /*新结点的后继是p*/
         info->prior= p->prior;       /*新结点的前驱是p的前驱*/
         p->prior->next=info;         /*p的前驱的后继是新结点*/
         p->prior=info;               /*p的前驱是新结点*/
      }
   printf("\n\n\n ----have inserted %s SALARY----\n",info->name);
   printf("\n---Don't forget save---\n"); /*提醒调用保存文件存盘*/
}
/*保存文件*/
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 sort()
{
   SALARY *p0,*p00,*p1,*p11,*p2;      /*定义临时指针*/
   int i=1;                           /*统计当前排第几个结点*/
   clrscr();                          /*清屏*/
   printf("\n\n start sort....\n");   /*开始排序*/
   p1=p11=p2=First;
   while(p1!=NULL)                    /*当p1不为空时*/
   {
      p0=p1;                          /*待比较结点从p1开始*/
      p2=p1;                          /*p2从当前待排序位置开始*/
      while(p2->next!=NULL) /*p2的后继不为空时*/
      {
         if(p0->sfgz>p2->next->sfgz)  /*找当前最小结点*/
         {
            p00=p2;                   /*找到当前最小结点记录其前驱指针*/
            p0=p2->next;              /*记录当前最小值结点的指针p0*/
         }
         p2=p2->next;                 /*指针后移*/
      }
      Last=p0;                        /*当前最小结点为尾结点*/
      if(p1!=p0)                      /*判断最小结点是否是当前排序位置,不是则作指针修改*/
      {
         p00->next=p0->next;          /*将p00的后继指向p0的后继*/
         p0->next->prior=p00;         /*p0的后继的前驱为p00*/
         p0->next=p1;                 /*p0的后继指向下个排序位置p1*/
         p1->prior=p0;                /*p1的前驱为p0*/
         if(i==1)
         {
            First=p0;                 /*作头指针*/
            First->prior=NULL;        /*头指针的前驱为空*/
         }
         else                         /*不是第一个结点*/
         {
            p11->next=p0;             /*p11的后继指向p0*/
            p0->prior=p11;            /*p0的前驱指向p11*/
         }
         p11=p1=p0;                   /*因p0是排好序的最后一个结点,p1是下一个将要排序的位置,所以将p0赋值给p1和p11*/
      }
      i++;                            /*排好序的结点数加1*/
      p1=p1->next;                    /*p1后移指向下一个待排序位置*/
   }
   printf("sort sucess!!!\n");        /*输出排序成功*/
}

/*初始化函数*/
void init()
{
   First=NULL;
   Last=NULL;
}
/*输入数据,创建双链表*/
void create()
{
751com.cn
   SALARY *info,*p;     /*定义临时变量*/
   if(First!=NULL)
   init();              /*如果头指针为空,调用初始化函数*/
   p=First;             /*从头指针开始*/
   for(;;)
   {
      if(flag==1)
         break;         /*如果flag=1,结束输入*/
      i=0;
      x=0;              /*确定移动的行坐标*/
      clrscr();         /*清屏*/
      gotoxy(1,3);
      printf("*************gongziguanli*************");/*输出标题*/
      gotoxy(1,4);
      printf("                      --Enter @ end--"); /*提示输入@结束*/
      gotoxy(1,5);
      printf("|------------------------------------|");/*输出表格的起始线*/
      gotoxy(1,6);
      printf("|    no    |      name      |  jbgz  |");/*输出字段标题,注意空格数*/
      for(;;)
      {
         gotoxy(1,7+x);
         printf("|----------|----------------|--------|");/*输出表格的水平线*/
         info=(SALARY *)malloc(sizeof(SALARY));        /*申请一个记录空间*/
         if(!info)
         {
            printf("\nout of memory");/*如没有得到空间,输出内存溢出信息*/
            exit(0);                  /*退出程序*/

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

C语言课程设计-工资管理系统 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。