1、个人资金账户管理实验报告程序设计与实践实验报告实验一:个人资金账户管理 姓名: * 学号: * 班级: *实验时间:*/*/*-*/*/* 一:实验名称:个人资金账户管理二:实验环境: 一台安装有VC6.0程序的电脑。三:实验目的(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。(3)培养良好的C程序设计风格与代码规范意识。四:实验内容:用C语言编程,实现对个人资金帐户的管理。五:实验步骤:(实验设计,关键代码。实验结果需截图)1、总体程序框图2、各模块程序流程图1)、主函数(程序流程图及运行界面) 主函数程
2、序流程图简要说明:该功能主要是给用户显示一个功能菜单界面。 主函数运行界面2)、录入资金信息(源代码及运行界面) 程序代码void addNewLog() FILE *tfp; int m=0; char ch2; struct LogData logMAX; if(tfp=fopen(cashbox.dat,ab+)=NULL) printf(不能打开文件!n); exit(0); while(!feof(tfp) /*统计记录的条数*/ if(fread(&logm,LEN,1,tfp)=1) m+; fclose(tfp); if(tfp=fopen(cashbox.dat,wb)=NU
3、LL) printf(不能打开文件!n); exit(0); for(int i=0;im;i+) fwrite(&logi ,LEN,1,tfp);/*向指定的磁盘文件写入信息*/ printf(是否添加账户资金信息(Y/N): ); scanf(%s,ch); while(strcmp(ch,Y)=0|strcmp(ch,y)=0) printf(请输入以下信息.nn); printf(日期(格式: ) :); scanf(%s,&logm.logdate); printf(说明:); scanf(%s,&logm.lognote); printf(费用(收入为+,支出为-) :); sc
4、anf(%lf,&logm.charge); logm.logid=m+1; if(m=0) logm.balance=0; logm.balance=logm.balance+logm.charge; else if(m0) logm.balance=logm-1.balance+logm.charge; if(fwrite(&logm,LEN,1,tfp)!=1) printf(保存失败!); else printf(该记录保存成功!n); m+; printf(是否继续添加(Y/N):); scanf(%s,ch); fclose(tfp); 运行界面3)、显示资金信息(源代码及运行界面
5、) 程序代码void listLog() FILE *tfp; struct LogData logMAX; int i,n,m=0; if(tfp=fopen(cashbox.dat,ab+)=NULL) printf(不能打开文件!n); exit(0); while(!feof(tfp) if(fread(&logm,LEN,1,tfp)=1) m+; fclose(tfp); printf(请选择:n1、查询全部n2、查询余额n您的选择是:); scanf(%d,&n); switch(n) case 1: printf(编号tt日期tt说明tt费用tt余额n); for(i=0;im
6、;i+) printf(%2d%21s%15s%15.0lf%15.0lfn,logi.logid,logi.logdate, logi.lognote,logi.charge,logi.balance); system(pause); break; case 2: printf(编号tt日期tt说明tt费用tt余额n); printf(%2d%21s%15s%15.0lf%15.0lfn,logm-1.logid,logm-1.logdate,logm-1.lognote,logm.charge,logm-1.balance); system(pause); break; 运行界面3)、修改
7、资金信息(源代码及运行界面) 程序代码void updateLog() FILE *tfp; char ch2; struct LogData logMAX; int t,n,m=0; if(tfp=fopen(cashbox.dat,a+)=NULL) printf(不能打开文件!n); exit(0); while(!feof(tfp) if(fread(&logm,LEN,1,tfp)=1) m+; fclose(tfp); if(m=0) printf(没有找到该记录!n); return; else printf(请输入你要修改的记录的ID:); scanf(%d,&n); for(
8、int i=0;im;i+) if(n=logi.logid) t=i; if(t=m) printf(没有找到该记录!n); return; printf(编号tt日期tt说明tt费用tt余额n); printf(%2d%21s%15s%15.0lf%15.0lfn,logt.logid,logt.logdate,logt.lognote,logt.charge,logt.balance); printf(是否对该记录进行修改(Y/N):); scanf(%s,ch); if(strcmp(ch,Y)=0|strcmp(ch,y)=0) printf(请输入以下信息.nn); printf(
9、日期(格式: ) :); scanf(%s,&logt.logdate); printf(说明:); scanf(%s,&logt.lognote); printf(费用(收入为+,支出为-) :); scanf(%lf,&logt.charge); logt.balance=logt-1.balance+logt.charge; if(tfp=fopen(cashbox.dat,w)=NULL) printf(不能打开文件!n); exit(0); for(int j=0;jm;j+) logj.balance=logj-1.balance+logj.charge; if(fwrite(&l
10、ogj,LEN,1,tfp)!=1) printf( 不能保存!n); fclose(tfp); return; else printf(该记录修改成功!n); fclose(tfp); system(pause); fclose(tfp); 运行界面(修改、修改后) 六:实验小结:此次课程设计,将上学期课本上所学的内容应用到本次实践当中,使我更加清楚的理解并掌握了C语言部分内容,通过一些错误使我更加深刻的认识到C语言程序的严谨性。此次实践内容的难点是“修改函数”与其他函数之间的相互影响,记录内容被修改后,其他函数的相关内容也要相应的随之改变,由于缺乏实践经验,在编程中感觉此处有些难度。幸运的是,在老师的指导之下,明白了,其他函数中相应更改的内容,要在写入文件前,将内容修改,然后再写入文件。于是问题得以解决。由于目前知识水平的限制,仅仅是完成了各功能的实现,然而代码编写的还不够优化,看起来有些繁杂。代码的质量有待于改进。 (专业文档资料素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1