实验6、定时器和随机数 

(1)实验目的

通过该实验,让学生掌握定时器和Random类的使用方法。

(2)实验内容

编写WPF应用程序实现以下功能:定义一个RandomHelp类,该类提供一个静态的GetIntRandomNumber方法,一个静态的GetDoubleRandomNumber方法。

在窗体中让用户指定随机数范围,当用户单击开始按钮时,启动定时器,在定时器事件中调用RandomHelp类中的静态方法生成随机数,并在页面中显示出来。当用户单击停止按钮时,停止定时器,然后用比原字体大一倍的字体显示最后生成的随机数。

(3)验收/测试用例

在主窗体中,让用户指定随机数范围,当用户单击【开始】按钮时,启动定时器,在定时器事件中调用RandomHelp类中的静态方法生成随机数,并在窗体上显示出来。当用户单击【停止】按钮时,停止定时器,然后用比原字体大一号的字体显示最后生成的随机数。

运行结果:

窗体界面:

窗体代码:

<Window x:Class="CSharp_RandomNumber.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:CSharp_RandomNumber"mc:Ignorable="d"Title="RandomNumber" Height="450" Width="800"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="2*"/><ColumnDefinition Width="23*"/></Grid.ColumnDefinitions><GroupBox Header="参数" Margin="26,10,26,272" Grid.ColumnSpan="2"/><GroupBox Header="结果" Margin="26,244,26,21" Grid.ColumnSpan="2"/><Label Content="最小:" HorizontalAlignment="Left" Margin="25,42,0,0" VerticalAlignment="Top" Grid.Column="1"/><Label Content="停时器间隔:" HorizontalAlignment="Left" Margin="25,92,0,0" VerticalAlignment="Top" Grid.Column="1"/><Label Content="最大:" HorizontalAlignment="Left" Margin="313,42,0,0" VerticalAlignment="Top" Grid.Column="1"/><Label x:Name="result" Content="" HorizontalAlignment="Left" Margin="92,264,0,0" VerticalAlignment="Top" Width="447" Height="130" AllowDrop="True" FontSize="30"  VerticalContentAlignment="Center" Grid.Column="1"  /><RadioButton x:Name="shishu" Content="生成随机实数" HorizontalAlignment="Left" Margin="577,104,0,0" VerticalAlignment="Top" Grid.Column="1"/><RadioButton x:Name="zhengshu" Content="生成随机整数" HorizontalAlignment="Left" Margin="577,43,0,0" VerticalAlignment="Top" IsChecked="True" Grid.Column="1"/><TextBox x:Name="min" HorizontalAlignment="Left" Margin="71,46,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Grid.Column="1"/><TextBox x:Name="jiange" HorizontalAlignment="Left" Margin="112,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="367" Grid.Column="1"/><TextBox x:Name="max" HorizontalAlignment="Left" Margin="359,46,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" Grid.Column="1"/><Button x:Name="start" Content="开始" HorizontalAlignment="Left" Margin="71,186,0,0" VerticalAlignment="Top" Width="163" Height="43" Grid.Column="1" Click="start_Click_1"/><Button x:Name="stop" Content="停止" HorizontalAlignment="Left" Margin="419,186,0,0" VerticalAlignment="Top" Width="186" Height="43" Grid.Column="1" Click="stop_Click"/></Grid>
</Window>

操作代码段:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;namespace CSharp_RandomNumber
{/// <summary>/// 作者:杨清源/// 注释:本次实验是河南大学软件学院C#课程的实验六“RandomNumber”/// 完成时间:2022/9/19/// </summary>public partial class MainWindow : Window{RandomHelp random1 = new RandomHelp(); //随机数对象DispatcherTimer timer = new DispatcherTimer(); //计时器对象    //在这里要特别注释到:WPf应用程序取消了timer控件,要使用using System.Windows.Threading;语句调用命名空间。private void Get(object sender, EventArgs e){if (zhengshu .IsChecked == true){int num1 = int.Parse(min.Text); //获得最小值int num2 = int.Parse(max.Text); //获得最大值result.Content = random1.GetIntRandomNUmber(num1, num2).ToString(); //更新随机数}else if (shishu.IsChecked == true){double num1 = double.Parse(min.Text); //获得最小值double num2 = double.Parse(max.Text); //获得最大值result.Content = random1.GetDoubleRandomNumber(num1, num2).ToString(); //更新随机数}//通过if_else语句实现对 “选择了哪一个Radio button”的判断}//在最大值和最小值的textbox里获得随机数范围private void start_Click_1(object sender, RoutedEventArgs e){double time = double.Parse(jiange.Text);//通过“jiange”textbox 获得timer的时间间隔。    //特别的,这里的时间间隔是以毫秒单位timer.Interval = TimeSpan.FromMilliseconds(time);//时间间隔timer.Tick += Get;  //每一轮时间间隔结束执行的事件timer.Start(); //开始计时            }private void stop_Click(object sender, RoutedEventArgs e){timer.Stop(); //停止计时}}class RandomHelp{Random n = new Random();//生成一个random实例public int GetIntRandomNUmber(int num1, int num2){int number = num1 + n.Next(num2 - num1);return number;} //生成int形的随机数npublic double GetDoubleRandomNumber(double num1, double num2){double number = num1 + n.Next((int)(num2 - num1)) + n.NextDouble();return number;} //生成double形的随机数n} //新建一个类,用来实现对不同类型随机数的生成//特别的,我发现如果使用DLL调用来实现这个功能,可能会出现奇怪的系统报错……
}

编写WPF应用程序实现以下功能:定义一个RandomHelp类,该类提供一个静态的GetIntRandomNumber方法,一个静态的GetDoubleRandomNumber方法。相关推荐

  1. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  2. java 删除某一个学生_java编写一个程序,实现功能(定义一个类学生表示学生1. 增加学生2显示 3. 修改 4. 删除5查找某...

    www.mh456.com防采集. 1.Student.java代码如下/** * 2016年5月211312日上午526111:03:22 *  * @author 3306 TODO 建立学生实体 ...

  3. Wpf应用程序进入全屏和退出全屏

    如果做到仅仅全屏即可,只需在loaded函数中添加如下代码: private void Window_Loaded(object sender, RoutedEventArgs e){// 设置全屏 ...

  4. 做一个简单的银行、账户演示程序。 (1)定义一个账户类,包含用户名、密码、余额等属性、存钱、取钱等方法。 (2)定义一个银行类,包含银行名、账户列表等属性,开账户、查账户的功能。账户列表可以使用集

    做一个简单的银行.账户演示程序. (1)定义一个账户类,包含用户名.密码.余额等属性.存钱.取钱等方法. (2)定义一个银行类,包含银行名.账户列表等属性,开账户.查账户的功能.账户列表可以使用集合相 ...

  5. 二手车买卖小程序开发制作功能介绍

    二手车买卖小程序实现商家功能于一体为广大用户提供更全面更精彩的互联网生活. 二手车买卖小程序开发制作主要有: 1.免费发布:免费发布车源信息,不花费一分钱! 2.聊天功能:可直接和买家即时在线沟通,一 ...

  6. python定义一个dog类 类属性有名字_python 基础 12 初识类,类方法,类属性

    python 基础 12 初识类,类方法,类属性 # 面向过程 : 想要一个结果 写代码 实现计算结果 # 面向对象开发 : 有哪些角色 角色的属性和技能 两个角色之间是如何交互的 # 复杂的 拥有开 ...

  7. JAVA创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length)、宽(width)和高(heigth)

    编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w, i ...

  8. 《JAVA》编程创建一个Box类(长方体),在Box类中定义三个变量

    问题:编程创建一个Box类(长方体),在Box类中定义三个变量,分别表示长方体的长(length).宽(width)和高(heigth),再定义一个方法void setBox(int l, int w ...

  9. 编写程序实现以下功能:计算1~n之间的素数并输出

    编写程序实现以下功能:计算1~n之间的素数并输出 本文旨在基于Python3.7编写代码查询1到任意大于1的整数n之间(含n)所有的素数(质数)并输出 基本思路 对于素数,我们从小学所学知识中知道,素 ...

  10. 程序功能:创建打印机类Printer,定义抽象方法Print()。 创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,修改测试类,实现该打印机打印。

    程序功能:创建打印机类Printer,定义抽象方法Print(). 创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,并在各自类中重新print方法,编 ...

最新文章

  1. 吴恩达 deeplearning.ai 新课上线:TensorFlow 移动和 web 端机器学习
  2. Objective-C中的常量
  3. Tomcat 配置WEB虚拟映射 及 配置虚拟主机
  4. 消防信号总线原理_消防报警系统中消防模块分类与用途简介
  5. java 大纲,Java学科学习大纲
  6. 我只是一只碌碌无为的工蚁 : (
  7. macOS卸载Java9及利用Homebrew搭建并配置Java开发环境
  8. SQL Server 查询性能优化——覆盖索引(一)
  9. 选择排序之python实现
  10. 关于戴尔等AC9560 160MHZ 网卡驱动出现感叹号,无法正常使用wifi解决办法之一
  11. Java实现邮件抓取(亲测126,163,新浪都可以抓取到)
  12. java第三课:原生数据类型是用陷阱(pitfall of Primitive Data Type)
  13. #猜数游戏 之心中无女人猜数自然神,你能一次猜对吗?
  14. STM32 软件 I2C Source Files (No Clock Strech)
  15. [论文总结] 森林生态系统中的水生生境
  16. 2021湖南省地区高考成绩排名查询,湖南高考排名查询方法,2021年湖南高考成绩位次全省排名查询...
  17. 值得收藏的北京移动短信代码
  18. Java爬取王者荣耀全英雄全皮肤图片
  19. 网卡属性中的巨帧、巨型帧、Jumbo Frame
  20. srttrail txt无法开机_win10系统如何修复srttrail.txt错误提示 srttrail不能开机的解决方法...

热门文章

  1. java实现excel动态表头导入
  2. laravel7 LogicException Please make sure the PHP Redis extension is installed and enabled
  3. 克隆虚拟机后开机出现device eth0 does not seem to be present delaying initializa错误
  4. matlab x对数坐标,matlab 对数坐标
  5. java 算法,Java的十大算法你掌握好了吗?
  6. ceph pg+down+peering 故障排查与osd误删恢复
  7. C语言实现顺序栈以及栈的特点
  8. 为什么NIO比BIO效率高
  9. w10用计算机卸载,win10电脑卸载系统内置应用软件的简单方法
  10. 深度学习论文: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection及其PyTorch实现