在前面我们完成了用户端和管理员端的基础代码实现,这一节我们要实现整合在一起的功能实现
我们在整合代码时,一般将函数的实现和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函数和销毁函数即可