个人作业三-ATM管理系统

一、作业信息

作业班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
作业目标 掌握结构化设计语言的设计思想,理解如何运用此类设计思想正确开发一个系统
学号 3180701338

二、题目信息
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户,销户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)等...

三、分模块代码(源代码见附录)
(1)结构体变量

struct Account
{
	char accountnumber[AN];     //表示账号信息
	char password[PN];          //表示账户的密码信息
	double balance;             //表示账户的余额
};//Account结构体变量,定义每个账户的信息

(2)检查用户信息函数

int isCorrect(char *an,char *psd)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(ats[i].accountnumber,an)==0 && strcmp(psd,ats[i].password)==0)
			return 1;
		return 0;
}

(3)显示余额函数

double getBalance(char *an)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			return ats[i].balance;
}

(4)存款函数

void deposit(char *an,int amount)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			ats[i].balance+=amount;
}

(5)取款函数

int withdraw(char *an,int amount)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			ats[i].balance-=amount;
}

四、运行结果截图


五、实验总结
(1)进一步复习了用结构化设计方法开发一个系统的主要步骤;通过这三次书写博客的作业练习逐渐熟悉了使用markdown编辑器写随笔;
这次的程序设计中我还存在部分功能没有实现,对数据结构算法的掌握量不够多,部分需求没有得到实现,在以后的学习中还是要多多练习此类题目。

(2)PSP表格

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

附录(源代码)

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define AN 9          //表示8位账号
#define PN 7          //表示6位密码
#define ASN 5         //表示系统中共有5个账户信息

struct Account
{
	char accountnumber[AN];     //表示账号信息
	char password[PN];          //表示账户的密码信息
	double balance;             //表示账户的余额
};//Account结构体变量,定义每个账户的信息

struct Account ats[ASN]=
{
	{"00000001","123456",100},
	{"00000002","654321",200},
	{"00000003","100899",350},
	{"01100001","456123",400},
	{"01100002","142536",600},
};//ats数组用于存储系统中5个账户的信息

/*判断用户输入信息是否正确*/
int isCorrect(char *an,char *psd)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(ats[i].accountnumber,an)==0 && strcmp(psd,ats[i].password)==0)
			return 1;
		return 0;
}

/*显示余额函数getBalance*/
double getBalance(char *an)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			return ats[i].balance;
}

/*存款函数deposit*/
void deposit(char *an,int amount)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			ats[i].balance+=amount;
}

/*取款函数withdraw*/
int withdraw(char *an,int amount)
{
	int i;
	for(i=0;i<ASN;i++)
		if(strcmp(an,ats[i].accountnumber)==0)
			ats[i].balance-=amount;
}

void main()
{
	char AccountNumber[AN]={'\0'};
	char psd[PN]={'\0'};
	int i,errorcount=0;
	while(1)
	{
		printf("\n请输入8位账号:");
		for(i=0;i<8;i++)
			AccountNumber[i]=getchar();
		printf("\n请输入6位密码:");
		for(i=0;i<6;i++)
		{
			psd[i]=getch();
			putchar('*');   /*保护密码不被显示出来*/
		}
		if(isCorrect(AccountNumber,psd)==1)   /*isCorrect(AccountNumber,psd)==1表示用户输入信息正确*/
		{
			int tag,amount;
			while(1)
			{
				printf("\n欢迎登录银行账户管理系统,请选择您要的服务:1、查询余额;2、存款操作;3、取款操作;4、退出系统\n");
				scanf("%d",&tag);
				switch(tag)
				{
				case 1:printf("您现在的余额为%.2f元\n",getBalance(AccountNumber));
					break;
				case 2:
					printf("请输入您的存款金额:");
					scanf("%d",&amount);
					deposit(AccountNumber,amount);
					printf("存款成功!您的当前余额为:%.2f元\n",getBalance(AccountNumber));
					break;
				case 3:
					printf("请输入您的取款金额:");
					scanf("%d",&amount);
					if(amount<=getBalance(AccountNumber))
					{
						withdraw(AccountNumber,amount);
						printf("取款成功!您的当前余额为:%.2f元\n",getBalance(AccountNumber));
					}
					else
						printf("余额不足,取款失败!\n");
					break;
				case 4:
					printf("退出系统成功!感谢您的使用,欢迎下次光临!\n");
					break;
				}
				if(tag==4)
					break;
			}
			break;
		}
		else
		/*用户输入信息有误时出现提示信息*/
		{
			printf("\n您输入的账号或密码有误!请重新输入!\n");
			errorcount++;
			if(errorcount==3)
			{
				printf("\n您已经连续三次输入错误,系统将自动关闭!\n");
				break;
			}
		}
	}
}

posted @ 2020-11-18 15:30  05620512  阅读(122)  评论(0编辑  收藏  举报