C++自动取款机ATM源代码_第1页
C++自动取款机ATM源代码_第2页
C++自动取款机ATM源代码_第3页
C++自动取款机ATM源代码_第4页
C++自动取款机ATM源代码_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

河北联合大学河北联合大学 2011 20122011 2012 第第 2 2 学期学期 软件设计基础 C 课程设计报告 设计名称 设计名称 模拟自动取款机模拟自动取款机 姓姓 名 名 薛岩薛岩 学学 号 号 201114290106201114290106 专业班级 专业班级 1111 水水 1 1 学学 院 院 建筑工程学院建筑工程学院 设计时间 设计时间 2012 5 6 设计地点 设计地点 计算中心机房计算中心机房 指导教师评语 指导教师签字 年 月 日 成绩 成绩 软件设计基础 C 课程设计报告 第 2 页 共 20 页 目目 录录 1 课程设计目的课程设计目的 3 2 课程设计任务与要求课程设计任务与要求 3 3 课程设计说明书课程设计说明书 4 4 课程设计成果课程设计成果 6 5 程序调试过程程序调试过程 18 6 设计问题的不足和改进方案设计问题的不足和改进方案 18 7 课程设计心得课程设计心得 19 8 参考文献参考文献 20 软件设计基础 C 课程设计报告 第 3 页 共 20 页 1 课程设计目的 软件设计基础 C 课程设计是这门课程的实践性教学环节之一 本次设计结合实际应用的要求 使课程设计既覆盖 C 的知识点 又接近工程实际需要 目的是通过课程设计的综合训练 培养学生实际分 析问题 解决问题的能力 以及编程和动手能力 最终目标是通过课程设计这种形式 帮助学生系统掌握 C 这门课程的主要内容 养成良好的编程习惯 更好的完成教学任务 2 课程设计任务与要求 要求 本次课程设计利用 软件设计基础 C 课程中所学到的编程知识和编程技巧 完成具有一定难度和工 作量的程序设计题目 帮助学生掌握编程 调试的基本技能 独立完成所布置的任务 要求 1 对系统进行功能需求分析 2 设计合理的数据结构和系统框架 3 编程简练 程序功能齐全 能正确运行 4 说明书 流程图要清楚 5 课题完成后必须按要求提交课程设计报告 1 分析系统中的各个实体之间的关系及其属性和行为 2 根据问题描述 设计系统的类层次 3 完成类层次中各个类的描述 包括属性和方法 4 完成类中各个成员函数的定义 5 完成系统的模块组装 调试 任务 1 ATM 机类 有 单笔取款最高限制 每日取款总金额限制 金额 等基本属性 需要实现 核对密码 修改密码 取款 查询信息 退出系统 锁机吞卡 等功能 可以将这些操作定义 为 ATM 机类的成员函数 2 银行卡类 具有 用户姓名 用户密码 存款额 等特征 需要实现 身份验证 查询余额 修改密码 交易成功更改余额 等操作 将这些操作定义为银行卡类的成员 函数 1 模拟自动取款机 ATM 的流程 实现查询银行卡余额 取款 修改密码 退出系统等功能 2 卡号 密码错误时最多输入 3 次 否则直接退出系统 3 取款金额受信用卡余额 ATM 机单笔最大取款金额及 ATM 机当前剩余金额的限制 软件设计基础 C 课程设计报告 第 4 页 共 20 页 3 课程设计说明书 软件设计基础 C 课程设计报告 第 5 页 共 20 页 概要设计 本案例涉及一个银行卡和 ATM 机之间的 对话 需要处理两个对象 即 ATM 和银行卡 因此可以考 虑定义两个类来解决这个问题 1 ATM 机类 有 单笔取款最高限制 每日取款总金额限制 金额 等基本属性 需要实现 核对密码 修改密码 取款 查询信息 退出系统 锁机吞卡 等功能 可以将这些操作定义 为 ATM 机类的成员函数 2 银行卡类 具有 用户姓名 用户密码 存款额 等特征 需要实现 身份验证 查询余 额 修改密码 交易成功更改余额 等操作 将这些操作定义为银行卡类的成员函数 模块说明 在我设计的程序中一共包括了五个模块 分别是 核对密码 修改密码 取款 查询信息 退出系统模块 这六个模块中新增 查找和修改都是独立分开作为子函数的 另外三个则是作为 switch 语句中的一部分 通 过 switch 语句 把五个大模块联系了起来 同时 为了实现多次使用这五大模块 就在 switch 语句外加了 while 循环 模块结构图 详细设计 软件设计基础 C 课程设计报告 第 6 页 共 20 页 总体流程图 各功能模块流程图 软件设计基础 C 课程设计报告 第 7 页 共 20 页 4 课程设计成果 程序源代码 运行结果 可用屏幕抓图的方法说明 五号 宋体 多页 include include include include class consumer class ATM public ATM consumer 登陆界面 bool check passwd char n char pwd 核对密码 void change passwd 修改密码 void fetchmoney 取款 void information 查询信息 void exitATM 退出系统 void functionshow 功能界面 void lock 锁机 private int times 记录密码输入次数 consumer 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 取得密码 软件设计基础 C 课程设计报告 第 8 页 共 20 页 float get money 取得余额 void set passwd char pwd 设置密码 void set money float m 取钱 private char passwd 10 用户密码 char name 20 用户姓名 char kahao 20 用户卡号 float money 用户余额 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 软件设计基础 C 课程设计报告 第 9 页 共 20 页 char consumer get passwd 取得密码 return passwd void consumer set passwd char pwd 设置密码 strcpy passwd pwd void ATM welcome 登录界面 times 0 cout 欢迎使用银行 ATM 自动取款机 endl char pwd 10 num 20 ch int i 0 do i 0 cout endl 请输入卡号 do cin get ch num i ch while ch n num i 1 0 i 0 cout 请输入密码 do cin get ch pwd i ch while ch n pwd i 1 0 if check passwd num pwd cout 你输入的卡号或密码有误 请从新输入 endl times 软件设计基础 C 课程设计报告 第 10 页 共 20 页 else functionshow while times 3 lock bool ATM check passwd char num char pwd if strcmp num cnsm get kahao 0 else return false void ATM functionshow int n do cout endl 请输入相应的操作序号进行操作 endl cout 1 修改密码 endl 2 取款 endl 3 查询余额 endl 4 退出系统 endl cout cin n while n4 cout 请输入正确的操作序号 endl cout cin n switch n case 1 change passwd 软件设计基础 C 课程设计报告 第 11 页 共 20 页 break case 2 fetchmoney break case 3 information break case 4 exitATM break while true void ATM change passwd char pwd 10 repwd 10 times 0 do cout endl pwd if check passwd cnsm get kahao pwd times else break while times 3 if times 3 lock int k 0 int t 0 do k 0 cout pwd int g 0 int v 0 g strlen pwd if g 6 软件设计基础 C 课程设计报告 第 12 页 共 20 页 k 1 cout 密码不能小于 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 对不起 不允许出现完全相同的情况 6 if t strcmp pwd repwd 0 cout 你输入的两次密码不一样 请重新输入 endl while t 0 k 1 cnsm set passwd pwd cout 密码修改成功 请牢记 endl void ATM fetchmoney float m char ch do cout endl 你要取多少钱 cin m while m 0 软件设计基础 C 课程设计报告 第 13 页 共 20 页 cout 请输入正确的数字 endl cout cin m if m 5000 cout 对不起 每次最多取 5000 元 endl else if int m 100 0 cout 对不起 取款金额为 100 的倍数 endl else if cnsm get money m 0 cout 对不起 你的余额不足 endl else cout endl 操作成功 请收好钱 endl cnsm set money m cout 是否要继续该项操作 Y N endl cout cin ch while ch n cin ch while ch y ch Y 软件设计基础 C 课程设计报告 第 14 页 共 20 页 void ATM information cout endl cout endl cout 用户姓名 cnsm get name endl cout 卡号 cnsm get kahao endl cout 余额 cnsm get money endl cout endl void ATM lock cout endl 感谢你对本银行的支持 欢迎下次光临 endl cout 请取卡 endl void ATM exitATM cout 成功退出系统 谢谢惠顾 endl exit 0 void consumer set money float m money money m int main consumer c1 Me 123456 10000 00F 123456 先构造一个用户 ATM atm c1 atm welcome return 0 软件设计基础 C 课程设计报告 第 15 页 共 20 页 运行结果运行结果 1 输入密码 2 修改密码 软件设计基础 C 课程设计报告 第 16 页 共 20 页 3 取款 4 查询余额 5 退出系统 软件设计基础 C 课程设计报告 第 17 页 共 20 页 6 用户名密码输入错误三次 自动退出 锁机吞卡 软件设计基础 C 课程设计报告 第 18 页 共 20 页 5 程序调试过程 写出程序调试步骤写出程序调试步骤 4 模拟自动取款机 ATM 的流程 实现查询银行卡余额 取款 修改密码 退出系统等功能 5 卡号 密码错误时最多输入 3 次 否则直接退出系统 6 取款金额受信用卡余额 ATM 机单笔最大取款金额及 ATM 机当前剩余金额的限制 1 根据程序设定好的用户名密码输入 用户名为 123456 密码为 123456 2 根据题目要求修改密码 原密码为 123456 新密码为 1234567 重复新密码 1234567 3 取出现金 100 4 查询余额 剩余 9900 5 退出系统 6 次密码错误自动退出系统 锁机吞卡 遇到的问题遇到的问题 开始不会输入用户名用户密码 得提前设定 其次输入密码三次错误 没有自动锁机 需要再设定 while 函数用不熟 各模块联系不上 最高取款限额 还有查询余额都得用分支模块处理 ATM 机类 有 单笔取款最高限制 每日取款总金额限制 金额 等基本属性 需要实现 核对密码 修改密码 取款 查询信息 退出系统 锁机吞卡 等功能 将这些操作定义为 ATM 机类的成 员函数没有紧密联系 行卡类 具有 用户姓名 用户密码 存款额 等特征 需要实现 身份验证 查询余额 修改密 码 交易成功更改余额 等操作 将这些操作定义为银行卡类的成员函数不能很好运行 在本程序中使用 了 struct 数据类型 所用最多的是 WHILE 循环结构和 IF 语句 然而这也正为了它的特色 循环体的嵌套思 路清晰 目的明确 格式规范 易于阅读和理解 If 语句的逐层运用 正形象化的描述了计算机工作流程 而且与人的一般习惯相吻合 简单明了 易于观察 理解它的来龙去脉 思路清晰直观 该程序是在汉化系统下编写完成的 所以它支持在汉化系统下运行 还 支持在普通系统下运行 它允许完全用中文操作 包括对信息的添加浏览和查询等功能 它使用的指针是动 态分配内存的 允许用户大量的信息录入 对它的长短不加限制 这样就方便了很多 而且中文环境更加方 便使用 一目了然 6 设计问题的不足和改进方案 本课程设计是在汉化环境下操作的 对系统要求相对严格 在输入信息时 每输入一条信息 后用 ENTER 键结束 然后继续下一条信息的输入 如果不能按照规定方法录入 将导致信息混 乱不清 只有重新启动系统开始新的输入 策略是 只有人为的去掌握输入方法 正确操作 还有是对程序改进 使程序对一些非法输入给予忽略 提示重新输入 在本程序中使用了 struct 数据类型 所用最多的是 WHILE 循环结构和 IF 语句 然而这也 正为了它的特色 循环体的嵌套思路清晰 目的明确 格式规范 易于阅读和理解 If 语句的逐层运用 正形象化的描述了计算机工作流程 而且与人的一般习惯相吻合 简单明 了 易于观察理解它的来龙去脉 思路清晰直观 该程序是在汉化系统下编写完成的 所以它 支持在汉化系统下运行 还支持在普通系统下运行 它允许完全用中文操作 包括对信息的添 软件设计基础 C 课程设计报告 第 19 页 共 20 页 加浏览和查询等功能 它使用的指针是动态分配内存的 允许用户大量的信息录入 对它的长 短不加限制 这样就方便了很多 而且中文环境更加方便使用 一目了然 因为系统只是要求模拟并不牵涉到真实的一些处理 所以很多真实的应用并不没有加在里面 一些与真实的自动化机器的接口连接并没有做到 在程序运行时有时会因为输入的数字过大而 出现内存溢出 程序崩溃现象 经过调试改正已经有了很大改观 但仍然存在不可知的错误 首先遇到的问题就是系统分析不足的问题在大致考虑了一些功能后就开始动手做 想到哪里做 到哪里 一度陷入了困境 其后从新开始理清了思绪 画好了流程图在做 随即顺畅了许多 其次就是与数据库连接上的问题 由于对 VB 与 SQL 连接的不熟走了很多弯路 使程序设计需要 用到数据库时复杂化 过后通过老师同学指点 采用了 ADO 控件的动态连接 才解决一个头疼 的问题 其后的问题都是程序中逻辑性的一些小问题 大多数都是一些遗漏 导致程序死循 环 或者是数据库写入不去作用等等 都是通过仔细重新分析检查一一解决 在所有代码编写 完成后 再一一验证其功能 修正了很多不足 也使得程序慢慢完善起来 7 课程设计心得 通过用面向推想的编程概念作为主导思想 我们体会不少 不过由于时间非常的紧迫 我 们也只能说说我们的一些主要体会 在程序中我们设计了一个抽象基类和由这个基类派生出去的这使我们体会到了真正思想 也感 觉到对面向对象程序设计确实抽象 这需要我们在编程实践去慢慢体会 慢慢总结 面向对象的编程概念的最主要的特性是 继承和多态 关于多态 在面向对象的程序设计中它的含义是 相似 两个对象如果具有一定的相似性但又 有些区别的话 那么它们具有多态性 在 C 中 我们通过基类的和 references 借助虚拟机 制对派生类进行动态操作 用关键字可使函数有了晚捆绑的灵活性 即动态绑定 函数表示允 许在相同家族中的类有不同的行为 这也正是多态形成的原因 virtual 函数允许它与基类那 个函数不同 即允许改写基类定义的函数 会使我们的程序的修改和增删极为方便 当然基类中函数无实质实现内容的话 也可将 virtual 函数赋值为 0 则变为虚拟函数 了 那么基类也就成了抽象基类 不能用来产生任何对象 只提供接口给派生类用 仅作为派 生类的子对象来用 关于继承 基类用以描述系统中一些对象的思想核心 派生出其他类型 派生类 用来表 达了

温馨提示

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

评论

0/150

提交评论