概述
绪论
ATM即自动取款机的意识,ATM是最普遍的自助银行设备,可以提供最基本的银行服务之一,即出钞交易,有些全功能的产品还可以提供信封存款业务。在ATM自动取款机上也可以进行账户查询和改密的业务。作为自助式金融服务终端,除了提供金融业务功能之外,ATM自动取款机还具有维护、测试、事件报告、监控和管理等多种功能。
设计要求
- 实现ATM取款机的基本功能,如给用户提供查询余额、取款、修改密码、吃卡、退出系统等服务
- 可根据实际情况添加(如缴费、转账等服务)
- 对于用户要求输入相应的帐号和密码,如果三次出错则将卡吃掉
- 若输入的取款金额超出账户余额,则提示用户输入有误并提供更正功能
设计界面
管理员菜单
用户菜单
用户交互图
设计内容
- 输入账户及密码
系统在登录界面提示输入密码,如果输入的密码正确,按确认键进入主界面,否则按更正键,重新输入密码。 - 存款
进入主界面后,选择存款进入存款界面,系统提示请放入整百元的人民币。存款成功后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。 - 取款
进入界面后,选择取款,若所取的金额在界面上有,按相应的金额进行取款操作;若无,在键盘上手动输入所取的金额后按确认键。取款成功后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。 - 查询余额
进入主界面后,选择查询余额,进入查询余额界面,屏幕显示“您的余额是*** ”。完成该操作后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。 - 修改密码
进入主界面后,进入修改密码界面,系统提示输入旧密码,新密码,确认新密码,如果两次输入的新密码一致,按确认键,则修改密码成功。完成该操作后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。 - 缴费
进入主界面后,选择缴费,系统提示按键选择缴费项目,按确认键后,进入缴费提示界面,则按确认键,则缴费成功。缴费成功后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。 - 转账
进入主界面后,选择转账,系统提示输入转账账户和转账金额,按确认键后,进入转账提示界面,如果该界面上显示的是你所要转账的用户名,则按确认键,则转账成功。如果和你所要转帐的用户不一致,则返回主界面,重复上述的转账操作。转账成功后,如果还要进行其他操作,按返回主界面键返回主界面,否则退卡。
模块设计
- void drawmoney() //功能1:取款业务
- void savemoney() //功能2:存款业务
- void showmoney() //功能3:查询余额
- void updatekey() //功能4:用户密码修改
- void transfer() // 功能5: 转账
- void exitsystem() //功能6:退出系统
- int login() //登陆函数;
- void Select_Message() //查询用户信息
- void Lost_Card() // 挂失
- void Create_Card() // 开户
- void Modify_Key() // 修改用户密码
C语言源程序——建议使用Devc ++ 运行
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
using namespace std;
/*flagI标记当前登录账户,flagN标记当前转账的账户*/
int flagI, flagN;
int userID = 0;
int UserNumber = 0;
struct User //这里面变量的位置不要动
{
char name[50]; //账号
double money; //金额
int flag; //账号能否正常使用, 1表示能 2表示冻结 3表示挂失
int d; //账户类型
char key[50]; //密码
} user[10000];
void Save() //更新用户信息
{
FILE* fp;
if ((fp = fopen("user.txt", "w")) != NULL)
{
for(int i=1; i<=UserNumber; i++)
{
fwrite(&user[i], sizeof(struct User), 1, fp);
}
fclose(fp);
}
else printf("ntttttt用户信息更新失败");
}
void TiQu() //提取用户信息
{
UserNumber = 0;
FILE* fp;
if ((fp = fopen("user.txt", "r")) != NULL)
{
while (!feof(fp))
{
fread(&user[++UserNumber], sizeof(struct User), 1, fp);
}
fclose(fp);
}
else printf("ntttttt用户信息加载失败");
UserNumber--; //
}
void drawmoney() //功能1:取款业务
{
int a, i;
char c;
while (1)
{
printf("ntttttt请输入您的取款金额(整百):");
scanf("%d", &a);
if (a > user[userID].money)
printf("ntttttt账户余额不足,请重新输入!n");
else if (a < 0 || a % 100 != 0)
printf("ntttttt输入有误,请重新输入!n");
else
break;
}
getchar();
user[userID].money -= a;
printf("ntttttt取款成功,请收好您的钞票!n");
printf("ntttttt是否打印凭条? 【 y/n 】 ");
scanf("%c", &c);
getchar();
if (c == 'Y' || c == 'y')
{
printf("ntttttt正在打印请稍后。。。。。ntt");
printf("nttttt");
for (i = 0; i < 10; i++)
{
printf("■");
Sleep(200);
}
printf("n");
Save();
printf("ntttttt打印完成,请收好您的凭条n");
printf("ntttttt请按Enter键退出n");
getchar();
}
else
{
printf("ntttttt请按Enter键退出n");
getchar();
}
}
void savemoney() //功能2:存款业务
{
int a, i;
char c;
while (1)
{
printf("ntttttt请输入您的存款金额(整百):");
scanf("%d", &a);
if (a < 0 || a % 100 != 0)
printf("ntttttt输入有误,请重新输入!n");
else
break;
}
getchar();
user[userID].money += a;
printf("ntttttt存款成功n");
printf("ntttttt是否打印凭条? 【 y/n 】 ");
scanf("%c", &c);
getchar();
if (c == 'Y' || c == 'y')
{
printf("ntttttt正在打印请稍侯。。。。。ntttt");
//printf("nttttttt ");
for (i = 0; i < 10; i++)
{
printf("■");
Sleep(200);
}
printf("n");
Save();
printf("ntttttt打印完成,请收好您的凭条n");
printf("ntttttt请按Enter键退出n");
getchar();
}
else
{
printf("ntttttt请按Enter键退出n");
getchar();
}
}
void showmoney() //功能3:查询余额
{
printf("ntttttt用户名 :%sn", user[userID].name);
printf("ntttttt账户余额:%.2lfn", user[userID].money);
printf("ntttttt请按Enter键返回n");
getchar();
}
char* get_password()//星号密码获取函数;
{
int i = 0;
char a[50];
char ch = '