亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言實現(xiàn)家庭理財系統(tǒng)

 更新時間:2021年11月26日 14:03:16   作者:xingcheng--dp  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)家庭理財系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)家庭理財系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

比較簡單

直接上代碼:

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include<time.h>
#include<windows.h>
int s=1;
int b=1;
struct Data
{   int  a;
 char name[25];
 char riqi[15];
 float money;
 char beizhu[50];
};
struct list                 //鏈表申請
{
 struct Data info;
 struct list *next;
};
struct list *Inhead = NULL;      //收入鏈表頭指針
struct list *Intail = NULL;      //收入鏈表尾指針
struct list *zhichuhead = NULL;  //支出鏈表頭指針
struct list *zhichutail = NULL;  //支出鏈表尾指針
struct list *temp = NULL;        //定義一個全局空指針方便后面引用
int count=0;
int count1=0;
void inquire_income();
void inquire_pay();
void modify_income();
void modify_pay();
void time();
void inquire_menu();
void Add_income();
void Del_income();
void display_income();
void inquire_menu();
void full_name();
void money();
void content();
void modify_menu();
void full_name_modify_income();
void time_modify_income();
void money_modify_income();
void content_modify_income(); 
void Del_pay();
void inquire_pay();
void display_pay();
void modify_pay(); 
void Add_pay();
void full_name_pay();
void time_pay();
void money_pay();
void content_pay();
void full_name_modify_pay();
void time_modify_pay();
void money_modify_pay();
void content_modify_pay();
void all_income();
void all_pay();
void ALLfund();
void menu();

void Save_income()               //將收入數(shù)據(jù)存入文件
{
 FILE *fp;
 fp=fopen("D:\\shouru.dat","wb");
 struct list *p = Inhead;
 while (p != NULL)
 {
  fwrite(&p->info, sizeof(struct Data), 1, fp); //向文件寫入內(nèi)容
  p = p->next;             //指向下一個節(jié)點
 }
 fclose(fp);                  //關(guān)閉文件
}
void Save_zhichu()               //將支出數(shù)據(jù)存入文件
{
 FILE  *fp;
 fp = fopen("D:\\zhichu.dat","wb");
 struct list  *p = zhichuhead;
 while (p != NULL)
 {
  fwrite(&p->info, sizeof(struct Data), 1, fp);
  p = p->next;
 }
 fclose(fp);
}
void Open()                      //提前打開文件將已有的收入數(shù)據(jù)添加進來(如果沒有直接跳過)
{
 FILE *pp;
 pp = fopen("D:\\shouru.dat", "rb");

  if(pp != NULL)
  {
      struct Data linshi;  //申請一個結(jié)構(gòu)體
   while (fread(&linshi, sizeof(struct Data), 1, pp) == 1) //直到?jīng)]有了為止
   {
    temp = (struct list*)malloc(sizeof(struct list));   //分配空間賦給temp
    temp->info = linshi;      //將linshi地址賦給temp指向
    temp->next = NULL;        //將指針指向空
    if (Inhead == NULL)       //分為兩種情況一種為空的時候一種不為空
    {
     Inhead = temp;
     Intail = temp;        //因為第一個元素
    }
    else
    {
     Intail->next = temp;  //添加到前尾部的后指針
     Intail = temp;        //尾部指針
    }
  
   }
     
    
   fclose(pp);

  }
}
void Openzhichu()                //提前打開文件將已有的支出數(shù)據(jù)添加進來(如果沒有直接跳過)
{
 FILE  *fp;
 fp = fopen("zhichu.dat","rb");
  if (fp != NULL)
  {
   struct Data linshi;
   while (fread(&linshi, sizeof(struct Data), 1, fp) == 1)
   {
    temp = (struct list*)malloc(sizeof(struct list));
    temp->info = linshi;
    temp->next = NULL;
    if (zhichuhead == NULL)
    {
     zhichuhead = temp;
     zhichutail = temp;
    }
    else
    {
     zhichutail->next = temp;
     zhichutail = temp;
    }
  ;
   }
   fclose(fp);
  }
}

/*********************************************************************/
void Menu()                      //菜單主界面
{
 system("cls");               //清屏
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf("\n");
 printf("\t\t\t\t *       歡迎使用家庭財務(wù)管理系統(tǒng)        *\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf(" \n");
 printf("\t\t\t\t 1:收入操作 \n");
 printf("\t\t\t\t 2:支出操作 \n");
 printf("\t\t\t\t 3:統(tǒng)計操作 \n");
 printf("\t\t\t\t 0:退出 \n");
}
void menu(){
 system("cls");               //清屏
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf("\n");
 printf("\t\t\t\t *       歡迎使用家庭財務(wù)管理系統(tǒng)        *\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf(" \n");
 
 
 
}
/*****************************收入?yún)^(qū)**********************************/
void Income_menu()               //收入界面
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf(" \n");
 printf("\t\t\t\t *      歡迎使用家庭財務(wù)管理系統(tǒng)         * \n");
 printf(" \n");
 printf("\t\t\t\t *****************************************\n");
 printf(" \n");
 printf("\t\t\t\t 1.添加收入 \n");
 printf("\t\t\t\t 2.刪除收入 \n");
 printf("\t\t\t\t 3.查詢收入 \n");
 printf("\t\t\t\t 4.顯示收入 \n");
 printf("\t\t\t\t 5.修改收入 \n");
 printf("\t\t\t\t 0.返回上一級 \n");
}

void Income()                    //進入收入界面
{
 int choice;
 while (1)
 {
  Income_menu();           //收入菜單顯示
  printf("\t\t\t\t 請輸入選擇: ");
  scanf("%d", &choice);
  fflush(stdin);           //等待
  if (choice == 0)
  {
  printf("\t\t\t\t 返回上一級中......  ");system("PAUSE");break;
  }
  else
   switch (choice)
   {
   case 1: Add_income(); Save_income(); break;     //添加
   case 2: Del_income(); Save_income(); break;     //刪除
   case 3: inquire_income(); Save_income(); break;  //查詢
   case 4: display_income(); Save_income(); break;     //顯示
   case 5: modify_income(); Save_income(); break;  //修改
   }
 }
}
void Add_income()                //添加收入
{
 char panduan;
 do
 {
  temp = (struct list*)malloc(sizeof(struct list));
  if(Inhead == NULL){
   s=1;
  }
  else{
   s=Intail->info.a+1;
  }
  temp->info.a=s;
 
  printf("\t\t\t\t 姓名: "); gets(temp->info.name); fflush(stdin);
  printf("\t\t\t\t 日期( XX 年 XX 月 XX 日): "); gets(temp->info.riqi); fflush(stdin);
  printf("\t\t\t\t 收入: "); scanf("%f", &temp->info.money); fflush(stdin);
  printf("\t\t\t\t 備注: "); gets(temp->info.beizhu); fflush(stdin);
  printf("\n");
  temp->next = NULL;       //將尾部變?yōu)榭?
  if (Inhead == NULL)
  {
   Inhead = temp;
   Intail = temp;
  }
  else
  {
   Intail->next = temp;
   Intail = temp;
  }
 
  Save_income();
  do{

  printf("\t\t\t\t 是否 (Y/N) 繼續(xù)添加信息:");
  panduan = getchar();
  fflush(stdin);
  if(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N')
       {printf("\t\t\t\t 輸入錯誤!\n");}
     }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
 } while (panduan == 'Y' || panduan == 'y');
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
}

void Del_income()                //刪除收入
{
 char shanchu[20],panduan2;
 int t=0;
  struct list *p = NULL;
 struct list *m = NULL;
 struct list *n = NULL;
 p = Inhead;
 if(p==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
  part:
  if(t==0) printf("\t\t\t\t 請輸入刪除姓名: ");
  else
  {
   printf("\t\t\t\t 請重新輸入刪除姓名: ");
  
  }
 gets(shanchu);
 if (strcmp(Inhead->info.name, shanchu) == 0)
 {
  count++;
  while (Inhead != NULL && strcmp(Inhead->info.name, shanchu) == 0)
  {
   char ch;
   printf("\t\t\t\t 編號: "); printf("%d\n",Inhead->info.a);
   printf("\t\t\t\t 姓名: "); puts(Inhead->info.name);
   printf("\t\t\t\t 日期: "); puts(Inhead->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.3f\n", Inhead->info.money);
   printf("\t\t\t\t 備注: "); puts(Inhead->info.beizhu);
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為%s,確認刪除 Y/N ?", shanchu);
   ch = getchar(); fflush(stdin);
   if (ch == 'y' || ch == 'Y'){
   Inhead = Inhead->next;
   p = Inhead;
        while(p!=NULL){
         p->info.a=p->info.a-1;
         p=p->next;


  }


   }
   else {
      break;
   }
  }
 }
 else
 {
  if (strcmp(Intail->info.name, shanchu) == 0)
  {
   count++;
   do
   {
    m = p;
    p = p->next;
   } while (p != Intail);
   char ch2;
   printf("\t\t\t\t 編號: "); printf("%d\n",Intail->info.a);
   printf("\t\t\t\t 姓名: "); puts(Intail->info.name);
   printf("\t\t\t\t 日期: "); puts(Intail->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.4f\n", Intail->info.money);
   printf("\t\t\t\t 備注: "); puts(Intail->info.beizhu);
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為%s,確認刪除 Y/N ?", shanchu);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   m->next = NULL;
   Intail=m;
  

 

   }
  
  }
  else 
  {
   while( count>=3 && p->next != NULL && strcmp(p->info.name, shanchu) != 0 )
   {
    m = p;
    p = p->next;
    n = p->next;
   } 
   if(count>=3 && strcmp(p->info.name, shanchu) == 0)
   {
    char ch3;
   printf("\t\t\t\t 編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.3f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為%s,確認刪除 Y/N ?", shanchu);
    ch3 = getchar(); fflush(stdin);
    if (ch3 == 'y' || ch3 == 'Y')
     m->next = n;
    while(n!=NULL){
     n->info.a=n->info.a-1;
       n=n->next;
     
    }
     
   }
   else
   {
    printf("\t\t\t\t\t 不存在\n");

    if(t==0){
      t=1;
     goto part;
    }
    
    
   }

  }
 }
 Save_income();
 if (Inhead != NULL)
 {
  char panduan;
   do{
     
  printf("\t\t\t\t 是否繼續(xù)刪除 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   Del_income();break;
  }
   else  if(panduan=='n'||panduan=='N'){
     break;
  }
    else
      {printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
 }
 else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回收入操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 }
   }

}
void inquire_income()             //查詢收入
{
 inquire_menu();
 int choice;
 printf("\t\t\t\t 請輸入你的選擇: ");
 scanf("%d", &choice);
 fflush(stdin);
 switch (choice)
 {
 case 1: full_name(); break;
 case 2: time(); break;
 case 3: money(); break;
 case 4: content(); break;
 default: printf("\t\t\t\t 輸入錯誤 "); break;
 }
}
void full_name()                    //通過名字查詢收入
{
 char chazhao[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");

 }
 else{

 printf("\t\t\t\t 請輸入查詢的名字: ");
 gets(chazhao);
 struct list *p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.name, chazhao) == 0)  //循環(huán)遍歷鏈表
  {
   printf("\t\t\t\t 編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.3f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
       j=1;
  }
  p = p->next;             //到下一個節(jié)點的頭
 }
 if(j==0){
  printf("\t\t\t\t 不存在\n ");
 }
 if (Inhead != NULL)
 {
  char panduan;
  do { printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);           //清空輸入緩沖區(qū),為了確保不影響后面的數(shù)據(jù)讀取
  if (panduan == 'Y' || panduan == 'y')
  {
  full_name();break;
  }
 else if(panduan=='n'||panduan=='N'){
    inquire_income(); break;
  }
 else
      {printf("\t\t\t\t 輸入錯誤!\n");}
    }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 
 }
  }
}
void time()                      //通過日期查詢收入
{
 char chazhao[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{

 printf("\t\t\t\t 請輸入查詢的日期: ");
 gets(chazhao);
 struct list  *p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.riqi, chazhao) == 0)
  {
   printf("\t\t\t\t 編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   j=1;
  }
  p = p->next;
 }
 if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
   char panduan;
  do {
     printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
  time()    ; break;
  }
  else if(panduan=='n'||panduan=='N'){inquire_income();break;
     }
  else
     {printf("\t\t\t\t 輸入錯誤!\n");}
    }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');

 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
   

 }}
}
void money()                     //通過金額查詢收入
{
 float chazhao;
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");

 }
 else{

 printf("\t\t\t\t 請輸入查詢的金額:");
 scanf("%f", &chazhao);
 fflush(stdin);
 struct list *p = Inhead;
 while (p != NULL)
 {
  if (p->info.money == chazhao)
  {
   printf("\t\t\t\t 編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
  j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
     money(); break;
  }
   else if(panduan=='n'||panduan=='N'){
    inquire_income(); break;
  }
    else
      {printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
     }
     else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 }
}
void content()                    //通過備注查詢收入
{
 char chazhao[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");

 }
 else{
 printf("\t\t\t\t 請輸入查詢的備注:");
 gets(chazhao);
 struct list* p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.beizhu, chazhao) == 0)
  {
   printf("\t\t\t\t 編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
  j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   content();break;
  }
  else if(panduan=='n'||panduan=='N'){inquire_income(); break;}
    else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
     }

 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }}}
void display_income()                //顯示所有收入不包括支出
{
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");

 }
 else{
 struct list* p = Inhead;
 while (p != NULL)
 {   printf("\t\t\t\t==·==·==·==·==·==\n");
  printf("\t\t\t\t| 編號: "); printf("%12d|\n",p->info.a);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 姓名: "); printf("%12s|\n",p->info.name);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 日期: "); printf("%12s|\n",p->info.riqi);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 收入: "); printf("%12.4f|\n", p->info.money);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 備注: "); printf("%12s|\n",p->info.beizhu);
  p = p->next;
 }
 system("PAUSE");
}}
void modify_income()             //修改收入控制臺
{
 modify_menu();
 int choice;
 printf("\t\t\t\t 請輸入你的選擇: ");
 scanf("%d", &choice);
 fflush(stdin);
 switch (choice)
 {
 case 1: full_name_modify_income(); break;
 case 2: time_modify_income(); break;
 case 3: money_modify_income(); break;
 case 4: content_modify_income(); break;
 default: printf("\t\t\t\t 輸入錯誤 "); break;
 }
}

void full_name_modify_income()      //通過名字修改收入
{
 char xiugai[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");

 }
 else{
 printf("\t\t\t\t 請輸入修改的名字: ");
 fflush(stdin);
 gets(xiugai);
 struct list *p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.name, xiugai) == 0)
  {
     char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
            printf("\t\t\t\t 找到一個數(shù)據(jù)名字為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 收入: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
   j=1;
  }
  p = p->next;
 }
 Save_income();
 if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   full_name_modify_income();break;
  }
  else if(panduan=='n'||panduan=='N'){modify_income(); break;}
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
  
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");}
}}
void time_modify_income()        //通過日期修改收入
{
 char xiugai[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的日期: ");
 fflush(stdin);
 gets(xiugai);
 struct list *p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.riqi, xiugai) == 0)
  {
   char ch2;
   fflush(stdin);

   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
            printf("\t\t\t\t 找到一個數(shù)據(jù)日期為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 收入: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
  j=1;
  }
  p = p->next;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   time_modify_income();break;
  }
  else if(panduan=='n'||panduan=='N'){modify_income(); break;}
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');

  
  
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");}
 
}}
void money_modify_income()       //通過金額修改收入
{
 float xiugai;
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 空列表?。?!\n");
 printf("\t\t\t\t 請返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的金額:");
 scanf("%f", &xiugai);
 fflush(stdin);
 struct list  *p = Inhead;
 while (p != NULL)
 {
  if (p->info.money == xiugai)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
            printf("\t\t\t\t 找到一個數(shù)據(jù)金額為%f,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 收入: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
  j=1;
  }
  p = p->next;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   money_modify_income();break;
  }
  else if(panduan=='n'||panduan=='N'){modify_income(); break;}
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");}
}}

void content_modify_income()      //通過備注修改收入
{
 char xiugai[20];
 int j=0;
 if(Inhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的備注: ");
 fflush(stdin);
 gets(xiugai);
 struct list* p = Inhead;
 while (p != NULL)
 {
  if (strcmp(p->info.beizhu, xiugai) == 0)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
           printf("\t\t\t\t 找到一個數(shù)據(jù)備注為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 收入: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)收入: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
     j=1;
  }
  p = p->next;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
       content_modify_income();break;
  }
 else if(panduan=='n'||panduan=='N'){modify_income(); break;}
 else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");}
}}

/*********************************支出區(qū)******************************************/

void zhichu_menu()               //支出界面
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
    printf("\t\t\t\t ****************************\n");
 printf("\t\t\t\t * 歡迎使用家庭財務(wù)管理系統(tǒng) * \n");
 printf("\t\t\t\t ****************************\n");
 printf(" \n");
 printf("\t\t\t\t 1.添加支出 \n");
 printf("\t\t\t\t 2.刪除支出 \n");
 printf("\t\t\t\t 3.查詢支出 \n");
 printf("\t\t\t\t 4.顯示支出 \n");
 printf("\t\t\t\t 5.修改支出 \n");
 printf("\t\t\t\t 0.返回上一級 \n");
}

void zhichu()                    //支出界面運行
{
 int choice;
 while (1)
 {
  zhichu_menu();
  printf("\t\t\t\t 請輸入選擇: ");
  scanf("%d", &choice);
  fflush(stdin);
  if (choice == 0)
  {
    printf("\t\t\t\t 返回上一級中......  ");system("PAUSE");break;
  }
  else
   switch (choice)
   {
   case 1: Add_pay(); Save_zhichu(); break;
   case 2: Del_pay(); Save_zhichu(); break;
   case 3: inquire_pay(); Save_zhichu(); break;
   case 4: display_pay(); Save_zhichu(); break;
   case 5: modify_pay(); Save_zhichu(); break;
   }
 }
}


void Add_pay()                //添加支出
{
 char panduan;
 do
 {
  if(zhichuhead == NULL){
   b=1;
  }
  else{
   b=zhichutail->info.a+1;
  }
  temp = (struct list*)malloc(sizeof(struct list));
  temp->info.a=b;
 
  printf("\t\t\t\t 姓名: "); gets(temp->info.name); fflush(stdin);
  printf("\t\t\t\t 日期( XX 年 XX 月 XX 日): "); gets(temp->info.riqi); fflush(stdin);
  printf("\t\t\t\t 支出: "); scanf("%f", &temp->info.money); fflush(stdin);
  printf("\t\t\t\t 備注: "); gets(temp->info.beizhu); fflush(stdin);
  printf("\n");

  temp->next = NULL;
  if (zhichuhead == NULL)
  {
   zhichuhead = temp;
   zhichutail = temp;
  }
  else
  {
   zhichutail->next = temp;
   zhichutail = temp;
  }
 
  Save_zhichu();
do{

  printf("\t\t\t\t 是否 (Y/N) 繼續(xù)添加信息 ");
  panduan = getchar(); fflush(stdin);
 if(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N')
     {printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');

 } while (panduan == 'Y' || panduan == 'y');
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}

void Del_pay()                //刪除支出
{
 int t=1;
 char shanchu[20];
 struct list *p = NULL;
 struct list *m = NULL;
 struct list *n = NULL;
 p = zhichuhead;
 if(p==NULL)
 {
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 }
 else{
  place :
  if(t) printf("\t\t\t\t 請輸入刪除姓名: ");
  else
  {
   printf("\n\t\t\t\t 請重新輸入刪除姓名: ");

  }
 gets(shanchu);
 if (strcmp(zhichuhead->info.name, shanchu) == 0)
 {
  count1++;
  while (zhichuhead != NULL && strcmp(zhichuhead->info.name, shanchu) == 0)
  {
   char ch;
   printf("\t\t\t\t 編號: ");printf("%d\n",zhichuhead->info.a);
   printf("\t\t\t\t 姓名: "); puts(zhichuhead->info.name);
   printf("\t\t\t\t 日期: "); puts(zhichuhead->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.3f\n", zhichuhead->info.money);
   printf("\t\t\t\t 備注: "); puts(zhichuhead->info.beizhu);
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為 %s,確認刪除 Y/N ?", shanchu);
   ch = getchar(); fflush(stdin);
   if (ch == 'y' || ch == 'Y')
     {
      zhichuhead = zhichuhead->next;
       p = zhichuhead;
        while(p!=NULL){
         p->info.a=p->info.a-1;
         p=p->next;
                  }
      }
   else{
    break;}
  }
 }
 else
 {
  if (strcmp(zhichutail->info.name, shanchu) == 0)
  {
   count1++;
   do
   {
    m = p;
    p = p->next;
   } while (p != zhichutail);
   char ch2;
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.3f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為 %s,確認刪除 Y/N ?", shanchu);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y')
     { m->next = NULL;
     zhichutail=m;
   
     }
  

  
  }
  else{
 
   while (count1>=3 && strcmp(p->info.name, shanchu) != 0 && n->next != NULL)
   {
    m = p;
    p = p->next;
    n = p->next;
   }
   if (count1>=3 && strcmp(p->info.name, shanchu) == 0){

   char ch3;
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.3f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   
   printf("\t\t\t\t 找到一個數(shù)據(jù)名字為 %s,確認刪除 Y/N ?", shanchu);
   ch3 = getchar(); fflush(stdin);
   if (ch3 == 'y' || ch3 == 'Y')
     { m->next =n;
     
    while(n!=NULL){
       n->info.a=n->info.a-1;
       n=n->next;


    }


     }
               }
            else{
             printf("\t\t\t\t\t不存在");
             if(t==1){

             t=0;
             goto place;}
   }
  }
 }
 Save_zhichu();

 if (zhichuhead != NULL){
  char panduan;
 do{
  
  printf("\t\t\t\t 是否繼續(xù)刪除 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   Del_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
   break;
  }
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
 else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 }
  }
}

void inquire_pay()             //查詢支出
{
 inquire_menu();
 int choice;
 printf("\t\t\t\t 請輸入你的選擇: ");
 scanf("%d", &choice);
 fflush(stdin);
 switch (choice)
 {
 case 1: full_name_pay(); break;
 case 2: time_pay(); break;
 case 3: money_pay(); break;
 case 4: content_pay(); break;
 default: printf("\t\t\t\t 輸入錯誤 "); break;
 }
}

void full_name_pay()             //通過名字查詢支出
{
 char chazhao[20];
 int j=0;
    if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入查詢的名字: ");
 gets(chazhao);
 struct list  *p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.name, chazhao) == 0)
  {
  
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.3f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   full_name_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
   inquire_pay();
   break;
  }
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
     else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 }

}}
void time_pay()               //通過日期查詢支出
{
 char chazhao[20];
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");

 }
 else{
 printf("\t\t\t\t 請輸入查詢的日期: ");
 gets(chazhao);
 struct list* p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.riqi, chazhao) == 0)
  {
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
  j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
  time_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
  inquire_pay();
     break;
  }
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 
 }
  else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
}}}

void money_pay()              //通過金額查詢支出
{
 float chazhao;
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入查詢的金額:");
 scanf("%f", &chazhao);
 fflush(stdin);
 struct list* p = zhichuhead;
 while (p != NULL)
 {
  if (p->info.money == chazhao)
  {
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   money_pay();break;
  }
   else if(panduan =='n'||panduan == 'N' ){
  inquire_pay();break;
  }
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
  else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
}}}
void content_pay()             //通過備注查詢支出
{
 char chazhao[20];
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{

 printf("\t\t\t\t 請輸入查詢的備注: ");
 gets(chazhao);
 struct list* p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.beizhu, chazhao) == 0)
  {
   printf("\t\t\t\t 編號: ");printf("%d\n",p->info.a);
   printf("\t\t\t\t 姓名: "); puts(p->info.name);
   printf("\t\t\t\t 日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 備注: "); puts(p->info.beizhu);
   j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)查詢 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
  content_pay();
  }
   else if(panduan =='n'||panduan == 'N' ){
  inquire_pay();break;
  }
     else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
  else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 
}}}

void display_pay()                //顯示所有人支出
{
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 struct list* p = zhichuhead;
 while (p != NULL)
 {
  fflush(stdin);
  printf("\t\t\t\t==·==·==·==·==·==\n");
  printf("\t\t\t\t| 編號: ");printf("%12d|\n",p->info.a);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 姓名: ");printf("%12s|\n",p->info.name);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 日期: ");printf("%12s|\n",p->info.riqi);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 支出: ");printf("%12.4f\n", p->info.money);
  printf("\t\t\t\t--------------------\n");
  printf("\t\t\t\t| 備注: ");printf("%12s|\n",p->info.beizhu);
  p = p->next;
 }
 system("PAUSE");
}}
void modify_pay()             //修改支出控制臺
{
 modify_menu();
 int choice;
 printf("\t\t\t\t 請輸入你的選擇: ");
 scanf("%d", &choice);
 fflush(stdin);
 switch (choice)
 {
 case 1: full_name_modify_pay(); break;
 case 2: time_modify_pay(); break;
 case 3: money_modify_pay(); break;
 case 4: content_modify_pay(); break;
 default: printf("\t\t\t\t 輸入錯誤 "); break;
 }
}
void full_name_modify_pay()      //通過名字修改支出
{
 char xiugai[20];
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的名字: ");
 fflush(stdin);
 gets(xiugai);
 struct list  *p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.name, xiugai) == 0)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
            printf("\t\t\t\t 找到一個數(shù)據(jù)名字為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 支出: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
     j=1;
  }
  p = p->next;
 }
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 Save_zhichu();
 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
  full_name_modify_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
  modify_pay();break;
  }
        else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
  
 }
  else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
}}}

void time_modify_pay()        //通過日期修改支出
{
 char xiugai[20];
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 空列表?。?!\n");
 printf("\t\t\t\t 請返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的日期: ");
 fflush(stdin);
 gets(xiugai);
 struct list *p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.riqi, xiugai) == 0)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
            printf("\t\t\t\t 找到一個數(shù)據(jù)日期為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 支出: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
     j=1;
  }
  p = p->next;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   time_modify_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
  modify_pay();break;
  }
  else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
  else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
}}}

void money_modify_pay()       //通過金額修改支出
{
 float xiugai;
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的金額:");
 scanf("%f", &xiugai);
 fflush(stdin);
 struct list* p = zhichuhead;
 while (p != NULL)
 {
  if (p->info.money == xiugai)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
           printf("\t\t\t\t 找到一個數(shù)據(jù)金額為%f,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 支出: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
     j=1;
  }
  p = p->next;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
   money_modify_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
  modify_pay();break;
  }
  else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }
 else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");
 
}}}
void content_modify_pay()      //通過備注修改支出
{
 char xiugai[20];
 int j=0;
 if(zhichuhead==NULL){
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
 else{
 printf("\t\t\t\t 請輸入修改的備注: ");
 fflush(stdin);
 gets(xiugai);
 fflush(stdin);
 struct list *p = zhichuhead;
 while (p != NULL)
 {
  if (strcmp(p->info.beizhu, xiugai) == 0)
  {
   char ch2;
   fflush(stdin);
   printf("\n\t\t\t\t 原編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 原姓名: "); puts(p->info.name);
   printf("\t\t\t\t 原日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 原支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 原備注: "); puts(p->info.beizhu);
             printf("\t\t\t\t 找到一個數(shù)據(jù)備注為%s,確認修改 Y/N ?", xiugai);
   ch2 = getchar(); fflush(stdin);
   if (ch2 == 'y' || ch2 == 'Y'){
   printf("\t\t\t\t 姓名: "); gets(p->info.name); fflush(stdin);
   printf("\t\t\t\t 日期: "); gets(p->info.riqi); fflush(stdin);
   printf("\t\t\t\t 支出: "); scanf("%f", &p->info.money); fflush(stdin);
   printf("\t\t\t\t 備注: "); gets(p->info.beizhu); fflush(stdin);
   printf("\n\t\t\t\t 現(xiàn)編號: "); printf("%d\n",p->info.a);
   printf("\t\t\t\t 現(xiàn)姓名: "); puts(p->info.name);
   printf("\t\t\t\t 現(xiàn)日期: "); puts(p->info.riqi);
   printf("\t\t\t\t 現(xiàn)支出: "); printf("%.4f\n", p->info.money);
   printf("\t\t\t\t 現(xiàn)備注: "); puts(p->info.beizhu);}
     j=1;
  }
  p = p->next;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否繼續(xù)修改 (Y/N):");
  panduan = getchar();
  fflush(stdin);
  if (panduan == 'Y' || panduan == 'y')
  {
    content_modify_pay();break;
  }
  else if(panduan =='n'||panduan == 'N' ){
  modify_pay();break;
  }
  else{printf("\t\t\t\t 輸入錯誤!\n");}
 }while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
 }

 else{
  printf("\t\t\t\t 目前為空列表!\n");
  printf("\t\t\t\t 即將返回支出操作界面進行添加!!!!!\n");
  printf("\t\t\t\t 正在返回......");
  system("PAUSE");

}}}

/*******************************--------********************************/
void inquire_menu()               //查詢界面
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t ****************************\n");
 printf("\n");
 printf("\t\t\t\t * 歡迎使用家庭財務(wù)管理系統(tǒng) * \n");
 printf("\n");
 printf("\t\t\t\t ****************************\n");
 printf(" \n");
 printf("\t\t\t\t 1.按名字查詢 \n");
 printf("\t\t\t\t 2.按日期查詢 \n");
 printf("\t\t\t\t 3.按金額查詢 \n");
 printf("\t\t\t\t 4.按備注查詢 \n");
 printf("\t\t\t\t 0.返回上一級 \n");
}
/*******************************--------********************************/
void modify_menu()               //修改界面
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
    printf("\t\t\t\t ***************************************\n");
    printf("\n");
 printf("\t\t\t\t *       歡迎使用家庭財務(wù)管理系統(tǒng)      * \n");
 printf("\n");
 printf("\t\t\t\t ***************************************\n");
 printf(" \n");
 printf("\t\t\t\t 1.按名字修改 \n");
 printf("\t\t\t\t 2.按日期修改 \n");
 printf("\t\t\t\t 3.按金額修改 \n");
 printf("\t\t\t\t 4.按備注修改 \n");
 printf("\t\t\t\t 0.返回上一級 \n");
}
/****************************-----統(tǒng)計區(qū)-------************************/
void tongji_menu()
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t ***************************************\n");
 printf("\n");
 printf("\t\t\t\t *      歡迎使用家庭財務(wù)管理系統(tǒng)       * \n");
 printf("\n");
 printf("\t\t\t\t ***************************************\n");
 printf(" \n");
 printf("\t\t\t\t 1.總收入 \n");
 printf("\t\t\t\t 2.總支出 \n");
 printf("\t\t\t\t 3.總資金 \n");
 printf("\t\t\t\t 0.返回上一級 \n");
}
void Tongji()                    //統(tǒng)計控制臺
{
 while (1)
 {
  tongji_menu();
  int choice;
  printf("\t\t\t\t 請輸入你的選擇: ");
  scanf("%d", &choice);
  if (choice == 0)
  {
  printf("\t\t\t\t 返回上一級中......  ");system("PAUSE");break;
  }
  switch (choice)
  {
  case 1: all_income(); break;
  case 2: all_pay(); break;
  case 3: ALLfund(); break;
  default: printf("\t\t\t\t 輸入錯誤 "); break;
  }
 }
}

void all_income()                //總收入
{
 float shouru = 0;
 struct list  *linshi;
 linshi = Inhead;
 if (linshi != NULL)
 {
  do
  {
   shouru = linshi->info.money + shouru;
   linshi = linshi->next;
  } while (linshi != NULL);
  printf("\t\t\t\t總收入為:%.4f", shouru);
  system("PAUSE");
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將前往收入操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
}
void all_pay()                //總支出
{
 float zhichu = 0;
 struct list  *linshi;
 linshi = zhichuhead;
 if (linshi != NULL)
 {
  do
  {
   zhichu = linshi->info.money + zhichu;
   linshi = linshi->next;
  } while (linshi != NULL);
  printf("\t\t\t\t總支出為:%.4f", zhichu);
  system("PAUSE");
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將前往支出操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");
 }
}
void ALLfund()                 //總的資金
{
 float zhichu = 0;
 float zongzijin;
 struct list *linshi;
 linshi = zhichuhead;
 if (linshi != NULL)
 {
  do
  {
   zhichu = linshi->info.money + zhichu;
   linshi = linshi->next;
  } while (linshi != NULL);
 }
 float shouru = 0;
 linshi = Inhead;
 if (linshi != NULL)
 {
  do
  {
   shouru = linshi->info.money + shouru;
   linshi = linshi->next;
  } while (linshi != NULL);
  printf("\t\t\t\t剩余的資金為:%.4f", shouru - zhichu);
  system("PAUSE");
 }
 else{
 printf("\t\t\t\t 目前為空列表!\n");
 printf("\t\t\t\t 即將返回操作界面進行添加\n");
 printf("\t\t\t\t 正在返回......");
 system("PAUSE");}
}
/*******************************************************************/
void Quit()//退出
{
 char panduan;
 printf("\t\t\t\t 確認退出 (Y/N)");
 panduan = getchar();
 fflush(stdin);
 if (panduan == 'Y' || panduan == 'y')
 {
  printf("\t\t\t\t 正在退出中......  ");
  system("PAUSE");
  exit(0);
 }
}
int main()
{

 system("color E1");
 int t=0,mm,nn;
    char *user;
    char *pass;
    char username[30]={0},pass_word[30]={0},password;
    int count=0;
    printf("\n\n\n\n\n\n\n");
    //密碼顯示為 *
    do{
     count = 0;
     if(t)
  {
   if(mm==0&&nn!=0){
   printf("\n\t\t\t\t \t 密碼錯誤?。?!  ");
    
   }
   else if(mm!=0&&nn==0)
   {
   printf("\n\t\t\t\t \t 賬號錯誤?。?!  ");
   }
   else{

      printf("\n\t\t\t\t \t 賬號或密碼錯誤?。。?");
     }
     system("PAUSE");
      t=0;
  }
   menu();
     printf("\t\t\t\t\t 賬號:");
     fgets(username,30,stdin);
     fflush(stdin);
     printf("\t\t\t\t\t 密碼:");
     while (password=getch())
     {        
         if(password == '\r')    //Enter
         {
             pass_word[count]='\0';                
             break;
         }    
         else if((password=='\b') && (count>0))    //Backspace
         {    
             printf("\b \b");
             count--;
         }
         else if((count==0) && (password=='\b')) ;    
         else
         {
             pass_word[count] = password;
             count++;
             printf("*");
         }
     }
     pass=pass_word;
     t=strcmp(username,"root\n") || strcmp(pass,"root");
     mm=strcmp(username,"root\n");
     nn=strcmp(pass,"root");
     
     
 }while(t);
 Open();
 Openzhichu();
 while (1)
 {
  
  Menu();
  int choice;
  printf("\t\t\t\t 請輸入你的選擇: ");
  scanf("%d", &choice);
  fflush(stdin);
  switch (choice)
  {
  case 1: Income(); break;
  case 2: zhichu(); break;
  case 3: Tongji(); break;
  case 0: Quit(); break;
  default: printf("\t\t\t\t 輸入錯誤 "); break;
  }
 }
 return 0;
}

部分運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實現(xiàn)客房管理系統(tǒng)

    C語言實現(xiàn)客房管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)客房管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言實現(xiàn)大學(xué)生考勤管理系統(tǒng)

    C語言實現(xiàn)大學(xué)生考勤管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)大學(xué)生考勤管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 使用VS Code的開發(fā)環(huán)境配置教程圖文詳解

    使用VS Code的開發(fā)環(huán)境配置教程圖文詳解

    這篇文章主要介紹了使用VS Code的開發(fā)環(huán)境配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子,需要的朋友可以參考一下
    2013-05-05
  • C++中的引用與高級函數(shù)詳解

    C++中的引用與高級函數(shù)詳解

    這篇文章主要介紹了C++中的引用與高級函數(shù)詳解,概念:引用是為已存在的變量取了一個別名,引用和引用的變量共用同一塊內(nèi)存空間,需要的朋友可以參考下
    2023-07-07
  • 在C++?中慎用setjmp和longjmp解析

    在C++?中慎用setjmp和longjmp解析

    setjmp和longjmp是C語言中用于實現(xiàn)非局部跳轉(zhuǎn)的函數(shù),setjmp和longjmp 是 C 語言中一個很強大的函數(shù),這篇文章主要介紹了在C++?中慎用setjmp和longjmp的相關(guān)知識,需要的朋友可以參考下
    2023-06-06
  • 使用C語言實現(xiàn)三子棋游戲

    使用C語言實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細介紹了使用C語言實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關(guān)于C++智能指針shared_ptr和unique_ptr能否互轉(zhuǎn)問題

    關(guān)于C++智能指針shared_ptr和unique_ptr能否互轉(zhuǎn)問題

    C++中的智能指針最常用的是shared_ptr和unique_ptr,C++新手最常問的問題是我從一個函數(shù)中拿到unique_ptr,但要轉(zhuǎn)成shared_ptr才能使用,要怎么轉(zhuǎn)換?同理是否能將shared_ptr轉(zhuǎn)換成unique_ptr,面對這些問題,跟隨小編一起看看吧
    2022-05-05
  • C/C++中一次性執(zhí)行多個DOS命令的實現(xiàn)思路

    C/C++中一次性執(zhí)行多個DOS命令的實現(xiàn)思路

    在C語言中執(zhí)行DOS命令的方法很多,在這就不一給大家一一介紹了,本文重點給大家介紹C/C++中一次性執(zhí)行多個DOS命令的實現(xiàn)思路,需要的朋友參考下
    2017-12-12
  • 解析C++編程中virtual聲明的虛函數(shù)以及單個繼承

    解析C++編程中virtual聲明的虛函數(shù)以及單個繼承

    這篇文章主要介紹了C++編程中virtual聲明的虛函數(shù)以及單個繼承,剖析虛函數(shù)和單個基類所能夠繼承的成員,要的朋友可以參考下
    2016-01-01

最新評論