关于c语言中的家庭收支程序

第一个为无函数的,直接无脑void main程序的维护性极差

第二个为改进后的,使用了函数。

优化前

-------------------------------------家庭收入支出--------------------------------------#include<stdio.h>
#include<string.h>
void main()
{//完成1  显示菜单。//分析//使用do--while循环//完成2  登记收入 //1  需要一个字符串记录收入//完成6//在支出时判断余额是否足够,并给出提示char key='  ';//表示用户输入了那个菜单int a=1;//改变量控制是否退出菜单char details[5000]="----------当前收支明细-----------\n收支\t收支金额\t账户余额\t说明";char note[50]="";//对收支的说明char temp[100]="";//用于格式化每次的收支,并且拼接到details中double money=0.0;double balance=1000.0;//表示账户余额char choice=' ';//表示用户选择int b=0; //表示是否有收入或者支出do{printf("\n\n\n------------------家庭收支记账软件-------------------------");printf("\n                     1 收支明细                                 ");printf("\n                     2 登记收入                              ");printf("\n                     3 登记支出");printf("\n                     4 退    出");printf("\n                     请选择1~4: ");scanf("%c",&key);getchar();//过滤回车switch(key){case'1':if(b)printf("%s",details);elseprintf("当前没有任何收支     赶紧来一笔");break;case'2':printf("\n本次收入金额为:");scanf("%lf",&money);getchar();//过滤回车balance+=money;//更新余额printf("\n本次收入说明:");scanf("%s",note);getchar(); //过滤回车  sprintf(temp,"\n收入\t%.2f\t\t%.2f\t\t%s",money,balance,note);//将本次信息,收入到temp中//将信息拼接到detailsstrcat(details,temp);b=1;break;case'3':printf("\n本次支出的金额");scanf("%lf",&money);getchar(); //过滤回车//判断余额是否足够if(money>balance)//余额不足{printf("余额不足");printf("\n穷逼赶紧去赚钱");break;}printf("\n本次支出说明:");scanf("%s",note);getchar(); //过滤回车balance-=money;sprintf(temp,"\n支出\t%.2f\t\t%.2f\t\t%s",money,balance,note);//将本次信息,收入到temp中b=1;break;case'4':printf("\n你确定要退出吗?y/n");do{scanf("%c",&choice);getchar();if(choice=='y'||choice=='n')break;printf("\n你输入的信息有误请重新输入y/n");}while(1);    if(choice=='y')a=0;}}while(a);printf("你退出了软件");
}

优化后

//--------------------------------优化程序---------------------------
#include<stdio.h>
#include<string.h>
//定义一个结构体
struct Myaccount
{int b;//表示是否有1笔收支记录char details[3000];//明细double balabce;
};char key=' ';//表示用户输入了那个菜单int a=1;//改变量控制是否退出菜单int c;char temp[100]="";//用于格式化每次的收支,并且拼接到details中double money=0.0;char note[50]="";//对收支的说明char choice=' ';//表示用户选择void pay(struct Myaccount *myaccount){printf("\n本次支出的金额");scanf("%lf",&money);getchar(); //过滤回车//判断余额是否足够if(money>(*myaccount).balabce )//余额不足{printf("余额不足");printf("\n穷逼赶紧去赚钱");return;}printf("\n本次支出说明:");scanf("%s",note);getchar(); //过滤回车(*myaccount).balabce -=money;sprintf(temp,"\n支出\t%.2f\t\t%.2f\t\t%s",money,(*myaccount).balabce ,note);//将本次信息,收入到temp中(*myaccount).b=1;return;
}void show(struct Myaccount*myaccount){if((*myaccount).b)printf("%s",(*myaccount).details );elseprintf("当前没有任何收支     赶紧来一笔");return;}int text(){printf("\n你确定要退出吗?y/n");do{scanf("%c",&choice);getchar();if(choice=='y'||choice=='n')break;printf("\n你输入的信息有误请重新输入y/n");}while(1); if(choice=='y')return a=0;
}
void income(struct Myaccount*myaccount){printf("\n本次收入金额为:");scanf("%lf",&money);getchar();//过滤回车(*myaccount).balabce+=money;//更新余额printf("\n本次收入说明:");scanf("%s",note);getchar(); //过滤回车   sprintf(temp,"\n收入\t%.2f\t\t%.2f\t\t%s",money,(*myaccount).balabce,note);//将本次信息,收入到temp中//将信息拼接到detailsstrcat((*myaccount).details ,temp);(*myaccount).b=1;return;
}void mainMenu(struct Myaccount*myaccount){
//用于显示菜单do{printf("\n\n\n------------------家庭收支记账软件-------------------------");printf("\n                     1 收支明细                              ");printf("\n                     2 登记收入                              ");printf("\n                     3 登记支出");printf("\n                     4 退    出");printf("\n                     请选择1~4: ");scanf("%c",&key);getchar();//过滤回车switch(key){case'1':show(myaccount);case'2':income(myaccount);case'3':pay(myaccount);case'4':c=text();}}while(c);printf("你退出了软件");}
void main(){struct Myaccount myaccount;//初始化myaccount.b=0;myaccount.balabce=1000;//使用拷贝的方式赋值memset(myaccount.details,3000,0);strcpy(myaccount.details ,"----------当前收支明细-----------\n收支\t收支金额\t账户余额\t说明");//调用mainMenu显示菜单mainMenu(&myaccount);getchar();
}

c语言家庭收入支出程序相关推荐

  1. Java项目一之实现家庭收入支出登记系统

    家庭收入支出登记系统 目录 一.主要涉及的知识点 二.工具类 Utility.java 介绍 三.主体流程图 四.实践操作 五.结果分析 一.主要涉及的知识点  局部变量和基本数据类型  循环语句 ...

  2. 基于Java小案例家庭收入支出记录

    基于Java小案例家庭收入支出记录 跟着视频来写的,不喜勿喷,谢谢 package JavaText;public class FamilyAccount {public static void ma ...

  3. Java基础必须项目一(家庭收入支出软件,详细注释,并且添加日期记录功能)

    本软件是模拟家庭收入支出软件,所以登记的数据没有和数据库交互,不能保留.学习这个小项目只是为了熟悉Java中知识点的运用并且了解一些编程的思修.本人也是小白一枚,所以代码都有注释,可以帮助你更好的理清 ...

  4. 家庭收入支出系统管理c语言,家庭支出管理系统—c语言程序的设计说明.doc

    . . . . .下载可编辑. 程序设计报告 ( 2015 / 2016 学年 第 二 学期) 题 目:家庭支出管理系统 专 业 微电子科学与工程 组长 学号姓名 组员 学号姓名 指 导 教 师 许棣 ...

  5. 项目:家庭收入支出记账软件(JAVA语言)

    import java.util.Scanner;/* Utility工具类:将不同功能封装为方法,通过调用方法使用它的功能,不需考虑细节 */ public class Utility {priva ...

  6. java基于微信小程序的个人家庭收入支出记账本小程序 uniapp

    随着我国大学生数量的不断增加,如果能够让大学生更好的养成对应的消费习惯,并且能够自控的管理好自己的收支情况,是很多教育工作者研究的一个主要问题之一,本系统的开发主要是为了在一定程度上帮助大学生养成良好 ...

  7. 某程序媛哀叹:北京好几套房,家庭收入200多万,但孩子是渣娃,人生没意义了!...

    大多数人为如何挣钱而烦恼,但有钱人也有自己的烦恼--钱挣够了,却找不到人生的意义. 一个网友吐槽:虽然北京有好几套房,家庭收入200多万,但孩子却是个渣娃,感觉人生都没有意义了!怎么办? 楼主介绍了自 ...

  8. 用计算机制作一张家庭年收支表,如何制作excel收入支出表

    如何制作excel收入支出表 以一个简单的收支表格记账为例.我们首先打开一个excel空白文件.用这张表格记录时间.收入.支出和结余等要素. 我们用鼠标点中A1空白格,这时候在工具栏A1后面出现空白& ...

  9. c语言家庭财务管理数组,C语言家庭财务管理统设计报告.doc

    C语言家庭财务管理统设计报告 东华理工大学 C语言课程设计实验报告 题目:家庭账务管理 姓名:曾祥华 班级:1321815 学号:201320181518 指导老师:程志梅 一 案例描述 1.总体描述 ...

最新文章

  1. Matlab编程与数据类型 -- 单元数组
  2. 面试官:因为这个语言,我淘汰了90%的人!
  3. 《CCNP TSHOOT 300-135认证考试指南》——5.1节“我已经知道了吗?”测试题
  4. 泛域名PHP,泛域名实现无限二级域名功能
  5. OpenCV在浏览器中运行深度网络
  6. 华为交换机恢复出厂设置
  7. oopc——1.抽象
  8. 全球首发!计算机视觉Polygon Mesh Processing总结9——Triangle-Based Remeshing
  9. ROC曲线和AUC 原理与实现——Python实战
  10. ORACLE SQL功能优化系列(一)
  11. 诸葛io的技术架构图_阿里P8总结三面四轮技术面试:Tomcat+Redis+线程池锁+悲观锁+NIO...
  12. mybatis动态sql片段与分页,排序,传参的使用与一对多映射与resultMap使用
  13. 支撑江苏移动百亿级话单实时监控是这样实现的
  14. LINUX编译xcb/xcb-proto
  15. 7行代码让B站崩溃3小时,竟因“一个诡计多端的0”
  16. Python多张图片合并成一个PDF
  17. 护网必备技能:Spring Boot 接口数据加解密 功能实现
  18. Wav ,flac,mp3,ogg 等的区别
  19. 基于cocos2d-x简易泡泡龙游戏二
  20. 控制Canon相机进行拍照,并把拍摄的照片存储到D盘

热门文章

  1. 仙人掌之歌——进军To C直播(1)
  2. linux的ctrl c信号,linux ctrl+c信号
  3. 关于Nginx的优化
  4. DataTables在IE8下报'style' 为空或不是对象错误问题 , SCRIPT5007: 无法获取未定义或 null 引用的属性“style”
  5. php seo收录统计,php - SEO 统计算法
  6. 仅自己电脑识别不了自己U盘,却能识别其他U盘
  7. 公有链、联盟链、私有链及网络配置介绍
  8. 如何在matlab图中以分数的形式显示除号
  9. 敏捷开发第二阶段每日站立会议(五)
  10. 基于html5贪吃蛇小游戏,使用HTML5 Canvas制作贪吃蛇小游戏