参考如下:
#include <conio.h>#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char cFile[] = "date.txt"
struct bank
{
char id[10+1]
char psw[6+1]
double money
}
welcome1()
{
printf("\n\n\t\t欢迎使用虚拟银行自动取款机服务!\t\t\n\n")
printf("请选择功能:\n")
printf("\n=================================================\n")
printf(" || 请输入序号 ||\n")
printf(" || 1.新用户开户。 ||\n")
printf(" || 2.老用户登陆。 ||\n")
printf(" || 3.退出系统。 ||\n")
printf("=================================================\n")
}
welcome2()
{
printf("\n\n\t\t注册须知\n\n")
printf("**************************************************\n")
printf("* 1.请填写您的真实资料! *\n")
printf("* 2.开户首期必须存入100元以上 *\n")
printf("**************************************************\n")
}
welcome3()
{
printf("\n\n\t\t\3 欢迎进入虚拟银行系统 \3\n\n")
printf("\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n")
printf("\1\1\t 请选择功能:1.取款(最多透资2000) \1\1\n")
printf("\1\1\t 2.存款 \1\1\n")
printf("\1\1\t 3.查询余额 \1\1\n")
printf("\1\1\t 4.修改密码 \1\1\n")
printf("\1\1\t 5.返回主页面 \1\1\n")
printf("\1\1\t 任意键退出. \1\1\n")
printf("\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\n")
}
int search(char* user, char* pwd, char* real_pwd)/*判断帐号是否相同,不相同返回1*/
{
FILE* file
char user_buff[256], pwd_buff[256]
file = fopen(cFile, "r")
if (!file) return 0
while (!feof(file))
{
if (fscanf(file, "%s%s\n", user_buff, pwd_buff) == EOF) return 0
if (!strcmp(user_buff, user))
{
if (real_pwd) strcpy(real_pwd, pwd_buff)
return 1
}
}
fclose(file)
return 0
}
int add(char* user, char* pwd, double coin_n)
{
FILE* file
file = fopen(cFile, "a")
if (!file) return 0
fprintf(file, "%s %s %.2lf\n", user, pwd, coin_n)
fclose(file)
return 0
}
int wenjian(char* user, char* pwd,double coin)
{
if (search(user, pwd, NULL)) return 0
else add(user, pwd, coin)
return 1
}
zhuce()/*注册*/
{
struct bank *p
int i=0,k=0,judge1,judge2
char name[30]
char sex,ch
char sh[18]
int n
p=(struct bank*)malloc(sizeof(struct bank))/*给p分配内存*/
welcome2()
printf("请输入您的名字(纯英文):")
gets(name)
printf("请输入您的性别(男:1 女2):")
fflush(stdin)
scanf("%c",&sex)
fflush(stdin)
printf("请输入您的身份z号码:")
gets(sh)
for(n=0n<strlen(name)n++)/*判断输入信息是否正确*/
{
if(name[n]>='0'&&name[n]<='9')
{
printf("您输入的名字有误!\n")
printf("\n请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
}
if(sex!='1'&&sex!='2')/*判断输入信息是否正确*/
{
printf("您输入的性别不对!\n")
printf("\n请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
if(strlen(sh)!=18)/*判断输入信息是否正确*/
{
printf("您输入的身份z号码不全!\n")
printf("\n请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
for(n=0n<strlen(sh)-1n++)/*判断输入信息是否正确*/
{
if(sh[n]<48||sh[n]>57)
{
printf("您输入的身份z号码非法!\n")
printf("\n请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
else
{
if(sh[18]!='x'&&sh[18]<48&&sh[18]>57)
{
printf("您输入的身份z号码非法!\n")
printf("\n请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
}
}
printf("请输入您的帐号(10位纯数字):\n")
fflush(stdin)
scanf("%s",p->id)
fflush(stdin)
while(i <strlen(p->id))
{
if((p->id[i] < 48) || (p->id[i] > 57))
{
judge1=0
}
i++
}
while(strlen(p->id)!=10 ||judge1==0)/*判断帐号的正确性*/
{
printf("您输入的帐号不正确,必须为10位纯数字!")
printf("请重新输入(10位纯数字):")
fflush(stdin)
scanf("%s",p->id)
fflush(stdin)
}
printf("请输入您的密码(6位纯数字):\n")
fflush(stdin)
scanf("%s",p->psw)
fflush(stdin)
while(k <strlen(p->psw))
{
if((p->psw[k] < 48) || (p->psw[k] > 57))
{
judge2=0
}
k++
}
while(strlen(p->psw)!=6 ||judge2==0)/*判断密码形式的正确性*/
{
printf("您输入不正确!密码必须为6位纯数字!\n")
printf("请重新输入密码(6位纯数字):")
fflush(stdin)
scanf("%s",p->psw)
fflush(stdin)
}
printf("请输入您的首期存款:")
fflush(stdin)
scanf("%lf",&p->money)
fflush(stdin)
while((p->money)<100)
{
printf("您必须存入100元以上,请重新输入:")
fflush(stdin)
scanf("%lf",&p->money)
fflush(stdin)
}
if (wenjian(p->id,p->psw,p->money))/*存入文件并输出基本信息*/
{
system("cls")
printf("注册成功!")
printf("您的注册信息如下,请牢记:\n")
printf("名字:")
puts(name)
printf("性别代码:%c\n",sex)
printf("身份z号码:")
puts(sh)
printf("帐号:")
puts(p->id)
printf("密码:")
puts(p->psw)
printf("您帐户里的余额为:%.2lf\n",p->money)
printf("请选择:按1返回主页面. 按任意键退出:")
fflush(stdin)
scanf("%c",&ch)
fflush(stdin)
if(ch=='1'){system("cls")main()}
else exit(0)
}
else/*如有相同帐号,注册失败*/
{
system("cls")
printf("您输入的帐号已经存在!注册失败!\n")
printf("请选择:按1返回主页面. 按任意键退出:")
scanf("%c",&ch)
if(ch=='1'){system("cls")main()}
else exit(0)
}
}
gongneng(char Account[10+1],char Password[6+1],double Money)/*登陆成功后的功能界面*/
{
FILE *ps
struct bank xin[1000]
int k=0,b=0
char mima[6+1],Chiose,x
char count[10+1],word[6+1]
double inmoney,outmoney,addmoney
welcome3()
fflush(stdin)
scanf("%c",&Chiose)
fflush(stdin)
ps=fopen(cFile,"r")
if (!ps)
{
printf("不能打开文件!按任意键退出!")
fflush(stdin)
scanf("%c",&x)
fflush(stdin)
exit(0)
}
if(Chiose=='1')
{
printf("输入您的取款金额:")
fflush(stdin)
scanf("%lf",&outmoney)
fflush(stdin)
while(!feof(ps))
{
fscanf(ps, "%s %s %lf",&xin[k].id,&xin[k].psw,&xin[k].money)
k++
}
fclose(ps)
ps=fopen(cFile,"wb")
if (!ps)
{
printf("不能打开文件!按任意键退出!")
fflush(stdin)
scanf("%c",&x)
fflush(stdin)
exit(0)
}
while(!feof(ps))
{
//printf("%s %s %.2lf\n",xin[b].id,xin[b].psw,xin[b].money)
if ((strcmp(Account, xin[b].id)==0)&&(strcmp(Password, xin[b].psw)==0))
{
xin[b].money=xin[b].money-outmoney
}
printf("%.2lf\n",xin[b].money)
fprintf(ps, "%s %s %.2lf\n", xin[b].id, xin[b].psw, xin[b].money)
b++
}
}
}
denglu()/*登陆*/
{
FILE *fp
char account[10+ 1],password[6 + 1],h
int m=0
char real_account[10+ 1] /* 帐号缓存 */
char real_password[6 + 1] /* 密码缓存*/
double real_money_o=0.0 /*存款缓存*/
printf("请输入您的帐号(10位纯数字):")
gets(account)
printf("请输入您的密码(6位纯数字):")
gets(password)
fp = fopen(cFile, "r")
if (!fp)
{
printf("不能打开文件!按任意键退出!")
fflush(stdin)
scanf("%c",&h)
fflush(stdin)
exit(0)
}
while (m<=2) /*判断是否输入错3次了*/
{
while(fscanf(fp, "%s %s %lf", &real_account, &real_password,&real_money_o) != EOF) /*循环判断帐号密码*/
{
if ((strcmp(real_account, account)==0)&&(strcmp(real_password, password)==0))
{
system("cls")
printf("登陆成功!")
gongneng(real_account,real_password,real_money_o)
fclose(fp)
return 0
}
}
rewind(fp) /*重新打开文件,进行新一轮的密码验证*/
printf("您输入的帐号不存在或密码不正确!\n请重新输入:\n")
m++
printf("请输入您的帐号(10位纯数字):")
fflush(stdin)
gets(account)
fflush(stdin)
printf("请输入您的密码(6位纯数字):")
fflush(stdin)
gets(password)
fflush(stdin)
}
fclose(fp)
printf("您输入帐号密码不正确已经3次,您被强制退出系统(按任意键退出)!")
fflush(stdin)
scanf("%c",&h)
fflush(stdin)
exit(0)
}
int main()
{
char chiose
welcome1()
scanf("%c",&chiose)
getchar()
if(chiose <='0' ||chiose>='4')
{
while(chiose <='0' || chiose>='4')
{
printf("您的输入有误,请重新输入:")
scanf("%c",&chiose)
getchar()
}
}
if(chiose=='1')
{
system("cls")
zhuce()/*注册*/
}
if(chiose=='2')
{
system("cls")
denglu()/*登陆*/
}
if(chiose=='3')
{
printf("谢谢您的使用!")
exit(0)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)