ATM管理系统

这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
这个作业的目标 编写一个比较基本的ATM系统
学号 3180701330

题目要求

编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

(5)转账(一个账户转到另一个账户)等...

程序设计:

(1)头文件

include<stdio.h>

include<stdlib.h>

include<string.h>

include<conio.h>

(2)结构体与全局变量

struct users
{
char name[20];//用户名
char pass[7];//密码
int account;//账号
float money;//余额
}user[100];
int count = 0;
int account = 10000;
int find;
int dFind;
int isLogout = 0;

(3)从文件中读出数据

void read()
{
FILE *fp;
fp = fopen("baocun.txt", "r"); //打开文件
while (feof(fp) == 0)
{
fscanf(fp, "%s%s%d%ld\n", &user[count].name, &user[count].pass, &user[count].account, &user[count].money);//读入文件
count++;
account++;
}
fclose(fp); //关闭文件
}
(4)将文件写入文件中

void write()
{
FILE *fp;
fp = fopen("baocun.txt", "w"); //打开文件
fprintf(fp, "%s %s %d %ld\n", user[count].name, user[count].pass, user[count].account, user[count].money);//写入文件
fclose(fp); //关闭文件
}

(5)开户

void regist()
{
int length;
char rePass[7];
printf("请输入用户名:\n");
//要使用一个字符串接收输入的用户名
fflush(stdin);//刷新字符缓冲区
gets(user[count].name);//读取字符串,回车结束
while (1)
{
while (1)
{
printf("请输入密码:\n");
fflush(stdin);//清空输入缓冲区
inputPass(user[count].pass);
length = strlen(user[count].pass);//计算字符串长度,其返回值是一个整数
if (length == 6)
{
break;
}
else
{
printf("密码输入有误!请输入6位密码\n");
}
}
printf("请再次输入密码:\n");
inputPass(rePass);
if (strcmp(rePass, user[count].pass) == 0)
{
break;
}
else
{
printf("两次密码输入不一致,请重新输入\n");
}
}
account = account + 1;
user[count].account = account;
user[count].money = 0;
write();
printf("注册成功\n");
printf("您的账号为:%d\n", user[count].account);
if (count >= 1)
{
printf("前一个注册的账号为:%d\n", user[count - 1].account);
}
count++;
}

(6)销户

void logout()
{
char confirm;//confirm 确认
printf("您正在使用注销功能\n");
printf("%d确认注销?\n", user[find].account);
printf("Y表示确定,其它字符表示取消\n");
scanf("%c", &confirm);
if (confirm == 'y' || confirm == 'Y')
{
printf("正在注销%d\n", user[find].account);
isLogout = 1;
}
else
{
printf("取消注销帐号%d,返回服务界面\n", user[find].account);
isLogout = 0;
}
}

(7)查询账户余额

void selectMoney()
{
printf("您正在使用查询余额功能\n");
printf("您的账户余额为:%lf\n", user[find].money);
}

(8)存款

void saveMoney()
{
int RMB;
printf("您正在使用存款功能\n");
printf("请输入存款金额:\n");
scanf("%d", &RMB);
user[find].money = user[find].money + RMB;
printf("存款成功\n");
}

(9)取款

void getMoney()
{
int RMB;
printf("您正在使用取款功能\n");
printf("请输入取款金额:\n");
scanf("%d", &RMB);
if (user[find].money >= RMB)
{
user[find].money = user[find].money - RMB;
printf("取款成功\n");
}
else
{
printf("余额不足\n");
}
}

(10)转账

void transferMoney()
{
int i, username;//账号
int isFind = 0;
int RMB;//转账金额
printf("您正在使用转账功能\n");
printf("请输入对方的帐号:\n");
scanf("%d", &username);
for (i = 0; i < count; i++)
{
if (username == user[i].account)
{
dFind = i;
isFind = 1;
break;
}
}
if (isFind == 1)
{
printf("请输入转账金额:\n");
scanf("%d,", &RMB);
if (user[find].money >= RMB)
{
user[find].money = user[find].money - RMB;
user[dFind].money = user[dFind].money + RMB;
printf("转账成功\n");
}
else
{
printf("余额不足\n");
}
}
else
{
printf("目标帐号不存在\n");
}
}

(11)登录

void login()
{
int zhanghao;
int sign = 0;
int i, j, find;
char loginPassword[7];
//提示 请输入账号
read();
printf("请输入帐号:\n");
//获取输入的账号
scanf("%d", &zhanghao);
//将输入的账号与用户数组里的每一位用户的帐号进行对比
for (i = 0; i < count; i++)
{
if (zhanghao == user[i].account)
{
sign = 1;//将F标记设置为1
find = i;
break;
}
}
//如果匹配到了,提示请输入密码
if (sign == 1)
{

	for (j = 1; j <= 3; j++)
	{
		printf("请输入密码:\n");
		inputPass(loginPassword);
		if (strcmp(loginPassword, user[find].pass) == 0)
		{
			printf("登陆成功\n");
			printf("\t\t\t进入服务界面\n");
			service();
			break;
		}
		else
		{
			if (j == 3)
			{
				printf("密码三次输入错误,已锁定\n!");
				break;
			}
			printf("密码错误,请重新输入!\n");
		}
	}

}
else
{
	printf("账号错误\n");
}

}

(12)服务界面

void service()
{
int choise;
while (1)
{
printf("\t1、查询余额\t");
printf("\t2、存款 \t");
printf("\t3、取款 \n");
printf("\t4、转账 \t");
printf("\t6、注销 \t");
printf("\t7、退出系统\n");
printf("请选择:");
scanf("%d", &choise);
switch (choise)
{
case 1:
selectMoney(); break;//查询余额
case 2:
saveMoney(); break;//存款
case 3:
getMoney(); break;//取款
case 4:
transferMoney(); break;//转账
case 6:
logout();
if (isLogout == 1)
{
return;//直接结束所处函数
}
break;//注销
case 7:
break; return;//退出系统
default:
printf("您的输入有误,请重新输入!\n");
}
}
}
printf("\t\t\t\t1.用户注册\n");
printf("\t\t\t\t2.用户登录\n");
printf("\t\t\t\t3.退出系统\n");
printf("\t\t\t\t请选择:");
scanf("%d", &a);
if (a == 1)
{
//执行注册函数
regist();
//printf("\n\n\t\t执行注册");
}
else if (a == 2)
{
//执行登录函数
login();
//printf("\n\n\t\t执行登录");
}
else if (a == 3)
{
//quit();
printf("执行退出\n");
break;
}
else
{
printf("输入有误,请重新输入!");
}

(13)主函数

void main()
{
int a;
printf("\t\t\t欢迎进入ATM银行管理系统\n");
while (1)
{
printf("\t\t\t\t1.用户注册\n");
printf("\t\t\t\t2.用户登录\n");
printf("\t\t\t\t3.退出系统\n");
printf("\t\t\t\t请选择:");
scanf("%d", &a);
if (a == 1)
{
//执行注册函数
regist();
//printf("\n\n\t\t执行注册");
}
else if (a == 2)
{
//执行登录函数
login();
//printf("\n\n\t\t执行登录");
}
else if (a == 3)
{
//quit();
printf("执行退出\n");
break;
}
else
{
printf("输入有误,请重新输入!");
}
printf("按任意键继续...\n");
getch();
}
}
运行截图:

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 10 25
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 10
Development 开发 100 210
Analysis 需求分析(包括学习新技术) 12 45
Design Spec 生成设计文档 5 5
Design Review 设计复审 5 5
Coding Standard 代码规范 3 2
Design 具体设计 10 12
Coding 具体编码 36 60
Code Review 代码复审 5 3
Test 测试(自我测试,修改代码,提交修改) 10 30
Reporting 报告 9 6
Test Report 测试报告 3 2
Size Measurement 计算工作量 2 1
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 3 3
posted @ 2020-11-19 09:25  党和人民  阅读(108)  评论(0编辑  收藏  举报