ATM管理系统


博客班级 AHPU软件工程
作业要求 ATM自助银行管理系统
作业目标 编码实现ATM自助银行服务系统
学号 3180701211

作业目标

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

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

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

代码

头文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
定义结构体和函数
void Transaccount();//转账 
void Menu();	//菜单
void Close_account();	//销户 
void Save_money();//存钱
void Withdraw_money();//取钱 
void Show();	//查询
void Open_account();//开户 
void save(int m);	//存入文件
int read();		//读取文件 

struct Person
{
	char Id_number[20];//身份证号
	char name[10];//姓名
	char password[20];//密码
	char Repassword[20];//再次确认输入的密码 
	float balance;//余额 
}Person[N],P[2];
主函数与菜单
void Menu()
{
	system("color 3F");//设置文字背景颜色 
	printf("******************************************************************
");
	printf("************************欢迎使用ATM管理系统***********************
");
	printf("******************************************************************
");
	printf("------------------------------------------------------------------
");
	printf(":                            1. 开户                            :
");
	printf("------------------------------------------------------------------
");
	printf(":                             2. 销户                            :
");
	printf(":-----------------------------------------------------------------
");
	printf(":                             3.查询用户余额                     :
");
	printf(":-----------------------------------------------------------------
");
	printf(":                             4.存款                             :
");
	printf("------------------------------------------------------------------
");
	printf(":                             5.取款                             :
");
	printf("------------------------------------------------------------------
");
	printf(":                             6.转账                             :
");
	printf("------------------------------------------------------------------
");
	printf(":                             7.退出系统                         :
");
	printf("------------------------------------------------------------------
"); 
	printf("请选择功能:
");
}
 
int main()
{
	int a;
	do
	{
		Menu();
		scanf("%d",&a);
		if(a>8||a<0)
		{
			system("cls");
			printf("输入错误! a
");
			continue;
		}
		system("cls");
		switch(a)
		{
		case 1: 
		      Open_account();// 开户 
	          break;
		case 2: 
		      Close_account();//销户 
			  break;
		case 3: 
		      Show();//查询用户余额 
			  break;
		case 4:  
		      Save_money();//存款 
		      break;
		case 5: 
		      Withdraw_money();//取款 
			  break;
		case 6: 
		      Transaccount();//转账 
			  break;
		case 7: 
		      exit(0);//退出系统 
			  break; 
		}
	
	}while(1);

}
开户
//初始开户
void Open_account()
{
	int x,j,i,k,sum;
	printf("请输入你需要开户的人数:
");
	scanf("%d",&x);
	for(i=0;i<x;i++)
	{
		printf("请输入第%d个开户的身份证号码
",i+1);
		scanf("%s",&Person[i].Id_number);
		for(j=0,sum=0;j<x;j++)	
		{
			for(k=0;k<10;k++)
			{
				if(j!=i&&Person[i].Id_number[k]==Person[j].Id_number[k])
					sum+=0;
				else
					sum+=1;
			}
			if(Person[j+1].Id_number==NULL)
				break;
			while(sum==0)
			{
				system("cls");
				printf("你输入的身份证号重复!请重新输入:
");
				printf("请输入第%d个客户身份证号
",i+1);
				scanf("%s",&Person[i].Id_number);
			for(k=0;k<10;k++)
			{
				if(j!=i&&Person[i].Id_number[k]==Person[j].Id_number[k])
					sum+=0;
				else
					sum+=1;
			}
			if(Person[j+1].Id_number==NULL)
				break;
			}
		}
		printf("请输入第%d个客户姓名
",i+1);
		scanf("%s",&Person[i].name);
		printf("请输入第%d个客户密码
",i+1);
		scanf("%s",&Person[i].password);
		printf("请再次输入第%d个客户密码
",i+1);
		scanf("%s",&Person[i].Repassword);
		printf("请输入第%d个客户的存入余额
",i+1);
		scanf("%f",&Person[i].balance);
		system("cls");
	}
	save(x);
	printf("恭喜!开户完成,请登录!
");
}
销户
void Close_account()	
{
	int i,j,n;
	int m=read(); 
	char password[20],Id_number[20];
		printf("请输入要销户的身份证号:
");
		scanf("%s",Id_number);
		getchar();
		printf("请输入密码:");
		scanf("%s",password);
		getchar();
		for(i=0;i<N;i++)
		{
			if(Person[i].Id_number[0]=='')
				continue;
			if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
			{
				for(j=i;j<i+1;j++)
					Person[j]=P[0];
				printf("客户信息已经销户成功!
");
						save(m);
				return;
			}
		}
		if(i==N)
			printf("没有这位客户的信息!
");

	printf("%s	%s	%f
",Person[i].Id_number,Person[i].name,Person[i].balance);
		save(m);
}
查询
void Show()
{
		int i,j,n;
		int m=read(); 
		char password[20],Id_number[20];
		printf("请输入你要查询的身份证号:
");
		scanf("%s",Id_number);
		getchar();
		printf("请输入密码:");
		scanf("%s",password);
		getchar();
		for(i=0;i<N;i++)
		{
			if(Person[i].Id_number[0]=='')
				continue;
			if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
			{
				printf("%s	%s	%f
",Person[i].Id_number,Person[i].name,Person[i].balance);	
				return;
			}
			else
				printf("你输入的密码错误!
");
		}
		if(i==N)
			printf("没有这位客户的信息!
");

}
存款
void Save_money() 
{
	int i,j,n;
	int m=read(); 
	float sav_mon;
	char password[20],Id_number[20];
		printf("请输入要存款的身份证号:
");
		scanf("%s",Id_number);
		getchar();
		printf("请输入密码:");
		scanf("%s",password);
		getchar();
		for(i=0;i<N;i++)
		{
			if(Person[i].Id_number[0]=='')
				continue;
			if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
			{
				printf("输入要存入的款数:
");
				scanf("%f",&sav_mon);
				Person[i].balance = Person[i].balance + sav_mon; 
				printf("客户已存款成功!
");
						save(m);//储存修改后的数据
				printf("%s	%s	%f
",Person[i].Id_number,Person[i].name,Person[i].balance);
						
				return;
			}
		}
		if(i==N)
			printf("无此客户资料!
");

		save(m);
} 
取款
void Withdraw_money()
{
	int i,j,n;
	int m=read(); 
	float withdraw_mon;
	char password[20],Id_number[20];
		printf("请输入要取款的身份证号:
");
		scanf("%s",Id_number);
		getchar();
		printf("请输入密码:");
		scanf("%s",password);
		getchar();
		for(i=0;i<N;i++)
		{
			if(Person[i].Id_number[0]=='')
				continue;
			if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
			{
				printf("输入要取出的款数:
");
				scanf("%f",&withdraw_mon);
				if(Person[i].balance >= withdraw_mon)
				{ 
					Person[i].balance = Person[i].balance - withdraw_mon; 
					printf("客户已取款成功!
");
						save(m);//储存修改后的数据
				}
				else
					printf("账户余额不足!");
					 
				printf("%s	%s	%f
",Person[i].Id_number,Person[i].name,Person[i].balance);		
				return;
			}
		}
		if(i==N)
			printf("没有这位客户的信息!
");

		save(m);
} 
转账
void  Transaccount()
{
	int i,j,n;
	int m=read(); 
	float trans_mon;
	char password[20],Id_number[20],Id_number2[20];
		printf("请输入要转账的身份证号:
");
		scanf("%s",Id_number);
		getchar();
		printf("请输入密码:");
		scanf("%s",password);
		getchar();
		for(i=0;i<N;i++)
		{
			if (Person[i].Id_number[0]=='')
				continue;
			if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
			{
				printf("登录成功,请输入要转入的身份证号:
");
				scanf("%s",Id_number2);
				getchar();
					for(j=0;j<N;j++)
					{
						if(Person[j].Id_number[0]=='')
							continue;
						if(strcmp(Id_number2,Person[j].Id_number)==0)
						{
						    printf("输入要转账的金额:
");
						    scanf("%f",&trans_mon);
							if(Person[i].balance >= trans_mon)
							{
								Person[i].balance = Person[i].balance - trans_mon; 
								Person[j].balance = Person[j].balance + trans_mon; 
								printf("转账成功!
");
								save(m);
								printf("%s	%s	%f
",Person[i].Id_number,Person[i].name,Person[i].balance);
								printf("%s	%s	%f
",Person[j].Id_number,Person[j].name,Person[j].balance);
							} 
							else
								printf("账户余额不足!");
						}
					}
					if(j==N)
						printf("没有这位转入客户的信息!
");
			}
		}
		if(i==N)
			printf("没有这位客户的信息!
");

		save(m);
}

运行截图

菜单

开户

销户
销户不成功

销户成功

查询

存款

取款

转账

作业小结

(1)psp表格
psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 15 8
Development 开发 250 300
Analysis 需求分析(包括学习新技术) 20 15
Design Spec 生成设计文档 30 40
Design Review 设计复审 5 10
Coding Standard 代码规范 5 7
Design 具体设计 10 12
Coding 具体编码 50 70
Code Review 代码复审 5 7
Test 测试(自我测试,修改代码,提交修改) 60 50
Reporting 报告 20 25
Test Report 测试报告 20 20
Size Measurement 计算工作量 2 1
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 3 3
(2)心得和经验

通过这次作业发现了很多不足,代码也不够完善,后续通过查资料在对此进行相应的完善。

原文地址:https://www.cnblogs.com/lsy1451525172/p/13996626.html