优秀作品


# 开发工具下载地址:http://www.finelanguage.com.cn

# 求解一元二次方程


gui = GUI("fine")           # 创建窗口对象

# gui.HideConsoleWindow()   # 隐藏报错窗口

math = MATH()               # 创建数学计算函数对象    


# 设计窗口界面

title  = "求解一元二次方程"    # 窗口标题

size   = [14,8,70,22]          # 窗口尺寸


text1  = ["","text",26,2,20,1]        # 标题


edit1  = ["","edit","f",12,5,8,1]     # 录入x二次方项的系数a

text2  = ["","text",21,5,7,1]         # 填写" x^2 + "

edit2  = ["","edit","f",29,5,8,1]     # 录入x一次方项的系数b

text3  = ["","text",38,5,5,1]         # 填写" x + "

edit3  = ["","edit","f",44,5,8,1]     # 录入常数项c

text4  = ["","text",53,5,5,1]         # 填写 = 0 


button = ["求解|微软雅黑|20|0|200|0","button",12,8,10,1]    # 求解按钮


textbox= ["显示求解结果  ","textbox","N",16,12,30,3]  # 显示求解结果,第三个参数N表示不响应该组件双击事件


list = [title,size,text1,edit1,text2,edit2,text3,edit3,text4,button,textbox]  # 打包窗口元素


gui.Fine(list)   # 创建窗口


# 初始化窗口中的text组件,供四个text组件

gui.SendText(["求解一元二次方程"," x^2 + "," x + "," = 0"])   # 四个字符串对应四个text组件


# 窗口维护

while gui.FineClosed() != -1

{

    PowerDown(3)      # 低功耗设置

    # 检查窗口是否有数据输出,本例中只有“求解”按钮会导致窗口输出数据

    # 如果gui.FineReady() == -1,表明没有数据输出,使用continue指令,强制程序跳转到循环起点

    if gui.FineReady() == -1 {continue}  

    # 如果gui.FineReady() != -1,表明有数据输出,需要读出数据

    # 读出的数据共有4项,x[0]对应按钮编号,本例只有一个按钮“button-0”

    # x[1]、x[2]、x[3]分别对应a、b、c系数

    x = gui.FineRead()    # 读出数据

    # 由于程序只有一个按钮,即,只有一个功能,这里无需判断 x[0]的值(必定等于“button-0”)

    a = x[1]       # 第一个edit组件上的内容

    b = x[2]       # 第二个edit组件上的内容

    c = x[3]       # 第三个edit组件上的内容

    # 解方程

    if a == 0 and b == 0   # 如果系数a和系数b同时为0

    {

        gui.SendTextbox(["FINECLEAR"])        # 清除textbox上的全部内容

        gui.SendTextbox(["该方程无意义!\n"])   # 显示解题结果

    }

    elif a == 0 and b != 0   # 如果系数a和系数b不为0

    {

        result = -c/b

        str1 = sprint("%.2f",result)                  # 将result保留2位小数,并转换为字符串

        str = "该方程只有一个解,x = " + str1 + "\n"   # 拼接字符串,添加换行符

        gui.SendTextbox(["FINECLEAR"])                 # 清除textbox上的全部内容

        gui.SendTextbox([str])      # 显示解题结果

    }

    elif a != 0      # 如果系数a不为0

    {

        delta = b*b - 4*a*c

        if delta < 0

        {

            gui.SendTextbox(["该方程无实数解!\n"])   # 显示解题结果

        }

       elif delta == 0

        {

            result = -b/(2*a)

            str1 = sprint("%.2f",result)                  # 将result保留2位小数,并转换为字符串

            str = "该方程只有一个解,x = " + str1 + "\n"   # 拼接字符串,添加换行符

            gui.SendTextbox([str])      # 显示解题结果

        }

        else

        {

            result1 = (-b + math.sqrt(delta))/(2*a)

            result2 = (-b - math.sqrt(delta))/(2*a)

            str1 = sprint("%.2f",result1)

            str2 = sprint("%.2f",result2)

            str = "x1 = " + str1 + "\n" + "x2 = " + str2 + "\n"

            gui.SendTextbox([str])      # 显示解题结果

        }

     

        box = GUI("box")    # 创建弹窗对象

        box.MessageBox("求解结束,尝试下一题!","确定")       # 创建弹窗

        while box.MessageBoxClosed() != -1 {PowerDown(3)}   # 等待关闭弹窗

        

        gui.SendTextbox(["FINECLEAR"])                 # 清除textbox上的全部内容

        gui.SendEdit(["","",""])                       # 清除三个edit组件上的内容

    }

}

0