⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 计算个人所得税与牛顿迭代法实现的作业源码。
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  a,b,c,sb,xb,re:Single;
  delta:Single;
  s1:String;
  i:integer;
begin
try
  if edit1.Text=''Then edit1.Text:='0';
  if edit2.Text=''Then edit2.Text:='0';
  if edit3.Text=''Then edit3.Text:='0';       //增加的语句
  s1:=Edit1.Text;
  i:=Pos('-',s1);
  if i<>0 Then
    if i>1 Then
       begin
         messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
         edit1.SetFocus;
         exit;
       end

       Else
         if i=1 Then
           begin
               delete(s1,1,i);
               i:=Pos('-',s1);
                  if i<>0 Then
                   begin
                    messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
                    edit1.SetFocus;
                    exit;
                   end;

           end;

   s1:=Edit2.Text;
  i:=Pos('-',s1);
  if i<>0 Then
    if i>1 Then
       begin
         messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
         edit2.SetFocus;
         exit;
       end

       Else
         if i=1 Then
           begin
               delete(s1,1,i);
               i:=Pos('-',s1);
                  if i<>0 Then
                   begin
                    messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
                    edit2.SetFocus;
                    exit;
                   end;

           end;
  s1:=Edit3.Text;
  i:=Pos('-',s1);
  if i<>0 Then
    if i>1 Then
       begin
         messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
         edit3.SetFocus;
         exit;
       end

       Else
         if i=1 Then
           begin
               delete(s1,1,i);
               i:=Pos('-',s1);
                  if i<>0 Then
                   begin
                    messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
                    edit3.SetFocus;
                    exit;
                   end;
                                                        //负号的处理
           end;

  s1:=Edit1.Text;
  i:=Pos('.',s1);
  if i<>0 Then
    if i=1 Then
      begin
      messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
      edit1.SetFocus;
      exit;
      end

        Else if i<>1 Then
          begin
            delete(s1,1,i);
            i:=Pos('.',s1);
            if i<>0 Then
              begin
                messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
                edit1.SetFocus;
                exit;
              end;
          end;
  s1:=Edit2.Text;
  i:=Pos('.',s1);
  if i<>0 Then
    if i=1 Then
      begin
      messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
      edit2.SetFocus;
      exit;
      end

        Else if i<>1 Then
          begin
            delete(s1,1,i);
            i:=Pos('.',s1);
            if i<>0 Then
              begin
                messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
                edit2.SetFocus;
                exit;
              end;
          end;
  s1:=Edit3.Text;
  i:=Pos('.',s1);
  if i<>0 Then
    if i=1 Then
      begin
      messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
      edit3.SetFocus;
      exit;
      end

        Else if i<>1 Then
          begin
            delete(s1,1,i);
            i:=Pos('.',s1);
            if i<>0 Then
              begin
                messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
                edit3.SetFocus;
                exit;                                        //小数点的处理
              end;
          end;
  a:=strtofloat(edit1.Text);
  b:=strtofloat(edit2.Text);
  c:=strtofloat(edit3.Text);
  If a <>0 Then                    //方程有两个根
    begin
      delta:=b*b-4*a*c;
      re:=-b/(2*a);
      if delta>0 Then              //方程有两个实根
        begin
          sb:=Sqrt(delta)/(2*a);
          Label4.Caption:='方程有两个实根:';
          Label5.Caption:=format('X1 =%.4f',[re+sb]);
          Label6.Caption:=format('X2 =%.4f',[re-sb]);
        end
      Else
        if delta=0 Then            //方程有两个实根
          begin
            Label4.Caption:='方程有两个相等实根:';
            Label5.Caption:=format('X1 =X2 =%.4f',[re]);
            Label6.Caption:='';
          end
      Else                         //方程有两个虚根
          begin
            xb:=Sqrt(-delta)/(2*a);
            Label4.Caption:='方程有两个相等虚根:';
            Label5.Caption:=format('X1 =%.4f+%.4fi',[re,xb]);
            Label6.Caption:=format('X1 =%.4f-%.4fi',[re,xb]);
          end;
    end
 Else                               //方程仅有一个根
   if b<>0 Then
     begin
       re:=-b/c;
       Label4.Caption:='方程仅有一个根;';
       Label5.Caption:=format('X =%f',[re]);
       Label6.Caption:='';
     end
   Else                             //方程无意义
     begin
       Label4.Caption:='方程无意义!';
       Label5.Caption:='';
       Label6.Caption:='';
     end;
  except
    showmessage('您输入的数据不合法');
  end;     

end;

  procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);

var l:boolean;
begin
  l:=(key<#8)or(key>#8)and(key<#45)or(key>#46)and(key<#48)or(key>#57);
  if l then
    begin
      key:=#0;
      ShowMessage('不能输入非法字符,请重新输入')
    end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -