ATM提款机及其可视化处理(四)

在前面我们完成了用户端和管理员端的基础代码实现,这一节我们要实现整合在一起的功能实现

我们在整合代码时,一般将函数的实现和mian函数放在两个不同的.cpp文件中,这样只需要在函数中引用头文件和定义即可

首先我们就要引入提前定义的头文件

并且定义好要使用的变量

在start函数的参数中我们也可以看见要体现出传入指针从而达到通过形式参数的改变而引起实际参数的改变

 

这里的return可以替换成exit(0)更佳

其实函数体的主体实现还是依赖的

switch case方式进行选择然后实现

这里的for循环结构替换成whlie(1)更佳

这里使用for是为了方便调试

 

在引入管理员头文件后

就可以正常使用其中定义实现的函数

 

这里有一个密码输入三次锁卡操作

 

 

 

这里需要注意的是,用户的很多功能是要登陆之后才能实现的,所以我们需要将功能写在登陆成功之下

 

 

 

完整源码

#define _CRT_SECURE_NO_WARNINGS
#include "Bank1.h"
#include <stdio.h>
#include"Manger.h"

void start(PList list, MPlist Mlist) {
	int point, flag, key;
	int choice, id,password,  money;
	char name[10],  idcard[20],  phone[12];

	printf("请选择身份:1.用户 2.管理员 ");
	scanf("%d", &point);
	if (point ==2) {
		for (int i = 0; i < 4; i++) {
			printf("请选择:  1. 注册 2. 登录  3.退出");
			scanf("%d", &choice);
			if (choice == 3)
			{
				return;
			}
			switch (choice) {
			default:
				printf("输出错误请重试\n");

				break;
			case 1:
				printf("请输入账号、密码、姓名、电话、身份证:\n");
				scanf("%d%d%s%s%s", &id, &password, name, phone, idcard);
				Muser user;
				init_Muser(&user, name, idcard, phone);
				register_Manger(Mlist, id, password, &user);
				break;
			case 2:printf("请输入账号,密码:");
				scanf("%d%d", &id, &password);
				key = login_Manger(Mlist, id, password);
				while (Mlist->arr->count < 3) {
					if (key != -1) {
						printf("请选择:3.激活  4.注销\n");
						scanf("%d", &choice);
						switch (choice) {
						case 3:printf("请输入身份证号\n");
							scanf("%s", &idcard);
							active_Manger(Mlist, idcard);
							break;
						case 4:destory_Manger(Mlist);
							break;
						}
					}
					else{
						key = login_Manger(Mlist, id, password);
				}
					break;




				}
			}
		}
		}
	if (point == 1) {
		for (int i = 0; i < 6; i++) {
			printf("请选择:  1. 注册 2. 登录 3. 挂失  4.激活  5.注销  6.退出");
			scanf("%d", &choice);

			if (choice == 6)
			{
				return;
			}

			switch (choice) {
			default:
				printf("输出错误请重试\n");

				break;
			case 1:
				printf("请输入账号、密码、姓名、电话、身份证、初始金额:\n");
				scanf("%d%d%s%s%s%d", &id, &password, name, phone, idcard, &money);

				User user;
				init_user(&user, name, phone, idcard);
				BankCard card;
				init_card(&card, id, password, money, &user);
				register_card(list, id, password, money, &user);
				break;
			case 2:
				printf("请输入账号,密码:");
				scanf("%d%d", &id, &password);
				flag = login_card(list, id, password);
				while (list->cards_array->count < 3) {
					if (flag != -1) {

						printf("请选择:1.存款 2.取款 3.转账 4. 查看流水 5.查看开卡时间 6.查余额 7.退出");
						scanf("%d", &choice);
						if (choice == 7)
						{
							break;
						}
						switch (choice)
						{

						default:
							printf("输出错误请重试\n");

							break;
						case 1:
							printf("请输入存钱金额:\n");
							scanf("%d", &money);
							savemoney(&card, money);
							break;
						case 2:
							printf("请输入取款金额:\n");
							scanf("%d", &money);
							withdrawmoney(&card, money);
							break;
						case 3:
							printf("请输入转账的账号和转账金额:\n");
							scanf("%d%d", &id, &money);
							transfer(list, &card, id, money);
							break;
						case 4:
							getwatermessage(&card);
							break;
						case 5:
							get_create_card_date(&card);
							break;
						case 6:
							getmoney(&card);
							break;
						}
					}
					else {
						flag=login_card(list, id, password);
					}
				}
				break;


			case 3:printf("请输入身份证号:\n");
				scanf("%s", idcard);
				lost(list, idcard);
				break;
			case 4:printf("请输入身份证号:\n");
				scanf("%s", idcard);
				active(list, idcard);
				break;
			case 5:
				printf("请输入账号:\n");
				int index = SearchCard(list, id);
				destory_card_records(&card);
				destory_card(list, index);
				break;
			}

		}
	}
	}

  

#include "Bank1.h"
#include <stdio.h>
#include"Manger.h"
void start(PList list,MPlist Mlist);

int main() {
	SqList_BankCards cards;
	Mlist Mcard;
	init_sqlist_cards(&cards);
	init_Manger_list(&Mcard);
	start(&cards,&Mcard);
	destory(&cards);
	destory_Manger(&Mcard);
	return 0;
}

在主函数中我们只需要写入start函数和销毁函数即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值