C#计算器程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#计算器程序设计
1)创建项目
①单击文件-》新建-》项目,弹出如下对话框
②模板中选择“windows窗体应用程序”-》名称中输入“jsq”-》位置单击“留了”-》选择“J:\新建文件夹”-》单击确定按钮
2)计算器界面设计
①向Form1中添加1个TextBox控件,1个Label控件和27个Button控件,控件布局如图所示
②修改27个Button控件的Text属性,结果如图
③Label控件的BorderStyle属性选择“Fixed3D”-》Text属性设置为“”-》Form1的Text属性设置为“计算器”-》Backspace控件、CE控件等的ForeColor属性选择“Red”,结果如图:
3)显示窗口数据对齐方式设置
TextBox控件的TextAlign属性选择“Right”;4)数字键程序设计
①双击”0”按钮控件-》编写代码如下:
if (textBox1.Text != "0")//不能连续多个0出现
{
textBox1.Text += "0";//添加“0”数字 }
②双击”1”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "1";
}
else
{
textBox1.Text += "1";//添加“1”数字 }
③双击”2”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "2";
}
else
{
textBox1.Text += "2";//添加“2”数字 }
④双击”3”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "3";
}
else
{
textBox1.Text += "3";//添加“3”数字 }
⑤双击”4”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "4";
}
else
{
textBox1.Text += "4";//添加“4”数字 }
⑥双击”5”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "5";
}
else
{
textBox1.Text += "5";//添加“5”数字 }
⑦双击”6”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "6";
}
else
{
textBox1.Text += "6";//添加“6”数字 }
⑧双击”7”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "7";
}
else
{
textBox1.Text += "7";//添加“7”数字 }
⑨双击”8”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "8";
}
else
{
textBox1.Text += "8";//添加“8”数字
}
⑩双击”9”按钮控件-》编写代码如下:
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "9";
}
else
{
textBox1.Text += "9";//添加“9”数字
}
5)数据窗口数字的输入
数据窗口用的是TextBox控件,要求只能输入数字,不能输入其他字符,也不能粘贴其他字符等。

①屏蔽非数字键
选中TextBox1控件-》属性窗口中选中事件标签-》双击“keypress”事件,添加如下代码:
if ((int)e.KeyChar <= 32) // 特殊键(含空格), 不处理
{
return;
}
if (!char.IsDigit(e.KeyChar)) // 非数字键, 放弃该输入
{
e.Handled = true;
return;
}
如图:
②快捷键 Ctrl+V 粘贴操作
该功能大家自己在网上去查找以后再补充
6)+/-号功能实现
双击” +/-”按钮控件-》编写代码如下:
if (Convert.ToDouble(textBox1.Text) > 0)//如果数据窗口中的数据大于0则添加负号
{
textBox1.Text = "-" + textBox1.Text;//添加负号
}
else if (Convert.ToDouble(textBox1.Text) < 0)//如果数据窗口中的数据小于0则去掉负号
{
textBox1.Text=textBox1.Text.Substring(1);//取子串
}
//如果数据窗口中的数据等于0则不处理
如图所示:
7)“.”号功能实现
小数点的输入只能输入一次,不能输入两次,故要用一个标记“xiaoshudian”判读是否已经输入过了小数点,如果输入过了就不再输入了。

①在前面的“private void button12_Click(object sender, EventArgs e)”函数后面编写代码如下:
bool xiaoshudian = true;//设置小数点是否能用的标记,等于true为可以用,false 为不能用
如图所示:
②双击” .”按钮控件-》编写代码如下:
if (xiaoshudian)//小数点可以,则添加小数点
{
if (textBox1.Text != "")//如果数据窗口不为空
{
textBox1.Text += ".";
}
else//如果数据窗口为空
{
textBox1.Text = "0.";
}
xiaoshudian = false;//设置小数点不可用
}
如图所示:
8)“+”号功能实现
当第一次单击“+”号时,只有一个操作数,不能进行运算,而当第二次或第三次….单击“+”号时,前面已经保存了一个操作数,故此时可以把保存的操作数与当前操作数相加在保存做为第一个操作数,故要用一个标记“diyici”判读是否是第一次单击操作数,如果输入过了就不再输入了。

同时,还要用一个“caozuosh1”来保存第一个操作数。

①在前面的“private void button16_Click(object sender, EventArgs e)”函数后面编写代码如下:
bool diyici = true;//判断是否第一次单击运算符号,是则为true,否则为false double caozuoshu1 = 0;//定义并初始化第一个操作数。

如图所示:
②双击” +”按钮控件-》编写代码如下:
if (diyici)
{
caozuoshu1 = Convert.ToDouble(textBox1.Text);//置操作数1 diyici = false;//置运算符为非第一次单击
}
else
{
caozuoshu1 += Convert.ToDouble(textBox1.Text);//执行加功能 textBox1.Text = caozuoshu1.ToString();//显示结果
}
9)修改数字键功能
编译运行以上程序,当我们单击“+”号后,重新输入数据时,并不能清除数据窗口中保存的数据,而是接着显示我们数据的数据,为此,必须设置一个标记“qingkong”,用于表示当前点击了运算符或等号,下次输入数据时是新数据。

双击“0”键,在函数“private void button8_Click(object sender, EventArgs e)”上面添加一句:
bool qingkong = false;//定义并初始化是否清空数据窗口,true表示要清空,false 表示不清空
如图所示:
①双击“0”键,修改函数中的语句为:
if(qingkong)
{ textBox1.Text = "0"; }
else
{
if (textBox1.Text != "0")//不能连续多个0出现
{
textBox1.Text += "0";//添加“0”数字
}
}
②双击“1”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "1";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0
{
textBox1.Text = "1";
}
else
{
textBox1.Text += "1";//添加“1”数字
}
}
③双击“2”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "2";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "2";
}
else
{
textBox1.Text += "2";//添加“2”数字
}
}
④双击“3”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "3";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "3";
}
else
{
textBox1.Text += "3";//添加“3”数字
}
}
⑤双击“4”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "4";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "4";
}
else
{
textBox1.Text += "4";//添加“4”数字
}
}
⑥双击“5”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "5";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "5";
}
else
{
textBox1.Text += "5";//添加“5”数字
}
}
⑦双击“6”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "6";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "6";
}
else
{
textBox1.Text += "6";//添加“6”数字
}
}
⑧双击“7”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "7";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "7";
}
else
{
textBox1.Text += "7";//添加“7”数字
}
}
⑨双击“8”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "8";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "8";
}
else
{
textBox1.Text += "8";//添加“8”数字
}
}
⑩双击“9”键,修改函数中的语句为:
if (qingkong)
{
qingkong = false;//置不能清空
textBox1.Text = "9";
}
else
{
if (textBox1.Text == "0")//数字前面不能出现多个0 {
textBox1.Text = "9";
}
else
{
textBox1.Text += "9";//添加“9”数字
}
}
10)修改“+”号功能键
双击“+”键,修改函数中的语句为:
if (diyici)
{
caozuoshu1 = Convert.ToDouble(textBox1.Text);//置操作数1 diyici = false;//置运算符为非第一次单击
}
else
{
caozuoshu1 += Convert.ToDouble(textBox1.Text);//执行加功能 textBox1.Text = caozuoshu1.ToString();//显示结果
}
qingkong = true;//下次输入数据时要先清空数据窗口
11)“-”号功能键实现
双击“-”键,添加函数中的语句为:
if (diyici)
{
caozuoshu1 = Convert.ToDouble(textBox1.Text);//置操作数1 diyici = false;//置运算符为非第一次单击
}
else
{
caozuoshu1 -= Convert.ToDouble(textBox1.Text);//执行减功能 textBox1.Text = caozuoshu1.ToString();//显示结果
}
qingkong = true;//下次输入数据时要先清空数据窗口
12)“*”号功能键实现
双击“*”键,添加函数中的语句为:
if (diyici)
{
caozuoshu1 = Convert.ToDouble(textBox1.Text);//置操作数1 diyici = false;//置运算符为非第一次单击
}
else
{
caozuoshu1 *= Convert.ToDouble(textBox1.Text);//执行乘功能 textBox1.Text = caozuoshu1.ToString();//显示结果
}
qingkong = true;//下次输入数据时要先清空数据窗口
13)“/”号功能键实现
除号要考虑当除数为零时出错问题,此时应该能显示“除数不能为零。

”几个字。

同时以后除了”C”键可用之外,其它任何键都变得不可用。

为此,要用一个变量”yichu”表示出现了一出情况,且当”yichu=true”时除了”C”键可用之外,其它任何键都变得不可用。

双击“/”键。

①当前文件的最前面添加如下一句引用:
using System.Runtime.InteropServices;
②函数前面添加2句:
bool yichu = false;//定义并初始化溢出标志
[DllImport("kernel32.dll")]
public static extern bool Beep(int freq,int duration);//调用动态链接库
如图所示:
③函数中添加如下语句为:
if (yichu)//如果出现了溢出现象
{
Beep(800,300); //发出声音
}
else
{
if (diyici)
{
caozuoshu1 = Convert.ToDouble(textBox1.Text);//置操作数1
diyici = false;//置运算符为非第一次单击
}
else if (Convert.ToDouble(textBox1.Text) == 0)//当除数为零时提示
{
textBox1.Text = "除数不能为零。

";
yichu = true;//设置其它键不可用
}
else
{
caozuoshu1 /= Convert.ToDouble(textBox1.Text);//执行除功能
textBox1.Text = caozuoshu1.ToString();//显示结果
}
qingkong = true;//下次输入数据时要先清空数据窗口
}
14)修改除数字键与算术运算符功能
由于除数为零引起的溢出,导致其他键不能用,故前面所有键的功能必须修改。

①双击“0”键,修改函数中的语句为:
if (yichu)//如果出现了溢出现象
{
Beep(800, 300);//发出声音
}
else
{
if (qingkong)
{ textBox1.Text = "0"; }
else
{
if (textBox1.Text != "0")//不能连续多个0出现
{
textBox1.Text += "0";//添加“0”数字
}
}
}
②双击“1”键,修改函数中的语句为:
if (yichu)//如果出现了溢出现象
{
Beep(800, 300);//发出声音
}
else
{
if (qingkong)
{ textBox1.Text = "0"; }
else
{
if (textBox1.Text != "0")//不能连续多个0出现
{
textBox1.Text += "0";//添加“0”数字
}
}
}
③其它键做相似的修改,自己修改就是了。

15)其它功能键的功能自己参照以上实现。

相关文档
最新文档