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

zz/2024/7/17 21:24:07

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();
}

 


http://www.ngui.cc/zz/1545149.html

相关文章

好用erp管理软件

好用erp管理软件 好的ERP软件应该是SAP和Oracle ERP&#xff0c;但是价格也是相当的贵。降一档次的就是金蝶用友&#xff0c;亿看ERP&#xff0c;管家婆等等了&#xff0c;这些应该性价比比较高&#xff0c;反正还是要看自己了解了&#xff0c;多看看&#xff0c;找到最属于自…

外贸软件之纯贸易外贸管理软件

外贸企业之纯贸易型外贸企业面临的痛点及难点有哪些&#xff1f;产品类别复杂&#xff1b;业务环节繁琐&#xff0c;疏漏多&#xff1b;客户资源容易流失&#xff1b;客户关系难管理&#xff1b;协作管理不规范……​ 汇信外贸管理软件如何解决这些问题呢&#xff1f; 【客户管…

旅行社管理软件

做这个软件之前&#xff0c;旅行社给我的印象就是“拉客”与“接客”&#xff0c;业务模式应该比较简单。但做起这样一个旅行社管理软件&#xff0c;才发现麻雀虽小、五脏俱全&#xff0c;一个旅行社的运作&#xff0c;牵扯到的方方面面远远超出自己之前的理解。 客户要求以团控…

C6软件测试大乐,软件测试大作业——社团管理系统

《软件测试大作业——社团管理系统》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《软件测试大作业——社团管理系统(19页珍藏版)》请在人人文库网上搜索。1、山东科技大学软件测试技术与工具课程设计报告专 业&#xff1a; 软件工程 班级学号&#xff1a;1学生姓名&…

java swing mysql 实现的家庭收支管理系统项目源码

&#xfeff;&#xfeff;大家好&#xff0c;今天给大家演示一下一款由Java swing mysql实现的简单的家庭收支情况管理系统&#xff0c;也可以叫个人消费情况记录软件&#xff0c;功能比较紧凑简单&#xff0c;数据库采用的是mysql&#xff0c;非常适合Java初学者和学生党参看学…

基于android的家庭收支管理软件

--------------------------------------------------------------分割线--------------------------------------------------------------万事开头难&#xff0c;中间难&#xff0c;结尾也难。然而既然我已经创建了该博客&#xff0c;那么就要坚持下去。也是出于偶然看到了一…

收支系统php,财务收支管理软件系统

.如果真 (新收入 ≠ 0)总收入 &#xff1d; 总收入 &#xff0b; 新收入写配置项 (配置项路径, “总收入”, “金额”, 到文本 (总收入))更新收支总数 ().如果 (打开 (“财务收支.edb”, , , , , , ))加空记录 ()写 (#消费类型, “收入”)写 (#消费金额, 到小数 (窗口_添加新收…

MySQL 笛卡尔集

交叉连接 &#xff1a;cross join select * from student cross join 返回的是笛卡尔集的数据&#xff0c;存在无意义数据 取除无用数据&#xff08;取除笛卡尔积&#xff09; select * from student cross join score whrer student.sonscore.Sno corss join可以用逗号代替…

java 笛卡尔积_使用Guava来计算笛卡尔积

以前做项目的时候计算笛卡尔积的时候&#xff0c;总是使用各种for循环来嵌套&#xff0c;最后往往在Sonar代码检查的时候总是会报警说for循环嵌套过深。今天才知道Guava原来已经为我们提供了优雅的计算笛卡尔积的方法。比如我们要计算3个List的笛卡尔积&#xff0c;每个list的内…

mysql 笛卡尔积

1、mysql笛卡尔积 如图&#xff1a;我定义3张表&#xff08;A、B、C&#xff09; 执行如下sql&#xff0c;查看执行顺序是 a-->b-->c 此时我改变A和C表的数据个数 执行顺序变成了c-->b-->a 相同的sql&#xff0c;由于表数量的改变造成表的执行顺序不一致的原因是&…