这是一个比较大的程序
可以用作大作业,就用这一篇文档收尾好了
是我自己编写的,一个说复杂不复杂,说简单也绝对不简单的代码
我花了前后5-6个小时完成的
分享给大家,希望大家喜欢
01 代码讲解
实现的功能:
1:验证密码是否正确,不正确吵过次锁卡(其实就是打印出信息),正确的话进入银行操作系统
2:修改密码,连续两次输入密码一致则正确,我设置的密码位数7,可以自行修改密码,只因为个人习惯,前后两次输入密码不一致则提示输入错误
3:查询余额
4:取钱
5:存钱
6:退出
基本就这几个简单的功能,功能描述顺序和实际顺序不太一致,大家理解就可以了,不想去翻代码仔细核对了
我们的密码,余额会分别存放在各自的txt文档里,文档名称和路径大家也可以修改代码
02 代码
#include "stdio.h"
#include "stdlib.h"
#include <conio.h>
#include "String.h"
int main()
{
int i,k,yewu,mimacishu=0;
FILE *fp,*p;
int count=0;
float cunqian=0,quqian=0;
float yue;
char mima[7]={'0'},xinmima[7]={'0'},xinmima2[7]={'0'},mimabuffer[7]={'0'},ch;
printf("欢迎光临新疆理工学院自助银行,请输入您的密码:\n");
do{
count=0;
for(i=0;i<7;i++){
mima[i]=getch();
printf("*");
}
fp=fopen("yinhangzhangwu.txt","r");
if(fp==NULL)
{
printf("打开yinhangzhanghu.txt文档失败\n");
}else
fread(mimabuffer,sizeof(char),7,fp);
fclose(fp);
printf("\n");
for(i=0;i<7;i++){
if(mima[i]==mimabuffer[i])
count++;
}
if(count==7){
printf("更改密码请输入1:\n");
printf("查询余额请输入2:\n");
printf("存钱请输入3:\n");
printf("取钱请输入4:\n");
printf("退卡请输入0:\n");
printf("请输入您想办理的业务:");
scanf("%d",&yewu);
// printf("%d\n",k);
if(yewu==1)
k=1;
if(yewu==2)
k=2;
if(yewu==3)
k=3;
if(yewu==4)
k=4;
if(yewu==0)
k=0;
}else{
if(mimacishu<2&&count!=7)
printf("您输入的密码错误,您还有%d次机会请重新输入:\n",2-mimacishu);
else
{
printf("您输入密码错误次数过多,请联系工作人员\n");
}
mimacishu++;
}
}while(mimacishu<3&&count!=7);
if(mimacishu==3)
exit(0);
yewuxunhuan:
switch(k)
{
case 1:
mimashuru:
printf("请输入您的新密码:\n");
count=0;
for(i=0;i<7;i++){
xinmima[i]=getch();
printf("*");
}
printf("\n");
printf("请再次输入您的新密码:\n");
count=0;
for(i=0;i<7;i++){
xinmima2[i]=getch();
printf("*");
}
for(i=0;i<7;i++)
{
if(xinmima[i]!=xinmima2[i]){
printf("\n您输入的密码不同,请重新输入:\n");
goto mimashuru; }}
if(i==7){
fp=fopen("yinhangzhangwu.txt","w");
if(fp==NULL)
{
printf("打开yinhangzhanghu.txt文档失败\n");
}else
for(i=0;i<7;i++){
fputc(xinmima[i],fp);
}
fclose(fp);
}
printf("\n请您重新插卡输入密码\n");
break;
case 2:
p=fopen("yue.txt","r");
if(p==NULL)
{
printf("打开yue.txt文档失败\n");
}else
fscanf(p,"%f",&yue);
printf("您的余额为%.2f元\n",yue);
fclose(p);
printf("请问您还要办理什么业务?\n");
printf("更改密码请输入1:\n");
printf("查询余额请输入2:\n");
printf("存钱请输入3:\n");
printf("取钱请输入4:\n");
printf("退卡请输入0:\n");
scanf("%d",&k);
goto yewuxunhuan;
break;
case 3:
printf("请输入您要存的钱数额:");
scanf("%f",&cunqian);
p=fopen("yue.txt","r");
if(p==NULL)
{
printf("打开yue.txt文档失败\n");
}else
fscanf(p,"%f",&yue);
yue=yue+cunqian;
printf("您的余额为%.2f元\n",yue);
p=fopen("yue.txt","w");
if(p==NULL)
{
printf("打开yue.txt文档失败\n");
}else
fprintf(p,"%f",yue);
fclose(p);
printf("请问您还要办理什么业务?\n");
printf("更改密码请输入1:\n");
printf("查询余额请输入2:\n");
printf("存钱请输入3:\n");
printf("取钱请输入4:\n");
printf("退卡请输入0:\n");
scanf("%d",&k);
goto yewuxunhuan;
case 4:
printf("请输入您要取的钱数额:");
scanf("%f",&quqian);
p=fopen("yue.txt","r");
if(p==NULL)
{
printf("打开yue.txt文档失败\n");
}else
fscanf(p,"%f",&yue);
yue=yue-quqian;
printf("您的余额为%.2f元\n",yue);
p=fopen("yue.txt","w");
if(p==NULL)
{
printf("打开yue.txt文档失败\n");
}else
fprintf(p,"%f",yue);
fclose(p);
printf("请问您还要办理什么业务?\n");
printf("更改密码请输入1:\n");
printf("查询余额请输入2:\n");
printf("存钱请输入3:\n");
printf("取钱请输入4:\n");
printf("退卡请输入0:\n");
scanf("%d",&k);
goto yewuxunhuan;
case 0:
printf("请收好您的卡,欢迎您下次光临\n");
exit(0);
}
return 0;
}
不解释,大家自己读代码就好,或许为了实现功能,设计的有点冗余,不过就学习来说还是有一定帮助的
03 运行结果
1)输入密码错误过多
2)正常输入密码修改(修改两次不一致,直到两次密码一致)
3)查询余额+存钱+显示余额+取钱+查询余额
4)查询余额+退卡
密码和余额是可以保存的,也就是退出运行后,再次运行是之前的数据
比如,密码修改后,再次运行,就需要输入最新更改的密码了
结论
OK,C语言高阶版收官之作
也是我给我的C语言学生布置的大作业
OK,学习是一个开心的事情,分享出来,让学生们学习就更加快乐了
最后用孔老夫子的名言结尾
学而时习之 不亦说乎
温故而知新 可以为师矣
还有一句忘了谁说的了
得天下英才而教之 此一乐也