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

📄 ssum.c

📁 家庭财务管理系统应用软件给家庭成员提供了一个在Windows操作系统上运行的管理平台
💻 C
字号:
#ifndef SORTBYSUM
 #define SORTBYSUM
 #include "stdio.h"
 #include "malloc.h"
 #include"shead.h"
 void SortBySum()
 {
   int i,j,k;
   money TempS;
   money *s,*t;
   int total=FINANCESIZE; /* head.h中定义 */
   int recNumber=0;
   char DataFile[10]="finance";
   FILE * fp=NULL;
  system("cls");
   s=(money*)malloc(total*sizeof(money));
   if(s==NULL)
   {
    printf("malloc memory fail!End with any key.\n");
    fflush(stdin);
    getch();
    exit(0);
   }
   /* 以只读方式打开文件 */
   fp=fopen(DataFile,"rb");
   if(fp==NULL)
   {
   printf("\nOpen file %s fail!End with any key.\n",DataFile);
   perror("Open file fail");
   fflush(stdin);
   free(s);/* 释放内存 */
   return;
   }

   while(fread(&s[recNumber],sizeof(money),1,fp)!=(int)NULL)
   {
    recNumber++;
    if(recNumber>=total)
    {
     total+=FINANCEINCREASE;
     t=(money*)realloc(s,total*sizeof(money));
     if(t==NULL)
     {
      printf("allot memory fail!End with any key.\n");
      fflush(stdin);
      getch();
      free(s);/* 释放内存 */
      exit(0);
     }
     s=t;
     t=NULL;
    }
   }
   fclose(fp);
   /* 如果文件中有记录将,则将各条记录按合计值排序 */
   if(recNumber>1)
   {
      for(i=0;i<recNumber-1;i++)
      {
       k=i;
       for(j=i+1;j<recNumber;j++)
       {
        if(s[k].sum<s[j].sum) k=j;
       }
       if(k!=i)
       {
        TempS.Number=s[k].Number;
        strcpy(TempS.Name,s[k].Name);
        TempS.in=s[k].in;
        TempS.out=s[k].out;
        TempS.sum=s[k].sum;

        s[k].Number=s[i].Number;
        strcpy(s[k].Name,s[i].Name);
        s[k].in=s[i].in;
        s[k].out=s[i].out;
        s[k].sum=s[i].sum;

        s[i].Number=TempS.Number;
        strcpy(s[i].Name,TempS.Name);
        s[i].in=TempS.in;
        s[i].out=TempS.out;
        s[i].sum=TempS.sum;
       }
      }
      /* 将排序好的数据写入文件 */
      fp=fopen(DataFile,"wb+");
      if(fp==NULL)
      {
       printf("\nOpen file %s fail!End with any key.\n",DataFile);
       perror("Open file fail");
       getch();
       free(s);/* 释放内存 */
       return;
      }
      for(i=0;i<recNumber;i++)
      {
         if(fwrite(&s[i],sizeof(money),1,fp)!=1)
         {
          printf("write file %s fail!End with any key.\n",DataFile);
          perror("write file fail");
          fflush(stdin);
          getch();
          free(s);/* 释放内存 */
          return;
         }
      }
      fclose(fp);
   }else if (recNumber==0)
   {
    printf("\nNo record!End with any key.\n");
    fflush(stdin);
    getch();
    free(s);/* 释放内存 */
    return;
   }
   /* 显示排序后的文件 */
   printf("the finacial info as flow:\n");

   fp=fopen(DataFile,"rb");
   if(fp==NULL)
   {
    printf("\nOpen file %s fail!End with any key.\n",DataFile);
    perror("Open file fail");
    getch();
    free(s);/* 释放内存 */
    return;
    }
    printf("\nNumber \tName\t\tin\t\tout\t\tsum\n");
    while(fread(&TempS,sizeof(money),1,fp)!=(int)NULL)
    {
     printf("%ld\t%s\t\t%.2f\t\t%.2f\t\t%.2f\n",TempS.Number,TempS.Name,TempS.in,TempS.out,TempS.sum);
    }
    fclose(fp);
  free(s);/* 释放内存 */
  printf("press any key to continue...");
  fflush(stdin);
   getch();
 }
#endif

⌨️ 快捷键说明

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