/* * 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语言中的循环,选择,顺序等结构。另外还可以培养出对软件制作的兴趣。