【黑马程序员】用winform做的简单计算器和Email地址分析器

一.简单计算器。

1.      功能:首先打开程序,出现窗口



输入名字后按确定按钮,出现主窗口


之前输入的名字出现在标题栏,然后输入第一个数和第二个数,点击相应的运算符,点击等于按钮,计算出结果。当输入的不是数字时,会弹出提示框。

2      主窗口源码:

public partial class Form1 : Form
    {
        //将四个运算符号的初始值设置为false
        public bool jia = false;
        public bool jian = false;
        public bool chen= false;
        public bool chu= false;
        public Form1()
        {
            InitializeComponent();
        }
        //主窗口Laod事件
        private void Form1_Load(object sender, EventArgs e)
        {
            //实例化Welcome类
            Welcome wel = new Welcome();
            //打开子窗口
            wel.ShowDialog();
            //声明name字段用来接收子窗口的赋值
            string name = wel.name;
            //将name值赋给主窗口标题
            this.Text = string.Format("{0},您好!", name);
        }

        private void btnDeng_Click(object sender, EventArgs e)
        {
            //定义用来储存两个输入文本框内容的字符串
            string strFirst = txFirst.Text;
            string strSecond = txSecond.Text;
            //定义用来接收输入数字的变量
            decimal First = 0;
            decimal Second = 0;
            //用try/catch检测输入是否错误
            try
            {
                First = Convert.ToDecimal(strFirst);
            }
            catch
            {
                MessageBox.Show("请在第一个文本框总输入数字!");
                return;
            }
            try
            {
                Second = Convert.ToDecimal(strSecond);
            }
            catch
            {
                MessageBox.Show("请在第二个文本框中输入数字!");
                return;
            }
            
            //判断各运算符的状态来决定用那种运算符计算
                if (jia == true)
                {
                    txJieguo.Text = Convert.ToString(First + Second);
                }
                else if (jian == true)
                {
                    txJieguo.Text = Convert.ToString(First - Second);
                }
                else if (chen == true)
                {
                    txJieguo.Text = Convert.ToString(First * Second);
                }
                else
                {
                    txJieguo.Text = Convert.ToString(First / Second);
                }
            
        }

        private void btnPlus_Click(object sender, EventArgs e)
        {
            //当按下+时,+的状态变成true,其他变成false
            jia = true;
            jian = false;
            chen = false;
            chu = false;
        }

        private void btnJian_Click(object sender, EventArgs e)
        {
            //当按下-时,-的状态变成true,其他变成false
            jia = false;
            jian = true;
            chen = false;
            chu = false;
        }

        private void btnCheng_Click(object sender, EventArgs e)
        {
            //当按下*时,*的状态变成true,其他变成false
            jia = false;
            jian = false;
            chen = true;
            chu = false;
        }

        private void btnChu_Click(object sender, EventArgs e)
        {
            //当按下/时,/的状态变成true,其他变成false
            jia = false;
            jian = false;
            chen = false;
            chu = true;
        }  
    }


3.      子窗口源码:

public partial class Welcome : Form
    {
        public string  name
        {
            get;
            set;
        }
        public Welcome()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            name = txName.Text;
            this.Close();
        }
    }

4.      改进的地方。

(1)       现在只能实现四则运算,应该支持更多运算。

(2)       没有实现计算器在计算出结果之后按等于按钮继续在结果上计算的功能。

(3)       代码不够精简。

(4)       应该让结果更精确,保留小数位数更多。

(5)       用户交互不够好,应该采用一般计算器的布局,而不用让用户手动输入

 

一.Email地址分析器

这个程序比计算器简单得多,但涉及到一次读取字符串中的字符并判断,一开始用的foreach循环,由于不知道怎么跳过@字符并且把@后面的值赋给服务提供商变量,后来改用for循环。

1.      功能:

用户输入Email地址,按转换按钮,分别将用户名及服务提供商显示在下面两个文本框中。

2.      源码:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            string Email = txEmail.Text;
            string Name="";
            string Supplier="www.";
            //遍历输入的字符串
            for (int i=0; i < Email.Length; i++)
            {
                //判断当Email[i]==@时,输出Name值
                //并在输出之后遍历剩下的字符串,输出Supplier的值
                if (Email[i].ToString() == "@")
                {
                    txName.Text = Name;
                    //遍历剩下的字符串
                    for (int j=i+1; j < Email.Length; j++)
                    {
                        Supplier = Supplier + Email[j];
                    }
                }
                //如果Email[i]还没有等于@,继续遍历字符串并将值依次加到Name里
                else
                {
                    Name = Name + Email[i];
                }
                
            }
            //输出Supplier的值
            txSupplier.Text = Supplier;
           }

3.      改进

(1)       实现功能比较简单,主要是锻炼遍历字符串并按条件输出字符串的能力。

(2)       用到for嵌套,后面试着精简。

精简方法:将

             //遍历剩下的字符串
                    for (int j=i+1; j < Email.Length; j++)
                    {
                        Supplier = Supplier + Email[j];
                    }
                }
  


改为

Supplier = Email.Substring(i+1);

Substring用于从指定位置,向后截取字符串



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值