ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:90.45KB ,
资源ID:9214495      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9214495.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ATM取款机模拟系统程序设计报告完成版1资料.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、ATM取款机模拟系统程序设计报告完成版1资料三、编程题部分(银行ATM模拟存取系统)1、设计内容第2页2、设计 第2页(1)数据分析 第2页(2)程序流程分析 第3页3、编码及调试 第13页4、程序运行截图 第32页四、总结与体会 第37页五、参考文献 第39页三、编程题部分1、设计内容完成一个管理类的综合型设计:银行ATM模拟存取系统。要求学生进行数据结构的设计、对函数进行模块化结构化设计、并灵活运用数组、结构体、指针、文件等多种数据类型设计开发系统。通过写程序,学生应掌握用计算机程序设计语言解决实际问题的方法、步骤。该系统应该具有以下功能:1)账户管理功能a) 开户:完成账户注册的功能。即

2、输入账户的相关信息。要求账户号长度12位,密码长度不得低于6位,必须使用暗码,账户信息保存到数组中,账户信息最后保存到相关文件中;b) 账户登录:输入账户、密码,验证是否能够登录该系统;c)密码修改:输入两次相同的密码方可修改。2)账务管理功能a) 存款:每笔存款金额大于0元小于等于1000元,以50元为基本单位。需记录交易日期和时间。b) 取款:每笔取款金额大于等于100元小于等于2000元,以50元为基本单位。需记录交易日期和时间。c) 转账:每笔转账金额大于等于100元小于等于5000元。需记录交易日期和时间。3)查询功能a) 存款记录查询b) 取款记录查询c) 转账记录查询d) 余额查

3、询4)文件功能及其它功能:数据都应保存在相关文件中。2、设计(1) 数据分析(描述定义的各主要变量的作用及意义); char zhanghao16;/*用户账号*/ char xingming9;/*用户姓名*/ char mima7;/*账户密码*/ char shengfenzheng19;/*用户身份证号*/ float yue;/*账户余额*/ char kaihushijian50;/*开户时间*/ char zhanghao16;/*交易的账号*/ char jiaoyishijian50;/*交易时间*/ char leixing5;/*交易类型*/ float jiaoyiji

4、ne;/*交易金额*/ float jiaoyiyue;/*交易后的余额*/ char duifangzhanghao12;/*交易时的对方账号*/ int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/注册函数: int baiwei,shiwei,gewei,len;/*定义账号的后三位*/ char mima27;/*注册时第二次输入的密码*/登录函数: char zhanghao16,mima7;/*登录时输入的账号和密码*

5、/装载和保存文件函数: FILE *fp;/*定义文件指针*/ char wenjianming13;/*定义输入的文件名*/存、取款,转账函数: float jine;/*输入的存、取款,转账金额*/char t30;/*把取得的存、取款,转账时间赋给该数组*/转账函数:char duifangzhanghao16,c;/*输入的对方账号赋给该数组。在判断是否继续时,把输入的字符Y或N赋给c,以便读入选择*/修改密码函数:char mima7,xinmima17,xinmima27;/*旧密码,第一次输入的新密码,第二次输入的新密码*/(2)程序流程分析(描述主程序的基本构成、函数设计、函数

6、的调用关系、各部分的流程图等。)主程序的基本构成:struct Zhanghu;/*账户的结构体*/typedef struct Jiaoyi;/*交易记录的结构体*/int menu(); /*主菜单函数*/void zhuce(); /*主菜单功能函数注册函数*/void denglu(); /*主菜单功能函数登录函数*/void zhuangzai(); /*主菜单功能函数装载数据函数*/void baocun(); /*主菜单功能函数保存数据函数*/int denglu_menu(); /*登录菜单函数*/void cunkuan(); /*登录菜单功能函数存款函数*/void quk

7、uan(); /*登录菜单功能函数取款函数*/void zhuanzhang(); /*登录菜单功能函数转账函数*/void chaxun(); /*登录菜单功能函数查询函数*/void xiugaimima(); /*登录菜单功能函数修改密码函数*/int chaxun_menu(); /*查询菜单函数*/void chaxun_yue(); /*查询菜单功能函数查询余额函数*/void chaxun_mingxi(); /*查询菜单功能函数查询明细函数*/void chaxun_cunkuan(); /*查询菜单功能函数查询存款函数*/void chaxun_qukuan(); /*查询菜

8、单功能函数查询取款函数*/void chaxun_zhuanzhang();/*查询菜单功能函数查询转账函数*/函数设计:本程序在函数设计上采用结构化程序设计方法,自顶向下,逐步根据功能设计函数,逐步细化设计,由浅入深,模块化设计,保证了程序的可读性和质量。先设计主菜单(一级菜单)的功能函数,再设计二级菜单的功能函数,自顶而下,逐步细化。如图示意:主菜单功能注册登录装载保存(顶层设计)怎样注册怎样保存怎样读入查询转账取款存款(第二层设计)二级菜单(第三层设计)函数调用关系:strcpyzhucestrlenstrcmpstrcmpcunkuanstrcmpqukuandenglustrcpyz

9、huangzhangchaxun_menumaindenglu_menuchaxun_yuechaxunchaxun_mingxixiugaimimachaxun_cunkuanfopenchaxun_qukuanfscanfchaxun_zhuanzhangzhuangzaifgetsfopenfclosefprintbaocunfclosemenu注册函数的流程图:开始定义数据变量,调用时间函数,设置账号的随机分配输入姓名输入两次密码两次密码相同 N Y输入身份证号号位数既不为15也不为18 Y N输入存款金额输出账户和第一次交易的数据清单结束登录函数的流程图:开始定义个变量,i=0输入账

10、号izhanghuxuhao N Y输入的账号和已注册的某一账号相同i+输入密码密码错误 N密码输入次数为3 Y进入登陆界面执行switch功能语句 N Yreturn;输入选项数字数字为0 N根据选项执行语句退出 Y修改密码函数的流程图:输入账号输入旧密码密码正确return; N Y输入两次新密码 N次数为3两次密码输入相同 N Yreturn; Y 密码修改成功结束开始 开始 system(cls);结束 返回 存款函数的流程图: 输入存款金额jinejine%50!=0|jine=0jine%50!=0|jine=0 Y N return;调用时间函数调用strcpy函数复制账号、类型

11、、时间。计算余额 存款成功 输出存款的交易记录取款函数的流程图: 结束 返回 开始 system(cls); 输入取款金额jine取款金额大于账户余额 Y N输出提示, return;jine%50!=0| jine=0 N Y调用时间函数return;调用strcpy函数复制账号、类型、时间。计算余额 输出存款的交易记录转账函数的流程图:开始输入对方账号是否与当前登录账号相同return; Y Nizhanghuxuhaoreturn; N Y输入的账号与已注册的某一账号相同i=zhanghuxuhao Y输出对方账号的姓名 Ni+;是否继续 Nreturn; Y输入转账金额jinejine

12、大于账户余额 Yreturn; Njine=0 Y N显示警告信息是否继续return; N执行转账语句 Y装载函数的流程图:输出转账交易记录开始结束输入要读入数据的文件名找不到该文件名 Y返回 Nizhanghuxuhao Nijiaoyixuhao N Y从文件中读入账户的数据 Y从文件中读入交易记录的数据信息 i+i+关闭文件结束保存函数的流程图:开始输入要保存数据的文件名新建该文件,若打不开文件 Y返回 Nizhanghuxuhao Nijiaoyixuhao N Y把账户的数据输出到文件 Y把交易记录的数据信息输出到保存文件 i+i+关闭文件结束3、编码及调试#include#inc

13、lude#include#include#include#define ZHANGHUSHU 100/*账户的结构体*/struct Zhanghu char zhanghao16;/*用户账号*/ char xingming9;/*用户姓名*/ char mima7;/*账户密码*/ char shengfenzheng19;/*用户身份证号*/ float yue;/*账户余额*/ char kaihushijian50;/*开户时间*/;typedef struct /*交易记录的结构体*/ char zhanghao16;/*交易的账号*/ char jiaoyishijian50;/

14、*交易时间*/ char leixing5;/*交易类型*/ float jiaoyijine;/*交易金额*/ float jiaoyiyue;/*交易后的余额*/ char duifangzhanghao12;/*交易时的对方账号*/ Jiaoyi;struct Zhanghu zhanghu100;/*定义账户的结构体数组,可以注册100个账户*/int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/Jiaoyi jiaoyi

15、1000;/*定义交易记录的结构体数组,可以保存1000条交易记录*/int menu(); /*声明 主菜单 函数*/void zhuce(); /*声明 注册 函数*/void denglu(); /*声明 登录 函数*/void zhuangzai(); /*声明 装载数据 函数*/void baocun(); /*声明 保存数据 函数*/int denglu_menu(); /*声明 登录菜单 函数*/void cunkuan(); /*声明 存款 函数*/void qukuan(); /*声明 取款 函数*/void zhuanzhang(); /*声明 转账 函数*/void ch

16、axun(); /*声明 查询 函数*/void xiugaimima(); /*声明 修改密码 函数*/int chaxun_menu(); /*声明 查询菜单 函数*/void chaxun_yue(); /*声明 查询余额 函数*/void chaxun_mingxi(); /*声明 查询明细 函数*/void chaxun_cunkuan(); /*声明 查询存款 函数*/void chaxun_qukuan(); /*声明 查询取款 函数*/void chaxun_zhuanzhang();/*声明 查询转账 函数*/void main()/*主函数*/ system(color 1

17、F);/*设置运行界面的背景颜色为蓝色*/ printf(nnnnnnnnttt欢迎使用ATM终端机!nnnttt); system(pause);/*暂停功能*/ system(cls);/*清屏*/ for(;)/*空循环语句*/ switch(menu() /*主菜单选择判断*/ case 1:zhuce();/*调用注册函数*/ printf(ttt); break; case 2:denglu();/*调用登录函数*/ printf(ttt); break; case 3:zhuangzai();/*调用装载数据的函数*/ printf(ttt); break; case 4:bao

18、cun();/*调用保存数据的函数*/ printf(ttt); break; case 0: printf(ttt欢迎使用ATM终端机管理系统。谢谢!n); /*结束程序*/ printf(ttt); system(pause); exit(0); int menu() /*定义主菜单函数*/ char c; do system(cls); /*每次选择运行前清屏*/ printf(nnnntt-n); printf(tt *ATM终端机管理系统主菜单*n); /*主菜单选择*/ printf(tt-n); printf(tt *| 1. 注册|n); printf(tt *| 2. 登录|

19、n); printf(tt *| 3. 装载数据|n); printf(tt *| 4. 保存数据 |n); printf(tt *| 0. 退出 |n); printf(tt-n); printf(tt*_*_*_*_*_*_*_*_*_*_*n); printf(tt-n); printf(ttt请作出选择(0-4):); c=getchar(); /*读入选择*/ while(c4); return(c-0); /*c变为空后返回重新选择*/*定义主菜单里的各功能函数函数*/void zhuce() /*定义注册函数*/ int baiwei,shiwei,gewei,len;/*定义账

20、号的后三位*/ char mima27;/*注册时第二次输入的密码*/ char t30;/*开户时间*/ int i,j=0; time_t rawtime; struct tm *timeinfo; time(&rawtime);/*调用时间函数,取得开户时间*/ timeinfo=localtime(&rawtime); strcpy(t,asctime(timeinfo); for(i=0;istrlen(t);i+) if(ti=n) ti=0; break; strcpy(zhanghuzhanghuxuhao.zhanghao,625301234567);/*复制账号的前12位*

21、/ baiwei=zhanghuxuhao/100; shiwei=zhanghuxuhao/10%10; gewei=zhanghuxuhao%10; zhanghuzhanghuxuhao.zhanghao12=baiwei+0; zhanghuzhanghuxuhao.zhanghao13=shiwei+0; zhanghuzhanghuxuhao.zhanghao14=gewei+0; zhanghuzhanghuxuhao.zhanghao15=0; system(cls);/*运行前清屏*/ printf(nnnttt注册功能ZHUCE GONGNENGnnn); printf(t

22、t请输入姓名:); fflush(stdin);/*消耗输入字符后的回车操作*/ scanf(%s,zhanghuzhanghuxuhao.xingming); do printf(tt请输入6位数密码:); fflush(stdin); scanf(%s,zhanghuzhanghuxuhao.mima); len=strlen(zhanghuzhanghuxuhao.mima); if(len!=6)/*判断密码是否为6位*/ printf(tt您的密码不是6位数!); system(pause); return; /此处用字符串长度函数来判断密码的位数 printf(tt请再次输入密码:

23、); fflush(stdin); scanf(%s,mima2); if(strcmp(zhanghuzhanghuxuhao.mima,mima2)!=0)/*判断两次密码输入是否相同*/ j+; printf(tt您的密码输入错误!您还有%d次机会输入密码!n,3-j); if(j=3)/*密码输入错误不得超过三次*/ system(pause); return; while (strcmp(zhanghuzhanghuxuhao.mima,mima2)!=0); do printf(tt请输入身份证号:); fflush(stdin); scanf(%s,zhanghuzhanghux

24、uhao.shengfenzheng); len=strlen(zhanghuzhanghuxuhao.shengfenzheng); if(len!=18&len!=15)/*判断身份证号位数是否为15位或18 位*/ printf(身份证号错误!请输入15位或18位身份证号!n); while(len!=18&len!=15); printf(tt请输入存入金额:); fflush(stdin); scanf(%f,&zhanghuzhanghuxuhao.yue); if(int)zhanghuzhanghuxuhao.yue%50!=0)/*存款金额必须为50的整数倍*/ printf

25、(本终端机只接受50元或100元面值的存款!); system(pause); return; strcpy(zhanghuzhanghuxuhao.kaihushijian,t);/*复制开户时间*/ strcpy(jiaoyijiaoyixuhao.zhanghao,zhanghuzhanghuxuhao.zhanghao);/*/ strcpy(jiaoyijiaoyixuhao.leixing,存);/*复制交易类型*/ strcpy(jiaoyijiaoyixuhao.jiaoyishijian,t);/*复制交易时间*/ jiaoyijiaoyixuhao.jiaoyijine=z

26、hanghuzhanghuxuhao.yue;/*第一次交易的账户余额值赋给交易经额的值*/ jiaoyijiaoyixuhao.jiaoyiyue=zhanghudangqianxiabiao.yue;/*第一次交易的账户余额值赋给交易余额的值*/ printf(ntt开户成功!t); system(pause);/*暂停功能*/ /输出账户第一次交易的数据清单 printf(nn账号tt交易类型t交易金额t余额tt交易时间n); printf(%st,zhanghuzhanghuxuhao.zhanghao); printf( %s,jiaoyijiaoyixuhao.leixing); printf(tt%.2f,zhanghuzhanghuxuhao.yue); printf(t %.2f,zhanghuzhanghuxuhao.yue); printf( %stnn,zhanghuzhanghuxuhao.kaihushijian); zhanghuxuhao+;/*账户序号加一*/ jiaoyixuhao+;/*交易序号加一*/ printf(tttt);

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

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