Python开发柜员机系统

需求:

1、自动控测电脑有没有注册账号

2、注册账号功能

3、登陆账户三次失败,锁定账户,并禁止登陆(每次登陆失败提示还有几次机会)

4、修改密码功能(第一次先输入旧密码,后两次输入相同的新密码,否则报错提示)

5、可以取款,提现、转账,一次性取款存款转账限额一万五 (开发一半)

6、存款手续费3%,提现手续费5%   (未开发)

7、可以预透支金额,限额三万  (还剩一半功能)

8、每月10号为还款日,过期未还,按欠款额5%利息(未开发)

9、还款功能(包括查看欠款金额、还款、还剩计息日) (开发一半)

10、查看个人账户信息(如:用户名、性别、职业、余额) (未开发)

11、查看近三十天账号操作记录(包括登陆次数、取款、存款、转账和操作的时间)  (未开发)

12、登陆需要输入验证码  (未开发)

#所有模块展示

#主程序

cat __init__.py
#!/usr/bin/env python
#coding: utf-8
import login_verify
import select_menu
import modify_passwd
import Operating_funds
import check_account
import sys
if __name__ == ‘__main__‘:
    
    check_account.zc()
    login_verify.login_account()
    while True:
        select_menu.menu_options()
        service = int(raw_input(‘请选择服务类型:‘))
        if service == 1:
            modify_passwd.change_passwd()
        elif service == 2:
            Operating_funds.rmb_operation()
        elif service == 5:
            print ‘Bye‘
            sys.exit()
        else: 
            print ‘你输入的选项不存在,请重新输入‘ 
            print

#自动探测账号和注册账号模块

cat check_account.py
#!/usr/bin/env Python
#coding:utf-8
account_file = ‘f:/accounts_file.txt‘
def zc():
    try:
        f=open(account_file)       
    except:
        
        print ‘检测到你的电脑还没有注册账号,请先注册账号再使用柜员机系统,感谢你对本系统的支持!‘
        
        while True:
            try:
                zh=raw_input(‘请输入你要注册的账号(必须是纯数字,长度为3位):‘)
                a=int(zh)
            except:
                print ‘抱歉,你只能输入数字‘
            else:
                lenzh=len(zh)
                if lenzh!= 3:
                    print ‘你输入的账号长度不对,请重新输入‘
                else:
                        break
                    
        while True:
            try:
                mm1=raw_input(‘请输入你要设置的密码,必须是纯数字,长度为六位:‘)
                mm2=raw_input(‘请再次输入你要设置的,必须是纯数字,长度为六位:‘)
                a=int(mm1)
                a=int(mm2)
            except:
                print ‘抱歉,你只能输入数字‘        
            else:
                lenmm1=len(mm1)
                lenmm2=len(mm2)
                if lenmm1 != 6 and lenmm2 != 6:
                    print ‘你输入的账号长度不对,请重新输入‘
                else:
                    if mm1 != mm2:
                        print ‘你两次输入的新密码不匹配,请重新输入‘
                    else:
                        with open(account_file,‘a‘) as f:
                            f.write(zh + ‘\t‘)
                            f.write(mm2 +‘\n‘)
                        with open(‘f:/‘ + zh + ‘_ye.txt‘,‘w‘) as f:
                            f.write(‘0‘)
                            print ‘恭喜你账号注册成功 ‘
                            break
                                    
    else:
        f.close()

#登陆账号脚本

cat login_verify.py
#!/usr/bin/env Python
#coding:utf-8
def login_account():
    
    #导入需要用的模块
    import time
    import sys
    
    #定义循环次数变量
    last_count = 3
    login_count = 3
    LoginError_conunt = 0
    
    #定义账户文件变量
    accounts_file = ‘f:/accounts_file.txt‘
    accounts_lock = ‘f:/accounts_lock.txt‘
    login_file = ‘f:/login_file.txt‘
    
    #三次输入正确密码的机会
    while LoginError_conunt <  login_count:
        
        #输入账号
        username = raw_input(‘请输入你的账号:‘)
        
        #登陆账号已所告警
        with open(accounts_lock) as f:
            for line in f.readlines(): 
                user = line.strip(‘\n‘)
                if username == user:
                    print "对不起,你的账户已锁定,无法登陆"
                    sys.exit()
                        
        #输入密码            
        password = raw_input(‘请输入你的密码:‘)
        
        #账号密码输入成功
        with open(accounts_file) as f:
            Match_flag = False
            for line in f.readlines():
                user,passwd = line.strip(‘\n‘).split()               
                if username == user and password == passwd:
                    print ‘正在登陆,请稍候‘,
                    for i in xrange(5):  # @UnusedVariable
                        time.sleep(1)
                        print ‘.‘,
                    print 
                    print "login success..."
                    print "Welcome %s login Teller system" % user
                    with open(login_file,‘w‘) as f:
                        f.write(username+‘\t‘)
                        f.write(password)
                    Match_flag = True
                    time.sleep(1)
                    print
        
        #输错密码告警            
        if Match_flag == False:
            last_count -= 1
            LoginError_conunt += 1
            print "你输入账号或密码不正确,请重新输入"
            print ‘你还有%s次机会‘ % last_count
        else:
            break
        
    else:
        #三次输入密码机会用完锁账号
        print "Your account is locked "       
        f=file(accounts_lock,‘ab‘)
        f.write(username+‘\n‘)
        f.close()
        sys.exit()

#选择菜单模块

#select_menu.py
def menu_options():    
    li = [ ‘   1、修改密码‘, ‘   2、资金操作‘, ‘   3、查看个人账号信息‘, ‘   4、查看操作记录‘, ‘   5、退出‘ ]    
    
    #for list in enumerate(li,1):
    for list in li:
        print list 
    print

#更改密码模块

cat modify_passwd.py
#!/usr/bin/env Python
#coding:utf-8
def change_passwd():
    
    #导入常用模块
    import os
    import sys
    
    #旧密码本次新循环变量
    last_count = 3
    Change_count = 3
    ChangeError_conunt = 0
    
    #新密码三次循环变量
    last_new_count = 3
    Change_new_count = 3
    ChangeError_new_conunt = 0
    
    #账户文件变量
    accounts_file = ‘f:/accounts_file.txt‘
    login_file = ‘f:/login_file.txt‘
    new_accounts_file = ‘f:/new_accounts_file.txt‘
    accounts_lock = ‘f:/accounts_lock.txt‘
    
    #三次输入正确旧密码机会
    while ChangeError_conunt <  Change_count:
        
        old_passwd = raw_input(‘请输入你的旧密码:‘)
        Match_flag = False
        with open(login_file) as f:
            for li in f.readlines():
                username,password=li.split()
                if old_passwd == password:
                    Match_flag = True
                    
                    #三次输入正确新密码机会
                    while ChangeError_new_conunt < last_new_count:
                        new1_passwd = raw_input(‘请输入你的新密码:‘)
                        new2_passwd = raw_input(‘请再次输入你的新密码:‘)
                        if new1_passwd == new2_passwd:
                            last_count = 3
                            ChangeError_conunt = 0
                            with open(accounts_file) as f:
                                for line in f.readlines():
                                    new_file = file(new_accounts_file,‘ab‘)
                                    new_file.write(line.replace(password,new2_passwd))
                                new_file.close()
                            os.remove(accounts_file) 
                            os.rename(new_accounts_file, accounts_file)
                            with open(login_file,‘w‘) as f:
                                f.write(username+‘\t‘)
                                f.write(new2_passwd)
                            print ‘passwd: 所有的身份验证令牌已经成功更新。‘                            
                            break 
                                                    
                        else:
                            #新密码输错警告信息输出
                            last_new_count -= 1
                            ChangeError_new_conunt += 1
                            print "抱歉,两次输入的新密码不匹配:"
                            print ‘你还有%s次机会‘ % last_new_count
                            if last_count == 0:
                                print "passwd: 已经超出服务重试的最多次数"
                                sys.exit()
                                
        #旧密码输错警告信息输出                        
        if Match_flag == False:        
            last_count -= 1
            ChangeError_conunt += 1
            print "你输入的旧密码有误,请重新输入:"
            print ‘你还有%s次机会‘ % last_count
        else:
            break
    else:
        #三次输入旧密码机会用完锁账号
        print "你输入的次数过多,账号已锁定"       
        f=file(accounts_lock,‘ab‘)
        f.write(username+‘\n‘)
        f.close()

#资金操作模块

cat Operating_funds.py
#!/usr/bin/env Python
#coding:utf-8
def rmb_operation():
    while True:
        zijin="f:/ye.txt"
        dk=‘f:/dk.txt‘
        yb = 100
        sb = 300
        wb = 500 
        yq = 1000
        lq = 2000
        print ‘‘‘
                1、查看余额                            2、存款
                3、提现                                    4、贷款
                5、还款                                    6、转账
                7、返回首页
        ‘‘‘
        xuan1 = input(‘请选择你要执行的操作:‘)
        def menu():
                print ‘‘‘
                    1、100元                                 2、300元
                    3、500元                                 4、1000元
                    5、2000元                               6、手动输入其它金额
                    7、返回上一页
                ‘‘‘      
        def dk_menu():
            print ‘‘‘
                    1、查看已贷款资金                           2、手动输入贷款金额
                    3、返回上一页
            ‘‘‘   
        def xye():                     
            with open(zijin,‘wb‘) as f:
                f.write(ye)
            print ‘存款完成,你现在的余额为%s元‘ %   ye  
        if xuan1 == 1:
            with open(zijin) as f:
                ye=int(f.readline())              
                print ‘你的账户余额为%d元‘ % ye
        elif xuan1 == 2:
            while True:
                menu()
                chun = input(‘请选择你要存款的额度:‘)
                with open(zijin) as f:
                    ye = int(f.readline()) 
                    if chun == 1:  
                        ye = ye + yb 
                    elif chun == 2:
                        ye = ye + sb 
                    elif chun == 3:
                        ye = ye + wb 
                    elif chun == 4:
                        ye = ye + yq 
                    elif chun == 5:
                        ye = ye + lq              
                    elif chun == 6:
                        sczj = input(‘请输入你要存款的金额:‘)                       
                        ye = ye + sczj
                    else:
                        break
                    ye=str(ye)
                    xye()
        elif xuan1 == 3:
            while True:
                menu()
                chun = input(‘请选择你要存款的额度:‘)
                with open(zijin) as f:
                    ye = int(f.readline()) 
                    if chun == 1:  
                        ye = ye - yb 
                    elif chun == 2:
                        ye = ye - sb 
                    elif chun == 3:
                        ye = ye - wb 
                    elif chun == 4:
                        ye = ye - yq 
                    elif chun == 5:
                        ye = ye - lq              
                    elif chun == 6:
                        sczj = input(‘请输入你要存款的金额:‘)                       
                        ye = ye - sczj
                    else:
                        break
                    ye=str(ye)
                    xye()
                  
        elif xuan1 == 4:
            while True:
                dk_menu()
                dai = input(‘请选择选项:‘)
                if dai == 1:
                    try:
                        f = open(dk)  
                    except:
                        with open(dk) as f:
                            f.write(‘0‘)
                            print ‘你现在的余额为0元‘
                    else:
                        f.close()
                        with open(dk) as f:
                            f = f.readline()
                            print ‘你现在的余额为%s元‘ %    f
                            
                if dai == 2:
                    daikuan = input(‘请选择你要贷款的额度:‘)
                    try:
                        f=open(dk)
                    except:
                        with open(dk,‘w‘) as f:
                            f=f.write(daikuan)
                            print ‘你现在的余额为%s元‘  %    f
                    else:
                        f.close()
                        with open(dk) as f:     
                            dlk = int(f.readline())
                            dlk = dlk + daikuan
                            dlk = str(dlk)
                        with open(dk,‘wb‘) as f:
                            f.write(dlk)                        
                            print ‘你现在的余额为%s元‘  % dlk
                else:
                    break
            
                        
                
        elif xuan1 == 7:
              break       
          
             
rmb_operation()
 
#‘‘‘
#def Check your balance():  #查看余额
#def Withdrawals():  #取款
 #‘‘‘   
    
   # print ‘‘‘
    #‘‘‘
    
    
    
 #   qu=int(raw_input(‘请选择编号提现:‘))
  #  if qu == 1:
        
   # elif qu == 2:
    
    #elif qu == 3:
    
   # elif qu == 4:
    
    #elif qu == 5:
    
    #elif qu == 6:
    
    
#Withdrawals()   
    
#def Transfers():  #转账
       
    
#def Repayment():   #还款

未完、待续...

时间: 2024-12-23 09:34:31

Python开发柜员机系统的相关文章

关于python开发CRM系统

注意本项目是针对培训学校开发简化的CRM CRM简介 CRM全称:customer relationship management 无CRM的痛点 没有CMR的缺点及痛点: 每个销售会通过Excel来统计客户信息,造成信息不能同步和共享 客户信息没有记录和跟进信息 会造成抢单问题 无法统计成单率和报表 没有和客户的沟通记录 客户信息表,唯一的客户端ID 一对多的跟进记录 客户状态,报名和未报名 客户来源分析 学员报名信息 学员可以报多个课程,每个课程的每节课程都有成绩,以及成绩排名 班级信息 将

开源分享:用Python开发的开源博客系统Blog_mini

本博文在51CTO技术博客首发. 开源不易,Python良心之作,真心送给广大朋友,恳请给予支持,不胜感激! 0.Blog_mini送给你们:让每个人都轻松拥有可管理的个人博客 你从未架设过服务器或网站,希望可以接触一下这方面的知识-- 你从未使用过Linux操作系统,希望可以接触一下这方面的知识-- 你是初中生/高中生/大学生,希望能在学业之余锻炼一下自己的IT技能-- 你是Python新手,希望能有一个用Python开发的个人博客-- 你学习Python许久,希望有一个开源的项目可以用来学习

Ubuntu系统下搭建Python开发环境

之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 执行完成后,在shell中输入python3.5,出现如下对话框说明Python3.5更新成功. 2.安装JDK8,在终端中输入如下命令: sudo

Python Django 集成Redis Sentinel(哨兵)集群开发秒杀系统

我们知道秒杀系统最大特点是瞬时高并发.高访问量的系统.我们还要保证它的高可用性.这里我们采用Python Django 集成Redis Sentinel(哨兵)集群开发秒杀系统. Redis Sentinel(哨兵)集群Redis哨兵为Redis集群提供了高可用性.实际上这意味着我们可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis集群部署.可大大提高系统的高可用性. 哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置. 下面是在宏观层面上哨兵模式的功能列表: 监控:

为什么越来越多的企业选择使用Python开发?

近来,Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用.1.简介    Python,是一种面向对象.直译式的计算机程序语言,具有近二十年的发展历史.它包含了一组功能完备的标准库,能够轻松完成很多常见的任务.它的语法简单,与其他大多数程序设计语言使用大括号不同,它使用缩进来定义语句块.    Python支持命令式程序设计.面向对象程序设计.函数式编程.面向侧面的程序设计.范型编程多种编程范式. 2

Window上python开发--4.Django的用户登录模块User

在搭建网站和web的应用程序时,用户的登录和管理是几乎是每个网站都必备的.今天主要从一个实例了解以下django本身自带的user模块.本文并不对user进行扩展. 主要使用原生的模块. 1.User模块基础: 在使用user 之前先import到自己的iew中.相当与我们自己写好的models.只不过这个是系统提供的models. from django.contrib.auth.models import User # 导入user模块 1.1User对象属性 User 对象属性:usern

翻译:打造基于Sublime Text 3的全能python开发环境

原文地址:https://realpython.com/blog/python/setting-up-sublime-text-3-for-full-stack-python-development/ 原文标题:Setting Up Sublime Text 3 for Full Stack Python Development 翻译:打造基于sublime text 3的全能Python开发环境 Sublime Text 3 (ST3) is lightweight, cross-platfo

哪有python开发语言入门教程免费下载?

人工智能时代,如果不想被机器人取代,最应该掌握的是编程.Python作为连续10年最受欢迎的编程语言,不但能开发Google .豆瓣等大型网站,还是人工智能领域的第一语言.那么,我猜你想问哪里有python开发语言入门教程. 千锋Python基础教程:http://pan.baidu.com/s/1qYTZiNE Python课程教学高手晋级视频总目录:http://pan.baidu.com/s/1hrXwY8k Python课程windows知识点:http://pan.baidu.com/

Windows下搭建Python开发环境

一.下载安装Python,地址https://www.python.org/downloads/windows/: 安装包分为3类: web-basedinstaller:需要通过联网完成安装的 executableinstaller:通过可执行文件.exe方式安装(此处以python-3.6.1-amd64.exe为例) embeddablezip file:嵌入式版本,可以集成到其他应用中 具体安装过程不演示 由于上述安装过程中勾选了"Add Python 3.6 to PATH"