新微赢技术网

标题: [求助]如何用C++程序模拟一个简单功能的ATM信用卡交易系统! [打印本页]

作者: 丑剑客    时间: 2009-11-6 01:47
标题: [求助]如何用C++程序模拟一个简单功能的ATM信用卡交易系统!
本人是一个非计算机专业的大二学生,本学期开了C++程序设计基础这门课,老师讲的太快了,我实在是听不懂,只好请各位高手们帮帮忙了!
老师给我们留了一个C++的程序设计题:要求用"类"和"对象"来模拟实现"ATM存取系统"
具体要求如下:
       实现的功能包括:1.登陆系统时要求输入密码(4位),且要求密码以"*"号显示,如果密码输入错误并大于3次就退出系统!
               2.成功登陆系统后屏幕显示"余额查询"/"存款"/"取款"三个选项
               3. 要求在进行"查询"和"存取款"后屏幕要有显示(帐目要有变化)   

本人以前没有学过编程,所以不知从哪里下手才能把程序编出来!希望哪位C++高手帮我一下,提供一个C++程序源代码,本人万分感谢!
作者: 烟灰缸2    时间: 2009-11-6 01:47
  我的邮箱:sk01@eyou.com



以下这段代码只能实现金额的显示,其他的功能就没办法实现了, 希望大家帮帮忙,本人万分感谢了!!!

#include<iostream.h>
#include<string.h>
#define max 100
class Card
{
int top; //当前记录位置标记
char date[max][11]; //每次交易的日期记录
int money[max]; //记录每次交易金额
int rest[max]; //记录每次交易后的余额
static int sum; // 静态数据成员,记录累计余额
public:
Card() {top=0;}
void Cardin(char d[],int m)
{
strcpy(date[top],d);
money[top]=m;
sum+=m;
rest[top]=sum;
top++;
}
void Cardout(char d[],int m)
{
if(sum>=m)
{
strcpy(date[top],d);
money[top]=-m;
sum-=m;
rest[top]=sum;
top++;
}
else
cout<<"警告:"<<d<<"交易失败!您的户面余额已不足!请续存!"<<endl;
}
void disp()
{
int i;
cout<<" 日期 存入 取出 余额"<<'\n';
for(i=0;i<top;i++)
{
cout.width(10);
cout<<date[i];
if (money[i]<0)
{
cout.width(13);
cout<<-money[i];
cout.width(9);
cout<<rest[i]<<endl;
}
else
{
cout.width(6);
cout<<money[i];
cout.width(16);
cout<<rest[i]<<endl;
}
}
cout<<"您的帐户余额为:"<<sum<<endl;
}
};
int Card::sum=0;
void main()
{
Card obj;
obj.Cardin("2006.2.5",1000);
obj.Cardin("2006.12.15",2000);
obj.Cardout("2007.1.5",500);
obj.Cardout("2007.3.5",400);
obj.Cardout("2007.5.15",3000);
obj.disp();
}
作者: 市井游侠々    时间: 2009-11-6 01:47
各位高手,大家帮帮忙啊!
作者: 风声鹤唳    时间: 2009-11-6 01:47
给你一段代码~~~
只有些基本功能,其余功能你可以自己补写   
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;
static int money=1000;
//********************************************************************
int input_code() //密码输入验证函数
{
char ch;
char b[100];
char code[100]="code";

for(int j=2;j>=0;j--)
{
ch=0;
cout<<"\n请输入密码!"<<endl;
for(int i=0;ch!=13;i++)
{
ch=getch();
if(ch==8)
{
cout<<char(8)<<" "<<char(8);
b[i]=0;
if(i!=0)
{
i=i-2;
}
}
else if(ch==13)
{
b[i]='\0';
break;
}
else
{
cout<<"*";
b[i]=ch;
}
}


if(strcmp(b,code)==0)
{
cout<<"密码正确!"<<endl;
break;
}
else
{
cout<<"\n密码错误!请重新输入"<<endl;
cout<<"你还有"<<j<<"次机会!\n"<<endl;
system("pause");
system("cls");
}
}
if(j==-1)
{
cout<<"你输入的次数已达3次,系统将自动退出!"<<endl;
return 0;
}
else
{
return 1;
}
}
//*************************************************
void ATM_system(const int choice)
{
int money_save,money_take;
int i=choice;
if(i==1)
{
if(money>0)
{
cout<<"你的余额还有"<<money<<"完!"<<endl;
}
else
{
cout<<"警告,你的余额已不多,请及时冲值!"<<endl;
}
}
if(i==2)
{
cout<<"请问你需要存储多少钱?"<<endl;
cin>>money_save;
while(money_save<=0)
{
cout<<"你的输入有误!请重新输入"<<endl;
cin>>money_save;
}
money=money+money_save;

cout<<"你的资金已注入!\n";
}
if(i==3)
{
cout<<"请问你需要取出多少钱?"<<endl;
cin>>money_take;
while(money_take<=0)
{
cout<<"你的输入有误!请重新输入"<<endl;
cin>>money_take;
}
if(money_take<=money)
{
money=money-money_take;
cout<<"取款成功!"<<endl;
}
else
{
cout<<"你的资金不足以取款!"<<endl;
}
}
}
//*************************************************

void main()
{
char ch;
int choice;
int con=1;
cout<<"欢迎使用ATM信用卡系统!"<<endl;
con=input_code();
if(con==0)
{
cout<<"谢谢使用,再见!"<<endl;
}
else
{
while(1)
{
cout<<"请问你需要什么服务?"<<endl;
cout<<"1.余额查询\n";
cout<<"2.存款\n";
cout<<"3.取款\n";
cin>>choice;
if(choice!=1&&choice!=2&&choice!=3)
{
cout<<"错误输入,重新输入!"<<endl;
continue;
}
ATM_system(choice);
getch();
system("cls");
cout<<"请问还需要其它服务吗?(Y or N)"<<endl;
cin>>ch;
if(ch=='y'||ch=='Y') continue;
else
{
cout<<"谢谢使用,再见!"<<endl;
break;
}
}
}

}
作者: 踏破^ō^凌云    时间: 2009-11-6 01:47
system("cls");C++原来就这个函数呀!
作者: 劳资ぶ龍哥    时间: 2009-11-6 01:47
谢谢4楼的这位朋友,程序我已经测试过了,没有发现问题,可以正常运行.

这个程序已经能够满足我的需要了,我很佩服4楼的这位朋友,万分感谢了!
作者: 逊一    时间: 2009-11-6 01:47
初始密码是什么啊?
作者: 况天佑    时间: 2009-11-6 01:47
哦,找到了,code
作者: ★海浪★    时间: 2009-11-6 01:47
这个存钱的机,要改改啊,如果是 比尔·盖茨 存钱,那你的这个存钱机就得死循环喽。
作者: 我和老公在    时间: 2009-11-6 01:47
本人觉得用switch语句比较好。
可以几句就行了,,case1 case2来写。。不过今天没时间。。
不好意思了。。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2