c语言ATM机文件储存账号密码,C语言实现_ATM自动取款机系统

1、欢迎界面的实现用函数welcom实现,建立.h文件命名welcom.h

void wel()//欢迎界面;

{

FILE *fp;

if((fp=fopen("data/welcome.txt","r"))!=NULL)

{

char ch[10000];

while(!feof(fp))

{

fgets(ch,100,fp);

printf(ch);

Sleep(200);

}

printf("\n\n");

fclose(fp);

}

}

void menu()//主菜单;

{

FILE *fp;

if((fp=fopen("data/menu.txt","r"))!=NULL)

{

char ch[100];

while(!feof(fp))

{

fgets(ch,100,fp);

printf(ch);

}

fclose(fp);

}

}

2.用户的功能由函数client实现,也是存储在client.h文件中。

void showmoney()//功能1:查询余额

{

printf("\t用户名 :%s\n",user.name);

printf("\t账户余额:%d\n",user.money);

printf("\t请按Enter键返回\n");

getchar();

}

void drawmoney()//功能2:取款业务

{

FILE *fp;

int a,i;

char c;

while(1){

printf("\t请输入您的取款金额:");

scanf("%d",&a);

if(a>user.money)

printf("\t账户余额不足,请重新输入!\n");

else if(a<0)

printf("\t输入有误,请重新输入!\n");

else

break;

}

getchar();

user.money-=a;

if((fp=fopen("data/client.dat","wb"))!=NULL)

{

fwrite(&user, sizeof(client), 1 ,fp);

fclose(fp);

}

printf("\t取款成功,请收好您的钞票!\n");

printf("\t是否打印凭条? y/n ");

scanf("%c",&c);

getchar();

if(c=='Y' || c=='y')

{

printf("\t正在打印请稍后。。。。。\n\t\t");

for(i=0;i<10;i++)

{

printf("■");

Sleep(400);

}

printf("\n");

printf("\t打印完成,请收好您的凭条\n");

printf("\t请按Enter键退出\n");

getchar();

}

else

{

printf("\t请按Enter键退出\n");

getchar();

}

}

void savemoney()//功能3:存款业务

{

FILE *fp;

int a,i;

char c;

printf("\t请输入您的存款数额:");

scanf("%d",&a);

getchar();

user.money+=a;

if((fp=fopen("data/client.dat","wb"))!=NULL)

{

fwrite(&user, sizeof(client), 1 ,fp);

fclose(fp);

}

printf("\t存款成功\n");

printf("\t是否打印凭条? y/n ");

scanf("%c",&c);

getchar();

if(c=='Y' || c=='y')

{

printf("\t正在打印请稍侯。。。。。\n\t\t");

for(i=0;i<10;i++)

{

printf("■");

Sleep(400);

}

printf("\n");

printf("\t打印完成,请收好您的凭条\n");

printf("\t请按Enter键退出\n");

getchar();

}

else

{

printf("\t请按Enter键退出\n");

getchar();

}

}

void updatekey()//功能5:改密业务

{

char ch[10];

char str[10];

FILE *fp;

int i;

printf("\t请输入您的初始密码 :");

strcpy(ch,get_password());

while(1)

{

if(strcmp(ch,user.key) != 0)

{

printf("\t您的初始密码输入错误请重新输入:");

strcpy(ch,get_password());

}

else

break;

}

while(1){

printf("\t请输入您要修改的密码 :");

strcpy (ch,get_password());

printf("\t请再次输入要修改的密码:");

strcpy(str,get_password());

if(strcmp(ch,str)==0)

{

strcpy(user.key,ch);

printf("\t正在为您修改,请稍候\n\t");

for(i=0;i<10;i++)

{

printf("■");

Sleep(400);

}

if((fp=fopen("data/client.dat","wb"))!=NULL)

{

fwrite(&user, sizeof(client), 1 ,fp);

fclose(fp);

}

printf("\n\t密码修改成功\n");

printf("\t请按回车键退出\n");

getchar();

break;

}

else

printf("\t您两次密码输入不一致,请重新输入!\n");

}

}

void rename()//功能5:修改用户名

{

FILE *fp;

char name[30];

char mame[30];

while(1)

{

printf("\t请输入您要修改的用户名:");

scanf("%s",&name);

printf("\t请确认您的用户名 :");

scanf("%s",&mame);

getchar();

if(strcmp(name,mame)==0)

{

strcpy(user.name,name);

if((fp=fopen("data/client.dat","wb"))!=NULL)

{

fwrite(&user, sizeof(client), 1 ,fp);

fclose(fp);

}

printf("\t已成功修改您的用户名,请牢记!\n");

printf("\t请按回车键退出\n");

getchar();

break;

}

else

printf("\t您两次输入的用户名不一致,请重新输入!\n");

}

}

void exitsystem()//功能6:退出系统

{

system("cls");

FILE *fp;

char ch;

fp=fopen("data/exit.txt","r");

while(!feof(fp))

{

ch=fgetc(fp);

putchar(ch);

}

fclose(fp);

printf("\n");

printf("请按Enter键退出\n");

getchar();

}3、登陆功能用函数login实现

struct client //结构体用于存储信息;

{

char name[50]; //用户名

char key[10]; //密码

int money;

}user;

char *get_password()//星号密码获取函数;

{

int i=0;

char a[50];

char ch='\0';

while(ch != '\r')

{

ch = getch();//无回显的从键盘接收一个字符,

if(ch == 8) //8是退格符的 ASSIC码。

{

a[--i]='\0';

putchar(8);

putchar(' ');

putchar(8);

}

else

{

if(ch=='\r')

break;

a[i++] = ch;

printf("*");//输出星号

}

}

a[i]='\0';

printf("\n");

return &a[0];

}

int login() //登陆函数;

{

FILE *fp; //读取文件保存的用户名及密码,赋值给结构体。

if((fp=fopen("data/client.dat","rb"))!=NULL)

{

fread(&user,sizeof(user),1,fp);

}

else

{

printf("该用户信息错误!\n");

}

char a[50];

char b[50];

int count=0,i,flag=0;

while(1)

{

printf("\t请输入您的用户名:");

scanf("%s",a);

printf("\t请输入您的密码 :");

strcpy(b,get_password());

if(strcmp(a,user.name)!=0 || strcmp(b,user.key)!=0)

printf("\t用户名或者密码输入错误!请重新输入!\n");

else

{

printf("\t\t\t正在登陆 请稍后\n");

printf("\t\t\t");

for(i=0;i<8;i++)

{

printf("■");

Sleep(500); //让系统在此处停留500毫秒之后在运行。

}

printf("\n");

break;

}

count++;

if(count == 3)

{

printf("\t\t您输入错误已超过三次,系统已退出!\n");

system("color 4a");

flag=1;

break;

}

}

return flag;

}

4、主函数ATM.cpp中值调用,使得结构更清晰合理。

#include #include #include #include #include #include "login.h" //登陆函数模块

#include "Welcome.h" //界面欢迎模块

#include "client.h" //用户操作界面

int main()

{

system("color 2a");

wel();

printf("\t\t\t确定登陆?Y/N ");

char c;

scanf("%c",&c);

getchar();

if(c=='n'||c=='N')

{

exitsystem();

}

else

{

int f;

system("cls"); //清屏

printf("\t\t\t进入中,请稍候.......\n\n");

Sleep (800);

f=login();

system("cls");

if(f==1)

{

printf("正在退出系统。。。。");

Sleep(3000);

exitsystem();

}

else

{

while(1)

{

menu();

printf("\n\t请输入代号:");

int m;

scanf("%d",&m);

getchar();

if(m==1)

{

Sleep (500);

showmoney();

system("cls");

}

else if(m==2)

{

Sleep (500);

drawmoney();

system("cls");

}

else if(m==3)

{

Sleep (500);

savemoney();

system("cls");

}

else if(m==4)

{

Sleep (500);

updatekey();

system("cls");

}

else if(m==5)

{

Sleep (500);

rename();

system("cls");

}

else if(m==6)

{

exitsystem();

break;

}

}

}

}

return 0;

}

四、补充

该系统还有很多特效,但是由于不会在博客展示动态效果,更多信息,课在本地运行展示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言求最多啤酒数,C语言,算法、动态规划:有一个箱子的容量为v(正整数,0=v=20000),同时有n个物品(0n=30),...

满意答案24k纯真爱l2013.11.07采纳率&#xff1a;42% 等级&#xff1a;12已帮助&#xff1a;9552人#include#define N 30int xiangzi(int n ,int V ,int a[]) //楼主后面的Vo数组必须放进递归函数里面或定义成全局数组 另外h[n]什么情况??{int minv,t,mV;if(n0){if(a[n]&l…

c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)

Sleep函数:功 能: 执行挂起一段时间用 法:unsigned sleep(unsigned seconds);注意:在VC中使用带上头文件#include ,在Linux下,gcc编译器中&#xff0c;使用的头文件因gcc版本的不同而不同#include 在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写&…

2017电大c语言考试时间,2017年电大 《c语言程序设计》a课程考核说明.doc

2017年电大 《c语言程序设计》a课程考核说明中央广播电视大学计算机科学与技术专业C语言程序设计A课程考核说明(2008)一、考核说明《C语言程序设计》课程是全国电大系统计算机科学与技术专业(本科)的一门基础必修课程。本课程是学习数据结构、操作系统、计算机网络、数据库、软…

c语言可循环计算器代码,可编程简易计算器(代码)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼while(sign[0]!a){//if(input[index]){for(int i0;i<4;i){if(firsttime 1)i3;//提取第i1个数字dexto1;char num_str[INPUT_LEN]{};while(input[index]){if(isdigit(input[index]))num_str[dexto]input[index];elseif((input[ind…

android 动态文本选取,android-用动态文本更新UI

我会使用处理程序.private static final int WHAT 1;private static final int TIME_TO_WAIT 5000;Handler regularHandler new Handler(new Handler.Callback() {public boolean handleMessage(Message msg) {// Do stuffregularHandler.sendEmptyMessageDelayed(msg.what,…

京东广告联盟android,京东APP联盟SDKAndroid版接口说明文档1.0.PDF

京东APP联盟SDKAndroid版接口说明文档1.0京东APP 联盟SDK Android 版接口说明文档1.01. 嵌入SDK1.1 添加SDKAndroid Studio 环境&#xff1a;菜单New->New Module->Import .jar or .aar package&#xff0c;然后选中App联盟SDK 所带的jar 文件。EclipseADT 环境: 将App 联…

android 环绕布局,Android自定义View实现圆形环绕效果

之前项目中需要实现一个四周环绕中心圆形头像的效果&#xff0c;感觉还是自定义比较方便&#xff0c;于是就自己封装了一个控件去实现。先贴张图显示最终效果。首先自定义一个View继承自LinearLayout,通过动态添加childView的方式将子控件添加到View中。思路是先添加中间圆形头…

android tasker,Tasker:Android系统增强神器

权限信息 net.dinglisch.android.tasker.PERMISSION_RUN_TASKS net.dinglisch.android.tasker.PERMISSION_AUTO_IMPORT com.joaomgcd.taskersettings.SET_SETTING net.dinglisch.android.zoom.permission.MAKE_CHANGES android.permission.PACKAGE_USAGE_STATS cyanogenmod.per…

android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1

一、简介&#xff1a;在百度、高德地图开发中&#xff0c;申请key的时候&#xff0c;要两个版本的sha1值。一个是开发版(debug)&#xff0c;一个是发布版(release)。debug版本的sha1比较好获取&#xff0c;网上资料一堆&#xff0c;这里引用一下&#xff0c;就不再重复写了。最…

signature=adf15bd90b83b628c647a1aa64741773,Thoracic Oncology

摘要&#xff1a;Thymic malignancies are rare epithelial tumors that may be aggressive and difficult totreat. Thymomas are usually localized to the anterior mediastinum and are frequentlyeligible for upfront surgical resection. However, nearly 30% of patien…

html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式

1、html特殊字符的显示我们知道html语言和C语言一样也有一些特殊字符&#xff0c;它们是不能正常显示的&#xff0c;必须经过转义&#xff0c;在网上可以查到如何显示这些字符&#xff0c;如下图所示&#xff1a;上图给了最常用的特殊字符的显示&#xff0c;下面我们来实验一下…

html 变量类型强制转换,html、js前台数据传到后台,spring复杂类型转换

html、js前台数据传到后台&#xff0c;spring复杂类型转换如果我有两个变量&#xff0c;变量名不一样&#xff0c;处理的规则也不一样&#xff0c;但是他们都是Date.class 类型&#xff0c; 这可怎么破。比如&#xff1a;InitBinderpublic void bindingPreparation(WebDataBind…

html盒模型中border的写法,HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手...

很多小伙伴在前端学习的时候&#xff0c;发现盒子模型默认为正方形。如何把盒子变成想要的模型呢&#xff1f; 首先我们来看一下默认的情况----.box{width: 100px;height: 100px;background-color: rgb(116, 51, 51);box-shadow:0 10px 10px red;text-align: center;position:a…

希捷银河声音大_每日观影之银河守门员( )

#银河守门员Вратарь Галактики#真心不错的科幻大片…尤其这剧情故事实在是俄国电影的一个很有突破性的亮点…基本可以说全方面凸显了俄罗斯的国情…比如高大上的部分完全不输欧美甚至有所超越领先都是要拯救世界而且还很壮烈拼搏的样子…然而百姓生活却显得很窘…

html select 修改默认箭头样式,自定义select标签箭头样式

select::-ms-expand{ display: none; }//ie样式清除select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background: url("/uploadfiles/images/alliance/xiala2x.png") no-repeat scroll 480px center transparent;background-size: 20px 10px;p…

bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读

点击上方“蓝字”关注我们之前发过一篇文章小程序反编译工具在windows系统下的调用脚本提到了Windows平台下的脚本&#xff0c;但是对脚本没有做详细说明。本文就是针对脚本做的讲解。对批处理感兴趣的可以了解下。不会基础也没关系。下面我们进入正题。脚本解读第1行&#xff…

把HTML代码上传到gitee,使用git上传项目到gitee以及VS使用git管理项目

在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)$ git config --global user.name "hanyuntao"$ git config --global user.email "hanyuntaocn163.com"Paste_Image.png2.4 设置SSH key(git中sshkey有何作用&#xff1f;)2.4.1 生成…

定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?

临近年末&#xff0c;各家保险公司都开始备战2020年的“开门红”。对于保险公司来说&#xff0c;“开门红全年红”&#xff0c;只要开门红的任务完成得好&#xff0c;那么今年大半年的保费就不用担心了&#xff0c;因此保险公司们对于这一战都十分重视。如果说“双11”、“双12…

html中post语句,html中post乱码的解决方法

html中post乱码的解决方法发布时间&#xff1a;2021-05-27 11:29:00来源&#xff1a;亿速云阅读&#xff1a;91作者&#xff1a;小新这篇文章主要介绍html中post乱码的解决方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要…

泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗

中考是人们升高中的必经之路&#xff0c;它虽然没有高考那样振奋人心&#xff0c;但是对于当时的人来说也算是一场最正规的考试。首先&#xff0c;不可否认的是中考是很重要的。虽然它不能对高考有着直接影响&#xff0c;但是却有着间接影响。在每年的六份左右出来。中考是很重…