C语言ATM程序设计

合集下载

C语言 ATM 程序设计

C语言 ATM 程序设计

C语言 ATM 程序设计概述:本文将详细介绍如何使用C语言设计一个简单的ATM(自动取款机)程序。

ATM程序的主要功能包括用户登录、查询余额、取款、存款和退出等。

1. 用户登录:用户需要输入正确的账户号码和密码才干成功登录。

账户号码和密码可以存储在一个预定义的用户数据库中。

用户输入账户号码和密码后,程序将验证其有效性并赋予相应的登录状态。

2. 查询余额:用户成功登录后,可以选择查询余额。

程序将从用户数据库中获取用户的余额信息并显示在屏幕上。

3. 取款:用户成功登录后,可以选择取款。

用户需要输入取款金额,程序将验证用户账户余额是否足够。

如果余额足够,则扣除相应金额并更新用户数据库中的余额信息;如果余额不足,则提示用户余额不足。

4. 存款:用户成功登录后,可以选择存款。

用户需要输入存款金额,程序将将其加到用户账户的余额中,并更新用户数据库中的余额信息。

5. 退出:用户可以选择退出程序。

退出前,程序将提示用户是否确认退出,并根据用户的选择执行相应的操作。

6. 错误处理:程序需要对用户的输入进行错误处理。

例如,当用户输入错误的账户号码或者密码时,程序应该赋予相应的错误提示;当用户输入非法金额时,程序应该赋予相应的错误提示。

7. 数据存储:程序需要使用文件或者数据库来存储用户的账户信息和余额信息。

可以使用文本文件、二进制文件或者关系型数据库等。

8. 用户界面:程序需要提供一个友好的用户界面,以便用户能够轻松地进行操作。

可以使用控制台界面或者图形界面,根据需要选择合适的界面设计。

9. 安全性:程序需要确保用户的账户信息和余额信息的安全性。

可以使用加密算法来加密用户的密码,在存储和传输过程中保护用户的隐私。

10. 测试和调试:在完成程序的编写后,需要进行充分的测试和调试,以确保程序的稳定性和正确性。

可以编写测试用例,并对程序进行单元测试和集成测试。

总结:本文详细介绍了使用C语言设计一个简单的ATM程序的要求和功能。

C语言课程设计ATM机模拟操作附源码

C语言课程设计ATM机模拟操作附源码

C语言课程设计A T M机模拟操作附源码Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】C语言-ATM机模拟操作程序实现功能点:a.查询:查询帐户的存款余额。

按任意键返回主菜单;b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单;c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过20000元,操作后帐户余额应相应增加。

之后可返回主菜单;d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。

之后可返回主菜单;e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中。

之后可返回主菜单;f.退出:退出系统;g.帮助:增加趣味性;h.存款时,可正可负,正表示存款,负表示取款;i.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这两个文件)j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;l.有效避免输入存款金额、取款金额为负数等异常情况的出现。

较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。

是否超过余额,是否不符合格式,是否为冲突操作。

(2)程序运行截图及说明(每图限50到100字);进入程序,menu1可选择登录、注册功能。

选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。

若登录失败,则重新选择。

选择注册,输入账号密码,写入文件中。

进入menu2,有五大功能选择,输入对应的序列号进入。

用c语言编写的一个ATM取款机程序

用c语言编写的一个ATM取款机程序

⽤c语⾔编写的⼀个ATM取款机程序学了⼀个多星期的c语⾔了,⽼师布置来了作业,⽤C编写个ATM机的模拟程序,客户界⾯有,取款,2存款,3转账,4退出。

并且要求输⼊错误后,有三次机会重输,定义输⼊密码hellowold,⽤switch分⽀。

#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "123456789"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组int money;//取款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);}}第⼆步存款,定义账号#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "#define other "ni de mao ye ye"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组char others[20];int money;//取款⾦额int num2;//存款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);break;}今天先变到这⾥吧,作业还多着了,排版不是很好看,就将就这看吧。

C语言ATM系统课程设计

C语言ATM系统课程设计

C语言ATM系统课程设计一、课程目标知识目标:1. 理解C语言中基本的数据类型、语法结构及编程思想;2. 掌握ATM系统基本功能需求,如账户管理、存款、取款、查询余额等;3. 学会运用结构体、函数、文件操作等C语言知识点进行程序设计;4. 了解C语言在开发实际应用系统中的优势和局限。

技能目标:1. 能够运用所学知识编写C语言程序,实现ATM系统基本功能;2. 培养学生分析问题、设计解决方案、编写程序及调试程序的能力;3. 提高学生的逻辑思维能力和编程实践能力,为后续课程打下坚实基础。

情感态度价值观目标:1. 培养学生热爱计算机编程,增强学习C语言的兴趣和自信心;2. 培养学生具备良好的团队合作精神,学会与他人共同解决问题;3. 增强学生的创新意识,鼓励学生勇于尝试、不断探索,提高解决问题的能力;4. 通过实际项目的设计与实现,使学生认识到编程在实际生活中的应用价值,培养学生的社会责任感。

本课程针对高年级学生,在学生已具备一定C语言基础的前提下,通过设计ATM系统课程,将理论知识与实际应用紧密结合,提高学生的编程实践能力和创新意识。

课程要求学生在掌握基本知识技能的基础上,注重团队协作,充分发挥学生的主观能动性,培养具备实际编程能力的高素质人才。

二、教学内容1. C语言基础回顾:数据类型、运算符、控制语句、函数、数组、指针、结构体等;2. ATM系统需求分析:介绍ATM系统的基本功能,如用户登录、查询余额、取款、存款、转账、退出系统等;3. C语言实现ATM系统:- 设计系统框架,使用函数实现各功能模块;- 使用结构体存储和管理用户账户信息;- 文件操作实现用户账户数据的持久化存储;- 使用指针和数组处理用户操作和账户数据;- 实现用户界面交互,包括用户输入和输出处理;4. 编程实践与调试:指导学生动手编写代码,实现ATM系统各功能,并进行调试优化;5. 团队协作与项目展示:分组进行项目开发,培养学生团队协作能力,最终进行项目展示和评价。

C语言模拟ATM机的编写程序

C语言模拟ATM机的编写程序

C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。

c语言atm机编程代码

c语言atm机编程代码

c语言atm机编程代码下面是一个简单的C语言ATM机编程代码示例:#include <stdio.h>// ATM机账户结构体typedef struct {int account_number;float balance;} Account;// 初始化账户信息void init_account(Account *account, int acc_no, float bal) { account->account_number = acc_no;account->balance = bal;}// 存款void deposit(Account *account, float amount) {account->balance += amount;}// 取款void withdraw(Account *account, float amount) {if (account->balance >= amount) {account->balance -= amount;} else {printf("余额不足!\n");}}// 查询余额void check_balance(Account *account) {printf("当前余额:%.2f\n", account->balance); }// 主函数int main() {Account my_account;int choice;float amount;// 初始化账户信息init_account(&my_account, 123456789, 5000.0);// ATM机操作菜单printf("欢迎使用ATM机!\n");printf("请选择操作:\n");printf("1. 存款\n");printf("2. 取款\n");printf("3. 查询余额\n");printf("0. 退出\n");do {printf("请输入操作代码:");scanf("%d", &choice);switch (choice) {case 1:printf("请输入存款金额:");scanf("%f", &amount);deposit(&my_account, amount); break;case 2:printf("请输入取款金额:");scanf("%f", &amount);withdraw(&my_account, amount); break;case 3:check_balance(&my_account);break;case 0:printf("退出程序!\n");break;default:printf("无效的操作!\n");}} while (choice != 0);return 0;}。

c语言atm机的编程

c语言atm机的编程

C语言ATM机的编程1. 简介ATM(Automated Teller Machine)机是一种自动提款机,它能够为用户提供多种服务,如取款、存款、查询余额、转账等。

本文将介绍如何使用C语言编写一个简单的ATM机程序。

2. 功能需求我们的ATM机程序需要实现以下功能: 1. 用户登录:用户可以输入正确的账号和密码进行登录。

2. 查询余额:用户登录成功后可以查询账户余额。

3. 存款:用户登录成功后可以存入指定金额到账户中。

4. 取款:用户登录成功后可以从账户中取出指定金额。

5. 转账:用户登录成功后可以将指定金额转入其他账户。

3. 程序设计我们将使用结构体来表示用户信息及其相关操作。

首先定义一个结构体User,其中包含用户名、密码和余额三个字段:typedef struct {char username[20];char password[20];double balance;} User;接下来,我们需要实现几个函数来完成不同的操作。

首先是登录函数login():int login(User* users, int numUsers) {char username[20];char password[20];printf("请输入用户名: ");scanf("%s", username);printf("请输入密码: ");scanf("%s", password);for (int i = 0; i < numUsers; i++) {if (strcmp(username, users[i].username) == 0 && strcmp(password, users[i].password) == 0) {printf("登录成功!\n");return i; // 返回用户索引}}printf("用户名或密码错误!\n");return -1; // 登录失败}登录函数会提示用户输入用户名和密码,并与已有的用户信息进行匹配。

c课程设计atm系统

c课程设计atm系统

c 课程设计atm系统一、教学目标本节课的教学目标是使学生掌握ATM系统的基本原理和操作流程,培养学生运用C语言进行程序设计的能力。

具体目标如下:1.知识目标:–了解ATM系统的基本概念、工作原理和组成部分。

–掌握C语言的基本语法和编程技巧。

2.技能目标:–能够运用C语言编写简单的ATM系统程序。

–培养学生分析问题、解决问题的能力。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣和好奇心。

–培养学生的团队合作意识和沟通能力。

二、教学内容本节课的教学内容主要包括ATM系统和C语言两个部分。

1.ATM系统:–介绍ATM系统的基本概念、工作原理和组成部分。

–讲解ATM系统的操作流程,包括登录、查询余额、取款、存款等功能。

2.C语言:–讲解C语言的基本语法和编程技巧。

–通过编写简单的ATM系统程序,让学生熟悉C语言的编程方法。

三、教学方法本节课采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解ATM系统和C语言的基本概念、语法和编程技巧。

2.案例分析法:通过分析典型的ATM系统案例,使学生更好地理解ATM系统的工作原理和操作流程。

3.实验法:让学生动手编写简单的ATM系统程序,培养学生的编程能力和解决问题的能力。

四、教学资源1.教材:选用《C程序设计》作为主教材,辅助以《ATM系统原理与实践》等相关参考书籍。

2.多媒体资料:制作课件和教学视频,用于讲解ATM系统和C语言的相关知识点。

3.实验设备:提供计算机和编程环境,让学生进行ATM系统程序的编写和调试。

五、教学评估本节课的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答和小组讨论等表现,评估学生的学习态度和理解能力。

2.作业:布置相关的ATM系统编程作业,评估学生对C语言编程技巧的掌握程度。

3.考试:进行期末考试,涵盖ATM系统和C语言的相关知识点,评估学生的综合运用能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序实践实验报告一、实验目的1.函数的调用2.结构体的使用3.文件的应用:打开、关闭、输入、输出等4.宏定义二、实验内容与实验步骤实验内容、原理分析1.给出数据结构或函数定义结构体:struct clients{long int card_number,card_password;char name[20];float money;}yonghu[3];card_number:银行卡号card_password:密码name:用户名money:卡内金额自定义函数:void fuction(float,int);用于登陆后的操作2.用流程图表示出来程序设计的思想3.给出具体实验步骤#include <stdio.h>#include <stdlib.h>#define N 3 /*用户人数*/struct clients{long int card_number,card_password;char name[20];float money;}yonghu[N];FILE *fp;int i;void fuction(float,int);void main(){int j,number,password,times1=3,times2=3;printf(" 欢迎使用中国建设银行自动取款机!\n");fp = fopen("clients.txt","a+");if(getw(fp)==EOF){printf("用户文件未设置!\n");for(i=0;i<N;i++)/*文件不存在时,输入用户信息*/{printf("请输入第%d位用户的信息:\n",i+1);printf("银行卡号密码用户名卡内金额\n");scanf("%d %d %s %f",&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].name,& yonghu[i].money);if(i==1){while((yonghu[i].card_number==yonghu[i-1].card_number)||(yonghu[i].card_password==yong hu[i-1].card_password)){printf("输入信息有重复!请重新输入\n");printf("请输入第%d位用户的信息:\n",i+1);printf("银行卡号密码用户名卡内金额\n");scanf("%d %d %s %f",&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].name,& yonghu[i].money);}}if(i==2){while((yonghu[i].card_number==yonghu[i-1].card_number)||(yonghu[i].card_password==yong hu[i-1].card_password)||(yonghu[i].card_number==yonghu[i-2].card_number)||(yonghu[i].card_pass word==yonghu[i-2].card_password)){printf("输入信息有重复!请重新输入\n");printf("请输入第%d位用户的信息:\n",i+1);printf("银行卡号密码用户名卡内金额\n");scanf("%d %d %s %f",&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].name,& yonghu[i].money);}}fprintf(fp,"%d %d %s %f",yonghu[i].card_number,yonghu[i].card_password,yonghu[i].name,yo nghu[i].money);putc('\n',fp);}}fclose(fp);printf("\n\n 请登录系统\n"); /*登录系统,输入卡号和密码*/printf("请输入您的银行卡号:\n");scanf("%d",&number);printf("请输入您的密码:\n");scanf("%d",&password);fp = fopen("clients.txt","r+"); for(i=0;i<N;i++){fscanf(fp,"%d %d %s %f",&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].nam e,&yonghu[i].money);}fclose(fp);for(i=0;i<N;i++)/*判断卡号及密码是否匹配*/{if((number!=yonghu[0].card_number)&&(number!=yonghu[1].card_number)&&(number!=yon ghu[2].card_number)){if((times1-1)!=0){printf("该用户不存在!您还有%d次尝试机会\n",times1-1);printf("请输入您的银行卡号:\n");scanf("%d",&number);printf("请输入您的密码:\n");scanf("%d",&password);i=-1;}else{printf("尝试失败!请按任意键退出:\n"); exit(0);}times1--;}else{if(number==yonghu[i].card_number){if(password==yonghu[i].card_password){printf(" %s登陆成功!请继续您的操作\n",yonghu[i].name);j=i;i=5;/*登陆成功,退出循环*/}else{if((times2-1)!=0){printf("密码输入错误!您还有%d次尝试机会\n",times2-1);printf("请输入您的密码:\n");scanf("%d",&password);i=-1;}else{printf("尝试失败!请按任意键退出:\n");exit(0);}times2--;}}}}fuction(yonghu[j].money,j);}void fuction(float m,int k){float saved_money,fetched_money,payment;int phone_num,x,old_password,new_password;while(1){printf("1.存款.\n2.取款.\n3.充话费.\n4.修改密码.\n5.显示菜单.\n0.退出系统.\n");scanf("%d",&x);switch(x){case 0:printf("退出系统!");exit(0);case 1:printf("卡内金额: %f\n",m);printf("请输入存款金额:\n");scanf("%f",&saved_money);while(saved_money<0){printf("输入有误!请重新输入!\n");printf("请输入存款金额:\n");scanf("%f",&saved_money);}m += saved_money;printf("操作成功!卡内余额为: %f\n",m);yonghu[k].money = m;fp = fopen("clients.txt","w+");for(i=0;i<N;i++){fprintf(fp,"%d %d %s %f",yonghu[i].card_number,yonghu[i].card_password,yonghu[i].name,yo nghu[i].money);putc('\n',fp);}fclose(fp);break;case 2:printf("卡内金额: %f\n",m); printf("请输入取款金额:\n");scanf("%f",&fetched_money);m -= fetched_money;while((fetched_money<0)||(m<0)){printf("输入有误!请重新输入!\n");m += fetched_money;printf("请输入取款金额:\n");scanf("%f",&fetched_money);m -= fetched_money;}printf("操作成功!卡内余额为: %f\n",m);yonghu[k].money = m;fp = fopen("clients.txt","w+");for(i=0;i<N;i++){fprintf(fp,"%d %d %s %f",yonghu[i].card_number,yonghu[i].card_password,yonghu[i].name,yo nghu[i].money);putc('\n',fp);}fclose(fp);break;case 3:printf("卡内金额: %f\n",m);printf("请输入电话号码:\n");scanf("%d",&phone_num);printf("请输入所交话费金额:\n");scanf("%f",&payment);m -= payment;while((payment<0)||(m<0)){printf("输入有误!请重新输入!\n");m += payment;printf("请输入所交话费金额:\n");scanf("%f",&payment);m -= payment;}printf("操作成功!卡内余额为: %f\n",m);yonghu[k].money = m;fp = fopen("clients.txt","w+");for(i=0;i<N;i++){fprintf(fp,"%d %d %s %f",yonghu[i].card_number,yonghu[i].card_password,yonghu[i].name,yo nghu[i].money);putc('\n',fp);}fclose(fp);break;case 4:while(1){printf("请输入原密码:\n");scanf("%d",&old_password);if(old_password==yonghu[k].card_password){printf("请输入新密码:\n");scanf("%d",&new_password);printf("密码修改成功!\n");yonghu[k].card_password = new_password;fp = fopen("clients.txt","w+");for(i=0;i<N;i++){fprintf(fp,"%d %d %s %f",yonghu[i].card_number,yonghu[i].card_password,yonghu[i].name,yo nghu[i].money);putc('\n',fp);}fclose(fp);break;}elseprintf("密码输入错误!\n");}break;case 5:break;default:printf("输入有误!请重新输入!\n");break;}}}三、实验过程与结果分析1.现象:输入用户信息后,在登录系统时,输入第一个用户的信息,提示该用户不存在解决方法:fp = fopen("clients.txt","r+");for(i=0;i<N;i++){fscanf(fp,"%d %d %s %f",&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].nam e,&yonghu[i].money);}fclose(fp);2.现象:登录系统时,输入卡号或密码超过3次错误后,仍能输入解决方法:增加变量times1=3(卡号输入错误的次数),times2=3(密码输入错误的次数),当times-1>0时,提示剩余尝试机会,当times-1=0时,退出程序3.现象:存取款或充话费时,输入负数仍能运行解决方法:增加循环:while(saved_money<0){printf("输入有误!请重新输入!\n");printf("请输入存款金额:\n");scanf("%f",&saved_money);}while((fetched_money<0)||(m<0)){printf("输入有误!请重新输入!\n");m += fetched_money;printf("请输入取款金额:\n");scanf("%f",&fetched_money);m -= fetched_money;}while((payment<0)||(m<0)){printf("输入有误!请重新输入!\n");m += payment;printf("请输入所交话费金额:\n");scanf("%f",&payment);m -= payment;}四、实验结果总结五、创新的部分1.输入用户信息时,卡号与密码不可重复2.登录系统时,如果卡号或密码输入错误达三次,则自动退出程序3.为手机充话费时,要求输入电话号码4.存款、取款、充话费时,输入钱数不能为负数,且当取款或充话费的金额超过卡内余额时,禁止此操作5.增加了修改密码的功能六、对实验的意见与建议1.心得体会:实验过程中应反复调试,不断发现问题,解决问题2.不足:输入用户信息或输入x值时,如果格式不正确,就会陷入死循环(注:文档可能无法思考全面,请浏览后下载,供参考。

相关文档
最新文档