c++课程设计 银行账户管理系统程序 Microsoft Office Word 文档
西安科技大学C++语言课程设计
题目:银行账户管理系统
班级:信计1102 班
学号: 1 1 0 8 0 6 0 2 2 3
姓名:姜圣涛
日期:2013年1月3日
一题目介绍
银行账户管理程序
问题描述
设计计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、电话号码等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限,保存为文件。
基本要求
程序运行时,可以由用户选择进行何种操作。
输入:
程常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目)当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键
盘上输入相应的数据。
输出:1.应用程序正常运行后,要在屏幕上显示一个文字菜单
2.要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数
据内容,格式及结束方式等。
二系统分析
本程序定义了一个银行类Bank,用户可根据界面提示自行操作。由于要实现界面的回复,所以用了大量的函数调用,在控制用户的循环操作时采用了大量的for循环、do while语句、if else语句、return语句、switch语句等。
程序大体分为九个方面:
1*定义一个银行类Bank,数据成员主要有姓名、身份证号码、账号、电话号码、余额、密码等内容,可供用户操作的功能有首页,开户、存款、取款、转账、销户、查询等。
2* 构造首页函数,显示银行系统的操作选择界面,具体包括开户、销户、存款、取款、转账、查询、退出等七个部分,帮助客户清晰的看到需要进行服务的内容,以便按照提示进行选择。在选择是运用了do while 语句限定了只能按0~6之间的数字进行选择,按其他的键均不起作用。
3*构造开户函数,按照提示输入相关信息进行账户的创建,该系统根据不同的客户可创建多个账户,运用for循环语句和if判断语句保证每个用户和账号都不重复(即唯一)。如果账号重复,系统会提示账号已经存在请重新创建,并且把开户的结果保存在文件中。
4* 构造存款函数,主要运用for循环语句和if判断语句,用户输入账号进行存款,如果账号不存在系统会提示账号不存在,然后提示重新输入账号或者先进行开户再进行存款。若账号正确系统提示输入所存金额,则存款成功,同时信息会保存在文件中。
5* 构造取款函数,主要运用for循环语句和if else判断语句,输入银行
账号和密码,若账号正确密码错误会显示密码错误,然后重新输入密码。若密码和账号都正确则可以进行取款服务,若密码和账号都错误,则系统会提示该账户不存在。并且把信息保存在文件中。
6* 构造转账函数,主要运用for循环语句和if else判断语句及return语句等,只要正确输入转出、转入账户的密码和账号就可实现将一个账户所存的钱转给另一个账户,但若转账金额大于所存金额系统会提示余额不足,若密码和账户有一个出错则转账服务无法完成,并且把相关信息存在文件中。
7* 构造销户函数,主要运用for循环语句和if else判断语句及return语句等,若输入的密码和账户信息均正确则系统会把所有的创建信息删除,若有一个不正确则销户服务完成不了。
8* 构造查询函数,主要运用for循环语句和if else判断语句及return语句等,只要正确输入信息就可以从页面上看到用户的账户号、姓名、余额等,若输入不正确则会提示账户不存在或密码错误。
9* 主函数部分,运用switch语句分7种情况进行函数调运,在主页中选择不同的服务,则进行调用上述的函数。
程序流程图为:
开始
首页界面中选择要服务的类型
Bank::shouye()
开户(Bank::kaihu(Bank bank[]))
同时可以开许多账户
转账(Bank::zhuan zhang(Ban 存款
(Bank::cunku an(Ban
取款Bank::qukuan(Ban k
bank[])
查询Bank::chaxun(Ban k
bank[])
销户
Bank::xiaohu(Bank
退出系统
结束
三程序代码
#include
#include
#include
#include
#include
class Bank{
public:
static int num;
int shouye();//首页
void kaihu(Bank bank[]);//开户
void cunkuan(Bank bank[]);//存款
void qukuan(Bank bank[]);//取款
void zhuanzhang(Bank bank[]);//转帐
void xiaohu(Bank bank[]);//销户
void chaxun(Bank bank[]);//查询
private:
char name[20];//姓名
char ID[20]; //身份证
long count;//账号
int number;//电话号码
char mima[20]; //密码
int money; //余额
};
//构造首页函数显示选择界面
int Bank::num=0;
int Bank::shouye()
{
char i;
do{
system("cls");
cout<<"\t\t$*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@$" < <<"\t\t$ 银行账户管理系统$" < <<"\t\t$ $" < <<"\t\t$ $" < <<"\t\t$ 1. 开户. 4. 转帐. $" < <<"\t\t$ $" < <<"\t\t$ 2. 存款. 5. 销户. $" < <<"\t\t$ $" < <<"\t\t$ 3. 取款. 6. 查询. $" < <<"\t\t$ 0. 退出$" < <<"\t\t$*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@*@$" < <<"\t\t\t请选择要服务的内容(0~6):" ; cin>>i; }while(i-'0'<0||i-'0'>6); return i-'0'; } //构造开户函数 void Bank::kaihu(Bank bank[]) { int j; char mima1[20]; ofstream os("账户.txt",ios::app); bank[num].money=0; cout<<"请输入创建姓名"< cin>>bank[num].name; cout<<"请输入身份证号"< cin>>bank[num].ID; cout<<"请输入创建账号"< cin>>bank[num].count; cout<<"请输入电话号码"< cin>>bank[num].number; cout<<"请输入密码"< cin>>bank[num].mima; cout<<"请再次输入密码"< cin>>mima1; if(strcmp(mima1,bank[num].mima)!=0) { cout<<"密码前后输入不一致,请重新输入"< return; } for(j=0;j if(bank[num].count==bank[j].count) { cout<<"账号已存在,请从新输入账号"< this->kaihu(bank); } cout<<"账户创建成功,请牢记你的密码和账号!"< os<<"姓名账号余额"< os< os.close(); num++; } //构造存款函数 void Bank::cunkuan(Bank bank[]) { long count; int money=0; cout<<"请输入银行账号"< cin>>count; for(int i=0;i if(count==bank[i].count) { cout<<"请输入所存金额"< cin>>money; bank[i].money+=money; cout<<"存款成功!"< ofstream os("账户.txt"); for(int j=0;j os< return; } cout<<"此账户不存在,请先进行开户"< } //构造取款函数 void Bank::qukuan(Bank bank[]) { long count; int money=0; char mima[20]; cout<<"请输入银行账号"< cin>>count; cout<<"请输入密码"< cin>>mima; for(int i=0;i if((strcmp(mima,bank[i].mima)!=0)&&(count==bank[i].count)) { cout<<"密码错误,请重新输入"< cin>>mima; if((strcmp(mima,bank[i].mima)==0)&&(count==bank[i].count)) { cout<<"请输入取款金额"< cin>>money; bank[i].money-=money; cout<<"取款成功!"< ofstream os("账户.txt"); for(int j=0;j os< return; } } else if((strcmp(mima,bank[i].mima)==0)&&(count==bank[i].count)) { cout<<"请输入取款金额"< cin>>money; bank[i].money-=money; cout<<"取款成功!"< ofstream os("账户.txt"); for(int j=0;j os< return; } cout<<"此账户不存在,请先进行开户"< } //构造转账函数 void Bank::zhuanzhang(Bank bank[]) { long count1,count2; int money; cout<<"请输入您的账号:"; cin>>count1; cout<<"请输入密码"< cin>>mima; for(int i=0;i if((strcmp(mima,bank[i].mima)==0)&&(count==bank[i].count)) { cout<<"请输入转账的用户账号"< cin>>count2; for(int j=0;j if(count2==bank[j].count) { cout<<"请输入转账的金额"; cin>>money; if(bank[i].money-money<0) { cout<<"对不起,您的账户上余额不足"< return; } bank[i].money-=money; bank[j].money+=money; cout<<"转账成功!"< ofstream os("账户.txt"); for(int k=0;k os< return; } cout<<"该用户不存在"< return; } cout<<"您输入的账户不存在或密码错误"< } //构造销户函数 void Bank::xiaohu(Bank bank[]) { int i,j; long count; char mima[20]; cout<<"请输入银行账号"< cin>>count; cout<<"请输入密码"< cin>>mima; for(i=0;i if((strcmp(mima,bank[i].mima)==0)&&(count==bank[i].count)) { int c; cout<<"您确定要注销此户(Y/N)?"< cin>>c; if(c=='n'||c=='N') return; else { for(j=i;j { strcpy(bank[j].name,bank[j+1].name); strcpy(bank[j].ID,bank[j+1].ID); strcpy(bank[j].mima,bank[j+1].mima); bank[j].count=bank[j+1].count; bank[j].money=bank[j+1].money; bank[j].number=bank[j+1].number; } num--; cout<<"\n\t\t\t账户注销成功!"< ofstream os("账户.txt"); for(i=0;i os< system("pause"); return; } } cout<<"您输入的账户不存在或密码错误"< } //构造查询函数 void Bank::chaxun(Bank bank[]) { int i; long count; char mima[20]; cout<<"请输入银行账号"< cin>>count; cout<<"请输入密码"< cin>>mima; for(i=0;i if((strcmp(mima,bank[i].mima)==0)&&(count==bank[i].count)) { cout<<"姓名"< cout<<"账号"< cout<<"余额"< return; } cout<<"您输入的账户不存在或密码错误"< } //函数主体 void main() { Bank bank[100]; for(;;) switch(bank->shouye()) { case 0: cout<<"谢谢使用!"< case 1: bank->kaihu(bank) ; system("pause"); break; case 2: bank->cunkuan(bank) ; system("pause"); break; case 3: bank->qukuan(bank) ; system("pause"); break; case 4: bank->zhuanzhang(bank) ; system("pause"); break; case 5: bank->xiaohu(bank) ; system("pause"); break; case 6: bank->chaxun(bank) ; system("pause"); break; } } 四运行结果 1、首先给出用户操作界面 2、用户根据提示选择相应功能 1*若选择的是1(开户)就有 只要多次选择1就可开多个账号 若建立的账号重复系统会提示让重新建立 2* 若选择的是2(存款) 若银行账号不存在系统会提示让先开户 3*若选择3(取款)若密码错误会提示重新输入 若账号不存在则取款服务完成不了 4*若选择的是4(转账) 若账号不存在系统会提示 5*若选择的是5(销户) 6*若选择的是6(查询) 若查询的是已开户的6221234只要输入信息正确就有 若查询的是已开户的1234567只要信息正确就有 若输入的信息错误就有 7*若选择的是0(退出)就有 五总结 通过此次课程设计,让我感触颇多,我们光靠课本上的知识是远远不够的,书上的内容仅仅是一些简单的基础知识,如果要编写大型的程序,我们必须要学习大量的其他知识,所以平时一定要养成自学的习惯。还有通过编程让我认识到好多基础知识都不扎实,有些当时上课感觉掌握了,但一到实践就查出问题了,所以以后无论学啥都要认真、都要仔细。 就本程序而言,虽然题目要求并未涉及用户密码,但是作为银行的模拟系统应当设置用户密码,所以我加入了密码,使系统更加的具有实用性和真实性,这是比较好的一面,但是销户后的帐户并不能直接通过类中定义的函数分配给其他的用户,程序在进行多次调用函数后在最后销户时会出错,这是需要进一步改进的一面。尽管如此,但并 不影响用户的实际操作及用户的数据。 本程序全都采用通俗易懂的函数和语句构成,别人易看,操作简单、易懂,结构清晰,思路合理,但还有很多不足,在以后的学习中,一定要注意,争取在以后编程时,能够避免本程序的不足。 总之,此次课程实际,让我更加熟悉了C语言和C++,体会到了编程的酸甜苦辣,感受到了计算机语言的微妙与神奇。让我学会了很多知识。