C语言实现家庭理财系统

本文实例为大家分享了C语言实现家庭理财系统的具体代码,供大家参考,具体内容如下

比较简单

直接上代码:

#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()               //将收入数据存入文件
{
 FILE *fp;
 fp=fopen("D:\\shouru.dat","wb");
 struct list *p = Inhead;
 while (p != NULL)
 {
  fwrite(&p->info, sizeof(struct Data), 1, fp); //向文件写入内容
  p = p->next;             //指向下一个节点
 }
 fclose(fp);                  //关闭文件
}
void Save_zhichu()               //将支出数据存入文件
{
 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()                      //提前打开文件将已有的收入数据添加进来(如果没有直接跳过)
{
 FILE *pp;
 pp = fopen("D:\\shouru.dat", "rb");

  if(pp != NULL)
  {
      struct Data linshi;  //申请一个结构体
   while (fread(&linshi, sizeof(struct Data), 1, pp) == 1) //直到没有了为止
   {
    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()                //提前打开文件将已有的支出数据添加进来(如果没有直接跳过)
{
 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 *       欢迎使用家庭财务管理系统        *\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 menu(){
 system("cls");               //清屏
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf("\n");
 printf("\t\t\t\t *       欢迎使用家庭财务管理系统        *\n");
 printf("\n");
 printf("\t\t\t\t *****************************************\n");
 printf(" \n");

}
/*****************************收入区**********************************/
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 *      欢迎使用家庭财务管理系统         * \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;       //将尾部变为空
  if (Inhead == NULL)
  {
   Inhead = temp;
   Intail = temp;
  }
  else
  {
   Intail->next = temp;
   Intail = temp;
  }

  Save_income();
  do{

  printf("\t\t\t\t 是否 (Y/N) 继续添加信息:");
  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 找到一个数据名字为%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 找到一个数据名字为%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 找到一个数据名字为%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 是否继续删除 (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)  //循环遍历链表
  {
   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 (Inhead != NULL)
 {
  char panduan;
  do { printf("\t\t\t\t 是否继续查询 (Y/N):");
  panduan = getchar();
  fflush(stdin);           //清空输入缓冲区,为了确保不影响后面的数据读取
  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 是否继续查询 (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 是否继续查询 (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 是否继续查询 (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 找到一个数据名字为%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 现编号: "); 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;
 }
 Save_income();
 if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据日期为%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 现编号: "); 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;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据金额为%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 现编号: "); 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;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }
 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据备注为%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 现编号: "); 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;
 }
 Save_income();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (Inhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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");}
}}

/*********************************支出区******************************************/

void zhichu_menu()               //支出界面
{
 system("cls");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
    printf("\t\t\t\t ****************************\n");
 printf("\t\t\t\t * 欢迎使用家庭财务管理系统 * \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) 继续添加信息 ");
  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 找到一个数据名字为 %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 找到一个数据名字为 %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 找到一个数据名字为 %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 是否继续删除 (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 是否继续查询 (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 是否继续查询 (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 是否继续查询 (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 是否继续查询 (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 找到一个数据名字为%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 现编号: "); 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 ");
  }

 Save_zhichu();
 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据日期为%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 现编号: "); 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;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据金额为%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 现编号: "); 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;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 找到一个数据备注为%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 现编号: "); 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;
 }
 Save_zhichu();
  if(j==0){
  printf("\t\t\t\t 不存在\n ");
  }

 if (zhichuhead != NULL)
 {
  char panduan;
 do{
  printf("\t\t\t\t 是否继续修改 (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 * 欢迎使用家庭财务管理系统 * \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 *       欢迎使用家庭财务管理系统      * \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 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 *      欢迎使用家庭财务管理系统       * \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()                    //统计控制台
{
 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;
}

部分运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

  • C语言通讯录管理系统完整版

    C语言实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算字节//

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

  • 学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生信息的查询 9.密码修改函数 10.学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #inc

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • C语言实现简单学生管理系统

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能.遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助. 1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈.我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他

  • 学生成绩管理系统C语言代码实现

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩

  • 使用C语言中的time函数获取系统时间

    可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算.其原型为:time_t time(time_t * t);如果你已经声明了参数t,你可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数.如果参数为空(NULL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间: 复制代码 代码如下: #i

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • C语言实现家庭理财系统

    本文实例为大家分享了C语言实现家庭理财系统的具体代码,供大家参考,具体内容如下 比较简单 直接上代码: #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]

  • C语言实现小学生考试系统

    本文实例为大家分享了C语言实现小学生考试系统的具体代码,供大家参考,具体内容如下 问题及代码: /*烟台大学计算机学院 题目描述:做一个小学生考试系统,功能包括: (1)利用随机数出10道加法题: (2)小学生用户答题给出每道题的答案: (3)对小学生的答题进行评判: (4)计算出小学生答题正确率. 作者:景怡乐 完成时间:2016年12月29日 */ #include <stdio.h> #include <stdlib.h> #include <time.h> in

  • C语言实现学生选课系统完整版

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo;//课程已选人数 int Melepeo;//课

  • C语言实现学生选课系统

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<conio.h> typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #define CLASS_CLS

  • C语言实现文本编辑器系统

    本文实例为大家分享了C语言实现文本编辑器系统的具体代码,供大家参考,具体内容如下 /*文本编辑器editor源代码*/ #include <stdio.h> #include <conio.h> #include <bios.h> #include <math.h> #define LEFT 0x4b00 /*←:光标左移*/ #define RIGHT 0x4d00 /*→:光标右移*/ #define DOWN 0x5000 /*↓键:光标下移*/ #d

  • C语言实现注册登录系统

    本文实例为大家分享了C语言实现注册登录系统的具体代码,供大家参考,具体内容如下 /* Note:Your choice is C IDE */ #include "stdio.h" #include "string.h" #include "windows.h" //定义变量 char reg_name[30]="",reg_pwd[10]=""; char on_name[30],on_pwd[10];

  • go语言实现简易比特币系统之交易签名及校验功能

    介绍 签名的输入: 待签名的交易数据,包括输入和输出 引用的UTXO信息 私钥 签名的输出: 数字数字签名 公钥 签名的目的 证明交易所引用的UTXO的确属于付款人 证明交易的所有数据的确是付款人提供的,且未被修改过 签名中需要的数据 UTXO中的PubKeyHash,这描述了付款人 新生成UTXO中的PubKeyHash,这描述了收款人 由于每一笔交易都可能引用多个UTXO,因为多个UTXO可能存在于多条交易中.所以我们需要遍历所以的引用交易,并对他们逐个签名 签名过程 用解锁脚本解锁对应的U

  • go语言实现简易比特币系统钱包的原理解析

    钱包基础概念 广义上,钱包是一个应用程序,为用户提供交互界面.钱包控制用户访问权限.管理比特比地址及秘钥.跟踪余额.创建交易和签名交易 狭义上,即从程序员角度来看,"钱包"是指用于存储和管理用户秘钥的数据结构 钱包是私钥的容器,一般是通过结构化文件或简单数据库来实现的 钱包中并不包含比特币.比特币是被记录在比特币网络的区块链中,用户通过钱包中的密钥签名交易,从而控制网络中的比特币,在某种意义上,比特币钱包就是密钥链 钱包结构体 type Wallet struct { //私钥 Pri

  • C语言实现校园导游系统

    本文实例为大家分享了C语言实现校园导游系统的具体代码,供大家参考,具体内容如下 前言 这是大二上学期刚学数据结构完成的课设项目,里面的功能还可以进一步的完善,仅供分享.参考.记录使用,加油! 设计目的 中国地大物博,文化底蕴颇深,旅游资源更是丰富多彩,也越来越流行“大学打卡热”,中国很多大学校园成为了游客们的打卡的“景区”,为了给来访西安邮电大学的游客更加方便.快捷的提供服务信息,以及为在校学生提供合适的行走路线,因此开发“西安邮电大学校园导航系统”给游客以及在校学生提供更好的服务.本次课程设计

  • C语言实现学生考勤系统

    本文实例为大家分享了C语言实现学生考勤系统的具体代码,供大家参考,具体内容如下 项目要求: 学生考勤系统 功能:学生考勤系统应包含各班学生的全部信息.每个学生是一条记录,包括姓名.性别.学号.出勤情况等.本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数. 分步实施: (1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数:(2)最低要求:建立一个文件,包括同一个班的10个学生的必要信息,能对文件进 行补充.修订.删除. 采用结构体数

随机推荐