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