银行管理系统设计报告学生姓名:宋科超冯瑞刘林锋学生学号:13081282 13081304 13081306班级:软件学院三班一、需求分析设计一个银行账户管理系统,要求实现以下功能:1. 实现银行管理员管理的功能,要求完成以下功能:1)管理员的登录(设本系统的管理员只有一个,管理员信息包括管理员姓名,管理员密码);2)修改管理员密码;3)为新用户创建账户信息,账户信息包括用户帐号(要求系统自动分配用户账号)、用户账户密码(为用户设置初始密码123456)、用户身份证号码、用户姓名、用户地址、帐户金额;4)删除需要注销账户的用户的账户信息;5)查询银行信息,包括:该银行的总客户数,总的存款金额;6)某个用户的账户信息。
2. 实现客户对自己账户的操作功能, 要求完成以下功能:1)用户的登录(未登录或登录失败时不能执行用户账户的操作);2)修改帐户信息,要求用户输入帐号,根据用户需要修改除了帐号之外的其余信息;3)模拟用户实现存款和取款的功能;4)记录用户账户的历史账单,方便用户查阅,如用户何时从银行取款多少等;5)查询账户信息,根据输入的帐号查询用户信息、帐户金额和用户的明细账单。
3. 以上功能要求以分级菜单的形式提供,不同的角色状态得到不同的菜单。
二、设计思想:定义一个用户类customer ,数据成员主要有姓名、身份证号码、住址、余额等内容,可供用户操作的功能有开户,销户、存款、取款、转账、余额查询等。
用户可根据界面提示自行操作。
定义一个管理员administrator :管理员信息包括管理员姓名,管理员密码;管理员的登录;修改管理员密码;可操作的功能有:1 为新用户创建账户信息,账户信息包括用户帐号、用户账户密码(为用户设置初始密码123456)、用户身份证号码、用户姓名、用户地址、工作单位、帐户金额;2 删除需要注销账户的用户的账户信息;3 查询银行信息,包括:该银行的总客户数,总的存款金额;4 某个用户的账户信息。
由于要实现界面的回复,所以用了大量的函数调用。
在控制用户的循环操作时采用了for循环与break匹配的结构。
在整体设计上将程序分为四个部分,第一个部分“ customer.h ”, 在这个文件中对所要用到的类customer 和administrator 进行了申明;第二个部分“ administrator.cpp ”,在这个文件里定义了管理员,并且实现了管理员对系统的管理功能;第三个部分“ customer.cpp ”是对在“ customer.h ”中所声明的类customer 定义了一个实体,也 可以说是完成了了帐户的操作函数;第四个部分“ ma in .cpp ”是主 函数ma in (),所在文件,在其中不仅定义了主函数,而且完成了菜 单操作函数。
简易流程图:三. 测试结果分析与讨论:首先进入管理员登陆界面如下:再选择管理员相应的服务(1--4 ),管理员注册:青选择您需要的服务匕肚修改密码处退出系统退出系统 氛修改密码 然后进行管理员登陆服务: 修改密码服务: 第二步进入用户界面: 醫输入管理员您的账号: 1831 请输入你的密码: 123456 请输人你的新密码"位> = 123789 谙重嶄输入你的新密码: 123789 密码设置成功 您需要继烦佛用此系统吗<V/N >? 诘造择您需要的服务= 魁廉麟腐为管理员仙埠E 牢记1 呼血再;\ :筌冷w 、臥? *;,•能芝:必,就:"爲必啊川$律总:: 出亠**欢迎管理灵使用本系^****** :管理员注地,瞥理员豊陆"修改密码•退出系统 岸摄择您需要的服务: \ 菁输入管理员您的账号; 屈1 胃输入你的密码, 234S6 曾理昌豊陆成功, 層需製继闽€用此系统吗cm ? 您需要继续使用此系统吗◎亦 itoi^s 的服知******双迎使用用户系统一*** 谕开阳錯豳㈱歸 进入新开账户服务:再进行其他用户服务:李强取了5000元倉需宴继续存款吗W 丹》?*****歇迎使用用户系统******青选扌羅需要的跟钏备输入您的帐号;青输入你的密码:23456青输入您要取出的金颔.収款成期虫需要缝续取款吗新开户张二预存金额20000元 ;进行转账服务:仗世1厂水纨肚存款3=取n ?:银行想崟和总账号数8HSi查询服务:李强账户应剩12000元:養输入您的帐户:10001请输A ;尔的密码I12315Cb 选择您需要的服务; ?展行益、釜和总雖士请输入您的帐号二16301情希入你的密码二123456请输入对方的帐号,1O00Z情输入您要转帐给对方的金额i3000匿翦跖转帐眾务吗貨如N JtX K JtX1&S01圭科超西电12378?^12000JE您需要继续查询撮务吗<V/N>7张三账户23000元:新注册账户李四预存30000元:进行删账户服务,删除张三:总金额查询:测试结果完毕退出程序:测试过程中的问题及采取的措施:全局变量之间的冲突?取消一个进行重新测试。
循环判定条件的不完整? 进行分步调试,结合程序的执行结果和目标结果进行修改。
输入数据不正当? 通过if语句进行取舍结合测试进行调整。
有时还存在语法问题? 进行查找结合测试进行调整。
四.源程序:customer.h ”#in clude<iostream> #in elude <stri ng>#ifndef CUSTOMER』#defi ne CUSTOMER_H class customer {private:double customer_Num; char secret[7]; int test;char Name[8];char ID[30];char Work_Group[80]; char Tel_Num[20];char Address[60];char password[10]; float Mo ney;public:void save_ mon ey();void get_money(); void change_money();void find_infor(); void lin_money();friend void open_account(); friend void save_money(); friend void get_money(); friend void change_money(); friend void find_infor(); friend void del_account(); friend voidlin_money();};class administrator {private:int Administrator_Num;char Secret[7];char Name[10];int test;public:void open_Admin(); void get_Admin();void chg_secret();friend void open_Admin(); friend void get_Admin(); friend void chg_secret(); friend void lin_money();};#endif;administrator.cpp#include "customer.h" #include<iostream>#include <string> using namespace std; void Administrator(); void slect_Admin();int Administrator_Num=1000; int T=-1; // administrator *q[1]; // void open_Admin()char Secret[7]; char Name[10]; if(Administrator_Num==1001) { cout<<" 对不起,管理员已经存在,你没权限注册! "<<endl; Administrator(); slect_Admin(); return;}T++;Administrator_Num++;q[T]=new administrator;cout<<" 请输入您的姓名 :"<<endl;cin>>Name;char Resecret[7];do{cout<<" 请输入你的密码 (6 位 ):"<<endl; cin>>Secret;cout<<" 请重新输入你的密码 :"<<endl; cin>>Resecret;if(strcmp(Secret,Resecret)==0)整型变量指针变量 本程序支持 1 个管理员{cout<<" 密码设置成功"<<endl;break;}elsecout<<" 你两次输入有误!"<<endl; cout<<" 请重新设置密码!"<<endl;}while(1); q[T]->Administrator_Num=Administrator_Num;for(int a=0;a<10;a++){ q[T]->Name[a]=Name[a];}for(int f=0;f<7;f++){ q[T]->Secret[f]=Secret[f];}q[T]->test=1;cout<<" 恭喜您,注册成功! 您成为管理员! 你的账号:"<<Administrator_Num<<" 要牢记!"<<endl;cout<<" 您需要继续服务吗(Y/N)?"<<endl;char cn;cin>>cn;for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout<<"您刚才输入的既不是"Y”也不是"N" !"<<endl;cout<<" 您需要继续服务吗(Y/N)?"<<endl;cin>>cn;}if(cn=='y'||cn=='Y'){Administrator();slect_Admin();return;}if(cn=='n'||cn=='N'){cout<<" 感谢您的使用,再见!"<<endl;return;}}void get_Admin(){cout<<" 请输入管理员您的账号:"<<endl;int z=0;int cn;char a[80];for(;;){cin>>a;cn=atoi(a);if(cn!=1001){cout<<" 对不起,你不是管理员或你的账号有误!"<<endl;cout<<" 您需要继续此服务吗?(Y/N)"<<endl;char cn;cin>>cn;for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout<<"您刚才输入的既不是"Y”也不是"N' !"<<endl;cout<<" 您需要继续此服务吗?(Y/N)"<<endl; cin>>cn;}if(cn=='y'||cn=='Y'){get_Admin();return;}if(cn=='n'||cn=='N'){Administrator(); slect_Admin(); return;}}else z=cn-1001;break;}do{cout<<" 请输入你的密码:"<<endl;char ser[7];cin>>ser;if(strcmp(ser,q[z]->Secret)==0)break;else{cout<<" 输入密码有误!"<<endl;cout<<" 请重新输入!"<<endl;}}while(1);cout<<" 管理员登陆成功!"<<endl;cout<<" 您需要继续使用此系统吗(Y/N)?"<<endl;char cn1;cin>>cn1; for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';){cout<<"您刚才输入的既不是"Y”也不是"N"! "<<endl; cout<<" 您需要继续使用此系统吗(Y/N)?"<<endl; cin>>cn1; } if(cn1=='y'||cn1=='Y'){Administrator();slect_Admin();return;}if(cn1=='n'||cn1=='N')return;void chg_secret(){cout<<" 请输入管理员您的账号:"<<endl;int z=0;int cn;char a[80];for(;;){cin>>a; cn=atoi(a); if(cn!=1001){cout<<" 对不起,你不是管理员或你的账号有误!cout<<" 您需要继续此服务吗?(Y/N)"<<endl; char cn;cin>>cn; for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout<<"您刚才输入的既不是“ Y”也不是“ cout<<" 您需要继续此服务吗?(Y/N)"<<endl;cin>>cn;} if(cn=='y'||cn=='Y'){ get_Admin(); return;} if(cn=='n'||cn=='N'){ Administrator(); slect_Admin(); return;}} else z=cn-1001;break;}do{cout<<" 请输入你的密码:"<<endl; char ser[7];"<<endl;!"<<endl;cin>>ser;if(strcmp(ser,q[z]->Secret)==0) break;else{cout<<" 输入密码有误!"<<endl;cout<<" 请重新输入!"<<endl;}}while(1);char SSecret[7];do{cout<<" 请输入你的新密码(6 位):"<<endl; cin>>SSecret;cout<<" 请重新输入你的新密码:"<<endl;char Resecret[7];cin>>Resecret; if(strcmp(SSecret,Resecret)==0){cout<<" 密码设置成功"<<endl; break;}elsecout<<" 你两次输入有误!"<<endl; cout<<" 请重新设置新密码!"<<endl;}while(1); strcpy(q[z]->Secret,SSecret);cout<<" 您需要继续使用此系统吗(Y/N)?"<<endl;char cn1;cin>>cn1; for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';){cout<<"您刚才输入的既不是"Y”也不是"N"! "<<endl;cout<<" 您需要继续使用此系统吗(Y/N)?"<<endl; cin>>cn1; } if(cn1=='y'||cn1=='Y') {Administrator();slect_Admin();return;} if(cn1=='n'||cn1=='N')return;“ customer.cpp ”#include "customer.h" #include<iostream> #include <string> using namespace std; void dis_menu(); void slect_menu();double customer_Num=10000; // 用户帐号int Z=0; // 变量// 指针变量customer *p[10000]; // 指针变量本程序支持10000 个用户administrator *Q[1]; // 指针变量本程序支持 1 个管理员void open_account() // 开户函数{char secret[7];char Name[8];char ID[30];char Work_Group[80];char Tel_Num[20];char Address[60];float Money(0); if(customer_Num==20000) {cout<<" 对不起,系统存储空间已满,无法开户,对此带来的不便我们深表歉意!"<<endl;dis_menu(); slect_menu();return;}Z++;customer_Num++;p[Z]=new customer;cout<<" 请输入您的姓名:"<<endl;cin>>Name;char resecret[7];do{cout<<" 请输入你的密码(6 位):"<<endl; cin>>secret;cout<<" 请重新输入你的密码:"<<endl; cin>>resecret;if(strcmp(secret,resecret)==0){cout<<" 密码设置成功"<<endl; break;}elsecout<<" 你两次输入有误!"<<endl;cout<<" 请重新设置密码!"<<endl; }while(1);cout<<" 请输入您的身份证件号码:"<<endl; cin>>ID;cout<<" 请输入您的单位地址:"<<endl; cin>>Work_Group;cout<<" 请输入您的电话号码:"<<endl; cin>>Tel_Num;cout<<" 请输入您的住址:"<<endl;cin>>Address;cout<<" 请输入您的金额(开户¥50.00 元起):"<<endl; //cin>>Money;// 银行开户50 元起char a1[80];for(;;) {cin>>a1;Money=atoi(a1); if(Money<50||Money>100000000){cout<<" 对不起,您输入的金额不正确。