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)大學(xué)生考勤管理系統(tǒng)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)大學(xué)生考勤管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12使用VS Code的開發(fā)環(huán)境配置教程圖文詳解
這篇文章主要介紹了使用VS Code的開發(fā)環(huán)境配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05關(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-05C/C++中一次性執(zhí)行多個DOS命令的實現(xiàn)思路
在C語言中執(zhí)行DOS命令的方法很多,在這就不一給大家一一介紹了,本文重點給大家介紹C/C++中一次性執(zhí)行多個DOS命令的實現(xiàn)思路,需要的朋友參考下2017-12-12解析C++編程中virtual聲明的虛函數(shù)以及單個繼承
這篇文章主要介紹了C++編程中virtual聲明的虛函數(shù)以及單個繼承,剖析虛函數(shù)和單個基類所能夠繼承的成員,要的朋友可以參考下2016-01-01