c语言银行自动存取款机模拟
C语言ATM自动存取款机全套代码
C语言ATM自动存取款机全套代码#include#include#include#include#include#define N 6char b[N]={'8','8','8','8','8','8'};//存放密码int money=5000;int securitytime=3;void Login();void JieMian();void SaveMoney();void GetMoney();void Query();void Return();//密码验证函数,验证成功返回1,否则返回0void Login(){char a[20],ch; //用户登录密码,用以验证int i=0,n=1,k;printf("\n\t\t欢迎使用ICBC ATM自动存取款机\n"); printf("\n请输入密码:");for(n=1;n<=5;n++){while((a[i]=getch())!=13){ i=i+1;printf("*");//将用户输入的密码以*显示}for(k=0;k<6;k++)if(a[k]!=b[k]) break;if (k==6){printf("\n密码正确,请继续!!\n");JieMian(); }else//printf("\n密码错误,请重新输入:\n");printf("\n密码错误,您还有%d次机会,请重新输入:\n",5-n);}printf("\n您已经输入5次错误,您的卡将被没收,请去相关网点办理!\n");exit(1);}// 界面设计void JieMian(){int SelectKey;//system("cls");//清屏幕函数while(1){puts("\n= = = = = = = = = = = = = = = =");puts("| 请选择相应功能: |");puts("| 1. 修改密码PassWord |");puts("| 2. 查询功能Query |");puts("| 3. 取款功能Get Money |");puts("| 4. 存款功能Save Money | ");puts("| 5. 转帐功能Trans Money | ");puts("| 6. 退出功能Return | ");puts("\n= = = = = = = = = = = = = = = = ");printf("\n请选择功能:");scanf("%d",&SelectKey);switch(SelectKey){ case 1:printf("\n修改密码功能\n");//PassWord();break;case 2:printf("\n查询功能\n");Query();break;case 3:printf("\n取款功能\n");GetMoney();break;case 4:printf("\n存款功能\n");SaveMoney();break;case 5:printf("\n转帐功能\n");//Trans();break;case 6:printf("\n退出功能\n");Return();break;}}}/*Query查询功能*/void Query(){system("cls");puts("================================== ==");printf("| Your Query balance is $%ld |\n",money);puts("| Press any key to return... |");puts("================================== ==");return;}/*GetMoney取钱功能*/void GetMoney(){char GetMoney;char kahao[20];long y;//输入待转入的相关信息//卡号,姓名do{puts("=================================");puts("| Please select GetMoney: |");puts("| 1. $100 |");puts("| 2. $200 |");puts("| 3. other |");puts("| 4. Return |");puts("=================================");GetMoney = getch();}while(GetMoney!='1'&&GetMoney!='2'&&GetMoney!='3' && GetMoney!='4');switch(GetMoney){case '1':system("cls");if(money>100){puts("================================== =========");puts("| Your GetMoney is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");money=money-100;printf("\n您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '2':system("cls");if(money>200){puts("================================== ======");puts("| Your GetMoney is $200,Thank you! |");puts("| Press any key to return... |");puts("================================== ======");money=money-200;printf("\n 您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '3':system("cls");printf("please get some money:");scanf("%ld",&y);if(money>y){money=money-y;printf("\n您的余额为%d",money);}else{printf("\n您的余额不足!");printf("\n您的余额为%d",money);}getch();break;case '4': break;}return;}/*SaveMoney存钱功能*/void SaveMoney(){ char SaveMoney;long y;do{system("cls");puts("================================== ========");puts("| Please select Save Money: |");puts("| 1. $100 |");puts("| 2. $500 |");puts("| 3. $1000 |");puts("| 4. other |");puts("| 5. Return |");puts("================================== ========");SaveMoney = getch();}while(SaveMoney!='1'&&SaveMoney!='2'&& SaveMoney!='3'&&SaveMoney!='4'&&SaveMoney!='5');switch(SaveMoney){ case '1':{{system("cls");puts("================================== =========");puts("| Your save money is $100,Thank you! |");puts("| Press any key to return... |");puts("================================== ========");}money=money+100;printf("\n您的余额为%d",money);getch();}break;case '2':{system("cls");puts("================================== ============");puts("| Your Save Money is $500,Thank you! |");puts("| Press any key to return... |");puts("================================== ============");money=money+500;printf("\n您的余额为%d",money);getch();}break;case '3':{system("cls");puts("============================================");puts("| Your Save Money is $1000,Thank you! |");puts("| Press any key to return... |");puts("================================== ==========");money=money+1000;printf("\n您的余额为%d",money);getch();}break;case '4':{system("cls");puts("================================== ===========");puts("| Your Save some Money,Thank you! |");puts("| Press any key to return... |");puts("================================== ===========");puts("please save some money:");scanf("%ld",&y);if(y%100!=0)printf("该存款机只能处理整百的操作,请核查!!");else{money=money+y;printf("\n您的余额为%d",money);}getch();}break;case '5':break; }return;}/*Return,退出功能*/void Return(){system("cls");puts("================================== ==");puts("| Thank you for your using! |");puts("| RETURN! |");puts("================================== ==");exit(1);}//主函数int main(){Login();}上一页下一页。
C语言-模仿ATM
2.7.1.4 练习4 模仿A TM模仿ATM取款程序,包括清空、存钱、取钱、查询余额、计算利息、有界面//atm.c#include<stdi o.h>#include<stdlib.h>float total=0;//全¨?局?变À?量¢?,ê?用®?于®¨²所¨´有®D函¡¥数ºyvoid clear(void){total=0;}void save(void){printf("Input Save Amount:");float amount;scanf("%f",&amount);scanf("%*c");total+=amount;}void get(void){printf("Input Get Amount:");int amount;scanf("%d",&amount);scanf("%*c");if(amount>total){printf("Amount Error!\n");get();}elsetotal-=amount;}void inquiry(void){printf("You balance is: %f.\n",total);}void menu(){printf("+------------------------------+\n");printf(" Welcome to Bank of Set \n");printf("+------------------------------+\n");printf("[1]Press 1 to Save money.\n");printf("[2]Press 2 to inquiry balance.\n");printf("[3]Press 3 to get money.\n");printf("[4]Press 4 to clear account.\n");printf("C hoose:");int i;scanf("%d",&i);scanf("%*c");switch(i){case 1:save();break;case 2:inquiry();break;case 3:get();break;case 4:clear();break;default:printf("Press Error!\n");menu();break;}}void Exit(){printf("Press <R> to return menu.\n");printf("Press <Q> to quit.\n");char ch;scanf("%c",&ch);scanf("%*c");//去除缓冲区里面输入的回车键if(ch=='Q'||ch=='q')exit(0);}int main(){while(1){menu();Exit();system("cls");//清屏}return 0;。
用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机的编写程序#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语言银行自动存取款机模拟
沈阳航空航天大学课程设计任务书学院:自动化学院专业:测控技术与仪器班级:04070101 学号:2010040701021 题目:自动存取款机模拟一、课程设计时间2011~12第1学期第4周,共计1周,20学时。
二、课程设计内容请你模仿自动存取款机系统,用C语言编写软件完成以下任务:1.登陆功能:某个用户输入账户名和密码,可以登陆ATM。
注意:应有多个用户,并把信息保存在文件中。
2.查询功能:登陆后,可以查询存款余额。
3.存款功能:登陆后,可以向账户中存款。
4.取款功能:登陆后,可以取款。
注意:取款金额不能超过存款金额。
提示:用户(账号、密码、存款余额、利率、开户银行)三、课程设计要求1.程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括、“数据输入”、“数据保存”、“信息查询”、“数据修改”、“退出”5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:学生签名:五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (4)四、技术要点 (5)五、个人总结 (8)六、参考文献 (8)七、源程序 (8)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析银行存取款机的数据涉及到取款机内储存的所有用户,数据量较大且对保密性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)账号及密码输入:允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够及时提示并更正。
模拟ATM银行自动取款系统.cpp 源代码和视图
模拟ATM银行自动取款系统.cpp 源代码和视图:#include<stdio.h>#include<conio.h>void part1();void part2();int c;void main(){part1();}void part1(){int a,b=622202;puts("********************************************************************** ***");puts(" 欢迎使用ATM银行自动取款系统!");printf("请插入您的卡!\n");scanf("%d",&a);if(a==b){ printf("请输入您的密码:");scanf("%d",&c);part2();//函数调用}else{printf("您的卡号不正确!");printf("谢谢惠顾!\n");getch();//从键盘接收一个字符,不回显;此处用作屏幕显示器缓冲关闭处理}}void part2(){int d=199092;if(c==d){printf("请输入取款金额:");scanf("%d",&c);printf("您的取款钱数为:%d RMB\n",c);printf("谢谢使用!\n");printf("************************************************************************* \n");getch();//从键盘接收一个字符,不回显;此处用作屏幕显示器缓冲关闭处理}elseprintf("您输入的密码错误!\n");getch();//从键盘接收一个字符,不回显;此处用作屏幕显示器缓冲关闭处理}。
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机一、实验目的通过设计一个ATM机模拟操作的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。
二、实验要求要求每人独立完成设计,编写一个ATM机模拟操作程序。
提交实验报告、源程序、程序运行截图。
1.程序具有以下功能:1)登录系统:输入卡号(16位)、密码(6位),只有卡号、密码同时正确(帐户信息存放在文件中)才能进入系统;2)操作功能:查询:查询帐户的存款余额。
按任意键返回主菜单;修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中。
之后可返回主菜单;取款:输入50或100的倍数模拟为取款金额,请注意:取款金额不得超过帐户余额,操作后帐户余额应相应减少。
之后可返回主菜单;存款:输入50或100的倍数模拟为存款金额,现假设存款金额不得超过20000元,操作后帐户余额应相应增加。
之后可返回主菜单;转帐:先输入一个帐户号(已保存在帐户信息文件中),然后显示一部分用户名(如:张某山),储户确认无误后,再输入50或100的倍数模拟为转帐金额,请注意:转帐金额不得超过帐户余额,操作后帐户余额应相应减少。
之后可返回主菜单;退出:退出系统。
2.定义如下结构体类型:“日期”结构体Date:成员有:year(年)、month(月)、day(日);“帐户”结构体Account:成员有:no(帐户号)、name(姓名)、balance(余额)“存取款记录”结构体Record,:成员有:no(帐户号)、date(日期)、number(数量,可正可负,正表示存款,负表示取款)3.帐户信息存放在account.t某t文件,储户存取款记录保存在record.t某t中;4.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用。
5.附加功能:储户一天内输错密码的次数不能超过3次,否则无法进入系统;应避免输入存款金额、取款金额为负数等异常情况的出现。
自动取款机(ATM)模拟程序(C#控制台应用程序)
自动取款机(ATM)模拟程序一、需求我们需要设计一个具备如下功能的ATM模拟程序。
●开户:用户能够通过ATM来开设帐号,开户需要设置密码。
●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。
●管理帐号:用户登录到帐号上后,能够进行如下的操作。
■存款:将指定的款项存到帐号中。
■取款:从帐号中取出指定的款项。
■查询余额:查询帐号的余额。
■修改密码:修改帐号的密码。
二、分析面向对象编程的第一步是进行面向对象分析。
面向对象分析的目标是建立问题领域的模型,包括如下模型。
●功能模型:即画出每一个功能要求的用例图。
●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对象、对象的属性、对象间的关系。
●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。
1.功能模型根据我们的需求,可以很容易地画出A TM模拟程序的用例图:可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。
要管理账号,就必须首先登录帐号或者开户。
管理帐号的功能包括存款、取款、查询余额和修改密码。
2.对象模型ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。
此外,需要一个程序来启动ATM。
因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。
1)帐号类Account帐号类Account包含所有的帐号信息负责所有的帐号操作。
基本的帐号信息包括:●帐号名name●帐号密码password●帐号余额balance主要的帐号操作包括:●登录Login●存款Deposit●取款Withdraw●查询余额Get_Balance●修改密码ChangePassword2)银行类Bank银行类Bank的本质就是一组帐号的组合,并负责管理帐号。
c语言银行自动存取款机模拟
C语言银行自动存取款机模拟介绍本文档将介绍如何使用C语言编写一个简单的银行自动存取款机模拟程序。
该程序可以模拟银行客户进行存款和取款操作,并实时更新账户余额。
功能此银行自动存取款机模拟程序具有以下功能:•登录功能:用户可以输入账号和密码进行登录。
•存款功能:用户可以输入存款金额进行存款,存款成功后会更新账户余额。
•取款功能:用户可以输入取款金额进行取款,取款成功后会更新账户余额。
•查询余额功能:用户可以查看账户余额。
•退出功能:用户可以选择退出程序。
程序设计数据结构在程序中,需要定义一个结构体来表示银行客户的账户信息。
每个账户包含账号、密码和余额:struct Account {int accountNumber;char password[20];double balance;};登录功能首先,用户需要输入账号和密码进行登录。
可以定义一个函数来实现登录功能:int login(struct Account *accounts, int numAccounts, int accountNumber, char *password) {for (int i = 0; i < numAccounts; i++) {if (accounts[i].accountNumber == accountNumber && strcmp(accounts[i].password, password) == 0) {return i; // 返回账号在数组中的索引}}return -1; // 登录失败,返回-1}存款和取款功能存款和取款功能可以分别定义两个函数来实现。
存款函数会增加账户余额,取款函数会减少账户余额。
```c void deposit(struct Account *account, double amount) { account->balance += amount; }void withdraw(struct Account *account, double amount) { if (account->balance >= amount) { account->balance -= amount; printf(。
[VIP专享]C语言课程设计…………银行自动存取款机模拟
Void dljm ()
int level(BinTreeNodlesevt}r*Beutsl,icnBt(rtrTuiontrcaoTetgtert,_eyapNnpetg)oy;oeN_pddinoeeodtd;fde*esreafc*ttrphsB*au{l)ti;cilrn/duh/tT;ciB/lr/tdo1eiTt;u1ea//NcnrNgoto_loiu(fdn(dtnbe*oetpivdlt{(roe(e}TbidpEititrcfrl(ero!-pbmu>tintrTvritgaey-l(>hlpbulteeie,rtrf=xdt)e,=apr{xkextta,)rt;ru{;k,kr)sd+n;tra+;u1t;ac}0txyBpieTNxv},ooidi{ndet&m*lkac)hi}nil(de)}l;s/e/ js+tr}+uj;cBf+BtoB.+Bid.r.L(;+adikTe+taanN=;t[agojB]e[tdkh=l.se+L+eA1e*+]nr.i;dfc=g(d.-[d;{aiB]1a/it;f/a.;t(dkaA[}ia[]>.kBtdB<}=a];aii.T[BLjt+;aNke.+d[Loni;-]aed-g>t)netahg,B[jt*]+h.)wBd+]{avhi;T=otilareiAedi[n(Be.i{dtm;.<Laive=etAoarngi.0[dLgie],e;jt2Ch=n(o{Sg-0ut9q1h,n/kAL])/t)/iL/[;2s1/e1AtA…aABBmf"…,.S(h+Bq"mniLT6m+irsnet8]e&mhBTen),amidn+dtn&a2Ot*acx(7o10u)n+t)0x{11*ixf=0( nT+o1)d*{ex2i_1f c(+(o!uT2/xn/-*10>tx+l2+cxh=1il;+dnx)o&2/d/h&e=tt_(pn!c:To0o//-duw>1enrw*_c2t/wchx-oi0.1ldu;xon)/)1c*t;cinx6o42.1ucleonfmtt+d/+5ap;t-a5//r7iLg9Cihs4ot8lNuet5nmof9ttdreLp4iegme.=h*ap3tMfAmBol(a[aTrTlit]ex(-;(><i2)nAlccetl[ha0i]}ise=l=ds1,0}A…Tc;[yoine2pu<-nT6ein=-yH>12tp)(]Te;v;enn[Co1-A-ti1o3m1d[u]nA)pHin-[/;in(tv-kL21]ene;]1reyais=A+)nef=[+(t-nm(k1Ta])eAT-p){y>nyA;r-p%c2eh…1iAld3e[2,1]3c,2e1oi20Vn0(u3e=bt×n4i{)n3t1a5)B0);,5b20A}{7,B(2ce[2a150,(l0)ds0cn(a20e,a)]×ie[13j1)1cnr2,a17Af2e0A4,i58g2jtB]b1u(B03}(a5r4,21[En)]06a1B;=07A51([}{0]b937S<A/3)56/HaL([06C0c,sT1b3)]uo[A.>81A0c5u,493]cBn<B0.]=taC5H[L8(0,A1De(4g]k/,Aa5>2EBef0,[)Fy,<]*4C[G)G]b[=2B1,,DHk)g+[]e>,I1AEJy,/[<(,81%C1c]-[8,a5bD1)]C>3C]B,D1<[D1]2Bd62,GFc3E>=41A,V5</1I5EdH475,Gf1231>01+0*J5,91<420G4+0e*30G241,7W1d+*787>13P031,4*9<1L74=41f=0+,515a24953>**/546,17<5+15=0g37413,2*0c5572>/4+517,5<6451*g524,0d+3>956,*5<0315f9+2,3e5W12>14P,12*<3L157g+=56,52f13053>105*693}64*1,{73+80217+9596510*77046873+1*71249264+*9503182+79012*176208590=*2092+8123169831731237*793}W2+531P352L5*0313173+s3T3125158*,21T2052=5,2…915W063…303P5,LTS Tini k1i(2i={a1b,2c,d…e…fg}S0)1,1k10in1i011k11k10n+1kk1Pn21>r+0ikm…00…11+1k0s1=0n11+n21K…ru…snkas1l ns,s=nk,nk a11a121a02K1)aru2s2kaa=2l203*:9(a1i+03/1jA2-03aB(3a131+Aa12=3B+42[…0+]3A…+a3aij1+n3inn149-+iH10-41au+jnfi84+fnm4+16a5B8n+58F1544):52=5706305306.986,2T76:0150,D811:00148110683171,F10ST6:06D413S024H515,1H12:007412101402H*1291u60+22f{f7m4*63a2+n58307*71836+21102*72306+722774*0674128+493}*()4+86*312=513219 5:13/5671(130+7822+6261+p03a1+341352+401143,41)p0=83,21a.8425,913,,p66331:121,0A1a24B13G,,CP4pJ9AD3KG21EHD12AFDaJ3GBH,EPaDHKBApGIBM3J2HEKIF1AJMCKCAEFCMFIIM
C语言程序设计报告(模拟ATM取款机)
仲恺农业工程学院工程实训报告ATM取款机课程名称C语言程序设计工程实训姓名林少烈院(系)计算机科学与工程学院专业班级计算机113班学号 4317指导教师王成仲恺农业工程学院教务处制目录1 需求分析........................................................... 错误!未定义书签。
2 系统总框图和功能模块说明........................................... 错误!未定义书签。
系统总框图...................................................... 错误!未定义书签。
功能模块说明.................................................... 错误!未定义书签。
3 系统设计........................................................... 错误!未定义书签。
主要结构体....................................................... 错误!未定义书签。
主要功能函数...................................................... 错误!未定义书签。
关键函数的流程图................................................. 错误!未定义书签。
4 系统调试........................................................... 错误!未定义书签。
5 总结............................................................... 错误!未定义书签。
6 源程序清单......................................................... 错误!未定义书签。
C语言如何实现ATM机存取款系统
C语言如何实现ATM机存取款系统C语言如何实现ATM机存取款系统C语言利用结构体和构造函数并且采用输入输出文件实现ATM机系统。
下面是店铺为大家带来的关于C语言如何实现ATM机存取款系统的知识,欢迎阅读。
C语言如何实现ATM机存取款系统利用结构体和构造函数并且采用输入输出文件实现ATM机系统。
主要功能有:利用三种方法查询、开户、登陆、菜单、取款、修改密码、存款、转账、创建个人信息、输出、删除、增加、退出。
是一个功能齐全,完备的ATM机系统。
#include#include#includestruct per //定义结构体{char name[20];char ID[20];int money;char mima[6];struct per * next;};typedef struct person //定义另一结构体{struct per kehu;struct person *next;}L;void chaxun(struct per *head); //各个函数的声明void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct per *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuanzhang(struct per *head);void chuangjian(struct person **Phead);void shuchu(struct person *Phead);void shanchu(struct person **Phead);void zengjia(struct person **Phead);void chaxun1(struct person *Phead);void chaxun2(struct person *Phead);void chaxun3(struct person *Phead);void tuichu();void menu();/*主函数*///////////////////////////////////////////////////void main(){char x;char choose; //choose为定义输入选择的变量int flag=1;struct person *Phead=NULL; //Phead为定义二层头指针struct per *head=NULL; //head为定义一层头指针printf("***************************** ");printf("**欢迎使用ATM自动取款机系统** ");printf("***************************** ");printf("—————————————— ");printf("| 1 开户 | ");printf("—————————————— ");printf("| 2 登陆 | ");printf("—————————————— "); printf("| 3 前台客户信息查询中心| ");printf("—————————————— "); printf("| 4 请选择您的需求 | ");printf("—————————————— "); scanf("%s",&x);system("cls");switch(x){case '1':system("cls");kaihu(head); //调用开户函数break;case '2':system("cls");denglu(head); //调用登陆函数break;case '3':system("cls");menu(); //调用后台菜单函数break;}while(flag){system("cls");menu(); //调用后台菜单函数choose=get);switch(choose){case '1':chuangjian(&Phead);shuchu(Phead); //调用后台输出函数system("pause");break;case '2':chaxun1(Phead); //调用后台卡号查询函数system("pause");system("cls");break;case '3':chaxun2(Phead); //调用后台姓名查询函数system("pause");system("cls");break;case '4':chaxun3(Phead); //调用后台余额查询函数system("pause");system("cls");break;case '5':shanchu(&Phead); //调用后台删除用户函数system("pause");system("cls");break;case '6':zengjia(&Phead); //调用后台增加用户函数system("pause");system("cls");break;case '7':shuchu(Phead); //调用后台输出函数函数system("pause");system("cls");break;case '8':shuchu(Phead);system("pause");break;case '0':flag=0;printf("The end. ");break;}}}/*开户函数*/////////////////////////////////////////////////////////void kaihu(struct per *head){head=NULL;FILE *fp; //定义文件指针struct per *p1=NULL,*p2=NULL; //p1,p2为定义链表指针p1=(struct per*)malloc(sizeof(struct per)); //开辟内存单元printf("请输入您的姓名: "); //请数据输入链表中scanf("%s",p1->name);printf("请设置您的卡号: ");scanf("%s",p1->ID);printf("请设置您银行卡密码: ");scanf("%s",p1->mima);p1->money=0;p1->next=NULL;printf("您的个人信息为");printf("姓名:%s 卡号:%s 余额:%4d ",p1->name,p1->ID,p1->money);if(NULL==head) //为新用户开辟内存单元{head=(struct per *)malloc(sizeof(struct per));head->next=p1; //进行头插法,将其作为第一个节点}else //为新增客户开辟内存单元{for(p2=head;p2->next!=NULL;p2=p2->next); //进行尾插p2->next=p1;}if((fp=fopen("save.txt","ab+"))==NULL) //打开文件{printf("cannot poen file ");return;}if(fwrite(p1,sizeof(struct per),1,fp)!=1) //将链表信息写入文件中printf("file write error ");fclose(fp);printf(" ");printf("恭喜您开户成功,请登录 ");system("pause");system("cls");denglu(head);}//登陆函数/////////////////////////////////////////////////////void denglu(struct per *head){char d[20];char mima[20];int i,j;FILE *fp; //定义文件指针struct per *p,*q=NULL;if((fp=fopen("save.txt","rb+"))==NULL) //打开一个二进制文件,为读方式{printf("不能打开文件 "); //如不能打开,则结束程序}p=(struct per*)malloc(sizeof(struct per)); //申请空间head=p;while(!feof(fp)) //循环读数据直到文件尾结束{if(1!=fread(p,sizeof(struct per),1,fp))break; //如果没读到数据,跳出循环p->next=(struct per *)malloc(sizeof(struct per)); //为下一个结点申请空间q=p; //保存当前节点的指针,作为下一结点的前驱p=p->next; //指针后移,新读入数据链到当前表尾}q->next=NULL; //最后一个结点的后继指针为空fclose(fp);printf(" ********************** ");printf(" ***欢迎来都建设银行*** ");printf(" ********************** ");for(j=1;j<4;j++) //限制卡号输入的次数的循环{printf("请输入您的卡号 ");scanf("%s",d);for(q=head;q!=NULL;q=q->next) //遍历链表{if(strcmp(q->ID,d)!=0) //核对账号{continue; //跳出循环}else{for(i=1;i<4;i++) //限制密码输入的次数的循环{printf(" 请输入您的密码 ");scanf("%s",mima);if(strcmp(q->mima,mima)!=0) //核对密码{printf("密码不正确。
C语言模拟ATM提款机
C语言模拟ATM提款机1.运用结构体2.运用文件调用源代码:#include "stdio.h"#include "stdlib.h"#include "conio.h"#define N 200void zhanghao(); //账号void xuanzhe(); //选择函数void enter_ATM(); //账号输入函数void input_code(); //密码输入函数void caozuo(); //基本操作界面void qukuan(); //取款函数void success(); //操作成功函数void delay(); //延时函数void YU_E(); //余额查询函数void cunkuan(); //存款函数void panduan(double z); //判断取款是否合法函数void exit(); //退出界面函数void mima(); //密码修改void zhuanzhang(); //转账函数void read(); //文件写入函数void write(); //文件读取函数void guanli(); //管理员函数void tequancode(); //管理员密码void hu(); //户void xinxi(); //信息void gmima(); //管理员改密void CAOZUO(); //管理员操作函数void yinghang(); //银行账户查询函数void jia(); //账户添加函数void shanchu(); //账户删除函数typedef struct{long int zhanghao;int mima;double yu_e;}atm;atm guan[N];int k;////////////////////////////////////////////////////////////主函数void main(){xuanzhe();}////////////////////////////////////////////////////////////功能选择函数void xuanzhe(){system("cls");printf("* 请选择功能*\n");printf("* 1.管理员 2.用户*\n");switch(getch()){case '1':tequancode();break;case '2':enter_ATM();break;default:{printf("\a非法输入");delay();system("cls");xuanzhe();};break;}}///////////////////////////////////////////////////////////柜台机账号输入函数void enter_ATM(){delay();system("cls");read();printf("* 欢迎使用ATM 柜台机*\n");printf("* 请输入卡号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误*\n");enter_ATM();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))input_code( );}system("cls");printf("* 账户不存在,请从新输入*\n");enter_ATM();}elseinput_code( );}////////////////////////////////////////////////////////////////密码输入函数void input_code( ){long int code;int temp=3;read();system("cls");printf("* 请输入密码*\n");scanf("%d",&code);while(code!=guan[k].mima){temp--;system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);if(temp==1){system("cls");printf("* 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();enter_ATM();}}caozuo();}//////////////////////////////////////////////////////////////////主操作界面函数void caozuo( ){system("cls");printf("********************************\n");printf("* 1.修改密码*\n");printf("* 2.查询余额*\n");printf("* 3.取款*\n");printf("* 4.存款*\n");printf("* 5.转账*\n");printf("* 6.退出*\n");printf("********************************\n");switch(getch( )){case '1': mima(); break;case '2': YU_E(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': zhuanzhang();break;case '6': exit(); break;default:{printf("\a非法操作\n");caozuo();};}}//////////////////////////////////////////////////////////////////////密码修改函数void mima(){long int mm1,mm2,mm3;int temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();mima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");delay();mima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );mima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );mima();}if(mm3=mm2){guan[k].mima=mm3;write();success();}}////////////////////////////////////////////////////////////////////余额查询函数void YU_E(){read();system("cls");printf("你的余额为:%lf\n",(guan[k].yu_e));printf("1.返回 2.退出\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}/////////////////////////////////////////////////////////////////////////取款函数void qukuan(){double temp;system("cls");printf(" 请选择您要取款的金额\n");printf(" 1.100 2.200 \n");printf(" 3.500 4.800 \n");printf(" 5.1000 6.其它\n");printf(" \n");printf(" 7.返回8.退出\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("请输入您要取款的金额:");scanf("%lf",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}///////////////////////////////////////////////////////////////////判断取款是否合法函数void panduan(double z){int beishu;if(z>(guan[k].yu_e)){system("cls");printf(" 余额不足!\n");printf(" 请重新操作\n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=(int)z%100;if(beishu!=0){system("cls");delay( );printf(" 本ATM机只支持100 的人民币\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000.00||z>5000.00){system("cls");printf(" 每次取款不能超过5000 元\n");printf(" 请重新操作\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1': qukuan();case '2': exit();}}(guan[k].yu_e)-=z;write();success();}/////////////////////////////////////////////////////////////////存款函数void cunkuan( ){double cun;system("cls");printf(" 请放入人民币:");scanf("%lf",&cun);while(cun<0){system("cls");printf(" 非法存款\n");printf(" 请重新放入人民币\n");scanf("%lf",&cun);}(guan[k].yu_e)+=cun;write();success();}/////////////////////////////////////////////////////////////////转账号函数void zhuanzhang(){int i,hao;double money;long int a=2109999999;system("cls");delay();read();printf("* 请输入账号*\n");scanf("%d",&hao);printf("* 请输入金额*\n");scanf("%lf",&money);if(hao<1000000000||hao>a){printf("* 账号错误,操作取消*\n");delay();delay();caozuo();}else if(money>guan[k].yu_e||money<0){printf("* 金额错误,操作取消*\n");delay();delay();caozuo();}else{read();for(i=1;i<N;i++){if(guan[i].zhanghao==hao)break;}guan[k].yu_e-=money;guan[i].yu_e+=money;write();success();}}///////////////////////////////////////////////////////延时函数void delay( ){long int bl1;int bl2;for(bl1=600000;bl1>0;bl1--){for(bl2=300;bl2>0;bl2--);}}/////////////////////////////////////////////////操作成功函数void success( ){system("cls");printf(" 操作已成功\n");printf(" \n");printf(" 1.返回 2.退出\n");switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}//////////////////////////////////////////////系统退出函数void exit(){system("cls");printf("* 欢迎您的再次使用*\n");printf("* 系统正在退出... *\n");delay();xuanzhe();}////////////////////////////////////////////////////文件读取函数void read(){int i;FILE *fp;fp=fopen("xinxi.txt","r");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fscanf(fp,"%d ",&(guan[i].zhanghao));fscanf(fp,"%d ",&(guan[i].mima));fscanf(fp,"%lf\n",&(guan[i].yu_e));}fclose(fp);}/////////////////////////////////////////////////////////////文件写入函数void write(){int i;FILE *fp;fp=fopen("xinxi.txt","w");if(fp==NULL){printf("打开文件失败\n");return;}for(i=0;i<N;i++){fprintf(fp,"%d ",guan[i].zhanghao);fprintf(fp,"%d ",guan[i].mima);fprintf(fp,"%lf\n",guan[i].yu_e);}fclose(fp);}void tequancode( ){long int code;int temp=2;read();system("cls");printf("* 请输入管理员密码*\n");scanf("%d",&code);while(code!=guan[0].mima){system("cls");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");scanf("%d",&code);temp--;if(temp==0){system("cls");printf("*\a 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");delay();xuanzhe();}}guanli();}////////////////////////////////////////////////////////////////管理员函数void guanli(){system("cls");delay();printf("* 1.信息查询*\n");printf("* 2.操作*\n");printf("* 3.退出*\n");switch(getch()){case '1':zhanghao();break;case '2':CAOZUO();break;case '3':exit();break;default:{printf("\a非法操作");guanli();};}}/////////////////////////////////////账号void zhanghao(){system("cls");read();printf(" 请输入账号\n");long int user;scanf("%d",&user);if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao))hu();}system("cls");printf("* 账户不存在,请从新输入*\n");delay();guanli();}else{delay();hu( );}}////////////////////////////////////////////////账户void hu(){system("cls");printf("* 1.信息 2.改密码*\n");printf("* 3.返回 4.退出*\n");switch(getch()){case '1':xinxi();break;case '2':gmima();break;case '3':zhanghao();break;case '4':guanli();break;default:{printf("\a非法操作\n");hu();};}}///////////////////////////////////////////////信息void xinxi(){system("cls");read();printf("*账号密码余额*\n");printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf \n",guan[k].yu_e);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':hu();break;case '2':guanli();break;}}///////////////////////////////////////////管理员改密void gmima(){long int mm1,mm2,mm3;char temp;system("cls");printf("旧密码:");scanf("%d",&mm1);printf("\n");if(mm1!=guan[k].mima){system("cls");printf("旧密码错误,请重新输入\n");delay();gmima();}printf("新密码:");scanf("%d",&mm2);if(mm2<100000||mm2>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入!\n");delay();gmima();}temp=mm2%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入!\n");delay( );gmima( );}printf("\n");printf("确认新密码:");scanf("%d",&mm3);if(mm2!=mm3){system("cls");printf("确认密码不一致,请重新输入\n");delay( );gmima();}if(mm3=mm2){guan[k].mima=mm3;write();hu();}}///////////////////////////////////////////管理员操作函数void CAOZUO(){system("cls");delay();printf("* 1.查询所有账户*\n");printf("* 2.添加账户*\n");printf("* 3.删除账户*\n");printf("* 4.返回 5.退出*\n");switch(getch()){case '1':yinghang();break;case '2':jia();break;case '3':shanchu();break;case '4':guanli();break;case '5':xuanzhe();break;default:{printf("\a非法操作\n");CAOZUO();};}}//////////////////////////////////////////银行账户查询函数void yinghang(){system("cls");delay();read();printf("*账号密码余额*\n");for(;k<N;k++){if(guan[k].zhanghao!=0&&guan[k].zhanghao>0){printf("%d ",guan[k].zhanghao);printf("%d ",guan[k].mima);printf("%lf\n",guan[k].yu_e);}}printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}//////////////////////////////////////////账户添加函数void jia(){int mm1,mm2;int temp;system("cls");delay();read();printf("* 请输入密码*\n");scanf("%d",&mm1);if(mm1<100000||mm1>999999){system("cls");printf(" 密码必须等于6位数\n");printf(" 请重新输入: \n");delay();scanf("%d",&mm1);}temp=mm1%111111;if(temp==0){system("cls");printf(" 密码过于简单\n");printf(" 请重新输入: \n");delay( );scanf("%d",&mm1);}printf("\n");printf("确认密码:\n");scanf("%d",&mm2);if(mm1!=mm2){system("cls");printf("确认密码不一致,操作取消\n");delay( );CAOZUO();}if(mm1=mm2){for(;k<N;k++){if(guan[k].zhanghao==0){guan[k].zhanghao=guan[k-1].zhanghao+1;guan[k].mima=mm2;write();break;}}printf("账号创建成功!\n");printf("您的账号是%d,请妥善保管!\n",guan[k].zhanghao);printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}/////////////////////////////////////////账户删除函数void shanchu(){system("cls");delay();read();printf("* 请输入账号*\n");long int user;scanf("%d",&user);if(user==0){printf("* 账号错误,操作取消*\n");CAOZUO();}else if(user!=(guan[k].zhanghao)){for(k=1;k<N;k++){if(user==(guan[k].zhanghao)){for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}system("cls");printf("* 账户不存在*\n");delay();CAOZUO();}else{for(;k<N;k++){guan[k].zhanghao=guan[k+1].zhanghao;guan[k].mima=guan[k+1].mima;guan[k].yu_e=guan[k+1].yu_e;write();}printf("账号删除成功!\n");printf("* 1.返回 2.退出*\n");switch(getch()){case '1':CAOZUO();break;case '2':guanli();break;}}}。
c语言模拟ATM机程序
case 4: Xiugai(&a[6]);break;
case 5: Cunkuan(&Y);break;
case 6: exit(0);break;
default:printf("输入错误,请重新输入\n");
}
lp2:printf("继续操作请按1,退卡请按2\n");
else
{printf("非法操作,强制退出\n");
}
}
void Qukuan()
{
int i,j;
printf("1、100\t2、200\t3、500\t4、800\t5、请输入金额\n");
scanf("%d",&i);
switch(i)
{
case 1: panduan(100);break;
printf请选择服务项目n1取款t2查询服务t3转账服务t4修改密码t5存款t6退卡n
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
long int Y=100000;int c=0;char a[6]={'1','2','3','4','5','6'};
else
lp4:{
printf("请输入新密码:\n");
k=getch();
while(k!='\r'&&l<6)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳航空航天大学课程设计任务书学院:自动化学院专业:测控技术与仪器班级:04070101 学号:2010040701021 题目:自动存取款机模拟一、课程设计时间2011~12第1学期第4周,共计1周,20学时。
二、课程设计内容请你模仿自动存取款机系统,用C语言编写软件完成以下任务:1.登陆功能:某个用户输入账户名和密码,可以登陆ATM。
注意:应有多个用户,并把信息保存在文件中。
2.查询功能:登陆后,可以查询存款余额。
3.存款功能:登陆后,可以向账户中存款。
4.取款功能:登陆后,可以取款。
注意:取款金额不能超过存款金额。
提示:用户(账号、密码、存款余额、利率、开户银行)三、课程设计要求1.程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括、“数据输入”、“数据保存”、“信息查询”、“数据修改”、“退出”5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:学生签名:五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (5)四、技术要点 (5)五、个人总结 (8)六、参考文献 (8)七、源程序 (9)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的银行存取款模拟系统,其使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析银行存取款机的数据涉及到取款机内储存的所有用户,数据量较大且对保密性的需求很高,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)账号及密码输入:允许用户输入账号、密码,对用户由于疏忽录入的非法数据,能够及时提示并更正。
(2)登陆成功界面:共有三个选项,查询余额、取款、退出分别对应1、2、3选项,若序号输入不正确会予以提示。
(3)余额查询:选定1后,进入查询界面,用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。
当输入卡号时,系统需要输入对应的密码(若密码错误则会有相应提示)密码与卡号相对应可查询到该用户的姓名、余额。
(3)取款:选定2后,进入取款界面,用户输入取款金额,若取款金额大于存款金额则会提示“余额不足”,若小于则会在原余额上扣除取款金额。
(4)退出:选定3后,进入退出界面,系统会延迟3-4秒重新跳回登陆界面,供其他用户使用。
二、设计分析主要有5个功能模块,每个模块对应一个C语言子函数。
这些函数原型及其功能简述如下:void dljm();------登陆成功后出现的界面void dl();------登陆void cx();------查询void qk();------取款void tk();------退卡1、程序总体结构图图12、主要功能模块框图图2三、主要界面截图图1登陆成功后的操作图2查询及取款四、技术要点1、结构体的应用定义了结构体用来描述用户的姓名、卡号、密码以及金额。
具体的定义如下:struct atm //ATM自助银行{char name[10];int account; //卡号short password; //密码float money; //金额}at[10]={{"ZhaoLin",1,1,4000},{"MaFang",2,2,7 000},{"WangMing",3,3,5888},{"MaJiu",4,4,7543},{"HangHan",5,5,10000},{"ZhangHu",6,6,4087},{"MaFang",7,7,2765},{"ZhouLi",8,8,4530},{"HongShan",9,9,5693},{"YuLi",10,10,7543}};所定义的结构体主要用于定义数组。
2、循环语句与选择性分支语句的嵌套while (z!=-1){printf("\n\n请输入操作序号:");scanf("%d",&z);switch(z){case 1:cx();break; //查询余额case 2:qk();break; //取款case 3:tk();break; //退卡default:printf("操作序号不合法!"); return;}}3、关于延迟清屏时间for(i=0;i<1000000000;i++); //延缓显示时间system("cls"); //清屏main(); //回初始界面,供其他用户使用此for循环语句可以使清屏函数延缓3-4秒执行,后调用main函数,完成整个操作过程后重新供其他用户登陆。
五、个人总结在此次课设过程中,我遇到了许多困难,例如如何在没有用户注册的程序中直接能完成登陆,只需建立一个结构体数组,还有如何能做到像ATM机那样一个用户用完之后还能供其他用户使用,这些都是经过查找书籍和上网查找相关资料才得以解决。
所以这次课设对我的帮助很大。
六、参考文献1 谭浩强.C程序设计.北京:清华大学出版社,20052 詹红霞,visual c++6.0 程序设计,西安:西安电子科技大学出版社,2009七、源程序#include<stdio.h>#include<stdlib.h>int x; //记录下标void dljm(); //登录成功后出现的界面void dl(); //登录void cx(); //查询void qk(); //取款void tk(); //退卡struct atm //ATM自助银行{char name[10];int account; //卡号short password; //密码float money; //金额}at[10]={{"ZhaoLin",1,1,4000},{"MaFang",2,2,7000}, {"WangMing",3,3,5888},{"MaJiu",4,4,7543},{"HangHan",5,5,10000},{"ZhangHu",6,6,4087},{"MaFang",7,7,2765},{"ZhouLi",8,8,4530},{"HongShan",9,9,5693},{"YuLi",10,10,7543}};//主函数void main(){printf("******************欢迎使用自动取款机**************\n");printf("**************************************************\n ");dl();}//登录函数void dl(){int a; //临时记录下标int account; //卡号short password; //密码printf("请输入卡号:");scanf("%d",&account);for(a=0;a<=9;a++){if(account==at[a].account){x=a; //将临时变量下标值存储到全局下标变量中printf("请输入密码:");scanf("%d",&password);if(password==at[a].password){printf("****************丫丫银行欢迎您的登录**************\n");printf("**************************************************\n ");printf("登录成功,请选择操作\n");dljm(); //登录成功界面break;}else{printf("密码输入错误\n");dl(); //递归(调用自己,再来一次)}}}}//登录界面void dljm(){int z;printf("查询余额---------1\n");printf("取款---------2\n");printf("退卡---------3\n");while (1){printf("\n\n请输入操作序号:");scanf("%d",&z);switch(z){case 1:cx();break; //查询余额case 2:qk();break; //取款case 3:tk();break; //退卡default:printf("操作序号不合法!");return;}}}//查询余额void cx(){printf("%s您卡上余额为%7.2f元",at[x].name,at[x].money); }//取款void qk(){float a;printf("请输入取款金额:");scanf("%f",&a);if(a>at[x].money)printf("你的余额不足");else{printf("您已取款%7.2f元",a);at[x].money=at[x].money-a;}}//退卡void tk(){int i;printf("请取回您的卡\n");for(i=0;i<1000000000;i++); //延缓显示时间system("cls"); //清屏main(); //回初始界面,供其他用户使用}。