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

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

  • 相关阅读:
    Vue之仿百度搜索框
    Vue之交互
    Vue之键盘事件
    Vue之事件冒泡
    Vue之阻止默认行为
    sql注入常用注释符总结
    什么是Git
    Github部署博客
    php笔记
    JavaScript(更新中)
  • 原文地址:https://www.cnblogs.com/lsy1451525172/p/13996626.html
Copyright © 2020-2023  润新知