首页 > 代码库 > C#基础之------控制台进程

C#基础之------控制台进程

/*********************************************************************************

 

File:C#实现100以内两个数随机数的加减乘除答题系统,带计时功能,分数计算功能。

 

Date:2014年8月12日

 

Author:小X

 

problem:加入线程后,控制台每一秒中刷新一次,显示的时候占用后面的界面,造成排版出现错误。

 

**********************************************************************************/

  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6 using System.Threading;  7   8 namespace CalcuSys  9 { 10     class Program 11     { 12         static int fenshu = 0; 13         static void Main(string[] args) 14         { 15             int i = 0; 16             Console.WriteLine("----------------简单计算测试!-------------------\r\n"); 17             Console.WriteLine("按下任意键开始答题"); 18             StopWatch sw = new StopWatch(); 19             Console.ReadKey(); 20              sw.Start(); 21             while (true) 22             { 23                 Calculation(); 24                 i++; 25                 if (i == 10) 26                 { 27                     Console.WriteLine(fenshu * 10 + ""); 28                     Console.WriteLine("结束请输入Y,继续测试请输入回车键"); 29  30                     if (Console.ReadLine().ToUpper() == "Y") 31                         break; 32                     i = 0; 33                     fenshu = 0; 34                 } 35             } 36         } 37  38         static void Calculation() 39         { 40             var n = new Random(); 41             int num1 = n.Next(100);   //返回一个小于所指定最大值的非负随机数。 42             int num2 = n.Next(100); 43             int num3 = n.Next(4); 44  45             string message = "请计算{0}{1}{2}的值"; 46             if (num3 == 0) 47             { 48                 Console.WriteLine(string.Format(message, num1, "+", num2)); 49                 int res; 50                 if (int.TryParse(Console.ReadLine(), out res) && res == num1 + num2) 51                 { 52                     Console.WriteLine("回答正确!"); 53                     fenshu++; 54                 } 55  56                 else 57                     Console.WriteLine("回答错误!"); 58             } 59             else if (num3 == 1) 60             { 61                 Console.WriteLine(string.Format(message, num1, "-", num2)); 62                 int res; 63                 if (int.TryParse(Console.ReadLine(), out res) && res == num1 - num2) 64                 { 65                     Console.WriteLine("回答正确!"); 66                     fenshu++; 67                 } 68                 else 69                     Console.WriteLine("回答错误!"); 70             } 71             else if (num3 == 2) 72             { 73                 Console.WriteLine(string.Format(message, num1, "*", num2)); 74                 int res; 75                 if (int.TryParse(Console.ReadLine(), out res) && res == num1 * num2) 76                 { 77                     Console.WriteLine("回答正确!"); 78                     fenshu++; 79                 } 80                 else 81                     Console.WriteLine("回答错误!"); 82             } 83             else 84             { 85                 Console.WriteLine(string.Format(message, num1, "/", num2)); 86                 Console.WriteLine("商为:"); 87                 int res; 88                 if (int.TryParse(Console.ReadLine(), out res) && res == num1 / num2) 89                 { 90                     Console.WriteLine("回答正确!"); 91                     Console.WriteLine("余为:"); 92                     if (int.TryParse(Console.ReadLine(), out res) && res == num1 % num2) 93                     { 94                         Console.WriteLine("回答正确!"); 95                         fenshu++; 96                     } 97                     else 98                         Console.WriteLine("回答错误!"); 99                 }100                 else101                     Console.WriteLine("回答错误!");102             }103         }104 105         class StopWatch106         {107             private int Interval = 1000;              //时间间隔,单位毫秒108             private int Time = 0;                        //所显示的时间109             public void Start()110             {111                 Thread timer = new Thread(new ThreadStart(Timer));  //新建一个线程,该线程调用Timer()112                 timer.Start();                               //启动线程113                 Console.CursorVisible = false;   //隐藏光标114                 //Console.ReadKey(true);            //等待按任意键退出115                 //timer.Abort();                              //终止线程,用于停止秒表116             }117             private void Timer()118             {119                 while (true)120                 {121                     Display();                               //显示秒表计数122                     Thread.Sleep(Interval);         //等待1秒后再执行Timer()刷新计数123                     Time++;                                 //秒数加1124                 }125             }126             private void Display()127             {128                 Console.SetCursorPosition(0, 0);129                 Console.WriteLine("Time:" + Time.ToString());130             }131         }132     }133 }

 

显示效果:

                  (不带进程显示正常)

加入计时功能:

 

                (加入进程之后显示错乱,未找到解决方法)

 

 

 

欢迎大家一起交流 ,分享程序员励志故事。   幸福的程序员 QQ群:幸福的程序员