C#基础之------控制台进程
2014-08-12 22:33
316 查看
/*********************************************************************************
File:C#实现100以内两个数随机数的加减乘除答题系统,带计时功能,分数计算功能。
Date:2014年8月12日
Author:小X
problem:加入线程后,控制台每一秒中刷新一次,显示的时候占用后面的界面,造成排版出现错误。
**********************************************************************************/
显示效果:
(不带进程显示正常)
加入计时功能:
(加入进程之后显示错乱,未找到解决方法)
File:C#实现100以内两个数随机数的加减乘除答题系统,带计时功能,分数计算功能。
Date:2014年8月12日
Author:小X
problem:加入线程后,控制台每一秒中刷新一次,显示的时候占用后面的界面,造成排版出现错误。
**********************************************************************************/
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace CalcuSys { class Program { static int fenshu = 0; static void Main(string[] args) { int i = 0; Console.WriteLine("----------------简单计算测试!-------------------\r\n"); Console.WriteLine("按下任意键开始答题"); StopWatch sw = new StopWatch(); Console.ReadKey(); sw.Start(); while (true) { Calculation(); i++; if (i == 10) { Console.WriteLine(fenshu * 10 + "分"); Console.WriteLine("结束请输入Y,继续测试请输入回车键"); if (Console.ReadLine().ToUpper() == "Y") break; i = 0; fenshu = 0; } } } static void Calculation() { var n = new Random(); int num1 = n.Next(100); //返回一个小于所指定最大值的非负随机数。 int num2 = n.Next(100); int num3 = n.Next(4); string message = "请计算{0}{1}{2}的值"; if (num3 == 0) { Console.WriteLine(string.Format(message, num1, "+", num2)); int res; if (int.TryParse(Console.ReadLine(), out res) && res == num1 + num2) { Console.WriteLine("回答正确!"); fenshu++; } else Console.WriteLine("回答错误!"); } else if (num3 == 1) { Console.WriteLine(string.Format(message, num1, "-", num2)); int res; if (int.TryParse(Console.ReadLine(), out res) && res == num1 - num2) { Console.WriteLine("回答正确!"); fenshu++; } else Console.WriteLine("回答错误!"); } else if (num3 == 2) { Console.WriteLine(string.Format(message, num1, "*", num2)); int res; if (int.TryParse(Console.ReadLine(), out res) && res == num1 * num2) { Console.WriteLine("回答正确!"); fenshu++; } else Console.WriteLine("回答错误!"); } else { Console.WriteLine(string.Format(message, num1, "/", num2)); Console.WriteLine("商为:"); int res; if (int.TryParse(Console.ReadLine(), out res) && res == num1 / num2) { Console.WriteLine("回答正确!"); Console.WriteLine("余为:"); if (int.TryParse(Console.ReadLine(), out res) && res == num1 % num2) { Console.WriteLine("回答正确!"); fenshu++; } else Console.WriteLine("回答错误!"); } else Console.WriteLine("回答错误!"); } } class StopWatch { private int Interval = 1000; //时间间隔,单位毫秒 private int Time = 0; //所显示的时间 public void Start() { Thread timer = new Thread(new ThreadStart(Timer)); //新建一个线程,该线程调用Timer() timer.Start(); //启动线程 Console.CursorVisible = false; //隐藏光标 //Console.ReadKey(true); //等待按任意键退出 //timer.Abort(); //终止线程,用于停止秒表 } private void Timer() { while (true) { Display(); //显示秒表计数 Thread.Sleep(Interval); //等待1秒后再执行Timer()刷新计数 Time++; //秒数加1 } } private void Display() { Console.SetCursorPosition(0, 0); Console.WriteLine("Time:" + Time.ToString()); } } } }
显示效果:
(不带进程显示正常)
加入计时功能:
(加入进程之后显示错乱,未找到解决方法)
欢迎大家一起交流 ,[b]分享程序员励志故事。 幸福的程序员 QQ群: [/b]
相关文章推荐
- C#基础之进程管理
- C#基础 利用所学语句编控制台钢琴
- C#控制台基础 获取电脑上的所有逻辑驱动器的名称,可用空间,总空间
- C#控制台基础 写入txt文本中的内容实现换行
- C#控制台基础 泛型中default的用法,值类型位0,引用类型为null
- C#控制台基础 向arraylist中添加元素,使用foreach输出所有元素
- c# winform 控制台基础程序,冒泡排序法
- C#控制台基础 获取文件大小的函数Length(优化版)
- C#控制台基础 显示指定文件内的所有文件夹和文件的名称及大小
- C#控制台基础 list<int>添加元素并输出实例
- C#基础-控制台介绍(Day2)
- C#基础温习(2):温习控制台程序(二)
- C#基础温习(1):温习控制台程序(一)
- C#控制台基础 在查询硬盘的空间是出现system.IO.IOexception
- C# 控制台程序 不显示在任务栏 只在进程中显示
- C#基础 利用所学语句编控制台钢琴
- C# 控制台程序 不显示在任务栏 只在进程中显示
- c#基础加强版之方法控制流复习-3控制台打印密码
- C#控制台基础 类的实例有两个名字
- C#杀死手动关闭控制台程序,遗留的进程