个人资金账户管理(实验报告)

发布时间:2015-04-08 21:56:54   来源:文档文库   
字号:

程序设计与实践

实验报告

实验一:个人资金账户管理

姓名: ****

学号: ***********

班级: *********

实验时间:****/**/**-****/**/**

一:实验名称:

个人资金账户管理

二:实验环境:

一台安装有VC6.0程序的电脑。

三:实验目的

(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。

(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。

(3)培养良好的C程序设计风格与代码规范意识。

四:实验内容:

C语言编程,实现对个人资金帐户的管理。

五:实验步骤:(实验设计,关键代码。实验结果需截图)

1、总体程序框图

2、各模块程序流程图

1)、主函数(程序流程图及运行界面)

主函数程序流程图

简要说明:该功能主要是给用户显示一个功能菜单界面。

主函数运行界面

2)、录入资金信息(源代码及运行界面)

程序代码

void addNewLog)

{

FILE *tfp;

int m=0;

char ch[2];

struct LogData log[MAX];

if((tfp=fopen("cashbox.dat","ab+"))==NULL)

{

printf("不能打开文件!\n");

exit(0);

}

while(!feof(tfp)) /*统计记录的条数*/

if(fread(&log[m],LEN,1,tfp)==1)

m++;

fclose(tfp);

if((tfp=fopen("cashbox.dat","wb"))==NULL)

{

printf("不能打开文件!\n");

exit(0);

}

for(int i=0;i

fwrite(&log[i] ,LEN,1,tfp);/*向指定的磁盘文件写入信息*/

printf("是否添加账户资金信息(Y/N: ");

scanf("%s",ch);

while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)

{

printf("请输入以下信息...\n\n");

printf("日期(格式:<2000-01-01> ) ");

scanf("%s",&log[m].logdate);

printf("说明:");

scanf("%s",&log[m].lognote);

printf("费用(收入为+,支出为-) ");

scanf("%lf",&log[m].charge);

log[m].logid=m+1;

if(m==0)

{

log[m].balance=0;

log[m].balance=log[m].balance+log[m].charge;

}

else if(m>0)

log[m].balance=log[m-1].balance+log[m].charge;

if(fwrite(&log[m],LEN,1,tfp)!=1)

printf("保存失败!");

else

{

printf("该记录保存成功!\n");

m++;

}

printf("是否继续添加(Y/N):");

scanf("%s",ch);

}

fclose(tfp);

}

运行界面

3)、显示资金信息(源代码及运行界面)

程序代码

void listLog()

{

FILE *tfp;

struct LogData log[MAX];

int i,n,m=0;

if((tfp=fopen("cashbox.dat","ab+"))==NULL)

{

printf("不能打开文件!\n");

exit(0);

}

while(!feof(tfp))

if(fread(&log[m],LEN,1,tfp)==1)

m++;

fclose(tfp);

printf("请选择:\n1、查询全部\n2、查询余额\n您的选择是:");

scanf("%d",&n);

switch(n)

{

case 1:

printf("编号\t\t日期\t\t说明\t\t费用\t\t余额\n");

for(i=0;i

printf("%2d%21s%15s%15.0lf%15.0lf\n",log[i].logid,log[i].logdate, log[i].lognote,log[i].charge,log[i].balance);

system("pause");

break;

case 2:

printf("编号\t\t日期\t\t说明\t\t费用\t\t余额\n");

printf("%2d%21s%15s%15.0lf%15.0lf\n",log[m-1].logid,log[m-1].logdate,log[m-1].lognote,log[m].charge,log[m-1].balance);

system("pause");

break;

}

}

运行界面

3)、修改资金信息(源代码及运行界面)

程序代码

void updateLog()

{

FILE *tfp;

char ch[2];

struct LogData log[MAX];

int t,n,m=0;

if((tfp=fopen("cashbox.dat","a+"))==NULL)

{

printf("不能打开文件!\n");

exit(0);

}

while(!feof(tfp))

if(fread(&log[m],LEN,1,tfp)==1)

m++;

fclose(tfp);

if(m==0)

{

printf("没有找到该记录!\n");

return;

}

else

{

printf("请输入你要修改的记录的ID:");

scanf("%d",&n);

}

for(int i=0;i

if(n==log[i].logid)

t=i;

if(t==m)

{

printf("没有找到该记录!\n");

return;

}

printf("编号\t\t日期\t\t说明\t\t费用\t\t余额\n");

printf("%2d%21s%15s%15.0lf%15.0lf\n",log[t].logid,log[t].logdate,log[t].lognote,log[t].charge,log[t].balance);

printf("是否对该记录进行修改(Y/N):");

scanf("%s",ch);

if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)

{

printf("请输入以下信息...\n\n");

printf("日期(格式:<2000-01-01> ) ");

scanf("%s",&log[t].logdate);

printf("说明:");

scanf("%s",&log[t].lognote);

printf("费用(收入为+,支出为-) ");

scanf("%lf",&log[t].charge);

log[t].balance=log[t-1].balance+log[t].charge;

if((tfp=fopen("cashbox.dat","w"))==NULL)

{

printf("不能打开文件!\n");

exit(0);

}

for(int j=0;j

{

log[j].balance=log[j-1].balance+log[j].charge;

if(fwrite(&log[j],LEN,1,tfp)!=1)

{

printf(" 不能保存!\n");

fclose(tfp);

return;

}

else

printf("该记录修改成功!\n");

}

fclose(tfp);

}

system("pause");

fclose(tfp);

}

运行界面(修改、修改后)

六:实验小结:

此次课程设计,将上学期课本上所学的内容应用到本次实践当中,使我更加清楚的理解并掌握了C语言部分内容,通过一些错误使我更加深刻的认识到C语言程序的严谨性。

此次实践内容的难点是“修改函数”与其他函数之间的相互影响,记录内容被修改后,其他函数的相关内容也要相应的随之改变,由于缺乏实践经验,在编程中感觉此处有些难度。幸运的是,在老师的指导之下,明白了,其他函数中相应更改的内容,要在写入文件前,将内容修改,然后再写入文件。于是问题得以解决。

由于目前知识水平的限制,仅仅是完成了各功能的实现,然而代码编写的还不够优化,看起来有些繁杂。代码的质量有待于改进。

本文来源:https://www.2haoxitong.net/k/doc/befca80627284b73f3425054.html

《个人资金账户管理(实验报告).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式