ATM管理系统
一:作业信息
博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478 |
作业目标 | 编写一个简单的ATM机管理系统 |
学号 | 3180701323 |
二:作业要求
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户,销户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)等...
三:代码提交及运行截图
1.源代码
import time
class Admin(object):
admin = "1"
passward = "1"
def printAdminView(self):
print("*******************************************************")
print("* *")
print("* *")
print("* 欢迎登陆此银行 *")
print("* *")
print("* *")
print("* *")
print("*******************************************************")
def printSysFunctionView(self):
print("*******************************************************")
print("* 开户(1) 查询(2) *")
print("* 取款(3) 存款(4) *")
print("* 转账(5) 改密(6) *")
print("* *")
print("* 返回(t) *")
print("* 退出(q) *")
print("* *")
print("* *")
print("*******************************************************")
def adminOption(self):
inputAdmin = input("请输入管理员账号:")
if self.admin != inputAdmin:
print("账号输入有误!!")
return 1
inputPasswd = input("请输入管理员密码:")
if self.passward != inputPasswd:
print("密码输入有误!!")
return 1
#能执行到这里说明账号密码正确
print("操作成功!请稍后……")
time.sleep(2)
return 0
开户
from card import Card
from user import User
import random
import time
class ATM(object):
def __init__(self, allUsers):
self.allusers = allUsers
def createUser(self):
#目标:向用户字典中添加一对键值对(卡号:用户)
name = input("请输入您的姓名:")
idCard = input("请输入您的身份证号码:")
phone = input("请输入您的电话号码:")
preMoney = int(input("请输入预存款金额:"))
if preMoney < 0:
print("预存款输入有误!!开户失败……")
return 1
onePasswd = input("请设置密码:")
#验证密码
if not self.checkPasswd(onePasswd):
print("密码输入错误!!开户失败……")
return 1
#所有需要的信息齐全了
cardStr = self.randomCardId()
card = Card(cardStr, onePasswd, preMoney)
user = User(name, idCard, phone, card)
#存到字典
self.allusers[cardStr] = user
print("开户成功!请牢记卡号(%s)……\n(系统将在 3 秒后自动返回!)" % (cardStr))
time.sleep(3)
查询
def searchUserInfo(self):
cardNum = input("请输入您的卡号:")
user = self.allusers.get(cardNum)
if self.checkFunc(cardNum, user):
return 1
print("账号:%s 余额:%d\n(系统将在 5 秒后自动返回……)" % (user.card.cardId, user.card.cardMoney))
time.sleep(5)
取款
def getMoney(self):
cardNum = input("请输入您的卡号:")
#验证是否存在卡号
user = self.allusers.get(cardNum)
if self.checkFunc(cardNum, user):
return 1
getNum = int(input("请输入取款金额:"))
user.card.cardMoney -= getNum
print("取款金额:%d 账户余额:%d 手续费:%d\n(系统将在 5 秒后自动返回……)" % (getNum, user.card.cardMoney, 0))
time.sleep(5)
存款
def saveMoney(self):
cardNum = input("请输入您的卡号:")
#验证是否存在卡号
user = self.allusers.get(cardNum)
if self.checkFunc(cardNum, user):
return 1
getNum = int(input("请输入存款金额:"))
if getNum < 0:
print("输入有误!!取款失败……")
return 1
user.card.cardMoney += getNum
print("存款金额:%d 账户余额:%d 手续费:%d\n(系统将在 5 秒后自动返回……)" % (getNum, user.card.cardMoney, 0))
time.sleep(5)
转账
def transfer(self):
cardNum = input("请输入您的卡号:")
#验证是否存在卡号
user = self.allusers.get(cardNum)
if self.checkFunc(cardNum, user):
return 1
tranNum = input("请输入转入账号:")
tranUser = self.allusers.get(tranNum)
if not tranUser:
print("该卡号不存在!!查询失败……")
return 1
#判断是否锁定
if tranUser.card.cardLock:
print("该卡已被锁定!!请解锁后重试……")
return 1
#验证密码
if not self.checkPasswd(tranUser.card.cardPasswd):
print("密码输入错误!!该卡已被锁定!!请解锁后重试……")
tranUser.card.cardLock = True
return 1
tranMoney = int(input("请输入转账金额:"))
if tranMoney > user.card.cardMoney:
print("余额不足!!转账失败……")
#开始转账
user.card.cardMoney -= tranMoney
tranUser.card.cardMoney += tranMoney
print("转账成功!转账金额:%d\n(系统将在 5 秒后自动返回……)" % (tranMoney))
time.sleep(5)
销户
def killUser(self):
cardNum = input("请输入您的卡号:")
#验证是否存在卡号
user = self.allusers.get(cardNum)
if self.checkFunc(cardNum, user):
return 1
print("操作成功!请稍候……")
self.allusers.pop(cardNum)
time.sleep(2)
print("该卡号已注销……\n(系统将在 5 秒后自动返回……)")
time.sleep(5)
运行截图
四:个人小结
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 10 | 8 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
Development | 开发 | 100 | 150 |
Analysis | 需求分析(包括学习新技术) | 12 | 6 |
Design Spec | 生成设计文档 | 5 | 5 |
Design Review | 设计复审 | 5 | 5 |
Coding Standard | 代码规范 | 3 | 4 |
Design | 具体设计 | 10 | 12 |
Coding | 具体编码 | 36 | 21 |
Code Review | 代码复审 | 5 | 7 |
Test | 测试(自我测试,修改代码,提交修改) | 10 | 20 |
Reporting | 报告 | 9 | 6 |
Test Report | 测试报告 | 3 | 2 |
Size Measurement | 计算工作量 | 2 | 8 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 3 | 6 |