C自动取款机ATM课程设计报告解读_第1页
C自动取款机ATM课程设计报告解读_第2页
C自动取款机ATM课程设计报告解读_第3页
C自动取款机ATM课程设计报告解读_第4页
C自动取款机ATM课程设计报告解读_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+语言程序设计课程设计报告第1页共19页洛阳师范学院2013-2014 学期C + +语言程序设计课程设计报告设计名称:模拟自动取款机 ATM姓名:黄双双学号:131124001专业班级:网络工程学院:信息技术学院设计时间:2014年6月设计地点:宿舍成绩:指导教师评语:指导教师签字: 年 月 日1课程设计目的 32课程设计任务与要求 33课程设计说明书 44课程设计成果 65程序调试过程 186设计问题的不足和改进方案 187课程设计心得 19208参考文献C+语言程序设计课程设计报告第3页共19页1 .课程设计目的C+语言程序设计课程设计是这门课程的实践性教学环节之一,本次设计结合实际应

2、用的要求,使课程设计既覆盖 C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问 题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2. 课程设计任务与要求:要求:本次课程设计利用C+语言程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必

3、须按要求提交课程设计报告(1) 分析系统中的各个实体之间的关系及其属性和行为;(2) 根据问题描述,设计系统的类层次;(3) 完成类层次中各个类的描述(包括属性和方法) ;(4) 完成类中各个成员函数的定义;(5) 完成系统的模块组装、调试;任务:(1) ATM机类:有“单笔取款最高限制”、“每日取款总金额限制”、“金额”等基本属性。需要实现: “核对密码”、“修改密码”、“取款”、“查询信息”、“退出系统”、“锁机吞卡”等功能。可以将这些操作定义为ATM机类的成员函数。(2)银行卡类:具有“用户姓名”、“用户密码”、“存款额”等特征。需要实现“身份 验证”、“查询余额”、“修改密码”、“交易

4、成功更改余额”等操作。将这些操作定义为银行卡类的成员函数。(1) 模拟自动取款机(ATM )的流程,实现查询银行卡余额、取款、修改密码、退出系统等功能;(2) 卡号、密码错误时最多输入3次,否则直接退出系统。(3) 取款金额受信用卡余额、ATM机单笔最大取款金额及 ATM机当前剩余金额的限制。3. 课程设计说明书概要设计本案例涉及一个银行卡和 ATM机之间的“对话”。需要处理两个对象,即: ATM和银行卡,因此可以考虑 定义两个类来解决这个问题。(1) ATM机类:有“单笔取款最高限制”、“每日取款总金额限制”、“金额”等基本属性。需要实现:“核对密码”、“修改密码”、“取款”、“查询信息”、

5、“退出系统”、“锁机吞卡”等功能。可以将这些操作定义为ATM机类的成员函数。(2) 银行卡类:具有“用户姓名”、“用户密码”、“存款额”等特征。需要实现“身份验证” 、“查询余 额”、“修改密码”、“交易成功更改余额”等操作。将这些操作定义为银行卡类的成员函数。模块说明:在我设计的程序中一共包括了五个模块,分别是:核对密码、修改密码、取款、查询信息、退出系统模块。这六个模块中新增、查找和修改都是独立分开作为子函数的,另外三个则是作为switch语句中的一部分,通过switch语句,把五个大模块联系了起来,同时,为了实现多次使用这五大模块,就在switch语句外加了 while循环。模块结构图:

6、C+语言程序设计课程设计报告第5页共19页详细设计总体流程图各功能模块流程图业劝能界面燼改畫码 1轉 1存款査询繍就rq输人紹和糊XJ厂1觀一项C+语言程序设计课程设计报告第7页共19页4. 课程设计成果(多页)程序源代码,运行结果(可用屏幕抓图的方法说明)(五号,宋体)#in clude#in clude#in clude#in elude class con sumer;class ATMpublic:ATM(c on sumer & cn ):c nsm(c n)void welcome。; / 登陆界面核对密码bool check_passwd(char n ,char pwd);/C

7、+语言程序设计课程设计报告第#页共19页void cha nge_passwd(); void fetchm on ey(); / void in formatio n();/void exitATM(); / void function show(); void lock(); / 修改密码取款查询信息退出系统II功能界面锁机C+语言程序设计课程设计报告第#页共19页private:int times; II记录密码输入次数C+语言程序设计课程设计报告第13页共19页con sumer &cnsm;class con sumer II用户public:friend class ATM;con

8、 sumer(char Name,char Num, float Mon ey,char Password); protected:char* get_ name(); II取得姓名char* get_kahao(); II取得卡号char* get_passwd(); II取得密码float get_mo ney(); /取得余额void set_passwd(char pwd); /设置密码void set_m on ey(float m);/取钱private:char passwd10; /用户密码char n ame20;/用户姓名char kahao20; /用户卡号float m

9、o ney; /用户余额;构造函数,建立con sumer:c on sumer(char Name,char Kahao, float Mon ey,char Password)/账户strcpy (n ame,Name); strcpy(kahao,Kahao);mon ey=Mon ey;strcpy(passwd,Password); float con sumer:get_ mon ey() / return mon ey;取得余额char*c on sumer:get_ name() / return n ame;取得姓名char*c on sumer:get_kahao() /取

10、得卡号return kahao;char*c on sumer:get_passwd() /取得密码retur n passwd;void con sumer:set_passwd(char pwd)设置密码strcpy(passwd,pwd);void ATM:welcome() / 登录界面times=0;cout*欢迎使用银行ATM自动取款机*endl;char pwd10, num20,ch;int i=0;doi=0;coutendl请输入卡号:;docin. get(ch);nu mi+=ch;while(ch!=n);n umi-1=0:i=0;cout请输入密码:;docin.

11、 get(ch);pwdi+=ch;while(ch!=n);pwdi-1=0;if(!check_passwd( nu m,pwd)e ndl;cout你输入的卡号或密码有误,请从新输入times+;elsefun ctio nshow();while(times3);lock(); bool ATM:check_passwd(char nu m,char pwd)if(strcmp( nu m,c nsm.get_kahao()=0&strcmp(pwd,c nsm.get_passwd()=O) return true;elsereturn false;void ATM:fu ncti

12、on show()int n;docout e ndl 请输入相应的操作序号进行操作:e ndl;cout1)修改密码endl2)取款endl3)查询余额endl4)退出系统endl;cout;cinn;while( n 4)cout请输入正确的操作序号 !endl;cout;cinn;switch( n)case 1: cha nge_passwd();break;case 2: fetchm on ey();break;case 3: in formati on();break;case 4: exitATM();break;while(true);void ATM:cha nge_pas

13、swd()char pwd10,repwd10;times=0;docoutendl pwd;if(!check_passwd(c nsm.get_kahao(),pwd) times+;elsebreak;while(times3);if(times=3)lock();int k=0;int t=0;dok=0;cout pwd;int g=0;int v=0;g=strle n( pwd);if(g6)k=1;cout密码不能小于6位endl;for(i nt i=0;ig_1;i+)if(pwdi=pwdi+1)v=v+1;if(v=g)k=1;cout对不起,不允许出现完全相同的情况6

14、&v!=g)cout repwd;if(t=strcmp(pwd,repwd)!=O)cout你输入的两次密码不一样,请重新输入!endl;while(t!=0|k=1);cn sm.set_passwd(pwd);cout密码修改成功,请牢记!endl;void ATM:fetchmo ney()float m;char ch;docoutendl你要取多少钱:;cinm;while(m=0)cout请输入正确的数字!endl;cout;cinm;if(m5000)cout对不起,每次最多取5000元endl;elseif(i nt)m%100!=0)cout对不起,取款金额为100的倍数e

15、ndl;elseif(cn sm.get_ mon ey()-m0)cout对不起,你的余额不足!endl;elsecout en dl 操作成功,请收好钱!” e ndl;cn sm.set_ mon ey( m );cout是否要继续该项操作:(Y/N)endl;cout;cin ch;while(ch!= n&ch!=Y&ch!=y)cout;cin ch;while(ch=y|ch=Y);C+语言程序设计课程设计报告第15页共19页void ATM:i nformati on()C+语言程序设计课程设计报告第#页共19页cout*e ndl;C+语言程序设计课程设计报告第#页共19页c

16、out*cout*cout*cout*e ndl;用户姓名:cnsm.get_name()endl; 卡号:cnsm.get_kahao()endl;余额:cnsm.get_money()endl;C+语言程序设计课程设计报告第#页共19页cout*e ndl;C+语言程序设计课程设计报告第#页共19页C+语言程序设计课程设计报告第#页共19页void ATM:lock()e ndl;coute ndl感谢你对本银行的支持,欢迎下次光临!cout 请取卡.endl;void ATM:exitATM()cout成功退出系统!谢谢惠顾!2钱作 i 收项 请该 功继 成要 作否 操是一应弼额统一 帕

17、密余系 入改香出 m v 一 请m芸5退出系统C+语言程序设计课程设计报告第#页共19页C+语言程序设计课程设计报告第#页共19页谓|入相应的操作序号进行操作:2薩改密码e退出索统成功退出系统!谢谢惠吗!Press antjcont inuC+语言程序设计课程设计报告第#页共19页C+语言程序设计课程设计报告第#页共19页6.用户名密码输入错误三次,自动退出,锁机吞卡C+语言程序设计课程设计报告第21页共19页5. 程序调试过程liB MLB JB K.M KB KB Mil JB JB ! MLB ! & ! iM _iB * KB hB BjM JI写出程序调试步骤(4) 模拟自动取款机(

18、ATM )的流程,实现查询银行卡余额、取款、修改密码、退出系统等功能;(5) 卡号、密码错误时最多输入3次,否则直接退出系统。(6) 取款金额受信用卡余额、ATM机单笔最大取款金额及 ATM机当前剩余金额的限制。1. 根据程序设定好的用户名密码输入,用户名为123456,密码为123456.2. 根据题目要求修改密码,原密码为123456,新密码为1234567,重复新密码12345673. 取出现金1004. 查询余额,剩余 99005退出系统6. 次密码错误自动退出系统,锁机吞卡遇到的问题开始不会输入用户名用户密码,得提前设定,其次输入密码三次错误,没有自动锁机,需要再设定,while函数

19、用不熟,各模块联系不上,最高取款限额,还有查询余额都得用分支模块处理。ATM机类:有“单笔取款最高限制”、“每日取款总金额限制”、“金额”等基本属性。需要实现:“核对密码”、“修改密码”、“取款”、“查询信息”、“退出系统”、“锁机吞卡”等功能。将这些操作定义为ATM机类的成员函数没有紧密联系。行卡类:具有“用户姓名”、“用户密码”、“存款额”等特征。需要实现“身份验证”、“查询余额”、“修改密码”、“交易成功更改余额”等操作。将这些操作定义为银行卡类的成员函数不能很好运行。在本程序中使用了 struct数据类型,所用最多的是WHILE循环结构和IF语句,然而这也正为了它的特色。循环体的嵌套思

20、路清晰,目的明确,格式规范,易于阅读和理解。If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用, 一目了然。6. 设计问题的不足和改进方案本课程设计是在汉化环境下操作的,对系统要求相对严格。在输入信息时,每输入一条信息 后用ENTER键结束,然后继续下一条信息的输入

21、。如果不能按照规定方法录入,将导致信息混乱 不清,只有重新启动系统开始新的输入。策略是:只有人为的去掌握输入方法,正确操作;还有 是对程序改进,使程序对一些非法输入给予忽略,提示重新输入。在本程序中使用了 struct数据类型,所用最多的是 WHILE循环结构和IF语句,然而这也正 为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明 了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支 持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对

22、信息的添加浏C+语言程序设计课程设计报告第23页共19页C+语言程序设计课程设计报告览和查询等功能,它使用的指针是动态分配内存的, 允许用户大量的信息录入,对它的长短不加 限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。因为系统只是要求模拟并不牵涉到真实的一些处理,所以很多真实的应用并不没有加在里面,一 些与真实的自动化机器的接口连接并没有做到。 在程序运行时有时会因为输入的数字过大而出现 内存溢出,程序崩溃现象,经过调试改正已经有了很大改观,但仍然存在不可知的错误。首先遇到的问题就是系统分析不足的问题在大致考虑了一些功能后就开始动手做,想到哪里做到哪里,一度陷入了困境,其后从新开

23、始理清了思绪,画好了流程图在做,随即顺畅了许多。其次 就是与数据库连接上的问题,由于对 VB与SQL连接的不熟走了很多弯路,使程序设计需要用到 数据库时复杂化,过后通过老师同学指点,采用了 ADO空件的动态连接,才解决一个头疼的问题。 其后的问题都是程序中逻辑性的一些小问题, 大多数都是一些遗漏,导致程序死循环,或者是数 据库写入不去作用等等,都是通过仔细重新分析检查一一解决。 在所有代码编写完成后,再一一 验证其功能,修正了很多不足,也使得程序慢慢完善起来。7. 课程设计心得通过用面向推想的编程概念作为主导思想,我们体会不少,不过由于时间非常的紧迫,我们也只能说说我们的一些主要体会:在程序中

24、我们设计了一个抽象基类和由这个基类派生出去的这使我们体会到了真正思想,也感觉到对面向对象程序设计确实抽象,这需要我们在编程实践去慢慢体会,慢慢总结。面向对象的编程概念的最主要的特性是:继承和多态。关于多态,在面向对象的程序设计中它的含义是“相似”,两个对象如果具有一定的相似性但又 有些区别的话,那么它们具有多态性;在 C+冲,我们通过基类的和references,借助虚拟机制 对派生类进行动态操作。用关键字可使函数有了晚捆绑的灵活性(即动态绑定)函数表示允许在 相同家族中的类有不同的行为,这也正是多态形成的原因。virtual函数允许它与基类那个函数不同(即允许改写基类定义的函数)。会使我们的程序的修改和增删极为方便。当然基类中函数无实质实现内容的话,也可将 virtual函数赋值为0,则变为虚拟函数了, 那么基类也就成了抽象基类,不能用来产生任何对象,只提供接口给派生类用,仅作为派生类的 子对象来用。关于继承,基类用以描述系统中一些对象的思想核心,派生出其他类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论