银行叫号系统Visual C ++程序源代码
- 格式:doc
- 大小:36.50 KB
- 文档页数:4
银行管理系统c语言程序设计代码以下是一个简单的银行管理系统的C语言程序设计代码示例:```c#include <stdio.h>#include <stdlib.h>struct BankAccount {int accountNumber;char accountHolder[50];float balance;};void createAccount(struct BankAccount *account) {printf("请输入账户号码: ");scanf("%d", &(account->accountNumber));printf("请输入账户持有人姓名: ");scanf("%s", account->accountHolder);printf("请输入账户余额: ");scanf("%f", &(account->balance));printf("账户创建成功!\n");}void deposit(struct BankAccount *account) {float amount;printf("请输入存款金额: ");scanf("%f", &amount);account->balance += amount;printf("存款成功!\n");}void withdraw(struct BankAccount *account) {float amount;printf("请输入取款金额: ");scanf("%f", &amount);if (amount > account->balance) {printf("余额不足,取款失败!\n");} else {account->balance -= amount;printf("取款成功!\n");}}void displayAccount(struct BankAccount *account) {printf("账户号码: %d\n", account->accountNumber);printf("账户持有人姓名: %s\n", account->accountHolder); printf("账户余额: %.2f\n", account->balance);}int main() {struct BankAccount account;int choice;while (1) {printf("\n银行管理系统\n");printf("1. 创建账户\n");printf("2. 存款\n");printf("3. 取款\n");printf("4. 显示账户信息\n");printf("5. 退出\n");printf("请选择操作: ");scanf("%d", &choice);switch (choice) {case 1:createAccount(&account); break;case 2:deposit(&account);break;case 3:withdraw(&account);break;case 4:displayAccount(&account);break;case 5:printf("感谢使用银行管理系统,再见!\n");exit(0);default:printf("无效的选择,请重新输入。
#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;}。
#include<iostream>#include<windows.h>#include<string>#include<time.h>#include<stdlib.h>using namespace std;/******************窗口结构体********************/struct Windows{int deposit; /****************存款*****************/int withdrawals; /****************取款*****************/int reportloss; /****************挂失*****************/int borrowed; /****************还贷*****************/int anum[1000]; /**************保存客户***************/};/******************时间结构体********************/struct Time{int hour;int minute;int second;};/******************票号结构体********************/struct Ticket{Time arrivaltime; /****************到达时间*****************/ int number; /****************编号*****************/ int business; /****************办理业务*****************/ };const int QueueSize=1000;class BankBusinses{public:BankBusinses();void EnQueue();int GetQueue();void Personnel_Func(Ticket t2[],int n,int s); /***************手动业务生成函数***************/int Ticket_Produce_Function(Ticket t[],int n); /***************打号函数***************/int Personnel_Distribution_Func(int n,int flag); /***************业务办理函数***************/int Business_statistic_Func(Windows win[],int m); /***************业务统计函数***************/void Display_Business_Func(Windows win[],int m,int n,int coordinate); /***************业务显示函数***************/void Make_waittime_Func(int n); /***************等待时间函数***************/int Menu(); /***************菜单函数***************/Windows win[4]; /***************窗口***************/Ticket t[QueueSize]; /***************票***************/Ticket t2[QueueSize];private:string name; /***************业务名称***************/int businesstime; /***************办理业务所需时间***************/int alltime; /***************办理所有业务的总时间***************/int waittime; /***************等待时间***************/double averagetime; /***************平均等待时间***************/long *a,*b,*v;int data[QueueSize];Ticket data2[QueueSize];int front,rear;};#include "BankBusinses.h"BankBusinses::BankBusinses(){front=rear=QueueSize-1;}/*******************打号函数********************/int BankBusinses::Ticket_Produce_Function(Ticket t[],int n){int temp,sign,i,j=0;a=new long[n];b=new long[n];v=new long[n];/*******************对时间排序********************/for(i = 0;i < n;i++)for(j = i+1;j < n;j++){if(t[i].arrivaltime.hour>t[j].arrivaltime.hour){temp=t[i].arrivaltime.hour;t[i].arrivaltime.hour=t[j].arrivaltime.hour;t[j].arrivaltime.hour=temp;temp=t[i].arrivaltime.minute;t[i].arrivaltime.minute=t[j].arrivaltime.minute;t[j].arrivaltime.minute=temp;temp=t[i].arrivaltime.second;t[i].arrivaltime.second=t[j].arrivaltime.second;t[j].arrivaltime.second=temp;}}for(i = 0;i < n;i++)for(j = i+1;j < n;j++){if(t[i].arrivaltime.hour==t[j].arrivaltime.hour && t[i].arrivaltime.minute>t[j].arrivaltime.minute){temp=t[i].arrivaltime.minute;t[i].arrivaltime.minute=t[j].arrivaltime.minute;t[j].arrivaltime.minute=temp;temp=t[i].arrivaltime.second;t[i].arrivaltime.second=t[j].arrivaltime.second;t[j].arrivaltime.second=temp;}else continue;}for(i = 0;i < n;i++)for(j = i+1;j < n;j++){if(t[i].arrivaltime.hour==t[j].arrivaltime.hour && t[i].arrivaltime.minute==t[j].arrivaltime.minute && t[i].arrivaltime.second>t[j].arrivaltime.second){temp=t[i].arrivaltime.second;t[i].arrivaltime.second=t[j].arrivaltime.second;t[j].arrivaltime.second=temp;}else continue;}for(i = 0;i < n;i++){a[i]=v[i]=t[i].arrivaltime.hour*3600+t[i].arrivaltime.minute*60+t[i].arrivaltime.second;}srand(time(0));for(i = 0;i < n;i++){t[i].number = i; /************编号产生***********/rear=(rear+1)%QueueSize;data[rear]=t[i].number;sign = (rand()%(5-1))+1;t[i].business = sign; /************业务产生***********/switch(t[i].business){case 1:name = "取款";businesstime = 1;break;case 2:name = "存款";businesstime = 2;break;case 3:name = "挂失";businesstime = 3;break;case 4:name = "还贷";businesstime = 4;break;}b[i]=t[i].business*60;}return n;}/*******************手动业务生成客户编号函数********************/void BankBusinses::EnQueue(){int n,m;srand(time(0));while(front!=rear){n=(rand()%(200-1)+1);rear=(rear+1)%QueueSize;data2[rear].number=n;m=(rand()%(5-1))+1;data2[rear].business = m; /************业务产生***********/ }}int BankBusinses::GetQueue(){int i=0;while(front!=rear){front=(front+1)%QueueSize;switch(t[front].business){case 1:name = "取款";businesstime = 1;break;case 2:name = "存款";businesstime = 2;break;case 3:name = "挂失";businesstime = 3;break;case 4:name = "还贷";businesstime = 4;break;}}return data[front];}/*******************处理客户业务函数********************/int BankBusinses::Personnel_Distribution_Func(int n,int flag){int i,k=-1,j=0,m=0,g=0;int transh,transm,transs,transb;long first=0,end=0,next=0,nend=0;long c[4]={-4,-3,-2,-1},temp; //c[4]作用是对应储存四个窗口业务办理结束的时间,在循环过程中后一个业务办理结束时间将修改当前结束时间Ticket_Produce_Function(t,n); //调用时间生成函数for(i=0;i<4;i++){win[i].withdrawals=0;win[i].deposit=0;win[i].reportloss=0;win[i].borrowed=0;}c[0]=a[0]+b[0]; //第一个窗口结束时间初值为队列中第一个客户办理业务的结束时间waittime=b[0]; //第一个客户的逗留时间transh=a[0]/3600;transm=(a[0]%3600)/60;transs=(a[0]%3600)%60;transb=b[0]/60;switch(transb) //窗口各种业务累计{case 1:win[0].withdrawals++;businesstime = 1;break;case 2:win[0].deposit++;businesstime = 2;break;case 3:win[0].reportloss++;businesstime = 3;break;case 4:win[0].borrowed++;businesstime = 4;break;}v[0]=0;for(i=0;i<n;i++){int *d;d=new int[4]; //动态申请长度为四的一维数组,用于存放被修改结束时间的窗口的序号flag=i;first=a[i]; //开始时间end=a[i]+b[i]; //结束时间nend=a[i+1]+b[i+1]; //下一个结束时间next=a[i+1]; //下一个开始时间for(j=0;j<4;j++) //判断四个窗口中的结束时间是否大于下一个客户办理业务的开始时间{if(c[j]<=next){d[j]=j; //如果小于则数组的d[j]中保存该窗口的序号}else{d[j]=-1; //否则该地址存为-1}}for(j=0;j<4;j++) //判断窗口序号保存数组d[j]中是否有被保存的窗口序号{if(d[j] >= 0){k=j; //若有则结束,55且记住该窗口序号break;}else{k=-1;}}if(k>=0){c[k]=nend; //如果有窗口序号被修改,则继续修改当前结束时间为下一个客户的业务办理结束时间transh=next/3600;transm=(next%3600)/60;transs=(next%3600)%60;transb=b[i+1]/60;waittime +=b[i+1];v[i+1]=k;switch(transb) //窗口各种业务累计{case 1:win[k].withdrawals++;businesstime = 1;break;case 2:win[k].deposit++;businesstime = 2;break;case 3:win[k].reportloss++;businesstime = 3;break;case 4:win[k].borrowed++;businesstime = 4;break;}}else{ //如果当前窗口序号全未被修改,即当前所有窗口均处于忙碌状态,下一个客户需等待temp=c[0];k=0;for(j=1;j<4;j++) //找出当前所有正在办理业务的窗口中,结束时间最早的窗口{if(c[j]<temp){temp=c[j];k=j;}}if(temp<3600*17){c[k]=c[k]+b[i+1]; //修改该窗口的结束时间,即下一个在等待的客户到该窗口办理业务transh=next/3600;transm=(next%3600)/60;transs=(next%3600)%60;transb=b[i+1]/60;waittime +=temp-next+b[i+1];v[i+1]=k;switch(transb) //窗口各种业务累计{case 1:win[k].withdrawals++;businesstime = 1;break;case 2:win[k].deposit++;businesstime = 2;break;case 3:win[k].reportloss++;businesstime = 3;break;case 4:win[k].borrowed++;businesstime = 4;break;}}else break;}delete []d; //每次循环结束时撤销窗口序号保存数组d[j];}cout<<endl;return flag;}/*******************窗口业务统计函数********************/int BankBusinses::Business_statistic_Func(Windows win[],int m){int i,n=0,allnum=0;for(i=0;i<4;i++){allnum=win[i].withdrawals+win[i].deposit+win[i].reportloss+win[i].borrowed;cout <<"\t\t\t\t 窗口"<<i+1;cout <<endl;cout <<"取款人数"<<"\t存款人数"<<"\t挂失人数"<<"\t还贷人数"<<"\t办理业务总数";cout <<endl;cout<<win[i].withdrawals<<"\t\t"<<win[i].deposit<<"\t\t"<<win[i].reportloss<<"\t\t"<<win[i].borrowe d<<"\t\t"<<allnum;cout <<endl;}cout<<endl;return allnum;}/*******************窗口业务显示函数********************/void BankBusinses::Display_Business_Func(Windows win[],int m,int n,int coordinate){int j,flag=1;cout<<"\t\t\t\t窗口"<<coordinate+1<<"办理: ";cout<<endl;for(j=0;j<n;j++){if(v[j]==coordinate){cout<<j+1<<"号客户"<<"\t";flag=0;}}if(flag==1){cout<<"\t\t该窗口当天没有办理业务!\n";}cout<<endl;}/*******************等待时间函数********************/void BankBusinses::Make_waittime_Func(int n){int i,flag=0;long waittime2=0;double aver=0;flag=Personnel_Distribution_Func(n,flag);cout<<"\t\t总人数: "<<n;cout<<endl;cout<<"\t\t办理业务人数: "<<flag+1;cout<<endl;cout<<"\t\t未办理完业务人数: "<<n-flag-1;cout<<endl;if((n-flag-1)!=0){cout<<"\t\t未办理完业务的编号: "<<flag+2<<" →"<<n;}cout<<endl;aver=(waittime/(flag+1))/60.0;cout<<"\t\t已经办理业务客户平均逗留时间: "<<aver<<" 分钟";cout<<endl;for(i=flag+2;i<n;i++){waittime2 +=3600*17-a[i];}averagetime=((waittime+waittime2)/n)/60.0;cout<<"\t\t当日所有客户平均逗留时间: "<<averagetime<<" 分钟";cout<<endl;}/***************手动业务生成函数***************/void BankBusinses::Personnel_Func(Ticket t2[],int n,int s){int i=0,m=0;if(s){srand(time(0));t2[i].arrivaltime.hour = (rand()%(17-9)+9);t2[i].arrivaltime.minute = rand()%60;t2[i].arrivaltime.second = rand()%60;n=(rand()%(200-1)+1);t2[i].number=n;m=(rand()%(5-1))+1;t2[i].business = m; /************业务产生***********/switch(m){case 1:name = "取款";businesstime = 1;break;case 2:name = "存款";businesstime = 2;break;case 3:name = "挂失";businesstime = 3;break;case 4:name = "还贷";businesstime = 4;break;}system("cls"); //************清屏**********cout << "\t\t┌───────────────┐\n";cout << "\t\t│"<<"\t 中国银行"<<"\t\t│\n";cout << "\t\t││\n";cout << "\t\t│"<<"编号"<<"\t\t"<<t2[i].number<<"\t\t│\n";cout << "\t\t│"<<"业务"<<"\t\t"<<name<<"\t\t│\n";cout << "\t\t│"<<"到达时间: 2012/3/16"<<" "<<t2[i].arrivaltime.hour <<":" <<t2[i].arrivaltime.minute <<":" <<t2[i].arrivaltime.second<<"\t│\n";cout << "\t\t││\n";cout << "\t\t└───────────────┘\n";}}int BankBusinses:: Menu(){int m;while(m < 0 || m > 8){system("cls");//************清屏**********cout << "\t\t┌───────────────┐\n";cout << "\t\t│────银行业务系统─────│\n";cout << "\t\t└───────────────┘\n";cout << "\t\t┌───────────────┐\n";cout << "\t\t│1. 自动生成业务信息│\n";cout << "\t\t│2. 显示客户逗留时间│\n";cout << "\t\t│3. 显示各窗口业务统计信息│\n";cout << "\t\t│4. 显示窗口①业务办理信息│\n";cout << "\t\t│5. 显示窗口②业务办理信息│\n";cout << "\t\t│6. 显示窗口③业务办理信息│\n";cout << "\t\t│7. 显示窗口④业务办理信息│\n";cout << "\t\t│8. 手动生成业务│\n";cout << "\t\t│0. 退出程序│\n";cout << "\t\t└───────────────┘\n";cout << "\t\t请您选择(0-8): ";while(cin >>m,!cin.eof()) //流控制语句,判断变量输入是否是整型{if(!cin.good()) //如果不是整型则重新输入{cin.clear();cin.ignore();cout<<"\t\t输入错误!\n\t\t请重新输入!";Sleep(5000); //暂停1秒返回菜单重新输入return m;}else if(m<0 || m>8){cout<<"\t\t输入错误!\n\t\t请重新输入!";Sleep(5000); //暂停1秒返回菜单重新输入return m;}else if(cin.good() && (m>=0 && m<=8) ){break;}}}return m;}#include "BankBusinses.h"int main(){int i,n,m,flag=0;BankBusinses C;while(1){switch(C.Menu()){case 1:srand(time(0));n=(rand()%(500-1)+1);for(i = 0;i < n;i++){C.t[i].arrivaltime.hour = (rand()%(17-9)+9);C.t[i].arrivaltime.minute = rand()%60;C.t[i].arrivaltime.second = rand()%60;}C.Ticket_Produce_Function(C.t,n);C.EnQueue();C.GetQueue();C.Personnel_Distribution_Func(n,0);flag=1;cout<<"\t\t业务信息生成成功!\n";break;case 2:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Make_waittime_Func(n);}system("pause");break;case 3:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Business_statistic_Func(C.win,4);}system("pause");break;case 4:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Display_Business_Func(C.win,4,n,0);}system("pause");break;case 5:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Display_Business_Func(C.win,4,n,1);}break;case 6:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Display_Business_Func(C.win,4,n,2);}system("pause");break;case 7:if(flag==0){cout<<"\t\t无可查询信息!\n";}else{C.Display_Business_Func(C.win,4,n,3);}system("pause");break;case 8:system("cls"); //************清屏**********for(i=0;i<QueueSize;i++){cout << "\t\t┌────────────────┐\n";cout << "\t\t│────是否打号?(1/0)─────│\n";cout << "\t\t└────────────────┘\n";cout<<"\t\t是请输入1/否请输入0: ";int tag=0;while(cin >>m,!cin.eof()) //流控制语句,判断变量输入是否是整型{if(!cin.good()) //如果不是整型则重新输入{cin.clear();cin.ignore();cout<<"\t\t输入错误!\n\t\t请重新输入!";Sleep(5000); //暂停1秒返回菜单重新输入system("cls"); //************清屏**********cout << "\t\t┌────────────────┐\n";cout << "\t\t│────是否打号?(1/0)─────│\n";cout << "\t\t└────────────────┘\n";cout<<"\t\t是请输入1/否请输入0: ";}else if(m!=0 && m!=1){cout<<"\t\t输入错误!\n\t\t请重新输入!";Sleep(5000); //暂停1秒返回菜单重新输入system("cls"); //************清屏**********cout << "\t\t┌────────────────┐\n";cout << "\t\t│────是否打号?(1/0)─────│\n";cout << "\t\t└────────────────┘\n";cout<<"\t\t是请输入1/否请输入0: ";}else if(cin.good() && (m==0 || m==1) ){if(m==0){tag=1;}break;}}if(tag==1)break;C.Personnel_Func(C.t2,0,m);}system("pause");break;case 0: //如返回值为0则程序结束cout << "\t\tOVER !\n";exit(0);}}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语言进行设计和实现,可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
课程设计任务书课程名称:课程设计1(数据结构)设计题目:银行排队叫号系统1.问题描述:目前,在以银行营业大厅为代表的窗口行业,大量客户的拥挤排队已成为了这些企事业单位改善服务品质、提升营业形象的主要障碍。
排队(叫号)系统的使用将成为改变这种状况的有力手段。
排队系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦,把顾客排队等待的烦恼变成一段难得的休闲时光,使客户拥有了一个自由的空间和一份美好的心情。
排队叫号软件的具体操作流程为:●顾客取服务序号。
当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。
单上显示服务号及该服务号前面正在等待服务的人数。
●银行职员呼叫顾客,顾客的服务号就会按顺序的显示在显示屏上。
当一位顾客办事完毕后,柜台银行职员只需按呼叫器相应键,即可自动呼叫下一位顾客。
2. 功能要求:1)使用数组或链表以及C#接口和范型技术实现通用的队列功能;2)编写算法,利用队列模拟银行排队系统;3)利用多窗口分别模拟顾客取服务号、银行窗口服务顾客。
3.界面要求:用户界面设计不做统一规定,但应做到界面友好,易于操作。
4. 技术要求:要求利用面向对象的方法以及队列数据结构来完成系统的设计;在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制来实现系统功能。
5.创新要求在基本要求达到后,可以进行创新设计(包括界面、功能、数据结构)。
6. 课程设计时间:1周(18课时)7. 课程设计的考核方式及评分方法1)考核方式⏹课程设计结束时,在机房当场验收。
⏹教师提供测试数据,检查运行结果是否正确。
⏹回答教师提出的问题。
⏹学生提交课程设计文档(A4纸打印)2)评分方法上机检查及答辩: 书面报告: 学习态度= 6 : 3 : 1,没有通过上机检查的其成绩直接记录不及格。
数据结构——银⾏排队系统模拟(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表⽰下⼀个客户与上⼀个客户的间隔时间。
简单的银行管理系统的C语言代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define N 10000struct chuhu //储户结构信息{char idnum[9]; //帐号char password[7]; //密码char name[11]; //储户姓名char idnumber[19]; //储户身份证号码double cunkuan; //存款金额int lei; //储种char address[51]; //储户地址char Tel[15]; //储户的联系电话double lilv; //利率}hu[N]; //储户结构数组void xitong();int rrekey();void kaifa(); //开发人员void cekong();int yanzheng(); //验证帐号和密码void date(); //显示当前日期和时间void insert(); //开户函数void display(); //显示查询帐户信息的函数void in(int); //存款函数void out(int); //取款函数void lilvbiao(); //查看利率表void menu();int A=0,key; //A为开户数double jin;char ch='y'; //控制是否继续的变量char id[11],password[7];void xitong(){FILE *fkey = fopen("key.txt","w+");int k;printf("请创建原始密码:");scanf("%d",&k);fprintf(fkey,"%d\n",k);fclose(fkey);}int main() //输出主菜单{FILE *fkey = fopen("key.txt","r");int t=0;int mima; //输入的密码system("cls");system("color f0"); //设置系统背景为白色date();kaifa();printf("\n\n\n\n\n");printf("\t\t 银行定期储蓄管理系统\n"); //界面1 printf("\n\n\n\n\n\n\n\n");printf("按ENTER键进入下一界面→");fflush(stdin); //功能:清空输入缓冲区scanf("%c",&ch);if(!fkey){printf("密码文件不存在,系统已自创\n");xitong();menu();return 0;}system("cls");fscanf(fkey,"%d",&key);printf("请输入管理员登录密码:\n");scanf("%d",&mima);if(mima==key)t=1;system("cls");for(;t!=1;){printf("管理员密码错误,请重新输入:\n");scanf("%d",&mima);if(mima==key)t=1;system("cls");}//认证成功fclose(fkey);menu();return 0;}void menu(){int a,b;//选择功能的变量do{printf("\n\n按ENTER键进入/返回主菜单→:");fflush(stdin);scanf("%c",&ch);system("cls"); //清屏system("color f0");date();printf("\n\t\t\t\t主菜单\n\n");printf("\t\t 1、开户\n");//主菜单界面(界面3)printf("\t\t 2、查询\n");printf("\t\t 3、用户密码验证\n");printf("\t\t 4、存款\n");printf("\t\t 5、取款\n");printf("\t\t 6、查看利率表\n");printf("\t\t 7、管理员修改密码\n");printf("\t\t 0、退出程序\n");printf("请选择功能(0-7):→");fflush(stdin);scanf("%d",&a);switch(a) //选择功能{case 1: //选择功能后调用相应的函数insert();break;case 2:display();break;case 3:b=yanzheng();break;case 4:b=yanzheng();in(b);break;case 5:b=yanzheng();out(b);break;case 6:lilvbiao();break;case 7:rrekey();break;case 0:system("cls");system("color f0");date();printf("\n\n\n\t==========================================================\n"); printf("\t‖‖\n"); printf("\t‖‖\n"); printf("\t‖‖\n");printf("\t‖‖\n"); printf("\t‖谢谢使用‖\n"); printf("\t‖‖\n");printf("\t‖‖\n"); printf("\t‖‖\n"); printf("\t‖‖\n"); printf("\t‖‖\n"); printf("\t==========================================================");cekong();printf("您真的要退出吗(y/n)? ");fflush(stdin);scanf("%c",&ch);system("cls");break;default:system("cls");printf("\n\n\t您的输入有误,请正确选择功能!!!……");break;}if(a==0&&(ch=='y'||ch=='Y')){system("color f0");date();kaifa();printf("\n\n\n\n\t 欢迎下次再使用! ");cekong();break;}}while(1);}void insert() //开户{FILE *nchuhu = fopen("chuhu.txt","r");FILE *fchuhu = fopen("chuhu.txt","a");int i;if((nchuhu=fopen("chuhu.txt","r"))==NULL){printf("文件不存在,系统将创建.\n");}do{system("cls"); //清屏system("color f0"); //设置系统背景为白色date();printf("\n\n\t\t请输入新储户的信息:");fscanf(nchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%lf\n",&hu[A].idnum,&hu[A].password,&hu[A].name,&hu[A].idnumber,&hu[A].cunkuan,&hu[A].Tel,&hu[A].address,&hu[A].lei,&hu[A].lil v);printf("\n\n\t\t储户存单: ");fflush(stdin);gets(hu[A].idnum);printf("\n\t\t储户密码(6位): ");for(i=0;i<6;i++){fflush(stdin);hu[A].password[i]=getch();printf("*");}hu[A].password[6]='\0';fflush(stdin);scanf("%c",&ch);printf("\n\t\t姓名:");fflush(stdin);gets(hu[A].name);do{printf("\n\t\t储户身份证号码(18位): ");fflush(stdin);gets(hu[A].idnumber);if(strlen(hu[A].idnumber)!=18)printf("\n\t\t输入错误!\n\t\t身份证请输入18位数字或字母\n");for(i=0;i<A;i++)if(strcmp(hu[A].idnumber,hu[i].idnumber)==0&&strcmp(hu[A].name,hu[i].name)!=0)break;if(i<A)printf("\n\n\t\t前面已有一个不同姓名的储户的身份证号为此号码,\n\t\t同一个身份证号不可以有不同的姓名,\n\n\t\t请重新输入身份证号:\n");}while(strlen(hu[A].idnumber)!=18||(strcmp(hu[A].idnumber,hu[i].idnumber)==0&&str cmp(hu[A].name,hu[i].name)!=0));printf("\n\t\t存单金额: ");fflush(stdin);scanf("%lf",&hu[A].cunkuan);printf("\n\t\t储户电话: ");fflush(stdin);gets(hu[A].Tel);printf("\n\t\t储户地址: ");fflush(stdin);gets(hu[A].address);printf("\n\t\t储种: ");printf("\n\t\t\t1、一年定期");printf("\n\t\t\t2、两年定期");printf("\n\t\t\t3、三年定期");printf("\n\t\t\t4、四年定期");printf("\n\t\t\t5、五年定期");do{printf("\n\t\t请选择(1-5):");fflush(stdin);scanf("%d",&hu[A].lei);if(hu[A].lei<1||hu[A].lei>5)printf("\n\n\t\t您选择错误,请正确选择!!");}while(hu[A].lei<1||hu[A].lei>5);if(hu[A].lei==5) hu[A].lilv=0.0279 ;if(hu[A].lei==4) hu[A].lilv=0.0252 ;if(hu[A].lei==3) hu[A].lilv=0.0225 ;if(hu[A].lei==2) hu[A].lilv=0.0198 ;if(hu[A].lei==1) hu[A].lilv=0.0125 ;printf("\n\t\t利率为:%f",hu[A].lilv);fprintf(fchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%f\n",hu[A].idnum,hu[A].password,hu[ A].name,hu[A].idnumber,hu[A].cunkuan,hu[A].Tel,hu[A].address,hu[A].lei,hu[A].lilv);A++;printf("\n是否继续(y/n)? ");fflush(stdin);scanf("%c",&ch);}while(ch=='y'||ch=='Y');printf("存入成功\n");system("pause");system("cls");fclose(nchuhu);fclose(fchuhu);}void display() //按存单号查询{FILE *fchuhu = fopen("chuhu.txt","r");int i,n=0;char fnumb[9];system("cls");for(i=0;i<=100;i++){fscanf(fchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%lf\n",&hu[i].idnum,&hu[i].password,& hu[i].name,&hu[i].idnumber,&hu[i].cunkuan,&hu[i].Tel,&hu[i].address,&hu[i].lei,&hu[i].lilv);}printf("请输入您需要查找的存单号:");scanf("%s",&fnumb);printf("\t\t\t存单信息:\n");for(i=0;i<=99;i++)if(strcmp(fnumb,hu[i].idnum)==0){printf("存单编号:%s\n密码:******(已隐藏)\n用户姓名:%s\n身份证号:%s\n存入金额:%f\n手机号码:%s\n用户住址:%s\n储种:%d\n利率:%f\n\n\n",hu[i].idnum,hu[i].name,hu[i].idnumber,hu[i].cunkuan,hu[i].Tel,hu[i].address,hu[i].le i,hu[i].lilv);n=1;break;}if(n==0)printf("此存单不存在\n");printf("\n\n\t注: 储种中数字的含义为:\n\n\t0: 活期1: 一年定期2: 两年定期3: 三年定期4: 五年定期");fclose(fchuhu);}void in(int count) //存款{FILE *fchuhu = fopen("chuhu.txt","r");FILE *achuhu = fopen("back.txt","w");char id[9];int i;if(!fchuhu){printf("不能打开文件");}if(!achuhu){printf("不能创建新文件");}for(i=0;i<=100;i++){fscanf(fchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%lf\n",&hu[i].idnum,&hu[i].password,& hu[i].name,&hu[i].idnumber,&hu[i].cunkuan,&hu[i].Tel,&hu[i].address,&hu[i].lei,&hu[i].lilv);}if(count<1){date();printf("请再次输入并确认存单:");scanf("%s",&id);for(i=0;i<=100;i++){if(strcmp(id,hu[i].idnum)==0 ){do{printf("\n\n\t\t请输入存款金额: ");fflush(stdin);scanf("%lf",&jin);if(jin<0)printf("\n\n\n\t\t存款不能为负数");}while(jin<0);if(jin>=0){hu[i].cunkuan+=jin;printf("\n\n\t\t\t您存款成功!\n\n\t\t本次存入金额为:%.2f\n",jin);printf("存单上共有:%f",hu[i].cunkuan);}}fprintf(achuhu,"%s\t%s\t%s\t%s\t%f\t%s\t%s\t%d\t%f\n",hu[i].idnum,hu[i].password,hu[i].name,hu[i].idnumber,hu[i].cunkuan,hu[i].Tel,hu[i].address,hu[i].lei,hu[i].lilv);}}fclose(fchuhu);fclose(achuhu);system("del chuhu.txt");rename("back.txt","chuhu.txt");}void out(int count) //取款{FILE *fchuhu = fopen("chuhu.txt","r");FILE *achuhu = fopen("back.txt","w");int i;char id[9];if(!fchuhu){printf("不能打开文件");}if(!achuhu){printf("不能创建新文件");}for(i=0;i<=100;i++){fscanf(fchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%lf\n",&hu[i].idnum,&hu[i].password,& hu[i].name,&hu[i].idnumber,&hu[i].cunkuan,&hu[i].Tel,&hu[i].address,&hu[i].lei,&hu[i].lilv);}if(count<1){date();printf("请再次输入并确认存单:");scanf("%s",&id);for(i=0;i<=99;i++){if(strcmp(id,hu[i].idnum)==0 ){hu[i].cunkuan+=hu[i].lilv*hu[i].lei*hu[i].cunkuan;printf("取出%f元",hu[i].cunkuan);hu[i].cunkuan=0;printf("\n\n\n\t 取款成功");}fprintf(achuhu,"%s\t%s\t%s\t%s\t%f\t%s\t%s\t%d\t%f\n",hu[i].idnum,hu[i].password,hu[i]. name,hu[i].idnumber,hu[i].cunkuan,hu[i].Tel,hu[i].address,hu[i].lei,hu[i].lilv);}}fclose(fchuhu);fclose(achuhu);system("del chuhu.txt");rename("back.txt","chuhu.txt");}void lilvbiao() //利率表{system("cls");system("color f0");date();printf("\n\n\n\t\t\t利率对照表:\n");printf("\t≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n");printf("\t‖‖定期‖\n");printf("\t‖储种‖ˉˉ‖ˉˉˉˉ‖ˉˉˉˉ‖ˉˉˉˉ‖ˉˉˉˉ‖\n");printf("\t‖‖一年‖二年‖三年‖四年‖五年‖\n");printf("\t‖ˉˉˉˉ‖ˉˉˉ‖ˉˉˉˉ‖ˉˉˉˉ‖ˉˉˉˉ‖ˉˉˉ‖\n");printf("\t‖利率(%%%)‖1.25 ‖ 1.98 ‖ 2.25 ‖ 2.52 ‖ 2.79‖\n");printf("\t≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\n");printf("\n\t说明:定期只能在储年到期时取出\n");}int yanzheng() //验证存单号或密码{FILE *fchuhu = fopen("chuhu.txt","r");int count=0,i;char id[9];for(i=0;i<=100;i++){fscanf(fchuhu,"%s\t%s\t%s\t%s\t%lf\t%s\t%s\t%d\t%lf\n",&hu[i].idnum,&hu[i].password,&hu[i].name,&hu[i].idnumber,&hu[i].cunkuan,&hu[i].Tel,&hu[i].address,&hu[i].lei,&hu[i].lilv);}do{system("cls");system("color f0");printf("存单号或密码错误将自动返回\n");printf("\n\n\t\t 请输入您的存单号:");scanf("%s",&id);printf("\n\n\t\t 请输入您的密码:");for(i=0;i<6;i++){fflush(stdin);password[i]=getch();printf("*");}password[6]='\0';fflush(stdin);scanf("%c",&ch);printf("\n\n\t\t");for(i=0;i<=99;i++){if(strcmp(id,hu[i].idnum)==0 &&strcmp(password,hu[i].password)==0){fclose(fchuhu);return 0;}}} while(count==0);fclose(fchuhu);return count;}int rrekey(){FILE *rekey=fopen("key.txt", "r" );FILE *rkey=fopen("keynew.txt", "w" );int mima,mima1,mima2,t;system("cls");printf("请输入原密码\n密码:");scanf("%d",&mima);fscanf(rekey,"%d",&key);if(mima==key)t=1;system("cls");for(;t!=1;){printf("密码错误,请重新输入\n密码:");scanf("%d",&mima);if(mima==key)t=1;system("cls");}/*认证成功*/printf("请输入新密码:\n");scanf("%d",&mima1);system("cls");printf("请再次输入新密码:\n");scanf("%d",&mima2);system("cls");if(mima1==mima2){fprintf(rkey,"%d",mima1);printf("修改成功\n");system("pause");}else{printf("输入错误密码,终止修改密码操作");system("pause");}system("cls");fclose(rekey);fclose(rkey);system("del key.txt");rename("keynew.txt","key.txt");return 0;}void date() //显示当前日期和时间{printf("当前日期:");system("date/t");printf("当前时间:");system("time/t");}void kaifa(){printf("开发者\n");}void cekong() //相当于页脚{printf("\n\n\n\t\t==========※感谢使用※==========\n\n");}。
主函数:
#include "stdafx.h"
#include "Queue.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
Queue s;
s.q[0] = 0; // 让入队的第一个数取数值1
int a=1, b=0 ,d=1 ,e=0;
char c;
while(a) // 运用switch实现选择
{
printf("顾客要号请输入A \n要提示下一位下一位顾客的号码请输入B \n 要显示等待的人数请输入C\n结束循环请输入D \n ");
c= getchar();
while(getchar()!='\n') continue ;
switch(c)
{
case 'A':;
case 'a':// 顾客要号之后让元素入队
s.addQ();
b = s.getQ();
printf("顾客要的号码为:%d\n", b);
break;
case 'B ': ;
case'b':// 删除队首元素即显示要来办理业务的顾客
d = s.delQ();
printf("请%d号客户前来柜台办理业务\n", d);
case 'C ':;
case 'c':// 显示等待的人数
e = s.number();
printf("等待的总人数为:%d\n", e);
break;
case 'D' :;
case 'd':// 结束循环
c=0;break;
default:
printf("输入错误!\n");
}
}
printf("Hello World!\n");
return 0;
}
队列的建立:(类)Queue.h
#if !defined(AFX_QUEUE_H__BA389AF8_C207_4C3E_8A7F_99499FBBA143__I NCLUDED_)
#define
AFX_QUEUE_H__BA389AF8_C207_4C3E_8A7F_99499FBBA143__INCLUDED _
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define M 1000
class Queue // 定义队列名
{
public:
Queue();
void initialQ();
int emptyQ (); // 定义队空
int getQ(); // 取队首元素
int addQ(); // 入队
int delQ(); // 出队
int number(); // 统计队列元素数目
int q[M]; // 定义数组q
int front; //定义队首元素
int rear ; //定义队尾元素
virtual ~Queue();
};
#endif
// !defined(AFX_QUEUE_H__BA389AF8_C207_4C3E_8A7F_99499FBBA143__I NCLUDED_)
Queue.cpp:
// Queue.cpp: implementation of the Queue class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Queue.h"
#define M 1000
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Queue::Queue()
{
front = 0;
rear = 0;
}
int Queue::emptyQ() //初始化队列
{
return front == rear;
}
int Queue::getQ() // 取队首元素
{
if(rear+1==front)
return 0;
else{
int item;
item=q[rear];
return item;
}
}
int Queue::addQ() // 入队
{
if((rear+1)%M==front)
return 0;
else{
q[rear+1] = q[rear] + 1 ; // 每次入队依次使入队元素的值加1,即表示顾客叫号依次递增
rear ++; //实现循环
return 1;
}
}
int Queue::delQ() //删除队首元素
{
if((front ==rear))
return 0;
else{
int item;
front=(front+1)%M;
item=q[front];
return item;
}
}
int Queue:: number() // 统计队列元素的数目
{
int item;
item = q[rear] - q[front];
return item;
}
Queue::~Queue()
{
}。