C語(yǔ)言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)家庭理財(cái)系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
比較簡(jiǎn)單
直接上代碼:
#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 //鏈表申請(qǐng)
{
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; //定義一個(gè)全局空指針?lè)奖愫竺嬉?
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); //向文件寫(xiě)入內(nèi)容
p = p->next; //指向下一個(gè)節(jié)點(diǎn)
}
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() //提前打開(kāi)文件將已有的收入數(shù)據(jù)添加進(jìn)來(lái)(如果沒(méi)有直接跳過(guò))
{
FILE *pp;
pp = fopen("D:\\shouru.dat", "rb");
if(pp != NULL)
{
struct Data linshi; //申請(qǐng)一個(gè)結(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) //分為兩種情況一種為空的時(shí)候一種不為空
{
Inhead = temp;
Intail = temp; //因?yàn)榈谝粋€(gè)元素
}
else
{
Intail->next = temp; //添加到前尾部的后指針
Intail = temp; //尾部指針
}
}
fclose(pp);
}
}
void Openzhichu() //提前打開(kāi)文件將已有的支出數(shù)據(jù)添加進(jìn)來(lái)(如果沒(méi)有直接跳過(guò))
{
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 * 歡迎使用家庭財(cái)務(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)計(jì)操作 \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 * 歡迎使用家庭財(cái)務(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 * 歡迎使用家庭財(cái)務(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.返回上一級(jí) \n");
}
void Income() //進(jìn)入收入界面
{
int choice;
while (1)
{
Income_menu(); //收入菜單顯示
printf("\t\t\t\t 請(qǐng)輸入選擇: ");
scanf("%d", &choice);
fflush(stdin); //等待
if (choice == 0)
{
printf("\t\t\t\t 返回上一級(jí)中...... ");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 輸入錯(cuò)誤!\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 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
part:
if(t==0) printf("\t\t\t\t 請(qǐng)輸入刪除姓名: ");
else
{
printf("\t\t\t\t 請(qǐng)重新輸入刪除姓名: ");
}
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 編號(hào): "); 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 找到一個(gè)數(shù)據(jù)名字為%s,確認(rèn)刪除 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 編號(hào): "); 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 找到一個(gè)數(shù)據(jù)名字為%s,確認(rèn)刪除 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 編號(hào): "); 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 找到一個(gè)數(shù)據(jù)名字為%s,確認(rèn)刪除 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
}
}
void inquire_income() //查詢收入
{
inquire_menu();
int choice;
printf("\t\t\t\t 請(qǐng)輸入你的選擇: ");
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 輸入錯(cuò)誤 "); break;
}
}
void full_name() //通過(guò)名字查詢收入
{
char chazhao[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的名字: ");
gets(chazhao);
struct list *p = Inhead;
while (p != NULL)
{
if (strcmp(p->info.name, chazhao) == 0) //循環(huán)遍歷鏈表
{
printf("\t\t\t\t 編號(hào): "); 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; //到下一個(gè)節(jié)點(diǎn)的頭
}
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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
}
}
void time() //通過(guò)日期查詢收入
{
char chazhao[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的日期: ");
gets(chazhao);
struct list *p = Inhead;
while (p != NULL)
{
if (strcmp(p->info.riqi, chazhao) == 0)
{
printf("\t\t\t\t 編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}
}
void money() //通過(guò)金額查詢收入
{
float chazhao;
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的金額:");
scanf("%f", &chazhao);
fflush(stdin);
struct list *p = Inhead;
while (p != NULL)
{
if (p->info.money == chazhao)
{
printf("\t\t\t\t 編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
}
}
void content() //通過(guò)備注查詢收入
{
char chazhao[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的備注:");
gets(chazhao);
struct list* p = Inhead;
while (p != NULL)
{
if (strcmp(p->info.beizhu, chazhao) == 0)
{
printf("\t\t\t\t 編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\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 即將返回收入操作界面進(jìn)行添加\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| 編號(hào): "); 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() //修改收入控制臺(tái)
{
modify_menu();
int choice;
printf("\t\t\t\t 請(qǐng)輸入你的選擇: ");
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 輸入錯(cuò)誤 "); break;
}
}
void full_name_modify_income() //通過(guò)名字修改收入
{
char xiugai[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的名字: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)名字為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");}
}}
void time_modify_income() //通過(guò)日期修改收入
{
char xiugai[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的日期: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)日期為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");}
}}
void money_modify_income() //通過(guò)金額修改收入
{
float xiugai;
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 空列表?。。n");
printf("\t\t\t\t 請(qǐng)返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的金額:");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)金額為%f,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");}
}}
void content_modify_income() //通過(guò)備注修改收入
{
char xiugai[20];
int j=0;
if(Inhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的備注: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)備注為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan != 'Y'&& panduan != 'y'&&panduan != 'n' && panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回收入操作界面進(jìn)行添加\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 * 歡迎使用家庭財(cái)務(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.返回上一級(jí) \n");
}
void zhichu() //支出界面運(yùn)行
{
int choice;
while (1)
{
zhichu_menu();
printf("\t\t\t\t 請(qǐng)輸入選擇: ");
scanf("%d", &choice);
fflush(stdin);
if (choice == 0)
{
printf("\t\t\t\t 返回上一級(jí)中...... ");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 輸入錯(cuò)誤!\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 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
place :
if(t) printf("\t\t\t\t 請(qǐng)輸入刪除姓名: ");
else
{
printf("\n\t\t\t\t 請(qǐng)重新輸入刪除姓名: ");
}
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 編號(hào): ");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 找到一個(gè)數(shù)據(jù)名字為 %s,確認(rèn)刪除 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 編號(hào): ");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 找到一個(gè)數(shù)據(jù)名字為 %s,確認(rèn)刪除 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 編號(hào): ");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 找到一個(gè)數(shù)據(jù)名字為 %s,確認(rèn)刪除 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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
}
}
void inquire_pay() //查詢支出
{
inquire_menu();
int choice;
printf("\t\t\t\t 請(qǐng)輸入你的選擇: ");
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 輸入錯(cuò)誤 "); break;
}
}
void full_name_pay() //通過(guò)名字查詢支出
{
char chazhao[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的名字: ");
gets(chazhao);
struct list *p = zhichuhead;
while (p != NULL)
{
if (strcmp(p->info.name, chazhao) == 0)
{
printf("\t\t\t\t 編號(hào): ");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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
}}
void time_pay() //通過(guò)日期查詢支出
{
char chazhao[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的日期: ");
gets(chazhao);
struct list* p = zhichuhead;
while (p != NULL)
{
if (strcmp(p->info.riqi, chazhao) == 0)
{
printf("\t\t\t\t 編號(hào): ");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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}}
void money_pay() //通過(guò)金額查詢支出
{
float chazhao;
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的金額:");
scanf("%f", &chazhao);
fflush(stdin);
struct list* p = zhichuhead;
while (p != NULL)
{
if (p->info.money == chazhao)
{
printf("\t\t\t\t 編號(hào): ");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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}}
void content_pay() //通過(guò)備注查詢支出
{
char chazhao[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入查詢的備注: ");
gets(chazhao);
struct list* p = zhichuhead;
while (p != NULL)
{
if (strcmp(p->info.beizhu, chazhao) == 0)
{
printf("\t\t\t\t 編號(hào): ");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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\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 即將返回支出操作界面進(jìn)行添加\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| 編號(hào): ");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() //修改支出控制臺(tái)
{
modify_menu();
int choice;
printf("\t\t\t\t 請(qǐng)輸入你的選擇: ");
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 輸入錯(cuò)誤 "); break;
}
}
void full_name_modify_pay() //通過(guò)名字修改支出
{
char xiugai[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的名字: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)名字為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}}
void time_modify_pay() //通過(guò)日期修改支出
{
char xiugai[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 空列表?。?!\n");
printf("\t\t\t\t 請(qǐng)返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的日期: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)日期為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}}
void money_modify_pay() //通過(guò)金額修改支出
{
float xiugai;
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的金額:");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)金額為%f,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}}}
void content_modify_pay() //通過(guò)備注修改支出
{
char xiugai[20];
int j=0;
if(zhichuhead==NULL){
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");
}
else{
printf("\t\t\t\t 請(qǐng)輸入修改的備注: ");
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 原編號(hào): "); 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 找到一個(gè)數(shù)據(jù)備注為%s,確認(rèn)修改 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)編號(hào): "); 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 輸入錯(cuò)誤!\n");}
}while(panduan !='Y'&& panduan != 'y'&&panduan != 'n'&& panduan != 'N');
}
else{
printf("\t\t\t\t 目前為空列表!\n");
printf("\t\t\t\t 即將返回支出操作界面進(jìn)行添加!!!!!\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 * 歡迎使用家庭財(cái)務(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.返回上一級(jí) \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 * 歡迎使用家庭財(cái)務(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.返回上一級(jí) \n");
}
/****************************-----統(tǒng)計(jì)區(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 * 歡迎使用家庭財(cái)務(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.返回上一級(jí) \n");
}
void Tongji() //統(tǒng)計(jì)控制臺(tái)
{
while (1)
{
tongji_menu();
int choice;
printf("\t\t\t\t 請(qǐng)輸入你的選擇: ");
scanf("%d", &choice);
if (choice == 0)
{
printf("\t\t\t\t 返回上一級(jí)中...... ");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 輸入錯(cuò)誤 "); 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 即將前往收入操作界面進(jìn)行添加\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 即將前往支出操作界面進(jìn)行添加\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 即將返回操作界面進(jìn)行添加\n");
printf("\t\t\t\t 正在返回......");
system("PAUSE");}
}
/*******************************************************************/
void Quit()//退出
{
char panduan;
printf("\t\t\t\t 確認(rèn)退出 (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 密碼錯(cuò)誤?。?! ");
}
else if(mm!=0&&nn==0)
{
printf("\n\t\t\t\t \t 賬號(hào)錯(cuò)誤!??! ");
}
else{
printf("\n\t\t\t\t \t 賬號(hào)或密碼錯(cuò)誤?。?! ");
}
system("PAUSE");
t=0;
}
menu();
printf("\t\t\t\t\t 賬號(hào):");
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 請(qǐng)輸入你的選擇: ");
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 輸入錯(cuò)誤 "); break;
}
}
return 0;
}
部分運(yùn)行結(jié)果:


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言通訊錄管理系統(tǒng)完整版
- C語(yǔ)言編寫(xiě)學(xué)生成績(jī)管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
- 使用C語(yǔ)言中的time函數(shù)獲取系統(tǒng)時(shí)間
- 學(xué)生信息管理系統(tǒng)C語(yǔ)言版
- C語(yǔ)言職工信息管理系統(tǒng)源碼
- C語(yǔ)言圖書(shū)管理系統(tǒng)簡(jiǎn)潔版
- 學(xué)生成績(jī)管理系統(tǒng)C語(yǔ)言代碼實(shí)現(xiàn)
- C語(yǔ)言利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單學(xué)生管理系統(tǒng)
相關(guān)文章
C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例
這篇文章主要介紹了C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例的相關(guān)資料,這里提供實(shí)例代碼幫助大家學(xué)習(xí)掌握,需要的朋友可以參考下2017-08-08
fatal error LNK1104: 無(wú)法打開(kāi)文件“l(fā)ibc.lib”的解決方法
本篇文章是對(duì)fatal error LNK1104: 無(wú)法打開(kāi)文件“l(fā)ibc.lib”的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
這篇文章主要介紹了C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-04-04
VC++ 字符串String MD5計(jì)算小工具 VS2008工程
基于字符串加密的MD5算法,VS2008 VC++,多字節(jié)編譯工程。主要代碼如下,實(shí)現(xiàn)了ANSI字符串加密與Unicode字符串加密,需要的朋友可以參考下2017-07-07
C++ opencv ffmpeg圖片序列化實(shí)現(xiàn)代碼解析
這篇文章主要介紹了C++ opencv ffmpeg圖片序列化實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
C++游戲編程之模擬實(shí)現(xiàn)鍵盤(pán)打字程序
這篇文章主要介紹了通過(guò)C++模擬實(shí)現(xiàn)鍵盤(pán)打字的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
c++回溯法解決1到9之間插入加減或空使運(yùn)算結(jié)果為100
編寫(xiě)一個(gè)在1,2,…,9(順序不能變)數(shù)字之間插入+或-或什么都不插入,使得計(jì)算結(jié)果總是100的程序,并輸出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1002021-10-10
詳解C++中String類(lèi)模擬實(shí)現(xiàn)以及深拷貝淺拷貝
這篇文章主要介紹了詳解C++中String類(lèi)模擬實(shí)現(xiàn)以及深拷貝淺拷貝的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的方法,需要的朋友可以參考下2017-10-10
C++ 數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)(前序/中序/后序遞歸、非遞歸遍歷)
這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)(前序/中序/后序遞歸、非遞歸遍歷)的相關(guān)資料,這里提供實(shí)例代碼來(lái)幫助大家理解掌握二叉樹(shù),需要的朋友可以參考下2017-07-07

