100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 模拟atm取款机 php C语言模拟ATM自动取款机系统

模拟atm取款机 php C语言模拟ATM自动取款机系统

时间:2022-12-13 08:36:30

相关推荐

模拟atm取款机 php C语言模拟ATM自动取款机系统

C语言实验报告

题目名称:C语言模拟ATM自动取款机系统

一:问题描述:

C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能;

代码实现的功能:

账号及密码输入:用户输入密码,才能进入。

登陆成功界面:共有六个选项,查询余额、取款、存款、转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示。

选定1后,进入查询余额界面; 选定2后,进入取款界面; 选定3后,进入存款界面;

选定4后,修改密码,选定5,进入转账;选定6,退出界面;

如果过程中操作有误,提醒是否继续操作。

二:分析问题

(1)

在main()函数用switch语句现实菜单功能,根据用户选择,进入不同功能区;

(2)

模拟ATM自动取款机功能的实现,需要用自定义函数实现板块化。

所用的自定义函数如下:

登录界面:void enter();

登录成功后的界面:void jiemian();

实现密码输入:void land();

实现余额查询:void inquiry();

实现取款功能:void withdraw();

实现存款功能:void deposit();

实现转账:void zhuangzhang();

实现修改密码:void correctscrect();

结束:void out();

输入有误,提示是否继续:int keep();

(3)

库函数:strcmp();system();

(4)

用户信息

结构体存储个人信息;

结构体数组存储的存储设计数据库知识,本实验模拟ATM机,简化处理,已经注册用户数据信息存储在结构体数组中;

三:解决问题

1. 用户信息

用结构体来描述用户的姓名、卡号、密码以及金额。

假设用户信息在结构体数组中;

2. 主函数函数

Switch语句实现菜单话;

(3)Voidland();

需要解决的问题:1.密码输入2.检查密码是否输入正确3.密码输入次数不能超过3次。(if语句)

(4)void jiemian();

提示用户进行操作printf();

(5)void withdraw();

1.取款时,输入的金额不能为被100整除;

2.取款的金额不能大于余额;

3.修改余额;

(6)void deposit();

1.存款金额不能不被100整除

(7)void correctscrect();

1.修改密码,需要重复输入二遍来确定密码是否修改成功;

(8)void zhuangzhang();

1.转账金额不能不被100整除

2.输入对方账号

3.转账金额是否足够,不能不被100整除

(9)int keep();

1.当输入有误时,提醒是否继续操作;

(8)void out();

1.调用main(),下一个用户操作;

四:程序代码

#include

#include

#include

#include

void enter();//进入界面

void jiemian();//登录成功界面

void land();//登录

void inquiry();//查询余额

void withdraw();//取款

void deposit();//存款

void correctscrect();//修改密码

void out();//退出

void zhuangzhang();//转账

int keep();//当输入有误是否继续

struct essage

{

char

name[20];

long

int acountion;

long

intkeyword;

float

money;

};

struct essage a[5]=

{{"zhangsan",3205,1234,2000},{"wanger",3027,2345,3000},{"lisi",3023,3456,2345}};

int X;

int main()

{

int

i;

land();

jiemian();

while(-1)

{

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

scanf("%d",&i);

switch(i)

{

case 1 :

{

system("cls");

inquiry();

printf("按任意键继续!\n");

system("pause");

jiemian();

break;

}

case 2:

{

system("cls");

withdraw();

printf("按任意键继续!\n");

system("pause");

jiemian();

break;

}

case 3:

{

system("cls");

deposit();

printf("按任意键继续!\n");

system("pause");

jiemian();

break;

}

case 4:

{

system("cls");

correctscrect();

printf("按任意键继续!\n");

system("pause");

jiemian();

break;

}

case 5:

{

system("cls");

zhuangzhang();

system("pause");

jiemian();

break;

}

case 6:

{

printf("欢迎下次!\n");

system("cls");

main();

}

default :

{

break;

}

}

}

return

0;

}

void enter()

{

printf("******************************\n");

printf("********welcome to ATM!*******\n");

printf("******************************\n");

}

intkeep()

{

char

a;

printf("是否继续?\n");

while(-1)

{

printf("继续请输入:y退出按n\n");

getchar();

//a= getchar();

//getchar();

scanf("%c",&a);

if(a =='y')

{

return 1;

}

else if(a=='n')

return 0;

else

{

printf("输入有误!\n");

continue;

}

}

}

void land()

{

long

intkeyword;

int

i;

int

count=0;

while(-1)

{

printf("请输入密码:\n");

count++;

scanf("%ld",&keyword);

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

{

if(keyword==a[i].keyword)

{

X = i;

return;

}

}

if(count==3)

{

printf("你输入的密码次数超过3次!\n");

exit(0);

}

else

{

printf("你输入密码有误!请重新输入!\n");

}

}

}

void inquiry()

{

printf("你当前余额为:%f\n",a[X].money);

}

voidjiemian()

{

printf("**************1.查询余额2.取款*************\n");

printf("**************3.存款4.修改密码*********\n");

printf("**************5.转账6.退出**************\n");

}

void deposit()

{

intn;

int

j;

while(-1)

{

printf("请输入存储金额:\n");

scanf("%d",&n);

if(n0==0)

{

a[X].money+=n;

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

printf("当前余额:%f",a[X].money);

return;

}

else

{

printf("输入金额有错!\n");

j = keep();

if(j == 1)

{

system("cls");

continue;

}

else

return ;

}

}

}

void withdraw()

{

intn;

int

m;

if(a[X].money<100)

{

printf("余额不足!\n");

return;

}

while(-1)

{

printf("请输入取款金额!\n");

scanf("%d",&n);

if(n>a[X].money)

{

printf("余额不足!\n");

m = keep();

if(m ==1)

continue;

else

return;

}

if(n0!=0)

{

printf("输入有误!请重新输入取款金额!\n");

//system("pause");

m = keep();

if(m==1)

continue;

else

return;

}

else

{

printf("成功!");

a[X].money=a[X].money-n;

return ;

}

}

}

void correctscrect()

{

int

b;

long

int n;

long

int m;

long

intq;

while(-1)

{

printf("请输入旧密码:\n");

scanf("%ld",&q);

if((q!=a[X].keyword))

{

printf("输入有误!\n");

b =keep();

if(b ==1)

continue;

else

return;

}

else

break;

}

while(-1)

{

printf("请输入新密码:\n");

scanf("%ld",&n);

printf("请在一次输入新密码:\n");

scanf("%ld",&m);

if(n!=m)

{

printf("二次密码不一样!\n");

b = keep();

if(b == 1)

continue;

else

return ;

}

else

{

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

a[X].keyword = n;

break;

}

}

}

void zhuangzhang()

{

long

intn;

intm;

int

i;

int

j;

int

leap=1;

printf("转账!\n");

while(leap!=0)

{

printf("输入转账账号!\n");

scanf("%ld",&n);

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

{

if(a[i].acountion==n)

{

leap=0;

break;

}

}

if(leap!=0)

{

printf("你输入的账号不存在!\n");

j = keep();

if(j == 1)

{

system("cls");

continue;

}

else

return ;

}

}

while(-1)

{

printf("输入转账金额;\n");

scanf("%d",&m);

if(a[X].money<100)

{

printf("余额不足!\n");

j= keep();

if(j ==1)

continue;

else

return;

}

if(m>a[X].money)

{

printf("余额不足!\n");

j= keep();

if(j ==1)

continue;

else

return;

}

if(m0!=0)

{

printf("输入有误!请重新输入取款金额!\n");

j = keep();

if(j==1)

continue;

else

return;

}

else

{

printf("转账成功!");

a[X].money=a[X].money-m;

a[i].money = a[i].money+m;

return ;

}

}

}五:调试与测试

在编写代码:

主要问题就是在输入密码,密码要求次数不能超过3次和在所给人数中和转账过程复杂,易出错!

六:结果截图

void land():

void inquiry()

Void withdraw():

voiddeposite():

Void correctscrect():

Void zhuanzhang()

Void out()

七:总结

(1)收获

在做本次实验报告,有在网上寻求资源,帮助,解决不会的地点。从开时到完成,整个过程用时一个星期,全是自己动手,想如何设计程序,遇到问题百度。

本次实验报告把所学的C语言大部分都用上,对C语言程序设计有很大的帮助和提高和自己都C语言熟悉度。在运用C语言编程有所提高

(2)用到的知识

数据类型;

if语句,switch语句,for语句;

函数的声明,定义,调用;

库函数的运用;

结构体;

(3)不足

1.在C语言运用

缺少对文件的运用,造成模拟ATM机的一部分功能不完整!本实验如果运用文件存储用户信息,访问信息在真正模拟ATM机更接近。

(4)程序改进

1.实现了ATM基本的功能输入密码登录,查询余额,转账,修改密码,取款和存款。相比ATM机的功能,在取款,存款,转账金额方面应该给用户一个选择金额的功能和金额的限制!

2.数据存储存在不足,访问人数有限!从文件中读取用户信息。

3.缺少记录用户操作的时间和记录取款,转账金额;

4.输入登录密码时,操作总数一天不能超过3次,超过需要进行的操作!如果输入有问题一个提醒。

5.转账的账号如果为自己的账号,应该提醒;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。