c语言Atm的简单实现Word版

合集下载

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的简单实现

信息科学与工程学院《数据结构》课程设计报告课程设计名称: ATM得设计与实现专业班级:学生姓名:学号: 2指导教师:课程设计时间:2016-2017学年第二学期计算机科学与技术专业课程设计任务书目录1 需求分析 (1)1、1存款 (1)1、2取款 (1)1、3查瞧流水账 (1)1、4排序 (1)1、5修改密码 (2)1、6查瞧ATM使用情况 (2)1、7录入信息 (2)1、8恢复限额 (2)2概要设计 (3)2、1数据类型得定义 (3)2、2功能模块结构图 (4)3运行环境 (6)4开发工具与编程语言 (6)5详细设计 (6)5、1主函数 (7)5、2 录入函数 (8)5、3加载与存储函数 (8)5、4 输出流水账函数 (9)5、5 查瞧ATM使用情况函数 (9)6程序编码 (10)7运行结果 (12)8心得体会 (14)9参考文献 (14)1需求分析ATM自助机——便于储户存钱、取钱。

按功能分为两大系统:个人用户系统与银行后台系统;个人用户系统————登录(输入正确得账号或密码才能进入)、存款、取款、查瞧流水账(查瞧用户最近存取款情况)、排序(此为超级用户功能,可以查瞧所有人得余额)、修改密码(修改个人登录密码);银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息与录入atm 信息)、恢复限额(每天6点恢复所有人得取款上限)。

1、1存款输入金额,存入ATM,当前AMT以及自己得余额会增加并且自动生成流水账。

1、2取款输入取款金额,判断它就是否小于ATM总金额并且小于当天得限额,当前得ATM金额减少,自己得余额与限额也会减少。

1、3查瞧流水账输出自己近段时间内得所有操作,发生额,以及时间。

1、4排序此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

1、5修改密码修改用户登录密码。

1、6查瞧ATM使用情况查瞧每一台ATM得使用情况,输出存取款发生额及其次数。

(经典版)C语言版ATM银行取款机系统完整源代码程序设计基础实训II文档.doc

(经典版)C语言版ATM银行取款机系统完整源代码程序设计基础实训II文档.doc

2012年6月项目实训任务书课程名称:程序设计基础实训II课程编码:JX课程类别:专业基础必修课学分数:2学时数:32开课学期:2实训题目:ATM存取款系统的改进与完善一、已知技术参数和设计要求:银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。

为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。

用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。

本系统各个业务有如下注意点:(1)登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。

(2)开户业务要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。

同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。

(3)存款业务客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。

(4)取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。

(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。

(6)转账业务客户登陆系统后,可以选择转账业务,进行转账。

注意的是转账的目的账户必须是本系统已经存在的银行账户。

(7)修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。

二、各阶段具体要求:1、系统总体设计阶段(1)根据需求分析划分功能模块(2)分析并设计各个功能模块之间的关系(3)对于各个功能模块,设计相应的数据结构(必须使用链表完成全部功能)(4)设计相应的算法(必须包括排序和检索功能,且基于链表进行排序和检索)2、详细设计阶段(1)对于每个功能模块,应划分成操作层和数据层(2)对于每个操作层,应尽量考虑用户操作的简单,便捷(3)对于每个数据层,必须使用链表进行管理(4)在用链表进行管理时,必须用到链表检索和排序(5)对于数据层的操作完的数据必须保存到文件中(包括文件读、写操作)3、编码实现阶段(1)完成代码编写(2)要求代码编写规范(不得使用全局变量、所有功能模块必须使用函数封装主函数main()的行数不得超过代码总长度的25%)(3)代码必须有相应的注释(注释行数不得少于代码的10%,函数功能、变量名、算法、重要的循环、分支都必须用注释说明)4、系统测试阶段(1)完成功能调试(2)要求完成必要的测试工作5、交付实施阶段(1)提交可正常执行的系统,程序代码(2)撰写项目实训报告书(3)要求按照文档书写规范,严格地书写文档(4)注意:不允许使用代码、图片和表格填充报告空间。

用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机的编写程序#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机代码,简单版。

#include <stdio.h>void main(){int i,j;int code=0,flag=0;int choice1=0,choice2=0,choice3=0;int RMB=100000,WB=100000;int cash1=0,cash2=0;char instruct='n';printf("************************************************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎使⽤怪精 ATM取款机 *\n");printf("* *\n");printf("* 监制: rain version number:1.0.1 *\n");printf("* *\n"); printf("* *\n"); printf("************************************************************\n");printf("请键⼊您的密码:\n"); /*密码为9527*/for(i=0;i<3;i++){scanf("%d",&code);system("cls");if(code==9527){break;}if(code!=9527){printf("密码有误!请重新输⼊:\n");flag+=1;}}if(flag==3){printf("密码错误超限,请回去⾯壁思过,再见!");return;}while(instruct=='N'|| instruct=='n' ){if(code==9527){printf("请选择您所需服务!\n");printf("1.查询余额 2.取款 3.退出");scanf("%d",&choice1);system("cls");switch(choice1){case 1:printf("1.⼈民币 2.外汇");scanf("%d",&choice2);system("cls");switch(choice2){case 1:printf("您的⼈民币账户余额:¥%d\n",RMB);break;case 2:printf("您的外币账户余额:$%d\n",WB);break;}break;case 2:printf("1.⼈民币 2.外币");scanf("%d",&choice3);system("cls");switch(choice3){case 1:printf("请输⼊取款⾦额:\n");scanf("%d",&cash1);RMB=RMB-cash1;printf("您的账户余额为:¥%d\n",RMB); break;case 2:printf("请输⼊取款⾦额:\n");scanf("%d",&cash2);WB=WB-cash2;printf("您的账户余额为:$%d\n",WB); break;}break;case 3:break;}printf("是否退出程序<y表⽰是,n表⽰否>:"); scanf("%s",&instruct);}}}。

c语言银行自动存取款机模拟

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(。

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

信息科学与工程学院《数据结构》课程设计报告课程设计名称:ATM的设计与实现专业班级:学生姓名:学号:201616010107指导教师:课程设计时间:2016-2017学年第二学期计算机科学与技术专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页目录1 需求分析 (1)1.1存款 (1)1.2取款 (1)1.3查看流水账 (1)1.4排序 (1)1.5修改密码 (2)1.6查看ATM使用情况 (2)1.7录入信息 (2)1.8恢复限额 (2)2 概要设计 (3)2.1数据类型的定义 (3)2.2功能模块结构图 (4)3 运行环境 (6)4 开发工具和编程语言 (7)5 详细设计 (8)5.1 主函数 (8)5.2 录入函数 (9)5.3加载和存储函数 (9)5.4 输出流水账函数 (10)5.5 查看ATM使用情况函数 (10)6 程序编码 (11)7 运行结果 (14)8 心得体会 (15)9 参考文献 (16)1需求分析ATM自助机——便于储户存钱、取钱。

按功能分为两大系统:个人用户系统和银行后台系统;个人用户系统————登录(输入正确的账号或密码才能进入)、存款、取款、查看流水账(查看用户最近存取款情况)、排序(此为超级用户功能,可以查看所有人的余额)、修改密码(修改个人登录密码);银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息和录入atm 信息)、恢复限额(每天6点恢复所有人的取款上限)。

1.1存款输入金额,存入ATM,当前AMT以及自己的余额会增加并且自动生成流水账。

1.2取款输入取款金额,判断它是否小于ATM总金额并且小于当天的限额,当前的ATM金额减少,自己的余额和限额也会减少。

1.3查看流水账输出自己近段时间内的所有操作,发生额,以及时间。

1.4排序此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

1.5修改密码修改用户登录密码。

1.6查看ATM使用情况查看每一台A TM的使用情况,输出存取款发生额及其次数。

1.7录入信息能录入用户、银行卡以及ATM的信息。

根据提示一步步输入数据,存入数组中,最后存入文件。

1.8恢复限额恢复用户一天的限额。

概要设计2.1数据类型的定义1.定义用户类型typedef struct node typedef struct {char number[5];//用户编号char User_name[11];//用户名char password[7];//密码int kind;//用户类型}User;2.定义时间类型typedef struct{int year;int month;int day;}Data;3.定义银行卡类型typedef struct{char cardnumber[20];//银行卡号char Idcard[19];//身份证号int balance;//余额Data open;//开户时间int quota;//限额}Bankcard;4.定义ATM类型typedef struct{char code[5];//机器代码char address[30];//地址int Total_money;//取款机总金额}ATM;5.定义流水账类型typedef struct node{char code[5];//机器代码char cardnumber[20];//银行卡号int access;//存取,0存款,1取款Data occurrence;//发生日期int money;//发生额struct node *next;}Book,*Link;2.2功能模块结构图根据需求分析,为了满足用户的功能需求,按照软件开发方法学中的模块划分原则,我将本系统主要划分为两个子系统:个人用户系统和银行后台系统。

个人用户系统有如下功能:存款,取款,排序,流水账,密码;银行后台系统有如下功能:ATM使用情况,录入信息,恢复限额。

各模块之间的关系如图1所示。

图1模块结构图为了实现上述功能模块,因此定义多个函数以及包含多个头文件便于实现,本系统定义的函数和功能如下:1.函数void load1(User us[],int *n);加载用户信息void load2(Bankcard ba[]);加载银行卡信息void load3(ATM at[]);加载Atm信息void load4(Link head);加载流水账void display();主界面void display1();个人用户界面void display2();用户后台界面int Login(User us[],int n);用户登录界面int Login2();银行后台登录界面void save1(User us[],int n);存储用户信息void save2(Bankcard ba[],int n);存储银行卡信息void save3(ATM at[],int m);存储Atm信息void save4(Link head);存储流水账信息void add(User us[],Bankcard ba[],ATM at[],int *n,int *m);录入用户和银行卡信息void inputRecord(User us[],Bankcard ba[],int i);录入一个信息void inputATM(ATM at[],int i);录入一个Atm信息void output(User us[],Bankcard ba[],int n);输出排序后的用户信息void PrintRecord(User *u,Bankcard *b);输出一个信息void sort(User us[],Bankcard ba[],int n);用户排序int deposit(int *p,int *a);存款int withdraw(Bankcard *p,ATM *a);取款int findAtm(ATM at[],int m);查找atm是否存在void generate1(Link head,char code[],char cardnumber[],int money);生成流水账void generate2(Link head,char code[],char cardnumber[],int money);生成流水账void change(User *u);更改密码void recovery(Bankcard ba[],User us[],int n);恢复限额void seebook(Link head,char cardnumber[]);查看流水账int Printbook(Link p);输出一个流水账void seeAtm(Link head,ATM at[],int m);查看Atm使用情况PrintAtm(ATM at,int number1,int number2,int money1,int money2);输出所有Atm 使用情况。

2.头文件define.h 定义结构体类型、包含系统头文件、以及函数声明save.h 存储数据到文件display.h 显示界面load.h 加载文件到数组或链表add.h 录入信息output.h 输出排序后的信息sort.h 排序(按余额)deposit.h 存款withdraw.h 取款findAtm.h 查找ATMgenerateBook.hchange_password.h 修改密码recovery_quota.h 恢复限额seebook.h 查看现在seeAtm.h。

查看ATM使用情况2运行环境1.硬件环境:PC机内存 8G;硬盘1000G2.软件环境:操作系统:windows73开发工具和编程语言开发环境:Visual C++编程语言:C语言4详细设计在概要设计的基础上,对每个模块进行内部逻辑处理部分详细设计。

下面分别列出各个模块具体实现流程图:5.3加载和存储函数5.4 输出流水账函数5.5 查看ATM使用情况函数5程序编码根据详细设计的流程图转化为如下代码,下面列出主函数代码:#include"define.h"#include"save.h"#include"display.h"#include"load.h"#include"add.h"#include"output.h"#include"sort.h"#include"deposit.h"#include"withdraw.h"#include"findAtm.h"#include"generateBook.h"#include"change_password.h"#include"recovery_quota.h"#include"seebook.h"#include"seeAtm.h"int main(){int n,select,k,g,choice,m,t,money;User us[N];Bankcard ba[N];ATM at[M];Link bk;bk=(Link)malloc(sizeof(Book));bk->next=NULL;load1(us,&n);load2(ba);load3(at,&m);load4(bk);while(1){system("cls");display();scanf("%d",&select);if(select==1){g=findAtm(at,m);if(g!=-1){k=Login(us,n);if(k!=-1){while(1){system("cls");display1();t=0;scanf("%d",&choice);switch(choice){case1:money=deposit(&ba[k].balance,&at[g].Total_money);generate1(bk,at[g].code,ba[k] .cardnumber,money);save2(ba,n);save3(at,m);save4(bk);break;//存款case 2:money=withdraw(&ba[k],&at[g]);//取款if(money!=-1){generate2(bk,at[g].code,ba[k].cardnumber,money);save2(ba,n);save3(at,m);save4(bk );}break;case 3:seebook(bk,ba[k].cardnumber);break;//查看流水账case 4:if(us[k].kind==0)sort(us,ba,n);elseprintf("权限不足,请重新选择\n");system("pause");t=0;break;//排序case 5:change(us[k].password);save1(us,n);break;//修改密码case 6:t=1;break;}if(t==1)break;}}}}else if(select==9){if(Login2()==1){while(1){system("cls");display2();scanf("%d",&choice);switch(choice){case 1:seeAtm(bk,at,m);break;//atm使用情况case 2:add(us,ba,at,&n,&m);break;//录入信息case 3:recovery(ba,us,n);break;//恢复限额case 4:return 0;//退出}}}}else{printf("由于您的恶意输入,您的银行卡已被没收,请前往银行找回!\n");system("pause");return 0;}}}6运行结果以下为排序和查询流水账结果测试:心得体会本学期,当数据结构大作业刚布置下来的时候感觉很难,因为感觉实现的功能比较多并且时间又短,根本完不成这个任务,在写大作业的过程中也并不是那么顺利,存在着太多的bug,然后就一步步调试,找出错误。

相关文档
最新文档