问题描述:
打印薪水支票,要求用户输入雇员的名字,每小时的工资和已工作的小时数,如果小时数超过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()