银行信用卡程序模拟C语言源码
- 格式:doc
- 大小:74.00 KB
- 文档页数:10
银行业务c语言银行业务涉及多种操作,如存款、取款、转账、查询余额等。
使用C 语言来模拟银行业务是一个很好的练习,可以帮助你了解基本的数据结构、循环、条件语句以及函数等编程概念。
以下是一个简单的C语言程序,用于模拟基本的银行业务:c复制代码#include <stdio.h>// 定义账户结构体typedef struct {int account_number;float balance;} BankAccount;// 存款函数void deposit(BankAccount *account, float amount) {account->balance += amount;printf("Deposit successful. Your new balance is %.2f\n", account->balance);}// 取款函数void withdraw(BankAccount *account, float amount) {if (account->balance >= amount) {account->balance -= amount;printf("Withdrawal successful. Your new balance is %.2f\n", account->balance);} else {printf("Insufficient balance. Withdrawal failed.\n");}}// 显示账户信息void displayAccountInfo(BankAccount *account) {printf("Account number: %d\n", account->account_number);printf("Balance: %.2f\n", account->balance);}int main() {BankAccount myAccount = {12345, 1000.00}; // 初始化账户// 显示初始账户信息printf("Initial account information:\n");displayAccountInfo(&myAccount);// 存款deposit(&myAccount, 500.00);// 取款withdraw(&myAccount, 200.00);// 再次显示账户信息printf("\nUpdated account information:\n");displayAccountInfo(&myAccount);return 0;}这个程序定义了一个名为BankAccount的结构体,该结构体包含账户号和余额两个字段。
银⾏业务模拟程序实验⼆银⾏业务模拟程序⼀、实验⽬的⽤Turbo C 语⾔设计实现⼀个⽤事件驱动的银⾏业务离散模型, 模拟每⼀个客户到达银⾏、排⼊⼈最少的业务窗⼝队列、排⾄窗⼝并处理完业务后离开的整个过程,统计客户在银⾏的平均逗留时间⼆、实验环境1、Windows7操作系统;2、VisualC++.三、实验内容假设某银⾏有4个窗⼝对外接待客户,从早上银⾏开门起不断有客户进⼊银⾏。
由于每个窗⼝在某时刻只能接待⼀个客户,因此在客户⼈数众多的时需在每个窗⼝前顺次排队,对于刚进⼊银⾏的客户,如果某个窗⼝的业务员正空闲,则可上前办理业务;反之,若4个窗⼝均有客户所占,他便会排在⼈数最少的队伍后⾯。
现在需要编制⼀个程序⼀模拟银⾏的这种业务活动并计算⼀天中客户在银⾏的平均逗留时间。
假设每个客户办理业务的时间不超过30分钟;两个相邻到达银⾏的客户的时间间隔不超过5分钟。
模拟程序从第⼀个客户到达时间为“0”开始起运⾏。
四、概要设计1、存储结构的类型定义:此模拟程序需要两种数据类型:有序链表和队列。
它们的数据元素类型定义分别如下:(1)typedef struct{int OccurTime; //事件发⽣时刻int NType; //事件类型,Qu表⽰到达事件,0-Qu-1表⽰Qu个窗⼝的离开事件}Event,ElemType;//事件类型,有序链表LinkList的数据元类型typedef LinkList EventList; // 事件链表类型,定义为有序链表(2)typedef struct{int ArrivalTime;//到达时刻int Duration;//办理业务所需时间}QElemType; //队列的数据元素类型2、单链表⽰意图:如课本P69图所⽰。
3、项⽬组成图:4、exp_yh.cpp的程序⽂件包含的函数原型及功能int cmp(Event a,Event b){ }:依事件a的发⽣时刻<、=或>事件b的发⽣时刻分别返回-1、0或1 ;Status InitList(LinkList &L):构造⼀个空的线性链表;Status InitQueue(LinkQueue &Q):构造⼀个空的队列;Status OrderInsert():已知L为有序线性链表,将元素e按⾮降序插⼊在L中;void OpenForDay():初始化操作;void Random():产⽣两个随机数,分别表⽰客户办理时间和两个相邻达到银⾏的客户的时间间隔;int QueueLength():求队列的长度;int Minimum() :返回最短队列的序号Status EnQueue():插⼊元素e为Q的新的队尾元素;Status DeQueue():若队列不空,删除Q的对头元素,⽤e返回其值,并返回OK,否则返回ERRORV oid CustomerArrived():处理客户到达事件;Status GetHead():若队列不空,⽤e返回Q的对头元素,并返回OK,否则返回ERROR;Position GetHead():返回线性链表L中头结点的位置;Status QueueEmpty():若Q为空队列,则返回TRUE,否则返回FALSE;void CustomerDeparture():处理客户离开事件Status ListEmpty():若线性链表L为空表,则返回TRUE,否则返回FALSE;Status DelFirst():h指向L的⼀个结点,把h当做头结点,删除链表中的第⼀个节点并以q返回,若链表为空,q=NULL,并返回FALSE;ElemType GetCurElem():已知p指向线性链表中的⼀个结点,返回p所指节点中数据元素的值;void Bank_Simulation():打印出窗⼝,平均逗留时间main():主函数5、项⽬的模块结构及函数调⽤关系:本程序包含5个模块:(1)主程序模块:void main(){ 接受命令;处理命令;}(2)事件链表表单元模块——实现链表的抽象数据类型;(3)队列单元模块——实现队列的抽象数据类型;(4)事件结点结构单元模块——定义链表的结点结构;(5)队列结点结构单元模块——定义队列的结点结构;各模块之间的调⽤关系如下:主程序模块—〉链表、队列表单元模块—>队列、链表结点结构单元模块。
题目:银行业务模拟(难度系数:1.3)[运行环境]VS[问题描述]客户业务分为两种。
第一种是申请从银行得到一笔资金,即取款或借款。
第二种是向银行投入一笔资金,即存款或还款。
银行有两个服务窗口,相应地有两个队列。
客户到达银行后先排第一个队。
处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第二个队等候,直至满足时才离开银行;否则业务处理完后立刻离开银行。
每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。
注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。
任何时刻都只开一个窗口。
假设检查不需要时间。
营业时间结束时所有客户立即离开银行。
写一个上述银行业务的事件驱动模拟系统,通过模拟方法求出客户在银行内逗留的平均时间。
[基本要求]利用动态存储结构实现模拟,即利用C语言的动态分配函数malloc和free。
[选做内容]自己实现动态数据类型。
(已作)1. 需求分析计算来银行办理业务的用户平均逗留时间:⑴ 在运行终端控制台进行信息输入:输入信息包括(信息都为整数):1.银行拥有的款额取值范围:[0, 正无穷]2.银行营业时间取值范围:[0, 1440]3.用户最大交易金额取值范围:(0, 银行拥有款额]4.俩个用户到达时间的最大值取值范围:(0, 银行营业时间]5.用户最大交易时间取值范围:(0, 银行营业时间]⑵ 在运行终端控制台进行信息输出:1.每个到达用户的到达时间,编号,要处理的金额,处理时间2.事件表3.总用户数4.总逗留时间5.平均逗留时间⑶ 程序所能达到的功能;1.输出每个用户的到达时间,编号,要处理的金额,处理时间2.银行运营过程的全部事件(包括到达事件和离开事件)3.计算银行运营过程的用户数,总逗留时间,平均逗留时间⑷ 三组测试数据:1.正常情况:1.银行拥有的款额:100002.银行营业时间: 6003.用户最大交易金额:20004.俩个用户到达时间的最大值:205.用户最大交易时间:15应输出:25.482.极端的情况:两个到达事件之间的间隔时间很短,而客户的交易时间很长1.银行拥有的款额:100002.银行营业时间: 6003.用户最大交易金额:20004.俩个用户到达时间的最大值:55.用户最大交易时间:100应输出:20.03.极端的情况:两个到达事件之间的间隔时间很长,而客户的交易时间很短1.银行拥有的款额:100002.银行营业时间: 6003.用户最大交易金额:20004.俩个用户到达时间的最大值:1005.用户最大交易时间:5应输出:88.38源代码如下:#include <stdio.h>#include <stdlib.h>#include <time.h>#include<Windows.h>typedef int Status;#define OK 1#define ERROR -1/*#define MAXTIME 600 //定义银行运作时间(单位:分钟假设一分钟等于一秒)#define MAX_TIMEJIANGE 5 //定义最大时间间隔#define MAX_TIMEJIAOYI 100 //定义最大操作时间 */typedef struct kehu_event{// 定义客户信息int handel_time; // 事件处理时间int money; //需要处理的钱数目(负数表示取钱,正数表示存钱)int No; //客户的序号}ElemType;typedef struct event{/*定义事件类型*/int index; /*标志变量,1代表到达事件,其余代表离开事件*/ int time; /*事件发生时间*/int No; /*触发该事件的客户序号*/}event;typedef struct { /*定义链表节点*/event data;struct LNode *next;}LNode, *Link;typedef struct { /*定义链表*/Link head, tail;int len;}*LinkList;LinkList InitLink() { /*初始化链表操作*/LinkList L = (LinkList*)malloc(sizeof(LNode));if (L == NULL) return NULL;L->head = NULL;L->tail = NULL;L->len = 0;printf("链表初始化成功!!");return L;};Status ClearLink(LinkList L) { /*链表的清空操作*/if (L == NULL) return ERROR;Link p = L->head;Link k = L->head->next;while (p != L->tail){free(p);p = k;if(k!=L->tail) k = k->next;}free(p);L->head = NULL;L->tail = NULL;L->len = 0;printf("链表已经清空!!");return OK;}Status DestoryLink(LinkList L) { /*链表的销毁操作*/if (L == NULL) return ERROR;ClearLink(L);free(L);printf("链表销毁完毕!!");return OK;}Status InsertLink(LinkList L, event e) { /*链表的尾部插入操作*/if (L == NULL) return ERROR;Link p = (Link)malloc(sizeof(LNode));if (p == NULL) return ERROR;p->data = e;p->next = NULL;if (L->head == NULL) {L->head = p;L->tail = p;L->len = 1;}else{L->tail->next = p;L->tail = p;L->len++;}//printf("节点插入成功!!");return OK;}Status LinkTraverse(LinkList L) { /*链表的遍历操作*/ if (L == NULL) return ERROR;Link p = L->head;printf("\n遍历结果 :\n");printf(" 客户序号:事件触发时间:事件类型: ");printf("\n------------------------------------------------------------");while (p != NULL) {printf("\n %d %d", p->data.No, p->data. time);if (p->data.index == 1) {printf(" 到达");printf("\n--------------------------------------------------------------");}else {printf(" 离开");printf("\n-------------------------------------------------------------");}p = p->next;}return OK;}typedef struct LQNode { /*定义队列的节点*/ ElemType data;struct LQNode *next;}LQNode, *QueuePtr;typedef struct { /*定义队列*/QueuePtr front;QueuePtr rear;int len;}LQueue;LQueue* InitQueue() { /*构造一个空队列*/LQueue *Q = (LQueue *)malloc(sizeof(LQueue));if (Q == NULL) return ERROR;Q->front = NULL;Q->rear = NULL;Q->len = 0;return Q;}Status EnQueue(LQueue *Q, ElemType e) { //在队列的队尾插入eLQNode *p;p = (LQNode*)malloc(sizeof(LQNode));if (p == NULL) return ERROR;p->data = e;p->next = NULL;if ( NULL == Q->front) {Q->front = p;Q->rear = p;Q->len = 1;}else{Q->rear->next = p;Q->rear = p;Q->len++;}return OK;}Status DeQueue(LQueue *Q, ElemType *e) {//是队列Q的队头出队并且返回到eLQNode *p;if (NULL == Q->front) return ERROR;p = Q->front;*e = p->data;Q->front = p->next;if (Q->rear == p) Q->rear = NULL;free(p);Q->len--;return OK;}Status DestoryQueue(LQueue *Q) {/*队列的销毁操作*/if (Q == NULL) return ERROR;QueuePtr p=NULL, q=NULL;p = Q->front;while (p != Q->rear) {q = p->next;myfree(p);p = q;}free(Q->rear);return OK;}Status InsertQueue(LQueue *Q, LQueue *E) {/*将E队列插入到Q队列的前面,并将Q队列作为新的队列释放E*/if ( E == NULL || E->front == NULL) return ERROR;if (Q == NULL || Q->front == NULL || Q->rear == NULL) {Q->front = E->front;Q->rear = E->rear;}else{E->rear->next = Q->front;Q->front = E->front;}return OK;}/*-------------------------------------定义需要使用的全局变量--------------------------------------*/int total ; /*一天营业开始时银行拥有的款额为10000(元),并且默认取钱只能*///int total_time = 600; /*营业时间为600 (分钟)*/int max_money;LQueue *handel_queue = NULL; /*定义第一个队列用于处理业务*/ LQueue *wait_queue = NULL; /* 定义第二个队列用于存储等候的客户*/LinkList event_link = NULL; /*定义一个事件表*/int nextTime = 0; /*定义一个变量作为下一个客户的随机到达时间*/int nexthandelTime = 0; /*定义一个变量作为正在排队的下一个客户处理时间*/int kehu_NO = 1; /*客户的服务序号* /ElemType *leave_kehu = NULL; /*定义一个办理完业务要离开的客户变量,用于记录*/ElemType *search_kehu = NULL; /*定义一个用来存储待处理业务的客户变量*//*-------------------------------------------------------------------------------------------------*/ElemType* mymalloc( int max_timejiaoyi) {/*动态申请客户节点*/ElemType *e;e = (ElemType*)malloc(sizeof(ElemType));if (e == NULL) return ;e->handel_time = (rand() % max_timejiaoyi) + 1;e->money = (rand() % (2 * max_money)) - max_money;e->No = kehu_NO;kehu_NO++;return e;}Status myfree(ElemType *e) {/*动态释放客户节点*/if (e == NULL) return ERROR;free(e);return OK;}/*Status suiji_kehu(ElemType *e,int max_timejiaoyi) {/*随机生成客户信息mymalloc(e, max_timejiaoyi);return OK;}*/ElemType* Arrial_event(int i, int max_timejiange, int max_timejiaoyi) { /*用来处理新客户到达事件*/if (nextTime == i) {printf("当前时间是:%d\n", i);nextTime = nextTime + (rand() % max_timejiange) + 1;//随机生成下一名客户到达时间,这里可以设置客户到达时间间隔的大小ElemType *p=NULL;p = mymalloc(max_timejiaoyi);//到达前面设置的到达时间时,随机生成刚到达用户的信息,包括客户编号,业务处理时间,业务操作钱的数目event *e = (event*)malloc(sizeof(event)); //生成该到达事件的信息节点e->index = 1;e->No = p->No;e->time = i;InsertLink(event_link, *e);//将该到达事件的信息节点加入事件链表if (nexthandelTime < i) {//如果当前时间已经超过了下一个用户操作时间,则将当前时间和该到达用户的时间相加作为下一个用户操作时间if (-(p->money) <= total) {nexthandelTime = p->handel_time + i;total = total + p->money;EnQueue(handel_queue, *p);}else {EnQueue(wait_queue, *p);}}else {if (nexthandelTime == 0) {//第一个进入操作的用户情况if (-(p->money) <= total) {nexthandelTime = p->handel_time + i;total = total + p->money;EnQueue(handel_queue, *p);}else {EnQueue(wait_queue, *p);}}else EnQueue(handel_qu eue, *p);}if (nexthandelTime == 0 ) {//第一个进入操作的用户情况if (-(p->money) <= total) {nexthandelTime = p->handel_time + i;total = total + p->money;EnQueue(handel_queue, *p);}else {EnQueue(wait_queue, *p);}}printf("\n 客户编号:%d 客户操作需要时间:%d 客户需要处理的钱:%d 银行余额:%d\n\n\n", p->No, p->handel_time, p->money, total);return p;}}Status handel_event(int i) {/*处理队列事件*/if (nexthandelTime == i) { /*到达下一个客户操作时间时*/DeQueue(handel_queue, leave_kehu); //将处理完的客户出队,并将客户信息存储在leave_kehu变量中int last_money = total - leave_kehu->money; //获取刚离开的客户操作前银行的钱数目Leave_event(leave_kehu, i);//将离开事件的用户信息存入事件列表中if (((leave_kehu->money) > 0) && wait_queue->front != NULL) {/*如果刚刚离开的用户是存钱或者还钱,并且等待队列不为空*/int index = 0;//设置标记变量,用以标记等待队列已经查看的客户数目LQueue *e = InitQueue();//创造出一个可以被满足需求的等待用户组成的队列int linshi_total = total;//设置一个临时金额存储空间while (linshi_total > last_money && wait_queue->front ! = NULL) { //如果当前银行拥有的款额比之前多,进入循环DeQueue(wait_queue, search_kehu); //将等待队列的队头用户出队if (-(search_kehu->money) <= linshi_total) {/*如果等待用户的需求可以得到满足*/EnQueue(e, *search_kehu);//将可满足用户加入等待用户队列linshi_total = linshi_total + search_keh u->money;}else {EnQueue(wait_queue, *search_kehu);}index++;if (index >= wait_queue->len) break;}InsertQueue(handel_queue, e); //将可以满足要求的等待队列并入前面//nexthandelTime = nexthandelTime + handel_queue->front ->data.handel_time; //下一个处理用户时间更新if (handel_queue->front != NULL) {/*如果操作队列不为空*/while(handel_queue->front != NULL && -(handel_ queue->front->data.money) > total)/*如果无法满足要求*/{DeQueue(handel_queue, leave_kehu);EnQueue(wait_queue, *leave_kehu);}if (handel_queue->front != NULL) {nexthandelTime = handel_queue->front->da ta.handel_time + nexthandelTime; //下一位操作客户时间更新total = total + handel_queue->front->dat a.money; //银行金钱总额更新}}}else {/*刚刚离开的用户是取钱或者借钱,或者等待队列为空*/if (handel_queue->front != NULL) {while (handel_queue->front != NULL && -(handel _queue->front->data.money) > total ){/*无法满足的用户进入等待队列*/DeQueue(handel_queue, leave_kehu);EnQueue(wait_queue, *leave_kehu);}if (handel_queue->front != NULL) {/*处理队列不为空*/nexthandelTime = handel_queue->front->da ta.handel_time + nexthandelTime;total = total + handel_queue->front->dat a.money;}}}}}Status Leave_event(ElemType *e ,int i) {/*用来处理客户离开事件*/event *p = (event*)malloc(sizeof(event));p->index = 0;p->No = e->No;p->time = i;InsertLink(event_link, *p);return OK;}double average_StayTime(LinkList e,double final) {/*通过事件列表来计算用户平均逗留时间*/double sum=0, a, b;int shumu=0;LNode *p = e->head;for (int i = 1; i <= e->len; i++) {while(p!=NULL) {if (p->data.No == i) {if (p->data.index == 1) {a = p->data.time;shumu = shumu + 1;}if (p->data.index == 0) b = p->data.time;}p = p->next;}p = e->head;if (b == -1.0) b = final;sum = sum + b - a;b = -1.0;}printf("全部用户数: %d \n总共消耗时间: %f \n", shumu, sum);printf("客户平均逗留时间: %f 分", sum / shumu);return sum / shumu;}int main(void) {leave_kehu = (ElemType*)malloc(sizeof(ElemType));search_kehu = (ElemType*)malloc(sizeof(ElemType));handel_queue = InitQueue();wait_queue = InitQueue();event_link = InitLink();srand((unsigned int)time(NULL));int MAXTIME, MAX_TIMEJIANGE, MAX_TIMEJIAOYI;printf("请输入银行的运营时间(单位:分钟):");scanf_s("%d", &MAXTIME);printf("请输入银行的运营金额(单位:元):");scanf_s("%d", &total);printf("请输入用户最大交易金额(单位:元):");scanf_s("%d", &max_money);printf("请输入俩个到达事件的最大时间间隔:(单位:分钟):");scanf_s("%d", &MAX_TIMEJIANGE);printf("请输入用户最大交易时间:(单位:分钟):");scanf_s("%d", &MAX_TIMEJIAOYI);//ElemType *newKehu = (ElemType*)malloc(sizeof(ElemType));for (int i = 0; i < MAXTIME; i++){Arrial_event(i, MAX_TIMEJIANGE, MAX_TIMEJIAOYI);handel_event(i);Sleep(50);}LinkTraverse(event_link);printf("\n");average_StayTime(event_link, MAXTIME-1);DestoryQueue(handel_queue);DestoryQueue(wait_queue);system("pause");return 1;}。
#include<iostream>#include<fstream>#include<iomanip>#include<string.h>using namespace std;#include<windows.h>#define MAX 500struct record{char name[20];char cardno[20];int card;char money[20];};//用户类,包含用户的姓名,卡号,密码,账户余额class account{public:char name[50];int card;int password;float balance;account() { card = 0; password = 123456; balance = 0; };friend istream& operator >>(istream& in, account &temple);friend ostream& operator <<(ostream& out, account &temple);};//重载输入运算符istream& operator >>(istream& in, account &temple){cout <<"姓名卡号密码开户金额"<< endl;in>> >>temple.card >>temple.password >>temple.balance;cout << endl;return in;}//重载输出运算符ostream& operator <<(ostream& out, account &temple){out<< << setw(8) <<temple.card << setw(10) <<temple.password << setw(8) << temple.balance << endl;return out;}//显示所有账户的信息void display(account user[], int total){int i, j;account templeuser;if (total == 0)cout <<"无账户信息"<< endl << endl;}else{cout <<"所有用户信息:"<< endl;for (i = 0; i<total - 1; i++){for (j = 0; j<total - 1 - i; j++){if (user[j].card>user[j + 1].card){templeuser =user[j];user[j] =user[j + 1];user[j + 1] = templeuser;}}}for (i = 0; i<total; i++){cout <<"姓名:"<<user[i].name <<' '<<"卡号:"<<user[i].card <<' '<<"密码:"<<user[i].password <<' '<<"余额:"<<user[i].balance <<"元"<< endl;}}}//查找卡号int searchcard(account user[], int total, int templecard){int i = 0;while ((i<total) && (user[i].card != templecard)){i++;}if (i>total - 1){return -1;}else{return i;}}int main(){system("color f3");record c[MAX];int i, total = 0, templecard, k, m;float money, templemoney;account temple, user[MAX];int select = 0;{system("cls");cout <<"* current account management system *"<< endl;cout <<"*******************************"<< endl;cout <<"*1-add account"<< endl;cout <<"*2-close acount"<< endl;cout <<"*3-deposit"<< endl;cout <<"*4-withdraw"<< endl;cout <<"*5-show"<< endl;cout <<"*6-query account balance"<< endl;cout <<"*7-query transaction record"<< endl;cout <<"*0-exit"<< endl;cout <<"********************************"<< endl;cout <<"swlect(请根据您选择的功能输入对应的序号):";cin >> select;switch (select){case 1:cout << endl <<"add account:"<< endl;cout <<"Please your information:"<< endl;cin >> temple;i = 0;while ((i < total) && (user[i].card != temple.card)){i++;}if (i > total - 1){user[total] = temple;system("cls");cout <<"Add account successfully!"<<endl <<"your information:"<<endl;cout <<"name card passcord account balance"<< endl;cout << user[total];total++;system("pause");system("cls");{ofstream out("user.txt", ios::app);//打开输出文件流if (out)//如果打开成功{out <<"name:"<< <<' '<<"card:"<< temple.card << ' '<<"passcord:"<< temple.password <<' '<<"account balance:"<< temple.balance <<"$" << endl;//向文件输入信息out.close();//关闭}}{ofstream out("record.txt", ios::app);if (out){out <<"name:"<< <<' '<<"card:"<<' '<<temple.card <<' '<<"deposit"<< temple.balance <<"元"<< endl;out.close();}}}else{system("cls");cout <<"account exist,fail!!"<< endl;system("pause");}break;case 2:cout << endl <<"close account:"<< endl;cout <<"put your card:";cin >> templecard;k = searchcard(user, total, templecard);if (k == -1){system("cls");cout <<"error,account does exist"<< endl;system("pause");}else{system("cls");cout <<"close account successfully!and return"<< user[k].balance <<"$." << endl;system("pause");{ofstream out("record.txt", ios::app);if (out){out <<"name:"<<user[k].name <<' '<<"card:"<<' '<<user[k].card <<' '<<"close account,and return"<< user[k].balance <<"$."<< endl;out.close();}}for (i = k + 1; i < total; i++){user[i - 1] = user[i];}total--;{ofstream out("user.txt");if (out){for (i = 0; i < total; i++){out <<"name:"<<user[i].name <<' '<<"card:"<<user[i].card <<' '<<"password:"<< user[i].password <<' '<<"account balance:"<< user[i].balance <<"$"<< endl;out.close();}}}cout << endl;break;case 3:cout << endl <<"deposit:"<< endl;cout <<"put your card:";cin >> templecard;k = searchcard(user, total, templecard);if (k == -1){system("cls");cout <<"error,account does exist"<< endl;system("pause");}else{cout <<"Please put the amount to be deposited:";cin >> money;user[k].balance = user[k].balance + money;system("cls");cout <<"You have deposited"<<money <<"$,The balance is"<<user[k].balance <<"$."<< endl;{ofstream out("record.txt", ios::app);if (out){out <<"name:"<<user[k].name <<' '<<"card:"<<' '<<user[k].card <<' '<<"deposit"<< money <<"$"<< endl;out.close();}}{ofstream out("user.txt");if (out){for (i = 0; i < total; i++){out <<"name:"<<user[i].name <<' '<<"card:"<<user[i].card <<' '<<"password:"<< user[i].password <<' '<<"account balance:"<< user[i].balance <<"$"<< endl;}out.close();}}system("pause");}break;case 4:cout << endl <<"withdraw:"<< endl;cout <<"put your card:";cin >> templecard;k = searchcard(user, total, templecard);{system("cls");cout <<"error,account does not exist"<< endl;system("pause");}else{cout <<"Please put the amount to be withdrew:";cin >> money;if (user[k].balance < money){cout <<"your account balance:"<< user[k].balance <<"$"<< endl;cout <<"do you continue to withdraw?(yes is 1,no is 0):";cin >> m;if (m == 0){cout << endl;break;}else{templemoney = user[k].balance;user[k].balance = 0;{ofstream out("record.txt", ios::app);if (out){out <<"name:"<< user[k].name <<' '<<"卡号:"<<' ' << user[k].card <<' '<<"取出"<< templemoney <<"元"<< endl;}out.close();}{ofstream out("user.txt");if (out){for (i = 0; i < total; i++){out <<"name:"<< user[i].name <<' '<<"card:"<< user[i].card <<' '<<"password:"<< user[i].password <<' '<<"account balance:"<< user[i].balance <<"$"<< endl;}out.close();}}system("cls");cout <<"withdraw successfully"<< templemoney <<"$,your account balance:"<< user[k].balance <<"$."<< endl;system("pause");}}else{user[k].balance = user[k].balance - money;{ofstream out("record.txt", ios::app);if (out){out <<"name:"<< user[k].name <<' '<<"card:"<<' '<< user[k].card <<' '<<"witndraw"<< money <<"$"<< endl;out.close();}}{ofstream out("user.txt");if (out){for (i = 0; i < total; i++){out <<"name:"<< user[i].name <<' '<<"card:"<< user[i].card <<' '<<"password:"<< user[i].password <<' '<<"account balance:"<< user[i].balance <<"$"<< endl;}out.close();}}system("cls");cout <<"您已成功取出"<< money <<"元,your account balance:"<<user[k].balance <<"$."<< endl;system("pause");}}break;case 5:system("cls");display(user, total);system("pause");break;case 6:cout << endl <<"query account balance:"<< endl;cout <<"put your card:";cin >> templecard;k = searchcard(user, total, templecard);if (k == -1){system("cls");cout <<"error,account does exist"<< endl;system("pause");}else{system("cls");cout <<"your account balance:"<< user[k].balance <<"$"<< endl;system("pause");}break;case 7:cout << endl <<"7-query transaction record:"<< endl;cout <<"put your card:";cin >> templecard;k = searchcard(user, total, templecard);if (k == -1){system("cls");cout <<"error,account does exist"<< endl;system("pause");}else{ifstream in("record.txt", ios::app);//打开输入文件流if (in)//如果打开成功{for (i = 0; i < MAX; i++){in >> c[i].name >> c[i].cardno >> c[i].card >> c[i].money;//从文件读取信息}system("cls");for (i = 0; i < MAX; i++){if (c[i].card == templecard){cout << c[i].name <<' '<<' '<< c[i].cardno << c[i].card << ' '<<' '<< c[i].money << endl;//显示}}in.close();//关闭system("pause");}}break;}} while (select != 0);system("cls");cout <<"欢迎使用本系统!!"<< endl;return 0;}。
c语言银行家算法在C语言中实现银行家算法,首先需要了解该算法的基本概念和原理。
银行家算法是一种避免死锁的资源分配算法,它模拟了银行贷款的过程。
当一个进程请求资源时,系统先检查分配后是否安全,如果是,则分配资源。
否则,进程必须等待,直到足够的资源可用。
以下是一个简单的银行家算法的C语言实现:```c#include <stdio.h>#define MaxProcs 5#define MaxResources 3int Allocation[MaxProcs][MaxResources] = {0};int Max[MaxProcs][MaxResources] = {0};int Allocation[MaxProcs][MaxResources] = {0};int Available[MaxResources] = {0};int Need[MaxProcs][MaxResources] = {0};int Work[MaxResources] = {0};int safeSeq[MaxProcs] = {0};int count = 0;void calcNeed() {for (int p = 0; p < MaxProcs; p++) {for (int r = 0; r < MaxResources; r++) {Need[p][r] = Max[p][r] - Allocation[p][r];}}}void checkSafe() {int finish[MaxProcs] = {0};int k, j;for (k = 0; k < MaxProcs; k++) {safeSeq[k] = -1;}while (count < MaxProcs) {for (k = 0; k < MaxProcs; k++) {if (finish[k] == 0) {for (j = 0; j < MaxResources; j++) {if (Need[k][j] > Work[j]) {break;}}if (j == MaxResources) {for (j = 0; j < MaxResources; j++) {Work[j] += Allocation[k][j];safeSeq[count++] = k;finish[k] = 1;}}}}}if (count == MaxProcs) {printf("系统是安全的\n");} else {printf("系统是不安全的\n");}}```。
#include<iostream>#include<fstream>#include<string>#include <time.h>using namespace std;const int aa=70,bb=150,cc=130,dd=50;//不同业务所需时间struct data//客户资料{int usetime;//客户在银行时间int bianhao;//客户编号int yewutime;//客户所办业务时间string yewu;//业务名int yewunum;//业务标号int chutime[3];//客户到达时间,chutime[0]是秒钟,chutime[1]是分钟,chutime[2]是时钟int motime[3];//客户离开时间int windownum;};class Bank{private:int windowsum[4][5]; //窗口数long sumtime; //所有办理完业务客户总共所用时间int suijitime; //最后两个客户间隔时间int stilltime[4]; //每个窗口还需等待时间int s,f,m; //分别是时、分、秒int wind[5]; //wind[0]是空闲窗口数量,wind[1/2/3/4]存放具体窗口名public:Bank(); //初始化data kehu[900]; //8小时内最多客户人数void timelocal(Bank &); //记录时间int windows(int,int); //为客户排队void calculatechu(int,Bank&);//记录客户到达时间void print(int,int ,Bank); //输出客户数据void averagetime(int,Bank); //计算平均时间void window_dail(); //输出窗口信息int fanhui(Bank &); //求随机时间void custerm_dail(int,int,Bank);//选择客户编号void choose(int,int,Bank); //选择查看内容void todaynum(int,int,Bank);//显示今日客户量void writetotext(int,Bank);//文件函数操作};Bank::Bank()//构造{s=8;//时间f=0;m=0;suijitime=0; //随机间隔时间sumtime=0; //所有客户在银行所用时间之和for(int i=0;i<4;i++){stilltime[i]=0; //每个窗口处理剩下业务还需要的时间for(int j=0;j<5;j++)windowsum[i][j]=0; //每个窗口处理客户数}for(int a=0;a<5;a++)wind[a]=0; //wind[0]是空闲窗口数量,wind[1/2/3/4]存放具体窗口名}int Bank::fanhui(Bank &wait){suijitime=rand()%60; //客人随机到达m=m+suijitime; //m即是当地时间while(m/60>=1) //完成时间格式{m=m-60;f++;}while(f/60>=1){f=f-60;s++;}return s;}void Bank::timelocal(Bank &wait) //记录银行时间{cout<<"您到达的时间是: ";if(s<10)cout<<"0"<<s<<":";//特定格式输出else cout<<s<<":";if(f<10)cout<<"0"<<f<<":";else cout<<f<<":";if(m<10)cout<<"0"<<m<<endl;else cout<<m<<endl;}void Bank::averagetime(int x,Bank wait)//计算所有客户的平均等待时间{long aver=0;//平均时间int fen=0,miao=0;//平均时间以分、秒表示int j;sumtime=0;for(j=0;j<x;j++){sumtime=sumtime+wait.kehu[j].usetime;//总共时间}aver=sumtime/(x);//计算fen=aver/60;miao=aver;cout<<"所有客户平均等待了 "<<fen<<"分"<<miao<<"秒!"<<endl<<endl;}//求空窗口数int Bank::windows(int x,int i)//x是办理业务的客户数,i是最后一位顾客的编号,wait 是主函数里定义的对象{int a,b=1,t=0;for(a=0;a<5;a++)//初始化窗口空闲信息wind[a]=0;for(a=0;a<4;a++){stilltime[a]=stilltime[a]-suijitime;//特定窗口处理还需的时间等于上次处理所需的时间减去随机等待时间if(stilltime[a]<=0) //如果时间为负,重新赋值{stilltime[a]=0;wind[0]++; //空余窗口数wind[b++]=a+1; //指出特定的空闲窗口}}t=wind[0];b=1;while(x<=i && t>0) //窗口不空{stilltime[wind[b]-1]=stilltime[wind[b]-1]+kehu[x].yewutime;//特定窗口处理完业务所需时间等于处理完上次业务所需时间加上此次业务时间kehu[x].motime[0]=m;//客户离开时的秒钟kehu[x].motime[1]=f;//客户离开时的分钟kehu[x].motime[2]=s;//客户离开时的时钟kehu[x].usetime=kehu[x].motime[0]-kehu[x].chutime[0]+(kehu[x].motime[1]-kehu[x]. chutime[1])*60+(kehu[x].motime[2]-kehu[x].chutime[2])*3600+kehu[x].yewutime;//客户在银行等待时间windowsum[wind[b]-1][0]++;//特定窗口处理的客户数windowsum[wind[b]-1][kehu[x].yewunum]++; //特定窗口处理的业务数b++;x++;t--;}return x;}void Bank::calculatechu(int i,Bank &Custerm)//客户的到达时间{int j;for(j=0;j<3;j++)//初始化客户到达时间Custerm.kehu[i].chutime[j]=0;Custerm.kehu[i].chutime[0]=m;//为客户到达时间赋值Custerm.kehu[i].chutime[1]=f;Custerm.kehu[i].chutime[2]=s;}void Bank::print(int x,int i,Bank Custerm)//输出客户信息{int sec,min,hour;sec=Custerm.kehu[x].motime[0]+Custerm.kehu[x].yewutime;min=Custerm.kehu[x].motime[1];hour=Custerm.kehu[x].motime[2];while(sec>=60){sec=sec-60;min++;}while(min>=60){min=min-60;hour++;}cout<<"以下是"<<Custerm.kehu[x].bianhao<<"号客户的详细资料:"<<endl;cout<<"选择的业务:"<<Custerm.kehu[x].yewu<<endl;cout<<"选择的业务所需的时间:"<<Custerm.kehu[x].yewutime<<endl;cout<<"客户到达的时间:";for(int k=2;k>0;k--){if(Custerm.kehu[x].chutime[k]<10)cout<<"0"<<Custerm.kehu[x].chutime[k]<<":"; else cout<<Custerm.kehu[x].chutime[k]<<":";}if(Custerm.kehu[x].chutime[0]<10)cout<<"0"<<Custerm.kehu[x].chutime[0];else cout<<Custerm.kehu[x].chutime[0];cout<<endl;cout<<"客户离开的时间:";if(hour<10)cout<<"0"<<hour<<":";//特定格式输出else cout<<hour<<":";if(min<10)cout<<"0"<<min<<":";else cout<<min<<":";if(sec<10)cout<<"0"<<sec<<endl;else cout<<sec<<endl;cout<<endl;}void Bank::window_dail()//输出窗口办理业务的情况{int i;while(1){cout<<"请选择窗口(1--4),以0结束:"<<endl;cin>>i;if(i==0){system("cls");break;}if(i>=5){system("cls");cout<<"没有这个窗口,请重新选择"<<endl;}else{system("cls");cout<<" "<<i<<"窗口共处理了 "<<windowsum[i-1][0]<<"人"<<endl;cout<<"其中"<<endl;cout<<" 存款业务 "<<windowsum[i-1][1]<<"人"<<endl;cout<<" 取款业务 "<<windowsum[i-1][2]<<"人"<<endl;cout<<" 挂失业务 "<<windowsum[i-1][3]<<"人"<<endl;cout<<" 还贷业务 "<<windowsum[i-1][4]<<"人"<<endl;}}}void Bank::todaynum(int x,int i,Bank Custerm)//输出客户量{cout<<endl<<" 今日共来了"<<i<<"位客户!"<<endl;cout<<" 其中,处理了"<<x<<"位客户,还有"<<i-x<<"位客户未得到处理!"<<endl<<endl;}void Bank::custerm_dail(int i,int x,Bank Custerm)//选择输出的客户编号{int h;while(1){cout<<"请输入您想知道的客户编号(以 0 结束):";cin>>h;if(h==0){cout<<endl;break;}else if(h>i){system("cls");cout<<"没有这个编号,请重新选择!"<<endl<<endl;}else if(h>x&&h<i){system("cls");cout<<"银行停业前未处理该客户!"<<endl<<endl;}else {system("cls");print(h-1,i,Custerm);}}}void Bank::choose(int x,int i,Bank Custerm)//选择输出详细信息{int n;int flag=0;while(1){cout<<" ★★★★★★★★★★★★★★★"<<endl;cout<<endl;cout<<" ◎ 0 退出◎"<<endl<<endl;cout<<" ◎ 1 查看今日银行客户数量◎"<<endl<<endl;cout<<" ◎ 2 第n号窗口的详细信息◎"<<endl<<endl;cout<<" ◎ 3 客户平均等待时间◎"<<endl<<endl;cout<<endl;cout<<" ★★★★★★★★★★★★★★★"<<endl<<endl; cout<<" 请选择: ";cin>>n;switch(n){case 0:{flag=1;break;}case1:system("cls");todaynum(x,i,Custerm);system("pause");system("cls");break;case 2:system("cls");window_dail();break;// case 3:system("cls");custerm_dail(i,x,Custerm) ;break;case3:system("cls");averagetime(x,Custerm);system("pause");system("cls");break; default:system("cls");cout<<"没有这个选项,请重新选择!"<<endl;break;}if(flag==1)break;}}void Bank::writetotext(int x,Bank Custerm)//文件操作{int sec,min,hour;int j=0;char ch;sec=Custerm.kehu[j].motime[0]+Custerm.kehu[j].yewutime;min=Custerm.kehu[j].motime[1];hour=Custerm.kehu[j].motime[2];while(sec>=60){sec=sec-60;min++;}while(min>=60){min=min-60;hour++;}cout<<"是否生成文件?(y/n): ";cin>>ch;if(ch=='y'){if(x==0)cout<<"数据记录为空!"<<endl;else{ofstream outfile("f1.txt",ios::out);if(!outfile){cout<<"打开失败"<<endl;exit(1);}while(j<x){outfile<<" * * * * * * * * * * "<<endl;outfile<<" 客户编号: "<<kehu[j].bianhao<<endl;;outfile<<" 办理业务: "<<kehu[j].yewu<<endl;outfile<<" 业务时间: "<<kehu[j].yewutime<<endl;outfile<<" 到达时间: ";if(kehu[j].chutime[2]<10)outfile<<"0"<<kehu[j].chutime[2]<<":";else outfile<<kehu[j].chutime[2]<<":";if(kehu[j].chutime[1]<10)outfile<<"0"<<kehu[j].chutime[1]<<":";else outfile<<kehu[j].chutime[1]<<":";if(kehu[j].chutime[0]<10)outfile<<"0"<<kehu[j].chutime[0]<<":"<<endl;else outfile<<kehu[j].chutime[0]<<":"<<endl;outfile<<" 离开时间: ";sec=Custerm.kehu[j].motime[0]+Custerm.kehu[j].yewutime;min=Custerm.kehu[j].motime[1];hour=Custerm.kehu[j].motime[2];while(sec>=60){sec=sec-60;min++;}while(min>=60){min=min-60;hour++;}if(hour<10)outfile<<"0"<<hour<<":";else outfile<<hour<<":";if(min<10)outfile<<"0"<<min<<":";else outfile<<min<<":";if(sec<10)outfile<<"0"<<sec<<":"<<endl;else outfile<<sec<<":"<<endl;j++;}outfile.close();cout<<"成功生成文件!"<<endl;}}}int main (){int ff;time_t t = time(0); //时间函数char tmp[64];int x=0,i=0; //i是最后到的客户编号int flag1=1,flag=1,flag2=1; //x排在最前面的客户编号,,flag1是第一次选项的关键标志,flag标志int s=8; //16:00之前营业,s是时钟,m是最后两位客户间隔时间 int ch;Bank Custerm;string a="存款",b="取款",c="挂失",d="还贷";//业务名while(flag1){cout<<endl;cout<<" ★★★★★★★★★★★★★★★"<<endl;cout<<endl;cout<<" …………0:退出……………… "<<endl;cout<<" …………1:随机结果………… "<<endl;cout<<" …………2:输入业务………… "<<endl;cout<<" …………3:从文件读入…………"<<endl;cout<<" ★★★★★★★★★★★★★★★"<<endl;cout<<" 请选择: ";scanf("%d",&ch);switch(ch){case 0:exit(0);case 1:{flag=0;//选择是否使用系统暂停函数flag1=0;//停止本项选择break;}case 2:{flag1=0;break;}/*case 3:{flag1=0;break;}*/default:{cout<<" 没有这个选项,请重新选择!"<<endl;system("pause");break;}}system("cls");}while(s){cout<<endl;cout<<endl;cout<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;cout<<endl;cout<<" ★★★★★★★★★★★★★★★★★★★★★★★"<<endl;cout<<" ★★★★★★欢迎来到小辉辉银行★★★★★★"<<endl;cout<<" ★★★★★★"<<endl;cout<<" ★★"<<endl;cout<<" ★…………1:存款……………★"<<endl;cout<<" ★…………2:取款……………★"<<endl;cout<<" ★…………3:挂失……………★"<<endl;cout<<" ★…………4:还贷……………★"<<endl;cout<<" ★…………0:退出……………★"<<endl;cout<<endl;cout<<"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;if(flag==1){cin>>ff;}else{ff=(rand()%4+1);//随机选择4种业务}switch(ff){case 0:system("cls");break;{cout<<endl;cout<<"* * * * * * * * * * * * * * * "<<endl;strftime(tmp, sizeof(tmp), "%Y/%m/%d %A %z",localtime(&t) );//显示当地时间的函数puts(tmp);s=Custerm.fanhui(Custerm);if(s>=16){flag2=0;break;}Custerm.kehu[i].bianhao=i+1;//赋值编号Custerm.kehu[i].yewu=a;//赋值业务名Custerm.kehu[i].yewunum=1;//赋值业务编号Custerm.kehu[i].yewutime=aa;//赋值业务所用时间Custerm.timelocal(Custerm);//16:00之前营业,s是时钟Custerm.calculatechu(i,Custerm);//计算到达时间x=Custerm.windows(x,i);//x是排在前面的顾客编号i++;cout<<endl<<"您的号码是: "<<i<<" 办理的是: "<<a<<endl<<endl;cout<<"您前面还有"<<i-x<<"位客户"<<endl<<endl;break;}case 2:{cout<<endl;cout<<"* * * * * * * * * * * * * * * "<<endl;strftime( tmp, sizeof(tmp), "%Y/%m/%d %A %z",localtime(&t) );puts(tmp);s=Custerm.fanhui(Custerm);if(s>=16){flag2=0;break;}Custerm.kehu[i].bianhao=i+1;Custerm.kehu[i].yewu=b;Custerm.kehu[i].yewunum=2;Custerm.kehu[i].yewutime=bb;Custerm.timelocal(Custerm);Custerm.calculatechu(i,Custerm);x=Custerm.windows(x,i);cout<<endl<<"您的号码是: "<<i<<" 办理的是: "<<b<<endl<<endl; cout<<"您前面还有"<<i-x<<"位客户"<<endl<<endl;break;}case 3:{cout<<endl;cout<<"* * * * * * * * * * * * * * * "<<endl;strftime( tmp, sizeof(tmp), "%Y/%m/%d %A %z",localtime(&t) );puts(tmp);s=Custerm.fanhui(Custerm);if(s>=16){flag2=0;break;}Custerm.kehu[i].bianhao=i+1;Custerm.kehu[i].yewu=c;Custerm.kehu[i].yewunum=3;Custerm.kehu[i].yewutime=cc;Custerm.timelocal(Custerm);Custerm.calculatechu(i,Custerm);x=Custerm.windows(x,i);i++;cout<<endl<<"您的号码是: "<<i<<" 办理的是: "<<c<<endl<<endl; cout<<"您前面还有"<<i-x<<"位客户"<<endl<<endl;break;}case 4:{cout<<endl;cout<<"* * * * * * * * * * * * * * * "<<endl;strftime( tmp, sizeof(tmp), "%Y/%m/%d %A %z",localtime(&t) );puts(tmp);s=Custerm.fanhui(Custerm);if(s>=16){flag2=0;break;}Custerm.kehu[i].bianhao=i+1;Custerm.kehu[i].yewu=d;Custerm.kehu[i].yewunum=4;Custerm.kehu[i].yewutime=dd;Custerm.timelocal(Custerm);Custerm.calculatechu(i,Custerm);x=Custerm.windows(x,i);i++;cout<<endl<<"您的号码是: "<<i<<" 办理的是: "<<d<<endl<<endl; cout<<"您前面还有"<<i-x<<"位客户"<<endl<<endl;break;}default:cout<<"没有这个选项!"<<endl;break;}if(ff==0){break;}if(flag==1){system("pause");}system("cls");if(flag2==0){break;}}Custerm.choose(x,i,Custerm);Custerm.writetotext(x,Custerm);return 0;}。
银行管理系统C语言程序设计代码简介银行管理系统是一个用于模拟银行业务的计算机程序。
它可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
本文将详细介绍银行管理系统的设计和实现,包括系统的功能模块、数据结构和算法等内容。
功能模块银行管理系统主要包括以下功能模块:1.用户管理:包括用户账户的创建、修改、删除等操作。
2.账户管理:包括存款、取款、查询余额、转账等操作。
3.利息计算:根据存款金额和存款期限计算利息。
4.账单管理:记录用户的交易明细和账户余额变动。
数据结构银行管理系统使用了以下数据结构:1.用户账户结构体:包括账户ID、账户名称、账户类型等信息。
2.用户交易结构体:包括交易类型、交易金额、交易时间等信息。
3.用户账户链表:用于保存所有用户账户的信息。
4.用户交易链表:用于保存用户的交易明细。
算法设计银行管理系统使用了以下算法:1.用户账户创建算法:通过用户输入的信息创建新的账户,并将其添加到账户链表中。
2.存款算法:根据用户输入的存款金额,将其添加到账户余额中。
3.取款算法:根据用户输入的取款金额,从账户余额中扣除相应金额。
4.转账算法:根据用户输入的转账金额和目标账户ID,将相应金额从当前账户中转到目标账户中。
5.利息计算算法:根据存款金额和存款期限,计算相应的利息。
6.账单记录算法:将用户的交易明细和账户余额变动记录到交易链表中。
代码实现以下是银行管理系统的C语言代码示例:#include <stdio.h>// 用户账户结构体typedef struct {int accountId;char accountName[100];char accountType[100];float balance;} Account;// 用户交易结构体typedef struct {int accountId;char transactionType[100];float amount;char transactionTime[100];} Transaction;// 用户账户链表typedef struct {Account account;struct AccountNode* next;} AccountNode;// 用户交易链表typedef struct {Transaction transaction;struct TransactionNode* next;} TransactionNode;// 创建用户账户void createAccount(AccountNode** head, Account account) { // 创建新的账户节点AccountNode* newNode = (AccountNode*)malloc(sizeof(AccountNode)); newNode->account = account;newNode->next = NULL;// 将新的账户节点添加到链表中if (*head == NULL) {*head = newNode;} else {AccountNode* current = *head;while (current->next != NULL) {current = current->next;current->next = newNode;}}// 存款void deposit(AccountNode* head, int accountId, float amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == accountId) {current->account.balance += amount;break;}current = current->next;}}// 取款void withdraw(AccountNode* head, int accountId, float amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == accountId) {if (current->account.balance >= amount) {current->account.balance -= amount;} else {printf("Insufficient balance.\n");}break;}current = current->next;}}// 转账void transfer(AccountNode* head, int sourceAccountId, int targetAccountId, flo at amount) {AccountNode* current = head;while (current != NULL) {if (current->account.accountId == sourceAccountId) {if (current->account.balance >= amount) {current->account.balance -= amount;break;} else {printf("Insufficient balance.\n");}current = current->next;}current = head;while (current != NULL) {if (current->account.accountId == targetAccountId) {current->account.balance += amount;break;}current = current->next;}}// 利息计算float calculateInterest(float principal, int years) {float rate = 0.05; // 假设利率为5%return principal * rate * years;}// 账单记录void recordTransaction(TransactionNode** head, Transaction transaction) { // 创建新的交易节点TransactionNode* newNode = (TransactionNode*)malloc(sizeof(TransactionNod e));newNode->transaction = transaction;newNode->next = NULL;// 将新的交易节点添加到链表中if (*head == NULL) {*head = newNode;} else {TransactionNode* current = *head;while (current->next != NULL) {current = current->next;}current->next = newNode;}}int main() {AccountNode* accountList = NULL;TransactionNode* transactionList = NULL;// 创建账户Account account1 = {1, "John Doe", "Savings", 1000.0};createAccount(&accountList, account1);Account account2 = {2, "Jane Smith", "Checking", 2000.0};createAccount(&accountList, account2);// 存款deposit(accountList, 1, 500.0);// 取款withdraw(accountList, 1, 200.0);// 转账transfer(accountList, 1, 2, 300.0);// 利息计算float interest = calculateInterest(1000.0, 1);printf("Interest: %.2f\n", interest);// 账单记录Transaction transaction1 = {1, "Deposit", 500.0, "2022-01-01 10:00:00"};recordTransaction(&transactionList, transaction1);Transaction transaction2 = {1, "Withdraw", 200.0, "2022-01-02 11:00:00"};recordTransaction(&transactionList, transaction2);return 0;}总结银行管理系统是一个功能丰富的计算机程序,通过使用C语言进行设计和实现,可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
创建一个类,对银行的一般业务进行处理。
包括:开通帐户、存钱、取钱、销户、查询等功能!# include"iostream.h"# include"malloc.h"# include"string.h"# include"stdlib.h"# include"time.h"# include"windows.h"typedef struct node{char name[20];//姓名char mima[10];//密码int money;//金额int zhanghao;//账号struct node *next;}people;class bank{private:people *p;public:bank(){p=(people *)malloc(sizeof(people));p->next=NULL;}void kaihu(); //开户void cun();//存钱void qu();//取钱void xiaohu();//销户void chaxun();//查询void mulu();void xuanzhe();};void bank::kaihu(){system("cls");cout<<"\t\t\t开户"<<endl;cout<<"**************************************************"<<endl;people *m;char a[10],b[10];m=(people *)malloc(sizeof(people));srand(time(NULL));m->zhanghao=rand()%10000;memset(m->name,0,sizeof(m->name));memset(m->mima,0,sizeof(m->mima));cout<<"\n请输入姓名:";cin>>m->name;cout<<"\n请输入密码:";cin>>a;cout<<"\n请再次输入密码:";cin>>b;while(strcmp(a,b)!=0){cout<<"\n与第一次输入不符,请重新输入:";cout<<"\n请输入密码:";cin>>a;cout<<"\n请再次输入密码:";cin>>b;}strcpy(m->mima,a);m->money=100;m->next=p->next;cout<<"\n姓名:"<<m->name<<"\t账号:"<<m->zhanghao<<"\t金额:"<<m->money<<endl;p->next=m;xuanzhe();}void bank::cun(){system("cls");cout<<"\t\t\t存款"<<endl;cout<<"**************************************************"<<endl;int a,m;people *k=p;cout<<"\n请输入账号:";cin>>a;while(k!=NULL){if(k->zhanghao==a)break;else k=k->next;}if(k!=NULL){cout<<"\n姓名:"<<k->name<<"\t账号:"<<k->zhanghao<<endl;cout<<"\n请输入要存入的金额:";cin>>m;k->money=k->money+m;cout<<"\n已存入,卡中余额为:"<<k->money<<endl;}else cout<<"\n无此账户!"<<endl;xuanzhe();}void bank::qu(){system("cls");cout<<"\t\t\t取款"<<endl;cout<<"**************************************************"<<endl;char n[10];int b=2;int a,m;people *k=p;cout<<"\n请输入账号:";cin>>a;while(k!=NULL){if(k->zhanghao==a)break;else k=k->next;}if(k!=NULL){cout<<"\n请输入密码:";cin>>n;while(strcmp(k->mima,n)!=0&&b--){cout<<"\n密码错误!请重新输入,剩余次数"<<b+1<<endl;cout<<"\n请输入密码:";cin>>n;}if(b>=0){cout<<"\n姓名:"<<k->name<<"\t账号:"<<k->zhanghao<<"\t账户金额"<<k->money<<endl;cout<<"\n请输入取款金额:";cin>>m;while(m>k->money){cout<<"金额不足!";cout<<"\n请输入取款金额:";cin>>m;}k->money=k->money-m;cout<<"取款成功!账户余额:"<<k->money;}else cout<<"\n密码错误,退出!"<<endl;}else cout<<"\n无此账号!"<<endl;xuanzhe();}void bank::xiaohu(){system("cls");cout<<"\t\t\t销户"<<endl;cout<<"**************************************************"<<endl;int a,b=2,c;char n[10];memset(n,0,sizeof(n));people *k=p,*m;cout<<"\n请输入账号:"<<endl;cin>>a;while(k!=NULL){if(k->zhanghao==a)break;else{m=k;k=k->next;}}if(k!=NULL){cout<<"\n请输入密码:";cin>>n;while(strcmp(k->mima,n)!=0&&b--){cout<<"\n密码错误!请重新输入,剩余次数"<<b+1<<endl;cout<<"\n请输入密码:";cin>>n;}if(b>=0){cout<<"\n姓名:"<<k->name<<"\t账号:"<<k->zhanghao<<"\t账户金额"<<k->money<<endl;cout<<"\n确定销户请按1,返回请按2:";cin>>c;if(c==1){m->next=k->next;cout<<"\n已销户!"<<endl;xuanzhe();}if(c==2)xuanzhe();}}else xuanzhe();}void bank::chaxun(){int a,b=2,c;char n[10];memset(n,0,sizeof(n));people *k=p;cout<<"\n请输入账号:"<<endl;cin>>a;while(k!=NULL){if(k->zhanghao==a)break;else{k=k->next;}}if(k!=NULL){cout<<"\n请输入密码:";cin>>n;while(strcmp(k->mima,n)!=0&&b--){cout<<"\n密码错误!请重新输入,剩余次数"<<b+1<<endl;cout<<"\n请输入密码:";cin>>n;}if(b>=0){cout<<"\n姓名:"<<k->name<<"\t账号:"<<k->zhanghao<<"\t账户金额"<<k->money<<endl;}else cout<<"\n密码错误!退出!"<<endl;}else cout<<"\n无此账户!"<<endl;xuanzhe();}void bank::xuanzhe(){int a;cout<<"\n返回主菜单请按1,结束请按2:";cin>>a;if(a==1)mulu();if(a==2)exit(0);}void bank::mulu(){system("cls");int a;cout<<"\t\t银行系统"<<endl;cout<<"**************************************************"<<endl;cout<<"1.开户"<<endl;cout<<"2.存款"<<endl;cout<<"3.取款"<<endl;cout<<"4.销户"<<endl;cout<<"5.查询"<<endl;cout<<"**************************************************"<<endl;cout<<"\n请输入所需服务序号:";cin>>a;switch(a){case 1:kaihu();break;case 2:cun();break;case 3:qu();break;case 4:xiaohu();break;case 5:chaxun();break;}}void main(){bank b;b.mulu();}。
数据结构——银⾏排队系统模拟(C语⾔)程序最终⽬的:获得所有客户在银⾏营业期间停留的平均时间程序初始值:默认第⼀个⽤户到达的时间为(0,0)#include <stdio.h>#include <stdlib.h>#include <time.h>/**使⽤队列模拟银⾏排队系统,并计算客户在银⾏停留的平均时间*问题1:银⾏已到达关闭时间,但是还有客户正在窗⼝处理问题(涉及到客户离开事件)*问题2:功能还未完全测试。
*问题3:代码未优化*version1:随机数版本(使⽤随机数产⽣客户数据)*待完成版本:数组版本(version);⽂件版本(version)*/#define USE_TIME 30 //客户在银⾏停留的最⼤时间#define NEXT_TIme 5 //下⼀个客户到达的最⼤间隔时间typedef struct E_list //有序表结点{int cur_time; /*记录当前时间*/int E_type; /*记录事件类型*/struct E_list* next; /*指针域*/} E_List,*EvenList;typedef struct Q_node //队列结点{int arrive_time; /*记录客户达到时间*/int dur_time; /*记录客户在银⾏停留时间*/struct Q_node* next; /*指针域*/} Q_Node,*QueueNode;typedef struct E_queue //队列操作结构{QueueNode front; /*指向队⾸元素*/QueueNode rear; /*指向队尾元素*/int length; /*记录队列长度*/} E_queue,*Win_Queue;int totalTime; /*记录总时间*/int allcustomer; /*记录客户数量*/int closetime; /*设置关闭时间*/E_List ev; //有序表头节点E_queue e_q[4]; //窗⼝队列操作结构void enter_List(EvenList new_E) //进⼊有序表{EvenList agent = ev.next; //代理指针指向第⼀个元素EvenList pre_E =&ev; //代理指针指向头结点while(agent!=NULL && (new_E->cur_time > agent->cur_time)) //找到元素的插⼊位置{pre_E = agent;agent = agent->next;}if(agent == NULL) /*插⼊到表尾*/{pre_E->next = new_E;}else /*插⼊到⾮表尾位置*/{new_E->next = agent;pre_E->next = new_E;}agent = ev.next;while(agent!=NULL) /*进⾏表的遍历*/{printf("(%d,%d)\n",agent->cur_time,agent->E_type);agent = agent->next;}printf("\n\n");}void out_List(EvenList Event) //出有序表{/*记录待删除结点的数据后,释放该结点*/EvenList temp = ev.next;Event->cur_time = temp->cur_time;Event->E_type = temp->E_type;Event->next = NULL;ev.next = temp->next; //出有序表节点printf("%p\n",temp->next); //测试语句printf("待处理客户:(%d , %d)\n",temp->cur_time,temp->E_type); /*测试语句*/free(temp); /*释放待删除结点*/}void en_Queue(Win_Queue q, QueueNode new_node) //进⼊指定队列{/*将元素加⼊到队列末尾,并增加队列长度*/q->rear->next = new_node;q->rear = new_node;q->length++;}void DeQueue(Win_Queue q,QueueNode node) //出队列{/*记录待出队列结点的数据,释放该结点后,队列长度减⼀*/QueueNode temp = q->front->next;q->front->next = temp->next;q->length--; /*队列长度减⼀*//*存储待删除结点的数据*/node->arrive_time = temp->arrive_time;node->dur_time = temp->dur_time;node->next = NULL;}void openforday() //初始化数据{int i;EvenList temp;QueueNode temp_q;totalTime = 0; /*初始化时间记录器*/allcustomer = 0; /*初始化顾客记录器*/closetime = 5; /*初始化银⾏关闭时间*/temp = (EvenList)malloc(sizeof(E_List));if(temp == NULL){printf("memory is failure!\n");exit(1);}temp->cur_time = 0;temp->E_type = 0;temp->next = NULL;ev.next = temp; /*将第⼀个客户数据(0,0,)加⼊到事件表*/for(i=0; i<4; i++) //为每⼀个窗⼝队列设置头节点{temp_q = (QueueNode)malloc(sizeof(Q_Node));if(temp_q == NULL){printf("memory allocate is failure!\n");exit(1);}temp_q->next = NULL;e_q[i].front = temp_q;e_q[i].rear = temp_q;e_q[i].length = 0; /*初始化队列长度*/}}void Even_head(EvenList E) //得到有序表的第⼀个客户{/*获得事件表第⼀个元素的副本*/E->cur_time = ev.next->cur_time;E->E_type = ev.next->E_type;E->next = NULL;}void arrive_Event() //处理客户到达事件{/***系统产⽣两个随机数(x,y),x表⽰当前窗⼝type = 0的⽤户在银⾏的停留时间*y表⽰下⼀个客户与上⼀个客户的间隔时间。
#include "stdio.h"#include "stdlib.h"#include "string.h"#include "mem.h"#include "ctype.h"struct money //struct结构体名{ char zjhao[20];char kahao[8];char mingzi[20];//定义证件号,卡号,姓名为字符型变量float money[6];}data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;void shuru()//余勇{ system("cls");if((fp=fopen("数据.txt","ab+"))==NULL)//ab+ 读写打开一个二进制文件,允许读或在文件末追加数据{printf("没有数据文件.\n");//ab+ 读写打开一个二进制文件,文件不再时创建getch();exit(0);}for(i=0;i<=1000;i++){printf("\n请输入卡号帐号:");gets(data.kahao); //接收输入的帐号,存放在data.kahaoprintf("请输入姓名:");gets(data.mingzi); //接收输入的姓名,存放在data.mingziprintf("请输入证件号:");gets(data.zjhao); //接收输入的证件号,存放在data.zjhaoprintf("请输入存款金额:");gets(temp); //接收输入的金额,存放在tempdata.money[0]=atof(temp);fwrite(&data,sizeof(data),1,fp);printf("\n是否继续申请账号?y/n\n");ch=getch();system("cls");if(ch=='n'||ch=='N')break;}fclose(fp);//关闭文本文件}void xianshi()//李章河{float s;int n;if((fp=fopen("数据.txt","rb+"))==NULL)//rb+ 读写打开一个二进制文件,只允许读写数据{printf("没有数据文件.\n");exit(0);}system("cls");for(i=0;i<=1000;i++){if((fread(&info[i],sizeof(info[i]),1,fp))!=1)break;}printf("\n----------------------------------------------------\n");printf("帐号姓名存款(元) 证件号\n\n");for(j=0,k=1;j<i;j++,k++){printf("%3s %-5s %-15.3f%s\n",info[j].kahao,info[j].mingzi,info[j].money[0], info[j].zjhao);}printf("\n按任意键返回。
\n");getch();fclose(fp);}void xiugai()//蔡永萍{ system("cls");if((fp=fopen("数据.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)//rb+ 读写打开一个二进制文件,允许读数据或wb+读写打开或建立一个二进制文件的方式打开{printf("没有数据文件.\n");//如果没有打开数据TXT文件,提示此错误并退出exit(0);}printf("\n请输入要进行修改的帐号:");scanf("%d",&i);//输入要修改的帐号getchar();//输入新的姓名while((fread(&data,sizeof(data),1,fp))==1)//当成功从文件读取一个数据块时,执行下面程序{j=atoi(data.kahao); //atoi 把字符串转换成整型数if(j==i) //当j==i时,在资料文档中找到了要查找的帐号{printf("\n帐号:%s\n姓名:%s\n证件号:%s\n",data.kahao,data.mingzi,data.zjhao);printf("\n请输入姓名:");gets(data.mingzi); //接收输入的姓名,存放在data.mingziprintf("请输入存款金额:");gets(temp);data.money[0]=atof(temp);//接收输入的金额,存放在temp}fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); //fp 是文件流, 0L 是指针零点位置, 0 是把指针移动到的地点fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);//关闭文件fclose(fp1);}void chazhao()//莫国振{ system("cls");if((fp=fopen("数据.txt","rb"))==NULL){printf("\n没有数据文件.\n");//如果没有打开数据TXT文件,提示此错误并退出exit(0);}printf("\n请输入要查找的帐号:");scanf("%d",&i);while(fread(&data,sizeof(data),1,fp)==1){j=atoi(data.kahao);if(i==j){printf("帐号:%s\n姓名:%s\n存款:%.3f\n\n ",data.kahao,data.mingzi,data.money[0]);}getch();}}void shanchu()//杨盛航{ system("cls");if((fp=fopen("数据.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)//rb+ 读写打开,wb+读写打开或建立一个二进制文件的方式打开“数据.txt"{printf("\n没有数据文件!");//如果没有打开数据TXT文件,提示此错误并退出getch();exit(0);}printf("\n请输入您想删除的帐号:");scanf("%d",&i);getchar();while((fread(&data,sizeof(data),1,fp))==1)//当找到要修改的帐号时{j=atoi(data.kahao);if(j==i){printf("确定删除?\n");getch();continue;}fwrite(&data,sizeof(data),1,fp1);}fclose(fp);fclose(fp1);remove("数据.txt");rename("temp.txt","数据.txt");printf("删除成功!\n");printf("按任意键返回主菜单!\n\n\n\n\n\n\n");getch();}main()//蒋家裕{ char k;system("color F3");//F为背景白色,3为字体灰绿色printf("\n 正在启动系统\n\n");printf("▊▊▊");_sleep(200); //休眠200毫秒system("cls"); //清屏printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n 正在启动系统\n\n");printf(" ▊▊▊");_sleep(200);system("cls");printf("\n\n 系统启动成功!\n\n");printf("\n\n开发者:蒋、蔡、李、莫、余、杨\n\n");_sleep(3500);system("cls");while(1){system("cls");printf("┗━━━━━━━━━━━━━┛\n");_sleep(20);system("cls");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n");_sleep(20);system("cls");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n");_sleep(20);system("cls");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n");_sleep(20);system("cls");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n");_sleep(20);system("cls");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("┏━━━━━━━━━━━━━┓\n");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf(" ╬╬╬╬╬╬╬╬╬╬╬╬\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf(" |田︱田田| ╰------------ \n");printf(" ╬╬╬╬╬╬╬╬╬╬╬╬\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf(" ╱◥██◣╭╭⌒╮\n");printf(" |田︱田田| ╰------------ \n");printf(" ╬╬╬╬╬╬╬╬╬╬╬╬\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n"); _sleep(20);system("cls");printf("\n");printf(" ╱◥██◣╭╭⌒╮\n");printf(" |田︱田田| ╰------------ \n");printf(" ╬╬╬╬╬╬╬╬╬╬╬╬\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃欢迎使用银行信用卡管理系统┃\n");printf("┃★XX银行信用卡管理系统★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf("┏━━━━━━━━━━━━━┓\n");printf("┃★----1.申请账号存款----★┃\n");printf("┃★----2.修改账号信息----★┃\n");printf("┃★----3.删除账号信息----★┃\n");printf("┃★----4.查找账号信息----★┃\n");printf("┃★----5.显示账号信息----★┃\n");printf("┃★----6.退出操作系统----★┃\n");printf("┗━━━━━━━━━━━━━┛\n");printf(" 请输入您想进行的操作(1-6):");ch=getch();switch(ch){case '1':shuru();break;// 调用输入程序case '2':xiugai();break;//调用修改程序case '3':shanchu();break;//调用删除程序case '4':chazhao();break;//调用查找程序case '5':xianshi();break;//调用显示程序case '6':{system("cls");printf("确认退出(Y退出/N返回):");k=getch();if(k=='Y'||k=='y'){system("cls");printf("\n感谢您的使用!!\n\n\n\n\n");_sleep(2000);exit(0);}else{break;}}default: continue;}}}。