zoukankan      html  css  js  c++  java
  • ATM管理系统

    博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
    作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
    作业目标 能编写一个基本的ATM管理系统
    学号 3180701329
    一.题目要求

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

    (1)开户,销户

    (2)查询账户余额

    (3)存款

    (4)取款

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

    允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写

    二、代码提交与运行截图

    2.1 代码运行

    (1)头文件

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<conio.h>
    

    (2)结构体与全局变量

    struct users
    {
      char name[20];//用户名
      char pass[7];//密码
      int account;//账号
      float money;//余额
    }user[100];
    int count=0;
    int account=10000;
    int find;
    int dFind;
    int isLogout=0;
    

    (3)从文件中读出数据

    void read()
    {	
    	FILE *fp;
    	fp=fopen("baocun.txt", "r");    //打开文件
    	while(feof(fp)==0)
    	{
    		fscanf(fp,"%s%s%d%ld
    ",&user[count].name,&user[count].pass,&user[count].account,&user[count].money);//读入文件
    		count++;
    		account++;
    	}
    	fclose(fp);    //关闭文件
    }
    

    (4)将文件写入文件中

    void write()
    {	
    	FILE *fp;
    	fp=fopen("baocun.txt", "w");    //打开文件
    	fprintf(fp, "%s %s %d %ld
    ",user[count].name,user[count].pass,user[count].account,user[count].money);//写入文件
    	fclose(fp);    //关闭文件
    }
    

    (5)开户

    void regist()
    {
    	int length;
    	char rePass[7];
    	printf("请输入用户名:
    ");
    	//要使用一个字符串接收输入的用户名
    	fflush(stdin);//刷新字符缓冲区
    	gets(user[count].name);//读取字符串,回车结束
    	while(1)
    	{
    		while(1)
    		{
    			printf("请输入密码:
    ");
    			fflush(stdin);//清空输入缓冲区
    			inputPass(user[count].pass);
    			length=strlen(user[count].pass);//计算字符串长度,其返回值是一个整数
    			if(length==6)
    			{
    				break;
    			}
    			else
    			{
    				printf("密码输入有误!请输入6位密码
    ");
    			}
    		}
    		printf("请再次输入密码:
    ");
    		inputPass(rePass);
    		if(strcmp(rePass,user[count].pass)==0)
    		{
    			break;
    		}
    		else
    		{
    			printf("两次密码输入不一致,请重新输入
    ");
    		}
    	}
    	account=account+1;
        user[count].account=account;
    	user[count].money=0;
    	write();
    	printf("注册成功
    ");
    	printf("您的账号为:%d
    ",user[count].account);
    	if(count>=1)
    	{
    		printf("前一个注册的账号为:%d
    ",user[count-1].account);
    	}
    	count++;
    }
    

    (6)销户

    void logout()
    {
    	char confirm;//confirm 确认
    	printf("您正在使用注销功能
    ");
    	printf("%d确认注销?
    ",user[find].account);
    	printf("Y表示确定,其它字符表示取消
    ");
    	scanf("%c",&confirm);
    	if(confirm=='y'||confirm=='Y')
    	{
    		printf("正在注销%d
    ",user[find].account);
    		isLogout=1;
    	}else
    	{
    		printf("取消注销帐号%d,返回服务界面
    ",user[find].account);
    		isLogout=0;
    	}
    }
    

    (7)查询账户余额

    void selectMoney()
    {	
    	printf("您正在使用查询余额功能
    ");
    	printf("您的账户余额为:%lf
    ",user[find].money);
    }
    

    (8)存款

    void saveMoney()
    {
    	int RMB;
    	printf("您正在使用存款功能
    ");
    	printf("请输入存款金额:
    ");
    	scanf("%d",&RMB);
    	user[find].money=user[find].money+RMB;
    	printf("存款成功
    ");
    }
    

    (9)取款

    void getMoney()
    {
    	int RMB;
    	printf("您正在使用取款功能
    ");
    	printf("请输入取款金额:
    ");
    	scanf("%d",&RMB);
    	if(user[find].money>=RMB)
    	{
    		user[find].money=user[find].money-RMB;
    		printf("取款成功
    ");
    	}
    	else
    	{
    			printf("余额不足
    ");
    	}
    }
    

    (10)转账

    void transferMoney()
    {
    	int i,username;//账号
    	int isFind=0;
    	int RMB;//转账金额		
    	printf("您正在使用转账功能
    ");
    	printf("请输入对方的帐号:
    ");
    	scanf("%d",&username);
    	for(i=0;i<count;i++)
    	{
    		if(username==user[i].account)
    		{
    			dFind=i;
    			isFind=1;
    			break;
    		}
    	}
    	if(isFind==1)
    	{
    		printf("请输入转账金额:
    ");
    		scanf("%d,",&RMB);
    		if(user[find].money>=RMB)
    		{
    			user[find].money=user[find].money-RMB;
    			user[dFind].money=user[dFind].money+RMB;
    			printf("转账成功
    ");
    		}
    		else
    		{
    			printf("余额不足
    ");
    		}
    	}
    	else
    	{
    		printf("目标帐号不存在
    ");
    	}
    }
    

    (11)登录

    void login()
    {
    	int zhanghao;
    	int sign=0;
    	int i,j,find;
    	char loginPassword[7];
    	//提示 请输入账号
    	read();
    	printf("请输入帐号:
    ");
    	//获取输入的账号 
    	scanf("%d",&zhanghao);
    	//将输入的账号与用户数组里的每一位用户的帐号进行对比
    	for(i=0;i<count;i++)
    	{
    		if(zhanghao==user[i].account)
    		{
    			sign=1;//将F标记设置为1
    			find=i;
    			break;
    		}
    	}
    	//如果匹配到了,提示请输入密码
    	if(sign==1)
    	{
    	
    		for(j=1;j<=3;j++)
    		{
    			printf("请输入密码:
    ");
    			inputPass(loginPassword);
    			if(strcmp(loginPassword,user[find].pass)==0)
    			{
    					printf("登陆成功
    ");
    					printf("			进入服务界面
    ");
    					service();
    					break;
    			}
    			else
    			{
    				if(j==3)
    				{
    					printf("密码三次输入错误,已锁定
    !");
    					break;
    				}
    				printf("密码错误,请重新输入!
    ");
    			}
    		}
    		
    	}
    	else
    	{
    		printf("账号错误
    ");
    	}
    }
    

    (12)服务界面

    void service()
    {
    	int choise;
    	while(1)
    	{	
    		printf("	1、查询余额	");
    		printf("	2、存款    	");
    		printf("	3、取款    
    ");
    		printf("	4、转账    	");
    		printf("	6、注销    	");
    		printf("	7、退出系统
    ");
    		printf("请选择:");
    		scanf("%d",&choise);
    		switch(choise)
    		{
    			case 1:
    				selectMoney();break;//查询余额
    			case 2:
    				saveMoney();break;//存款
    			case 3:
    				getMoney();break;//取款
    			case 4:
    				transferMoney();break;//转账
    			case 6:
    				logout();
    				if(isLogout==1)
    				{
    					return;//直接结束所处函数
    				}
    				break;//注销
    			case 7:
    				break;return;//退出系统
    			default:
    				printf("您的输入有误,请重新输入!
    ");
    		}
    	}
    }
    
                    printf("				1.用户注册
    ");
    		printf("				2.用户登录
    ");
    		printf("				3.退出系统
    ");
    		printf("				请选择:");
    		scanf("%d",&a);
    		if(a==1)
    		{
    			//执行注册函数
    			regist();
    			//printf("
    
    		执行注册");
    		}
    		else if(a==2)
    		{
    			//执行登录函数
    			login();
    			//printf("
    
    		执行登录");
    		}
    		else if(a==3)
    		{
    			  //quit();
    			printf("执行退出
    ");
    			break;
    		}
    		else
    		{
    			printf("输入有误,请重新输入!");
    		}
    

    (13)主函数

    void main()
    {
    	int a;
    	printf("			欢迎进入ATM银行管理系统
    ");
    	while(1)
    	{
    		printf("				1.用户注册
    ");
    		printf("				2.用户登录
    ");
    		printf("				3.退出系统
    ");
    		printf("				请选择:");
    		scanf("%d",&a);
    		if(a==1)
    		{
    			//执行注册函数
    			regist();
    			//printf("
    
    		执行注册");
    		}
    		else if(a==2)
    		{
    			//执行登录函数
    			login();
    			//printf("
    
    		执行登录");
    		}
    		else if(a==3)
    		{
    			  //quit();
    			printf("执行退出
    ");
    			break;
    		}
    		else
    		{
    			printf("输入有误,请重新输入!");
    		}
    		printf("按任意键继续...
    ");
    		getch();
    	}
    }
    

    2.2 运行截图

    (1)用户信息文件

    (2)查询余额

    (3)存款

    (4)取款

    (5)转账

    (6)开户

    (7)销户

    (8)登录

    (9)退出系统

    三、个人小结

    (1).psp表格

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

    2)当你完成所有工作,你可以把你遇到的问题,如何解决变成经验与大家分享,共同进步

    在这次作业之前,文件的读写对我来说是陌生的,通过这次作业,我基本掌握了文件的读写操作。

  • 相关阅读:
    170829-关于AOP面向切面编程
    170826-关于spring的知识点及练习
    170814-17关于javaweb的知识点
    scrapy之手机app抓包爬虫
    tornado之WebSocket
    Tornado异步(2)
    tornado异步(1)
    爬虫之动态HTML处理(Selenium与PhantomJS )动态页面模拟点击
    爬虫之动态HTML处理(Selenium与PhantomJS )执行 JavaScript 语句
    爬虫之动态HTML处理(Selenium与PhantomJS )网站模拟登录
  • 原文地址:https://www.cnblogs.com/zhangkai1/p/13953053.html
Copyright © 2011-2022 走看看