-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
1

Как написать калькулятор, подобный калькулятору в Windows

04.12.2012, 22:38. Показов 6770. Ответов 18

Студворк — интернет-сервис помощи студентам
нужно сделать так как в майкрософте виндоуз калькулятор чтобы все функции как и там чтобы все было ваот код отредактируйте пож его что там неверно если че и скиньте
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace CalculatorPPPI
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
            CurrentState = state.nonstate;
           
        }
        #region variables
        string buff;//some operanions +-*/
        state CurrentState;//state
        string memory = "";//operations with memory
        string memory2 = "";//tool strip memory operations
        double buff2;
        bool changetxt = true;
        enum state
        {
            substraction,
            addiction,
            multiplication,
            divide,
            nonstate
        }
        #endregion
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)))
            {
                if (e.KeyChar == '.' || e.KeyChar == ',' || e.KeyChar == (char)Keys.Back)
                {
                    if (e.KeyChar == (char)Keys.Back)
                    {
 
                    }
                    else
                        if (textBox1.Text.Contains(",") || textBox1.Text.Contains("."))
                        {
                            e.Handled = true;
                        }
                }
                else
                {
                    e.Handled = true;
                }
            }
        }//запрет на ввод букв(только цифры и знаки)
        private void button16_Click(object sender, EventArgs e)
        {
            vypolnenie();
           /* try
            { 
                if (changetxt ==true)
                    buff2 = double.Parse(textBox1.Text);
                if (CurrentState == state.divide)
                {
                    //CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "/" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) / buff2).ToString();
                }
                if (CurrentState == state.multiplication)
                {
                   // CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "*" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) * buff2).ToString();
                }
                if (CurrentState == state.substraction)
                {
                    //CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "-" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) - buff2).ToString();
                }
                if (CurrentState == state.addiction)
                {
                   // CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "+" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) + buff2).ToString();
                }
                buff = textBox1.Text;
            }
            catch (Exception)
            {
                MessageBox.Show("Try input incorrect data");
            }
            changetxt = false;*/
        }//=
        #region арифметические действия(нажатия не кнопки)
        private void multiplicationButton_Click(object sender, EventArgs e)
        {
            if (CurrentState == state.nonstate)
            {
                CurrentState = state.multiplication;
                buff = textBox1.Text;
                textBox1.Text = "";
                textBox1.Focus();//focus on textbox1 and clear it
            }
        }//умножение
        private void subtractionButton_Click(object sender, EventArgs e)
        {
            if (CurrentState == state.nonstate)
            {
                CurrentState = state.substraction;
                buff = textBox1.Text;
                textBox1.Text = "";
                textBox1.Focus();//focus on textbox1 and clear it
            }
        }//вычитание
        private void divideButton_Click(object sender, EventArgs e)
        {
            if (CurrentState == state.nonstate)
            {
                CurrentState = state.divide;
                buff = textBox1.Text;
                textBox1.Text = "";
                textBox1.Focus();//focus on textbox1 and clear it
            }
        }//деление
        private void additionButton_Click(object sender, EventArgs e)
        {
            if (CurrentState == state.nonstate)
            {
                CurrentState = state.addiction;
                buff = textBox1.Text;
                textBox1.Text = "";
                textBox1.Focus();//focus on textbox1 and clear it
            }
        }//сложение
        private void sqrtButton_Click(object sender, EventArgs e)//извлечение квадратного корня
        {
            try
            {
                if (textBox1.Text.Length > 0)
                {
                    textBox1.Text = Math.Sqrt(double.Parse(textBox1.Text)).ToString();
                }
 
            }
            catch (Exception) { }
        }
        private void percentButton_Click(object sender, EventArgs e)
        {
            try
            {
                textBox1.Text = (1 / double.Parse(textBox1.Text)).ToString();//);
            }
            catch (Exception) { }
        }//1/x
        private void dividedByOneButton_Click(object sender, EventArgs e)
        {
            try
            {
                textBox1.Text = (Math.Pow(double.Parse(textBox1.Text.Replace('.',',')), 2)).ToString();//x^2
            }
            catch (Exception)
            {
                MessageBox.Show("Попытайтесь ввести корректные для\nданной операции данные и повторите", "Калькулятор", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }//x^2
        private void ClearButton_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }//clear
        private void ClearAllButton_Click(object sender, EventArgs e)//reset all
        {
            textBox1.Clear();
            CurrentState = state.nonstate;
            buff = "";
        }
        private void BackspaceButton_Click(object sender, EventArgs e)
        {
            try
            {
                textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
            }
            catch (Exception) { }
        }//-1 symbol
        
        private void button22_Click(object sender, EventArgs e)
        {
            textBox1.Text = memory;
        }//get from memory
        private void копироватьToolStripMenuItem_Click(object sender, EventArgs e)//ctrl+C
        {
            memory2 = textBox1.Text;
        }
        private void вставитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Text = memory2;
        }//ctrl+V
        private void buttonPlusMinus_Click(object sender, EventArgs e)
        {
            try
            {
                textBox1.Text = (double.Parse(textBox1.Text) * (-1)).ToString();
            }
            catch (Exception) { }
        }
        #region numbers
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text += "1";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text += "2";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button3_Click(object sender, EventArgs e)
        {
            textBox1.Text += "3";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Text += "4";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button5_Click(object sender, EventArgs e)
        {
            textBox1.Text += "5";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button6_Click(object sender, EventArgs e)
        {
            textBox1.Text += "6";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button7_Click(object sender, EventArgs e)
        {
            textBox1.Text += "7";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button8_Click(object sender, EventArgs e)
        {
            textBox1.Text += "8";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button9_Click(object sender, EventArgs e)
        {
            textBox1.Text += "9";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void button0_Click(object sender, EventArgs e)
        {
            textBox1.Text += "0";
            textBox1.Focus();
            textBox1.SelectionStart = textBox1.Text.Length;
        }
        private void buttonOEMComma_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.IndexOf(',') == -1)
            {
                textBox1.Text += ",";
                textBox1.Focus();
            }
            
        }
 
        #endregion
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
 
 
 
        #endregion
 
        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
 
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            changetxt = true;
        }
private void vypolnenie()
{
            try
            { 
                if (changetxt ==true)
                    buff2 = double.Parse(textBox1.Text);
                if (CurrentState == state.divide)
                {
                    //CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "/" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) / buff2).ToString();
                }
                if (CurrentState == state.multiplication)
                {
                   // CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "*" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) * buff2).ToString();
                }
                if (CurrentState == state.substraction)
                {
                    //CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "-" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) - buff2).ToString();
                }
                if (CurrentState == state.addiction)
                {
                   // CurrentState = state.nonstate;
 
                    //textBox1.Text = double.Parse(buff).ToString() + "+" + double.Parse(textBox1.Text) + "=";
                    textBox1.Text = (double.Parse(buff) + buff2).ToString();
                }
                buff = textBox1.Text;
            }
            catch (Exception)
            {
                MessageBox.Show("Try input incorrect data");
            }
            changetxt = false;
}
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2012, 22:38
Ответы с готовыми решениями:

Написать калькулятор, подобный калькулятору Windows
Народ срочно нужна помощь!!Горит курсовая я я так и не успел сделать 1 задание из 3.Нужно написать...

Как создать подобный калькулятор
Как создать подобный калькулятор Вот такой

Как создать подобный калькулятор?
Целый день пробую не в какую, пробовал элемент output тоже самое... Вот ссылка :...

Как сделать подобный калькулятор
Здравствуйте, подскажите, может кто видел код подобного калькулятора...

18
Не осилил Linux
267 / 61 / 6
Регистрация: 06.08.2009
Сообщений: 223
05.12.2012, 12:46 2
C#
1
2
3
4
5
6
7
8
9
10
11
 
private void button1_Click
private void button2_Click
private void button3_Click
private void button4_Click
private void button5_Click
private void button6_Click
private void button7_Click
private void button8_Click
private void button9_Click
private void button0_Click

не проще ли, сохранить в свойстве Tag кнопок нужную цифру, и сделать один обработчик для всех кнопок?
0
3 / 3 / 1
Регистрация: 12.05.2010
Сообщений: 27
05.12.2012, 14:57 3
Не проще ли создать отдельные методы для +, -, /, * в отдельном классе и вызвать их в соответствующих кнопках?
0
-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
05.12.2012, 19:35  [ТС] 4
вы мнре помогите чтобы работало все как в калькулятьоре майкрософт
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
06.12.2012, 17:41 5
В этой теме я выкладывал пример калькулятора. Начало в нем положено. Можешь доделать до конца
0
-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
06.12.2012, 18:27  [ТС] 6
а никак нельзя перевести его в 2005 висуал студио помогите пож просто мне нужен графический интерфейс
0
Темная сторона .Net
592 / 489 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
06.12.2012, 18:46 7
Вот тут волшебник
Кликните здесь для просмотра всего текста
0
-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
06.12.2012, 19:03  [ТС] 8
ы\я че то не пойму можете доходчиво обьяснить
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
06.12.2012, 19:16 9
из 2008 студии в 2005 никак не переведешь, только переделывать. (Лично у меня переделывать времени нет)
поставь 2008 экспресс версию и пользуйся
0
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
07.12.2012, 12:10 10
Цитата Сообщение от galexser Посмотреть сообщение
из 2008 студии в 2005 никак не переведешь, только переделывать.
Точно знаю что из 2010 в 2008 можно переделать путем перетаскивания файлов из 2010 в новый проект 2008 и тогда будет работать. Возможно и из 2008 в 2005 также
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
07.12.2012, 13:21 11
IIISpikerIII, возможно
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
07.12.2012, 16:15 12
Цитата Сообщение от tarasman Посмотреть сообщение
а никак нельзя перевести его в 2005 висуал студио помогите пож просто мне нужен графический интерфейс
Если вы имеете ввиду интерфейс калькулятора из Windows 7, то забудьте про студию 2005 года. Калькулятор, да в прочем и вся винда, написаны с использованием WPF. Все анимации при наведении на кнопки и сами стали, все это сделано с помощью WPF. Если хотите написать такой же интерфейс - используйте студию 2010.
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
08.12.2012, 06:23 13
Цитата Сообщение от LostCoast Посмотреть сообщение
Если вы имеете ввиду интерфейс калькулятора из Windows 7, то забудьте про студию 2005 года. Калькулятор, да в прочем и вся винда, написаны с использованием WPF. Все анимации при наведении на кнопки и сами стали, все это сделано с помощью WPF. Если хотите написать такой же интерфейс - используйте студию 2010.
WPF есть и в 2008 и 2005 студии
1
-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
08.12.2012, 10:05  [ТС] 14
ребят поменяйте и добавьте в моем коде как в калькуляторе майкрософт
0
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
08.12.2012, 16:18 15
Цитата Сообщение от galexser Посмотреть сообщение
WPF есть и в 2008 и 2005 студии
странно в 2005 не должно быть, так как в 2005 студии используется framework 2.0, а WPF появился с выходом framework 3.0

Цитата Сообщение от tarasman Посмотреть сообщение
ребят поменяйте и добавьте в моем коде как в калькуляторе майкрософт
5 баллов за просьбу

Не по теме:

Я решил написать свою IDE, вот мой код, добавьте в него код как в vusial studio 2010.

0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
08.12.2012, 16:53 16
Про 2005 я и правда ошибся

Цитата Сообщение от tarasman Посмотреть сообщение
ребят поменяйте и добавьте в моем коде как в калькуляторе майкрософт
у тебя там почти ничего не написано, чтобы поправлять. До виндозного калькулятора тебе еще очень много нужно дописывать
0
-26 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 119
08.12.2012, 17:37  [ТС] 17
ну поправьте и допишите
0
19 / 19 / 5
Регистрация: 24.01.2011
Сообщений: 120
08.12.2012, 18:20 18
Цитата Сообщение от tarasman Посмотреть сообщение
ну поправьте и допишите

Не по теме:


вы анекдот про Неуловимого Джо слышали?

2
tears of ocean
11.07.2013, 07:31 19
private void BtnCLK(object sender, RoutedEventArgs e)
{
result.Text += (string)((Button)sender).Content;
}
Для описания кнопок
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2013, 07:31
Помогаю со студенческими работами здесь

Как написать подобный язык программирования?
Это даже скорее не язык программирования, я реализация типовых функций. Я хочу реализовать грубо...

Создать форму, визуально идентичную калькулятору Windows
Как создать форму визуальноидентичную калькулятору операционной системы Windows и реализовать ввод...

Как добавить к калькулятору скобки
Помогите добавить к калькулятору скобки, вот код C # using System; using...

Добавить 5 кнопок к калькулятору, как это сделать?
Добрый вечер! Возник вопрос. Создал калькулятор. Добавил все необходимые функции. Но надо добавить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru