收藏 分享(赏)

二工大程序设计与实践(2) 个人资金账户管理.doc

上传人:精品资料 文档编号:8887584 上传时间:2019-07-15 格式:DOC 页数:13 大小:17.68KB
下载 相关 举报
二工大程序设计与实践(2) 个人资金账户管理.doc_第1页
第1页 / 共13页
二工大程序设计与实践(2) 个人资金账户管理.doc_第2页
第2页 / 共13页
二工大程序设计与实践(2) 个人资金账户管理.doc_第3页
第3页 / 共13页
二工大程序设计与实践(2) 个人资金账户管理.doc_第4页
第4页 / 共13页
二工大程序设计与实践(2) 个人资金账户管理.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、程序设计与实践实验报告实验二:个人资金账户管理一:实验名称:随机数及其应用二:实验环境: 一台安装有 C 语言编译器的电脑。三:实验目的(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。(3)培养良好的 C 程序设计风格与代码规范意识。四:实验内容:用 c 语言编写代码,并对程序进行调试、改错,使之符合如下具体功能。 资金账户的信息统一放在随机文件中,该随机文件包括的数据项有记录ID、发生日期、发生事件、发生金额(正的表示收入,负的表示支出)和金额。每发生一笔收支,文件要增加一条记录,并计算一次余额。, 程序

2、实现 3 个功能,包括:(1),能创建资金账户文件并添加收入或支出信息记录;(2),能显示所有记录,得知资金账户的收支流水账;(3),能查询最后一条记录,获知账户最后的余额。账户文件名命名为 cashbox.dat,文件部分内容如下; 增加修改资金账户的功能。输入一个记录 ID,如果文件中已存在该记录,则输入新的记录信息并更新资金账户文件中相应记录的信息。要求定义和调用函数 Update Log(),其功能是修改资金账户记录。LongID CreateDateNote Charge Balance1 2006-06-01 alimony 500.00 500.002 2006-06-08 sh

3、opping -300.00 200.003 2006-06-15 shopping -60.00 140.004 2006-06-20 workingpay 200.00 340.005 2006-08-01 scholarship 1000.00 1340.00五:实验步骤:(实验设计,关键代码。实验结果需截图)1.实验设计主函数:给用户显示一个功能菜单界面,通过输入操作序号,调用函数以实现对用户账号进行各种操作。主程序界面:(略)主程序代码:int main(void)FILE *fp;int choice;if(fp=fopen(“cashbox.dat“, “ab+“) = NULL

4、)printf(“can not open file cashbox.dat!n“);exit(0);size = sizeof(struct LogData);while(choice=inputchoice()!=0)switch(choice)case 1:fp=fopen(“cashbox.dat“, “ab+“);AddNewLog(fp);break;case 2:fp=fopen(“cashbox.dat“, “ab+“);ListAllLog(fp);break;case 3:fp=fopen(“cashbox.dat“, “ab+“);QueryLastLog(fp);bre

5、ak;case 4:fp=fopen(“cashbox.dat“, “rb+“);Updatelog(fp);break;case 5:fp=fopen(“cashbox.dat“, “rb+“);Deletelog(fp);break;default:printf(“Input Error.“);break;if(fclose(fp) printf( “Can not close the file!n“ );exit(0);return 0;增加用户账户文件:(源代码)void AddNewLog(FILE *cfptr) struct LogData log,lastlog;long lo

6、gcount;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“,logcount=getLogcount(cfptr);if(logcount0)fseek(cfptr,size*(logcount-1),SEEK_SET);fread(log.logid=lastlog.logid+1;log.bal

7、ance=log.charge+lastlog.balance;elselog.logid=1;log.balance=log.charge;rewind(cfptr);getch();fwrite(fclose(cfptr);列出账户记录:(源代码)void ListAllLog(FILE *cfptr) struct LogData log;long logcount;logcount=getLogcount(cfptr);if(logcount0) fseek(cfptr,0L,SEEK_SET);fread(printf(“logID logdate lognote charge ba

8、lancen“);while(!feof(cfptr)printf(“%6ld %-11s %-15s %10.2lf %10.2lfn“,log.logid,log.logdate,log.lognote,log.charge,log.balance);fread(;elseprintf(“no logs in file!n“);printf(“Press any key to continue.“);getch();查看最后一条账户记录(源代码):void QueryLastLog(FILE *cfptr) struct LogData log;long logcount;logcount

9、=getLogcount(cfptr);if(logcount0)fseek(cfptr,size*(logcount-1),SEEK_SET);fread(printf(“The last log is:n“);printf(“logid:%-6ldnlogdate:%-11snlognote:%-15sn“,log.logid,log.logdate,log.lognote);printf(“charge:%-10.2lfnbalance:%-10.2lfn“,log.charge,log.balance); else printf(“no logs in file!n“);printf(

10、“Press any key to continue.“);getch();增加修改资金账户(源代码)void Updatelog(FILE *cfptr) struct LogData log1000,*plog=log, newlog;long logcount,logid,i,index=-1; printf(“Input LogID:“); scanf(“%ld“,logcount=getLogcount(cfptr);rewind(cfptr); fread(plog,size,logcount,cfptr); for(i=0;i=0) printf(“Input logdate(f

11、ormat:2006-01-01):“);scanf(“%s“,newlog.logdate); printf(“Input lognote:“);scanf(“%s“,newlog.lognote); printf(“Input Charge:Income+ and expend-:“);scanf(“%lf“,if(strcmp(logindex.lognote,newlog.lognote)!=0) strcpy(logindex.lognote,newlog.lognote); if(strcmp(logindex.logdate,newlog.logdate)!=0) strcpy(

12、logindex.logdate,newlog.logdate); if(newlog.charge!=logindex.charge) newlog.balance=logindex.balance-logindex.charge+newlog.charge; logindex.charge=newlog.charge; logindex.balance=newlog.balance;for(i=index+1;i=0) for(i=index;i=logcount-1;i+)logi.logid=i+1;strcpy(logi.logdate,logi+1.logdate); strcpy

13、(logi.lognote,logi+1.lognote); logi.charge=logi+1.charge;logi.balance=logi-1.balance+logi.charge;printf(“logid logdatelognote charge balancen“);for(i=0;ilogcount-1;i+)printf(“%6ld %-11s %-15s %10.2lf %10.2lfn“, logi.logid,logi.logdate,logi.lognote,logi.charge,logi.balance);getch();fp1=fopen(“cashbox.dat“, “wb+“);rewind(fp1); fwrite(plog,size,logcount-1,fp1);fclose(fp1);else printf(“Error logid and try another!n“);printf(“Press any key to continue.“);getch(); 六:实验小结:略。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报