turtle画一张支票

问题描述:
打印薪水支票,要求用户输入雇员的名字,每小时的工资和已工作的小时数,如果小时数超过40,那么超过40的部分需要支付给雇员1.5倍的时薪。

中心思想是先构建出支票的样子,然后再将所需信息填到支票相应位置

运行截图
在这里插入图片描述

实现并不难,直接上源码吧,注释也比较详细


import turtle

import datetime

money = 0
date = "出票日期(大写)    " + str(datetime.datetime.now().year) + " 年    "\
    + str(datetime.datetime.now().month) + " 月    " + str(datetime.datetime.now().day) + " 日"\
    + "    付款行名称:x x 银行"
verticals = "本支票付款期限十天"
rcvperson = "收款人:" + input("请输入名字:")
hour = float(input("请输入工作小时数:"))
hourmoney = float(input("请输入每小时工资:"))
sendperson = "出票人账号:******"
sd = "亿仟佰十万千百十元角分"
turtle.bgcolor("pink")
turtle.color("black", "gray")


# 处理工资
def intName(hour1, hourmoney1):
    global money
    if hour1 > 40.00:
        money = 40.0* hourmoney1 + (hour1 - 40.0) * 1.5 * hourmoney1
    else:
        money = hour1 * hourmoney1


# 移动画笔
def movepen(a, b):
    turtle.pu()
    turtle.goto(a, b)
    turtle.ht()
    turtle.pd()


# 写字, 三个参数分别是文本、大小、是否加粗
def writecon(n, m, cont, size, bold=0):
    movepen(n, m)
    if bold == 1:
        turtle.write(cont, font=("Arial", size, 'normal', 'bold'))
    else:
        turtle.write(cont, font=("楷体", size, 'normal'))


# 写竖字
def vertical(cont, n=25):
    m = 150
    for i in cont:
        m = m - n
        writecon(-350, m, i, 15)


# 画矩形
def drawrectangle(length, width):
    for i in range(2):
        turtle.fd(length)
        turtle.rt(90)
        turtle.fd(width)
        turtle.rt(90)


# 画小小矩形
def drawlittle():
    movepen(185, 130)
    turtle.fd(180)
    n = 185 - 16.5
    turtle.rt(90)
    for i in range(11):
        n = n + 16.5
        movepen(n, 150)
        turtle.fd(50)
    turtle.lt(90)
    n = 185 - 16.5
    for i in sd:
        n = n + 17
        writecon(n, 130, i, 10)


# 小小矩形中输出金额
def outmoney(money1):
    if money1.find('.') == len(money1) -2:
        money1 = money1 + '0'
    le = 12 - len(money1)
    n = 187 + (le - 1) * 17
    for i in money1:

        if i != '.':
            n = n + 17
            writecon(n, 105, i, 12)



# 写银行名称
writecon(-250, 230, "X X 银 行", 40, 1)
# 写支票
writecon(-10, 240, "支票", 20)

movepen(200, 240)
turtle.write("B", font=('Arial', 15, 'normal', 'underline'))
movepen(215, 240)
turtle.write("G", font=('Arial', 15, 'normal', 'underline'))
writecon(203, 220, "0", 15)
writecon(218, 220, "2", 15)
# 写日期行
writecon(-300, 200, date, 10)
# 写收款人
writecon(-300, 170, rcvperson, 10)
# 写出票人账号
writecon(10, 170, sendperson, 10)
# 画大矩形
movepen(-300, 150)
drawrectangle(666, 50)

# 画小矩形
movepen(-230, 140)
turtle.pu()
turtle.begin_fill()
drawrectangle(400, 30)
turtle.end_fill()
turtle.pd()

# 画小小矩形
movepen(175, 150)
drawlittle()
intName(hour, hourmoney)
money = round(money, 2)
writecon(-170, 115, str(money), 15)

outmoney(str(money))


writecon(-290, 128, "人 民 币", 10)
writecon(-290, 110, "(大写)", 8)
# 写竖字
vertical(verticals)

writecon(-290, 60, "用途__________________", 15)
writecon(-290, 20, "上列款项请从", 15)
writecon(-290, -20, "我账户内支付", 15)
writecon(-290, -60, "出票人签章", 15)
writecon(130, 40, "科目(借)...............", 15)
writecon(130, 0, "对方科目(贷)...........", 15)
writecon(130, -40, "复核         记账", 15)

turtle.pencolor("red")
turtle.pensize(3)
movepen(-120, -20)
drawrectangle(120, 100)
writecon(-110, -50, "四川省", 20, 1)
writecon(-110, -80, "xx公司", 20, 1)
writecon(-110, -110, "xx", 20, 1)

turtle.done()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值