ATM管理系统

#一.源代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define NUM 1001
void denglu();
void kaihu();
void enter();
void enter2();
void tuichu();
void turn();
void search();
void withdraw();
void deposit();
void xiugai();
void load();
int j=0,k;
struct yonghu
{
	char ID[20];
	char key[20];
	int account;
}user[NUM];

//进入界面
void main()
{
	enter(); 
}

//主函数结束
void enter()
{
	int a;
	load();
	system("cls");
	printf("

*********A T M 模 拟 系 统 ************

");
	printf("******1.开户******

");
	printf("******2.登录******

");
	printf("******3.退出******

");
	printf("请输入您的选择

");
    scanf("%d",&a);
	switch(a)
	{
	case 1:system("cls");
		kaihu();
		break;
	case 2:system("cls");
		denglu();
        break;
	case 3:system("cls");
        tuichu();
		break;
	default:
		printf("	无此操作项
请重新选择
");
		system("pause");
		system("cls");
		enter();
	}
}
//文件读取
void load()
{
	FILE *fp;
    int i;
	if((fp=fopen("atmdata.txt","r"))==NULL)
    {
        printf("不能打开文件
");
        return;
    }
    for(i=0;!feof(fp);i++)
    {
        fread(&user[i],sizeof(struct yonghu),1,fp);
    }
    fclose(fp);
    system("cls");
    printf("文件读取成功
");
}
//文件写入
void save()      
{
    FILE *fp;
    if((fp=fopen("data.txt","w"))==NULL)
    {
        printf("无法打开文件
");
        exit(0);
    }
    fwrite(user,sizeof(struct yonghu),NUM,fp);
    printf("文件写入完成
");
    fclose(fp);
}
//开户
void kaihu()
{
	char ch;
	if(user[100].account!=0)
	{
		j=user[100].account;
	}
	printf("
	请设置您的卡号:
	 ");
	scanf("%s",user[j].ID);
    printf("
	请设置您的密码:
	 ");
    scanf("%s",user[j].key);
    user[j].account=0;
    printf("卡号:%s 
余额:%4d
",user[j].ID,user[j].account);
	user[1000].account=++j;
	save();
	printf("
	恭喜您开户成功!");
	system("pause");
	printf("	按回车键返回上一级
");
    printf("
");
	system("cls");
	ch=getchar();
	if(ch=='
')
	{
       enter();
	}
}
void tuichu()
{
    printf("	******欢迎下次使用******
");
    exit(0);
}
void denglu()
{
	int i,n,m;
	char  id[20],kw[20];
	printf("		连续输错账号或密码三次,将返回主菜单
");
	for(i=0;i<3;i++)
	{
		printf("请输入登录账号
");
		scanf("%s",id);
		for(k=0;k<NUM-1;k++)
		{
			if(strcmp(id,user[k].ID)==0)
			{
				m=1;
				break;
			}
			else
				m=0;
		}
		if(m==0)
		{
			printf("该账号不存在,剩余输入次数%d
",2-i);
			if((2-i)==0)
			{
				printf("账号输入错误3次,即将返回菜单......
");
				system("pause");
				enter();
			}
		}
		if(m==1)
		{
			printf("请输入登录密码
");
			for(n=0;n<3;n++)
			{
				scanf("%s",kw);
				if(strcmp(kw,user[k].key)==0)
				{
					system("cls");
					enter2();
				}
				else
				{
					printf("密码输入错误,剩余输入次数%d
",2-n);
					if((2-n)==0)
					{
						printf("密码输入错误3次,即将返回菜单......
");
						system("pause");
						enter();
					}
				}
			}
		}
	}
}

void enter2()
{
	int n;
	do
	{
		printf("


");
	
		printf(" *************** A T M 系 统 个 人 界 面 ****************
");
		printf("
******1.******查询
");
		printf("
******2.取款******
");
		printf("
******3.转账******
");
		printf("
******4.存款******
");
		printf("
******5.修改密码******
");
		printf("
******6.返回目录******
");
		scanf("%d",&n);
		switch(n)
		{
		case 1:system("cls");
			search();
			break;
   
		case 2:system("cls");
			withdraw();
			break;
		case 3:system("cls");
			turn();
			break;
		case 4:system("cls");
			deposit();
			break;
		case 5:system("cls");
			xiugai();
			break;
		case 6:system("cls");
			enter();
			break;
		default:printf("	无此操作项
");
			system("pause");
			system("cls");
		}
	}while(n>4&&n<0);
}
//查询余额 
void search()
{
	char ch;
	printf("	您的余额为%d元
",user[k].account);
	system("pause");
    system("cls");
	printf("
");
	ch=getchar();
	if(ch=='
')
	{
		enter2();
	}
}
//取款
void withdraw()
{
	int i,x;
	char a,ch;
    printf(" 			+       您卡号的余额为        +
");
	printf(" 			+       %d元                  +
",user[k].account);
	printf(" 			+    请选择你要提取的金额:    +
");
	printf(" 			+    1: 100元     2:200元     +
");
	printf(" 			+    3.500元      4:1000元    +
");
	printf(" 			+    5:2000元     6:5000元    +
");
	printf(" 			+        7: 自定义金额(不少于100元)        +
");
	scanf("%d",&i);
	if(i==1)   
	{
		x=100;
	}
	else
		if(i==2)
		{
			x=200;
		}
		else
			if(i==3)
			{
				x=500;
			}
			else
				if(i==4)
				{
					x=1000;
				}
				else
					if(i==5)
					{
						x=2000;
					}
					else
						if(i==6)
						{
							x=5000;
						}
						else
							if(i==7)
							{
							printf("	请输入自定义的金额:
	");
							scanf("%d",&x);
							}
		if(x<=user[k].account)
		{
			user[k].account=user[k].account-x;
			printf(" 	您取了%d元钱
",x);
            printf(" 	您的余额为%d元
",user[k].account);
		}
       else 
		   if(x>user[k].account)
		   {
			   printf("	您卡里的余额不足
");
			   printf("	请重新输入提取金额:
");
		   }
		   printf(" 	请选择是否继续取款
");
		   printf(" 	是:Y   否:N

	");
		   scanf("%s",&a);
	if(a=='Y')
	{
		save();
		withdraw();
	}
	else
		if(a=='N')
		{
			save();
			system("pause");
			system("cls");
			printf("


");
		}
		else
		{
			save();
			system("pause");
			system("cls");
			printf("


");
		}
	ch=getchar();
	if(ch=='
')
	{
		system("cls");
		enter2();
	}
}

//存款
void deposit()
{
	int a;
	printf("	请输入存入账户的金额:

	");
	scanf("%d",&a);
	user[k].account=user[k].account+a;
	save();
	printf(" 	您的余额为%d元
",user[k].account);
	system("pause");
	system("cls");
	printf("
");
	enter2();
}
//修改密码
void xiugai()
{
	printf("	请输入新的密码
	");
	scanf("%s",user[k].key);
	save();
	system("pause");
	system("cls");
	printf("
");
	enter2();
}
//转账
void turn()
{
	int a,x;
	char kahao[20];
	printf("	请输入转账卡号:
	");
	scanf("%s",kahao);
	for(a=0;a<NUM-1;a++)
	{
		if(!strcmp(kahao,user[a].ID))
		{
			printf("	卡号正确
");
			break;
		}
	}
	if(strcmp(kahao,user[a].ID))
	{
		printf("	卡号不存在
");
		system("pause");
		turn();
	}
	printf("	请输入转账金额
	");
	scanf("%d",&x);
	if(x>user[k].account)
	{
		printf("	您卡里的余额不足
");
		printf("	请重新输入提取金额:
");
	}
	else
	{
		user[k].account=user[k].account-x;
		user[a].account=user[a].account+x;
		save();
	}
	system("pause");
	system("cls");
	printf("
");
	enter2();
}

#二.运行结果 开户

存款

取款

查询

转账

#三.个人小结 ##psp耗时表 | psp2.1 |任务内容 |计划完成需要的时间 (min)| 实际完成需要的时间 | | ----------|-------------|-------------- | ------ | | Planning| |计划 |10| 20 | | | Estimate |估计这个任务需要多少时间,并规划大致工作步骤 |15| 20 | | | Development| 开发 |120| 480 | | | Analysis| 需求分析(包括学习新技术)| 15| 15 | | | Design Spec| 生成设计文档| 10 |10 | | | Design Review |设计复审| 5 |5 | | | Coding Standard| 代码规范 |5 |3 | | | Design |具体设计| 10 |12 | | | Coding |具体编码 |60| 70 | | | Code Review |代码复审 |5| 7 | | | Test |测试(自我测试,修改代码,提交修改)| 10| 15 | | | Reporting| 报告 |15 |15 | | | Test Report| 计算工作量| 2 |1 | | | Postmortem & Process Improvement Plan| 事后总结,并提出过程改进计划| 3 |3 | |

原文地址:https://www.cnblogs.com/lizhen666/p/14002927.html