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

    这个作业属于哪个课程 计算机18级
    这个作业要求在哪里 ATM管理系统
    学号 3180301230

    题目要求

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

    (1)开户,销户

    (2)查询账户余额

    (3)存款

    (4)取款

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

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

    函数说明

    账户结构体

    typedef struct									//定义账户结构体
    {
    	int id;
    	int password;
    	float money;
    }account;
    

    创建账户

    void create(account user[],int n)				//创建账户
    {	
    	user[n].id = user[n - 1].id + 1;			//自动生成用户卡号
    	printf("卡号为:%d
    ", user[n].id);
    	printf("请输入密码:");
    	scanf_s("%d", &user[n].password);
    	user[n].money = 0;							//初始化存款为0;
    }
    

    注销账户

    int cancel(account user[], int n)			    //注销账户
    {
    	int cancelid, cancelpw;
    	printf("请输入需要注销的账号:");
    	scanf_s("%d", &cancelid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == cancelid)				//寻找需要注销的账户
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &cancelpw);		//密码匹配
    				if (user[i].password == cancelpw)
    				{
    					user[i].id = 0;				//重置账户状态
    					user[i].password = 0;
    					user[i].money = 0;
    					printf("销户成功!
    ");
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");				//输错密码提示及反馈
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    

    查询余额

    int query(account user[], int n)				//查询余额
    {
    	int queryid, querypw;
    	printf("请输入需要查询余额的账号:");
    	scanf_s("%d", &queryid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == queryid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &querypw);
    				if (user[i].password == querypw)
    				{
    					printf("账户的余额为:%f
    ", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    

    存款函数

    int save(account user[], int n)				//存款函数
    {
    	int saveid, savepw;
    	printf("请输入需要存款的账号:");
    	scanf_s("%d", &saveid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == saveid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &savepw);
    				if (user[i].password == savepw)
    				{
    					printf("请输入存款数额:
    ");
    					float addmoney;
    					scanf_s("%f", &addmoney);
    					user[i].money += addmoney;				//将存入钱款加入存款中
    					printf("存款成功!,当前余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    

    取款函数

    int draw(account user[], int n)							//取款函数
    {
    	int drawid, drawpw;
    	printf("请输入需要取款的账号:");
    	scanf_s("%d", &drawid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == drawid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &drawpw);
    				if (user[i].password == drawpw)
    				{
    					printf("请输入取款数额:
    ");
    					float addmoney;
    					scanf_s("%f", &addmoney);
    					user[i].money -= addmoney;				//将存款中的取款金额减去
    					printf("取款成功!,当前余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag,1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    

    转存钱款

    int transfer(account user[], int n)							//转存钱款
    {
    	int transferid1, transferid2,transferpw;
    	printf("请输入需要取款的账号:");
    	scanf_s("%d", &transferid1);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == transferid1)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &transferpw);
    				if (user[i].password == transferpw)
    				{
    					printf("请输入所要转入的账户卡号:
    ");
    					scanf_s("%d", &transferid2);
    					printf("请输入转入数额:
    ");
    					float tranmoney;
    					scanf_s("%f", &tranmoney);
    					user[i].money -= tranmoney;
    					for (int k = 0; k <= n + 1; k++)				//寻找被转入账户
    					{
    						if (user[k].id == transferid2)
    						{
    							user[k].money += tranmoney;
    							k = n + 2;
    						}
    					}
    					printf("转钱成功!,当前账户余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    

    主函数

    int main()
    {
    	int n = 1,choose;
    	account user[100];
    	user[0].id = 1000000;				//初始化第一个账户
    	user[0].password = 0;
    	user[0].money = 0;
    	int end = 0;					 //是否结束,0记为不结束
    	do {
    		printf("请选择您需要进行的操作:
    1.开户	2.销户
    3.查询当前余额
    4.存款	5.取款
    6.转账	0.退出
    ");
    		scanf_s("%d", &choose);
    		switch (choose)
    		{
    		case 0:
    			exit(0);
    		case 1:
    			create(user, n); n++; break;
    		case 2:
    			if (cancel(user, n) == 0) {
    				n--; break;			//n相当于指针,此处能让下次开户正常进行
    			}
    			else n++; break;
    		case 3:
    			query(user, n); n++; break;
    		case 4:
    			save(user, n); n++; break;
    		case 5:
    			draw(user, n); n++; break;
    		case 6:
    			transfer(user, n); n++; break;
    		default:
    			break;
    		}printf("请问您是否需要继续进行其他操作?输入1继续进行其他操作,输入0则退出
    ");
    		scanf_s("%d", &end);
    		if (end == 1)system("cls");
    	} while (end);
    }
    

    运行截图

    小结

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

    源码

    #include <iostream>
    #include <vector>
    typedef struct									//定义账户结构体
    {
    	int id;
    	int password;
    	float money;
    }account;
    void create(account user[],int n)				//创建账户
    {	
    	user[n].id = user[n - 1].id + 1;			//自动生成用户卡号
    	printf("卡号为:%d
    ", user[n].id);
    	printf("请输入密码:");
    	scanf_s("%d", &user[n].password);
    	user[n].money = 0;							//初始化存款为0;
    }
    int cancel(account user[], int n)			    //注销账户
    {
    	int cancelid, cancelpw;
    	printf("请输入需要注销的账号:");
    	scanf_s("%d", &cancelid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == cancelid)				//寻找需要注销的账户
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &cancelpw);		//密码匹配
    				if (user[i].password == cancelpw)
    				{
    					user[i].id = 0;				//重置账户状态
    					user[i].password = 0;
    					user[i].money = 0;
    					printf("销户成功!
    ");
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");				//输错密码提示及反馈
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    int query(account user[], int n)				//查询余额
    {
    	int queryid, querypw;
    	printf("请输入需要查询余额的账号:");
    	scanf_s("%d", &queryid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == queryid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &querypw);
    				if (user[i].password == querypw)
    				{
    					printf("账户的余额为:%f
    ", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    int save(account user[], int n)				//存款函数
    {
    	int saveid, savepw;
    	printf("请输入需要存款的账号:");
    	scanf_s("%d", &saveid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == saveid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &savepw);
    				if (user[i].password == savepw)
    				{
    					printf("请输入存款数额:
    ");
    					float addmoney;
    					scanf_s("%f", &addmoney);
    					user[i].money += addmoney;				//将存入钱款加入存款中
    					printf("存款成功!,当前余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    int draw(account user[], int n)							//取款函数
    {
    	int drawid, drawpw;
    	printf("请输入需要取款的账号:");
    	scanf_s("%d", &drawid);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == drawid)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &drawpw);
    				if (user[i].password == drawpw)
    				{
    					printf("请输入取款数额:
    ");
    					float addmoney;
    					scanf_s("%f", &addmoney);
    					user[i].money -= addmoney;				//将存款中的取款金额减去
    					printf("取款成功!,当前余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag,1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    int transfer(account user[], int n)							//转存钱款
    {
    	int transferid1, transferid2,transferpw;
    	printf("请输入需要取款的账号:");
    	scanf_s("%d", &transferid1);
    	for (int i = 0; i <= n + 1; i++)
    	{
    		if (user[i].id == transferid1)
    		{
    			for (int j = 0; j != 1;)
    			{
    				printf("请输入密码:");
    				scanf_s("%d", &transferpw);
    				if (user[i].password == transferpw)
    				{
    					printf("请输入所要转入的账户卡号:
    ");
    					scanf_s("%d", &transferid2);
    					printf("请输入转入数额:
    ");
    					float tranmoney;
    					scanf_s("%f", &tranmoney);
    					user[i].money -= tranmoney;
    					for (int k = 0; k <= n + 1; k++)				//寻找被转入账户
    					{
    						if (user[k].id == transferid2)
    						{
    							user[k].money += tranmoney;
    							k = n + 2;
    						}
    					}
    					printf("转钱成功!,当前账户余额为:%f", user[i].money);
    					return 0;
    				}
    				else
    				{
    					printf("密码错误!
    ");
    					printf("是否重输密码?Y/N
    ");
    					char flag;
    					scanf_s("%c", &flag, 1);
    					if (flag == 'n' || flag == 'N') return 1;
    				}
    			}
    		}
    	}
    }
    int main()
    {
    	int n = 1,choose;
    	account user[100];
    	user[0].id = 1000000;				//初始化第一个账户
    	user[0].password = 0;
    	user[0].money = 0;
    	int end = 0;					 //是否结束,0记为不结束
    	do {
    		printf("请选择您需要进行的操作:
    1.开户	2.销户
    3.查询当前余额
    4.存款	5.取款
    6.转账	0.退出
    ");
    		scanf_s("%d", &choose);
    		switch (choose)
    		{
    		case 0:
    			exit(0);
    		case 1:
    			create(user, n); n++; break;
    		case 2:
    			if (cancel(user, n) == 0) {
    				n--; break;			//n相当于指针,此处能让下次开户正常进行
    			}
    			else n++; break;
    		case 3:
    			query(user, n); n++; break;
    		case 4:
    			save(user, n); n++; break;
    		case 5:
    			draw(user, n); n++; break;
    		case 6:
    			transfer(user, n); n++; break;
    		default:
    			break;
    		}printf("请问您是否需要继续进行其他操作?输入1继续进行其他操作,输入0则退出
    ");
    		scanf_s("%d", &end);
    		if (end == 1)system("cls");
    	} while (end);
    }
    
  • 相关阅读:
    第五周 day5 python学习笔记
    第四周 day4 python学习笔记
    第三周 day3 python学习笔记
    常用屏幕分辨率
    学习可以借鉴的大牛们的网站
    jq动态控制样式的一些方法(批量控制样式,带参数控制样式)
    jq实现事件委托
    h5Css新加的一些新的属性
    css布局模型
    task_13
  • 原文地址:https://www.cnblogs.com/ebym/p/14003166.html
Copyright © 2011-2022 走看看