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);
}

运行截图

菜单

ATM管理系统
作业目标

开户

ATM管理系统
作业目标

销户
销户不成功

ATM管理系统
作业目标

销户成功

ATM管理系统
作业目标

查询

ATM管理系统
作业目标

存款

ATM管理系统
作业目标

取款

ATM管理系统
作业目标

转账

ATM管理系统
作业目标

作业小结

(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)心得和经验

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