您的位置:首页 > 编程语言 > C#

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

2014-08-12 22:33 316 查看
/*********************************************************************************

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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: