基于文本界面的家庭收支软件

it2024-01-02  73

1.项目展示

 

 

2.项目代码

#include <stdio.h> #include <string.h> //定义一个结构体 struct MyFamilyAccount{ int flag;//表示至少有一笔收入或者支出 char details[3000];//明细 double balance;//余额 }; //定义相关的变量 char key=' '; //表示用户输入了那个菜单 int loop=1; //控制是否退出菜单 char note[20]=" ";//对收入或者支出的说明 double money=0.0; char temp[100]=" ";//用于格式化每次的收入或者支出,然后拼接到details char choice=' '; //使用函数退出 void myexit(){ printf("\n你确定要退出吗? y/n"); do{ scanf("%c",&choice); getchar(); if(choice=='y'||choice=='n'){ break; } printf("\n你的输入有误,请重新输入 y/n"); } while(1); if(choice=='y'){ loop=0; } } //使用函数显示明细 void showDetails(struct MyFamilyAccount *myFamilyAccount){ if((*myFamilyAccount).flag) { printf("%s",(*myFamilyAccount).details); } else{ printf("\n当前没有收支明细...来一笔吧!"); } } //使用函数,完成登记收入 void income(struct MyFamilyAccount *myFamilyAccount){ printf("\n本次收入金额:"); scanf("%lf",&money); getchar(); (*myFamilyAccount).balance+=money;//更新余额 printf("\n本次收入说明"); scanf("%s",note); getchar(); sprintf(temp,"\n收入\t%.2f\t\t%.2f\t\t%s",money,(*myFamilyAccount).balance,note); //将本次信息写入到temp中 strcat((*myFamilyAccount).details,temp);//将信息拼接到details (*myFamilyAccount).flag=1; } //完成一个登记支出 void pay(struct MyFamilyAccount *myFamilyAccount){ printf("\n本次支出的金额:"); scanf("%lf",&money); getchar(); if(money>(*myFamilyAccount).balance){ printf("\n余额不足...."); return; } printf("\n本次支出的说明:"); scanf("%s",note); getchar(); (*myFamilyAccount).balance-=money;//更新余额 sprintf(temp,"\n支出\t%.2f\t\t%.2f\t\t%s",money,(*myFamilyAccount).balance,note); //将本次信息写入到temp中 strcat((*myFamilyAccount).details,temp); (*myFamilyAccount).flag=1; } //函数专门用于显示菜单 void mainMenu(struct MyFamilyAccount *myFamilyAccount){ do{ printf("\n\n-----------------家庭收支记账软件---------------"); printf("\n\n 1 收支明细 "); printf("\n 2 登记收入 "); printf("\n 3 登记支出 "); printf("\n 4 退 出 "); printf("\n\n 请选择(1-4):"); scanf("%c",&key); getchar(); switch (key){ case'1': showDetails(myFamilyAccount); break; case'2': income(myFamilyAccount); break; case'3': pay(myFamilyAccount); break; case'4': myexit(); } } while(loop); printf("\n你退出了家庭财务软件QAQ"); getchar(); } void main(){ //创建一个结构体变量 struct MyFamilyAccount myFamilyAccount; //初始化 myFamilyAccount.flag=0; myFamilyAccount.balance=1000.0; //使用拷贝的方式赋值 memset(myFamilyAccount.details,3000,0); strcpy(myFamilyAccount.details,"-----------------当前收支明细记录-----------------\n收支\t收支金额\t账户金额\t说 明"); //调用mainMenu显示菜单 mainMenu(&myFamilyAccount); getchar(); }

 

最新回复(0)