[c]代码库
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define N 200
void 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();
}
else
input_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("* 请选择一下业务 *\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");
printf(" 请重新输入! \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;
fopen_s(fp,"用户信息.dat", "ab+");
if (fp == NULL)
{
printf("打开文件失败\n");
return;
}
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;
}
}
}
初级程序员
by: 赶蚊子 发表于:2017-06-20 11:02:11 顶(0) | 踩(0) 回复
受教了
回复评论