C++银行储蓄开发全部程序.docx
《C++银行储蓄开发全部程序.docx》由会员分享,可在线阅读,更多相关《C++银行储蓄开发全部程序.docx(58页珍藏版)》请在冰点文库上搜索。
C++银行储蓄开发全部程序
计算机与信息工程学院实验报告
课程名称:
高级语言课程设计
实验项目:
银行储蓄
实验项目一、银行储蓄系统主菜单模块设计与实现
1.1库函数描述(原型、功能、头部文件)及其作用
Time显示当前时间类#include
System()调用dos命令_sleep()停息#include
String字符串流#include
#include"myheader.h"中有调用的全部函数声明
1.2编码(必须附加注释)
#include"myheader.h"
voidmain()
{
//背景颜色设置
system("COLOR16");
/*
颜色属性由两个十六进制数字指定--第一个为背景,第二个则为
前景。
每个数字可以为以下任何值之一:
0=黑色8=灰色
1=蓝色9=淡蓝色
2=绿色A=淡绿色
3=湖蓝色B=淡浅绿色
4=红色C=淡红色
5=紫色D=淡紫色
6=黄色E=淡黄色
7=白色F=亮白色
*/
//输出=============★欢迎进入银行活期存款系统★=============
inti;
for(i=0;i<13;i++)
cout<<'=';
cout<<"★欢迎进入银行活期存款系统★";
for(i=0;i<13;i++)
cout<<'=';
cout<//列示当前时间
cout<<"当前时间:
";
for(i=0;i<6;i++)
cout<<"";
Timet=latesttime();
t.print();
//列示菜单
mylist();
cout<<"如果您不了解该系统请按N否则按Y:
";
//核实输入是否为字符
stringcheck;
while
(1)
{
cin>>check;
if(check.length()>1)
{
cout<<"您的输入有误请重新输入:
";
continue;
}
if(check[0]!
='Y'&&check[0]!
='N')
cout<<"您的输入有误请重新输入:
";
else
break;
}
intmark=1;
if(check[0]=='N')
{
mark=0;
cout<<"友情提示:
按对应业务的编号即可进行该业务!
"<"<}
intflag=1;
while(flag++)
{
if(flag>2)
{
system("cls");
mylist();
}
if(mark)
cout<<"请选择业务:
";
stringservicenum;
//核实输入是否为字符
while
(1)
{
cin>>servicenum;
if(servicenum.length()>1)
{
cout<<"您的输入有误请重新输入:
";
continue;
}
else
break;
}
cout<<"确认请按Y,修改请按N,请选择:
";
stringmark;
//核实输入是否为字符
while
(1)
{
cin>>mark;
if(mark.length()>1)
{
cout<<"您的输入有误请重新输入:
";
continue;
}
if(mark[0]!
='Y'&&mark[0]!
='N')
cout<<"您的输入有误请重新输入:
";
else
break;
}
if(mark[0]=='N')
continue;
if(servicenum[0]=='0')
break;
cout<<"正在处理请稍等.";
_sleep(1000);
cout<<".";
_sleep(1000);
cout<<".\n";
_sleep(1000);
switch(servicenum[0])
{
//开户
case'1':
creaccount();break;
//存款
case'2':
deposit();break;
//取款
case'3':
withdraw();break;
//计息
case'4':
computeprofit();break;
//查询
case'5':
checkbalance();break;
//排序
case'6':
order();break;
//系统介绍
case'7':
about();break;
default:
cout<<"对不起,您的选择超出了我们的业务范围。
"<}
}
cout<<"交易完毕,谢谢合作!
!
!
"<}
1.3mylist.Cpp主函数显示菜单
voidmylist()
{
inti;
for(i=0;i<11;i++)
cout<<'';
cout<<"*************主菜单*************"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆0.................退出☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆1.................开户☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆2.................存款☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆3.................取款☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆4.................计息☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆5.................查询☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆6.................排序☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆7.................关于☆"<for(i=0;i<12;i++)
cout<<"";
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<}
voidabout()
{
cout<<"银行活期存款系统作者:
张瑞"<cout<<"该系统严格按照国际银行活期存款规则编写,"<cout<<"如果您什么不懂,请在第一步操作中输入N."<cout<<"注意:
请按照提示进行操作.否则后果自负!
!
!
"<cout<<"版权所有,打击盗版!
!
!
"<over();
return;
}
1.4实验小结(实验遇到的问题,解决方法)
1.调用外部函数时光简单声明不行必需加个外部修饰extern
2.也可调用外部变量同样用extern
3.把定义的函数都放到myheader.H的头文件中声明
实验项目二、银行储蓄系统开户模块设计与实现
2.1库函数描述(原型、功能、头部文件)及其作用
#include//c++的标准输入输出
#include//c的库函数
#include//字符串流
#include//getch()键盘输入屏幕不输出
#include//STL中的迭代器
#include//messagebox()消息框
#include//时间类的头文件
#include//c标准输入输出和文件流
usingnamespacestd;
2.2帐户类定义
#include"myheader.h"
//帐号类是定义在myhead.H头文件里
classTime{
public:
intyear,month,day,hour,minute,second;
Time(inta=0,intb=0,intc=0,intd=0,inte=0,intf=0):
year(a),month(b),day(c),hour(d),minute(e),second(f){}
voidprint()
{
cout<}
voidprint1()
{
cout<}
//两个时间段相距的天数
intisHalfYear(Timet)
{
intct;
if(year>t.year)
ct=(year-t.year-1)*360+(month-t.month+11)*30+day+30-t.day;
else
ct=(month-t.month-1)*30+day+30-t.day;
returnct;
}
voidcopy(Timef)//时间拷贝
{
year=f.year;
month=f.month;
day=f.day;
hour=f.hour;
minute=f.minute;
second=f.second;
}
//判断时间是否大
booltimebig(Timet)
{
if(year>t.year)
returnfalse;
elseif(yearreturntrue;
elseif(year==t.year)
{
if(month>t.month)
returnfalse;
elseif(monthreturntrue;
elseif(month==t.month)
{
if(day>t.day)
returnfalse;
elseif(dayreturntrue;
elseif(day==t.day)
{
if(hour>t.hour)
returnfalse;
elseif(hourreturntrue;
elseif(hour==t.hour)
{
if(minute>t.minute)
returnfalse;
elseif(minutereturntrue;
elseif(minute==t.minute)
{
if(second>t.second)
returnfalse;
elseif(secondreturntrue;
}
else
returntrue;
}
else
returntrue;
}
else
returntrue;
}
else
returntrue;
}
returntrue;
}
};
//检查输入的字符产是否全是数字
boolchecknum(constchar*);
//重载比较函数
intstrcmp(constchar*s1,constchar*s2);
//钱数大些函数声明
voidreadmoney(char*);
//定义帐号类
classAccount
{
public:
charname[20],ID[20],balance[15],code[10];
Timetime;
Account(constchar*a="",constchar*b="",constchar*c="",constchar*d="",Timee=Time(0,0,0,0,0,0))
{
strcpy(name,a);
strcpy(ID,b);
strcpy(code,c);
strcpy(balance,d);
time=e;
}
voidprint1()
{
inti;
for(i=0;i<30;i++)
cout<<"{}";
cout<cout<<"姓名:
"<cout<<"身份证号:
"<cout<<"余额:
"<cout<<"余额大写:
";
readmoney(balance);
cout<<"开户时间:
";
time.print();
}
voidprint2()
{
inti;
for(i=0;i<30;i++)
cout<<"{}";
cout<cout<<"姓名:
"<cout<<"身份证号:
"<cout<<"余额:
"<cout<<"余额大写:
";
readmoney(balance);
cout<<"上次计息时间(开户时间):
";
time.print();
}
};
classRem{
public:
charID[20],money[10];
intflag;
Timet;
Rem(char*a="",char*b="",intc=0,Timed=Time(0,0,0,0,0,0))
{
strcpy(ID,a);
strcpy(money,b);
flag=c;
t=d;
}
voidprint()
{
if(flag==0)
{
t.print1();
cout<<""<<"取款"<}
if(flag==1)
{
t.print1();
cout<<""<<"存款"<}
}
};
//菜单
voidmylist();
//开户
voidcreaccount();
//存款
voiddeposit();
//取款
voidrevisecode();
//计息
voidcomputeprofit();
//查询
voidcheckbalance();
//排序色
voidcreatcolor();
//关于系统介绍
voidabout();
//大写读取金额
voidreadmoney(char*s);
//重载比较函数
intstrcmp(constchar*s1,constchar*s2);
//结束
voidover();
//求两字符串之和
voidplus(char*s1,char*s2);
//求两字符串之差
voidminus(char*s1,char*s2);
//将字符串倒置
voidopposition(char*s);
//检查输入的金额是否合法并对其进行规范性修改
boolcheckmoney(char*s);
//计算利息专用
booljixi(Account&a);
//校验身份证号是否正确
boolcheckID(constchar*s);
//检查所输入的身份证号是否已开过户,开过户返回true,未开过返回false
boolfinID(constchar*s);
//获取当前时间的time函数
Timelatesttime();
//移位
voidchange(char*ch);
//输出备忘录
voidoutput(constchar*s);
2.3编码(必须附加注释)
#include"myheader.h"
voidcreaccount()//开户
{
cout<<"『欢迎您在此开户』"<charID[20]="";
//检查该身份证号是否符合中华人民共和国身份证号码的编制规则
while
(1)
{
cout<<"请输入您的身份证号:
"<cin>>ID;
if(checkID(ID))
break;
else
{
cout<<"您的输入有误请重新输入您的身份证号:
"<}
}
//检查是否在此开过户
if(finID(ID))
{
cout<<"您已在次开过户。
"<over();
return;
}
cout<<"请输入您的姓名:
"<stringname;
while
(1)
{
cin>>name;
if(name.length()>8)
cout<<"您的输入有误,请重新输入。
"<else
break;
}
constchar*copyname=name.c_str();//name的首地址且必须是const只读的
cout<<"请输入您的密码:
"<cout<<"注意:
密码更正每人只有三次机会,密码只有六位。
"<charcod[7]="",flag=0;//计数
while
(1)
{
if(flag)
{
if(flag==3)
break;
cout<<"您的密码输入有误,";
}
inti;
cout<<"请输入密码:
"<for(i=0;i<6;i++)
{
cod[i]=getch();
cout<<"*";
}
MessageBox(0,"密码位数已足","提示",MB_OK|MB_SYSTEMMODAL);
cout<cout<<"请确认一下密码:
"<charcopycod[7]="";
for(i=0;i<6;i++)
{
copycod[i]=getch();
cout<<"*";
}
MessageBox(0,"密码位数已足","提示",0);
cout<if(strcmp(cod,copycod)!
=0)
{
flag++;
continue;
}
else
{
MessageBox(0,"恭喜!
!
!
密码输入成功!
","提示",0);
break;
}
}
cout<<"请输入您的开户金额:
"<charmoney[20]="";
while
(1)
{
cin>>money;
if(checkmoney(money))
break;
else
cout<<"您的输入有误,请重新输入:
"<}
FILE*fp;
fp=fopen("D:
\\mybank","a");
Timet=latesttime();
Accounttemp(copyname,ID,cod,money,t);
fwrite(&temp,sizeof(Account),1,fp);
fclose(fp);
MessageBox(0,"恭喜您!
!
!
在次开户成功!
!
!
","提示",0);
intjx=MessageBox(0,"您是否要查看一下您的信息?
","提示",1)-2;
if(jx)
temp.print1();
over();
return;
}
4实验小结(实验遇到的问题,解决方法)
1.在getch()前有时要加入cin.get()防止上次输入被getch()获取
2.对密码和帐号输入后要在数组最后加个“ ”防止数组错误
3.对打开文件是有时用绝对路径'\\'表示\
实验项目三银行储蓄系统存款模块设计与实现
3.1库函数描述(原型、功能、头部文件)及其作用
#include//c的标准输入输出和文件流
#include//massagebox()消息框的头文件
#include"myheaer.h"//全部调用函数
#include//getch()从控制台读取一个字符,但不显示在屏幕上
3.2编码(必须附加注释)
#include"myheader.H"
//存款
voiddeposit()
{
FILE*fp;
fp=fopen("D:
\\mybank","r");
if(fp==NULL)
{
cout<<"您尚未在此开户!
!
!
"<over();
return;
}
fclose(fp);
cout<<"=====☆欢迎进入存款模块☆====="<cout<<"请输入您的身份证号:
"<charID[20]="";
while
(1)
{
cin>>ID;
if(checkID(ID))
{
if(finID(ID))
break;
else