ATM取款机模拟系统程序设计报告完成版.docx

上传人:b****7 文档编号:8732918 上传时间:2023-02-01 格式:DOCX 页数:35 大小:231.82KB
下载 相关 举报
ATM取款机模拟系统程序设计报告完成版.docx_第1页
第1页 / 共35页
ATM取款机模拟系统程序设计报告完成版.docx_第2页
第2页 / 共35页
ATM取款机模拟系统程序设计报告完成版.docx_第3页
第3页 / 共35页
ATM取款机模拟系统程序设计报告完成版.docx_第4页
第4页 / 共35页
ATM取款机模拟系统程序设计报告完成版.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

ATM取款机模拟系统程序设计报告完成版.docx

《ATM取款机模拟系统程序设计报告完成版.docx》由会员分享,可在线阅读,更多相关《ATM取款机模拟系统程序设计报告完成版.docx(35页珍藏版)》请在冰豆网上搜索。

ATM取款机模拟系统程序设计报告完成版.docx

ATM取款机模拟系统程序设计报告完成版

三、编程题部分(银行ATM模拟存取系统)

1、设计内容…………………………………………第2页

2、设计………………………………………………第2页

(1)数据分析…………………………………………第2页

(2)程序流程分析……………………………………第3页

3、编码及调试………………………………………第13页

4、程序运行截图……………………………………第32页

四、总结与体会………………………………………第37页

五、参考文献…………………………………………第39页

三、编程题部分

1、设计内容

完成一个管理类的综合型设计:

银行ATM模拟存取系统。

要求学生进行数据结构的设计、对函数进行模块化结构化设计、并灵活运用数组、结构体、指针、文件等多种数据类型设计开发系统。

通过写程序,学生应掌握用计算机程序设计语言解决实际问题的方法、步骤。

该系统应该具有以下功能:

1)账户管理功能

a)开户:

完成账户注册的功能。

即输入账户的相关信息。

要求账户号长度12位,密码长度不得低于6位,必须使用暗码,账户信息保存到数组中,账户信息最后保存到相关文件中;

b)账户登录:

输入账户、密码,验证是否能够登录该系统;

c)密码修改:

输入两次相同的密码方可修改。

2)账务管理功能

a)存款:

每笔存款金额大于0元小于等于1000元,以50元为基本单位。

需记录交易日期和时间。

b)取款:

每笔取款金额大于等于100元小于等于2000元,以50元为基本单位。

需记录交易日期和时间。

c)转账:

每笔转账金额大于等于100元小于等于5000元。

需记录交易日期和时间。

3)查询功能

a)存款记录查询

b)取款记录查询

c)转账记录查询

d)余额查询

4)文件功能及其它功能:

数据都应保存在相关文件中。

2、设计

(1)数据分析(描述定义的各主要变量的作用及意义);

charzhanghao[16];/*用户账号*/

charxingming[9];/*用户姓名*/

charmima[7];/*账户密码*/

charshengfenzheng[19];/*用户身份证号*/

floatyue;/*账户余额*/

charkaihushijian[50];/*开户时间*/

charzhanghao[16];/*交易的账号*/

charjiaoyishijian[50];/*交易时间*/

charleixing[5];/*交易类型*/

floatjiaoyijine;/*交易金额*/

floatjiaoyiyue;/*交易后的余额*/

charduifangzhanghao[12];/*交易时的对方账号*/

intzhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/

注册函数:

intbaiwei,shiwei,gewei,len;/*定义账号的后三位*/

charmima2[7];/*注册时第二次输入的密码*/

登录函数:

charzhanghao[16],mima[7];/*登录时输入的账号和密码*/

装载和保存文件函数:

FILE*fp;/*定义文件指针*/

charwenjianming[13];/*定义输入的文件名*/

存、取款,转账函数:

floatjine;/*输入的存、取款,转账金额*/

chart[30];/*把取得的存、取款,转账时间赋给该数组*/

转账函数:

charduifangzhanghao[16],c;/*输入的对方账号赋给该数组。

在判断是否继续时,把输入的字符Y或N赋给c,以便读入选择*/

修改密码函数:

charmima[7],xinmima1[7],xinmima2[7];/*旧密码,第一次输入的新密码,第二次输入的新密码*/

(2)程序流程分析(描述主程序的基本构成、函数设计、函数的调用关系、各部分的流程图等。

主程序的基本构成:

structZhanghu

{};/*账户的结构体*/

typedefstruct

{}Jiaoyi;/*交易记录的结构体*/

intmenu();/*主菜单函数*/

voidzhuce();/*主菜单功能函数—注册函数*/

voiddenglu();/*主菜单功能函数登录函数*/

voidzhuangzai();/*主菜单功能函数装载数据函数*/

voidbaocun();/*主菜单功能函数保存数据函数*/

intdenglu_menu();/*登录菜单函数*/

voidcunkuan();/*登录菜单功能函数—存款函数*/

voidqukuan();/*登录菜单功能函数—取款函数*/

voidzhuanzhang();/*登录菜单功能函数—转账函数*/

voidchaxun();/*登录菜单功能函数—查询函数*/

voidxiugaimima();/*登录菜单功能函数—修改密码函数*/

intchaxun_menu();/*查询菜单函数*/

voidchaxun_yue();/*查询菜单功能函数—查询余额函数*/

voidchaxun_mingxi();/*查询菜单功能函数—查询明细函数*/

voidchaxun_cunkuan();/*查询菜单功能函数—查询存款函数*/

voidchaxun_qukuan();/*查询菜单功能函数—查询取款函数*/

voidchaxun_zhuanzhang();/*查询菜单功能函数—查询转账函数*/

函数设计:

本程序在函数设计上采用结构化程序设计方法,自顶向下,逐步根据功能设计函数,逐步细化设计,由浅入深,模块化设计,保证了程序的可读性和质量。

先设计主菜单(一级菜单)的功能函数,再设计二级菜单的功能函数,自顶而下,逐步细化。

如图示意:

(顶层设计)

(第二层

设计)

二级菜单

(第三层设计)

函数调用关系:

注册函数的流程图:

N

Y

Y

N

登录函数的流程图:

N

Y

N

Y

N

Y

N

Y

修改密码函数的流程图:

N

Y

N

N

Y

Y

存款函数的流程图:

取款函数的流程图:

转账函数的流程图:

Y

N

N

Y

Y

N

N

Y

Y

N

Y

N

N

Y

装载函数的流程图:

Y

N

N

N

Y

Y

保存函数的流程图:

Y

N

N

N

Y

Y

3、编码及调试

#include

#include

#include

#include

#include

#defineZHANGHUSHU100

/*账户的结构体*/

structZhanghu

{

charzhanghao[16];/*用户账号*/

charxingming[9];/*用户姓名*/

charmima[7];/*账户密码*/

charshengfenzheng[19];/*用户身份证号*/

floatyue;/*账户余额*/

charkaihushijian[50];/*开户时间*/

};

typedefstruct/*交易记录的结构体*/

{

charzhanghao[16];/*交易的账号*/

charjiaoyishijian[50];/*交易时间*/

charleixing[5];/*交易类型*/

floatjiaoyijine;/*交易金额*/

floatjiaoyiyue;/*交易后的余额*/

charduifangzhanghao[12];/*交易时的对方账号*/

}Jiaoyi;

structZhanghuzhanghu[100];/*定义账户的结构体数组,可以注册100个账户*/

intzhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/

Jiaoyijiaoyi[1000];/*定义交易记录的结构体数组,可以保存1000条交易记录*/

intmenu();/*声明主菜单函数*/

voidzhuce();/*声明注册函数*/

voiddenglu();/*声明登录函数*/

voidzhuangzai();/*声明装载数据函数*/

voidbaocun();/*声明保存数据函数*/

intdenglu_menu();/*声明登录菜单函数*/

voidcunkuan();/*声明存款函数*/

voidqukuan();/*声明取款函数*/

voidzhuanzhang();/*声明转账函数*/

voidchaxun();/*声明查询函数*/

voidxiugaimima();/*声明修改密码函数*/

intchaxun_menu();/*声明查询菜单函数*/

voidchaxun_yue();/*声明查询余额函数*/

voidchaxun_mingxi();/*声明查询明细函数*/

voidchaxun_cunkuan();/*声明查询存款函数*/

voidchaxun_qukuan();/*声明查询取款函数*/

voidchaxun_zhuanzhang();/*声明查询转账函数*/

voidmain()/*主函数*/

{

system("color1F");/*设置运行界面的背景颜色为蓝色*/

printf("\n\n\n\n\n\n\n\n\t\t\t欢迎使用ATM终端机!

\n\n\n\t\t\t");

system("pause");/*暂停功能*/

system("cls");/*清屏*/

for(;;)/*空循环语句*/

{

switch(menu())/*主菜单选择判断*/

{

case1:

zhuce();/*调用注册函数*/

printf("\t\t\t");

break;

case2:

denglu();/*调用登录函数*/

printf("\t\t\t");

break;

case3:

zhuangzai();/*调用装载数据的函数*/

printf("\t\t\t");

break;

case4:

baocun();/*调用保存数据的函数*/

printf("\t\t\t");

break;

case0:

printf("\t\t\t欢迎使用ATM终端机管理系统。

谢谢!

\n");/*结束程序*/

printf("\t\t\t");

system("pause");

exit(0);

}

}

}

intmenu()/*定义主菜单函数*/

{

charc;

do

{

system("cls");/*每次选择运行前清屏*/

printf("\n\n\n\n\t\t------------------------------------------\n");

printf("\t\t********ATM终端机管理系统主菜单********\n");/*主菜单选择*/

printf("\t\t------------------------------------------\n");

printf("\t\t*|1.注册|\n");

printf("\t\t*|2.登录|\n");

printf("\t\t*|3.装载数据|\n");

printf("\t\t*|4.保存数据|\n");

printf("\t\t*|0.退出|\n");

printf("\t\t------------------------------------------\n");

printf("\t\t*^_^*^_^*^_^*^_^*^_^*^_^*^_^*^_^*^_^*^_^*\n");

printf("\t\t------------------------------------------\n");

printf("\t\t\t请作出选择(0-4):

");

c=getchar();/*读入选择*/

}while(c<'0'||c>'4');

return(c-'0');/*c变为空后返回重新选择*/

}

/***************定义主菜单里的各功能函数函数**********************/

voidzhuce()/*定义注册函数*/

{

intbaiwei,shiwei,gewei,len;/*定义账号的后三位*/

charmima2[7];/*注册时第二次输入的密码*/

chart[30];/*开户时间*/

inti,j=0;

time_trawtime;

structtm*timeinfo;

time(&rawtime);/*调用时间函数,取得开户时间*/

timeinfo=localtime(&rawtime);

strcpy(t,asctime(timeinfo));

for(i=0;i

if(t[i]=='\n')

{

t[i]='\0';

break;

}

baiwei=zhanghuxuhao/100;

shiwei=zhanghuxuhao/10%10;

gewei=zhanghuxuhao%10;

zhanghu[zhanghuxuhao].zhanghao[12]=baiwei+'0';

zhanghu[zhanghuxuhao].zhanghao[13]=shiwei+'0';

zhanghu[zhanghuxuhao].zhanghao[14]=gewei+'0';

zhanghu[zhanghuxuhao].zhanghao[15]='\0';

system("cls");/*运行前清屏*/

printf("\n\n\n\t\t\t注册功能————ZHUCEGONGNENG\n\n\n");

printf("\t\t请输入姓名:

");

fflush(stdin);/*消耗输入字符后的回车操作*/

scanf("%s",zhanghu[zhanghuxuhao].xingming);

do

{

printf("\t\t请输入6位数密码:

");

fflush(stdin);

scanf("%s",zhanghu[zhanghuxuhao].mima);

len=strlen(zhanghu[zhanghuxuhao].mima);

if(len!

=6)/*判断密码是否为6位*/

{

printf("\t\t您的密码不是6位数!

");

system("pause");

return;

}

//此处用字符串长度函数来判断密码的位数

printf("\t\t请再次输入密码:

");

fflush(stdin);

scanf("%s",mima2);

if(strcmp(zhanghu[zhanghuxuhao].mima,mima2)!

=0)/*判断两次密码输入是否相同*/

{

j++;

printf("\t\t您的密码输入错误!

您还有%d次机会输入密码!

\n",3-j);

}

if(j==3)/*密码输入错误不得超过三次*/

{

system("pause");

return;

}

}

while(strcmp(zhanghu[zhanghuxuhao].mima,mima2)!

=0);

do

{

printf("\t\t请输入身份证号:

");

fflush(stdin);

scanf("%s",zhanghu[zhanghuxuhao].shengfenzheng);

len=strlen(zhanghu[zhanghuxuhao].shengfenzheng);

if(len!

=18&&len!

=15)/*判断身份证号位数是否为15位或18位*/

printf("身份证号错误!

请输入15位或18位身份证号!

\n");

}while(len!

=18&&len!

=15);

printf("\t\t请输入存入金额:

");

fflush(stdin);

scanf("%f",&zhanghu[zhanghuxuhao].yue);

if((int)zhanghu[zhanghuxuhao].yue%50!

=0)/*存款金额必须为50的整数倍*/

{

printf("本终端机只接受50元或100元面值的存款!

");

system("pause");

return;

}

strcpy(zhanghu[zhanghuxuhao].kaihushijian,t);/*复制开户时间*/

strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[zhanghuxuhao].zhanghao);/**/

strcpy(jiaoyi[jiaoyixuhao].leixing,"存");/*复制交易类型*/

strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制交易时间*/

jiaoyi[jiaoyixuhao].jiaoyijine=zhanghu[zhanghuxuhao].yue;/*第一次交易的账户余额值赋给交易经额的值*/

jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[dangqianxiabiao].yue;/*第一次交易的账户余额值赋给交易余额的值*/

printf("\n\t\t开户成功!

\t");

system("pause");/*暂停功能*/

//输出账户第一次交易的数据清单

printf("\n\n账号\t\t交易类型\t交易金额\t余额\t\t交易时间\n");

printf("%s\t",zhanghu[zhanghuxuhao].zhanghao);

printf("%s",jiaoyi[jiaoyixuhao].leixing);

printf("\t\t%.2f",zhanghu[zhanghuxuhao].yue);

printf("\t%.2f",zhanghu[zhanghuxuhao].yue);

printf("%s\t\n\n",zhanghu[zhanghuxuhao].kaihushijian);

zhanghuxuhao++;/*账户序号加一*/

jiaoyixuhao++;/*交易序号加一*/

printf("\t\t\t\t");

system("pause");/*暂停*/

}

voiddenglu()/******定义登录函数*******/

{

charzhanghao[16],mima[7];/*登录时输入的账号和密码*/

inti=0,j=0;

system("cls");/*清屏*/

printf("\n\n\n\t\t\t登录功能————DENGLUGONGNENG\n\n\n");/*进入登录得功能界面*/

printf("\t\t输入账号:

");

scanf("%s",zhanghao);/*输入账号*/

for(i=0;i

if(strcmp(zhanghao,zhanghu[i].zhanghao)==0)

{

dangqianxiabiao=i;/*若找到,则跳出循环*/

break;

}

if(i==zhanghuxuhao)/*注册的账号中没输入的账号*/

{

printf("\t\t当前账号不存在!

");

system("pause");

return;

}

do

{

printf("\n\t\t输入密码:

");

scanf("%s",mima);

if(strcmp(mima,zhanghu[i].mima)!

=0)

{

j++;

printf("\t\t您的密码输入错误!

您还有%d次机会输入密码!

\n\n",3-j);

}

if(j==3)/*密码输入错误不得超过三次*/

{system("pause");

return;

}

}while(strcmp(mima,zhanghu[i].mima)!

=0);

for(;;)/*空循环语句*/

{

switch(denglu_menu())/***登陆界面选择判断***/

{

case1:

cunkuan();/*调用存款函数*/

printf("\t\t\t");

break;

case2:

qukuan();/*调用取款函数*/

printf("\t\t\t");

break;

case3:

zhuanzhang();/*调用转账函数*/

printf("\t\t\t");

break;

case4:

chaxun();/*调用查询函数*/

printf("\t\t\t");

break;

case5:

xiugaimima();/*调用修改密码函数*/

printf("\t\t\t");

break;

case0:

return;/*返回上一级菜单界面*/

}

}

}

intdenglu_menu()/**********************定义登录菜单函数**************************/

{

charc;

do

{

system("cls");/*每次选择运行前清屏*/

printf("\n\n\n\t\t*********欢迎进入登录界面!

*********\n\n");/*登录界面菜单选择*/

printf("\t\t*|1.存款|\n");

printf("\t\t*|2.取款|\n");

printf("\t\t*|3.转账|\n");

printf("\t\t*|4.查询|\n");

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

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1