热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

家庭收支软件(C语言)

家庭收支记账软件完成的基本功能1.菜单2.收支明细3.登记收入4.登记支出5.退出系统#define_CRT_SECURE_NO_WARNINGS#include

家庭收支记账软件


完成的基本功能

1.菜单
2.收支明细
3.登记收入
4.登记支出
5.退出系统

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#includestruct MyFamilyAccount {int flag = 0;//表示是否至少有一笔收支char details[3000];//明细double balance;//余额
};char key;//表示用户输入的菜单
int loop = 1;//控制是否退出菜单
char note[20];//收支说明
double money;//收入
char temp[100];//用于格式化收支,并拼接
char choice;//表示用户选择的y/n
//显示明细
void showDetails(struct MyFamilyAccount* myFamilyAccount) {if ((*myFamilyAccount).flag) {printf("%s", (*myFamilyAccount).details);}else {printf("\n当前没有任何收支明细,来一笔吧!");}return;
}//登记收入
void income(struct MyFamilyAccount* myFamilyAccount) {printf("本次收入金额:");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);//拼接到detailsstrcat((*myFamilyAccount).details, temp);(*myFamilyAccount).flag = 1;return;
}//登记支出
void pay(struct MyFamilyAccount* myFamilyAccount) {printf("本次支出金额:");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);strcat((*myFamilyAccount).details, temp);(*myFamilyAccount).flag = 1;
}//退出
void myExit() {printf("\n你是否确定退出? y/n\n:");do {scanf("%c", &choice);getchar();if (choice == 'y' || choice == 'n') {break;}printf("\n输入有误,请重新输入y/n\n:");} while (1);if (choice == 'y') {loop = 0;}
}//显示菜单
void mainMenu(struct MyFamilyAccount* myFamilyAccount) {do {printf("\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':showDetails(myFamilyAccount);break;case '2':income(myFamilyAccount);break;case '3':pay(myFamilyAccount);break;case '4':myExit();}} while (loop);printf("你退出了软件!");getchar();
}int main() {//创建一个结构体变量struct MyFamilyAccount myFamilyAccount;//初始化myFamilyAccount.flag = 0;myFamilyAccount.balance = 1000;//使用拷贝的方式赋值memset(myFamilyAccount.details, 3000, 0);strcpy(myFamilyAccount.details, "\n----------------当前收支明细------------------\n收支\t收支金额\t账户金额\t说明");//调用mainMenu显示菜单mainMenu(&myFamilyAccount);getchar();return 0;
}

运行结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


初级版本代码(未进行封装)

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
int main() {char key;//表示用户输入的菜单int loop = 1;//控制是否退出菜单//登记收入情况,很重要的一点,=""是为了一开始输入1时不出现乱码char details[3000]="\n----------------当前收支明细------------------\n收支\t收支金额\t账户金额\t说明";char note[20];//收支说明double money;//收入double balance = 1000.0;//初始化余额char temp[100];//用于格式化收支,并拼接char choice;//表示用户选择的y/nint flag = 0;//表示是否至少有一笔收支//显示菜单do {printf("\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 (flag) {printf("%s", details);}else {printf("\n当前没有任何收支明细,来一笔吧!");}break;case '2':printf("本次收入金额:");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);//拼接到detailsstrcat(details, temp);flag = 1;break;case '3':printf("本次支出金额:");scanf("%lf", &money);getchar();if (money > balance) {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);strcat(details, temp);flag = 1;break;case '4':printf("\n你是否确定退出? y/n\n:");do {scanf("%c", &choice);getchar();if (choice == 'y' || choice == 'n') {break;}printf("\n输入有误,请重新输入y/n\n:");} while (1);if (choice == 'y') {loop = 0;}}} while (loop);printf("你退出了软件!");return 0;
}//补充学习知识点:
//1.sprintf
//2.字符串的拼接
//3.字符串的输入&
//4.memset

推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有