C++银行系统电子报告Word格式文档下载.docx
《C++银行系统电子报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++银行系统电子报告Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
![C++银行系统电子报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/10/3e544ead-b550-4bee-8b7e-028132b6a921/3e544ead-b550-4bee-8b7e-028132b6a9211.gif)
{
charn;
system("
color3f"
);
//背景颜色
init();
//添加储存文件信息
while(true)
{
menu();
//输出菜单
cin>
>
n;
switch(n)//选择功能
{
case'
1'
:
kh();
break;
//开户
2'
ck();
//存款
3'
qk();
//取款
4'
cx();
//查询
5'
jx();
//计息
6'
px();
//排序
7'
save();
return0;
//退出时保存用户信息
default:
cout<
<
"
输入错误,请重新输入\n"
;
getchar(),getchar();
}
}
menu.cpp
voidmenu()
cls"
cout<
******银行系统主菜单******\n"
<
1:
开户\n"
2:
存款\n"
3:
取款\n"
4:
查询\n"
5:
计息\n"
6:
财富排行榜\n"
7:
退出\n"
}
1.3实验小结(实验遇到的问题,解决方法)
如果将用于接受用户输入选择的变量定义为整型,则当输入非数字字符时候,程序将进入死循环。
办法:
通过switch语句当输入’1-7’字符以外字符时,输出“输入错误,请重新输入”
实验项目二、银行活期储蓄系统开户模块设计与实现
2.1库函数描述(原型、功能、头部文件)
kh.cpp
输入身份证并验证是否合法(身份证号长度、组成),合法返回假否则返回真
输入和确认密码,并验证密码是否合法,如果合法则返回假,否则返回真
输入开户金额并验证金额是否合法,合法返回假,否则返回真
头文件:
iostreamstdlib.hvectorPerson.hconio.htime.h
2.2帐户类定义Person
2.3编码(必须附加注释)
#include<
conio.h>
time.h>
externvector<
boolid_ok(string&
a);
boolmima(char[]);
voidkh()
intm,k;
stringt,p,q;
system("
cout<
*********************开户菜单***********************\n"
<
k;
switch(k)
case1:
cout<
请输入您的身份证号(18位数字):
\n"
cin>
t;
if(id_ok(t))//验证身份证号是否合法
{
do
{
system("
chars[20];
cout<
请输入您的密码(6-16位字母,数字):
if(mima(s))//验证密码是否合法
p=s;
请再次输入您的密码:
if(mima(s))
q=s;
if(q!
=p)
cout<
您输入的密码有误,请重新输入!
}
while(q!
=p);
while(true)
请输入您的开户金额(1-99999999元):
cin>
m;
if(m>
0&
&
m<
100000000)
{
Personp(t,q,m);
V.push_back(p);
p.print();
system("
pause"
break;
}
else
{
您输入的金额有误\n"
}
else
system("
cout<
你输入的身份证号码有误\n"
continue;
case2:
return;
您的输入有误\n"
system("
continue;
boolid_ok(string&
a)//验证身份证号是否合法
if((int)a.length()!
=18)
returnfalse;
boolk=true;
for(inti=0;
i<
(int)a.length();
++i)
if(a[i]>
'
9'
||a[i]<
0'
)
k=false;
break;
for(intj=0;
j<
(int)V.size();
++j)
if(V[j].get_id()==a)
k=false;
该用户已存在"
endl;
break;
returnk;
boolmima(chars[])//验证密码是否合法
charch;
intp=0;
while((ch=getch())!
='
\r'
s[p++]=ch;
putch('
*'
s[p]='
\0'
if(p<
6&
p>
16)
您输入的密码不符合要求!
returntrue;
}
2.4实验小结(实验遇到的问题,解决方法)
在判断当前用户是否开过户时,未遍历所有记录而做出结论
方法:
通过两个for循环分别比较参数a与数组V中的每个id,若完全相等,则输出"
。
实验项目三银行活期储蓄系统存款模块设计与实现
3.1库函数描述(原型、功能、头部文件)
ck.cpp
功能:
验证身份证是否存在
验证输入存款金额是否合法
iostreamvectorstringstdlib.hPerson.h
3.2编码(必须附加注释)
string>
voidck()
**************存款主菜单*****************\n"
switch(n)
请输入您的身份证号\n"
stringt;
boolkey=false;
intj;
for(inti=0;
if(V[i].get_id()==t)//验证身份证号是否一致
j=i;
key=true;
break;
if(key)
请输入您的存款金额(1-10000000元):
intn;
if(n<
=10000000&
n>
0)
V[j].in_money(n);
操作成功\n"
该用户不存在\n"
}break;
3.3实验小结(实验遇到的问题,解决方法)
实验项目四银行活期储蓄系统取款模块设计与实现
4.1库函数描述(原型、功能、头部文件)
qk.cpp
功能:
同时验证身份证和密码是否完全一致
验证取款金额是否合法且小于存款数
iostreamvectorPerson.hstringconio.h
stdlib.h
4.2编码(必须附加注释)
inlinevoidmima(chars[])//内联函数
voidqk()
inttmp,money;
stringt,p;
****************取款主菜单********************\n"
//清屏
请输入您的身份证号码及密码:
cin>
chars[20];
mima(s);
p=s;
boolkey=false;
for(inti=0;
if(V[i].get_id()==t&
V[i].get_key()==p)//验证身份证号和密码是否一致
key=true;
tmp=i;
if(key)
while(true)
请输入您的取款金额:
cin>
money;
if(money>
V[tmp].get_money()>
=money)//取款数小于等于存款数
{
V[tmp].out_money(money);
cout<
操作成功!
system("
break;
}
else
您输入的金额有误!
else
您输入的身份证号码或密码错误!
return;
您输入的信息错误\n"
4.3实验小结(实验遇到的问题,解决方法)
在查询用户时未将身份证号码和密码同时验证。
通过“V[i].get_id()==t&
V[i].get_key()==p”语句同时验证身份证号和密码
实验项目五银行活期储蓄系统计息模块设计与实现
5.1库函数描述(原型、功能、头部文件)
jx.cpp
获取系统时间,计算利息
iostreamPerson.hvectortime.hstdlib.hget_days.h
5.2编码(必须附加注释)
#include<
get_days.h"
constdoubleYlilv=0.01;
//年利率
voidjx()
if(V.size())
time_tt=time(NULL);
//得到当前系统时间
tm*T=gmtime(&
t);
inttmp;
for(inti=0;
tmp=get_days(V[i],T->
tm_year+1900,T->
tm_yday+1);
//当前时间-开户时间,得到储蓄时间
V[i].myset(tmp,Ylilv);
//调用类的成员函数,计算利息,修改总金
计息操作成功!
5.3实验小结(实验遇到的问题,解决方法)
实验项目六银行活期储蓄系统查询模块设计与实现
6.1库函数描述(原型、功能、头部文件)
cx.cpp
实现查询用户的当前存款余额并以人民币大写的形式输出
iostreamstringvectorPerson.h
6.2编码(必须附加注释)
chardx[10][3]={"
零"
"
壹"
贰"
叁"
肆"
伍"
陆"
柒"
捌"
玖"
};
chardw[8][5]={"
元"
十"
百"
千"
万"
十万"
百万"
千万"
chartail[5]="
元整"
inta[4];
voidmyprint(intn);
voidcx()
***************查询主菜单******************\n"
请输入您的身份证号及密码:
t>
p;
V[i].get_key()==p)
myprint(V[i].get_money());
//打印存款数
if(!
key)
您输入的身份证号或密码错误!
您输入的信息有误!
voidset(intt,int&
i,int&
ten)
memset(a,0,sizeof(a));
while(t)//将组成金额的数值分离出来
a[i++]=t%10;
t/=10;
ten*=10;
voidprint4bit(int&
t,int&
boolkey=true;
for(intj=i-1;
j>
0;
--j)
t%=ten;
if(a[j]==0&
key&
t)
dx[0];
key=false;
else
if(a[j])
key=true;
dx[a[j]]<
dw[j];
if(t==0)
ten/=10;
if(a[0])
dx[a[0]];
voidmyprint(intn)//打印存款数
if(n==0)
您的账户上的金额为零\n"
return;
if(n>
=100000000)
金额过大\n"
您账户上的金额为:
intt,i,ten;
=10000)
t=n/10000,i=0,ten=1;
set(t,i,ten);
//ten=ten/10
print4bit(t,i,ten);
dw[4];
if(n%10000==0)
tail<
return;
t=n%10000,i=0,ten=1;
set(t,i,ten);
ten/=10;
if(i<
4&
print4bit(t,i,ten);
6.3实验小结(实验遇到的问题,解决方法)
实验项目七银行活期储蓄系统富豪排行榜模块设计与实现
7.1库函数描述(原型、功能、头部文件)
px.cpp
将现有储户按照余额以为降序排序。
iostreamstringPerson.hvectoralgorithm
7.2编码(必须附加注释)
algorithm>
inlineboolcmp(Persona,Personb)
returna.get_total()>
b.get_total();
//约定按照用户的总金额排序
voidpx()
***************财富排行榜*******************\n"