/*
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:Bank system.cpp
* 作者:常轩
* 完成日期:2016年3月6日
* 版本号:V9.0
*
* 问题描述:一个简单的银行操作系统,包括开户,销户,存款,取款,挂失,解挂等功能
* 程序输入:先登录,输入1,2,3等指令
* 程序输出:执行相关操作
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int system(const char *string);
int t=0;
int x=0;
void tishi();
char gUser[100][32]; //开户用户
char gGuashiuser[100][32];//挂失用户
char gMima[100][6]; //用户密码
char gPhone[100][11]; //用户电话
char gIDcard[100][20]; //用户身份证号
double gMoney[100]; //用户余额
int gIndex=0; //初始化用户个数
int main()
{
tishi();
if(x==1) //判断是否三次输错密码
{
printf("你已经三次输错用户名或密码,强制退出系统!\n");
return 0;
}
char name[32];
char mima[6];
int cdm;
int i,j;
int dizhi,tmp,ret,a;
for(;;)
{
printf("\n\n主界面\n");
scanf("%d",&cdm); //命令
if(cdm==1) //存款
{
printf("***************存款界面***************\n\n");
printf("请输入用户姓名:\n");
scanf("%s",name);
for(i=0;i<gIndex;i++) //判断此用户是否存在
{
ret =strcmp(name,gUser[i]);
if(ret==0)
{
tmp=1;
break;
}
}
if(tmp==1)
{
int dizhi;
float CunKuanShu;
dizhi=i;
printf("请输入存款金额:\n");
scanf("%f",&CunKuanShu);
gMoney[dizhi]=gMoney[i]+CunKuanShu;
printf("存款成功!\n");
}
else
{
printf("用户不存在!\n");
}
}
else if(cdm==2) //取款
{
printf("***************取款界面***************\n\n");
int dizhi;
float QuKuanShu;
printf("请你输入用户名:\n");
scanf("%s",name);
for(i=0;i<gIndex;i++)
{
int ret =strcmp(name,gUser[i]);
if(ret==0)
{
tmp=1;
break;
}
}
if(tmp==1)
{
dizhi=i;
printf("请你输入密码:\n");
scanf("%s",mima);
if(strcmp(mima,gMima[i])==0)
{
printf("请输入取款金额:\n");
scanf("%f",&QuKuanShu);
if(QuKuanShu<gMoney[i])
{
gMoney[dizhi]=gMoney[i]-QuKuanShu;
printf("取款成功!\n");
}
else
{
printf("你的余额不足!");
}
}
else
{
printf("密码错误!\n");
continue;
}
}
else
{
printf("用户不存在!");
}
}
else if(cdm==3) //查询
{
printf("***************查询界面***************\n\n");
int ret;
printf("请输入用户名:\n");
scanf("%s",name);
for (i=0;i<gIndex;i++)
{
ret=strcmp(name,gUser[i]);
if(ret==0)
{
tmp=1;
break;
}
}
if(tmp==1)
{
printf("请输入密码:\n");
scanf("%s",mima);
if(strcmp(gMima[i],mima)==0)
{
printf("账户: %s 余额: %0.2f \n密码: %s 电话号码: %s \n身份证号:%s\n",gUser[i],gMoney[i],gMima[i],gPhone[i],gIDcard[i]);
}
else
{
printf("密码错误\n");
}
}
else
{
printf("该用户不存在,请开户\n");
}
}
else if(cdm==4) //开户
{
printf("***************开户界面**************\n\n");
char mima[6];
printf("请输入用户名:\n");
scanf("%s",name);
int tmp =1;
for(i=0;i<gIndex;i++)
{
int ret =strcmp(name,gUser[i]);
if(ret==0)
{
printf("该用户已经存在!\n");
tmp =2;
}
}
if(tmp==2)
continue;
for(j=0;j<gIndex;j++)
{
int ret=strcmp(name,gGuashiuser[j]);
if(ret==0)
{
printf("该用户已经存在!\n");
tmp=3;
}
}
if(tmp==3)
continue;
printf("请你输入电话号码:\n");
scanf("%s",gPhone[gIndex]);
printf("请你输入身份证号:\n");
scanf("%s",gIDcard[gIndex]);
printf("请你输入密码:\n");
scanf("%s",gMima[gIndex]);
printf("请你确认密码:\n");
scanf("%s",mima);
if(strcmp(gMima[gIndex],mima)==0)
{
strcpy(gUser[gIndex],name);
gMoney[gIndex]=10;
printf("用户%s注册成功!\n",gUser[gIndex]);
gIndex++;
continue;
}
else
{
printf("两次密码不相同,请重新注册!");
continue;
}
}
else if(cdm==5) //销户
{
printf("**************销户界面**************\n\n");
int ret;
printf("请输入姓名:\n");
scanf("%s",name);
for(i=0;i<gIndex;i++)
{
ret=strcmp(name,gUser[i]);
if(ret==0)
{
dizhi =i;
tmp=1;
}
}
if(tmp==1)
{
char xxxx[32];
printf("请输入密码:\n");
scanf("%s",mima);
if(strcmp(mima,gMima[dizhi])==0)
{
strcpy(gUser[dizhi],"xxxx");
strcpy(gMima[dizhi],"xxxx");
printf("您已成功销户!\n");
}
else
{
printf("密码错误\n");
}
}
else
{
printf("对不起,用户不存在\n");
}
}
else if(cdm==6) //转账
{
printf("***************转账界面***************\n\n");
char bieren[32];
int j;
int zhuanzhang;
printf("请输入名字:\n");
scanf("%s",name);
for (j=0;j<gIndex;j++)
{
ret=strcmp(name,gUser[j]);
if(ret==0)
{
tmp=1;
break;
}
}
if(tmp==1)
{
printf("请输入密码:\n");
scanf("%s",mima);
if(strcmp(mima,gMima[j])==0)
{
printf("请输入你要转账的用户:\n");
scanf("%s",bieren);
for(i=0;i<=gIndex;i++)
{
if(strcmp(gUser[i],bieren)==0)
{
a=1;
break;
}
}
if(a==1)
{
printf("请输入您要转账的金额:\n");
scanf("%d",&zhuanzhang);
if(gMoney[j]>=zhuanzhang)
{
gMoney[j]=gMoney[j]-zhuanzhang;
gMoney[i]=gMoney[i]+zhuanzhang;
printf("您已转账成功!\n");
}
else
{
printf("您的余额已不足!\n");
}
}
else
{
printf("您所转账的用户不存在!\n");
}
}
else
{
printf("密码错误!\n");
}
}
else
{
printf("用户不存在,请开户!\n");
}
}
else if(cdm==7) //挂失
{
printf("***************挂失界面***************\n\n");
char xxxx[32];
printf("请输入名字:\n");
scanf("%s",name);
for(i=0;i<gIndex;i++)
{
ret=strcmp(name,gUser[i]);
if(ret==0)
{
tmp=1;
break;
}
}
if(tmp==1)
{
printf("请输入密码:\n");
scanf("%s",mima);
if(strcmp(mima,gMima[i])==0)
{
int j;j=i;
strcpy(gGuashiuser[j],gUser[i]);
printf("用户:%s已成功挂失\n",gUser[i]);
strcpy(gUser[i],"xxxx");
}
else
{
printf("密码错误\n");
}
}
else
{
printf("该用户不存在,请开户\n");
}
}
else if(cdm==8) //解挂
{
printf("***************解挂界面***************\n\n");
printf("请输入姓名:\n");
scanf("%s",name);
for(i=0;i<100;i++)
{
ret=strcmp(gGuashiuser[i],name);
if(ret==0)
{
a=1;
break;
}
}
if(a==1)
{
printf("请输入密码:\n");
scanf("%s",mima);
if(strcmp(gMima[i],mima)==0)
{
strcpy(gUser[i],gGuashiuser[i]);
printf("您已成功解挂\n");
}
else
{
printf("密码错误\n");
}
}
else
{
printf("该用户不存在,请开户\n");
}
}
else //退出
{
printf("你已成功退出系统!\n");
break;
}
}
return 0;
}
void tishi()
{
char name[100]="changxuan";
char Name[32];
char mima[8]="admin";
char Mima[6];
printf("***********************欢迎进入银行管理操作系统***********************\n\n\n");
printf("请你输入管理员姓名:\n");
scanf("%s",Name);
printf("请你输入管理员密码:\n");
scanf("%s",Mima);
if(strcmp(mima,Mima)==0&&strcmp(name,Name)==0)
{
system("cls");
printf("*******************************************************\n");
printf(" *\n");
printf("请你选择要办理的业务:\n\n 1.存款\t2.取款 \t3.查询 *\n\n\n 4.开户\t5.销户 \t6.转账 *\n\n\n 7.挂失\t8.解挂 \t9.退出 *\n\n\n");
printf(" *\n");
printf("*******************************************************\n");
}
else
{
if(t==2)
{
x=1;
return ;
}
system("cls");
printf("用户名或密码错误!\n");
t++;
tishi();
}
}
运行截图:
说明:
初始用户名:changxuan 密码:admin
连续三次输入密码或者用户名错误将强行关闭系统
Bug颇多,请斧正
心得:
通过此次制作,可以较好的掌握住C语言中的循环,选择,顺序等结构。另外还可以培养出对软件制作的兴趣。