今天听了老师讲的控制台实现计算机的程序,想起来挺简单但真正实现起来确实挺复杂的。现在把自己写的简单的小程序和大家分享一下,功能不是很全,特别复杂的没有实现。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Computer
{
class Program
{
static void Main(string[] args)
{
while (true)
{
GetDouble();
Console.Clear();
}
}
/// <summary>
/// 固定界面
/// </summary>
/// <param name="str">显示的字符串</param>
public static void Format(string str)
{
//Console.SetWindowSize(33, 21);
//Console.SetBufferSize(50, 21);
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.WriteLine("▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ▁ ▁ ▁ ▁ ▁ ▁ ▁ ▏");
Console.WriteLine("▏ ▕ ▕ ▏");
Console.Write("▏ ▕" );
Console.Write("{0}",str);
WriteAt("▕ ▏", 25, 5);
Console.WriteLine("▏ ▕ ▕ ▏");
Console.WriteLine("▏ ▔▔▔▔▔▔▔▔▔▔ ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ① ② ③ . ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ④ ⑤ ⑥ + ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ⑦ ⑧ ⑨ - ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ 0 = / * ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▏ ▏");
Console.WriteLine("▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔");
}
/// <summary>
/// 固定光标的方法
/// </summary>
/// <param name="a">传入要显示的字符串</param>
/// <param name="i">光标left值</param>
/// <param name="j">光标top值</param>
public static void WriteAt(string a,int i,int j)
{
Console.SetCursorPosition(i,j);
Console.WriteLine(a);
}
/// <summary>
/// 选择要进行操作的+ - * 运算方法
/// </summary>
/// <param name="first">输入的第一个参数</param>
/// <param name="second">输入的第二个参数</param>
/// <param name="choose">选择进行操作的+ - * /</param>
/// <returns></returns>
public static double Type(double first,double second,char choose)
{
double result = 0;
switch (choose)
{
case '+':
result = first + second;
return result;
break;
case '-':
result = first - second;
return result;
break;
case '*':
result = first * second;
return result;
break;
default:
return 0;
break;
}
}
/// <summary>
/// 整数类型的除法运算
/// </summary>
/// <param name="first">输入的第一个参数</param>
/// <param name="second">输入的第二个参数</param>
/// <param name="choose">选择进行操作的运算符</param>
/// <returns></returns>
public static int Type(int first, int second, char choose)
{
int result;
switch(choose)
{
case '/':
result = first / second;
return result;
break;
default:
return 0;
break;
}
}
/// <summary>
/// 从键盘上输入字符方法
/// </summary>
/// <returns></returns>
public static string GetNumber()
{
string tempstring = "";
ConsoleKeyInfo info = new ConsoleKeyInfo();
while (info.Key != ConsoleKey.Enter)
{
Format(tempstring);
info = Console.ReadKey(true);
tempstring = "";
tempstring += info.KeyChar.ToString();
Console.Clear();
//if(info.Key == ConsoleKey.Backspace)
// {
// while (info.Key == ConsoleKey.Backspace)
// {
// //tempstring.Substring(tempstring,1);
// }
// }
// else
// {
// tempstring += info.KeyChar.ToString();
// Console.Clear();
// }
}
return tempstring;
}
/// <summary>
/// 获取结果的方法
/// </summary>
public static void GetDouble()
{
string str1 = GetNumber();
double first =Convert.ToDouble(str1);
Console.WriteLine(first);
Console.Clear();
char choose = Console.ReadKey(true).KeyChar;
if (choose == '/')
{
Console.WriteLine("请确保输入的数字为整型,否则会报错!");
}
Console.WriteLine(choose);
string str2 = GetNumber();
double second = Convert.ToDouble(str2);
Console.WriteLine(second);
Console.Clear();
if (choose == '/')
{
int a = Convert.ToInt32(str1);
int b = Convert.ToInt32(str2);
int result = Type(a, b, choose);
Format(result.ToString());
Console.WriteLine(result.ToString());
}
else
{
string result = Type(first,second,choose).ToString();
Format(result);
Console.WriteLine(result);
}
Console.ReadLine();
}
}
}