资源描述
大 连 科 技 学 院面向对象程序设计(A)课程设计题 目 ATM自动取款机程序设计 学生姓名 xxx 专业班级 软件工程12-1 指导教师 李孝贵 职 称讲师 所在单位 信息科学系软件工程教研室 教学部主任 王立娟 完成日期 2014年7月6日课程设计报告单学号Xxx姓名xxsx专业班级软件工程12-1考 核 项 目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综 合 评 定:(优、良、中、及格、不及格) 指导教师签字:年 月 日面向对象程序设计(A)课程设计任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。第2个工作日第4个工作日:设计程序结构、模块图。第5个工作日第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。指导教师签字: 年 月 日目录题目:11.需求分析12.概要设计13.详细设计14.编码25.调试分析46.测试结果及运行效果47.系统开发所用到的技术7参考文献8附录 全部代码9题目:ATM自动取款机程序设计分析与设计1. 需求分析为了方面用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、修改密码、退出系统等功能。2. 概要设计1登录功能。输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。2查询功能。查询账户余额。3取款功能。取款,更新余额。4挂失功能。挂失后,该账户不能进行任何操作。5修改密码。输入原密码和新设置密码。6转账。输入转账的转出账户和转入账户以及转账金额,进行转账。流程图ATM自动取款系统开户存款取款查询余额修改密码转账图 21 atm设计框图3. 详细设计输入卡号和密码正确 否是 服务界面显示用户信息和余额 查询 取款 挂失 修改密码挂式界面输入金额输入旧密码 正确输入新密码 正确 否 是 否输入新密码操作成功取款 挂失 修改密码 挂失 退出 是挂失成功 正确 退卡 修改成功 返回 退出 否 是 返回 退出 转账 转账成功超出余额输入转账金额输入转账卡号 是 否 返回 退出 图 31 程序流程图1登陆模块主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示菜单提示,用户可根据需要选择相应功能。具体如下:开户 、存款 、取款 、查询余额 、修改密码 、转账主要适用技术:登陆函数主要是使用了循环函数和do while函数,还有许多的成员函k.OpenAccount()、k.SaveMoney()、k.TakeMoney()、k.Inquiry()、k.Changepsw()、k.Transfer();关键代码如下:void main();主函数;do while(1);/循环结构语句switch(i);case 1: default:bank k;/默认构造函数k.OpenAccount();break;/开户 k.SaveMoney();break;/存款k.TakeMoney();break;/取款k.Inquiry();break;/查询余额k.Changepsw();break;/修改密码k.Transfer();break;/转账2开户模块主要完成功能为:进入开户模块。屏幕显示菜单提示,可根据要求依次输入姓名、卡号、密码和预存款金额,完成以上操作之后,屏幕上显示恭喜您,开户成功。主要适用技术:开户函数使用了基本函数;主要代码如下:void OpenAccount()/开户函数3存款模块主要完成功能为:当开始使用本系统,进入存款模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,然后输入存款金额,存款成功后显示卡上余额,(当密码不正确的时候,可以有三次机会输入自己的正确密码,如果三次都没有输入正确,卡将会被吃掉,以下同);主要使用技术:存款函数使用了循环语句函数、判断函数和选择函数主要代码如下:void SaveMoney()/存款函数for(int i=1;i=N;i+) else /循环函数语句exit(1);/结束函数4取款模块主要完成功能为:进入取款模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,然后输入取款金额,如果全款金额小于或者等于卡上余额,则取款进行,否则重新输入取款金额。取款成功后显示卡上余额主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数主要代码如下:void TakeMoney()/取款函数for(int i=1;i=N;i+)else/循环函数语句exit(1);/结束函数5查询余额主要完成功能为:进入查询余额模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和密码正确,屏幕上将显示你的余额,然后进入修改密码模块; 主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数主要代码如下:voidInquiry()/查询余额函数for(int i=1;i=N;i+) else /循环结果语句exit(1);/结束函数6修改密码主要完成功能为:进入修改密码模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,则将进行修改密码的步骤,先输入原始密码,然后再输入新密码,之后确认新密码,确认正确之后,密码修改成功,接下来进入转账模块; 主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数主要代码如下:void Changepsw()/修改密码函数for(int i=1;i=N;i+) else /循环结果语句exit(1);/结束函数7转账模块主要完成功能为:进入转账模块。屏幕显示菜单提示,根据要求依次输卡号和密码,如果卡号和原始密码正确,输入所要转账的账号并输入转账金额,如果转账金额小于余额,转账成功输出卡上余额, 主要适用技术:存款函数使用了循环语句函数、判断函数和选择函数主要代码如下:voidTransfer()/转账函数for(int i=1;i=N;i+) else /循环结果语句exit(1);/结束函数4.编码class ATM / ATM取款机 public: /公有类 ATM(consumer& cn):cnsm(cn) void welcome(); / 登陆界面 bool check_passwd(char n,char pwd); / 核对密码 void change_passwd(); / 修改密码 void fetchmoney(); / 取款 void information(); / 查询信息 void functionshow(); / 功能界面 void guashi(); / 挂失 void zhuanzhang(); / 转账 void exitATM(); / 退出系统 void lock(); / 锁机 private: / 私有类 int times; / 记录密码输入次数 int money;consumer&cnsm;5.调试分析主要问题:错误较多,由于修改了好多次,程序中的血多代码都出现了不同程度上的错误,尤其是bank和banki之间经常出现问题,我通过调试,发现了好多这样的问题,通过帮助和自己的经验,解决了这个问题;还有就是程序后面那个是否继续,例如:cout是否继续操作 1 是 2 否endl;这句应该放在哪里,应该怎么写,才能实现程序的完美,后来通过上网查资料和借鉴书上的程序,实现了这个功能;还有就是调试过程中发现程序不完整,有许多功能没有实现,例如:对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉并打印出相应凭条,没有实现,后来通过增加代码,实现了这个功能。6.测试结果及运行效果1登陆模块图6-1登录模块2开户模块图6-2开户模块3存款模块图6-3存款模块4取款模块图6-4取款模块5查询模块图6-5查询模块6修改密码图6-6修改密码7转账模块图6-7转账模块8退出登录图6-8退出登录7.系统开发所用到的技术Visual C+ 6.0应用语言C+注释:C+是在C语言引入了面向机制而形成的一种程序设计语言,程序结构灵活,代码简洁清晰,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。所以它是一种应用广泛的系统语言。参考文献1 张红梅,于明,程序设计实验教程,中国铁道出版社,20042 徐武,周启涛,葛卉娟,Visual C+与Oracle数据库编程案例,电子工业出版社,20043 网冠科技,Visual C+ 6.0时尚编程百例,机械工业出版社,20034 求是科技,Visual C+ 6.0程序设计与开发技术大全,人民邮电出版社,20045 广正工作室 C+ Builder实用教程M. 机械工业出版社 1998年6 Matt Tells 高级编程指南C+ BuilderM. 中国水利水电出版社 1998年附录 全部代码#include#include#includeclass Bankpublic:Bank();/默认构造函数void OpenAccount()/开户cout欢迎开户:endl; cout请输入您的姓名:name; cout请输入您的卡号:cardID; cout请输入您的密码:psw; cout请输入您的预存金额:money; cout恭喜您,开户成功!endl; void SaveMoney()/存款long ID; long psw1; int money1; cout欢迎使用取款业务:n; cout请输入您的卡号:ID; cout请输入您的密码:psw1; if(ID=cardID &psw1=psw) cout请输入您的存款金额:money1; money=money+money1; cout存款成功,卡上余额为:moneyendl; else cout您的卡号或者密码错误,请重新输入!endl; cout请重新输入您的密码:psw1; if(psw1=psw) cout请输入您的存款金额:money1; money=money+money1; cout存款成功,卡上余额为:moneyendl; else cout温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):endl; exit(1); void TakeMoney()/取款 long ID; long psw1; int money1; cout欢迎您使用取款业务n; cout请输入您的卡号:ID; cout请输入您的密码:psw1; if(ID=cardID & psw1=psw) cout请输入您取款的金额:money1;if(money=money1) money=money-money1; cout取款成功,您卡上余额为:moneyendl; else coutmoney1; money=money-money1; cout取款成功,您卡上余额为:moneyendl; else cout温馨提示:您的卡号或密码错误,请重新输入!endl; cout请重新输入您的密码:psw1; if(psw1=psw) cout请输入您的取款金额:money1; if(money=money1) money=money-money1; cout取款成功,您卡上余额为:moneyendl; else coutmoney1; money=money-money1; cout取款成功,您卡上余额为:moneyendl; cout温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):endl; exit(1); void Inquiry()/查询余额long ID; long psw1; cout欢迎进行查询余额业务n; cout请输入您的卡号:ID; cout请输入您的密码psw1; if(ID=cardID & psw1=psw) cout卡上余额为:moneyendl; else cout您的卡号或者密码错误,请重新输入!endl; cout请重新输入您的密码:psw1; if(psw1=psw) cout卡上余额为:moneyendl; else cout温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):endl; exit(1); void Changepsw()/修改密码 long ID; long psw1; long psw2; cout欢迎使用修改密码业务nendl; cout请输入您的卡号:ID; cout请输入您的密码:psw1; if(ID=cardID & psw1=psw) cout请输入您的原始密码:psw1; cout请输入您的新密码:psw2; cout确认新密码:请重新输入新密码:psw2; psw=psw2; cout修改密码成功!endl; else cout您的卡号或者密码错误!endl; cout请重新输入您的原始密码:psw1; if(psw1=psw) cout请输入您的新密码:psw2; cout确认新密码:请输入新密码:psw2; psw=psw2; cout修改密码成功!endl; else cout温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):endl; exit(1); void Transfer()/转账long ID; long ID2; long psw1; int money1; cout欢迎使用转账业务nendl; cout请输入您的卡号:ID; cout请输入您的密码:psw1; if(ID=cardID & psw1=psw) cout请输入您要转账的卡号:ID2; cout请输入您要转账的金额:money1;if(money=money1) money=money-money1; cout转账成功,您卡上余额为:moneyendl; else coutmoney1; money=money-money1; cout转账成功,您卡上余额为:moneyendl; else cout温馨提示:您的卡号或密码错误,请重新输入!endl; cout请重新输入您的密码:psw1; if(psw1=psw) cout请输入您的转账金额:money1; if(money=money1) money=money-money1; cout转账成功,您卡上余额为:moneyendl; else coutmoney1; money=money-money1; cout转账成功,您卡上余额为:moneyendl; cout温馨提示:密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停一切业务):endl; exit(1); private:char name20; long cardID; long psw; int money;void main()int i;Bank k;do cout欢迎进入中国工商银行endl; cout ICBC endl; cout请选择您要办理的手续:n; cout1.开户n; cout2.存款n; cout3.取款n; cout4.查询余额n; cout5.修改密码n; cout6.转账n; cout7.退出系统n; couti; if(i=7) break; switch(i) case 1: k.OpenAccount();break;/开户 case 2: k.SaveMoney();break;/存款 case 3: k.TakeMoney();break;/取款 case 4: k.Inquiry();break;/查询余额 case 5: k.Changepsw();break;/修改密码 case 6: k.Transfer();break;/转账 default:cout你的输入有误,请输入1-7之间的整数!n;while(1);18
展开阅读全文