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

合集下载

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

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

ATM取款机模拟系统程序设计报告完成版一、需求分析随着科技的发展和人们对金融服务的需求增加,ATM取款机已成为现代社会的重要设备之一、考虑到ATM取款机操作流程相对简单,并且具有实际应用价值,本报告旨在设计一个ATM取款机的模拟系统。

1.1系统功能需求本系统的功能需求包括:1)根据用户输入的账户信息验证用户身份;2)提供取款、查询余额、修改密码等基本操作;3)通过账户信息连接数据库,更新用户账户余额;4)在操作过程中,根据用户输入提供相应的错误提示信息。

1.2系统性能需求本系统的性能需求包括:1)快速响应用户的操作,保证系统的实时性;2)安全性,确保用户信息的机密性;3)友好的用户界面,方便用户操作。

二、系统设计2.1系统结构设计本系统主要由客户端和服务器端两个部分组成。

客户端负责与用户进行交互,接收用户的操作指令并发送给服务器端;服务器端负责处理用户操作,并通过数据库更新用户账户余额。

2.2数据库设计本系统使用关系型数据库,数据库表设计如下:1)用户表:包括账户号、姓名、密码等字段;2)账户表:包括账户号、余额等字段。

2.3系统功能设计本系统包括以下功能模块:1)用户身份验证模块:根据用户输入的账户信息,验证用户身份。

2)取款模块:根据用户输入的取款金额,更新用户账户余额。

3)查询余额模块:根据用户账户号,从数据库中查询用户账户余额。

4)修改密码模块:根据用户输入的新密码,更新用户密码信息。

三、系统实现3.1使用的技术本系统使用C++语言实现。

使用C++的面向对象编程思想,将不同功能模块封装成不同的类,提高代码的可读性和可维护性。

3.2类设计本系统主要包括用户类、取款类、查询类和密码类等。

不同的类负责不同的功能模块。

3.3程序流程程序主要分为以下几步:1)用户输入账户信息;2)系统验证用户身份;3)根据用户选择的操作,调用不同的功能模块;4)功能模块从数据库中查询或更新数据,根据操作结果给出相应的反馈信息;5)用户按需继续进行操作或退出系统。

c++ATM机仿真设计实验报告

c++ATM机仿真设计实验报告

一、实验名称:ATM机仿真程序设计二、实验目的:实验目的使学生掌握类的简单设计及实现三、实验仪器:PC机,人手一机四、实验原理及内容4.1 实验设计:运用C++语言描述ATM机类和银行卡类,每个类均包含数据成员和成员函数,并运用对象的引用和友元类的知识。

注重面向对象程序设计理论知识的理解与实际的动手编程能力。

运用面向对象的理念实现模拟自动取款机使用过程中的界面和用户交互过程。

实验预定要求:1)正确性和健壮性:即此程序对一切合法的的操作都得能满足规格说明要求的结果,对不合法的操作也要有正确的处理措施,使程序严谨,保证用户的信息和财产安全;2)可读性:程序要尽量简明扼要,便与相关人员调试和修改;3)效率性:要求本程序执行时间尽可能短,占用的内存空间尽可能的少。

4.2 ATM系统实现:1)核对用户卡号、密码:核对用户输入的密码与卡号是否对应正确;2)修改密码:修改银行卡密码;3)取款功能4)存款功能5)查询账户信息:显示用户名、卡号、余额信息;6)退出终端系统:操作完成,退出;7)锁机吞卡:操作不当,密码输入错误超过三次,退出系统。

4.3系统分工:4.4 函数流程图:登录终端界面(主程序)流程图输入卡号、密码开始判断卡号密码是否正确进入账号操作菜单卡号密码输入是否超过3次关闭终端退出1.修改密码2.取款功能3.存款功能4.查询余额0.退出系统NYNY修改密码(核心算法)流程图:取款功能(核心算法)流程图:开始N输入取款金额是否为负数Y是否>5000Y是否为100的倍数Y账户中余额是否足够Y更新账户信息存款操作成功结束实验源代码清单:#include <iostream>#include<iomanip>#include<string>#include <cstring>#include <stdio.h>#include <stdlib.h>using namespace std;class consumer //用户定义{public:friend class ATM;consumer(char Name[],char Num[], float Money,char Password[]); protected:char* get_name();char* get_kahao();char* get_passwd();float get_money();void set_passwd(char pwd[]);void set_money(float m);void set_money2(float a);private:char passwd[10]; //用户密码char name[20]; //用户姓名char kahao[20]; //用户卡号float money; //用户余额};class ATM //ATM终端定义{public:A TM(consumer & cn):cnsm(cn){}void welcome(); //登陆终端界面bool check_passwd(char n[],char pwd[]); //核对用户密码void change_passwd(); //修改用户密码void fetchmoney(); //取款功能void deposit(); //存款功能void information(); //查询信息void exitATM(); //退出终端系统void functionshow(); //功能界面void lock(); //输入错误,退出终端private:int times; //记录密码输入次数consumer &cnsm;};int main(){consumer one("wangrunke","22889350248",10000.00F,"666666"); //构造一位用户,信息包//括:用户姓名、用户卡号、用户账户余额、用户密码A TM atm(one);atm.welcome();return 0;}consumer::consumer(char Name[],char Kahao[], float Money,char Password[])//构造函数,建立账户{strcpy(name,Name);strcpy(kahao,Kahao);money=Money;strcpy(passwd,Password);}float consumer::get_money() //获取余额{return money;}char*consumer::get_name() //获取用户名{return name;}char*consumer::get_kahao() //获取用户卡号{return kahao;}char*consumer::get_passwd() //获取用户密码{return passwd;}void consumer::set_passwd(char pwd[])//设置用户密码{strcpy(passwd,pwd);}void ATM::welcome() //登录用户界面{times=0;cout<<"\n\n\n\t\t*欢迎使用银行ATM自动取款机*\n\n"<<endl;char pwd[6],num[20],ch;int i=0;do{i=0;cout<<endl<<"\t\t请输入卡号:";do{cin.get(ch);num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;cout<<"\t\t请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num,pwd)){cout<<"\n\t\t你输入的卡号或密码有误,请重新输入!"<<endl;times++;}elsefunctionshow();}while(times<3);lock();}bool ATM::check_passwd(char num[],char pwd[]){if(strcmp(num,cnsm.get_kahao())==0&&strcmp(pwd,cnsm.get_passwd())==0) return true;elsereturn false;}void ATM::functionshow(){system("cls"); //每次执行一次操作进行清屏int n;do{cout <<endl<<"\n\n\n\t\t******欢迎进入用户界面******\t\t "<<endl;cout<<"\n\n\t\t*1.修改密码*"<<endl<<"\t\t*2.取款功能*"<<endl<<"\t\t*3.存款功能*"<<endl<<"\t\t*4.查询余额*"<<endl<<"\t\t*0.退出系统*"<<endl;cout<<"\t\t 功能选项(0-3):";cin>>n;while(n<0||n>4){cout<<"\t\t请在范围内输入功能选项!"<<endl;cout<<"\t\t 功能选项(0-4):";cin>>n;}switch(n){case 0: exitA TM();break;case 1: change_passwd();break;case 2: fetchmoney();break;case 3: deposit();break;case 4: information();break;}}while(true);}void ATM::change_passwd(){system("cls");char pwd[6],repwd[6];times=0;do{cout<<"\n\n\n\t\t******修改密码******"<<"\n\t\t请输入原密码:";cin>>pwd;if(!check_passwd(cnsm.get_kahao(),pwd))times++;elsebreak;}while(times<3);if(times==3)lock();int k=0;int t=0;do{k=0;cout<<"\n\t\t请输入新密码:";cin>>pwd;int g=0;int v=0;g=strlen(pwd);if(g!=6){k=1;cout<<"\n\t\t密码为6位数字!"<<endl;}for(int i=0;i<g-1;i++){if(pwd[i]==pwd[i+1])v=v+1;}if(v==g){k=1;cout<<"\t\t原密码与新密码不能一致!"<<endl;}if(g==6&&v!=g){cout<<"\n\t\t请再次输入新密码(两次保持一致):";cin>>repwd;if((t=strcmp(pwd,repwd))!=0)cout<<"\t\t你输入的两次密码不一样,请重新输入!"<<endl;}}while(t!=0||k==1);cnsm.set_passwd(pwd);cout<<"\n\n\t\t温馨提示:密码修改成功"<<endl;cout<<"\n\n\t\t";system("pause");system("cls");}void ATM::fetchmoney(){system("cls");float m;char ch;do{cout<<"\n\n\n\t\t ******取款功能******"<<"\n\t\t本ATM终端机只能取出面值为100元的人民币"<<endl<<"\t\t温馨提示:取款金额为100的倍数"<<endl<<"\t\t 每次最多取款5000元"<<"\n\n\t\t 请输入取款金额:";cin>>m;while(m<=0){cout<<"\n\t\t请不要输入负数或0!"<<endl;cout<<"\t\t" ;system("pause");cout<<"\n\t\t 请重新输入取款金额:" ;cin>>m;}if(m>5000){cout<<"\n\t\t对不起,本A TM终端机一次最多取5000元"<<endl;cout<<"\t\t 若金额超过1万元请在柜台取款" <<endl;cout<<"\t\t 如果给您带来不便,还请谅解";}else{if((int)m%100!=0){cout<<"\n\t\t对不起,取款金额为100的倍数"<<endl;}else{if(cnsm.get_money()-m<0){cout<<"\t\t对不起,你的账户余额不足!"<<endl;}else{cout<< endl<<"\t\t *操作成功,请取回款" <<endl;cnsm.set_money( m );}}}cout<<"\n\t\t ***账户现有余额: "<<cnsm.get_money()<<endl;cout<<"\n\t\t是否要继续该项操作(Y/N):";cin>>ch;while(ch!='n'&&ch!='Y'&&ch!='y'){cout<<"(Y/N):";cin>>ch;}}while(ch=='y'||ch=='Y');system("cls");}void ATM::deposit(){system("cls");float a;char b;do{cout<<"\n\n\n\t\t ******存款功能******"<<"\n\t\t本ATM终端机只能存入面值为50或100元的人民币"<<endl<<"\t\t温馨提示:存款金额为50的倍数"<<endl<<"\t\t 每次最多存款5000元"<<"\n\n\t\t 请输入存款金额:";cin>>a;while(a<=0){cout<<"\n\t\t请不要输入负数或0!"<<endl;cout<<"\t\t" ;system("pause");cout<<"\n\t\t 请重新输入存款金额:" ;cin>>a;}if(a>5000){cout<<"\n\t\t对不起,本A TM终端机一次最多存5000元"<<endl;cout<<"\t\t 若金额超过1万元请在柜台存款" <<endl;cout<<"\t\t 如果给您带来不便,还请谅解";}else{if((int)a%50!=0)cout<<"\n\t\t对不起,存款金额为50的倍数"<<endl;else{cout<< endl<<"\t\t *操作成功,存款完成" <<endl;cnsm.set_money2 (a);}}cout<<"\n\t\t ***账户现有余额: "<<cnsm.get_money()<<endl;cout<<"\n\t\t是否要继续该项操作(Y/N):";cin>>b;while(b!='n'&&b!='Y'&&b!='y'){cout<<"(Y/N):";cin>>b;}}while(b=='y'||b=='Y');system("cls");}void ATM::information(){system("cls");cout<<"\n\n\n\t\t******************账户信息****************"<<endl;cout<<"\n\n\t\t 用户姓名"<<" 卡号"<<" 余额"<<endl;cout<<"\t\t"<<cnsm.get_name()<<" "<<cnsm.get_kahao()<<" "<<cnsm.get_money()<<endl;cout<<"\n\n\t\t******************************************"<<endl;cout<<"\n\n\t\t";system("pause");system("cls");}void ATM::lock(){system("cls");cout<<endl<<"\n\n\n\t\t感谢使用本ATM终端机!"<< "\n\t\t请取回您的银行卡......."<<endl;}void ATM::exitATM(){system("cls");cout<<"\n\n\n\t\t成功退出ATM终端系统!欢迎使用!"<<endl;exit(0);}void consumer::set_money (float m){money=money-m;}void consumer::set_money2 (float a){money=money+a;}五、实验结果(实验数据、曲线等)5.1 登录用户界面:三次密码输入错误,执行lock 函数,退出终端。

ATM机取款系统的系统分析与设计-本科实验报告

ATM机取款系统的系统分析与设计-本科实验报告

本科实验报告课程名称:系统分析与设计实验项目:《ATM机取款系统》实验实验地点:行逸楼A103专业班级:软件1309 学号********** 学生姓名:***指导教师:***2015年11月 1 日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规范,为后继的学习打下良好的基础。

二、实验要求学生以个人为单位完成,自选题目,班内题目不重复,使用UML进行系统分析与设计,并完成实验报告。

实验报告以纸质版(A4)在课程结束后提交(10周)。

三、实验主要设备:台式或笔记本计算机四、实验内容1 选题及项目背景A T M机取款系统的分析与设计2 定义ATM(AutomanticTellerMachine)自动取款机是由计算机控制的持卡人自我服务型的金融专用设备.在我国,基本上所有的银行系统都有自己的ATM系统.ATM利用磁性代码卡或智能卡实现金融交易,代替银行前台工作人员的部分工作.顾客可以在ATM机上取钱、查询余额、转账和修改密码等业务.除此之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能.3 参考资料《系统分析与设计》作者:李爱萍人民邮电出版社4 系统分析与设计4.1需求分析4.1.1识别参与者用户(使用ATM机进行存取款)ATM机管理员(维护ATM机,往ATM机里放钱等)4.1.2 对需求进行捕获与描述用例名称:ATM机取款系统执行者:用户目的:完成一次取款流程)4.1.3 用例图通过已掌握的需求,初步了解系统所要完成的功能。

下面给出用例图。

余额查询图4.1 参与者用例图4.1.4 分析与讨论1)建模用例图的步骤、方法?1.识别系统的参与者;2.确定用例;3.明确参与者与用例间的关系2)如何识别系统的参与者?应该如何划分用例,应注意哪些问题?1.谁使用系统的主要功能;2.谁改变系统的数据;3.谁从系统中获取主要信息。

ATM取款机模拟程序的设计说明书

ATM取款机模拟程序的设计说明书

ATM取款机模拟程序设计说明书1.设计内容和要求设计内容课题的任务是设计一个ATM取款机的模拟程序。

日常生活中,我们常使用ATM取款机,对它的操作过程有所了解。

这里我们要模拟的是用户所见的ATM取款机的属性和行为,ATM机与网络连接的部分不包括在这个任务中。

设计中应尽可能把它模拟得与真实的ATM接近一些,我们抽象出下列问题:(1) 用户插卡,ATM验证用户帐号信息。

(2) 用户首次操作须验证密码。

(3) 用户查询余额,ATM显示余额。

(4) 用户取款,ATM操作交易过程。

(5) 用户转账,ATM请求插入转入卡,然后操作交易过程。

(6) 用户更改密码,ATM受理此业务。

(7) 用户退卡。

ATM清理现场。

(8) 所有用户信息保存在文件中。

(9) 对于一个在线用户,如果超过一定时间用户没有任何操作,ATM锁机,直到用户退卡为止。

(10) ATM向用户显示欢迎词及其他提示信息。

设计要求<1>功能要求:(1)插卡功能(用卡号模拟);(2)取款功能;(3)查询余额功能;(4)验证帐号功能;(5)更改密码功能;(6)退卡功能;(7)锁卡功能。

<2>界面要求:用户界面设计不做统一规定,但应做到界面友好,易于操作。

<3> 技术要求:要求所有用户的信息以密文形式保存在数据文件中,加密算法为:字节各位取反,然后高半字节和低半字节交换位置。

用户输入密码时不能以明文形式显示在屏幕上,应以“*”号代替来显示用户密码的输入。

要求利用面向对象的方法以及C++的编程思想来完成系统的设计;在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制来实现系统功能。

要求主函数(或图形界面下的主调函数)很“干净”,只有一些类对象的定义和某个类对象的一个成员函数的调用。

12.设计说明2.1问题描述与功能设计问题描述课题的任务是设计一个ATM取款机的模拟程序。

ATM取款机模拟程序 课程任务书

ATM取款机模拟程序 课程任务书

课程设计任务书课程名称:C++程序设计课程设计设计题目:ATM取款机模拟程序已知技术参数和设计要求:1. 问题描述:课题的任务是设计一个ATM取款机的模拟程序。

日常生活中,我们常使用ATM取款机,对它的操作过程有所了解。

这里我们要模拟的是用户所见的A TM取款机的属性和行为,ATM机与网络连接的部分不包括在这个任务中。

设计中应尽可能把它模拟得与真实的ATM接近一些,我们抽象出下列问题:(1) 用户插卡,A TM验证用户帐号信息。

(2) 用户首次操作须验证密码。

(3) 用户查询余额,ATM显示余额。

(4) 用户取款,A TM操作交易过程。

(5) 用户转账,A TM请求插入转入卡,然后操作交易过程。

(6) 用户更改密码,A TM受理此业务。

(7) 用户退卡。

A TM清理现场。

(8) 所有用户信息保存在文件中。

(9) 对于一个在线用户,如果超过一定时间用户没有任何操作,ATM锁机,直到用户退卡为止。

(10) ATM向用户显示欢迎词及其他提示信息。

2. 功能要求:(1)插卡功能(用卡号模拟);(2)取款功能;(3)查询余额功能;(4)验证帐号功能;(5)更改密码功能;(6)退卡功能;(7)锁卡功能。

3. 界面要求:用户界面设计不做统一规定,但应做到界面友好,易于操作。

4. 技术要求:要求所有用户的信息以密文形式保存在数据文件中,加密算法为:字节各位取反,然后高半字节和低半字节交换位置。

用户输入密码时不能以明文形式显示在屏幕上,应以“*”号代替来显示用户密码的输入。

要求利用面向对象的方法以及C++的编程思想来完成系统的设计;在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制来实现系统功能。

要求主函数(或图形界面下的主调函数)很“干净”,只有一些类对象的定义和某个类对象的一个成员函数的调用。

5. 课程设计时间:15周、16周6. 课程设计的考核方式及评分方法1)考核方式⏹课程设计结束时,在机房当场验收。

自动取款机(ATM)模拟程序(C#控制台应用程序)

自动取款机(ATM)模拟程序(C#控制台应用程序)

自动取款机(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的本质就是一组帐号的组合,并负责管理帐号。

java课程设计报告_自动取款机模拟程序

java课程设计报告_自动取款机模拟程序

学院计算机科学与技术系课程设计报告2014~2015学年第一学期课程JAVA课程设计课程设计名称自动取款机模拟程序学生姓名学号专业班级指导教师2014年9月自动取款机模拟程序一、课程设计过程概述这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。

这次课程设计的主要内容是独立用JAVA语言开发一个小的应用程序名称:自动取款机模拟程序内容:在PC机上设计一个自动取款机的模拟程序,实现现实中取款机的大部分功能。

二、任务和要求1.程序分为两部分:管理端和客户端。

2.管理端负责管理所有的银行卡,管理员可以增加和删除银行卡。

(1)每张银行卡由卡号唯一标识,卡号由9位阿拉伯数字组成;(2)新增的银行卡密码均为“123456”,卡内金额均为0元;(3)只有管理员增加的银行卡才能登陆客户端;(4)删除后的银行卡将不能再登陆客户端。

3.客户端负责常见的取款机操作。

(1)客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作;(2)登陆后,用户可以进行查询余额、取款、存款和修改密码的操作;(3)修改密码时,用户需输入两次新密码,确定无误后方可更改;(4)取款和存款操作,有操作结果提示,如“操作成功”或“余额不足,操作失败”等。

三、数据库设计程序中包括用户客户端和管理客户端,所以在数据库中需要设计用户信息表和管理员信息表分别来保存用户信息和管理员信息(数据库采用MySQL)。

表1用户信息表(user)列名数据类型及长度是否为空主键默认值说明cardNum Varchar(12)NO 主键用户帐号password Int(6) NO 123456 用户密码balance Int(10) NO 0 余额表2管理员信息表(admin)列名数据类型及长度是否为空主键默认值说明adminName Varchar(10)NO 主键管理员帐号password Varchar(10)NO admin 管理员密码四、系统设计1、设计框架图一总体设计框架2、总体设计我所设计的ATM机主要是由登录页面模块还由选择服务模块组成,在登录时可选择用户登录或管理员登陆。

JavaATM课程设计报告书

JavaATM课程设计报告书

呼和浩特民族学院课程设计报告设计名称:《面向对象程序设计》课程设计选题名称: ATM自动取款机模拟系统姓名:萌学号:专业班级:计算机科学与技术专业系(院):计算机系设计时间:2013.11.19~2013.11.28设计地点: 5、6机房4.课程设计成果调试程序,进入主界面:选择查询选择查询后,进入如下界面,可以先输入密码,检测密码输入是否正确。

取款查看余额更改密码:存款转账:继续操作检验和退出程序:5.课程设计心得在本次的课程设计中,ATM自动取款机模拟系统在初选时觉得很难,因为在我觉得这个程序太大了,而且有好的方法我不是很熟练,我也在网上查阅的很多资料,最后定下这个程序。

根据课程设计的要求,在ATM自动取款机模拟系统要实现查询,存款,取款,转账,密码修改等功能,还有程序选择功能,错误提示,退出系统等功能。

在调试过程中,出现了很多问题,对于我来说,方法的调用时最难的了,经过网上查询,老师帮助,同学商议,最后解决了我的难题,但是我写的还是很慢的了,经过斟酌才写下这篇程序报告。

不过通过解决这些问题,我也对java中许多不理解的地方也有了不同的看法,知道了很多的知识,我觉得这些辛苦没有白费。

最后,能让读者或者使用的人更清楚明白的直观的认识这个程序我加了很多,汉语的注释和操作中的提示,通过这次程序设计报告的完成我希望以后我的程序越来越好,我知道的知识越来越多。

参考文献:《Java语言与面向对象程序设计》-----------王行言编著《Java2实用教程》------------------------耿祥义,跃平编著《Java实用程序设计100例》---------------袁海燕,王文涛编著。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录三、编程题部分(银行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)数据分析(描述定义的各主要变量的作用及意义);char zhanghao[16];/*用户账号*/char xingming[9];/*用户姓名*/char mima[7];/*账户密码*/char shengfenzheng[19];/*用户身份证号*/float yue;/*账户余额*/char kaihushijian[50];/*开户时间*/char zhanghao[16];/*交易的账号*/char jiaoyishijian[50];/*交易时间*/char leixing[5];/*交易类型*/float jiaoyijine;/*交易金额*/float jiaoyiyue;/*交易后的余额*/char duifangzhanghao[12];/*交易时的对方账号*/int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/注册函数:int baiwei,shiwei,gewei,len;/*定义账号的后三位*/char mima2[7];/*注册时第二次输入的密码*/登录函数:char zhanghao[16],mima[7];/*登录时输入的账号和密码*/装载和保存文件函数:FILE *fp;/*定义文件指针*/char wenjianming[13];/*定义输入的文件名*/存、取款,转账函数:float jine;/*输入的存、取款,转账金额*/char t[30];/*把取得的存、取款,转账时间赋给该数组*/转账函数:char duifangzhanghao[16],c;/*输入的对方账号赋给该数组。

在判断是否继续时,把输入的字符Y或N赋给c,以便读入选择*/修改密码函数:char mima[7],xinmima1[7],xinmima2[7];/*旧密码,第一次输入的新密码,第二次输入的新密码*/(2)程序流程分析(描述主程序的基本构成、函数设计、函数的调用关系、各部分的流程图等。

)主程序的基本构成::struct Zhanghu{};/*账户的结构体*/typedef struct{}Jiaoyi;/*交易记录的结构体*/int menu(); /*主菜单函数*/void zhuce(); /*主菜单功能函数—注册函数*/void denglu(); /*主菜单功能函数登录函数*/void zhuangzai(); /*主菜单功能函数装载数据函数*/void baocun(); /*主菜单功能函数保存数据函数*/int denglu_menu(); /*登录菜单函数*/void cunkuan(); /*登录菜单功能函数—存款函数*/void qukuan(); /*登录菜单功能函数—取款函数*/void zhuanzhang(); /*登录菜单功能函数—转账函数*/void chaxun(); /*登录菜单功能函数—查询函数*/void xiugaimima(); /*登录菜单功能函数—修改密码函数*/int chaxun_menu(); /*查询菜单函数*/void chaxun_yue(); /*查询菜单功能函数—查询余额函数*/void chaxun_mingxi(); /*查询菜单功能函数—查询明细函数*/void chaxun_cunkuan(); /*查询菜单功能函数—查询存款函数*/void chaxun_qukuan(); /*查询菜单功能函数—查询取款函数*/void chaxun_zhuanzhang();/*查询菜单功能函数—查询转账函数*/函数设计:本程序在函数设计上采用结构化程序设计方法,自顶向下,逐步根据功能设计函数,逐步细化设计,由浅入深,模块化设计,保证了程序的可读性和质量。

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

如图示意:(顶层设计)(第二层设计)二级菜单(第三层设计)函数调用关系:main zhucestrcpystrlenstrcmpdenglustrcmpcunkuanqukuanzhuangzhangdenglu_menustrcmpstrcpychaxunchaxun_menuchaxun_yuechaxun_mingxichaxun_cunkuanchaxun_qukuanchaxun_zhuanzhangxiugaimimazhuangzaifopenfscanffgets主菜单功能注册登录装载保存存款取款转账查询怎样读入怎样保存怎样注册注册函数的流程图:N YYN 登录函数的流程图:NYN YNYNY修改密码函数的流程图:N Y开始定义数据变量,调用时间函数,设置账号的随机分配 输入姓名 输入两次密码两次密码相同 输入身份证号号位数既不为15也不为18输入存款金额输出账户和第一次交易的数据清单结束 开始 定义个变量,i=0输入账号 i<zhanghuxu输入的账号和已注册的某一账号相同i++ 输入密码密码错误 密码输入次数为3 return ;进入登陆界面 执行switch 功能语句 输入选项数字数字为0 退出 根据选项执行语句输入账号输入旧密码密码正确 return;fclosebaocunfopenfprint fclosemenuNN YY 存款函数的流程图:取款函数的流程图: 转账函数的流程图:YNNYY N N YY N输入两次新密码 两次密码输入相同 密码修改成功结束 次数为3return;结束 返回开始 system("cls"); 输入存款金额jine jine%50!=0||jine<=0 return ;调用时间函数 存款成功调用strcpy 函数复制账号、类型、时间。

计算余额输出存款的交易记录Y N jine%50!=0||jine<=0 结束 返回 开始 system("cls");输入取款金额jineY N 取款金额大于账户余额 N Y 输出提示,return;jine%50!=0|| jine<=0return;调用时间函数调用strcpy 函数复制账号、类型、时间。

计算余额输出存款的交易记录开始 输入对方账号是否与当前登录账号相同return;i<zhanghuxuhao输入的账号与已注册的某一账号相同i++;return;i=zhanghuxuhao 输出对方账号的姓名是否继续 return;输入转账金额jinejine 大于账户余额 return;jine<=0Y NNY装载函数的流程图:YNN N YY保存函数的流程图:YNN N YY3、编码及调试#include<stdio.h> #include<stdlib.h> #include<string.h>显示警告信息是否继续 return;执行转账语句 输出转账交易记录结束开始输入要读入数据的文件名 找不到该文件名 i<zhanghuxuh 从文件中读入账户的数据i++i<jiaoyixuhao从文件中读入交易记录的数据信息i++关闭文件结束返回开始输入要保存数据的文件名 新建该文件,若打不开文件 i<zhanghuxuh 把账户的数据输出到文件i++i<jiaoyixuhao把交易记录的数据信息输出到保存文件i++关闭文件结束返回#include<time.h>#include<conio.h>#define ZHANGHUSHU 100/*账户的结构体*/struct Zhanghu{char zhanghao[16];/*用户账号*/char xingming[9];/*用户姓名*/char mima[7];/*账户密码*/char shengfenzheng[19];/*用户身份证号*/float yue;/*账户余额*/char kaihushijian[50];/*开户时间*/};typedef struct /*交易记录的结构体*/{char zhanghao[16];/*交易的账号*/char jiaoyishijian[50];/*交易时间*/char leixing[5];/*交易类型*/float jiaoyijine;/*交易金额*/float jiaoyiyue;/*交易后的余额*/char duifangzhanghao[12];/*交易时的对方账号*/} Jiaoyi;struct Zhanghu zhanghu[100];/*定义账户的结构体数组,可以注册100个账户*/int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/Jiaoyi jiaoyi[1000];/*定义交易记录的结构体数组,可以保存1000条交易记录*/int menu(); /*声明主菜单函数*/void zhuce(); /*声明注册函数*/void denglu(); /*声明登录函数*/void zhuangzai(); /*声明装载数据函数*/void baocun(); /*声明保存数据函数*/int denglu_menu(); /*声明登录菜单函数*/void cunkuan(); /*声明存款函数*/void qukuan(); /*声明取款函数*/void zhuanzhang(); /*声明转账函数*/void chaxun(); /*声明查询函数*/void xiugaimima(); /*声明修改密码函数*/int chaxun_menu(); /*声明查询菜单函数*/void chaxun_yue(); /*声明查询余额函数*/void chaxun_mingxi(); /*声明查询明细函数*/void chaxun_cunkuan(); /*声明查询存款函数*/void chaxun_qukuan(); /*声明查询取款函数*/void chaxun_zhuanzhang();/*声明查询转账函数*/void main()/*主函数*/{system("color 1F");/*设置运行界面的背景颜色为蓝色*/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()) /*主菜单选择判断*/{case 1:zhuce();/*调用注册函数*/printf("\t\t\t");break;case 2:denglu();/*调用登录函数*/printf("\t\t\t");break;case 3:zhuangzai();/*调用装载数据的函数*/printf("\t\t\t");break;case 4:baocun();/*调用保存数据的函数*/printf("\t\t\t");break;case 0:printf("\t\t\t欢迎使用ATM终端机管理系统。

相关文档
最新文档