python课程设计-银行账户管理系统

  1. 编程实现:(仔细业务之间的包含关系,并完成以下编程需求,要适当提高代码的可复用性。)

  1. 用户:账号(int:系统随机产生8位数字)、姓名(str)、密码(int:6位数字)、地址、存款余额(int)、开户行(银行的名称(str))

  1. 地址:国家(str)、省份(str)、街道(str)、门牌号(str)

  1. 银行:能存储100用户的库(字典)、本银行名称(比如:中国工商银行的昌平支行,str)

  1. 银行业务功能

  1. 添加用户(传入参数:用户的所有信息。返回值:整型值(1:成功,2:用户已存在,3:用户库已满))

  1. 业务逻辑:

  • 先检查该用户的账号在库里是否存在。若不存在则在用户库里添加一个该用户并返回代号1

  • 若存在则返回代号2。另外在添加用户的时候检测用户库是否已注册满,若已满则返回代号3

  1. 存钱(传入值:用户的账号、存取的金额。返回值:布尔类型值)

  1. 业务逻辑:

  • 先根据传入的账号信息查询用户库里是否有该用户。若没有则返回False

  • 若有,则将该用户的金额存进去。

  1. 取钱(传入值:用户的账号,用户密码,取钱金额。返回值:整型值(0:正常,1:账号不存在,2:密码不对,3:钱不够))

  1. 业务逻辑:

  • 先根据账号信息来查询该用户是否存在,若不存在,则返回代号1,

  • 若存在,则继续判断密码是否正确,若不正确,则返回代号2。

  • 若账号密码都正确,则继续判断当前用户的金额是否满足要取出的钱,若不满足,则返回代号3,

  • 若满足,则将该用户的金额减去。

  1. 转账(传入值:转出的账号,转入的账号,转出账号的密码,转出的金额。返回值:0:正常,1:账号不对,2密码不对,3钱不够)

  1. 业务逻辑:

  • 先查询用户库是否存在转出和转入的账号,若不存在则返回代号,1,

  • 若账号都存在则继续判断转出账号的密码是否正确,若不正确,则返回2,

  • 若正确则继续判断要转出的金额是否足够,若不够则返回3,

  • 否则正常转出,转出的账号用户金额要相对应的减少,转入的金额相对应的增加。

  1. 查询账户功能(传入值:账号,账号密码,返回值:空)

  1. 业务逻辑:

  • 先根据账号判断用户库是否存在该用户,若不存在则打印提示信息:该用户不存在。

  • 否则继续判断密码是否正确。若不正确则打印相对应的错误信息。

  • 若账号和密码都正确,则将该用户的信息都打印出来,比如:当前账号:xxxx,密码:xxxxxx,余额:xxxx元,用户居住地址:xxxxxxxxxxxxx,当前账户的开户行:xxxxxxxxxx.

  1. 界面类:在执行该入口程序时,就打印银行业务选择菜单:比如:

  1. 然后就开始处理各种输入操作,直到业务处理完成!


import random
#用户信息
user_list = ['name','password','money','用户居住地址','address']
user_dict = {}

#判断账户是否存在
def decide():
    global user_dict
    global i
    global user_list
    if len(user_dict) <= 100:
        if i not in user_dict:
            print('1.账号信息不存在')
            id()
        else:
            print('2.账号信息已存在')
            password1 = input('请输入您的卡号密码:')
            if password1 != user_dict[i][1]:
                print('密码输入错误,请重新输入')
                decide()
            else:
                return
    else:
        print('3.银行用户库已满')
        exit()
#随机生成卡号
def id():
    global i
    global user_dict
    global user_list
    i = random.randint(10000000, 100000000)
    name = input('为您办理新卡,请输入你的姓名:')
    password = input('请设置密码:')
    money = input('请输入您要存入的金额:')
    address = input('请输入您的居住地址:')
    print(f'为您办理的卡号是:{i},%%%%%%%%%请您记牢%%%%%%%%%%')
    user_list[0] = name
    user_list[1] = password
    user_list[2] = money
    user_list[3] = address
    user_list[4] = "中国XX银行XX支行"

    user_dict[i] = user_list
    print(f'银行卡开户成功,卡号:{i},客户信息:{user_dict[i]}')

    use()
#开户
def user():
    global i
    global user_dict
    global user_list
    i = random.randint(10000000,100000000)
    decide()
    name = input('为您办理新卡,请输入你的姓名:')
    password = input('请设置密码:')
    money = input('请输入您要存入的金额:')
    address = input('请输入您的居住地址:')
    print(f'为您办理的卡号是:{i},%%%%%%%%%请您记牢%%%%%%%%%%')
    user_list[0] = name
    user_list[1] = password
    user_list[2] = money
    user_list[3] = address
    user_list[4] = "中国XX银行XX支行"

    user_dict[i] = user_list
    print(f'银行卡开户成功,卡号:{i},客户信息:{user_dict[i]}')

    use()
#存钱
def save_money():
    global i
    global user_dict
    global user_list
    i = int(input('请输入您要存款的银行卡号:'))
    decide()
    save = int(input('请输入您的存款金额:'))
    user_dict[i][2] = save + int(user_dict[i][2])
    print(f'您当前的余额为:{user_dict[i][2]}')

    use()
#取钱
def cost_money():
    global i
    global user_dict
    global user_list
    i = int(input('请输入您要取款的银行卡号:'))
    decide()
    cost = int(input('请输入您的取款金额:'))
    user_dict[i][2] = int(user_dict[i][2]) - cost
    print(f'您当前的余额为:{user_dict[i][2]}')

    use()
#转账
def enchange():
    global i
    global user_dict
    global user_list
    i = int(input('请输入您要转款的银行卡号:'))
    decide()
    cost = int(input('请输入您的转款金额:'))
    user_dict[i][2] = int(user_dict[i][2]) - cost
    print(f'您当前的余额为:{user_dict[i][2]}')
    i = int(input('请输入您要转款的银行卡号:'))
    decide()
    user_dict[i][2] = cost + int(user_dict[i][2])
    print(f'您当前的余额为:{user_dict[i][2]}')

    use()
#查询
def search():
    global i
    global user_dict
    global user_list
    i = int(input('请输入您要查询的银行卡号:'))
    decide()
    print(f'当前账号:{i},密码:{user_dict[i][1]},余额:{user_dict[i][2]}元,用户居住地址:{user_dict[i][3]},当前账户的开户行:中国XX银行XX支行')

    use()


def use():
    print('****************************************************')
    print('*               中国XX银行XX支行                   *')
    print('*                   账户管理系统                     *')
    print('*                      V1.0                        *')
    print('****************************************************')
    print('                                                    ')
    print('*1.开户                                             *')
    print('*2.存钱                                             *')
    print('*3.取款                                             *')
    print('*4.转账                                             *')
    print('*5.查询                                             *')
    print('*6.Bye                                             *')
    print('****************************************************')
    use = int(input('请输入您要办理的业务:'))
    if use == 1:
        user()
    elif use == 2:
        save_money()
    elif use == 3:
        cost_money()
    elif use == 4:
        enchange()
    elif use == 5:
        search()
    elif use == 6:
        exit()
use()

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目  录 A: 设计目的 3 1.1了解分析方法 3 B: 需求分析 3 1.程序需求及思想 3 2.程序执行命令操作 3 C: 概要设计 3-5 1.程序设计流程图 4 2.程序结构设计说明 5 D:详细设计 5-12 E:程序运行结果................................13-16 F:设计心得.....................................16-17 G:参考文献.......................................17 A、设计目的: 1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2.充分了解和学习数据结构的系统设计和程序编码,对问题的探究与分析,进行更 多的应用与测试。 3.学习设计实现活期储蓄账目管理,并令其方便、简单、快捷的实现其各个部分的 功能。 4.通过这次实验使自己的设计水平有所提高,对数据结构的整体认知程度有所加强 ,锻炼自己思考和设计能力。 B、需求分析: 1.本程序需要先建立结点类模板,然后使用链表的基本操作应用实现各个程序的实现, 头插法先建立链表使之成当前操作数据基础,然后可以使用节点的删除进行储户的销户 ,结点的插入的应用成为程序的开户(注意:建立新的用户要先确认新建的用户号不可以 语之前的用户号码相同, 引起系统错误!本程序应用链表节点的比较改进程序。)。储户的存取也是应用节点的比 较查找之后进行的账户钱数加减。 2.程序的执行命令操作 (1).建立节电类模板,构建链表. (2).输入储户信息. (3).执行各项操作(数据测试) 1.查询储户信息. 2开户. 3储户支取信息查询. 4.储户的程序销户. 5.程序完成. (4).程序退出. C、概要设计: C.1:程序流程图 *程序设计流程图* C.2:结构设计说明 1.本程序主要应用数据结构节点类模板,首先构建节点类模板,在建立已有储户数据中 对头结点(*head)分配动态存储空间,对头结点的邻接点(head- >next)赋初值,循环插入新结点建立储户数据(头插法)。在账号循环插入中进行账号 重复判断。 2.在查找账户的过程中,应用结点下移继续查找,实现账户正确查找应用。 3.在销户过程中,进行结点删除,从而实现储户的销户。 4.在开户过程中,定义新结点,分配新的存储空间,进行结点插入,在账号循环插入中 进行账号重复判断,完成开户过程。 5.在存取记录过程中,应用结点下移进行循环查找账户信息,显示账户信息。 6.主函数测试。 D、详细设计: //活期储蓄帐目管理 #include<iostream> #include<string> using namespace std; template<class T>//构建节点类模板 class Node { public: Node<T> *next;// T 可省指针 string name; T data; long int number; }; template<class T> class SavingList { public: SavingList(){}; Node<T> * CreatSavingList(); void SearchAccount(long int x); Node<T> * DeleteAccount(long int x); Node<T> * InsertAccount(long int x); void Record(long int x,int y); private: Node<T> *head; }; template<class T> //建立已有储户数据 Node<T> * SavingList<T>::CreatSavingList() { head=new Node<T>;//初值 int k=1;//分配动态空间 Node<T> *p,*q; head->next=NULL;// 赋初值 long int number,Number; int data; string name; cout<<"请输入账户号(八位整数): "; cin>>number; Number=number; cout<<"请输入姓名: "; cin>>name; cout<<"请输入账户余额: "; cin>>data; while(number/1e7>=1 && number/1e7<=10) { p=new Node<T>; q=new Node<T>; p->number=number;//节点初值 p->name=name; p->data=data; p->next=head->next;//将p插入连中 head->next=p; cout<<"是否继

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值