操作系统课程设计银行系统源代码
C语言课程设计银行管理系统
系统测试与调试
单元测试
目的:验证单个模块或函数的正确性 测试方法:白盒测试和黑盒测试 测试内容:功能测试、性能测试、安全性测试等 测试工具:JUnit、NUnit、PyUnit等
集成测试
测试方法:黑盒测试、白盒 测试、灰盒测试
目的:验证系统各模块之间 的接口是否正确
测试内容:功能测试、性能 测试、安全性测试、兼容性
确认密码,点击注册按钮
款人账号,点击转账按钮
添加标题
添加标题
添加标题
添加标题
添加标题
登录界面:输入用户名、密码,
添加标题
查询界面:输入查询条件,点
点击登录按钮
击查询按钮,显示查询结果 账户管理界面:显示账户列表,
可以进行账户查询、修改、删
除等操作
模块设计
账户模块:账户创建、修改、 删除等
交易模块:存款、取款、转 账等
主界面:菜单栏、工具栏、状态栏,显示 账户信息、交易记录等
交易界面:选择交易类型(存款、取款、 转账等),输入金额,确认交易
查询界面:选择查询类型(账户余额、交 易记录等),显示查询结果
设置界面:修改密码、查看帮助等
退出界面:确认退出,关闭系统
模块实现
用户模块:用户登录、注册、修改密码等操作 账户模块:账户创建、修改、删除等操作 交易模块:转账、存款、取款等操作 查询模块:查询账户余额、交易记录等操作 系统管理模块:系统设置、用户管理、日志管理等操作
系统管理:用户管理、权限管理、系 统设置等
系统需求分析
用户需求分析
用户角色:银行员 工、客户
功能需求:存款、 取款、转账、查询、 修改密码等
性能需求:系统响 应时间、数据准确 性、安全性等
银行管理系统源代码文档
#include<iostream>#include<fstream>#include<string>using namespace std;class user; //声明用户类class yinhang{ //银行类public:void set_account();//开户函数void del_account();//销户函数void transfer_accounts(int a);//转账函数void enter();//登录函数void menu();//菜单函数void exit_yinhang();//退出函数void save();void load();protected:static int amount;//静态成员,用于统计银行账户数user *account[100];//账户数};int yinhang::amount=0;//静态成员赋值,初始为0class user:public yinhang{ //用户类private:string id;//账号string mm;//密码string name;//姓名double balance;//余额string identity_card;//身份证string unit;//单位string phone;//电话号码string address;//地址public:user()//不带参数的构造函数{id='0';mm='0';name='0';balance=0;identity_card='0';unit='0';phone='0';address='0';}user(string id1,string mm1,string name1,double balance1,string identity_card1,string unit1,string phone1,string address1) //带参数的构造函数id=id1;mm=mm1;name=name1;balance=balance1;identity_card=identity_card1;unit=unit1;phone=phone1;address=address1;}friend class yinhang;//声明yinhang类是user的友元类void save_money();//存钱函数void fetch_money();//取钱函数void show()//显示函数{system("cls");cout<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl<<en dl;cout<<" 姓名:"<<name<<endl;cout<<" 账号:"<<id<<endl;cout<<" 余额:"<<balance<<endl;cout<<" 身份证:"<<identity_card<<endl;cout<<" 单位:"<<unit<<endl;cout<<" 电话号码:"<<phone<<endl;cout<<" 地址:"<<address<<endl<<endl<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;}string get_id()//取得账号{return id;}string get_mm()// 取得密码{return mm;}int get_balance()//取得余额{return balance;}void add_money(double x)//通过公有成员函数访问私有成员{balance=x+balance;void dec_money(double x){balance=balance-x;}};void yinhang::save(){ofstream o("g:\\C++\\祁鹏涛\\银行账户信息.txt",ios::out);int n=0;for(n=0;n<amount;n++){o<<account[n]->id<<endl;//写入账号o<<account[n]->mm<<endl;o<<account[n]->name<<endl;o<<account[n]->balance<<endl;o<<account[n]->identity_card<<endl;o<<account[n]->unit<<endl;o<<account[n]->phone<<endl;o<<account[n]->address<<endl;}o.close();}void yinhang::load(){ifstream i("g:\\c++\\祁鹏涛\\银行账户信息.txt",ios::in);int n;for(n=0;n<amount;n++){i>>account[n]->id;//读取账号i>>account[n]->mm;i>>account[n]->name;i>>account[n]->balance;i>>account[n]->identity_card;i>>account[n]->unit;i>>account[n]->phone;i>>account[n]->address;}i.close();}void yinhang::set_account() //开户函数的定义{string id1;string mm1;string name1;double balance1;string identity_card1;string unit1;string phone1;string address1;cout<<"请输入开户人账号:";cin>>id1;int m=0;for(int i=0;i<amount;i++){if(id1==account[i]->get_id()){m=1;}}if(m){cout<<"本账号已经存在!"<<endl;return;}cout<<"请输入密码:";cin>>mm1;cout<<"请输入姓名:";cin>>name1;cout<<"请输入存入金额:";cin>>balance1;while(balance1<0){cout<<"请输入正确的数字!"<<endl;cout<<"请重新输入:";cin>>balance1;}cout<<"请输入开户人身份证:";cin>>identity_card1;cout<<"请输入工作单位:";cin>>unit1;cout<<"请输入电话号码:";cin>>phone1;cout<<"请输入地址:";cin>>address1;cout<<"开户成功!"<<endl;user *u=new user(id1,mm1,name1,balance1,identity_card1,unit1,phone1,address1); account[amount]=u;amount++;save();}void yinhang::del_account() //销户函数的定义{string id1;int i=0;int m=1;cout<<"请输入需要注销的银行卡号:";cin>>id1;while((i<amount)&&(m)) //从0开始进行依次检索,判断id1与其中的一个账号是否相等{if(id1==account[i]->get_id())m=0;elsei++;}if(m){cout<<" 该帐号不存在!"<<endl;return;}for(int j=i;j<amount;j++){account[j]=account[j+1];}account[amount-1]=NULL;amount=amount-1;cout<<"你的银行账户已经注销成功!"<<endl;save();}void yinhang::transfer_accounts(int x) //转账函数的定义{string id1;cout<<"请输入帐号:";cin>>id1;int m=1;int i=0;while((i<amount)&&(m)){if(id1==account[i]->get_id())m=0;elsei++;}if(m){cout<<"帐号不存在!"<<endl;return;}double b;cout<<"请输入你要转帐的金额:";cin>>b;while(b<=0){cout<<"请输入正确的数字!"<<endl;cout<<"请输入:";cin>>b;}if(account[x]->get_balance()<b)cout<<"对不起,金额不够!!"<<endl;else{account[x]->dec_money(b);account[i]->add_money(b);cout<<"转账成功!"<<endl;}return;}void yinhang::enter() //登录函数{string id1;cout<<"请输入银行账号:";cin>>id1;int m=1;int i=0;while((i<amount)&&(m)){if(id1==account[i]->get_id())m=0;elsei++;}if(m){cout<<"帐号不存在!"<<endl;return;cout<<"请输入密码:";string mm1;cin>>mm1;if(mm1!=account[i]->get_mm()) return;do{cout<<"登录成功,请选择下列操作:"<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl<<endl;cout<<" 1.查看账户信息"<<endl<<endl;cout<<" 2.取款"<<endl<<endl;cout<<" 3.存款"<<endl<<endl;cout<<" 4.转账"<<endl<<endl;cout<<" 5.退出本次登录"<<endl<<endl<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;int n;cout<<"请选择:";cin>>n;system("cls");switch(n){case 1: account[i]->show();system("pause");break;case 2: account[i]->fetch_money();save();system("pause");break;case 3:account[i]->save_money();save();system("pause");break;case 4:transfer_accounts(i);save();system("pause");break;case 5:return;}}while(1);}void yinhang::exit_yinhang() //退出系统{cout<<"欢迎下次光临!"<<endl;exit(0);}void user::save_money() //存款函数{double m;cout<<"请输入存款金额:";cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;balance=balance+m;cout<<"存款成功!"<<endl;}void user::fetch_money() //取款函数{double m;cout<<"请输入取款金额:"<<endl ;cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;}if(balance<m)cout<<"对不起,你的余额已不足!"<<endl;else{balance=balance-m;cout<<"取款成功!"<<endl;}}void yinhang::menu(){do{load();cout<<endl;cout<<" 欢迎光临"<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl;cout<<" 1.开户"<<endl;cout<<" 2.登录"<<endl;cout<<" 3.注销"<<endl;cout<<" 4.退出"<<endl<<endl;cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;int n;cout<<"请选择:";cin>>n;system("cls");switch(n){case 1:set_account();system("pause");//开户break;case 2:enter();system("pause");//登录break;case 3:del_account();system("pause");//注销break;case 4:exit_yinhang();system("pause");//退出break;}}while(1);}void main(){yinhang yh;yh.menu();}。
银行管理系统c语言程序设计代码
银行管理系统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("无效的选择,请重新输入。
银行账户管理系统c++课程设计
银行账户管理系统c++课程设计一、项目描述银行账户管理系统是一个用于管理银行账户的软件系统。
该系统能够进行账户的开户、存款、取款、转账、查询等功能。
通过该系统,用户可以方便快捷地操作自己的银行账户。
二、功能模块1.开户功能:用户可以通过该功能开设自己的银行账户。
在开户时,需要输入姓名、身份证号码、初始存款金额等信息。
2.存款功能:用户可以通过该功能将自己的钱存入银行账户。
在存款时,需要输入存款金额。
3.取款功能:用户可以通过该功能从自己的银行账户中取出钱。
在取款时,需要输入取款金额。
系统会自动检查账户余额是否足够,并进行相应的操作。
4.转账功能:用户可以通过该功能将自己的账户资金转移到其他账户。
在转账时,需要输入转账金额和目标账户的账号。
系统会自动检查转出账户余额是否足够,并进行相应的操作。
5.查询功能:用户可以通过该功能查询自己的账户余额、交易记录等信息。
系统会根据用户的输入实时查询并显示相应的结果。
三、系统设计1.数据结构设计:可以使用类来表示银行账户,包括账号、姓名、身份证号码、账户余额等属性。
可以使用数组或链表等数据结构来存储账户对象。
2.功能模块设计:可以使用函数来实现不同的功能模块,如开户函数、存款函数、取款函数、转账函数等。
在逻辑上,可以将不同功能模块分别设计为独立的函数,通过用户菜单选择调用相应的函数。
3.用户界面设计:可以使用控制台界面来实现用户交互。
在界面上展示一个菜单,用户可以通过输入菜单项对应的编号来选择不同的功能模块。
四、源代码示例下面是一个简单的银行账户管理系统的源代码示例:```c++#include <iostream>using namespace std;class BankAccount {private:string accountNumber;string name;string idNumber;double balance;public:BankAccount(string accountNumber, string name, string idNumber, double balance) {this->accountNumber = accountNumber;this->name = name;this->idNumber = idNumber;this->balance = balance;}void deposit(double amount) {balance += amount;cout << "成功存入" << amount << "元。
C语言做的银行系统
C语言做的银行系统#include<stdio.h>#include<stdlib.h>#include<string.h>struct cust{int zhanghao; //帐号char mingzi[20]; //名字float bal; //开户的金额};struct tran{int acc_no;char trantype;float amt;};void addcust();void rectran();void prnlowbal();void huizong();void main(){int choice;while(choice!=5){system("cls");printf("\n****************************************\n");printf("\n* 银行交易系统 *\n");printf("\n* -1- 创建新用户信息 *\n");printf("\n* -2- 银行业务办理 *\n"); printf("\n* -3- 显示低存款用户信息 *\n");printf("\n* -4- 汇总 *\n");printf("\n* -5- 退出 *\n");printf("\n****************************************\n");printf("请选择:");scanf(" %d",&choice);switch(choice){case 1:addcust();break;case 2:rectran();break;case 3:prnlowbal();break;case 4:huizong();break;default:exit(0);}}}void addcust(){FILE *fp;char flag='y';struct cust people;if((fp=fopen("sql.txt","w"))==NULL){printf("\n **** 操作错误,重新输入 ****\n"); getchar();return;}while(flag=='y'){system("cls");printf("\n 帐号:");scanf("%d",&people.zhanghao);printf("\n 姓名:");scanf("%s",&people.mingzi);printf("\n 金额:");scanf("%f",&people.bal);fwrite(&people,sizeof(struct cust),1,fp);getchar();printf("\n 是否继续(y/n)?:");scanf(" %c",&flag);}fclose(fp);}void rectran(){FILE *fp1,*fp2;char flag='y',found,val_flag;struct cust people;struct tran people2;int size=sizeof(struct cust);if((fp1=fopen("sql.txt","a+f"))==NULL){printf("\n **** 操作错误,重新输入! ****\n");getchar();exit(0);}if((fp2=fopen("trans.dat","a+f"))==NULL){printf("\n **** 操作错误,重新输入! ****\n");getchar();return;}while(flag=='y'){system("cls");printf("\n帐号:");scanf("%d",&people2.acc_no);found='n';val_flag='n';rewind(fp1);while((fread(&people,size,1,fp1))==1 && found=='n'){if(people.zhanghao==people2.acc_no){found='y';break;}}if(found=='y'){while(val_flag=='n'){printf("\n 选择交易方式存/取(D/W)?:");scanf(" %c",&people2.trantype);if(people2.trantype!='D'&&people2.trantype!='d'&&people2.trantype!='w'&&people2.trantype!='W') {printf("\n **** 交易错误,重新输入 ****\n");}else{val_flag='y';}}val_flag='n';while(val_flag=='n'){printf("\n 金额:");scanf("%f",&people2.amt);if(people2.trantype=='w'||people2.trantype=='W'){if(people2.amt>people.bal){printf("\n *** 余额:%.2f不足.重新输入。
银行系统源代码
consumer::consumer(string Name,string Num,float Money,string Password)
{name=Name;
num=Num;
money=Money;
passwd=Password;
}
float consumer::get_money()
cout<<"$>";
cin>>m;
}
if(cnsm.get_money()-m<0)
{
cout<<"对不起,你的余额不足!"
<<endl;
}
else
{
cout<<endl<<"操作成功,请收好钱!"
<<endl;
cnsm.set_money(m);
}
cout<<"是否要继续该项操作:(Y/N) "
<<endl;
cout<<"$ >";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
操作系统课程设计-银行家算法(流程图+源代码+设计报告)
操作系统课程设计-银行家算法(流程图+源代码+设计报告)一、实验目的:熟悉银行家算法,理解系统产生死锁的原因及避免死锁的方法,加深记意。
二、实验要求:用高级语言编写和调试一个描述银行家算法的程序。
三、实验内容:1、设计一个结构体,用于描述每个进程对资源的要求分配情况。
包括:进程名--name[5],要求资源数目--command[m](m类资源),还需要资源数目--need[m],已分配资源数目--allo[m]。
2、编写三个算法,分别用以完成:①申请资源;②显示资源;③释放资源。
(动态完成)四、程序流程图五、源程序:最新版本:bk5.c/*bk2.c::可以自定义进程及资源数目,可选择读文件或创建新文件,但不超过10,5*//*可修改# define NP 10*//* # define NS 5 */ /*资源种类*//*bk3.c::可以继续分配资源(〉2)*//*bk4.c::可保存分析结果*//*bk5.c::除以上功能外,对暂时不能分配的可以进行另外一次尝试,并恢复已分配的资源*/ /*四、程序流程图:五、源程序:最新版本:bk5.c/*bk2.c::可以自定义进程及资源数目,可选择读文件或创建新文件,但不超过10,5*//*可修改# define NP 10*//* # define NS 5 */ /*资源种类*//*bk3.c::可以继续分配资源(〉2)*//*bk4.c::可保存分析结果*//*bk5.c::除以上功能外,对暂时不能分配的可以进行另外一次尝试,并恢复已分配的资源*/ #include "string.h"#include "stdio.h"#include "dos.h"#include "conio.h"#define MOVEIN 1#define GUIYUE 2#define ACC 3#define OK 1#define ERROR 0#define MAXSH 7#define MAXSHL 10#define MAXINPUT 50#define maxsize 100int act;int ip=0;int line=0; /*line为要写的行号,全局变量*/int writeok;int right;char wel[30] = {"Welcome To Use An_Li System"};char ente[76]={" 警告:未经作者同意不得随意复制更改!"};char rights[40]={"Copyright (c) 2002"};struct date today;struct time now;typedef struct{int data[maxsize];int top;}stack;int emptystack(stack *S){if(S->top==48&&S->data[S->top]==35)return(1); /*35 is '#'*/ else return(0);}int push(stack *S,int x){if(S->top>=maxsize-1)return(-1);else{S->top++;S->data[S->top]=x;return(0);}}int gettop(stack *S){return S->data[S->top];}int pop(stack *S){if(emptystack(S)){printf("the stack is empty\n");exit(1);}else S->top--;return S->data[S->top+1];}void initstack(stack *S){int i;S->top=0;S->data[S->top]=35;}/*****模拟打字机的效果*********/delay_fun(){int i;void music();for(i=0;;i++){if(wel!='\0'){delay(1000);textcolor(YELLOW);gotoxy(26+i,8);cprintf("%c",wel);printf("谢谢");printf("网络 ");music(1,60);}else break;}delay(500000);for(i=0; ; i++){if(ente!='\0'){delay(1000);textcolor(RED);/*显示警告及版权*/ gotoxy(2+i,11);cprintf("%c",ente);music(1,60);}else break;}delay(40000);for(i=0;;i++){if(rights != '\0'){delay(1000);textcolor(YELLOW);gotoxy(30+i,14);cprintf("%c",rights);music(1,60);}elsebreak;}getch();}/*********登陆后的效果**********/logined(){ int i;clrscr();gotoxy(28,10);textcolor(YELLOW);cprintf("程序正在载入请稍候.....");gotoxy(35,12);for(i=0;i<=50;i++){gotoxy(40,12);delay(8000);cprintf("%02d%已完成",i*2);gotoxy(i+15,13);cprintf("\n");cprintf("|");}main0();}/*********对PC扬声器操作的函数****/void music(int loop,int f) /* f为频率*/{ int i;for(i=0;i<30*loop;i++){sound(f*20);delay(200);}nosound();}int analys(int s,int a){int hh,pos;switch(a){case (int)'i':hh=0;break;case (int)'+':hh=1;break;case (int)'*':hh=2;break;case (int)'(':hh=3;break;case (int)')':hh=4;break;case (int)'#':hh=5;break;case (int)'E':hh=6;break;case (int)'T':hh=7;break;case (int)'F':hh=8;break;default:{printf(" \n analys()分析发现不该有的字符 %c !(位置:%d)",a,ip+1); writeerror('0',"\n............分析出现错误!!!");writeerror(a,"\n 错误类型: 不该有字符 ");printf("谢谢");printf("网 ");return ERROR;}}pos=(s-48)*10+hh;switch(pos){case 3:case 43:case 63:case 73:act=4;return MOVEIN;case 0:case 40:case 60:case 70:act=5;return MOVEIN;case 11:case 81: act=6;return MOVEIN;case 92:case 22:act=7;return MOVEIN;case 84:act=11;return MOVEIN;/*-------------------------------------------*/ case 91:case 94:case 95:act=1;return GUIYUE;case 21:case 24:case 25:act=2;return GUIYUE;case 101:case 102:case 104:case 105:act=3;return GUIYUE;case 31:case 32:case 34:case 35:act=4;return GUIYUE;case 111:case 112:case 114:case 115:act=5;return GUIYUE;case 51:case 52:case 54:case 55:act=6;return GUIYUE;/*+++++++++++++++++*/case 15:return ACC;/*******************************/case 6:return 1;case 7:case 47:return 2;case 8:case 48:case 68:return 3;case 46:return 8;case 67:return 9;case 78:return 10;default:{if(a=='#')printf("");else printf(" \n analys() 分析发现字符%c 不是所期望的!(位置:%d)",a,ip+1);writeerror('0',"\n ...........分析出现错误!!!");writeerror(a,"\n 错误类型: 字符 ");writeerror('0'," 不是所期望的! ");printf("谢谢");printf("网 ");return ERROR;}}}int writefile(int a,char *st){FILE *fp;fp=fopen("an_slr.txt","a");if(fp==0){printf("\nwrite error!!");writeok=0;}else{if(a==-1){fprintf(fp," %s ",st); /*若a==-1则为添加的注释*/}else if(a==-2){getdate(&today);gettime(&now);fprintf(fp,"\n 测试日期: %d-%d-%d",today.da_year,today.da_mon,today.da_day); fprintf(fp," 测试时间:%02d:%02d:%02d",now.ti_hour,now.ti_min,now.ti_sec);}else if(a>=0) fprintf(fp,"\n step: %02d , %s",a,st);writeok=1;fclose(fp);}return writeok;}int writeerror(char a,char *st) /*错误类型文件*/{FILE *fpp;fpp=fopen("an_slr.txt","a");if(fpp==0){printf("\nwrite error!!");writeok=0;}else{if(a=='0') fprintf(fpp," %s ",st); /*若a=='0' 则为添加的注释*/else fprintf(fpp," %s \'%c\'(位置:%d) ",st,a,ip+1);writeok=1;fclose(fpp);}return writeok;}/*^^^^^^^^^^^^^^^^^^^^^^*/main0(){int an,flag=1,action,lenr;char a,w[MAXINPUT];int len,s,ss,aa,ana;stack *st;char r[MAXSH][MAXSHL]; /*初始化产生式*/strcpy(r[0],"S->E");strcpy(r[1],"E->E+T");strcpy(r[2],"E->T");strcpy(r[3],"T->T*F");strcpy(r[4],"T->F");strcpy(r[5],"F->(E)");strcpy(r[6],"F->i");clrscr();printf("\nplease input analyse string:\n");gets(w);len=strlen(w);w[len]='#';w[len+1]='\0';initstack(st);push(st,48); /* (int)0 进栈*/writefile(-1,"\n------------------------SLR(1)词法分析器-------------------------");writefile(-1,"\n 计本003 安完成于2003.01.12 14:04");writefile(-1,"\n谢谢");writefile(-1,"网 ");writefile(-1,"\n 以下为串");writefile(-1,w);writefile(-1,"('#'为系统添加)的分析结果: ");writefile(-2," ");do{s=gettop(st);aa=(int)w[ip];action=analys(s,aa);if(action==MOVEIN){ss=48+act;push(st,aa);push(st,ss); /* if ss=4 int =52 */ip++;}else if(action==GUIYUE){lenr=strlen(r[act])-3;for(an=0;an<=2*lenr-1;an++)pop(st); /* #0 */s=gettop(st); /* s=0 */push(st,(int)r[act][0]);/*将产生式左端 F 进栈 */ana=analys(s,(int)r[act][0])+48;if(ana>59)printf("\分析出错:ana>59!!!");push(st,ana);/*analys(s,aa)即为goto(s',aa) */if((line+1)%20==0){printf("\nThis screen is full,press any key to continue!!!");getche();clrscr();}printf(" step %02d: %s\n",line++,r[act]);writefile(line,r[act]);}else if(action==ACC){flag=0;right=1;}else if(action==ERROR){flag=0;right=0;} /*接受成功*/else{flag=0;right=0;} /* 出错*/}while(flag==1);if(right==1)printf("\nok,输入串 %s 为可接受串!!",w);if(right==0)printf("\nsorry,输入串 %s 分析出错!!",w);if(writeok==1){printf("\nAnWin soft have wrote a file an_slr.txt");if(right==1)writefile(-1,"\n最终结果:输入串为可接受串!"); }}main() /*主函数*/{clrscr();delay_fun();logined();}六、测试报告-操作系统课程设计-银行家算法(流程图+源代码+设计报告)六、测试报告:(测试结果保存于系统生成的an.txt 文件中)以下为课本上的实例::-------------------------------------------------------------------------------------========================银行家算法测试结果=========================-------------------------------------------------------------------------------------T0 时刻可用资源(Available) A:3, B:3, C:2测试日期: 2003-6-28 请求分配时间: 14:07:29经测试,可为该进程分配资源。
银行业务系统源代码
#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语言程序设计代码
银行管理系统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语言进行设计和实现,可以实现用户账户的创建、存取款、转账等功能,同时还可以进行利息计算、账单管理等操作。
银行管理系统-C++课程设计
C++课程设计一、课程设计要求二、源程序代码:#include<iostream>#include<fstream>#include<string>#include<vector>#include<algorithm>#include<strstream>#include<conio.h>using namespace std;class Function;class User{public:void get(User& );friend class Function;ostream &print(ostream &os);//friend ostream & operator<<(ostream & o, const User & u);friend istream & operator>>(istream & i, User & u);void PassWord();bool Login(User &);void SaveFile(User &);vector<string> StrFunction;User(){}User(int A,string N,int F,string I,string Ad,int T):Accout(A),Name(N),Fmoney(F),ID(I),Address(Ad),Telephone(T){}int Accout;string Name;int Fmoney;string ID;string Address;int Telephone;char Pword1[9];char Pword2[9];};class Function{public:void Saving(User &);void Drawing(User &);void Balance(User &);void Record(User &);private:int SaveAndDrawMoney;};void Function::Saving(User &u){system("cls");cout<<"\n\n\n\t\t*********************************************\n"<<en dl;cout<<"\t\t请输入存款金额:";string str1("\n\t\t现存RMB 钞+ ");cin>>SaveAndDrawMoney;u.Fmoney+=SaveAndDrawMoney;strstream ss;string str2;ss<<u.Accout;ss>>str2;string frist="Record"+str2 +".txt";const char *RecordFile=frist.c_str();ofstream outfile(RecordFile,ios::out|ios::app);outfile<<str1<<SaveAndDrawMoney<<endl;outfile.close();outfile.clear();cout<<"\n\n\t\t操作成功,单击任何键返回主菜单!";getch();}void Function::Drawing(User &u){system("cls");cout<<"\n\n\n\t\t*********************************************\n"<<en dl;cout<<"\t\t请输入取款金额:";string str1("\n\t\t现取RMB 钞- ");string str2;int k=0;while(k<=3){cin>>SaveAndDrawMoney;u.Fmoney -=SaveAndDrawMoney;if(u.Fmoney>=0){system("cls");cout<<"\n\n\n\t\t正在出炒,请稍等!"<<endl;strstream ss;ss<<u.Accout;ss>>str2;string frist="Record"+str2 +".txt";const char *RecordFile=frist.c_str();ofstream outfile(RecordFile,ios::out|ios::app);outfile<<str1<<SaveAndDrawMoney<<endl;outfile.close();outfile.clear();break;}else{k++;if(k>=3){system("cls");cerr<<"\n\n\n\t\t很抱歉,你重复输入错误多次"<<endl<<"\n\t\t正在退卡中……"<<endl;exit(0);}system("cls");u.Fmoney +=SaveAndDrawMoney;cerr<<"\n\n\n\t\t对不起,你输入的金额超出有效金额。
银行管理系统c语言程序设计代码
银行管理系统c语言程序设计代码【原创版】目录1.银行管理系统的概述2.C 语言程序设计的概述3.银行管理系统的模块划分4.银行管理系统的主要功能5.C 语言程序设计代码的实现正文1.银行管理系统的概述银行管理系统是一种以计算机技术为基础,对银行业务进行高效、安全管理的系统。
它能够实现对账户、存款、取款、转账等业务的自动化处理,提高工作效率,降低人力成本。
2.C 语言程序设计的概述C 语言是一种通用的、过程式的计算机编程语言,广泛应用于操作系统、嵌入式系统、游戏开发等领域。
C 语言具有语法简洁、执行效率高、跨平台等特点,是许多程序员的首选编程语言。
3.银行管理系统的模块划分银行管理系统可以划分为以下几个模块:用户管理模块、账户管理模块、存款管理模块、取款管理模块、转账管理模块等。
这些模块可以相互独立,又可以协同工作,共同完成银行管理系统的各项功能。
4.银行管理系统的主要功能(1)用户管理:包括用户登录、用户信息维护等功能,确保系统的安全性和稳定性。
(2)账户管理:包括账户的创建、查询、修改、删除等功能,方便用户对账户信息的管理。
(3)存款管理:包括存款、取款、转账等业务操作,实现对账户资金的实时监控和管理。
(4)报表统计:可以生成各种报表,如账户余额报表、交易明细报表等,方便用户进行数据分析和决策。
5.C 语言程序设计代码的实现基于 C 语言的银行管理系统代码实现,主要包括数据结构、函数和主程序三部分。
(1)数据结构:定义各种数据类型,如账户结构体、用户结构体等,用于存储系统中的数据。
(2)函数:实现各个模块的功能,如用户登录函数、账户查询函数等。
(3)主程序:负责系统的整体运行,包括用户交互、模块调用、数据处理等。
C++程序设计课程设计银行账户管理系统源程序
#include <iostream>#include <iomanip>#include <fstream>#include <string>#include <stdlib.h>#include<time.h>using namespace std;enum Status {UNHOOKED,HOOKED};enum MenuType {MAINMENU, ADM_SUBMENU, USER_SUBMENU};enum FuncType {NONE, ADM_MOD, USER_MOD, OPEN_ACCOUNT, REPORT_LOSS, UNHOOKING, CLOSE_ACCOUNT,SAVING, DRAWING, INQUIRING, TRANSFERING, MODIFY_PASSWORD,EXIT};struct Date{int month;int day;int year;};struct UserInfo{char userNum[14];char userName[15];char userID[19];char password[7];Date openDate;Status status;int money;};struct UserNode{UserInfo userinfo;UserNode *next;};UserNode *head=NULL,*p=NULL;void Wait();void Save(char filename[]);void RemoveUserList();void GenCardNum(char cardnum[],UserNode *&head); FuncType ShowMenu(MenuType which);UserInfo &GetUserInfo(UserInfo &userinfo);UserNode *CreateUserList(char filename[]);UserNode *OpenAccount(UserInfo &userinfo);UserNode *Entry(UserNode *&head);bool CloseAccount(UserNode *&head);bool HookAccount(UserNode *&head);bool UnhookAccount(UserNode *&head);void Saving(UserNode *&);void Drawing(UserNode *&);void Inquiring(UserNode *&);void Transfering(UserNode *&);void ModifyPassword(UserNode *&);int count;int main(){UserInfo userinfo;int cont=1;int cont1=1;int cont2=1;head = CreateUserList("userinfo.txt");while(cont){switch(ShowMenu(MAINMENU)){case ADM_MOD:cont1=1;while(cont1){FuncType func;func=ShowMenu(ADM_SUBMENU);switch(func){case OPEN_ACCOUNT:GetUserInfo(userinfo);head=OpenAccount(userinfo);break;case REPORT_LOSS:HookAccount(head);break;case UNHOOKING:UnhookAccount(head);break;case CLOSE_ACCOUNT:CloseAccount(head);break;case EXIT:cont1=0;break;default:break;}}break;case USER_MOD:if(p=Entry(head)){cont2=1;while(cont2){FuncType func;func=ShowMenu(USER_SUBMENU);switch(func){case SAVING:Saving(p);break;case DRAWING:Drawing(p);break;case INQUIRING:Inquiring(p);break;case TRANSFERING:Transfering(p);break;case MODIFY_PASSWORD:ModifyPassword(p);break;case EXIT:cont2=0;break;default:break;}}}break;case EXIT:RemoveUserList();cont=0;break;default:break;}}return 0;}void Wait(){long j=0;for(double i=1000000;i>0;){i=i-0.002;j++;j--;}}FuncType ShowMenu(MenuType which){FuncType func = NONE;int choice = 0;switch(which){case MAINMENU:cout << "************************************************\n";cout << "* 银行账户管理系统 *\n";cout << "* *\n";cout << "* 选择一个功能: *\n";cout << "* (1) 管理员模式 (Administrator Module) *\n";cout << "* (2) 用户模式 (User Module) *\n";cout << "* (3) 退出系统 *\n";cout << "************************************************\n";cout << "* Your Choice (1-3):";cin >> choice;cout << "************************************************\n";switch(choice){case 1: func = ADM_MOD; break;case 2: func = USER_MOD; break;case 3: func = EXIT; break;default: func = NONE; break;}break;case ADM_SUBMENU:cout << "***********************************************\n";cout << "* 银行账户管理系统(管理员) *\n";cout << "* *\n";cout << "* 选择一个功能: *\n";cout << "* (1) 开户 *\n";cout << "* (2) 挂失 *\n";cout << "* (3) 解除挂失 *\n";cout << "* (4) 消户 *\n";cout << "* (5) 返回主菜单 *\n";cout << "***********************************************\n";cout << "* Your Choice (1-5):";cin >> choice;cout << "***********************************************\n";switch(choice){case 1: func = OPEN_ACCOUNT; break;case 2: func = REPORT_LOSS; break;case 3: func = UNHOOKING; break;case 4: func = CLOSE_ACCOUNT; break;case 5: func = EXIT; break;default: func = NONE; break;}break;case USER_SUBMENU:cout << "***********************************************\n";cout << "* 银行账户管理系统(用户) *\n";cout << "* *\n";cout << "* 功能选择: *\n";cout << "* (1) 存款 *\n";cout << "* (2) 取款 *\n";cout << "* (3) 查询 *\n";cout << "* (4) 转账 *\n";cout << "* (5) 更改密码 *\n";cout << "* (6) 取卡 *\n";cout << "***********************************************\n";cout << "* Your Choice (1-6):";cin >> choice;cout << "***********************************************\n";switch(choice){case 1: func = SAVING; break;case 2: func = DRAWING; break;case 3: func = INQUIRING; break;case 4: func = TRANSFERING; break;case 5: func = MODIFY_PASSWORD; break;case 6: func = EXIT; break;default: func = NONE; break;}break;default:cout << "NO SUCH A MENU!!\n";break;}return func;}UserNode *CreateUserList(char filename[]){UserNode *p;int status=0;ifstream userdata(filename);if(!userdata){cout<<"文件不存在!"<<endl;return NULL;}while(!userdata.eof()){if(p=new UserNode){userdata>>p->erNum;userdata>>p->erName;userdata>>p->erID;userdata>>p->userinfo.password;userdata>>p->userinfo.money;userdata>>p->userinfo.openDate.year>>p->userinfo.openDate.month>>p->userinf o.openDate.day;userdata>>status;p->userinfo.status=(Status)status;p->next=head;head=p;}}userdata.close();return head;}void RemoveUserList(){for(UserNode *p2,*p1=head;p1;p1=p2){p2=p1->next;delete p1;}head=NULL;}UserNode *OpenAccount(UserInfo &userinfo){UserNode *p;char c;if(p=new UserNode){strcpy(p->erNum,erNum);strcpy(p->erName,erName);strcpy(p->erID,erID);strcpy(p->userinfo.password,userinfo.password);p->userinfo.openDate.year=userinfo.openDate.year;p->userinfo.openDate.month=userinfo.openDate.month;p->userinfo.openDate.day=userinfo.openDate.day;p->userinfo.money=userinfo.money;p->userinfo.status=userinfo.status;p->next=head;head=p;}cout<<"确认-Y/否-N : ";cin>>c;cout<<"您的卡号为: "<<p->erNum<<endl;if(c=='y'){Save("userinfo.txt");return p;}else{p=head;head=head->next;delete p;return head;}}bool HookAccount(UserNode *&head){char cardnum[14],c;int status=1;cout<<"请输入用户卡号: ";cin>>cardnum;UserNode *p1=head,*p2=head->next;if(!strcmp(head->erNum,cardnum)){if(head->userinfo.status==1) {cout<<"此卡已经挂失!"<<endl;return false;} cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){head->userinfo.status=(Status)status;Save("userinfo.txt");return true;}else return false;}while(p2!=NULL){if(!strcmp(p2->erNum,cardnum)) break;else {p1=p2;p2=p2->next;}}if(p2==NULL) {cout<<"此卡号不存在,无法挂失!"<<endl;return false;}if(p2->userinfo.status==1) {cout<<"此卡已经挂失!"<<endl;return false;}cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){p2->userinfo.status=(Status)status;Save("userinfo.txt");return true;}else return false;}bool UnhookAccount(UserNode *&head){char cardnum[14],c;int status=0;cout<<"请输入用户卡号: ";cin>>cardnum;UserNode *p1=head,*p2=head->next;if(!strcmp(head->erNum,cardnum)){if(head->userinfo.status==0) {cout<<"此卡没有挂失,无需解挂!"<<endl;return false;}head->userinfo.status=(Status)status;cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){Save("userinfo.txt");return true;}else return false;}while(p2!=NULL){if(!strcmp(p2->erNum,cardnum)) break;else {p1=p2;p2=p2->next;}}if(p2==NULL) {cout<<"此卡号不存在,无法解挂!"<<endl;return false;}if(p2->userinfo.status==0) {cout<<"此卡没有挂失,无需解挂!"<<endl;return false;}p2->userinfo.status=(Status)status;cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){Save("userinfo.txt");return true;}else return false;}bool CloseAccount(UserNode *&head){int count=0;char cardnum[14],code[7],c;cout<<"请输入用户卡号: ";cin>>cardnum;UserNode *p1=head,*p2=head->next;if(p1==NULL){cout<<"用户记录为空,无法销户!"<<endl;return false;}if(!strcmp(head->erNum,cardnum)){cout<<"请输入密码: ";cin>>code;count++;while(strcmp(head->userinfo.password,code)!=0 && count<=3){cout<<"密码错误,请重新输入: ";cin>>code;count++;}if(count>3) return false;cout<<"用户卡号: "<<p1->erNum<<endl;cout<<"用户姓名: "<<p1->erName<<endl;cout<<"用户身份证号: "<<p1->erID<<endl;cout<<"用户密码: "<<p1->userinfo.password<<endl;cout<<"用户储蓄额: "<<p1->userinfo.money<<endl;cout<<"开户日期: "<<p1->userinfo.openDate.year<<"年"<<p1->userinfo.openDate.month<<"月"<<p1->userinfo.openDate.day<<"日"<<endl;cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){head=p2;delete p1;Save("userinfo.txt");return true;}else return false;}while(p2!=NULL){if(!strcmp(p2->erNum,cardnum)) break;else {p1=p2;p2=p2->next;}}if(p2==NULL) {cout<<"此卡号不存在,无法销户!"<<endl;return false;}cout<<"请输入密码: ";cin>>code;count++;while(strcmp(p2->userinfo.password,code)!=0 && count<3){cout<<"密码错误,请重新输入: ";cin>>code;count++;}if(count>=3) return false;cout<<"用户卡号: "<<p2->erNum<<endl;cout<<"用户姓名: "<<p2->erName<<endl;cout<<"用户身份证号: "<<p2->erID<<endl;cout<<"用户密码: "<<p2->userinfo.password<<endl;cout<<"用户储蓄额: "<<p2->userinfo.money<<endl;cout<<"开户日期: "<<p2->userinfo.openDate.year<<"年"<<p1->userinfo.openDate.month<<"月"<<p1->userinfo.openDate.day<<"日"<<endl;cout<<"确认-Y/取消-N: ";cin>>c;if(c=='y'){p1->next=p2->next;delete p2;Save("userinfo.txt");return true;}else return false;}UserInfo &GetUserInfo(UserInfo &userinfo){char code[7];int status=0;userinfo.status=(Status)status;cout<<"请输入用户姓名: ";cin>>erName;cout<<"请输入用户身份证号: ";cin>>erID;cout<<"请输入密码: ";cin>>userinfo.password;cout<<"请再次输入密码: ";cin>>code;while(strcmp(userinfo.password,code)){cout<<"请重新输入密码: ";cin>>userinfo.password;cout<<"请再次输入密码: ";cin>>code;}cout<<"请输入储蓄金额: ";cin>>userinfo.money;cout<<"请输入开户日期: ";cin>>userinfo.openDate.year>>userinfo.openDate.month>>userinfo.openDate.day ;GenCardNum(erNum,head);return userinfo;}void GenCardNum(char cardnum[],UserNode *&head){cardnum[14];char str1[100],str2[100];int n;int i=0;int bits=0;int count=0;for(UserNode *p=head;p;p=p->next)count++;n=count;do{str1[i++]=n%10+'0';bits++;n=n/10;}while(n>0);for(int j=0;j<13-bits;j++)cardnum[j]='0';cardnum[j]='\0';for(int k=bits-1;k>=0;k--)str2[bits-1-k]=str1[k];str2[bits]='\0';strcat(cardnum,str2);count++;}UserNode *Entry(UserNode *&head){int count=0;char cardnum[14],code[7];cout<<"请输入卡号: ";cin>>cardnum;UserNode *p1=head,*p2=head->next;if(p1==NULL){cout<<"用户记录为空,无法登录!"<<endl;return p1;}if(!strcmp(head->erNum,cardnum)){if(head->userinfo.status==1){cout<<"此卡已经挂失,无法登录!"<<endl;return NULL;}cout<<"请输入密码: ";cin>>code;count++;while(strcmp(head->userinfo.password,code)!=0 && count<=3){cout<<"密码错误,请重新输入: ";cin>>code;count++;}if(count>3) return NULL;cout<<"操作正在处理中,请稍后..."<<endl;return head;}while(p2!=NULL){if(!strcmp(p2->erNum,cardnum)) break;else {p1=p2;p2=p2->next;}}if(p2==NULL) {cout<<"此卡号不存在,无法登录!"<<endl;return NULL;} if(p2->userinfo.status==1){cout<<"此卡已经挂失,无法登录!"<<endl;return NULL;}cout<<"请输入密码: ";cin>>code;count++;while(strcmp(p2->userinfo.password,code)!=0 && count<3){cout<<"密码错误,请重新输入: ";cin>>code;count++;}if(count>=3) return NULL;cout<<"操作正在处理中,请稍后..."<<endl;Wait();return p2;}void Saving(UserNode *&p){int money;char c;cout<<"请输入存款额: ";cin>>money;cout<<"操作正在处理中,请稍后..."<<endl;Wait();p->userinfo.money=p->userinfo.money+money;Save("userinfo.txt");cout<<"是否打印凭条?(是-Y/否-N): ";cin>>c;if(c=='y'){cout<<"凭条正在打印中..."<<endl;Wait();cout<<"****************************************"<<endl;cout<<"卡号"<<p->erNum<<endl;cout<<"操作:存入"<<endl;cout<<"金额:"<<money<<endl;cout<<"****************************************"<<endl;}return;}void Drawing(UserNode *&p){int money;char c;cout<<"请输入取款额: ";cin>>money;if(money>p->userinfo.money){cout<<"余额不足!";return;}else{cout<<"操作正在处理中,请稍后..."<<endl;Wait();p->userinfo.money=p->userinfo.money-money;Save("userinfo.txt");cout<<"请及时取走钞票,否则将会被回收!"<<endl;Wait();cout<<"是否打印凭条?(是-Y/否-N): ";cin>>c;if(c=='y'){cout<<"凭条正在打印中..."<<endl;Wait();cout<<"****************************************"<<endl;cout<<"卡号"<<p->erNum<<endl;cout<<"操作:支出"<<endl;cout<<"金额:"<<money<<endl;cout<<"****************************************"<<endl;}}return;}void Inquiring(UserNode *&p){cout<<"您的余额: "<<p->userinfo.money<<endl;}void Transfering(UserNode *&p){char cardnum[14],c;int money;cout<<"请输入对方卡号: ";cin>>cardnum;for(UserNode *q=head;q;q=q->next){if(!strcmp(cardnum,q->erNum))break;}if(q==NULL){cout<<"此卡号不存在,无法进行转账!";return;}cout<<"请输入转账额: ";cin>>money;if(money>p->userinfo.money){cout<<"您卡上的余额不足,无法进行转账!";return;}cout<<"操作正在处理中,请稍后..."<<endl;Wait();p->userinfo.money=p->userinfo.money-money;q->userinfo.money=q->userinfo.money+money;Save("userinfo.txt");cout<<"转账成功!"<<endl;cout<<"是否打印凭条?(是-Y/否-N): ";cin>>c;if(c=='y') cout<<"凭条正在打印中..."<<endl;Wait();cout<<"****************************************"<<endl;cout<<"由"<<p->erNum<<endl;cout<<"到"<<q->erNum<<endl;cout<<"操作:转账"<<endl;cout<<"金额:"<<money<<endl;cout<<"****************************************"<<endl; }void ModifyPassword(UserNode *&p){char password[7];cout<<"请输入原密码: ";cin>>password;cout<<"请输入新密码: ";cin>>p->userinfo.password;Save("userinfo.txt");return;}void Save(char filename[]){UserNode *p;int status;ofstream userdata(filename);if(!userdata){cout<<"输出文件无法打开!"<<endl;return;}for(p=head;p;p=p->next){userdata<<" "<<p->erNum;userdata<<" "<<p->erName;userdata<<" "<<p->erID;userdata<<" "<<p->userinfo.password;userdata<<" "<<p->userinfo.money;userdata<<" "<<p->userinfo.openDate.year<<" "<<p->userinfo.openDate.month<<" "<<p->userinfo.openDate.day;status=p->userinfo.status;userdata<<" "<<status;}userdata.close();}。
用c语言做了一个简单的银行系统
(
acco un ts.m on ey=acco un ts.m on ey-qukua n;
printfC1取款成功!\n账户余额:%d\n",accounts.mon)
void mai n()
(
char n ame[20];
char mima[20];
intq;
while(t)//主函数加上一个while循环就好了,t表示是否继续使用
系统,选择0时,t=1,即可退出系统了
(
prin tf(n1存款2取款3开户\n”);
printfC* 4销户5查询0退出\n请选择:”);
scan f("%d",&q);
switch(q)
(
case1:
(
qwe();
break;
(
int cun kua n;
prin tf("请输入存款金额:”);
scan f("%d",&cun kua n);
acco un ts.m on ey=c un kua n+acco un ts.m on ey;
printf("存款成功!\n账户余额:%d\n'\accounts.money);
prin tf("==================================================
==\n");
prin tf("================================================== ==\nH);
prin tf("==================欢迎你使用银行系统
简单的银行管理系统的C语言代码
简单的银行管理系统的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");}。
C++课程设计报告(银行管理)
《面向对象程序设计》课程设计题目银行管理系统学院计算机与软件学院专业软件工程班级学号姓名指导教师起止时间1.系统分析 1.1系统功能介绍该系统用于银行管理,具备开户,登录,存款,取款,转账,查询等服务,客户也可以借助该系统修改密码,注销账户。
该系统可以方便银行管理者,更好的管理客户的账户,客户可以通过该系统进行自助服务,大大减少银行工作者的工作量,使银行管理变得简单轻松。
1.2 系统类图该系统源代码共包含两个类,consumer 类和YH 类,其中,consumer 类是YH 类的派 生类,同时也是友元类,具体结构如下。
开户注销转账存款 退出进入账户功能 写入读取客户信息输出客户信息更改信息2 系统设计2.1 系统总体结构储蓄卡开户管理模块:(1) 登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。
若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。
(2) 主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出)(3) 储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。
(4) 存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。
从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。
(5) 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。
(6) 注销页面从关闭文件,状态为注销,最后关闭整个系统。
在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不足;如果取款金额小于存款余额的话就执行,并保存记录。
银行账户管理系统C语言源代码[新版].doc
FILE* file;
file = fopen(cFile, "a");
if (!file) return 0;
fprintf(file, "%s %s %.2lf\n", user, pwd, coin_n);
fclose(file);
return 0;
}
int wenjian(char* user, char* pwd,double coin)
char sh[18];
int n;
p=(struct bank*)malloc(sizeof(struct bank));/*给p分配内存*/
welcome2();
printf("请输入您的名字(纯英文):");
gets(name);
printf("请输入您的性别(男:1女2):");
fflush(stdin);
}
else/*如有相同帐号,注册失败*/
{
system("cls");
printf("您输入的帐号已经存在!注册失败!\n");
printf("请选择:按1返回主页面.按任意键退出:");
scanf("%c",&ch);
if(ch=='1'){system("cls");main();}
else exit(0);
fflush(stdin);
scanf("%c",&ch);
fflush(stdin);
if(ch=='1'){system("cls");main();}
操作系统课程设计银行系统源代码
##include<windows.h>#include<ctime>#include<iostream>using namespace std;#define Seat 10#define Time 500 //顾客来的最大间隔时间int number = 0; //当前服务的顾客总数int PrivateNum=0,PublicNum=0,FinancialNum=0; //取号数int seat_num=10;HANDLE seat,SemaphorePrviate,SemaphorePublic,SemaphoreFinancial;//窗口信号量HANDLE cSemaphorePrviate,cSemaphorePublic,cSemaphoreFinancial; //顾客信号量HANDLE mutex;CRITICAL_SECTION c_seat; //临界区,用来限制同一时刻只能有一个线程来改变座位的数量CRITICAL_SECTION print; //临界区,用来限制同一时刻只能有一个线程来访问资源,防止输出重叠//对私叫号DWORD WINAPI PrivateServiceThread(PVOID s1pv){while(true){srand((unsigned)time(NULL));WaitForSingleObject(cSemaphorePrviate,INFINITE);Sleep(1500);EnterCriticalSection(&print);cout<<"对私窗口叫号!"<<endl;LeaveCriticalSection(&print);ReleaseSemaphore(SemaphorePrviate,1,NULL);EnterCriticalSection(&c_seat);seat_num++;LeaveCriticalSection(&c_seat);}return 0;}//对公叫号DWORD WINAPI PublicServiceThread(PVOID s2pv){while(true){srand((unsigned)time(NULL));WaitForSingleObject(cSemaphorePublic,INFINITE);//p(&cSemaphorePublic)Sleep(1500);EnterCriticalSection(&print);cout<<"对公窗口叫号!"<<endl;LeaveCriticalSection(&print);ReleaseSemaphore(SemaphorePublic,1,NULL);//v(&SemaphorePublic)EnterCriticalSection(&c_seat);seat_num++;LeaveCriticalSection(&c_seat);}return 0;}//理财叫号DWORD WINAPI FinancialServiceThread(PVOID SemaphoreFinancialpv){while(true){srand((unsigned)time(NULL));WaitForSingleObject(cSemaphoreFinancial,INFINITE);//p(&cSemaphoreFinancial)Sleep(1500);EnterCriticalSection(&print);cout<<"理财窗口叫号!"<<endl;LeaveCriticalSection(&print);ReleaseSemaphore(SemaphoreFinancial,1,NULL);//v(&SemaphoreFinancial)EnterCriticalSection(&c_seat);seat_num++;LeaveCriticalSection(&c_seat);}return 0;}//办理对私服务顾客DWORD WINAPI PrivateCustomer(PVOID c1pv){srand((unsigned)time(NULL));int n=rand()%2;if(seat_num<=0&&n==1){EnterCriticalSection(&print);cout<<"等待室座位已满,该顾客选择离开!"<<endl;LeaveCriticalSection(&print);}else if(seat_num<=0){seat_num--;EnterCriticalSection(&print);cout<<"该顾客选择了继续等待,已有"<<-seat_num<<"顾客在门外等待"<<endl;LeaveCriticalSection(&print);}EnterCriticalSection(&c_seat);seat_num--;LeaveCriticalSection(&c_seat);WaitForSingleObject(seat,INFINITE);//p(&seat)WaitForSingleObject(mutex,INFINITE);//p(&mutex)number++;PrivateNum++;int t=PrivateNum;EnterCriticalSection(&print);cout<<"第"<<number<<"个顾客"<<"已取号,号码:A"<<t<<endl;LeaveCriticalSection(&print);ReleaseMutex(mutex);//v(&mutex)ReleaseSemaphore(cSemaphorePrviate,1,NULL);//v(&cSemaphorePrviate)EnterCriticalSection(&print);cout<<"顾客A"<<t<<"等待对私服务!"<<endl;LeaveCriticalSection(&print);int ServeTime=rand()%4000+500;Sleep(ServeTime);WaitForSingleObject(SemaphorePrviate,INFINITE);//p(&SemaphorePrviate)EnterCriticalSection(&print);cout<<"顾客A"<<t<<"正在进入服务!"<<endl;LeaveCriticalSection(&print);Sleep(ServeTime);ReleaseSemaphore(seat,1,NULL);//v(&seat)seat_num++;if(seat_num<=0){EnterCriticalSection(&print);cout<<"门外还剩"<<-seat_num<<"人在等待。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WaitForSingleObject(mutex,INFINITE);//p(&mutex)
number++;
PrivateNum++;
int t=PrivateNum;
EnterCriticalSection(&print);
{
while(true)
{
srand((unsigned)time(NULL));
WaitForSingleObject(cSemaphoreFinancial,INFINITE);//p(&cSemaphoreFinancial)
Sleep(1500);
EnterCriticalSection(&print);
cout<<"第"<<number<<"个顾客"<<"已取号,号码:A"<<t<<endl;
LeaveCriticalSection(&print);
ReleaseMutex(mutex);//v(&mutex)
ReleaseSemaphore(cSemaphorePrviate,1,NULL);//v(&cSemaphorePrviate)
{
while(true)
{
srand((unsigned)time(NULL));
WaitForSingleObject(cSemaphorePrviate,INFINITE);
Sleep(1500);
EnterCriticalSection(&print);
cout<<"对私窗口叫号!"<<endl;
LeaveCriticalSection(&print);
ReleaseSemaphore(SemaphorePrviate,1,NULL);
EnterCriticalSection(&c_seat);
seat_num++;
LeaveCriticalSection(&c_seat);
}
return 0;
LeaveCriticalSection(&c_seat);
}
return 0;
}
//办理对私服务顾客
DWORD WINAPI PrivateCustomer(PVOID c1pv)
{
srand((unsigned)time(NULL));
int n=rand()%2;
if(seat_num<=0&&n==1)
int seat_num=10;
HANDLE seat,SemaphorePrviate,SemaphorePublic,SemaphoreFinancial;//窗口信号量
HANDLE cSemaphorePrviate,cSemaphorePublic,cSemaphoreFinancial;//顾客信号量
{
EnterCriticalSection(&print);
cout<<"等待室座位已满,该顾客选择离开!"<<endl;
LeaveCriticalSection(&print);
}
else if(seat_num<=0)
{
seat_num--;
EnterCriticalSection(&print);
{
EnterCriticalSection(&print);
cout<<"等待室座位已满,该顾客选择离开!"<<endl;
LeaveCriticalSection(&print);
}
else if(seat_num<=0)
{
seat_num--;
EnterCriticalSection(&print);
cout<<"第"<<number<<"个顾客"<<"已取号,号码:C"<<t<<endl;
LeaveCriticalSection(&print);
ReleaseMutex(mutex);//v(&mutex)
EnterCriticalSection(&print);
cout<<"顾客B"<<t<<"正在进入服务!"<<endl;
LeaveCriticalSection(&print);
Sleep(ServeTime);
ReleaseSemaphore(seat,1,NULL);//v(&seat)
seat_num++;
LeaveCriticalSection(&print);
return 0;
}
//办理对公服务顾客
DWORD WINAPI PublicCustomer(PVOID c2pv)
{
srand((unsigned)time(0));
int n=rand()%2;
if( seat_num<=0&&n==1)
EnterCriticalSection(&print);
cout<<"顾客A"<<t<<"正在进入服务!"<<endl;
LeaveCriticalSection(&print);
Sleep(ServeTime);
ReleaseSemaphore(seat,1,NULL);//v(&seat)
seat_num++;
EnterCriticalSection(&print);
cout<<"顾客B"<<t<<"等待对公服务!"<<endl;
LeaveCriticalSection(&print);
int ServeTime=rand()%4000+500;
Sleep(ServeTime);
WaitForSingleObject(SemaphorePublic,INFINITE);//p(&SemaphorePublic)
cout<<"理财窗口叫号!"<<endl;
LeaveCriticalSection(&print);
ReleaseSemaphore(SemaphoreFinancial,1,NULL);//v(&SemaphoreFinancial)
EnterCriticalSection(&c_seat);
seat_num++;
##include<windows.h>
#include<ctime>
#include<iostream>
using namespace std;
#define Seat 10
#define Time 500//顾客来的最大间隔时间
int number = 0;//当前服务的顾客总数
int PrivateNum=0,PublicNum=0,FinancialNum=0; //取号数
cout<<"该顾客选择继续等待,已有"<<-seat_num<<"顾客在门外等待"<<endl;
LeaveCriticalSection(&print);
}
EnterCriticalSection(&c_seat);
seat_num--;
LeaveCriticalSection(&c_seat);
cout<<"第"<<number<<"个顾客"<<"已取号,号码:B"<<t<<endl;
LeaveCriticalSection(&print);
ReleaseMutex(mutex);//v(&mutex)
ReleaseSemaphore(cSemaphorePublic,1,NULL);//v(&cSemaphorePublic)
}
//对公叫号
DWORD WINAPI PublicServiceThread(PVOID s2pv)
{
while(true)
{
srand((unsigned)time(NULL));
WaitForSingleObject(cSemaphorePublic,INFINITE);//p(&cSemaphorePublic)
WaitForSingleObject(seat,INFINITE);//p(&seat)
WaitForSingleObject(mutex,INFINITE);//p(&mutex)
number++;
PublicNum++;
int t=PublicNum;
EnterCriticalSection(&print);