简单冗杂代码篇:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char key=' ';
int loop = 1;
char details[3000]="------------当前收支明细记录-----------\n收支\t收支金额\t账户金额\t说 明\n";
char note[20]="";//收入或者指出的说明
char temp[100]="";//用于格式化每次的收入或支出,然后拼接到details
double money = 0.0;
double balance = 1000.0; //账号余额,初始值
char choice =' ';//判断是否退出y/n
int flag = 0; //判断是否有明细
do{
printf("\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("当前没有明细,请来一笔吧!");
}
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\t%s",money,balance,note);//将本次信息,写入到temp字符
//拼接到details
strcat(details,temp);
flag = 1;
break;
case'3':
printf("\n本次支出金额:");
scanf("%lf",&money);
getchar(); //过滤回车
if(money>=balance){
printf("余额不足!");
}else {
balance-=money; //更新金额
printf("\n本次支出说明:");
scanf("%s",note);
getchar();
sprintf(temp,"\n支出\t%.2f\t\t%.2f\t\t\t%s",money,balance,note);//将本次信息,写入到temp字符
//拼接到details
strcat(details,temp);
flag = 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'){
loop = 0;
}
}
}while(loop);
printf("你已经退出软件!");
getchar();
}