搜档网
当前位置:搜档网 › C语言模拟ATM机

C语言模拟ATM机

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.信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;

4.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用。

5.附加功能:

●储户一天输错密码的次数不能超过3次,否则无法进入系统;

●应避免输入存款金额、取款金额为负数等异常情况的出现。

三、程序已经实现的功能点

实验要求均已实现。此外还有:

1.卡号、密码位数输错时,提示并返回重新输入,

2.简化取款时的输入

3.转账时,转账账户为原账户时,提示并返回重新输入

4.在多个模块中添加了退出功能,无需回到主菜单即可退出系统

5.在查询模块中加入了存取记录明细查询

四、程序运行截图及说明

1.登陆模块

1)卡号不为16位时,输出提示并返回重新输入

2)卡号不存在时,输出提示并返回重新输入

3)密码位数输错时,输出提示并返回重新输入密码,不作为密码错误处理,也无需重新输入卡号

4)密码连续输错三次时,锁定卡号,今日无法登录

2.登录后的系统主菜单

1)查询模块主菜单

2)查询明细

1)当余额不足50时,无法进入取款模块

2)取款模块主菜单

3)便捷取款

4)手动输入取款金额

输错时,返回重新输入

5)取款后的菜单

6)取款完成后选择显示余额

5.存款模块

1)解决输入错误问题

2)存款成功

6.密码修改模块

1)原密码输错时,返回重新输入,不提供退出功能

2)密码位数输错、两次输入新密码不一致时,返回重新输入

3)输入无误时

7.转账模块

1)转入卡号位数输错时,提示并返回重新输入

2)未查找到该卡号时,输出提示,提供退出功能,键入除*外任意键重新输入

3)转入卡号与当前卡号相同时,输出提示

4)输出转入卡账户的部分用户名

5)解决转账金额输错的问题

6)转账成功

五、采用的主要技术

1.宏定义:由于本程序的printf语句较多,为了便于编写,故用PR代替

2.链表:账户信息采用链表结构,存动态分配,使用存无限制,可以扩展到所有可以使用的存

3.switch多分支选择结构

4.文本文件的读写

5.利用time.h头文件,简便地获取系统日期

6.system()函数和fflush()函数的简单使用

六、设计心得

1.各函数的功能要相对独立,逐步求精。

2.如果函数的参数为指针,且仅作为输入参数,则应在类型前加const,以防止该指针在函数体被意外修改

附:程序代码

/***

* 运行本程序前,请在本程序根目录下建立文件“accounts.txt”,格式如下:

* 卡号1(16位) 1 账户余额1 密码1

* 卡号2(16位) 2 账户余额2 密码2

* ……

****/

#include

#include

#include

#include

#define PR printf

typedef struct

{

short int year;

short int month;

short int day;

}Date;//日期

typedef struct Account

{

char no[17];

char name[20];

double balance;

char password[7];

struct Account* next;

}Account;

typedef struct

{

char no[17];

Date date;

double number;

}Record;//记录

Account *head = NULL;//账户信息链表表头

Account *now_acc = NULL;//当前账户

/************函数申明************/

void InitializeAccount();//导入账户信息

//--------------------------------------

char LockAccountT opic(const char *no);//检测账户是否被锁定

void LockAccount(const char *no);//锁定账户

//--------------------------------------

void Login();//登录

Account* FindbyNo(const char *no);//查找卡号对应账户信息在链表中的地址//--------------------------------------

void Demand();//查询主菜单

void PrintBalance();//输出余额

void Printetail();//输出明细

//--------------------------------------

void Modifiy();//修改密码

//--------------------------------------

void Withdrawal();//取款主界面

void WithdrawalOt(long money);//取款

//--------------------------------------

void Depositing();//存款

//--------------------------------------

void Transfer();//转账

char *CoverUpName(const char *name);//掩盖部分用户名

//--------------------------------------

void Log(double money, const char *no);//将存款记录写入文件中

void Save();//保存账号信息

void FreeData();//释放链表空间

//--------------------------------------

int main()

{

char choose;

InitializeAccount();//导入账户信息

Login();//登录

do

{

system("cls");

PR("\t\t \n");

PR("\t\t 请选择服务\n");

PR("\t\t+-+---------+ +---------+-+\n");

PR("\t\t|5|\33转账| |查询\32|1|\n");

PR("\t\t+-+---------+ +---------+-+\n\n");

PR("\t\t +---------+-+\n");

PR("\t\t |取款\32|2|\n");

PR("\t\t +---------+-+\n\n");

PR("\t\t +---------+-+\n");

PR("\t\t |存款\32|3|\n");

PR("\t\t +---------+-+\n\n");

PR("\t\t+-+---------+ +---------+-+\n");

PR("\t\t|0|\33退出系统| |修改密码\32|4|\n");

PR("\t\t+-+---------+ +---------+-+\n\n");

PR("请选择服务:");

fflush(stdin);

choose = getchar();

switch (choose)

{

case '1': Demand(); break;//查询

case '2': Withdrawal(); break;//取款

case '3': Depositing(); break;//存款

case '4': Modifiy(); break;//修改密码

case '5': Transfer(); break;//转账

case '0': FreeData(); return 0;//退出

default:

printf("输入错误,请重新选择\n"); //解决用户可能的输入错误

system("pause");

}

} while (1);

return 0;

}

/**********导入账户信息**********/

void InitializeAccount()

{

FILE *fp;

Account temp;

PR("系统初始化中,请稍侯...\n");

if (!(fp = fopen("accounts.txt", "r")))

{

PR("\07");//响铃

PR("读取信息失败,请在本程序根目录建立信息文件(accounts.txt)。格式如下:\n");

PR("卡号1(16位) 1 账户余额1 密码1\n");

PR("卡号2(16位) 2 账户余额2 密码2\n");

PR("……\n");

exit(0);

}

while (fscanf(fp, "%s %s %lf %s", temp.no, https://www.sodocs.net/doc/8c9160546.html,, &temp.balance, temp.password) == 4)

{//读入账户信息

Account *t = head;

head = (Account*)malloc(sizeof(Account));

*head = temp;

head->next = t;

}

fclose(fp);

system("cls");//清除“系统初始化中,请稍侯...”提示

}

/**********登录**********/

void Login()

{

do

{

char no[17];

system("cls");

PR("\n\n\n\n\t\t\t请输入16位卡号:");

fflush(stdin);

gets(no);

if (strlen(no) != 16)

{

PR("卡号应为16位\n");

system("pause");

system("cls");

continue;

}

if (LockAccountT opic(no))

{//当该卡号被锁定时

PR("\07");//响铃

PR("\n\n您的登陆密码今日连续输错三次,已被临时锁定,次日将自动解锁,或当日持本人有效证件到柜台办理密码重置。\n\n");

system("pause");

continue;

}

if (!(now_acc = FindbyNo(no)))//将卡号对应信息在链表的地址赋给now_acc

{//当卡号不存在时

PR("\n\n此卡号不存在,请重新输入!\n\n");

system("pause");

continue;

}

char a = '2';//计算剩余可输错密码次数

do

{

char password[7];

system("cls");

PR("\n\n\n\n\t\t\t请输入16位卡号:%s\n", now_acc->no);

PR("\n\n\t\t\t请输入6位密码:");

fflush(stdin);

scanf("%s", password);

if (strlen(password) != 6)

{

PR("密码应为6位\n");

system("pause");

system("cls");

continue;

}

C语言ATM程序模拟

一、课题要求 1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录A TM柜员机系统。 2、查询余额:初始余额为10000元。 3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 4、ATM存款:不能出现负存款。 5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确, 新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 二、代码 #include "stdafx.h" #include "stdio.h" #include "windows.h" #include "stdlib.h" #include "conio.h" void gotoxy(int x,int y); //光标位置函数 void enter_ATM(); //账号输入函数 void input_code(); //密码输入函数 void caozuo(); //基本操作界面 void qukuan(); //取款函数 void success(); //操作成功函数 void delay(); //延时函数 void yu_e(); //余额查询函数 void cunkuan(); //存款函数 void panduan(long int z); //判断取款是否合法函数 void exit(); //退出界面函数 void mima(); //密码修改 void zhuangyi(); long int CODE=123456,YU_E=10000; //=========================主函数========================// main() { enter_ATM(); caozuo(); } //======================================================// //==================================柜台机账号输入函数=======================================//

c语言程序设计atm自动取款机实验报告材料

课程设计报告 课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计 姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级:

目录 1.课程设计内容.................................................. 2.课程设计要求.................................................. 3.可行性研究................................................... 4.需求分析..................................................... 5.概要设计...................................................... 5.1 功能模块图............................................... 5.2 功能模块描述............................................. 5.3数据结构 ................................................. 6.详细设计...................................................... 6.1 功能流程图............................................... 6.2 重点设计................................................. 7.测试与调试.................................................... 8.总结.......................................................... 8.1 心得体会.................................................. 8.2 不足与改进................................................ 9.参考文献......................................................

c语言Atm的简单实现Word版

信息科学与工程学院《数据结构》 课程设计报告 课程设计名称: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排序 此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

C语言ATM机实现

#include //提供了strcmp()函数 #include struct student { char xm[20];//姓名 char mm[10];//密码 int je;//金额 int zh;//帐号 }; void main() { int i; int k=0; int count=1000; int f; student st[10]={"","",0,0}; bool flag=false; do { printf("1--注册2--登录3--取款4--存款5--查询0--退出\n"); scanf("%d",&i); if (i==1) { printf("输入姓名:"); scanf("%s",&st[k].xm); printf("输入密码"); scanf("%s",&st[k].mm); st[k].zh=count++; printf("你的帐号为%d\n",st[k].zh); k++; } else if (i==2) { int zh; char mm[20]; printf("输入卡号"); scanf("%d",&zh); printf("输入密码"); scanf(" %s",&mm);

for(int j=0;j<10;j++) { if(st[j].zh==zh && strcmp(st[j].mm,mm)==0) { flag=true; printf("找到了"); f=j; break; } } } else if (i==4) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入存款金额"); int je; scanf("%d",&je); st[f].je=st[f].je+je; printf("存款成功"); } } else if (i==3) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入取款金额"); int je; scanf("%d",&je); if (je>st[f].je) { printf("余额不足"); } else { st[f].je=st[f].je-je;

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

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可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。

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(数量,可正可负, 正表示存款,负表示取款)

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可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。

c语言程序设计atm自动取款机实验报告

程设计报告课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级:

目录 1. 课程设计内容....................... 2. 课程设计要求....................... 3.可行性研究........................ 4.需求分析......................... 5. ...................................................................... 概要设计. 5.1 功能模块图 ..................... 5.2 功能模块描述 ..................... 5.3 数据结构 ...................... 6. ...................................................................... 详细设计. 6.1 功能流程图 ..................... 6.2 重点设计 ...................... 7. 测试与调试........................ 8. 总结. ....................................................... 8.1 心得体会 ....................... 8.2 不足与改进 ...................... 9. 参考文献. ................................................. 1. 课程设计内容

C语言程序设计报告模拟ATM取款机

仲恺农业工程学院工程实训报告 ATM取款机 课程名称C语言程序设计工程实训 姓名林少烈 院(系)计算机科学与工程学院 专业班级计算机113班 学号201110214317 指导教师王成 仲恺农业工程学院教务处制

目录 1 需求分析 (1) 2 系统总框图和功能模块说明 (1) 2.1 系统总框图 (1) 2.2 功能模块说明 (1) 3 系统设计 (2) 3.1 主要结构体 (2) 3.2主要功能函数 (2) 3.3 关键函数的流程图 (3) 4 系统调试 (12) 5 总结 (25) 6 源程序清单 (28) 6.1头文件 (28) 6.2主程序 (29) 6.3 解除被冻结用户 (64) 6.4 用户注册 (66)

1 需求分析 所设计的ATM取款机应具备以下功能: ●插入银行卡(用账号输入的方式代替); ●密码的输入; ●用户信息查询; ●用户余额查询; ●取款; ●转账; ●修改密码; ●退卡。 2 系统总框图和功能模块说明 2.1 系统总框图 图1 系统总框图 2.2 功能模块说明 ?输入用户账号模块:在运行时,完成用户账号的输入(代替插卡);

?输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能; ?信息读取功能模块:完成用户信息的读取; ?冻结账号功能模块:当输入密码3次错误时,冻结用户账号: ?查询用户信息模块:完成用户的信息查询(不包括余额查询); ?查询余额功能模块:完成用户余额的查询; ?取款功能模块:完成取款功能模块: ?转账功能模块:完成转职功能; ?修改密码功能模块:完成用户修改密码功能; ?退卡功能模块:完成退卡功能(即:退出程序功能)。 3 系统设计 3.1 主要结构体 用户账号、、密码、余额 struct User //用户数据 { char num[20]; //用户账号 char name[10]; // char password[7]; //密码 float balance; //余额 }; 3.2主要功能函数 void read_info(); //用户信息读取 void input_num(char * num); //输入账号

C语言课程设计报告(银行存取款管理设计)

错误!未找到目录项。 C程序课程设计报告 题目车票管理系统 院别数学与计算机学院班级 姓名学号 指导教师邓永江 二○一五年六月

预习报告 一:设计题目 银行存取款管理设计 二:功能要求 ①能够添加和修改以及删除客户文件。(在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。 ②能够输入和查询客户存款取款记录。(在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种)。 ③能够给程序提供运行提示。 三:设计要求 ①、用C 语言实现系统; ②、函数功能要划分好(结构化程序设计); ③、界面友好(良好的人机交互),加必要的注释; ④、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能 运行起来,不能运行的程序是没有价值的。 四:设计目的 ①、通过这次课程设计,使我们更加深入地理解和掌握C 语言基本概念,切身体会用结构化程序设计的工程思想,感受C 语言的魅力。 ②、通过这次课程设计,培养我们独立思考、勇于探索、积极创新、严谨求实、有过必改的工作态度以及较熟的上级操作能力,同时加强我们团结友爱,协作攻关的团队合作意识。 五:设计框架图

void main():在里面写了“功能选择”的SWITCH函数; void kehu();客户资料添加与操作主菜单;void kehu1(struct cou p[],char *re,long *h); 客户资料查询函数; void kehu2(struct cou *p,char *re,long h);客户资料添加函数; void kehu3(struct cou *p,char *re,long h); 客户资料修改函数; void kehu4(struct cou *p,char *re,long h); 客户资料清楚函数; void kehup(struct cou *p,char *re,long *h); 客户资料打印函数; void cunq1(); 存取款办理选择主菜单; void cunq11(struct cou *p,char *re,long h);客户存款资料的键入; void cunq12(struct cou *p,char *re,long h); 客户取款资料的键入; void cunq2();存取款选择查询主菜单; void cunq211(struct cou p[],char *re,long *h);把顾客存款资料从文件读到缓冲 区; void cunq212(struct cou *p,char *re,long *h);打印存款资料; void cunq221(struct cou p[],char *re,long *h);把顾客取款资料从文件读到缓冲 区; void cunq222(struct cou *p,char *re,long *h);打印取款资料; void help(); 使用说明模块。 ㈡变量 ①全局的结构体型数组w(用来存放200多个结构体变量): extern struct cou { long b; char x[20]; long m;

ATM机C语言程序

直接运行没有错误的代码c----- 本银行卡管理系统有五个账号和其对应的密码: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 账号: 1:10001 2:10002 3:10003 4:10004 5:10005 对应账号的密码和其账号相同 代码如下: #include #include #include main(){ int a,b,n,c,i,zh[5],mm[5],e,f,j,m,zz,kk; float y,zj,ck[5]={0.00,0.00,0.00,0.00,0.00},jf[5]={0.00,0.00,0.00,0.00,0.00}; n=1; y=0.00; for(e=0;e<5;e++) zh[e]=mm[e]=e+10001; while(n!=0){ printf("\n\n- - - - - - - - - - - - - - -欢迎登陆ATM 操作系统!- - - - - - - - - - - - - - - \n"); for(i=1;i<=80;i++) printf("="); while(n!=0){ printf("\n 1 ==> 新账号注册款项交易及其他业务<== 2\n\n"); for(i=1;i<=80;i++) printf("="); scanf("%d",&kk); if(kk==2){ system("cls"); printf("\n"); for(i=1;i<=80;i++) printf("="); printf("\n ==> 请输入账号:"); scanf("%d",&f); printf("\n ==>==> 请输入密码:"); scanf("%d",&a); for(m=0;m<5;m++){ if(f==zh[m] && a==mm[m]) break;}

C语言程序设计报告(模拟ATM取款机)

C语言程序设计报告(模拟ATM 取款机)

仲恺农业工程学院工程实训报告 ATM取款机 课程名称C语言程序设计工程实训 姓名林少烈 院(系)计算机科学与工程学院 专业班级计算机113班 学号201110214317 指导教师王成 仲恺农业工程学院教务处制

目录 1 需求分析 (1) 2 系统总框图和功能模块说明 (1) 2.1 系统总框图 (1) 2.2 功能模块说明 (1) 3 系统设计 (2) 3.1 主要结构体 (2) 3.2主要功能函数 (3) 3.3 关键函数的流程图 (3) 4 系统调试 (11) 5 总结 (21) 6 源程序清单 (23) 6.1头文件 (23) 6.2主程序 (23) 6.3 解除被冻结用户 (40) 6.4 用户注册 (41)

1 需求分析 所设计的ATM取款机应具备以下功能: ●插入银行卡(用账号输入的方式代替); ●密码的输入; ●用户信息查询; ●用户余额查询; ●取款; ●转账; ●修改密码; ●退卡。 2 系统总框图和功能模块说明 2.1 系统总框图 图1 系统总框图 2.2 功能模块说明 输入用户账号模块:在运行时,完成用户账号的

输入(代替插卡); 输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能; 信息读取功能模块:完成用户信息的读取; 冻结账号功能模块:当输入密码3次错误时,冻结用户账号: 查询用户信息模块:完成用户的信息查询(不包括余额查询); 查询余额功能模块:完成用户余额的查询; 取款功能模块:完成取款功能模块: 转账功能模块:完成转职功能; 修改密码功能模块:完成用户修改密码功能; 退卡功能模块:完成退卡功能(即:退出程序功能)。 3 系统设计 3.1 主要结构体 用户账号、姓名、密码、余额 struct User //用户数据 { char num[20]; //用户账号 char name[10]; //姓名 char password[7]; //密码

C语言模拟ATM机

C语言模拟A T M机 The latest revision on November 22, 2020

一、实验目的 通过设计一个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(数量,可正可负,正表示存款,负表示取款)

ATMC语言编程源代码

#include/*引用库函数*/ #include #include #include #include #define ZHANGHUSHU 10 #define JIAOYISHU 20 int caidan();/*登录注册菜单*/ void zhuce(); void denglu(); void baocunshuju(); int menu();/*主菜单*/ void cunkuan(); void qukuan(); void zhuanzhang(); void chaxun(); void xiugaimima(); struct JiaoYi /*定义交易结构体*/ { char shijian[50];/*时间*/ char leixing[3];/*类型*/ float jine; /*金额*/ float yue;/*余额*/ }; struct ZhangHu /*定义账户结构体*/ { char xingming[17];/*姓名*/ char zhanghao[12];/*账号*/ char shenfenzheng[19]; /*身份证*/ char mima[7]; /*密码*/ float yue; /*余额*/ struct JiaoYi jiaoyi[JIAOYISHU]; /*在账户的结构体中在定义交易的结构体*/ int jiaoyishu; }; struct ZhangHu zhanghu[ZHANGHUSHU]; /*定义账户数来确定账户这一结构体中有多少个体*/ int j; /*当前账户*/ int zhanghushu; int k;/*交易帐号*/ int jiaoyishu;

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

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.采用模块化程序设计方法来实现,即mainO显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。 较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); 进入程序,menul可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。

C语言ATM程序设计

令狐采学创作 C语言程序实践 令狐采学 实验报告 令狐采学创作

一、实验目的 1.函数的调用 2.结构体的使用 3.文件的应用:打开、关闭、输入、输出等 4.宏定义 二、实验内容与实验步骤 实验内容、原理分析 1.给出数据结构或函数定义 结构体: struct clients { longintcard_number,card_password; char name[20]; float money; }yonghu[3]; card_number:银行卡号 card_password:密码 name:用户名 money:卡内金额 自定义函数: voidfuction(float,int); 用于登陆后的操作 2.用流程图表示出来程序设计的思想

#include #define N 3 /*用户人数*/ struct clients { longintcard_number,card_password; char name[20]; float money; }yonghu[N]; FILE *fp; inti; voidfuction(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

用C语言模拟ATM取款机

分析: 1.识别银行卡。 2.输入密码,正确继续,分支为密码不正确,则返回! 3.选择:账户查询、取钱、转账。查询时,需要调用一个子函数,返回一个钱数常量 取钱时,输入金额,金额要大于0,输入以后调用查询子函数,如果输入金额大于查询返回的数,则报错;如果正常,则修改数据库的钱数。 程序: #include #include #include void password(); void MainMenu(); void Query(float*); void Deposite(float*); void WithDraw(float*); float a=3000; void password() { int a,b; b=1234; printf("================"); printf(" 请输入密码"); printf("================\n"); lp1: scanf("%d",&a); if(a==b) { printf("请选择服务种类,按1进入\n");goto lp2; } else printf("密码错误,请重新输入\n");goto lp1; lp2: switch(getch()) { case'1':MainMenu();break; default:break; } } void MainMenu() { system("cls");

printf("1 查询余额\n"); printf("2 存款\n"); printf("3 取款\n"); printf("4 退出\n"); switch(getch()) { case '1':Query(&a);break; case '2':Deposite(&a);break; case '3':WithDraw(&a);break; default: system("cls");return; } } void Query(float *p) { system("cls"); printf("此账户中钱数为:¥%-.2f",*p); printf("请按任意键继续..."); switch(getch()) { case'0':system("cls");break; default:MainMenu();break; } getch(); } void Deposite(float *p) { float mon; printf("请输入您要存入的钱数:¥"); scanf("%f",&mon); *p += mon; printf("存款成功,请按任意键继续..."); switch(getch()) { case'0':system("cls");break; default:MainMenu();break; } } void WithDraw(float *p) { float mon;

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

C语言-ATM机模拟操作 程序实现功能点: a.查询:查询帐户的存款余额。按任意键返回主菜单; b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过 帐户余额,操作后帐户余额应相应减少,之后可返回主菜单; c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过 20000元,操作后帐户余额应相应增加。之后可返回主菜单; d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无误后,再输入10 0、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放 到帐户信息文件中。之后可返回主菜单; f.退出:退出系统; g.帮助:增加趣味性; h.存款时,可正可负,正表示存款,负表示取款; i.帐户信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;(在目录下 创建这两个文件) j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。

较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); ●进入程序,menu1可选择登录、注册功能。 ●选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否 成功登录。若登录失败,则重新选择。 ●选择注册,输入账号密码,写入文件中。 ●进入menu2,有五大功能选择,输入对应的序列号进入。

相关主题