今天帮人写的第二篇课设 。 ;-) 机智的窝

要求:大概说一下吧,就是要创建一个用户(初始化一账户),模拟ATM的业务(取款,100的整数倍,改密
              码,查剩余金额。等等,各种简单繁琐的操作 ;-) )

直接贴代码吧:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string> using namespace std; class consumer;
class ATM // ATM取款机
{
public:
ATM(consumer& cn):cnsm(cn){}
void welcome(); // 登陆界面
bool check_passwd(char n[],char pwd[]); // 核对password
void change_passwd(); // 改动password
void fetchmoney(); // 取款
void information(); // 查询信息
void exitATM(); // 退出系统
void functionshow(); // 功能界面
void lock(); // 锁机
private:
int times; // 记录password输入次数
consumer& cnsm;
};
class consumer // 用户
{
public:
friend class ATM;
consumer(char Name[],char Num[],float Money,char Password[]);
protected:
char* get_name(); // 取得姓名
char* get_num(); // 取得卡号
char* get_passwd(); // 取得password
float get_money(); // 取得剩余金额
void set_passwd(char pwd[]); // 设置password
void set_money(float m); // 取钱
private:
char passwd[8]; // 用户password
char name[20]; // 用户姓名
char num[20];
float money;
}; consumer::consumer(char Name[],char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(passwd,Password);
}
float consumer::get_money()
{
return money;
}
char* consumer::get_name()
{
return name;
}
char* consumer::get_num()
{
return num;
}
char* consumer::get_passwd()
{
return passwd;
}
void consumer::set_money(float m)
{
money-=m;
}
void consumer::set_passwd(char pwd[])
{
strcpy(passwd,pwd);
} void ATM::welcome()
{
times=0;
cout<<" 欢迎使用tdap银行ATM自己主动取款机 "<< endl;
char pwd[8],num[20],ch;
int i=0;
do
{
i=0;
cout<<"请输入卡号:";
do
{
cin.get(ch);
num[i++]=ch;
}while(ch!='\n');
num[i-1]='\0';
i=0;
cout<<"请输入password:";
do
{
cin.get(ch);
pwd[i++]=ch;
}while(ch!='\n');
pwd[i-1]='\0';
if(!check_passwd(num,pwd))
{
cout<<"你输入的卡号或password有误。请又一次输入"<<endl;
times++;
}
else
{
functionshow();
}
}while(times<3);
lock();
}
bool ATM::check_passwd(char num[],char pwd[])
{
if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0)
return true;
else
return false;
}
void ATM::functionshow(){
int n;
do{
cout<<"请你输入对应的操作序号进行操作:"<<endl;
cout<<"1) 改动password "<<endl<<"2) 取款 "<<endl<<"3) 查询剩余金额 "<<endl<<"4) 退出系统 "<<endl;
cout<<"$ >";
cin>>n;
while(n<1||n>4){
cout<<"请输入正确的操作序号!"<<endl;
cout<<"$ >";
cin>>n;
} switch(n){
case 1: change_passwd(); break;
case 2: fetchmoney(); break;
case 3: information(); break;
case 4: exit(0); break;
}
}while(true);
}
void ATM::change_passwd(){
char pwd[8],repwd[8];
times=0;
do{
cout<<"请输入旧password:";
cin>>pwd;
if(!check_passwd(cnsm.get_num(),pwd))
times++;
else
break;
}while(times<3);
if(times==3)
lock(); int t=0;
do{
cout<<"请输入新password:";
cin>>pwd;
cout<<"请再输入一次新password:";
cin>>repwd;
if((t=strcmp(pwd,repwd))!=0)
cout<<"你输入的两次password不一样,请从新输入!"<<endl;
}while(t!=0);
cnsm.set_passwd(pwd);
cout<<"password改动成功,请牢记!"<< endl;
}
void ATM::fetchmoney(){
int m;
char ch;
do{
cout<<"你要取多少钱:"<<endl<<"$>";
cin>>m;
while(m<=0 || m%100 !=0 ){
cout<<"请输入正确的数字!"<<endl;
cout<<"$> ";
cin>>m;
}
if(cnsm.get_money()-m<0){
cout<<"对不起,你的剩余金额不足!"<<endl;
}else{
cout<<"操作成功,请收好钱!"<<endl;;
cnsm.set_money(m);
}
cout<<"是否要继续该项操作:(Y/N) "<<endl;
cout<<"$ > ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::information()
{
cout<<"**********************************"<<endl;
cout<<"*"<<endl;
cout<<"* 用户姓名:" << cnsm.get_name() <<endl;
cout<<"* 卡号: " << cnsm.get_num() <<endl;
cout<<"* 剩余金额: " << cnsm.get_money() <<endl;
cout<<"**********************************"<<endl;
}
void ATM::lock()
{
cout<<"对不起,因为你的操作有误。你的卡已经被没收! ? "<<endl;
cout<<"请取卡……"<<endl;
exit(0);
} int main(){
consumer c1("jim","12345",10000.0f,"123"); // 先构造一个用户
ATM atm(c1);
atm.welcome();
return 0;
}


ATM取款机模拟——数据结构课设的更多相关文章

  1. ATM取款机的数据库模拟开发和实战总结

    一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

  2. Oracle实战训练——ATM取款机业务

    ATM取款机的数据库模拟开发和实战总结 一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现 ...

  3. C语言课设心得分享(一)

    今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾.我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨.如果是我能回答的问题,我很乐意能够提供帮助. ...

  4. 大话JS面向对象之开篇万物皆对象------(ATM取款机引发的深思)

    一,总体概要 OO(面向对象)概念的提出是软件开发工程发展的一次革命,多年来我们借助它使得很多大型应用程序得以顺利实现.如果您还没有掌握并使用OO进行程序设计和开发,那么您无疑还停留在软件开发的石器时 ...

  5. 第一周:设计一个简易ATM取款机简易程序(2)

    1.了解用户对ATM取款机功能需求如下: 2.新建一个login函数使用for循环方法和if选择方法编写登陆界面用来及设置ATM内用户的金额和取款机内的金额: 3.使用新建函数方法及if选择方法编写登 ...

  6. C语课设心得分享(二)

    咱们今儿说说IDE的事儿. IDE是「集成开发环境」的意思,比如咱们常用的VC6.0,就是开发C语言所用的IDE的一种.对于IDE的认识,可能有些朋友有点儿模糊,咱们捋一捋,我也会给出一些IDE方面的 ...

  7. C语课设心得分享(三)

    调试. 以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好:如果是结果错误,那么在稿纸上过几遍基本也可以得出结果. 但咱们这个课设比较大,就需要很多调试的过程,尤 ...

  8. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  9. JAVA课设---五子棋

    1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...

随机推荐

  1. Record these plug-ins of vscode

    实在无聊透顶.写个随笔记录一下vscode的插件好了. 第一次使用(之前一直在用sublime...),以后再更新吧.record my color too! Visual Studio Code B ...

  2. vue面试相关

    (1)什么是mvvm?    MVVM是Model-View-ViewModel的缩写.mvvm是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View ...

  3. Oracle数据库自定义函数练习20181031

    --测试函数3 CREATE OR REPLACE FUNCTION FN_TEST3 (NUM IN VARCHAR2) RETURN VARCHAR2 IS TYPE VARCHAR2_ARR ) ...

  4. 二、spring中装配bean

    在spring框架中提供了三种 bean的装配方式,当然这三种装配方式是可以灵活的进行组合使用的,项目中使用最多的是自动装配bean的方式,也就是通过注解的方式进行bean的装配,一下是四种装配方式的 ...

  5. 零基础入门学习Python(25)--字典:当索引不好用时

    知识点 字典属于映射类型. 列表,元祖,字符串等属于序列类型 创建及访问字典 #创建一个字典 >>> dict1 = {'李宁':'一切皆有可能','耐克':'Just do it' ...

  6. vim使用学习

    1.1在正常模式下,使用h,j,k,l实现左,下,上,右移动. (如果不再正常模式下,使用Esc键进入正常模式) 1.2退出vim,先进入到正常模式,输入:q!退出,但不保存任何修改. 1.3在正常模 ...

  7. Android使用JDBC连接数据库

    连接数据库是安卓开发中几乎不可避免的一项工作,稍有规模的应用通常都需要使用数据库来存储用户数据.对于本地数据库当然可以使用sqlite,而对于多用户线上应用,则一般需要配备云端数据库.其中比较常用且开 ...

  8. 网络编程进阶:并发编程之协程、IO模型

    协程: 基于单线程实现并发,即只用一个主线程(此时可利用的CPU只有一个)情况下实现并发: 并发的本质:切换+保存状态 CPU正在运行一个任务,会在两种情况下切走去执行其他任务(切换有操作系统强制控制 ...

  9. 营救(洛谷 P1396)

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...

  10. C++对拍数据生成

    #include<map> #include<ctime> #include<queue> #include<cmath> #include<cs ...