问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C++写的个人资金账户管理

发布网友 发布时间:2022-05-01 07:42

我来回答

1个回答

热心网友 时间:2022-06-26 06:13

#include"stdio.h"
#include"stdlib.h"
long size; /*当前最近一次的流水号*/
struct LogData{ /*记录的结构*/
long logid; /*记录ID*/
char logdate[11]; /*记录发生日期*/
char lognote[15]; /*记录事件说明*/
double charge; /*发生费用:负表示支出,正表示收入*/
double balance; /*余额*/
};

int inputchoice() /*选择操作参数*/
{
int mychoice;
printf("\nEnter your choice:\n");
printf("1-Add a new cash LOG.\n2-List All Cash LOG.\n");
printf("3-Query Last Cash LOG.\n0-End program.\n");
scanf("%d",&mychoice);
return mychoice;
}

long getLogcount(FILE*cfptr) /*获取文件记录总数*/
{
long begin,end,logcount;
fseek(cfptr,0L,SEEK_SET);
begin=ftell(cfptr);
fseek(cfptr,size,SEEK_END);
end=ftell(cfptr);
logcount=(end-begin)/size-1;
return logcount;
}

void ListAllLog(FILE*cfptr) /*列出所有收支流水帐*/
{
struct LogData log;
fseek(cfptr,0L,SEEK_SET); /*定位指针到文件开始位置*/
fread(&log,size,1,cfptr);
printf("logid logdata lognote charge balance\n");
while(!feof(cfptr)){
printf("%6ld%-11s%-15s%10.2lf%10.2lf\n",
log.logid,log.logdata,log.lognote,log.chargge,log.balance);
fread(&log.size,1,cfptr);
};
}

void QueryLastLog(FILE*cfptr) /*查询显示最后一条记录*/
{
struct LogData log;
long logcount;
logcount=getLogcount(cfptr);
if(logcount>0) /*表示有记录存在*/
{
fseek(cfptr,size*(logcount-1),SEEK_SET); /*定位最后记录*/
fread(&log,size,1,cfptr); /*读取最后记录*/
printf("The last log is:\n");
printf("logid:%-6ld\nlogdata:%-11s\nlognote:%-15s\n",
log.logid,log.logdata,log.lognote);
printf("charge:%-10.2lf\nbalance:%-10.2lf\n",
log.charge,log.balance); /*显示最后记录内容*/
}
else printf("no logs in file!\n");
}

void AddNewLog(FILE*cfptr) /*添加新纪录*/
{
struct LogData log,lastlog;
long logcount;
printf("Input logdate(format:2006-01-01):");
scanf("%s",log.logdate);
printf("Input lognote:");
scanf("%s",log.lognote);
printf("Input Charge:Income+and expend-:");
scanf("%lf",&log.charge);
logcount=getLogcount(cfptr); /*获取记录数*/

if(logcount>0){
fseek(cfptr,size*(logcount-1),SEEK_SET);
fread(&lastlog,size,1,cfptr); /*读入最后记录*/
log.logid=lastlog.logid+1; /*记录号按顺序是上次的+1*/
log.balance=log.charge+lastlog.balance;
}
else{ /*如果文件是初始状态,记录数为0*/
log.logid=1;
log.balance=log.charge;
}
rewind(cfptr);
printf("logid=%ld\n",log.logid);
fwrite(&log.sizeof(struct LogData),1,cfptr); /*写入记录*/
}

FILE*openfile(char*openmode) /*打开文件*/
{
FILE*fp;
if((fp=fopen("cashbox.dat",openmode))==NULL){
printf("can not open file cashbox.dat!\n");
exit(0);
}
return(fp);
}
int main(void)
{
FILE*fp;
int choice;
size=sizeof(struct LogData);
while((choice=inputchoice())!=0){
switch(choice){
case1:
fp=openfile("ab+");
AddNewLog(fp);
break;
case2: /*列出所有的收入支出情况*/
fp=openfile("rb");
ListAllLog(fp);
break;
case3: /*查询最后记录及余额*/
fp=openfile("rb");
QueryLastLog(fp);
break;
default:
printf("Input Error.");
break;
}
}
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 个人帐户的管理运营 简述军人个人住房资金账户管理原则。 中国银行个人网银资金管理功能介绍 您好,我的手机是华为7,老是显示:语音助手正在录音,因此讯飞语音引擎暂时无法录音,怎么解决 你好,打电话时的录音在哪t 你好苹果7通话录音功能怎么用 数据库里面的表、触发器、存储过程、视图这些都是什么东西??? 你好,请问那个微信语音怎么弄 为什么总被钉钉文案扎心 钉钉考勤人性化体现在哪里? 家电维修,结账时扫他手机里的二维码付款安全吗? 一首歌叫什么岛恋人 有首歌我忘记歌名和歌词了,好像叫什么岛什么都,女生唱的,不是广岛之恋。 广岛恋人 广岛之恋 歌词 广岛恋人歌词 莫文蔚张洪量广岛恋人歌词 想买个4公分的广岛恋人樱花苗,用多大的花盆比较好? 广岛恋人樱花树哪有卖 广岛恋人樱花树是什么形状 广岛恋人樱花可以长多大 资金账户的管理包括哪些内容 医保个人账户管理办法 央行改进个人银行账户分类管理我们该如何用? 从伊宁火车站到六十六团有多远 个人银行账户管理新政将实施 Ⅰ,Ⅱ,Ⅲ三类账户是怎么回事 有人知道66团打字兼职 那个晴天大大的团队是不是真的 ?求*,不知道的就不要回答了,骗子不要来 66团有没有法律援助? 66团兼职挂机是真的吗 谁知道从伊犁的66团到奎屯独山子油库有多少公里! 可克达拉市市长 谁知道兵团农四师65。66团场的网址 伊宁县的作文 贺屈保简介? 大神们指教下,银行卡被异地*冻结了,刚才去银行问了下,说是冻结3天,这个怎么处理啊, 银行卡被异地公安局冻结,怎么办? 银行卡被异地公安冻结怎么办,到底多久才解冻? 重庆一火锅店推出榴莲火锅,这是美味还是重口味? 吃榴莲好么? 狗头大作战FPs版怎么下载 夏日假期美食——榴莲!这样的榴莲冰淇淋你们吃过吗?