atm

班级 ahpu软件工程
实验要求 atm机管理系统
学号 3180701223

目录
一、题目要求
二、代码
三、运行结果
四、
博客班级 软件工程
作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
学号 3180701228
一、题目要求
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)

二、代码
1.结构体
typedef struct{
int uid;//卡号
int password;//密码
float balance; //余额
bool flag; //该账户是否存在,存在为true
}account;
vector base;

2.检测函数
bool check(account N){

bool flag = true;

if (N.uid-first > base.size() || !N.flag) {

printf("抱歉您所寻找的账户并不存在,请重新输入:
");

flag = false;

}
if (!N.flag) {

printf("抱歉您所寻找的账户已注销,请重新输入: ");
flag = false;
}

return flag;
}

3.初始化函数
void init(account &N){

//设置卡号

int id = int(base.size());

N.uid = first+id; //六位卡号

printf("您的卡号为: %d ",N.uid);

//设置密码

printf("请设置您的密码: ");

int psw = 0;

scanf("%d",&psw);

N.password = psw; //账户密码

//初始化余额

N.balance = 0; //账户余额

//将账户标记为存在,没有被注销

N.flag = true;
}

4.开户
void create(){

account N;

init(N);

base.push_back(N);
}

5.注销
void cancel(){

printf("请输入您需要删除的账号卡号: ");

int id = 0;

scanf("%d",&id);

while (check(base[id-first]) == false) {

scanf("%d",&id);

}

printf("请输入该 %d 账号的密码: ",id);

int psw = 0;

scanf("%d",&psw);

while (psw != base[id-first].password) {

printf("抱歉,您输入的密码并不正确,请重新输入:
");

scanf("%d",&psw);

}

printf("您是否确认注销该账户? 输入1为确认注销,输入0为不注销 ");

int choice = 0;

cin>>choice;

if (choice == 1) {

base[id-first].flag = false;   //flag标记为账户不存在

} else {

printf("您已取消本次注销行为
");

}
}

6.余额查询
void enquire(){

printf("请输入您的账户卡号: ");

int id = 0;

scanf("%d",&id);

while (check(base[id-first]) == false) {

scanf("%d",&id);

}

if (base[id-first].balance == 0) {

printf("很抱歉,您当前并未有任何存款
");

} else {

printf("您的余额为: %f ¥
",base[id-first].balance);

}
}

7.存款
void deposit(){

printf("请输入您的账户卡号: ");

int id = 0;

scanf("%d",&id);

while (check(base[id-first]) == false) {

scanf("%d",&id);

}

float input = 0;

printf("请输入您要存入的金额数目 ");

scanf("%f",&input);

base[id-first].balance += input;

printf("您的余额为: %f ¥ ",base[id-first].balance);
}

8.取款
void withdraw(){

printf("请输入您的账户卡号: ");

int id = 0;

scanf("%d",&id);

while (check(base[id-first]) == false) {

scanf("%d",&id);

}

float input = 0;

printf("请输入您要取出的金额数目 ");

scanf("%f",&input);

if (base[id-first].balance < input) {

printf("抱歉,您的存款不足,不能取出
");

} else {

base[id-first].balance -= input;

printf("您的余额为: %f ¥
",base[id-first].balance);

}
}

9.转账
void transfer(){

printf("请输入您的账户卡号: ");

int oid = 0;

scanf("%d",&oid);

while (check(base[oid-first]) == false) {

scanf("%d",&oid);

}

printf("请输入您所要转入的账户卡号: ");

int iid = 0;

scanf("%d",&iid);

while (check(base[oid-first]) == false) {

scanf("%d",&oid);

}

float input = 0;

printf("请输入您要转出的金额数目 ");

scanf("%f",&input);

if (base[oid-first].balance < input) {

printf("抱歉,您的存款不足,不能转出
");

} else {

base[oid-first].balance -= input;

base[iid-first].balance += input;

printf("您的余额为: %f ¥
",base[oid-first].balance);

printf("对方余额为: %f ¥
",base[iid-first].balance);

}
}

10.菜单
void menu(){

int end = 0; //是否结束,0记为不结束

do {

printf("请选择您需要进行的操作:
1.开户	2.销户
3.查询当前余额
4.存款	5.取款
6.转账	0.退出
");

int choose = 0;

scanf("%d",&choose);

switch (choose) {

    case 0:

        printf("Bye~
");

        exit(0);

    case 1:

        create();

        break;

    case 2:

        cancel();

        break;

    case 3:

        enquire();

        break;

    case 4:

        deposit();

        break;

    case 5:

        withdraw();

        break;

    case 6:

        transfer();

        break;

        

    default:

        break;

}

printf("请问您是否需要继续进行其他操作?输入1继续进行其他操作,输入0则退出
");

scanf("%d",&end);

} while (end);
}

三、运行结果

四、

psp 任务内容 计划完成的时间(min) 实际完成时间(min)
Planning 计划 30 30
Estimate 估计这个任务需要多少时间 50 60
Development 开发 20 20
Design 设计 15 15
Test 测试 6 6
Postmortem & Process Improvement Plan 事后总结 5 5
原文地址:https://www.cnblogs.com/haodeyou/p/14003565.html