1. 使用C语言编写atm程序,实现密码修改的功能。
2. 需要设置一个全局变量来存储当前用户的密码信息。
3. 在主函数中,定义一个函数,用于输入原密码和修改后的新密码。
4. 在输入新密码之前,需要验证输入的原密码是否正确。
5. 如果原密码输入正确,则继续输入新密码,并将新密码记录到全局变量中。
6. 如果原密码输入错误,则提示用户重新输入。
7. 将修改后的新密码记录到文件中,以备下次使用。
#include <stdio.h>#include <stdlib.h>
#include <conio.h>
#include <string.h>
void regist()
void login()
void quite()
void inputpassword(char mima[])
void service()
struct bank
{
char name[20]
char password[7]
int account
double money
}kehu
int find
int a[10]
struct bank one
FILE *fp
void main()
{
int i
int t=1
for(i=0i<100i++)
{
printf("\t\t\t\t\t\t欢迎使用青软ATM系统\n")
printf("\t\t\t\t\t\t正在进入主界面,请稍等")
int j
for(j=1j<tj++)
{
printf(".")
}
t++
if(t==10)
{
t=1
}
printf("\n\t\t\t\t\t\t%d%%",i)
system("cls")
}
while(1)
{
printf("\t\t\t\t\t\t服务类型: \n")
printf("\t\t\t\t\t\t[a]: 用户注册\n")
printf("\t\t\t\t\t\t[b]: 用户登录\n")
printf("\t\t\t\t\t\t[c]: 退出系统\n")
printf("\t\t\t\t\t\t请选择服务: ")
fflush(stdin)
char xz
scanf("%c",&xz)
if(xz=='a'||xz=='A')
{
regist()
} else if (xz=='b'||xz=='B')
{
login()
} else if(xz=='c'||xz=='C')
{
quite()
} else
{
printf("输入有误,请重新输入")
}
getch()
system("cls")
}
}
void inputpassword(char mima[])
{
int i=0
char ch
while(1)
{
ch=getch()
if(ch!='\r')
{
if(ch!='\b'){
mima[i]=ch
i++
printf("*")
}else{
if(i>0){
i--
printf("\b \b")
}
}
}else{
break
}
}
mima[i]='\0'
printf("\n")
}
void regist()
{
fp=fopen("atm.txt","ab+")
if(fp==NULL)
{
printf("\n\t\t\t文件打开失败!")
return
}
system("cls")
printf("\t\t\t现在执行的是注册函数的使用\n")
printf("\t\t请输入用户名: ")
fflush(stdin)
gets(kehu.name)
char password1[7]
while(1)
{
while(1)
{
printf("\n\n\t\t请输入密码:")
fflush(stdin)
inputpassword(kehu.password)
int n=strlen(kehu.password)
if(n==6)
{
break
}else
{
printf("\n\t\t密码必须为6位!")
}
}
printf("\n\t\t请输入正确密码!: ")
fflush(stdin)
inputpassword(password1)
if(strcmp(kehu.password,password1)==0)
{
break
}else{
printf("\n\n\t\t两次密码必须相同!")
}
}
rewind(fp)
struct bank k
if(fread(&k,sizeof(struct bank),1,fp)==1)
{
fseek(fp,-sizeof(k),2)
fread(&k,sizeof(k),1,fp)
kehu.account=k.account+1
}else{
kehu.account=20170001
}
kehu.money=0
fseek(fp,0,2)
fwrite(&kehu,sizeof(struct bank),1,fp)
fclose(fp)
printf("\n\n\t\t开户成功! ")
printf("\n\t\t您的账号为%d!",kehu.account)
printf("\n\t\t现在请您重新登录!")
}
void searchmoney()
{
system("cls")
printf("您现在使用的是查询余额功能: \n")
printf("\n\n\t\t您的余额是%0.2lf",one.money)
}
void savemoney()
{
system("cls")
double inmoney
printf("请您选择您要存款的金额 \n")
scanf("%lf",&inmoney)
int q
int r=1
for(q=0q<100q++)
{
int w
for(w=1w<rw++)
{
printf(".")
}
r++
if(r==10)
{
r=1
}
printf("\n\t\t\t\t\t\t正在存款%d%%",q)
system("cls")
}
one.money=one.money+inmoney
fseek(fp,-sizeof(one),1)
fwrite(&one,sizeof(one),1,fp)
printf("\n\n\t\t\t\t\t\t您已存款成功!")
}
void withdrawalmoney()
{
system("cls")
double outputsomemoney
printf("请您选择您要取款的金额 \n")
scanf("%lf",&outputsomemoney)
if(one.money<outputsomemoney){
printf("您的余额已不足,请您注意!")
}else {
int q
int r=1
for(q=0q<100q++)
{
int w
for(w=1w<rw++)
{
printf(".")
}
r++
if(r==10)
{
r=1
}
printf("\n\t\t\t\t\t\t正在取款%d%%",q)
system("cls")
}
one.money=one.money-outputsomemoney
fseek(fp,-sizeof(one),1)
fwrite(&one,sizeof(one),1,fp)
printf("\n\n\t\t\t\t\t\t您已取款成功!请点清钞票!")
printf("\n\n\t\t\t\t\t\t您现在的余额为%lf",one.money)
}
}
void transfermoney()
{
system("cls")
int duifang
int qian
fflush(stdin)
printf("\n\n\n\t\t您现在使用的是转账功能")
printf("\n\t\t\t请输入您要转账的账户:")
scanf("%d",&duifang)
int n=ftell(fp)
rewind(fp)
int flag=0
struct bank temp
while(fread(&temp,sizeof(temp),1,fp)==1)
{
if(temp.account==duifang)
{
flag=1
break
}
}
if(flag==1)
{
printf("请输入转账金额:")
scanf("%d",&qian)
if(one.money>=qian)
{
int q
int r=1
for(q=0q<100q++)
{
int w
for(w=1w<rw++)
{
printf(".")
}
r++
if(r==10)
{
r=1
}
printf("\n\t\t\t\t\t\t正在转账,请稍后!%d%%",q)
system("cls")
}
temp.money=temp.money+qian
fseek(fp,-sizeof(temp),1)
fwrite(&temp,sizeof(temp),1,fp)
one.money=one.money-qian
fseek(fp,n-sizeof(one),0)
fwrite(&one,sizeof(one),1,fp)
printf("\n\t\t\t\t转账成功!")
}else{
printf("\n\t\t\t\t您的余额已不足!")
}
}
}
void xiugai(){
system("cls")
printf("\n\n\t\t 现在进行的是修改密码功能\n")
char oldpassword[7]
char newpassword[7]
char newpassword1[7]
int i
for(i=0i<3i++){
printf("\n\t\t\t 请输入旧密码:\n")
inputpassword(oldpassword)
if(strcmp(oldpassword,one.password)==0){
printf("\n\t\t\t 输入成功!\n")
break
}else{
printf("\n\t\t\t 密码输入有误,请重新输入!\n")
}
}
if(i<3){
while(1){
printf("\n\t\t\t 请输入您的新密码:\n")
inputpassword(newpassword)
printf("\n\t\t\t 请输入您的确认密码:\n ")
inputpassword(newpassword1)
if(strcmp(newpassword,newpassword1)==0){
strcpy(one.password,newpassword)
fseek(fp,-sizeof(one),1)
fwrite(&one,sizeof(one),1,fp)
printf("\n\t\t\t 密码修改成功!")
break
}else{
printf("\n\t\t\t 两次密码输入不一致!")
}
}
}else{
printf("\n\t\t\t 密码输入错误!")
}
}
int zhuxiaozhanghao()
{
system("cls")
int zhuxiaoxitong
char sf
printf("你要注销的账号是%d",one.account)
printf("你是否要对此账号进行注销?\n\n\t\t请您选择:注销(Y)or不注销(N):")
fflush(stdin)
scanf("%c",&sf)
if(sf=='y'||sf=='Y')
{
printf("正在为您注销!\n",one.account)
zhuxiaoxitong=1
}else{
printf("不注销系统!\n",one.account)
}
return zhuxiaoxitong
}
void service()
{
while(1){
system("cls")
printf("\n\n\n\t\t\t\t\t\t现在是服务系统,本系统有以下服务")
printf("\n\t\t\t\t\t\t[a] 查询余额\n")
printf("\n\t\t\t\t\t\t[b] 存款服务\n")
printf("\n\t\t\t\t\t\t[c] 转账服务\n")
printf("\n\t\t\t\t\t\t[d] 取款服务\n")
printf("\n\t\t\t\t\t\t[e] 修改密码\n")
printf("\n\t\t\t\t\t\t[f] 注销\n")
printf("\n\t\t\t\t\t\t[g] 退出系统\n")
char e
printf("\n\t\t\t\t\t\t您要选择的服务是:")
fflush(stdin)
scanf("%c",&e)
switch(e)
{ case'A':
case'a': searchmoney() break
case'B':
case'b': savemoney() break
case'C':
case'c': transfermoney() break
case'D':
case'd': withdrawalmoney() break
case'E':
case'e': xiugai() break
case'F':
case'f': {int zhuxiaoxitong=zhuxiaozhanghao(){if(zhuxiaoxitong==1) return}break}
case'G':
case'g': quite()break
}
printf("\n\n\n\t\t\t\t按任意键继续......\n")
getch()
}
}
void login()
{
fp=fopen("atm.txt","rb+")
if(fp==NULL)
{
printf("\n\n\n\t\t\t\t文件打开失败!")
return
}
system("cls")
printf("\n\t\t\t\t\t\t现在执行的是登录函数的使用\n")
int zhanghao
printf("\n\t\t\t\t\t\t请输入账号:")
scanf("%d",&zhanghao)
int flag=0
while(fread(&one,sizeof(one),1,fp)==1)
{
if(zhanghao==one.account){
flag=1
break
}
}
char password2[7]
if(flag==1){
int h
for(h=0h<3h++){
printf("\n\t\t\t\t\t\t请输入密码:")
fflush(stdin)
inputpassword(password2)
if(strcmp(password2,one.password)==0)
{
printf("\n\t\t\t\t\t\t登陆成功!")
service()
break
}else{
printf("密码不正确!")
}
}
if(h==3){
printf("\n\t\t\t您的密码三次输入有误,返回")
}
}else{
printf("无此账号!")
}
fclose(fp)
}
void quite()
{
system("cls")
printf("\t\t\t现在执行的是退出函数的使用\n")
exit(0)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)