C++模拟ATM机存取款管理系统设计
- 格式:docx
- 大小:442.41 KB
- 文档页数:29
c atm机课程设计一、课程目标知识与理解目标:1. 学生能理解ATM机的基本功能与操作流程,掌握银行自动服务系统的相关知识。
2. 学生能描述ATM机在现实生活中的应用及其对便捷金融服务的促进作用。
3. 学生了解ATM机操作中的安全问题,认识到维护个人信息安全的重要性。
技能目标:1. 学生能够独立完成ATM机的基本操作,包括查询余额、取款、存款和转账等。
2. 学生通过模拟实践,学会使用ATM机进行简单的银行业务操作,培养实际应用能力。
3. 学生能够分析ATM机操作中可能遇到的问题,并提出合理的解决方案。
情感态度与价值观目标:1. 学生通过学习ATM机相关知识,增强对现代金融服务的认识,培养积极的生活态度。
2. 学生在学习过程中,树立正确的消费观念,养成节约、合理的金融行为。
3. 学生在学习中注重团队协作,尊重他人意见,培养合作精神。
本课程针对小学高年级学生设计,结合其认知水平、好奇心强和动手能力等特点,以实际操作和情境模拟为主,注重理论与实践相结合。
通过本课程的学习,使学生能够在掌握ATM机基本知识的同时,提高实际操作能力,树立正确的情感态度和价值观。
教学过程中,教师应关注学生的学习反馈,及时调整教学策略,确保课程目标的实现。
二、教学内容1. 引入ATM机概念:介绍ATM机的定义、发展历程及其在现代社会中的应用。
- 教材章节:第三章“金融工具与设施”2. ATM机功能与操作流程:- 详细讲解ATM机的各项功能,如查询余额、取款、存款、转账等。
- 分析操作流程,强调注意事项。
- 教材章节:第三章“金融工具与设施”第二节“自动柜员机”3. ATM机操作模拟实践:- 设计ATM机操作模拟练习,让学生动手实践各项功能。
- 引导学生注意操作中的安全问题,如密码保护、防诈骗等。
- 教材章节:第三章“金融工具与设施”第二节“自动柜员机”4. ATM机相关问题与解决策略:- 分析ATM机使用过程中可能遇到的问题,如吞卡、操作失误等。
C语言 ATM 程序设计概述:本文将详细介绍如何使用C语言设计一个简单的ATM(自动取款机)程序。
ATM程序的主要功能包括用户登录、查询余额、取款、存款和退出等。
1. 用户登录:用户需要输入正确的账户号码和密码才干成功登录。
账户号码和密码可以存储在一个预定义的用户数据库中。
用户输入账户号码和密码后,程序将验证其有效性并赋予相应的登录状态。
2. 查询余额:用户成功登录后,可以选择查询余额。
程序将从用户数据库中获取用户的余额信息并显示在屏幕上。
3. 取款:用户成功登录后,可以选择取款。
用户需要输入取款金额,程序将验证用户账户余额是否足够。
如果余额足够,则扣除相应金额并更新用户数据库中的余额信息;如果余额不足,则提示用户余额不足。
4. 存款:用户成功登录后,可以选择存款。
用户需要输入存款金额,程序将将其加到用户账户的余额中,并更新用户数据库中的余额信息。
5. 退出:用户可以选择退出程序。
退出前,程序将提示用户是否确认退出,并根据用户的选择执行相应的操作。
6. 错误处理:程序需要对用户的输入进行错误处理。
例如,当用户输入错误的账户号码或者密码时,程序应该赋予相应的错误提示;当用户输入非法金额时,程序应该赋予相应的错误提示。
7. 数据存储:程序需要使用文件或者数据库来存储用户的账户信息和余额信息。
可以使用文本文件、二进制文件或者关系型数据库等。
8. 用户界面:程序需要提供一个友好的用户界面,以便用户能够轻松地进行操作。
可以使用控制台界面或者图形界面,根据需要选择合适的界面设计。
9. 安全性:程序需要确保用户的账户信息和余额信息的安全性。
可以使用加密算法来加密用户的密码,在存储和传输过程中保护用户的隐私。
10. 测试和调试:在完成程序的编写后,需要进行充分的测试和调试,以确保程序的稳定性和正确性。
可以编写测试用例,并对程序进行单元测试和集成测试。
总结:本文详细介绍了使用C语言设计一个简单的ATM程序的要求和功能。
c 模拟取款机课程设计一、课程目标知识目标:1. 学生能够理解ATM机的基本工作原理和功能操作流程;2. 学生能够掌握运用编程语言进行ATM机模拟程序的设计;3. 学生能够运用基本的数学运算实现账户余额的查询、取款和存款功能。
技能目标:1. 学生能够运用所学知识,独立设计并编写一个简单的ATM取款机模拟程序;2. 学生能够通过编程解决实际问题,提高逻辑思维和问题解决能力;3. 学生能够通过团队协作,共同完成项目任务,提高沟通与协作能力。
情感态度价值观目标:1. 学生能够认识到编程在生活中的实际应用,增强学习信息技术的兴趣;2. 学生能够在项目实践中体会团队合作的重要性,培养合作精神;3. 学生能够通过解决实际问题,认识到学习知识可以改善生活,提高社会责任感。
分析课程性质、学生特点和教学要求,本课程旨在帮助学生在掌握ATM机基本知识的基础上,运用编程技能实现模拟程序的设计,培养学生解决实际问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,为后续的教学设计和评估提供依据。
二、教学内容1. 理论知识:- 了解ATM机的基本功能及其工作原理;- 学习编程语言的基本语法和结构;- 掌握条件语句、循环语句和函数的定义与使用。
2. 实践操作:- 设计并编写ATM机模拟程序;- 实现账户余额查询、取款、存款和退出功能;- 学习调试程序,解决编程过程中遇到的问题。
3. 教学大纲:- 第一周:ATM机基本功能介绍,学习编程语言基础;- 第二周:编写ATM机模拟程序,实现查询余额和取款功能;- 第三周:实现存款和退出功能,学习调试程序;- 第四周:项目展示与评价,总结反馈。
4. 教材章节:- 《信息技术》第三章:程序设计基础;- 《信息技术》第四章:算法与程序设计。
教学内容根据课程目标进行选择和组织,保证科学性和系统性。
教学大纲明确了教学内容的安排和进度,确保学生在学习过程中逐步掌握所需知识,为实践操作打下坚实基础。
C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。
温馨提示程序语言:C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)C++语言项:STL库(黑体标明表示使用C++的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:Visual C++ 6.0、DEVC++、CodeBlocks、Visual Studio 2015均可通过编译。
(浅蓝色字体表示需要运行修改后的版本,请用户自行选择源代码测试)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。
2、代码行数:241行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。
4、附录绝对包含用户使用手册及程序完整源代码和详细注释。
5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。
6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。
《面向对象程序设计》课程设计报告书设计题目:模拟ATM机存取款管理系统设计指导老师:学生班级:学生学号:学生姓名:同组人员:时间:2017.12.课程设计任务书第一章概述使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。
本文就以C++语言设计一项简单的模拟ATM柜员机程序。
运行程序时,当输入给定的卡号和密码(初始卡号和密码都为123456)后,系统就能登录ATM柜员机系统,用户可以进入功能实现界面,有查询余额,取款,存款,修改密码等功能。
《C#课程设计》结业报告学号:专业:姓名:任课教师:日期:2013年12月28日目录摘要 (3)1 系统分析 (3)1.1背景分析 (3)1.2系统功能 (4)1.3主要问题 (4)1.4开发工具与环境 (4)1.4.1开发工具 (5)1.4.2开发环境 (5)2 系统整体设计 (5)2.1设计思想 (5)2.1.1功能模块划分 (5)2.2数据库设计 (6)3 系统详细设计 (7)3.1系统总设计 (7)3.2 登陆界面设计 (8)3.3查询界面设计 (12)3.4存、取款界面设计 (14)3.5转账界面设计 (16)3.6修改密码界面设计 (17)心得体会 (19)模拟ATM取款机系统摘要本ATM系统的目的就是建立一个客户平台,用户使用此平台进行查询余额、存款、取款、转账、修改密码等业务办理。
相对于柜员操作一样的,不过ATM 系统有的功能有权限设置,一些功能只有银行柜员才能进行的业务办理。
ATM取款系统的针对的用户群是使用此软件系统的用户,用户做为系统的服务群体,可以使用数据库已有的账号与密码,登陆ATM系统。
当用户成功登陆后就可以根据用户的需求进行各项业务的办理,办理完所有的手续后,用户的输入的新资料以及办理的业务处理后的信息都会反馈到数据库并且都会存入到数据库中。
这样用户就完成了办理业务。
1 系统分析1.1背景分析随着信息时代科技的飞速发展,使用ATM取款机、计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。
对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM柜员机就是技术发展的产物,相对的一台ATM柜员机与ATM系统是密不可分的。
本系统就是为了更方便人们的生活而设计的。
ATM系统作为一款数据传输的技术,用户信息和资金信息的繁杂,包含很多的数据的管理,以前的都是由一些柜员进行操作,而且手续很多。
对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及等用人工办理。
自动取款机(ATM)模拟程序一、需求我们需要设计一个具备如下功能的ATM模拟程序。
●开户:用户能够通过ATM来开设帐号,开户需要设置密码。
●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。
●管理帐号:用户登录到帐号上后,能够进行如下的操作。
■存款:将指定的款项存到帐号中。
■取款:从帐号中取出指定的款项。
■查询余额:查询帐号的余额。
■修改密码:修改帐号的密码。
二、分析面向对象编程的第一步是进行面向对象分析。
面向对象分析的目标是建立问题领域的模型,包括如下模型。
●功能模型:即画出每一个功能要求的用例图。
●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对象、对象的属性、对象间的关系。
●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。
1.功能模型根据我们的需求,可以很容易地画出A TM模拟程序的用例图:可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。
要管理账号,就必须首先登录帐号或者开户。
管理帐号的功能包括存款、取款、查询余额和修改密码。
2.对象模型ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。
此外,需要一个程序来启动ATM。
因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。
1)帐号类Account帐号类Account包含所有的帐号信息负责所有的帐号操作。
基本的帐号信息包括:●帐号名name●帐号密码password●帐号余额balance主要的帐号操作包括:●登录Login●存款Deposit●取款Withdraw●查询余额Get_Balance●修改密码ChangePassword2)银行类Bank银行类Bank的本质就是一组帐号的组合,并负责管理帐号。
C语言银行自动存取款机模拟介绍本文档将介绍如何使用C语言编写一个简单的银行自动存取款机模拟程序。
该程序可以模拟银行客户进行存款和取款操作,并实时更新账户余额。
功能此银行自动存取款机模拟程序具有以下功能:•登录功能:用户可以输入账号和密码进行登录。
•存款功能:用户可以输入存款金额进行存款,存款成功后会更新账户余额。
•取款功能:用户可以输入取款金额进行取款,取款成功后会更新账户余额。
•查询余额功能:用户可以查看账户余额。
•退出功能:用户可以选择退出程序。
程序设计数据结构在程序中,需要定义一个结构体来表示银行客户的账户信息。
每个账户包含账号、密码和余额:struct Account {int accountNumber;char password[20];double balance;};登录功能首先,用户需要输入账号和密码进行登录。
可以定义一个函数来实现登录功能:int login(struct Account *accounts, int numAccounts, int accountNumber, char *password) {for (int i = 0; i < numAccounts; i++) {if (accounts[i].accountNumber == accountNumber && strcmp(accounts[i].password, password) == 0) {return i; // 返回账号在数组中的索引}}return -1; // 登录失败,返回-1}存款和取款功能存款和取款功能可以分别定义两个函数来实现。
存款函数会增加账户余额,取款函数会减少账户余额。
```c void deposit(struct Account *account, double amount) { account->balance += amount; }void withdraw(struct Account *account, double amount) { if (account->balance >= amount) { account->balance -= amount; printf(。
c 课程设计 atm机一、教学目标本章节的教学目标为:知识目标:使学生了解ATM机的基本原理和运作方式,理解ATM机在银行业务中的重要作用。
技能目标:培养学生运用编程语言实现ATM机的基本功能,如取款、存款、查询余额等。
情感态度价值观目标:培养学生对金融科技行业的兴趣,提高其创新意识和团队协作能力。
二、教学内容本章节的教学内容为:1.ATM机的基本原理和运作方式2.银行业务中ATM机的重要作用3.编程语言在实现ATM机基本功能中的应用三、教学方法本章节的教学方法为:1.讲授法:讲解ATM机的基本原理和运作方式,银行业务中ATM机的重要作用。
2.案例分析法:分析实际案例,让学生了解编程语言在实现ATM机基本功能中的应用。
3.实验法:学生分组进行实验,动手实现ATM机的基本功能。
四、教学资源本章节的教学资源为:1.教材:提供ATM机的基本原理、运作方式、银行业务中ATM机的重要作用等相关知识。
2.参考书:提供编程语言在实现ATM机基本功能中的应用等相关知识。
3.多媒体资料:提供ATM机的工作原理演示、实际案例分析等。
4.实验设备:提供计算机、编程语言开发环境、ATM机模拟器等,用于学生分组实验。
五、教学评估本章节的教学评估方式为:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的30%。
2.作业:布置相关编程练习题,评估学生对ATM机基本功能的掌握程度,占总评的30%。
3.考试:期末进行闭卷考试,测试学生对ATM机原理和编程语言应用的掌握程度,占总评的40%。
六、教学安排本章节的教学安排为:1.教学进度:共10课时,第1-4课时讲解ATM机的基本原理和运作方式,第5-8课时讲解编程语言在实现ATM机基本功能中的应用,第9-10课时进行实验和实践。
2.教学时间:每周一下午第1-2节课。
3.教学地点:计算机实验室。
七、差异化教学本章节差异化教学内容为:1.对于编程基础较好的学生,可以引导他们进行ATM机功能的拓展和创新。
c 课程设计atm系统一、教学目标本节课的教学目标是使学生掌握ATM系统的基本原理和操作流程,培养学生运用C语言进行程序设计的能力。
具体目标如下:1.知识目标:–了解ATM系统的基本概念、工作原理和组成部分。
–掌握C语言的基本语法和编程技巧。
2.技能目标:–能够运用C语言编写简单的ATM系统程序。
–培养学生分析问题、解决问题的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和好奇心。
–培养学生的团队合作意识和沟通能力。
二、教学内容本节课的教学内容主要包括ATM系统和C语言两个部分。
1.ATM系统:–介绍ATM系统的基本概念、工作原理和组成部分。
–讲解ATM系统的操作流程,包括登录、查询余额、取款、存款等功能。
2.C语言:–讲解C语言的基本语法和编程技巧。
–通过编写简单的ATM系统程序,让学生熟悉C语言的编程方法。
三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解ATM系统和C语言的基本概念、语法和编程技巧。
2.案例分析法:通过分析典型的ATM系统案例,使学生更好地理解ATM系统的工作原理和操作流程。
3.实验法:让学生动手编写简单的ATM系统程序,培养学生的编程能力和解决问题的能力。
四、教学资源1.教材:选用《C程序设计》作为主教材,辅助以《ATM系统原理与实践》等相关参考书籍。
2.多媒体资料:制作课件和教学视频,用于讲解ATM系统和C语言的相关知识点。
3.实验设备:提供计算机和编程环境,让学生进行ATM系统程序的编写和调试。
五、教学评估本节课的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
1.平时表现:通过观察学生在课堂上的参与程度、提问回答和小组讨论等表现,评估学生的学习态度和理解能力。
2.作业:布置相关的ATM系统编程作业,评估学生对C语言编程技巧的掌握程度。
3.考试:进行期末考试,涵盖ATM系统和C语言的相关知识点,评估学生的综合运用能力。
c 课程设计atm机一、教学目标本章节的教学目标是让学生了解ATM机的基本原理和操作流程,掌握相关编程技能,培养他们解决实际问题的能力。
具体包括:1.知识目标:学生能够理解ATM机的工作原理,熟悉ATM机的各项功能,如取款、存款、查询等。
2.技能目标:学生能够运用C语言进行简单的ATM机模拟程序编写,培养他们的编程能力和逻辑思维能力。
3.情感态度价值观目标:通过学习ATM机的相关知识,学生能够认识到科技对生活的便利性,激发他们对计算机科学的兴趣和热情。
二、教学内容本章节的教学内容主要包括ATM机的基本原理、操作流程以及C语言编程。
具体安排如下:1.第一课时:介绍ATM机的基本原理和功能,让学生了解ATM机的工作方式。
2.第二课时:讲解ATM机的操作流程,让学生熟悉如何使用ATM机进行各种操作。
3.第三课时:介绍C语言编程基础,让学生掌握编写ATM机模拟程序所需的知识。
4.第四课时:引导学生运用C语言编写简单的ATM机模拟程序,培养他们的编程能力。
三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用以下教学方法:1.讲授法:讲解ATM机的基本原理、操作流程和C语言编程基础。
2.案例分析法:分析实际生活中的ATM机使用案例,让学生更好地理解ATM机的作用。
3.实验法:引导学生动手编写ATM机模拟程序,培养他们的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的C语言编程教材,为学生提供扎实的理论基础。
2.参考书:提供相关的ATM机技术资料,拓宽学生的知识视野。
3.多媒体资料:制作精美的PPT,直观地展示ATM机的工作原理和操作流程。
4.实验设备:准备计算机及相关设备,让学生能够顺利进行编程实践。
五、教学评估为了全面反映学生的学习成果,本章节的教学评估将采取以下方式:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以考察他们的学习态度和积极性。
XX航空航天大学课程设计任务书学院:自动化学院专业:测控技术与仪器班级:04070101 学号:21 题目:自动存取款机模拟一、课程设计时间2011~12第1学期第4周,共计1周,20学时。
二、课程设计内容请你模仿自动存取款机系统,用C语言编写软件完成以下任务:1.登陆功能:某个用户输入账户名和密码,可以登陆ATM。
注意:应有多个用户,并把信息保存在文件中。
2.查询功能:登陆后,可以查询存款余额。
3.存款功能:登陆后,可以向账户中存款。
4.取款功能:登陆后,可以取款。
注意:取款金额不能超过存款金额。
提示:用户(账号、密码、存款余额、利率、开户银行)三、课程设计要求1.程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括、“数据输入”、“数据保存”、“信息查询”、“数据修改”、“退出”5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:学生签名:五、成绩六、教师评语目录一、需求分析1二、设计分析2三、主要界面截图4四、技术要点5五、个人总结7六、参考文献8七、源程序8一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析银行存取款机的数据涉及到取款机内储存的所有用户,数据量较大且对XX性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析(1)账号及密码输入:允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够及时提示并更正。
atm系统 c语言课程设计一、课程目标知识目标:1. 掌握ATM系统的基础知识,理解其工作原理及功能模块;2. 学会运用C语言进行ATM系统的功能设计和实现;3. 熟悉结构体、函数、循环、条件语句等C语言基础语法在ATM系统中的应用。
技能目标:1. 能够运用结构体和函数设计ATM系统的用户界面和功能模块;2. 能够编写代码实现ATM系统的登录、查询、取款、存款和退出等功能;3. 能够对ATM系统进行测试和调试,找出并修复程序中的错误。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,提高他们运用C语言解决实际问题的能力;2. 培养学生的团队协作意识,让他们在课程设计中学会与他人合作共同完成任务;3. 培养学生严谨、细心的编程习惯,让他们认识到编程过程中规范和纪律的重要性。
分析课程性质、学生特点和教学要求,本课程旨在通过ATM系统课程设计,帮助学生巩固C语言基础知识,提高编程实践能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果。
通过分解课程目标为具体的学习成果,教师可以针对性地进行教学设计和评估,确保学生在课程结束后能够独立完成一个简单的ATM系统。
二、教学内容1. ATM系统基础知识介绍:讲解ATM系统的工作原理、功能模块及其在实际生活中的应用。
- 相关教材章节:第三章《C语言编程基础》2. C语言基础语法复习:回顾结构体、函数、循环、条件语句等基础语法知识。
- 相关教材章节:第一章《C语言概述》、第二章《C语言基本语法》3. ATM系统功能设计:分析ATM系统的需求,设计相应的功能模块,如登录、查询、取款、存款和退出等。
- 相关教材章节:第四章《函数与程序结构》、第六章《结构体与共用体》4. 编写ATM系统代码:运用C语言实现ATM系统的各个功能模块,并整合成一个完整的程序。
- 相关教材章节:第五章《数组与指针》、第七章《文件操作》5. 测试与调试:教授学生如何对ATM系统进行测试和调试,找出并修复程序中的错误。
《C#课程设计》结业报告学号:专业:姓名:任课教师:日期:2013年12月28日目录摘要 (3)1 系统分析 (3)1.1背景分析 (3)1.2系统功能 (4)1.3主要问题 (4)1.4开发工具与环境 (4)1.4.1开发工具 (5)1.4.2开发环境 (5)2 系统整体设计 (5)2.1设计思想 (5)2.1.1功能模块划分 (5)2.2数据库设计 (6)3 系统详细设计 (7)3.1系统总设计 (7)3.2 登陆界面设计 (8)3.3查询界面设计 (12)3.4存、取款界面设计 (14)3.5转账界面设计 (16)3.6修改密码界面设计 (17)心得体会 (19)模拟ATM取款机系统摘要本ATM系统的目的就是建立一个客户平台,用户使用此平台进行查询余额、存款、取款、转账、修改密码等业务办理。
相对于柜员操作一样的,不过ATM 系统有的功能有权限设置,一些功能只有银行柜员才能进行的业务办理。
ATM取款系统的针对的用户群是使用此软件系统的用户,用户做为系统的服务群体,可以使用数据库已有的账号与密码,登陆ATM系统。
当用户成功登陆后就可以根据用户的需求进行各项业务的办理,办理完所有的手续后,用户的输入的新资料以及办理的业务处理后的信息都会反馈到数据库并且都会存入到数据库中。
这样用户就完成了办理业务。
1 系统分析1.1背景分析随着信息时代科技的飞速发展,使用ATM取款机、计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。
对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM柜员机就是技术发展的产物,相对的一台ATM柜员机与ATM系统是密不可分的。
本系统就是为了更方便人们的生活而设计的。
ATM系统作为一款数据传输的技术,用户信息和资金信息的繁杂,包含很多的数据的管理,以前的都是由一些柜员进行操作,而且手续很多。
对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及等用人工办理。
内蒙古科技大学本科生课程设计论文题目:C++课程设计——模拟ATM取款机的设计学生姓名:学号:专业:通信工程班级:2010-1指导教师:目录 (1)前言 (2)第一章C++简介 (3)1 、C++语言的简介及发展 (3)2、C++语言的特点 (3)3、C++的优点与缺点 (4)第二章需求分析 (5)第三章设计分析 (7)3.1、ATM系统管理 (7)3.1.1统基本功能 (7)3.1.2相关数据结构的说明 (8)3.1.3类的设计 (8)3.2系统流程图 (9)3.3参数说明 (12)第四章运行及测试结果 (13)4.1、登录主界面 (13)4.2、挂失功能 (14)4.3、修改密码 (15)4.4、取款功能 (16)4.5、转账功能 (17)4.6、查询功能 (18)4.7、退出系统 (18)第五章课程设计总结 (19)附录 (20)参考文献 (31)现今的社会发展迅速,ATM成为了人们在银行方面不可缺少的使用工具,使用ATM的人越来越多,所以ATM的数量也在迅速的增长着。
电信运营公司已向社会提供ATM的商用业务,ATM技术正在走向成熟。
一些传统电信公司在核心网络技术的选择上首选ATM,例如AT&T。
但是,近来高比特路由器的问世,使一些数据业务的运营公司眼前一亮,并正在开展有关IP 直接在SONET或SDH上传送的业务。
Sprint公司使用Cisco12000路由器与SONETOC-12链路一起提供IPoverSONET业务。
MCI亦有计划提供类似的业务。
但是,这种方式与ATM相比,不足之处是尚不适于多业务平台,网络流量和拥塞控制能力差,也不能保证具有优先级的QOS,而ATM的可拓性及提供新业务的能力使得多数运营公司仍在积极地扩大ATM的服务范围。
本文将主要介绍ATM的特点。
ATM的发展情况及主要技术进展。
IATM的技术特点ATM的主要技术特点如下:1.ATM是一种统计时分复用的技术。
ATM 将一个物理通路划分为多个具有不同传输特性的虚通路提供给用户,实现网络资源的按需分配。
C语言模拟ATM提款机1.运用结构体2.运用文件调用源代码:#include "stdio.h"#include "stdlib.h"#include "conio.h"#define N 200void zhanghao(); //账号void xuanzhe(); //选择函数void enter_ATM(); //账号输入函数void input_code(); //密码输入函数void caozuo(); //基本操作界面void qukuan(); //取款函数void success(); //操作成功函数void delay(); //延时函数void YU_E(); //余额查询函数void cunkuan(); //存款函数void panduan(double z); //判断取款是否合法函数void exit(); //退出界面函数void mima(); //密码修改void zhuanzhang(); //转账函数void read(); //文件写入函数void write(); //文件读取函数void guanli(); //管理员函数void tequancode(); //管理员密码void hu(); //户void xinxi(); //信息void gmima(); //管理员改密void CAOZUO(); //管理员操作函数void yinghang(); //银行账户查询函数void jia(); //账户添加函数void shanchu(); //账户删除函数typedef struct{long int zhanghao;int mima;double yu_e;}atm;atm guan[N];int k;////////////////////////////////////////////////////////////主函数void main(){xuanzhe();}////////////////////////////////////////////////////////////功能选择函数void xuanzhe(){system("cls");printf("* 请选择功能*\n");printf("* 1.管理员 2.用户*\n");switch(getch()){case '1':tequancode();break;case '2':enter_ATM();break;default:{printf("\a非法输入");delay();system("cls");xuanzhe();};break;}}///////////////////////////////////////////////////////////柜台机账号输入函数void enter_ATM(){delay();system("cls");read();printf("* 欢迎使用ATM 柜台机*\n");printf("* 请输入卡号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误*\n");enter_ATM();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))input_code( );}system("cls");printf("* 账户不存在,请从新输入*\n");enter_ATM();}elseinput_code( );}////////////////////////////////////////////////////////////////密码输入函数void input_code( ){long int code;int temp=3;read();system("cls");printf("* 请输入密码*\n");scanf("%d",&code);while(code!=guan[k].mima){temp--;system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);if(temp==1){system("cls");printf("* 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();enter_ATM();}}caozuo();}//////////////////////////////////////////////////////////////////主操作界面函数void caozuo( ){system("cls");printf("********************************\n");printf("* 1.修改密码*\n");printf("* 2.查询余额*\n");printf("* 3.取款*\n");printf("* 4.存款*\n");printf("* 5.转账*\n");printf("* 6.退出*\n");printf("********************************\n");switch(getch( )){case '1': mima(); break;case '2': YU_E(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': zhuanzhang();break;case '6': exit(); break;default:{printf("\a非法操作\n");caozuo();};}}//////////////////////////////////////////////////////////////////////密码修改函数void mima(){long int mm1,mm2,mm3;int temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();mima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");delay();mima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );mima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );mima();}if(mm3=mm2){guan[k].mima=mm3;write();success();}}////////////////////////////////////////////////////////////////////余额查询函数void YU_E(){read();system("cls");printf("你的余额为:%lf\n",(guan[k].yu_e));printf("1.返回 2.退出\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}/////////////////////////////////////////////////////////////////////////取款函数void qukuan(){double temp;system("cls");printf(" 请选择您要取款的金额\n");printf(" 1.100 2.200 \n");printf(" 3.500 4.800 \n");printf(" 5.1000 6.其它\n");printf(" \n");printf(" 7.返回8.退出\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("请输入您要取款的金额:");scanf("%lf",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}///////////////////////////////////////////////////////////////////判断取款是否合法函数void panduan(double z){int beishu;if(z>(guan[k].yu_e)){system("cls");printf(" 余额不足!\n");printf(" 请重新操作\n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=(int)z%100;if(beishu!=0){system("cls");delay( );printf(" 本ATM机只支持100 的人民币\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000.00||z>5000.00){system("cls");printf(" 每次取款不能超过5000 元\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}(guan[k].yu_e)-=z;write();success();}/////////////////////////////////////////////////////////////////存款函数void cunkuan( ){double cun;system("cls");printf(" 请放入人民币:");scanf("%lf",&cun);while(cun<0){system("cls");printf(" 非法存款\n");printf(" 请重新放入人民币\n");scanf("%lf",&cun);}(guan[k].yu_e)+=cun;write();success();}/////////////////////////////////////////////////////////////////转账号函数void zhuanzhang(){int i,hao;double money;long int a=2109999999;system("cls");delay();read();printf("* 请输入账号*\n");scanf("%d",&hao);printf("* 请输入金额*\n");scanf("%lf",&money);if(hao<1000000000||hao>a){printf("* 账号错误,操作取消*\n");delay();delay();caozuo();}else if(money>guan[k].yu_e||money<0){printf("* 金额错误,操作取消*\n");delay();delay();caozuo();}else{read();for(i=1;i<N;i++){if(guan[i].zhanghao==hao)break;}guan[k].yu_e-=money;guan[i].yu_e+=money;write();success();}}///////////////////////////////////////////////////////延时函数void delay( ){long int bl1;int bl2;for(bl1=600000;bl1>0;bl1--){for(bl2=300;bl2>0;bl2--);}}/////////////////////////////////////////////////操作成功函数void success( ){system("cls");printf(" 操作已成功\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}//////////////////////////////////////////////系统退出函数void exit(){system("cls");printf("* 欢迎您的再次使用*\n");printf("* 系统正在退出... *\n");delay();xuanzhe();}////////////////////////////////////////////////////文件读取函数void read(){int i;FILE *fp;fp=fopen("xinxi.txt","r");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fscanf(fp,"%d ",&(guan[i].zhanghao));fscanf(fp,"%d ",&(guan[i].mima));fscanf(fp,"%lf\n",&(guan[i].yu_e));}fclose(fp);}/////////////////////////////////////////////////////////////文件写入函数void write(){int i;FILE *fp;fp=fopen("xinxi.txt","w");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fprintf(fp,"%d ",guan[i].zhanghao);fprintf(fp,"%d ",guan[i].mima);fprintf(fp,"%lf\n",guan[i].yu_e);}fclose(fp);}void tequancode( ){long int code;int temp=2;read();system("cls");printf("* 请输入管理员密码*\n");scanf("%d",&code);while(code!=guan[0].mima){system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);temp--;if(temp==0){system("cls");printf("*\a 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();xuanzhe();}}guanli();}////////////////////////////////////////////////////////////////管理员函数void guanli(){system("cls");delay();printf("* 1.信息查询*\n");printf("* 2.操作*\n");printf("* 3.退出*\n");switch(getch()){case '1':zhanghao();break;case '2':CAOZUO();break;case '3':exit();break;default:{printf("\a非法操作");guanli();};}}/////////////////////////////////////账号void zhanghao(){system("cls");read();printf(" 请输入账号\n");long int user;scanf("%d",&user);if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))hu();}system("cls");printf("* 账户不存在,请从新输入*\n");delay();guanli();}else{delay();hu( );}}////////////////////////////////////////////////账户void hu(){system("cls");printf("* 1.信息 2.改密码*\n");printf("* 3.返回 4.退出*\n");switch(getch()){case '1':xinxi();break;case '2':gmima();break;case '3':zhanghao();break;case '4':guanli();break;default:{printf("\a非法操作\n");hu();};}}///////////////////////////////////////////////信息void xinxi(){system("cls");read();printf("*账号密码余额*\n");printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf \n",guan[k].yu_e);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':hu();break;case '2':guanli();break;}}///////////////////////////////////////////管理员改密void gmima(){long int mm1,mm2,mm3;char temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();gmima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入!\n");delay();gmima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );gmima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );gmima();}if(mm3=mm2){guan[k].mima=mm3;write();hu();}}///////////////////////////////////////////管理员操作函数void CAOZUO(){system("cls");delay();printf("* 1.查询所有账户*\n");printf("* 2.添加账户*\n");printf("* 3.删除账户*\n");printf("* 4.返回 5.退出*\n");switch(getch()){case '1':yinghang();break;case '2':jia();break;case '3':shanchu();break;case '4':guanli();break;case '5':xuanzhe();break;default:{printf("\a非法操作\n");CAOZUO();};}}//////////////////////////////////////////银行账户查询函数void yinghang(){system("cls");delay();read();printf("*账号密码余额*\n");for(;k<N;k++){if(guan[k].zhanghao!=0&&guan[k].zhanghao>0){printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf\n",guan[k].yu_e);}}printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}//////////////////////////////////////////账户添加函数void jia(){int mm1,mm2;int temp;system("cls");delay();read();printf("* 请输入密码*\n");scanf("%d",&mm1);if(mm1<100000||mm1>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入: \n");delay();scanf("%d",&mm1);}temp=mm1%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入: \n");delay( );scanf("%d",&mm1);}printf("\n");printf("确认密码:\n");scanf("%d",&mm2);if(mm1!=mm2){system("cls");printf("确认密码不一致,操作取消\n");delay( );CAOZUO();}if(mm1=mm2){for(;k<N;k++){if(guan[k].zhanghao==0){guan[k].zhanghao=guan[k-1].zhanghao+1;guan[k].mima=mm2;write();break;}}printf("账号创建成功!\n");printf("您的账号是%d,请妥善保管!\n",guan[k].zhanghao);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}/////////////////////////////////////////账户删除函数void shanchu(){system("cls");delay();read();printf("* 请输入账号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误,操作取消*\n");CAOZUO();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao)){for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}system("cls");printf("* 账户不存在*\n");delay();CAOZUO();}else{for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}。
温馨提示程序语言: C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)图形功能选项: Win32 控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面 Win32 控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)C++语言项: STL库(黑体标明表示使用C++的STL库)编译环境: Windows 7 64 位旗舰版(Linux及其他环境请谨慎下载)集成开发环境: Visual C++ 6.0 、 DEVC++、 CodeBlocks、 Visual Studio 2015 均可通过编译。
(浅蓝色字体表示需要运行修改后的版本,请用户自行选择源代码测试)一个文件内,如需试验头文件功能,请自行参考分多头文件编译:否(所有代码基本都包含在相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。
2、代码行数:241 行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。
4、附录绝对包含用户使用手册及程序完整源代码和详细注释。
5、如需下载其他头文件(例如DirectX 需另行配置),本文会在此进行说明。
6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。
《面向对象程序设计》课程设计报告书设计题目:模拟 ATM 机存取款管理系统设计指导老师:学生班级:学生学号:学生姓名:同组人员:时间:2017.12.课程设计任务书题目模拟ATM机存取款管理系统设计一、设计内容及要求(1)卡号、密码输入最多三次,否则直接退出系统。
(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
(3)查询功能:实现查询余额功能。
(4)更改密码:实现密码更改功能,对于密码要有 2 次验证。
(5)锁卡功能:实现卡被锁的功能。
(6)退卡功能:实现退出系统功能。
二、设计原始资料三、设计完成后提交的成果及其相关资料。
四、主要参考资料《 c++程序设计(第二版)》五、进程安排12.25 :类的设计12.26 :模块 4.2 、4.3 的设计12.27 :模块 4.4 、4.5 的设计12.28 :完成课程设计报告第一章概述使用 ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。
本文就以 C++语言设计一项简单的模拟ATM柜员机程序。
运行程序时,当输入给定的卡号和密码(初始卡号和密码都为123456)后,系统就能登录 ATM柜员机系统,用户可以进入功能实现界面,有查询余额,取款,存款,修改密码等功能。
设计要点:使用文本命令行界面。
当输入给定的卡号和密码(初始卡号和密码为 123456)时,系统能登录 ATM柜员机系统,用户可以按照以下规则进行:查询余额:初始余额为10000 元ATM取款:每次取款金额为100 的倍数,总额不超过5000 元,支取金额不允许透支。
ATM存款:不能出现负存款。
修改密码:新密码长度不小于 6 位,不允许出现 6 位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
第二章设计内容2.1 功能:设计一个模拟 ATM柜员机的程序,输入你需要的操作(选择相对的括号里的阿拉伯数字)程序具体功能有:(1)查询余额(2) ATM取款(3) ATM存款(4)修改密码(5)退出系统2.2 操作:本程序通过键盘操作。
在运行过程中,当用户输入正确的账号和密码时,会出现一个功能界面,按照功能界面操作。
只需输入所需操作的序号,便可执行其中相应的功能。
但是需要小心的是如果输错密码三次,便会锁卡,这时将无法操作。
第三章总体设计3.1 模块化设计为实现系统功能,本程序主要分为六个模块。
它们分别为:主界面、查询余额、 ATM取款、 ATM存款、修改密码、退出系统。
这六个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。
然后,通过执行多分支选择语句——switch 语句,分别实现其它各个函数的调用功能。
其它各个函数的功能分别如下:ATM()构造函数face()构造函数checkout() lock() checkmoney() getmoney() savemoney()检验卡号密码锁卡查询余额ATM取款ATM存款change()修改密码exitsystem()退出系统show()打印界面3.2 程序运行示意图主界面输入卡号、密码退出系统查询余额取款存款修改密码第四章详细设计4.1 类的设计设计了两个类,ATM类和 face 类。
ATM类完成 ATM柜员机的模拟,包括:验证卡号密码,查询余额,修改密码,取款,存款,退出系统等功能。
face 类完成显示登陆界面的功能,显示查询余额,修改密码,取款,存款,退出系统的选项。
ATM类的设计:class ATM{protected :string card;string password;float money;static int times;public :ATM(string c, string p, float m)// 构造函数{card= c;password=p;money=m;}int checkout();//验证卡号密码void lock();// 锁卡void checkmoney();//查询余额void getmoney();//取款void savemoney();//存款void change();//修改密码void exitsystem();//退出系统};face 类的设计class face : public ATM{protected :int x;public :face( string c, string p, float m): ATM( c, p, m)// 构造函数{}void show();//显示界面};4.2 ATM柜员机的登陆在 main 主函数中实例化一个face类的对象,卡号密码都为123456,默认余额为10000. 在程序运行中输入卡号密码,若都正确即可进入主界面,选择ATM柜员机的功能。
程序运行首先要求用户输入卡号和密码,卡号和密码首先由main 主函数构造默认,然后用 checkout()函数判断卡号密码是否一致,一致则登陆,如果连续 3 次输入错误,则用lock ()函数锁定卡号密码。
相关代码:void ATM::lock(){if (times==3){cout<< " 输入密码 3次错误,该卡已被锁 " <<endl;exitsystem();}}int ATM::checkout(){string a;string b;while (1){cout<< " 请输入您的卡号 :" ;cin>>a;cout<< " 请输入您的密码 :" ;cin>>b;if (card!=a||password!=b){times++;lock();cout<< " 卡号或密码有误,请重新输入" <<endl;}else{break ;}}return1;}4.3 ATM柜员机修改密码功能新密码长度不小于 6 位,不允许出现 6 位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才能成功修改密码。
输入正确卡号密码后,或者实现其他功能退回主界面后都可以选择柜员机的修改密码功能,在运行过程中先要求用户输入旧密码,判断用户输入的旧密码是否与默认密码相同,若相同则继续运行,若不同则需要重新输入。
验证旧密码正确后系统会要求用户定义新密码,新密码要重复输入两次,要求两次必须重复正确且新密码符合要求才能修改成功。
相关代码:void ATM::change(){int count=0,i,j,flag=1;string secondpassword;string newpassword;string oldpassword;cout<< " 请输入旧密码 :" ;cin>>oldpassword;if (password==oldpassword){cout<< " 请输入新密码 :" ;cin>>newpassword;if (newpassword.size()>=6){for (i=0;i<newpassword.size();i++){for (j=i+1;j<newpassword.size();j++){if (newpassword[i]==newpassword[j]){count++;}}}if (count<6){while (flag){cout<< " 请再次输入新密码 :" ;cin>>secondpassword;if (newpassword==secondpassword){cout<< " 密码修改成功 !" <<endl;flag=0;}else{cout<< " 两次密码输入不一样 , 请重新输入 " <<endl;flag=1;}}}else{cout<<" 修改密码失败,请重新修改" <<endl;}}else{cout<< " 修改密码失败,请重新修改" <<endl;}}else{cout<< " 修改密码失败,请重新修改" <<endl;}}4.4 ATM 柜员机存款取款功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择取款,存款功能。
取款功能要求用户输入取钱金额,取钱功能用 if语句判断金额是否是 100 的倍数且金额是否大于5000 或小于 0,若符合要求,则顺利运行。
用getmoney() 函数实现更新用户余额,余额为账户余额减去取钱金额,当取钱成功时,系统会提示用户是否继续取钱,若输入“Y”则继续,若输入“ N”则退回主界面,若输入其他字符则要重新输入。