有偿求编写代码实现要求

实现一个随机出题(30以内整数加减乘除法的算术题)、判题、打分的小程序
(1)应用tkinter库资源绘制生成图形界面窗口(大小:800600):界面元素包括:若干标签控件Label、若干文本框控件Entry、三个命令按钮控件Button,以及其它个性化所需的、你认为有用的相关控件元素。
(2)标签控件Label、文本框控件Entry元素,功用为:学生姓名的输入与显示、学生学号的输入与显示的载体,以及题号、题目数字、运算符、等号、结果等相关内容输入或显示的载体;三个按钮文本提示内容分别为Button 1->“随机生成试题”、 Button 2-> “提交”、 Button 3-> “查看答案”。
(3)引用随机库资源,通过随机函数产生30以内的随机数,进行加减乘除法题目设计,题目的个数要求10个,且简单的单步运算题目。如:5+8= 、7-3= 、 2
4= 、 5÷2= (除法结果为整数除即可)。
(4)程序流程:

  1. 学生在界面上输入自己的姓名、学号信息;
  2. 点击“随机生成试题”按钮,首先对学生输入的姓名和学号进行判断,经过身份检查之后才可做题(可用字典类型模拟一个数据库,键值对设置为学号和姓名,可提前设定几组姓名学号数据)。如果输入的姓名或学号为空,则需使用messagebox弹出对话框窗口提示“请注意:姓名或学号不能为空”;如学号和姓名已存在于字典之中,可以对应,则自动生成10道简单的加减乘除运算题目;否则,弹出对话框窗口提示“姓名或学号有误,请重新输入!”;
  3. 学生在每个题目对应的文本框中输入对应答案;
  4. 答题结束之后,点击“提交”按钮,页面给出该学生的测试成绩(成绩为百分制);
  5. 最后,可以点击“查看答案”按钮查看本次测试的正确答案。
    【注意:在“提交”按钮按下之前,“查看答案”按钮应该是灰色、不可用的状态才好。或者,如果没做完全部题目就点击“查看答案”按钮,则自动提交现有题目,并显示分数。】
    (5)当点击“提交”按钮时,根据实际答题情况给出成绩,并将本次测试页面的全部基础信息(含:学生信息/题目/结果/成绩等),存入磁盘文件【学生姓名 – 学生学号.txt】;多次运行此程序测试、做题,磁盘文件【学生姓名 – 学生学号.txt】根据测试时间,内容应能顺序记录追加(可正序,也可逆序);【注意:文件中不能只有最后一次的测试信息记录】
    (5)设计窗口中各种元素的布局

题目要求大多太麻烦
参考这个自己先做一下吧
https://www.pythonf.cn/read/152953

import tkinter as tk
import random

window = tk.Tk()
window.geometry('400x400')
window.title('四则运算题生成器')

ysfh = ['+','-','*','/']
# ss表示算式变量,jg表示结果变量,da表示答案变量,sr表示输入变量
ss = tk.StringVar()
ss.set('')
jg = tk.StringVar()
jg.set('')
da = tk.StringVar()
da.set('')
sr = tk.StringVar()
sr.set('')

tk.Label(window,text='算式:',justify=tk.RIGHT,width=80).place(x=5,y=5,width=80,height=20)
tk.Label(window,text='结果:',justify=tk.RIGHT,width=80).place(x=5,y=35,width=80,height=20)
tk.Label(window,text='答案:',justify=tk.RIGHT,width=80).place(x=5,y=65,width=80,height=20)

tk.Label(window,textvariable = ss).place(x=70,y=5)
tk.Label(window,textvariable = jg).place(x=70,y=35)
tk.Label(window,textvariable = da).place(x=70,y=65)

select = tk.IntVar() #Radiobutton单选
tk.Radiobutton(window,text='加法',variable = select,value=0).place(x=50,y=170)
tk.Radiobutton(window,text='减法',variable = select,value=1).place(x=150,y=170)
tk.Radiobutton(window,text='乘法',variable = select,value=2).place(x=50,y=230)
tk.Radiobutton(window,text='除法',variable = select,value=3).place(x=150,y=230)

#评分
scores = tk.IntVar()
scores.set(0)
tk.Label(window,text='目前得分:').place(x=250,y=5)
tk.Label(window,textvariable=scores).place(x=330,y=5)

#Entry对话框
En = tk.Entry(window,width=10,textvariable = sr)
En.place(x=150,y=5)

#检查答案
def fun1():
    b1.config(text='下一题')
    ss.set('')
    jg.set('')
    da.set('')
    sr.set('')
    ans = fun2()
    def fun1_1(temp): #这里要接受来自bind()的变量
        sr_1 = En.get()
        if str(sr_1)==str(ans):
            jg.set('Correct')
            da.set(ans)
            temp = scores.get()
            temp +=1
            scores.set(temp)
        else:
            jg.set('Wrong')
            da.set(ans)
            temp = scores.get()
            temp -=1
            scores.set(temp)
        with open('./Yunsuan.txt','a',encoding='utf-8') as fp:
            temp = '式子: '+ss.get()+sr.get()+'\n'
            fp.write(temp)
    En.bind('<Key-Return>',fun1_1) #Return后跳转到fun1_1

def exit_():
    window.destroy()

b1 = tk.Button(window,text='生成题目',command = fun1)
b1.place(x=60,y=120,width=50,height=20)
b2 = tk.Button(window,text='退出',command = exit_)
b2.place(x=180,y=120,width=50,height=20)

#生成题目
def fun2():
    index = select.get()
    n1 = random.randint(1,100)
    n2 = random.randint(1,100)
    result = 0
    if index==0:
        result = n1+n2
    elif index == 1:
        n1,n2 = max(n1,n2),min(n1,n2)
        result = n1-n2
    elif index == 2:
        result = n1*n2
    elif index == 3:
         if n1 == n2:
             result = 1
         else:
             while n1%n2!=0:
                 n1 = random.randint(1,100)
                 n2 = random.randint(1,100)
                 n1,n2 = max(n1,n2),min(n1,n2)
                 result = int(n1/n2)
    temp = str(n1)+ysfh[index]+str(n2)+' ='
    ss.set(temp)
    return result


window.mainloop()

这题目需求确实不少,估计得花一天时间,我尝试试下

不难,就是有点多

每次10个题的加减乘除题目比例有要求吗

已经写好,可以直接问我