zoukankan      html  css  js  c++  java
  • 信用卡

    需求:

    1、信用卡消费

    2、信用卡提现

    3、信用卡还款

    4、查看信用卡可用余额

    5、打印账单

    实现源码:

    # -*- coding: utf-8 -*-
    
    import calendar, time, sys
    import Login
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    def firstMenu():
        print "请选择:"
        print "1、信用卡消费"
        print "2、信用卡提现"
        print "3、信用卡还款"
        print "4、查看当余额"
        print "5、打印账单"
    
    def listPrice():
        '''计算信用卡总额'''
        his_price = []
        f = file('buy_list.txt')
        for item in f.readlines():
            price = float(item.split()[-1])
            his_price.append(price)
            f.close()
        listPrice = sum(his_price)
        return  listPrice
    
    def shopList():
        '''打印购物list'''
        shopList_dic = {}
        print_dic = {}
        #读取文件的内容写入字典
        f = file('shopList.txt')
        for item in f.readlines():
            num = item.split()[0]
            price = float(item.split()[2])
            shopList_dic[num] = price
            print_dic[num] = item
        #将字典排序,排序后的值为list
        list_sorted = sorted(print_dic.iteritems(), reverse = False)
        #打印字典的值
        for k,v in list_sorted:
            print v,
        f.close()
        #返回值为列表
        return list_sorted
    
    def consumption( ):
        '''信用卡消费'''
        #将接收到的list转换为dict
        shopList_dic = dict(shopList())
        buy_list = []
        price_list = []
        while True:
            buy_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
            input = raw_input("请输入要购买的商品序号:").strip()
            if shopList_dic.has_key(input):
                buy_list.append(shopList_dic[input].split()[1])
                price_list.append(float(shopList_dic[input].split()[-1]))
                while True:
                    input = raw_input( "加入购物车成功,是否继续购物?yes/no
    ").strip()
                    if input == 'yes':
                        break
                    elif input == 'no':
                        print "您购买的商品列表为:"
                        for i in buy_list:
                            print i,price_list[buy_list.index(i)]
                        print "您一共选择了%s件商品,合计%s元!" % (len(buy_list),sum(price_list))
                        #读取之前购物列表清单总价
                        allPrice = listPrice()+ sum(price_list)
                        if quota < allPrice:
                            print "支付失败!您的信用卡额度为%s,您已经使用%s元!" % (quota,listPrice())
                        else:
                            print "购买成功,感谢本次购物!"
                            for i in buy_list:
                                list_str = buy_time + '	' +  i + '	' + '' + ' ' + str(price_list[buy_list.index(i)]) + '
    '
                                f = open("buy_list.txt", 'a')
                                f.write(list_str)
                                f.close()
                        turnBack()
                        sys.exit(1)
                    else:
                        print "输入有误!"
    
            else:
                print "您购买的商品还没有哦,我们会尽快上架!"
    
    def repayments():
        '''信用卡还款'''
        back_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        while True:
            input = raw_input("请输入还款金额:").strip()
            if input.isdigit():
                input = 0 - float(input)
                back_str = back_time + '	' +  '信用卡还款' + '	' + '' + ' ' + str(input) + '
    '
                f = open("buy_list.txt", 'a')
                f.write(back_str)
                f.flush()
                f.close()
                print("还款成功,可用余额为:")
                listPrice()
                break
            else:
                print "请输入有效数字!"
        #返回上级
        turnBack()
    
    def Cash():
        '''信用卡提现'''
        cash_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        while True:
            input = raw_input("请输入提现金额:").strip()
            if input.isdigit():
                only = quota - listPrice()*(1+0.05)
                #print only
                if float(input)%100 == 0 and float(input) < only:
                    cash = float(input)*(1+0.05)
                    cash_str = cash_time + '	' +  '提现%s元' % input + '	' + '' + ' ' + str(cash).split('.')[0] + '
    '
                    f = open("buy_list.txt", 'a')
                    f.write(cash_str)
                    f.flush()
                    f.close()
                    print "提现成功,请您注意查收!"
                    break
                elif float(input)%100 != 0:
                    print "亲,提现只能是整百的哦!"
                elif float(input) > only:
                    print "亲,您的提现超出限额了哦!"
            else:
                print "亲,请输入有效数字!"
        #返回上级
        turnBack()
    
    def TIME():
        '''获取当前月份月初日期和月末日期'''
        day_now = time.localtime()
        #day_begin = '%d-%02d-01' % (day_now.tm_year, day_now.tm_mon)  # 月初肯定是1号
        wday, monthRange = calendar.monthrange(day_now.tm_year, day_now.tm_mon)  # 得到本月的天数 第一返回为月第一日为星期几(0-6), 第二返回为此月天数
        day_end = '%d-%02d-%02d' % (day_now.tm_year, day_now.tm_mon, monthRange)
        #print '月初日期为:',day_begin, '月末日期为:',day_end
        return day_end
    
    def printLitst():
        '''月底打印账单'''
        print "您的信用卡额度为%s,您已经使用%s元!" % (quota,listPrice())
        last_day=TIME().split('-')[-1]
        if now_day == last_day:
            f = file('buy_list.txt')
            buy_list = f.read()
            print "本月账单详情如下:"
            print buy_list
            #将本月账单另存为文件
            list_day = TIME()
            mon_list = '%s_list.txt' % list_day
            y = open(mon_list,'w')
            y.write(buy_list)
            y.close()
            #清空现有账单
            f = open('buy_list.txt' , 'w')
            f.truncate()
            f.close()
            #os.system('> buy_list.txt')
            #cp_cmd = 'cp -r buy_list.txt buy_list`date "+%Y%m%d"`.txt'
            #SystemHelper.run_command(cp_cmd)
    
        else:
            pass
            #print now_day,last_day
    
    def overdue():
        '''逾期未还款'''
        if float(now_day) > 10 and listPrice() > 0:
            overdue_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
            overdue = listPrice()*0.05
            overdue_str = overdue_time + '	' +  '逾期扣息' + '	' + '' + ' ' + str(overdue) + '
    '
            f = open("buy_list.txt", 'a')
            f.write(overdue_str)
            f.flush()
            f.close()
            print '逾期扣息:%s元' % overdue
    
    #主菜单
    def mainList():
        print "welcome!!!"
        firstMenu()
        while True:
            input = raw_input().strip()
            if input == '1':
                print "欢迎使用信用卡消费,以下是购物清单:"
                consumption()
                break
            elif input == '2':
                print "信用卡提现,手续费5%哦!"
                Cash()
                break
            elif input == '3':
                print "亲,终于要还款了!"
                repayments()
                break
            elif input == '4':
                print "您的信用卡额度为%s,您已经使用%s元!" % (quota,listPrice())
                #返回上级
                turnBack()
            elif input == '5':
                f = file('buy_list.txt')
                buy_list = f.read()
                print "本月账单详情如下:"
                print "合计:",listPrice()
                print buy_list
    
                #返回上级
                turnBack()
            else:
                print "输入有误,请重新输入!!"
    
    #返回上级菜单
    def turnBack():
        print "1、返回上级"
        print "2、退出"
        while True:
            input = raw_input("请选择:")
            if input == '1':
                mainList()
            elif input == '2':
                print "谢谢使用!"
                sys.exit(1)
            else:
                print "输入有误,请重新输入!"
    
    
    if __name__ == '__main__':
    
        #信用卡额度为15000
        global quota
        quota = 15000
        now_day = time.strftime('%d',time.localtime(time.time()))
        #now_day = '30'
    
        # 登录验证,验证通过返回值为true
        if Login():
            print "您输入的用户名或密码错误已超3次,信用卡已锁定!!"
        else:
            #月底打印账单
            printLitst()
            #逾期扣款
            overdue()
            #主菜单
            mainList()

     代码执行效果如下:

  • 相关阅读:
    ava.util.Date和java.sql.Date的区别和相互转化
    サファイア奇跡  2
    サファイア奇跡1
    壊れた時計
    レンタルベビー 02
    レンタルベビー 01
    N1语法解说篇 4
    N1语法解说篇 3
    N1语法解说篇 2
    N1语法解说篇 1
  • 原文地址:https://www.cnblogs.com/hulk-1029/p/11050450.html
Copyright © 2011-2022 走看看