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)用户按需继续进行操作或退出系统。
ATM实验报告

长沙学院程序设计基础实验/实训报告2012年11月项目实训任务书课程名称:程序设计基础实验课程编码:JX020102课程类别:专业基础必修课学分数:1.5学时数:24开课学期:3实训题目:ATM存取款系统的改进与完善一、已知技术参数和设计要求:银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。
为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。
用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。
本系统各个业务有如下注意点:(1)登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。
(2)开户业务要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。
同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。
(3)存款业务客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。
(4)取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。
(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。
(6)转账业务客户登陆系统后,可以选择转账业务,进行转账。
注意的是转账的目的账户必须是本系统已经存在的银行账户。
(7)修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。
二、各阶段具体要求:1、系统总体设计阶段(1)根据需求分析划分功能模块(2)分析并设计各个功能模块之间的关系(3)对于各个功能模块,设计相应的数据结构(必须使用链表完成全部功能)(4)设计相应的算法(必须包括排序和检索功能,且基于链表进行排序和检索)2、详细设计阶段(1)对于每个功能模块,应划分成操作层和数据层(2)对于每个操作层,应尽量考虑用户操作的简单,便捷(3)对于每个数据层,必须使用链表进行管理(4)在用链表进行管理时,必须用到链表检索和排序(5)对于数据层的操作完的数据必须保存到文件中(包括文件读、写操作)3、编码实现阶段(1)完成代码编写(2)要求代码编写规范(不得使用全局变量、所有功能模块必须使用函数封装主函数main()的行数不得超过代码总长度的25%)(3)代码必须有相应的注释(注释行数不得少于代码的10%,函数功能、变量名、算法、重要的循环、分支都必须用注释说明)4、系统测试阶段(1)完成功能调试(2)要求完成必要的测试工作5、交付实施阶段(1)提交可正常执行的系统,程序代码(2)撰写项目实训报告书(3)要求按照文档书写规范,严格地书写文档(4)注意:不允许使用代码、图片和表格填充报告空间。
自动取款机实践报告

实验一ATM机自动取款机业务系统数据流图与原型实验报告姓名:学号:班级:编写:目录1 数据流图和原型界面统计 (1)2 ATM自动柜员机业务系统需求模式 (2)3 ATM自动柜员机系统数据流图 (3)3.1顶层数据流图3.2一层数据流图3.3二层数据流图3.4三层数据流图3.5四层数据流图3.6五层数据流图4自动取款机原型徐彤 (4)4.1等待界面4.2登录界面4.3吞卡界面4.4功能选择界面4.5操作界面4.6取款界面4.7存款界面4.8查询界面4.9打印凭条界面4.10转账界面4.11改密码界面4.12交易成功界面4.13取卡界面5实验体会 (23)2 ATM自动取款机系统需求分析需求分析:由于科技迅速发展,安全问题越来越重要,几乎所有银行都配置了简单的人工操作的ATM的自动取款机,人们可以随时随地的进行交易,不再受银行的服务时间所约束,但是一张银行卡,一串密码已经很难满足安全问题,新兴自动取款机会保证更高的安全问题。
ATM机系统的主要功能: 16中条件判断识别取款修改密码凭条打印转账余额查询交易明细查询等1:16种情况识别判断保证财务安全问题,余额不足时不能取款所需的现金。
ATM机可以提供指定金额的快速的取款界面,ATM机取款成功后要向银联系统写入操作,并且对客户的余额进行相应处理。
2:存款ATM机要能自动清点现金,将相应的操作信息写入银联系统,并且对相应的客户的余额进行相应的修改,之后上银联系统。
3;修改密码若新密码1和新密码相同则修改密码,要修改客户的密码表,并且将操作信息写入银联系统,否则修改密码不成功。
4 转账完成不同的银行卡之间的签约条例进行间接转账,若客户余额不足时则转账识别进行相应提示,转账成功,对客户和收账人的余额进行相应的修改,写入账户余额表,并并且向银联系统进行相应的写入操作。
ATM机工作流程插入卡->16种身份识别->选择操作类型交易流程->确定交易->写入账户信息和银联系统3 ATM自动取款机的数据流图3.1顶层数据流图客户插入银行卡后开始识别所属的银行和账户信息,并且启动摄像系统,识别后开始校验客户输入的密码,还有人脸识别信息,眼球识别信息,指纹识别信息,进行16种情况判断,若全部正确则进行ATM机自检,去掉暂时不能输入的操作,让用户选择操作,若情况不全不正确,进行15种情况判断,进行相关操作。
银行ATM自动取款机模拟系统实验报告

西安科技大学《VC++语言程序设计》实验报告题目 __科学计算器的实现______ 院、系(部)计算机科学与技术学院专业及班级软件工程1102班姓名赵文杰日期 2012/11/91.题目:科学计算器2.功能需求:这是计算器,在满足用户需求方面应有以下功能:1)进行简单的加、减、乘、除;2)进行函数运算如sin、cos、tan函数;3)可进行进制转换、及弧度运算;3.总体设计4.详细设计以下是详细的分部:1>基于MFC创建一个基本对话框Calculator2>实现基本运算的代码:void CCalculatorDlg::OnNumberKey(UINT nID) {CString n;switch(nID){case IDC_NUMBER1:n="1";break;case IDC_NUMBER2:n="2";break;case IDC_NUMBER3:n="3";break;case IDC_NUMBER4:n="4";break;case IDC_NUMBER5:n="5";break;case IDC_NUMBER6:n="6";break;case IDC_NUMBER7:n="7";break;case IDC_NUMBER8:n="8";break;case IDC_NUMBER9:n="9";break;case IDC_NUMBER0:n="0";break;case IDC_NUMBER_Point:n=".";if(Point==TRUE){m_Point.ShowWindow(SW_HIDE);Point=FALSE;}break;}if(NumberState==1){m_Cnumber=m_Cnumber+n;number1=atof(m_Cnumber);UpdateData(FALSE);}else{m_Cnumber=m_Cnumber+n;number2=atof(m_Cnumber);UpdateData(FALSE);}if(Zero=FALSE){Zero=TRUE;m_Zero.ShowWindow(SW_SHOW);}}void CCalculatorDlg::OnOperationKey(UINT nID) {m_number=atof(m_Cnumber);switch(nID){case IDC_NUMBER_PlusMinus:m_number=m_number;if(NumberState==1)number1=m_number;elsenumber2=m_number;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_BackSpace:int n;n=m_Cnumber.GetLength();m_Cnumber=m_Cnumber.Left(n-1);UpdateData(FALSE);break;case IDC_NUMBER_Divide:cal();if(Zero==TRUE){m_Zero.ShowWindow(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Clear:number1=number2=m_number=0;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_NUMBER_Sqrt:number1=m_number=sqrt(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Sin:number1=m_number=sin(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Cos:number1=m_number=cos(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Tan:number1=m_number=tan(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log:number1=m_number=log(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log10:number1=m_number=log10(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Exp:number1=m_number=exp(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Derivative:number1=m_number=(double)1/number1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Equal:cal();break;}if(Point==FALSE){Point=TRUE;m_Point.ShowWindow(SW_SHOW);}}3>函数的实现代码:void CCalculatorDlg::OnOperationKey(UINT nID) {m_number=atof(m_Cnumber);switch(nID){case IDC_NUMBER_PlusMinus:m_number=m_number;if(NumberState==1)number1=m_number;elsenumber2=m_number;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_BackSpace:int n;n=m_Cnumber.GetLength();m_Cnumber=m_Cnumber.Left(n-1);UpdateData(FALSE);break;case IDC_NUMBER_Divide:cal();if(Zero==TRUE){m_Zero.ShowWindow(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Clear:number1=number2=m_number=0;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_NUMBER_Sqrt:number1=m_number=sqrt(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Sin:number1=m_number=sin(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Cos:number1=m_number=cos(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Tan:number1=m_number=tan(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log:number1=m_number=log(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log10:number1=m_number=log10(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);case IDC_NUMBER_Exp:number1=m_number=exp(number1);m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Derivative:number1=m_number=(double)1/number1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Equal:cal();break;}if(Point==FALSE){Point=TRUE;m_Point.ShowWindow(SW_SHOW);}}CCalculatorDlg::cal(){m_number=atof(m_Cnumber);switch(OperationState){case 1:m_number=(double)number1/number2;NumberState=1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case 2:m_number=(double)number1*number2;NumberState=1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;case 3:m_number=(double)number1+number2;NumberState=1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);case 4:m_number=(double)number1-number2;NumberState=1;m_Cnumber.Format("%g",m_number);UpdateData(FALSE);break;}number1=m_number;OperationState=0;}4>进制转换,弧度:实现时有问题5.测试及实现6.总结这是一个科学计算器,只能实现基本运算和函数运算。
c#模拟银行ATM机系统实训报告

C#程序开发集中实践实训报告实训项目名称:模拟银行ATM机系统专业:计算机科学与技术班级:学号:姓名:指导教师:日期:2015年6月5 日由于经济社会发展速度的大幅提高,几乎所有的银行都配备了ATM自动取款机。
人们可以随时随地进行交易,不再受银行的服务时间的约束,方便快捷。
在日常生活中,ATM机与我们关系密切。
此次C#实训所研究的课题就是模拟ATM机系统,在实训期间,我们通过编写窗口应用程序或控制台应用程序,来模拟实现ATM机的用户登录、存款、取款、更改密码的部分功能,巩固以前学过的知识,结合课本综合运用,提高自己的实践水平,增加程序开发经验。
二、实验内容在VS2010软件中新建一个窗体应用程序(模拟银行ATM机系统),通过设计窗体、添加组件,并设置事件触发方法代码,使其实现用户登录、存款、取款、更改密码的部分ATM机的简单功能。
三、实验要求1.欢迎界面:窗体显示“欢迎进入中国银行ATM机登录系统!”内容2.登录界面:用户名和密码同时正确,可登录系统,如果其中的一项输入错误,都显示登录失败3.ATM机界面:进入系统后,有两种银行卡类型供用户选择(银行储蓄卡和银行信用卡)4.储蓄卡服务界面:用户可选择服务项目(存款、取款、修改密码、退出系统)5.信用卡服务界面:用户可选择服务项目(存款、取款、修改密码、退出系统)6.存款界面:用户可输入存款金额,存款成功后,弹出提示框7.储蓄卡取款界面:用户可输入取款金额,取款成功或失败后,弹出提示框8.信用卡取款界面:用户可输入取款金额,取款成功或失败后,弹出提示框9.修改密码界面:用户可输入新密码进行修改账户密码,修改成功或失败后,弹出提示框1.认真阅读设计题目发要求,分析设计一个模拟银行ATM机系统2.编写窗体应用程序,包括各个操作界面(欢迎界面,登录界面,ATM机选择界面,储蓄卡服务界面,信用卡服务界面,存款界面,储蓄卡取款界面,信用卡取款界面,修改密码界面)3.试验程序,不断修改和完善程序,将各个功能都尽量实现4.运行程序,按照设计的步骤,实现各个窗体界面部分和功能(欢迎界面,用户登录,银行卡类型选择,选择服务项目,存款,取款,修改密码,退出系统)5.根据编写好的窗体程序,完成此次C#程序开发集中实训的实训报告五、主要源程序//欢迎界面private void button2_Click(object sender, EventArgs e){Form2 f2 = new Form2();f2.Show();this.Hide();}//登录界面private void button2_Click(object sender, EventArgs e){Form9 f9 = new Form9();string password = "123456";//初始密码string newpass=f9.textBox2.Text;//新设密码if (textBox1.Text == "张三" && textBox2.Text == password){MessageBox.Show("用户名和密码正确,请进入系统!", "提示框", MessageBoxButtons.OK);Form3 f3 = new Form3();f3.Show();this.Hide();}if (miss){missCount++;MessageBox.Show("用户名或密码错误,请重新输入!", "提示框", MessageBoxButtons.OK);textBox1.Text = "";textBox2.Text = "";}elsemiss = true;if (missCount >= 3){MessageBox.Show("用户名或密码超过三次输入错误!无法再次登录!", "提示框", MessageBoxButtons.OK);button2.Enabled = false;}}//ATM机界面private void button1_Click(object sender, EventArgs e){Form4 f4 = new Form4();f4.Show();this.Hide();}private void button2_Click(object sender, EventArgs e){Form5 f5 = new Form5();f5.Show();this.Hide();}//储蓄卡服务界面private void button1_Click(object sender, EventArgs e){Form6 f6 = new Form6();f6.Show();this.Hide();}private void button2_Click(object sender, EventArgs e){Form7 f7 = new Form7();f7.Show();this.Hide();}private void button5_Click(object sender, EventArgs e){Form1 f1 = new Form1();f1.Show();this.Hide();}private void button4_Click(object sender, EventArgs e){Form9 f9 = new Form9();f9.Show();this.Hide();}//信用卡服务界面(与储蓄卡服务界面相同)//存款界面(信用卡与储蓄卡存款界面相同)private void button1_Click(object sender, EventArgs e){Form2 f2 = new Form2();int money = 300;int total = Int32.Parse(textBox2.Text);MessageBox.Show("存款成功!账户余额为:" + (total+money) + "元", "提示框", MessageBoxButtons.OK);Form4 f4 = new Form4();f4.Show();this.Hide();}private void button2_Click(object sender, EventArgs e){textBox2.Text = "";}//储蓄卡取款界面private void button1_Click(object sender, EventArgs e){int total = 300;int money = Int32.Parse(textBox2.Text);if (money <= total){total = total-money;MessageBox.Show("取款成功!账户余额为:" + total + "元", "提示框", MessageBoxButtons.OK);Form4 f4 = new Form4();f4.Show();this.Hide();}else{MessageBox.Show("余额不足!取款失败!账户余额为:" + total + "元", "提示框", MessageBoxButtons.OK);Form4 f4 = new Form4();f4.Show();this.Hide();}}private void button2_Click(object sender, EventArgs e){textBox2.Text = "";}//信用卡取款界面private void button1_Click(object sender, EventArgs e){int total =2000;int money = Int32.Parse(textBox2.Text);if (money <= total){total= total - money;MessageBox.Show("支付(购物)成功!账户余额为:" + total + "元", "提示框", MessageBoxButtons.OK);Form4 f4 = new Form4();f4.Show();this.Hide();}else{MessageBox.Show("支付(购物)失败!账户已透支!余额为:" + total + "元", "提示框", MessageBoxButtons.OK);Form4 f4 = new Form4();f4.Show();this.Hide();}}private void button2_Click(object sender, EventArgs e){Form5 f5 = new Form5();f5.Show();this.Hide();}//修改密码界面private void button1_Click(object sender, EventArgs e){if (textBox2.Text == textBox1.Text){MessageBox.Show("密码修改成功!", "提示框", MessageBoxButtons.OK);Form3 f3 = new Form3();f3.Show();this.Hide();}else{MessageBox.Show("两次新密码输入不相同,请检查后重新输入!", "提示框", MessageBoxButtons.OK);textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";}}private void button2_Click(object sender, EventArgs e){Form3 f3 = new Form3();f3.Show();this.Hide();}六、实验结果1.欢迎界面图6.1 窗体欢迎界面截图2.用户登录界面(成功、失败、失败超过三次无法登录)图6.2 用户登录成功界面截图图6.3 用户登录失败界面截图图6.4 用户登录失败三次界面截图3.ATM机界面(银行卡类型选择)图6.5 银行卡类型选择界面截图4.储蓄卡服务界面(存款、取款)图6.6 储蓄卡服务界面截图图6.7 存款界面截图图6.8 储蓄卡取款界面截图图6.9 储蓄卡服务界面截图5.信用卡服务界面(存款、取款)图6.10 信用卡服务界面截图图6.11 信用卡取款界面截图图6.12 信用卡取款提示框界面截图6.修改密码界面(成功和失败)图6.13 修改密码成功界面截图图6.14 修改密码失败界面截图7.退出系统(返回欢迎界面)七、实验总结通过这次的C#程序开发集中实训,我编程的基础更扎实了,由于间隔时间较长,课本中学到的知识大部分已经模糊,加上已经学习过的高级编程语言多种多样,我对C#的印象就越发不清楚了,但是,通过这次的实训,巩固的知识并不是一点半点,而是综合应用的巩固,是对自己全方面素质的综合磨练,再者,通过对模拟银行ATM机系统的深入了解,对C#的掌握又深了一层。
ATM自动取款机系统分析与设计实验报告

ATM自动取款机系统分析与设计实验报告摘要:本实验报告旨在分析与设计ATM自动取款机系统。
ATM自动取款机系统是一种常见的自助服务设备,能够为用户提供取款、查询余额、转账等功能。
本报告将进行系统需求分析、系统设计以及系统实施与测试等环节,最终完成ATM自动取款机系统的分析与设计。
通过本实验,我们能够更好地了解和掌握ATM自动取款机系统的工作原理和运行方式,为实际应用中的ATM系统提供指导和参考。
1.引言ATM自动取款机系统是一种常见的自助服务设备,可以方便用户进行取款、查询余额、转账等操作。
随着电子支付的普及和ATM机的使用率的提高,ATM自动取款机系统在人们的生活中扮演着重要的角色。
在本实验中,我们将对ATM自动取款机系统进行详细的分析与设计。
2.系统需求分析在系统需求分析阶段,我们将明确ATM自动取款机系统的功能需求、性能需求、安全需求等。
我们需要考虑用户需要进行的操作,如取款、查询余额、转账等,并设计相应的界面和功能。
此外,我们还需要考虑系统的可靠性、安全性和性能等方面的需求。
3.系统设计在系统设计阶段,我们将根据系统需求进行系统架构设计和详细设计。
我们需要确定系统的各个模块,如用户界面、数据库、交易处理等,并设计它们之间的交互方式和数据流动。
4.系统实施与测试在系统实施与测试阶段,我们将根据系统设计,实现ATM自动取款机系统的各个模块。
我们需要编写相应的代码,并进行系统测试,以验证系统的正确性和稳定性。
5.结论通过本次实验,我们深入了解了ATM自动取款机系统的工作原理和运行方式,并进行了系统分析与设计。
我们明确了系统的需求,并设计了相应的系统架构和功能。
此外,我们还实施了系统并进行了测试,验证了系统的正确性和稳定性。
银行ATM自动取款机模拟系统实验报告

西安科技大学《VC++语言程序设计》实验报告题目__科学计算器的实现______ 院、系(部) 计算机科学与技术学院专业及班级软件工程1102班姓名赵文杰日期2012/11/91.题目:科学计算器2.功能需求:这是计算器,在满足用户需求方面应有以下功能:1)进行简单的加、减、乘、除;2)进行函数运算如sin、cos、tan函数;3)可进行进制转换、及弧度运算;3.总体设计4.详细设计以下是详细的分部:1>基于MFC创建一个基本对话框Calculator2>实现基本运算的代码:void CCalculatorDlg::OnNumberKey(UINT nID){CString n;switch(nID){case IDC_NUMBER1:n="1";break;case IDC_NUMBER2:n="2";break;case IDC_NUMBER3:n="3";break; case IDC_NUMBER4:n="4";break; case IDC_NUMBER5:n="5";break; case IDC_NUMBER6:n="6";break; case IDC_NUMBER7:n="7";break; case IDC_NUMBER8:n="8";break; case IDC_NUMBER9:n="9";break; case IDC_NUMBER0:n="0";break; case IDC_NUMBER_Point:n=".";if(Point==TRUE){(SW_HIDE);Point=FALSE;}break;}if(NumberState==1){m_Cnumber=m_Cnumber+n;number1=atof(m_Cnumber);UpdateData(FALSE);}else{m_Cnumber=m_Cnumber+n;number2=atof(m_Cnumber);UpdateData(FALSE);}if(Zero=FALSE){Zero=TRUE;(SW_SHOW);}}void CCalculatorDlg::OnOperationKey(UINT nID){m_number=atof(m_Cnumber);switch(nID){case IDC_NUMBER_PlusMinus:m_number=m_number;if(NumberState==1)number1=m_number;elsenumber2=m_number;("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_BackSpace:int n;n=();m_Cnumber=(n-1);UpdateData(FALSE);break;case IDC_NUMBER_Divide:cal();if(Zero==TRUE){(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Clear:number1=number2=m_number=0;("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_NUMBER_Sqrt:number1=m_number=sqrt(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Sin:number1=m_number=sin(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Cos:number1=m_number=cos(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Tan:number1=m_number=tan(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log:number1=m_number=log(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log10:number1=m_number=log10(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Exp:number1=m_number=exp(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Derivative:number1=m_number=(double)1/number1;("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Equal:cal();break;}if(Point==FALSE){Point=TRUE;(SW_SHOW);}}3>函数的实现代码:void CCalculatorDlg::OnOperationKey(UINT nID){m_number=atof(m_Cnumber);switch(nID){case IDC_NUMBER_PlusMinus:m_number=m_number;if(NumberState==1)number1=m_number;elsenumber2=m_number;("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_BackSpace:int n;n=();m_Cnumber=(n-1);UpdateData(FALSE);break;case IDC_NUMBER_Divide:cal();if(Zero==TRUE){(SW_HIDE);Zero=FALSE;}OperationState=1;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Multiply:cal();OperationState=2;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Add:cal();OperationState=3;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Subtract:cal();OperationState=4;m_number=0;m_Cnumber="";NumberState=2;break;case IDC_NUMBER_Clear:number1=number2=m_number=0;("%g",m_number);UpdateData(FALSE);m_Cnumber="";NumberState=1;break;case IDC_NUMBER_Sqrt:number1=m_number=sqrt(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Sin:number1=m_number=sin(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Cos:number1=m_number=cos(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Tan:number1=m_number=tan(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log:number1=m_number=log(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Log10:number1=m_number=log10(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Exp:number1=m_number=exp(number1);("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Derivative:number1=m_number=(double)1/number1;("%g",m_number);UpdateData(FALSE);break;case IDC_NUMBER_Equal:cal();break;}if(Point==FALSE){Point=TRUE;(SW_SHOW);}}CCalculatorDlg::cal(){m_number=atof(m_Cnumber);switch(OperationState){case 1:m_number=(double)number1/number2;NumberState=1;("%g",m_number);UpdateData(FALSE);break;case 2:m_number=(double)number1*number2;NumberState=1;("%g",m_number);UpdateData(FALSE);break;case 3:m_number=(double)number1+number2;NumberState=1;("%g",m_number);UpdateData(FALSE);break;case 4:m_number=(double)number1-number2;NumberState=1;("%g",m_number);UpdateData(FALSE);break;}number1=m_number;OperationState=0;}4>进制转换,弧度:实现时有问题5.测试及实现6.总结这是一个科学计算器,只能实现基本运算和函数运算。
ATM实验报告范文

ATM实验报告范文一、实验目的本实验主要目的是设计并实现一个简单的自动取款机(ATM)系统,通过该系统,用户可以进行账户查询、存款、取款等基本操作。
通过实验,熟悉面向对象设计的基本思想和方法,进一步理解面向对象的封装、继承和多态等特性。
二、实验设计1.类的设计本实验中设计了如下几个类:ATM、Account、SavingsAccount、CheckingAccount。
其中,ATM类代表自动取款机,Account类是表示银行账户的基类,SavingsAccount类是Account类的派生类,表示储蓄账户,CheckingAccount类也是Account类的派生类,表示支票账户。
2.类的属性和方法Account类具有属性:账户号(accountNumber)、账户余额(balance)和利率(rate),具有方法:构造方法Account(、获取账户号方法getAccountNumber(、存款方法deposit(、取款方法withdrawal(。
SavingsAccount类继承Account类,新增加了属性:利率(rate)和最低余额(minBalance),新增加了方法:构造方法SavingsAccount(、计算利息的方法calculateInterest(。
CheckingAccount类继承Account类,新增加了属性:透支额度(overdraft),新增加了方法:构造方法CheckingAccount(、透支方法overdraft(。
3.系统交互过程用户进入ATM系统后,首先输入账户号码以及密码进行验证。
验证通过后,用户可以进行以下操作:(1) 查询账户余额:调用Account类的getBalance(方法进行查询。
(2) 存款:调用Account类的deposit(方法进行存款操作。
(3) 取款:调用Account类的withdrawal(方法进行取款操作,该方法根据账户类型的不同进行判断,如果是储蓄账户则需满足最低余额要求,如果是支票账户则需满足透支额度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图2表格31名称来自存款参与者客户
目标
在客户账户存入相应金额
前置条件
客户必须经过验证登录系统
步骤/事件流
客户->ATM终端登录->系统功能选择界面->存款->系统功能选择
后置条件
系统其他功能选择界面,更新对应账户
表格32
名称
取款
参与者
客户
目标
取现金,在客户账户中减去相应金额
前置条件
客户必须经过验证登录系统
3.读入密码
4.显示对话框接受用户操作
Cscreen
显示界面消息字符
CcustomerConsole
Ckeyboard
读取用户输入
CcustomerConsole
4.8
图20
4.9
系统中的复用关系采用授权与继承的方式。
4.10
图21类图
5.
1)陈述使用Java和数据库实现所设计的系统
6.
包括:遇到的问题和系统未完成的功能、项目下一步的工作和计划、以及实施该项目的心得与体会等。
4)安全特性
系统中所有涉及敏感信息如登录口令等,服务器端应设置严格安全访问控制策略,从而保证系统安全性和操作责任的可追溯性
3.4
3.4.1
用户输入帐号,密码登录ATM终端系统后,验证密码正确后,进入主界面选择取钱,提示输入金额,输入金额后系统到账户中验证是否在允许范围内,金额正确则吐钞,扣除账户相应金额,后提示取走前,系统自动跳转到主界面进行其他功能选择。
1.2
1.2.1性能目标
1.2.1.1数据精确
(1)银行卡中信息表中的“余额”采用float类型,精确到小数点后2位;
(2)取款时输入的金额为整数(50的倍数);
(3)转账金额采用float类型,精确到小数点后2位。
1.2.1.2时间特性
如果在交易过程中系统响应时间超过20秒,系统提示操作已过时,返回操作界面。对于目前普遍的硬件配置,响应时间本软件控制在20秒以内,更新处理时间控制在5秒内,数据的转换和传送时间控制在5秒内。以上数据及供参考,实际已测试为准。
表格34
名称
转账
参与者
客户
目标
将客户1账户中相应金额转入客户2账户中
前置条件
客户必须经过验证登录系统
步骤/事件流
客户->ATM终端登录->系统功能选择界面->转账->系统功能选择
后置条件
系统其他功能选择界面,更新对应账户
表格35
名称
修改密码
参与者
客户,银行职员
目标
更改账户密码
前置条件
客户必须经过验证登录系统
ATM:ATM是Automatic Teller Machine的缩写,意为自动取款机。它是一种高精密的机电一体化装置,利用磁性代码卡或智能IC卡实现金融交易的自助服务,代替银行柜面人员的工作。
1.4
[1]软件工程(原书第8版)/(英)萨莫维尔(Sommerville,I.)著;程成,陈霞译. -北京:机械工业出版社.2007.3
步骤/事件流
客户->ATM终端登录->系统功能选择界面->修改密码>系统功能选择
后置条件
系统其他功能选择界面,更新对应账户
3.4.3
3.4.4
1)标识实体对象、边界对象和控制对象,标识每一对象的属性。
对象模型
内容
属性
实体对象
1.帐号
19位整数
2.密码
6位整数
3.客户姓名
4.账户余额
边界对象
1.ATM键盘
图9转账功能时序图
图10修改密码功能时序图
2.实例对象状态图
图11
4.
4.1
4.2
对银行账户、客户、ATM屏幕、ATM取款机、ATM键盘、银行职员、读卡器和数据库服务器分别创建对应的构件进行映射。ATM自动取款机系统的构件图如图
图12
4.3
4.4
图13系统E-R图
图14
表格41用户信息表
属性
类型
是否为空
[2]Java语言程序设计(原书第8版)/(美)梁勇(Liang,Y.D)著;李娜译.–北京:机械工业出版社,2011.5
1.5
随着科技的发展,人们生活水平的不断提高,高性能高效率的产品越来越受到人们的欢迎。ATM自动取款机是一种非常智能的机器,人们可以直接和它交互,代替以前的手工操作,大大提高了银行的工作效率。同时也给广大用户带来了非常大的方便。由于ATM自动取款机是和服务器是连网的,这就涉及到安全的问题,例如密码被盗的问题,这就需要加强安全措施,如运用一些加密算法。所以银行卡丢失的时候一定要及时挂失,以确保自己的账户安全。
主键
备注
身份证号
Char(18)
否
主键
用户姓名
Varchar(20)
否
电话号码
Char(11)
是
账户帐号
Char(18)
否
外键
表格42账户信息表
属性
类型
是否为空
主键
备注
账户帐号
Char(18)
否
主键
密码
Char(6)
否
余额
Int
是
4.5
表格43访问矩阵
ATMUI
BankAccount
Client
selectFunction()
2.
现如今,有许多家银行在顾客办理业务时都需要到柜台前需要服务人员的操作,效率很低。为了解决这样的问题,我们小组提出了研究ATM自动取款机系统,使银行和各户办理业务时更便捷。ATM自动取款机可以24小时自动取款,无需人工服务,同时提供了许多的功能。
3.
3.1
随着科技的发展,人们生活水平的不断提高,高性能高效率的产品越来越受到人们的欢迎。ATM自动取款机是一种非常智能的机器,人们可以直接和它交互,代替以前的手工操作,大大提高了银行的工作效率的同时也给广大用户带来了非常大的方便。由于ATM自动取款机是和服务器是连网的,这就涉及到安全的问题,例如密码被盗的问题,这就需要加强安全措施。所以银行卡丢失的时候一定要及时挂失,以确保自己的账户安全。
7.
金涛:中
陈翔:中
8.
1.2.2.2安全性
系统中所有涉及敏感信息如登录口令等,服务器端应设置严格安全访问控制策略,从而保证系统安全性和操作责任的可追溯性。
1.3
帐号:在银行中,事物应用的单个帐号。每个顾客可以拥有多个帐号。
用户:拥有银行的一个或多个帐号的人,可以是一个人或多个人,也可以是一个公司。相同的人拥有不同银行帐号被认为是不同用户。
3.2
简单的来说该系统大概需要以下六个模块
1)登录模块
2)存款模块
3)取款模块
4)查询余额模块
5)转账模块
6)修改密码模块
3.3
1)数据精确度
银行卡中信息表中的“余额“采用float型,精确到小数点后两位
取款时输入的金额为整数,50的倍数
转账金额采用float型,精确到小数点后两位。
2)时间特性
如果交易中响应时间超过20秒 系统提示“操作已过时” 返回操作界面。对于目前普遍的硬件配置,响应时间本软件控制在20秒以内,更新处理时间控制在5秒之内 数据的转换和传送时间在5秒以内。以上数据仅供参考。
query()
withDrawMoney()
transferAccount()
changeKeyWords()
BankOfficer
changeKeyWords()
4.6
图15
图16
图17
图18
图19
4.7
表格44边界条件
边界用例
功能
合作者
CcustomerConsole
1.显示消息
2.显示菜单并接受选择
步骤/事件流
客户->ATM终端登录->系统功能选择界面->取款->系统功能选择
后置条件
系统其他功能选择界面,更新对应账户
表格33
名称
查询余额
参与者
客户
目标
查看账户当前包含的金额
前置条件
客户必须经过验证登录系统
步骤/事件流
客户->ATM终端登录->系统功能选择界面->查询余额->系统功能选择
后置条件
系统其他功能选择界面,更新对应账户
3)易用性
系统设计应具有良好的易用性、操作简便,符合常规Windows操作环境下的用户使用习惯。同时尽量减少用户的记忆工作量,如在信息录入时尽可能充分利用数据字典进行选择录入以提高用户工作效率。在系统查询功能设计时 应提供多种查询条件的复合查询,让用户可以快速、精确地得到相关信息。同时,系统设计应具有良好的健壮性,如对各种用户各种错误输入应能及时识别并给出相应提示。
2.ATM屏幕
控制对象
1.存款
2.取款
3.转账
4.查询
5.修改密码
表格36
2)定义主题;
图3
3)标识对象之间的关联,画出每个主题中表示对象以及对象之间关联的类图;
图4
4)标识系统中的继承和聚集关系,画出表示继承和聚集关系的类图;
图5
3.4.5
1.用例的使用顺序图
图6登录功能时序图
图7取钱功能时序图
图8查询余额功能时序图
计算机学院
基于Java的软件开发
ATM柜员机模拟
项目总报告
小组序 号:
23
组 员姓 名:
金涛
陈翔
年 级班 级:
2010级应用1班
提交日期:
2012年12月25日
1.
1.1