主函数main.cpp

/** Copyright (c) 2015, 烟台大学计算机学院* All rights reserved.* 文件名称:yhxt.cpp* 作    者:李盈盈* 完成日期:2015年 06 月 24 日* 版 本 号:v1.0** 问题描述:银行系统*/
#include <iostream>
#include <cstdio>
#include<fstream>
#include<iomanip>
#include <stdio.h>
#include <conio.h>    //将密码变成*号
#include "head.h"
#include <stdlib.h>
using namespace std;
int pass();  //业务员登录
int chooseInMenu(); //显示菜单并由业务员选择
int inputPassword();   //返回键盘输入的密码
void ctime();
/**********************
*功能描述:开始界面
*输入参数:无
*输出参数:无
*返回值:无
*其它说明:无
**********************/
void welcome()
{cout<<"+----------------------+"<<endl;cout<<"+   欢迎光临CSDN银行   +"<<endl;cout<<"+----------------------+"<<endl;
}
/**********************
*功能描述:主函数
*输入参数:无
*输出参数:无
*返回值:无
*其它说明:无
**********************/
int main()
{welcome();Bank b;if(pass())b.work();return 0;
}

头文件head.h

#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <cstring>
#include <stdio.h>
#include <time.h>
#include <iostream>
using namespace std;class Bank;
class User
{
public:void setUser(int acc, string nam, string xid,string xaddr,int pw, double bal,int sta);void showName();                 //显示姓名void showaddress();              //显示地址void showid();                   //显示身份证号void showBalance(string prompt); //显示余额,前面加上提示词promptbool passwordIsRight();          //校验密码,输入的密码正确则返回truebool isNormalUser();            //存款、取款、转帐等功能,需要账户处于正常姿态,处于正常状态时返回true,其他情形返回false并提示friend class Bank;              //将Bank声明为友元类,方便其访问数据成员
private:int account;     //账号string name;     //用户名string cid;      //身份证号string address;  //家庭住址int password;    //密码double balance;  //账户余额int status;     //状态 0-正常  1-挂失  2-销户 3-冻结
};class Bank
{
public:Bank();void cinfile();          //从文件中读数据,存在数组中void coutfile();         //将数组中的数据写入到文件中void work();             //业务驱动void openAccount();      //开户void cancelAccount();    //注销账户void save();             //存款void withdraw();         //取款void showAccount();      //查询余额void transferAccounts();  //转账void reportLoss();       //挂失void cancelLoss();       //解除挂失void updatePassword();   //更改密码void dongjie();         //冻结账号void jiedong();         //解除冻结int getUser();          //输入账号查询用户,返回用户在对象数组中的下标
private:int N;                  //实际的用户数目User *users;            //User数组,耗空间啊!改进方案:1.对象指针数组;2. 动态数组;3. 链表
};int pass();                //业务员登录
int chooseInMenu();        //显示菜单并由业务员选择
int inputPassword();       //返回键盘输入的密码#endif // BANK_H_INCLUDED

普通函数work.cpp

#include <iostream>
#include <fstream>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <ctype.h>
#include "head.h"
using namespace std;/***************
功能:验证用户密码
返回值:密码正确,返回1;不能通过密码验证,返回0
****************/
int pass()
{char sNameInFile[20];   //由文件中读出的业务员用户名char sPassInFile[20];  //文件中保存的密码,这一版本中,用字符保存密码ifstream infile("password.txt",ios::in);if(!infile){cout<<"password file cannot open!"<<endl;exit(1);}infile>>sNameInFile>>sPassInFile;infile.close();char sName[20];   //业务员登录时输入的用户名char sPass[20];  //业务员登录时输入的密码char ch;int iTry=3;   //进入系统时尝试的次数int right = 0;  //要返回的结果:0-不正确 1-正确//进入系统,密码三次不对将退出do{cout<<"请输入业务员用户名:";cin>>sName;cout<<"请输入密码:";int i=0;while((ch=getch())!='\r')  //getch在接受输入后,不在屏幕上显示{sPass[i++]=ch;putchar('*');   //接受任何字符,屏幕上只显示*}sPass[i]='\0';fflush(stdin);cout<<endl;;if(strcmp(sPass,sPassInFile)==0&&strcmp(sName,sNameInFile)==0){right = 1;break;}else{iTry--;if(iTry>0)cout<<"超过3次将退出,你还可以尝试"<<iTry<<"次!"<<endl;else{cout<<"对不起,你不能进入系统"<<endl;;}}}while(iTry);return right;
}/*
关于getch()的一点说明:
所在头文件:conio.h
函数用途:从控制台读取一个字符,但不显示在屏幕上
函数原型:int getch(void)
返回值:读取的字符
在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)
1)windows平台下ENTER键会产生两个转义字符 \r\n,因此getch返回13(\r)。
2)unix、 linux系统中ENTER键只产生 \n ,因此getch返回10(\n)。
3)MAC OS中ENTER键将产生 \r ,因此getch返回13(\r)。
为避免键盘缓存区中未读出的字符影响程序,用fflush(stdin);清除输入缓存区
*//***************
功能:显示菜单并由业务员选择
返回值:用户选择的功能,范围0-11
****************/
int chooseInMenu()
{int i;while(1){cout<<endl;;cout<<"+----------------------------+"<<endl;cout<<"+ 1 开户    2 销户    3 存款 +"<<endl;cout<<"+ 4 取款    5 查询    6 转账 +"<<endl;cout<<"+ 7 挂失    8 解挂    9 改密 +"<<endl;cout<<"+ 10冻结    11解冻    0 退出 +"<<endl;cout<<"+----------------------------+"<<endl;cout<<"请输入操作指令:";cin>>i;if(i>=0 && i<=11)break;elsecout<<"请重新选择功能"<<endl;;}return i;
}/***************
功能:输入密码
返回值:整型的密码值
技术说明:
(1)此功能在多个模块中都要用到且功能单一,故分离出来,单独作业一个函数
(2)为了便于在输入中只显示*,接受输入时以字符形式输入,而后转为对应的整型数
(3)规定密码由不全为0的6位数字构成(当开头是'0'时,实际不足6位),一旦输入错误将重新输入
附:在实际的系统中,密码通常用字符串描述,即使只允许出现数字字符,本例仅作为参考
****************/
int inputPassword()
{char ch;  //接收字符形式密码int iPass=0;   //要转换为数字int i;while(1){for(i=0; i<6; i++){ch=getch();  //输入但不显示putchar('*');   //输出*if(isdigit(ch))iPass=iPass*10+(ch-'0');else{iPass=0;break;  //退出for循环后,再次接受}}fflush(stdin); //清除键盘缓存区中已经有的输入cout<<endl;;if(iPass==0)  //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环{cout<<"密码要求全为数字,且不能全0!"<<endl;;cout<<"请重新输入密码: ";}elsebreak;}return iPass;
}/***********************
*功能:用于获取系统时间
*输入参数:无
*输出参数:year,month,day,hour,minute,second.
*返回值:无
*其他说明:无
***********************/
void ctime(){tm *year;    //年tm *month;   //月tm *day;     //日tm *hour;    //时tm *minute;  //分tm *second;  //秒time_t t;t=time(0);year   = localtime(&t);month  = localtime(&t);day    = localtime(&t);hour   = localtime(&t);minute = localtime(&t);second = localtime(&t);ofstream outfile("yw.txt",ios::app);if(!outfile)                          //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}outfile<<(year ->tm_year+1900)<<"年"  //返回的是今年减1900,所以要加上1900<<(month->tm_mon+1)<<"月"     //因为Month (0 – 11; January = 0),所以要加1<<day   ->tm_mday<<"日"<<hour  ->tm_hour<<"时"<<minute->tm_min<<"分"<<second->tm_sec<<"秒";}

Bank类函数bank.cpp

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include "head.h"
#include <ctype.h>
using namespace std;
int acount();
void ctime();
Bank::Bank(){}/***********************
*功能:用于读取文件中保存的业务数据
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:无
***********************/
void Bank::cinfile()
{ifstream infile("account.dat",ios::in);if(!infile){cerr<<"open error!"<<endl;exit(1);}N = acount(); //用静态数据成员users=new User[N+1];int i=0;int acc;      //账号string nam;   //姓名string eid;   //身份证号string eaddr; //家庭住址int pw;       //密码double bal;   //金额int sta;      //状态while(infile>>acc>>nam>>eid>>eaddr>>pw>>bal>>sta)   //当读取成功……{users[i].setUser(acc,nam,eid,eaddr,pw,bal,sta);i++;}infile.close();
}/***********************
*功能:用于读取文件中保存的数据的人数
*输入参数:无
*输出参数:无
*返回值:anum-当前账户数量
*其他说明:无
***********************/
int acount()
{ifstream infile("account.dat",ios::in);if(!infile){cerr<<"open error!"<<endl;exit(1);}int anum=0;int acc;     //账号string nam;   //姓名int pw;      //密码double bal;   //金额string eid;   //身份证号string eaddr; //家庭住址int sta;      //状态while(infile>>acc>>nam>>eid>>eaddr>>pw>>bal>>sta)   //当读取成功……{++anum;}return anum;}/***********************
*功能:用于将数据保存到文件中
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:无
***********************/
void Bank::coutfile()
{ofstream outfile("account.dat",ios::out);if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}int i;for(i=0; i<N; i++){outfile<<users[i].account<<" ";outfile<<users[i].name<<" ";outfile<<users[i].cid<<" ";outfile<<users[i].address<<" ";outfile<<users[i].password<<" ";outfile<<users[i].balance<<" ";outfile<<users[i].status<<endl;}outfile.close();
}/***********************
*功能:办理业务
*输入参数:iChoice   //int型
*输出参数:无
*返回值:无
*其他说明:无
***********************/
void Bank::work()
{int iChoice;   //用于选择系统功能//办理业务do{cinfile();iChoice = chooseInMenu();  //从菜单中获得功能代码switch(iChoice){case 1:openAccount();    //开户break;case 2:cancelAccount();  //注销账户break;case 3:save();            //存款break;case 4:withdraw();       //取款break;case 5:showAccount();     //查询余额break;case 6:transferAccounts();  //转账break;case 7:reportLoss();        //挂失break;case 8:cancelLoss();      //解除挂失break;case 9:updatePassword();   //更改密码break;case 10:dongjie();        //冻结账号break;case 11:jiedong();        //解除冻结break;case 0:cout<<"欢迎您再来. "<<endl;}coutfile();}while(iChoice);delete []users;
}/***********************
*功能:开户
*输入参数:账号acc;      // int型姓名nam;      // string型身份证号did;  // string型地址daddr;      // string型密码pw;       //  int型金额bal;      // double 型
*输出参数:无
*返回值:无
*其他说明:在进入系统时,在读入数据过程中,已经记录了用户数为N,在数组中对应下标为0~N-1开户时要增加一个用户,只要为下标为N的数组元素置值,并在成功之后令N++即可。账号由系统自动生成(10001+序号),保证其连续,这样在顺序增加的时候,就保证了其有序。
***********************/
void Bank::openAccount()
{//下面正常办理开户业务int acc;   //账号string nam;   //姓名string did;  //身份证号string daddr; //家庭住址int pw;   //密码double bal;   //金额int sta;   //状态cout<<"正在开户"<<endl;acc=10001+N;cout<<"账号:"<<acc<<endl;cout<<"户主姓名:";cin>>nam;cout<<"身份证号:";cin>>did;while(did.length()!=18){cout<<"身份证号码必须是18位!"<<endl<<"重新输入:";cin>>did;}cout<<"家庭住址:";cin>>daddr;int iPass1, iPass2;cout<<"密码:";iPass1=inputPassword();  //输入密码1cout<<"确认密码:";iPass2=inputPassword();  //输入密码2if(iPass1==iPass2){pw=iPass1;sta=0; //账户状态为“正常”cout<<"存入金额:";cin>>bal;users[N].setUser(acc, nam,  did,daddr,pw,bal,sta);N++; //正式用户数增加1,确认了新用户已经加入cout<<"成功开户!"<<endl;}else{cout<<"两次密码不一致,未成功开户!"<<endl; //没有N++,则读入的值无效}
}/***********************
*功能:注销账户
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:找到账户,并将其状态改为2-注销即可。
注销前应该检查余额,应该先取款再注销
***********************/
void Bank::cancelAccount()
{int who;  //查找到该账号在数组中对应的下标who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();users[who].showBalance("余额");   //提示"余额"二字,显示金额if(users[who].status==0||users[who].status==1||users[who].status==2){cout<<"确认销户(y/n)?";if(tolower(getchar())=='y'){users[who].showBalance("销户成功!本次取款金额为");users[who].balance=0;  //取款后余额变0users[who].status=2;  //状态变为注销}else{cout<<"你取消了操作,销户失败!"<<endl;}}else if(users[who].status==3)cout<<"该用户处于冻结状态,不能销户!";fflush(stdin);  //清除了getchar()时在键盘缓存中的遗留,以免影响后续操作}}
}
/***********************
*功能:存款
*输入参数:money   //double 型
*输出参数:无
*返回值:无
*其他说明:需要保证账户存在,且处于正常状态
***********************/
void Bank::save()
{int who;double money;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{if(users[who].status==0){users[who].showName();users[who].showid();users[who].showaddress();cout<<"输入存款额:";cin>>money;users[who].balance+=money;users[who].showBalance("存款后,您有");ofstream outfile("yw.txt",ios::app);if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}ctime();outfile<<"  ";outfile<<users[who].account<<" "<<users[who].name<<" "<<"存入金额"<<money<<"元"<<endl;outfile.close();}else if(users[who].status==1){cout<<"该用户处于挂失状态,存款失败!"<<endl;}else if(users[who].status==3){cout<<"该用户处于冻结状态,存款失败!"<<endl;}else{cout<<"该用户已经销户,存款失败!"<<endl;}}return;
}/***********************
*功能:取款
*输入参数:money    // double型
*输出参数:无
*返回值:无
*其他说明:需要保证账户存在,且处于正常状态,另外,余额要足够取
***********************/
void Bank::withdraw()
{int who;double money;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{if(users[who].isNormalUser()){users[who].showName();users[who].showid();users[who].showaddress();if(users[who].passwordIsRight()){cout<<"输入取款额:";cin>>money;if(money>users[who].balance)  //亲,不玩透支{cout<<"余额不足,取款失败!"<<endl;}else{users[who].balance-=money;users[who].showBalance("取款后,还有");ofstream outfile("yw.txt",ios::app);if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}ctime();outfile<<"  ";outfile<<users[who].account<<" "<<users[who].name<<" "<<"取走金额"<<money<<"元"<<endl;outfile.close();}}}}return;
}
/***********************
*功能:查询账户
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:显示账户信息
***********************/
void Bank::showAccount()
{int who;string hms;int cacc;string cname;string cyw;string sta[4]= {"正常","挂失","已经销户","冻结"};who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();users[who].showBalance("余额");cout<<"状态:"<<sta[users[who].status]<<endl;cout<<"是否查询明细(y/n)?";if(tolower(getchar())=='y'){ifstream infile("yw.txt",ios::in);if(!infile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}while(infile>>hms>>cacc>>cname>>cyw){if(users[who].name==cname)cout<<hms<<" "<<cacc<<" "<<cname<<" "<<cyw<<endl;}if(users[who].name!=cname)cout<<"当前未办理过任何业务。"<<endl;infile.close();}else{cout<<endl;}}return;}
}/***********************
*功能:转账
*输入参数:money   //double型
*输出参数:无
*返回值:无
*其他说明:需要保证两个账户都存在,且处于正常状态,另外,转出账户的余额要足够
***********************/
void Bank::transferAccounts()
{int whoout, whoin;double money;cout<<"转出自";whoout = getUser();  //根据账号查询用户,返回用户的下标if(whoout>=0)   //说明id账户存在{if(users[whoout].isNormalUser()){users[whoout].showName();if(users[whoout].passwordIsRight()){users[whoout].showid();users[whoout].showaddress();cout<<"输入转账金额:";cin>>money;if(money>users[whoout].balance)  //亲,不玩透支{cout<<"余额不足,转账失败!"<<endl;}else{cout<<"转出到";whoin = getUser();  //根据账号查询用户,返回用户的下标if(whoin>=0)   //说明id账户存在{if(users[whoin].isNormalUser()){users[whoout].balance-=money;users[whoin].balance+=money;users[whoout].showBalance("转账后,您还有");ofstream outfile("yw.txt",ios::app);if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}ctime();outfile<<"  ";outfile<<users[whoout].account<<" "<<users[whoout].name<<" "<<"转出金额"<<money<<"元"<<endl;outfile.close();}}}}}}return;
}/***********************
*功能:挂失账户
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:无
***********************/
void Bank::reportLoss()
{int who;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();if(users[who].status==0){users[who].status=1;cout<<"挂失成功"<<endl;}else if(users[who].status==3){cout<<"该账户已经处于冻结状态"<<endl;}else if(users[who].status==1){cout<<"该账户已经处于挂失状态"<<endl;}else{cout<<"该账户已销户,不能挂失"<<endl;}}}return;
}/***********************
*功能:解除挂失
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:当账户处于挂失状态时
***********************/
void Bank::cancelLoss()
{int who;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();if(users[who].status==0){cout<<"该账户处于正常状态,不需要解除挂失"<<endl;}else if(users[who].status==1){users[who].status=0;cout<<"解除挂失成功"<<endl;}else if(users[who].status==3){cout<<"该账户已冻结,操作无效"<<endl;}else{cout<<"该账户已销户,操作无效"<<endl;}}}return;
}/***********************
*功能:改密码
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:无
***********************/
void Bank::updatePassword()
{int who;int iPass1, iPass2;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].status==0||users[who].status==1||users[who].status==2){if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();cout<<"新密码:";iPass1=inputPassword();  //输入密码1cout<<"确认密码:";iPass2=inputPassword();  //输入密码2if(iPass1==iPass2){users[who].password=iPass1;cout<<"修改成功!"<<endl;ofstream outfile("yw.txt",ios::app);if(!outfile)    //测试文件打开操作是否成功,不成功则提示后退出。{cerr<<"open error!"<<endl;exit(1);}ctime();outfile<<"  ";outfile<<users[who].account<<" "<<users[who].name<<" "<<"修改一次密码"<<endl;outfile.close();}else{cout<<"两次输入不同,修改失败!"<<endl;}}}else if(users[who].status==3)cout<<"该账户处于冻结状态,操作失败!"<<endl;}return;
}/***********************
*功能:冻结账号
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:当账户处于正常状态时
***********************/
void Bank::dongjie()
{int who;who= getUser();if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();if(users[who].status==0){users[who].status=3;cout<<"冻结成功"<<endl;}else if(users[who].status==1){cout<<"该账户已经处于挂失状态,操作不成功"<<endl;}else if(users[who].status==3){cout<<"该账户已经处于冻结状态"<<endl;}else{cout<<"该账户已销户,不能冻结"<<endl;}}}return;
}/***********************
*功能:解除冻结
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:当账户处于冻结状态时
***********************/
void Bank::jiedong()
{int who;who = getUser();  //根据账号查询用户,返回用户的下标if(who>=0)   //说明id账户存在{users[who].showName();if(users[who].passwordIsRight()){users[who].showid();users[who].showaddress();if(users[who].status==0){cout<<"该账户处于正常状态,不需要解除冻结"<<endl;}else if(users[who].status==3){users[who].status=0;cout<<"解除冻结成功"<<endl;}else if(users[who].status==1){cout<<"该账户处于挂失状态,操作无效"<<endl;}else{cout<<"该账户已销户,操作无效"<<endl;}}}return;
}/***********************
*功能:输入账号查询用户,返回用户在数组中的下标
*输入参数:要查询用户的账号
*输出参数:无
*返回值:如果该用户存在,返回该用户在数组中的下标,否则,返回一个负数(-1)
*其他说明:由账号自动产生,使按账号有序,本模块采用二分查找
***********************/
int Bank::getUser()
{int id;cout<<"账号:";cin>>id;int index=-1;int low=0, high=N-1, mid;while(low<=high){mid = (low+high)/2;if(users[mid].account==id){index=mid;break;   //找到了,立即退出循环}else if (users[mid].account>id)high=mid-1;elselow=mid+1;}if (index<0)cout<<"该用户不存在,本次操作失败!"<<endl;return index; //若找到,其值在0~N-1间,否则,保持-1
}

User类函数user

#include <iostream>
#include "head.h"
using namespace std;/***************
*功能:对用户进行赋值
*输入参数:无
*输出参数:无
*返回值:无
*其他说明:无
****************/
void User::setUser(int acc, string nam, string xid,string xaddr,int pw, double bal,int sta)
{account=acc;name=nam;cid=xid;address=xaddr;password=pw;balance=bal;status=sta;
}/***************
*功能:显示姓名
*输入参数:无
*输出参数:name  //string型
*返回值:无
*其他说明:无
****************/
void User::showName()
{cout<<"户主姓名:"<<name<<endl;
}/***************
*功能:显示余额
*输入参数:无
*输出参数:balance  //double型
*返回值:无
*其他说明:无
****************/
void User::showBalance(string prompt)
{cout<<prompt<<" "<<balance<<" 元"<<endl;
}/***************
*功能:显示家庭住址
*输入参数:无
*输出参数:address   //string型
*返回值:无
*其他说明:无
****************/
void User::showaddress()
{cout<<"家庭住址:"<<address<<endl;
}/***************
*功能:显示身份证号
*输入参数:无
*输出参数:cid   //string型
*返回值:无
*其他说明:无
****************/
void User::showid()
{cout<<"身份证号:"<<cid<<endl;
}/***************
*功能:验证密码正误
*输入参数:无
*输出参数:无
*返回值:返回1,成功返回0,失败
*其他说明:无
****************/
bool User::passwordIsRight()
{int iPass;bool right = true;cout<<"输入密码:";iPass=inputPassword();if(iPass!=password){right = false;cout<<"输入密码错误,不能继续操作!"<<endl;}return right;
}/***************
*功能:判断用户当前状态
*输入参数:无
*输出参数:normal //bool型
*返回值:true:0-正常;false:1-挂失  2-销户 3-冻结
*其他说明:无
****************/
bool User::isNormalUser()
{bool normal = true;if(status!=0){normal = false;cout<<"该账户处于";if(status==3)cout<<"冻结状态,不能继续操作..."<<endl;elsecout<<(status==1?"挂失":"销户")<<"状态,不能继续操作..."<<endl;}return normal;
}

运行结果:

学习心得:

第一次做这么大的项目,想想觉得很头痛。但是,相信自己,一点一点的缕清楚,慢慢的,慢慢的,代码一点一点的增多,看着自己的银行系统功能慢慢地变强大,自豪感油然而生。最重要的还是要有自信,加油,不会选择放弃!

C++课程实训——银行系统相关推荐

  1. c++课程实训-银行系统

    main.cpp /* *版权所有:Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. * *文件名称:main.cpp *其他说明:无 *当 ...

  2. sketchup作品_18级园林工程技术专业课程实训作品展

    根据学院"三段式"人才培养组织模式,园林工程技术专业的任课老师在2019-2020学年一学期对学生进行了课程实训.目的是让学生能够在课程实训中,掌握本课程的专业知识和专业技能,具备 ...

  3. 管理活动目录域服务实训_2019级酒店管理专业前厅与客房服务校外课程实训总结篇...

    点击蓝字关注我们 风清花落定,时光踏下轻盈的足迹,我们迎来了实训周的最后一章.19级酒店管理专业<前厅与客房服务>校外课程实训周于2019年12月5日落下帷幕,各小组收拾行囊,带着笑容和收 ...

  4. 计算机课的实训小结,课程实训心得体会与小结三篇

    课程实训心得体会与小结三篇 篇一:Flash课程实训心得体会与小结 通过本学期学习Flash,使我对Flash的动画制作有了比较全面的了解,了解动画原理,了解帧与层的概念.通过十个简单的动画制作实例, ...

  5. c语言上机试题倒计时,C语言课程实训-显示考试倒计时.doc

    C语言课程实训-显示考试倒计时 课 程 设 计 报 告 课程名称 C语言课程实训 系 别: 专业班级: 学 号: 姓 名: 课程题目: 显示考试倒计时 完成日期: 指导老师: 2013年6月21日 课 ...

  6. 计算机网络课程实训方法,中职学校计算机网络实训课教学初探

    中职学校计算机网络实训课教学初探 时间: 2014-10-08 栏目: 中职学校计算机网络实训课教学初探 中职学校计算机网络实训课教学初探 作者/单祖良 摘 要:主要从实训课的教学目标.教学内容.教学 ...

  7. 计算机文化基础实训小报制作,职业学院计算机文化基础课程实训指导书.doc

    <计算机文化基础> 课程实训指导书 编写:李 琳 计算机文化基础实训计划 实习时间:1周 一.实习目的 巩固课堂知识,加强学生在Windows操作系统.Word中文处理.Excel电子表格 ...

  8. 《Linux网络系统管理与应用》 课程实训报告

    <Linux网络系统管理与应用> 课程实训报告 <Linux网络系统管理与应用> 课程实训报告 姓名: ________ 班级: ________ 座号: ________ 时 ...

  9. Android扫雷实训小结,扫雷课程实训报告.doc

    扫雷课程实训报告.doc 信息工程学院课程实训报告1姓名学号实训名称所在班级实训时间实训地点实训教师实训企业实训成绩一.实训基本信息实训项目名称扫雷游戏实训环境ECLIPSEJDK二.实训项目简介(包 ...

最新文章

  1. Android AnimationUtils (动画)的使用
  2. 构建node.js基础镜像_在Android上构建Node.js应用程序
  3. Mat 类常用函数用法示例
  4. 16、计算机图形学——基于AABB进行光线追踪的加速(下)
  5. 计算机组成801pan,计算机组成06801.ppt
  6. 字符串类型、结构体、共用体、枚举、container宏、内存来源
  7. 了解前端——js需知道知识点
  8. Java虚拟机(七)——本地方法接口与本地方法栈
  9. 谷歌chrome浏览器提示“喔唷 崩溃啦”的解决方案
  10. oracle设置缓冲区大小设置,描述Oracle优化库高速缓冲区
  11. (转)WriteOnce and RunAnyWhere
  12. python爬取妹子图(复制即可用)
  13. 闲的没事,自己动手修改上兴3.2源代码
  14. 好记性不如烂笔头,要保持学习
  15. 【机器学习】完整的机器学习项目演练:第一部分
  16. 关于background背景和img图片
  17. [ZCMU OJ]1633: 酷酷的单词(遍历)
  18. 万字拆解!追溯ChatGPT各项能力的起源
  19. [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)
  20. python一维表二维表转化

热门文章

  1. 出现腰肌劳损怎么办?治疗护理6步走,帮你摆脱痛苦
  2. css和js带参数v或version
  3. oracle云怎么购买,使用免费的Oracle云服务-创建云主机
  4. adobe reader xi补丁_Adobe Reader X
  5. python序列化模块struct_Python进阶-XII serialize(序列化)、序列化模块
  6. 公有云成本节省神器!京东云共享带宽包正式上线
  7. 中科院自动化研究所人工智能专业,使用/教程/实例
  8. 提高iTunes更新速度的DNS
  9. SUST-ACM-2019届暑期ACM集训热身赛(第二期)题解
  10. webrtc入门:8.coturn流程