zoukankan      html  css  js  c++  java
  • 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 | |

  • 相关阅读:
    Android仿qq聊天记录长按删除功能效果
    charles工具抓包教程(http跟https)
    瀑布流StaggeredGridView 下拉刷新
    Android微信分享图片大于32k进行压缩
    Android使用TextureView播放视频
    ViewPager+RadioGroup实现标题栏切换,Fragment切换
    android:theme决定AlertDialog的背景颜色
    实现本地音乐选择,播放,带可拖动进度条
    android图片透明度跟缩放大小动画事件
    Android中实现双击事件
  • 原文地址:https://www.cnblogs.com/lizhen666/p/14002927.html
Copyright © 2011-2022 走看看