随机点名系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能:清除listbox中的内容
(6)保存被点名单事件button4_Click(object sender, EventArgs e)
功能:将被点名单写入文件并记录点名时间
2.写文件类
(1)写文件函数WriteData(string filestr,string st)
功能:将点到的学号和被点次数写入文件
三、系统详细设计
(一)数据结构设计
1.本系统采用文件保存点到的学号及其被点次数
2.定义全局变量 n ,num以及名为count的数组分别用来存放班级人数,产生的随机学号以及每个学号被点次数
(二)模块接口设计:
1. 各类的原型为:
public partial class Form1 : Form/*窗体类*/
}
private void button3_Click(object sender, EventArgs e)
{ /*定义“清除”按钮事件*/
this.listBox1.Items.Clear();
result.Clear();
}
}
private void button4_Click(object sender, EventArgs e)
C#课堂随机点名系统
题 目:课堂随机点名系统
班 级:
姓 名:
学 号:
指导教师:朱新峰
成 绩:
2013年12月
一、任务描述
本次任务要求完成一个课堂随机点名系统。具体内容为:教师在每次上课时,有时需要叫学生起来回答问题,为了公平起见,使每个学生被叫起来回答问题的概率相同,故采用c#来编写一个随机点名系统。具体要求如下:
Filestr,
FileMode.Append, /*存在:附加到末尾; 不存在:创建*/
FileAccess.Write,
FileShare.None);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(st);
/*Flush()强制StreamWriter对象sw的所有缓冲数据
using System.Windows.Forms;
using System.Collections;
using System.Timers;
using System.Linq;
namespace dianming
{
public partial class Form1 : Form /*窗体类*/
FileWrite.WriteData(file, s2);/*记录时间*/
for (i = 1; i <= n; i++)
/*将点名的学号和
{ 被点次数写到
test.txt中 */
s1 = i.ToString() + " " + count[i].ToString();
if (i < 10) s1 = "0" + s1;
{
int i,y,m,d;
string s1,s2;
DateTime t = DateTime.Now;
y = t.Year;
m = t.Month;
d = t.Day;
s2 = m.ToString ()+"/"+d.ToString ()+"/"+y.ToString();
String file = @"..\..\LML\test.txt";
醒老师重新点名*/
MessageBox.Show("该名同学已被点过三次,请重新点名!");
}
}
private void timer1_Tick(object sender, EventArgs e)
{ /*定义定时器事件*/
num = r.Next(1, n); /*产生随机学号*/
label1.Text = num.ToString(); /*将数据在界面上显示出来*/
public class FileWrite/*写文件类*/
2.各事件原型为:
public Form1()/*窗体事件*/
private void button1_Click(object sender, EventArgs e)
/*“开始”按钮事件*/
timer1_Tick(object sender, EventArgs e)/*定时器事件*/
写入所基于的文件流, 同时清对象sw的所有缓冲数据*/
sw.Flush()
/*关闭当前StreamWriter对象sw和所基于的FileStream对象*/
sw.Close();
fs.Close();
}
}
}
FileWrite.WriteData(file, s1);
}
}
}
public class FileWrite /*定义写文件类*/
{
public static void WriteData(string filestr,string st)
{ /*定义写文件函数*/
FileStream fs = new FileStream(
(3)定时器事件timer1_Tick(object sender, EventArgs e)
功能:产生随机学号并将数据在界面上显示出来
(4)被点名单按钮事件button2_Click(object sender, EventArgs e)
功能:显示和隐藏listbox
(5)清除按钮事件button3_Click(object sender, EventArgs e)
附录(源程序)
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
timer1.Stop(); /*开始时定时器是停止的*/
int i;
for (i = 0; i < 31; i++) /*初始化点名次数*/
count[i] = 0;
}
private void button1_Click(object sender, EventArgs e)
{ /*定义“开始”按钮事件*/
{
bool first_click = true; /*定义全局变量*/
int n = 30, num; /*n为全班人数,num为随机产生的学号* /
Random r = new Random(); /*随机对象r*/
int[] count = new int[31]; /*记录每个学号被点到的次数*/
if (num < 10) s = "0" + s;
result.Add(num.ToString());
this.listBox1.Items.Add(s); /*将点名的学号和被点次数
写到listbox中*/
button1.Text = "开始";
if (count[num] > 3) /*学生被点次数超过三次时提
first_click = !first_click;
if (!first_click) /*开始抽取随机数*/
{
timer1.Start();
button1.Text = "停止";
}wk.baidu.com
else
{
timer1.Stop();
count[num]++;
string s = num.ToString() + " " + count[num].ToString();
编写程序的过程其实也是一个自学的过程。在这次编写程序的过程中,我虽然遇到了不少难题,但是在解决这些难题的时候,我学会了不少东西,对有些知识的理解也更加深刻,也让让我初步了解编写一个小型系统的过程,那就是设计程序,发现问题,解决问题,继续完善。我相信,在以后的编程过程中,我会不断的运用这些解决问题的方法。这次课堂随机点名系统的编写让我收获颇丰。
}
private void button2_Click(object sender, EventArgs e)
{ /*定义“被点名单”按钮事件*/
this.listBox1.Visible = !this.listBox1.Visible;
this.button3.Visible = !this.button3.Visible;
二、系统概要设计
(一)模块整体设计图
(2)模块功能介绍
1.窗体类
(1)窗体事件Form1()
功能:对各变量进行初始化
(2)开始按钮事件button1_Click(object sender, EventArgs e)
功能:进行随机点名,将点到的学号和被点次数写入listbox,并在某学号点到三次后提醒老师
(一)完成一个点名系统界面的设计,具体设计如下:
1.安置一个“开始”按钮,当按下“开始”按钮时,按钮上面的字显示为“停止”,并且开始在界面上随机抽取数字。
2.安置一个“被点名单”按钮,可以查看已经被点过的学生的学号以及被点次数。
3.添加两个标签,分别在上面显示“欢迎进入点名系统”和抽取的随机数字。
4.添加一个listbox用来存放已经被点过的学生的学号以及被点次数。
/*写文件函数*/
四、系统实现
1.界面设计
2.点名界面
3.开始点名
4.显示被点名单
5.文档数据
6. 提醒界面
五、系统调试
在做这个系统的时候,由于对C#的语法不太了解,所以即使是这样一个简单的系统,还是花了我一个星期的时间,并且还有许多不完善的地方。刚开始的时候,我是先在控制台完成了一个能每次产生3个随机数的程序,在做这个程序的时候,我不知道如何将数值数据转换为文本数据输出,上网查资料后,才知道应该调用ToString()函数。在做界面程序的时候,我在如何不断显示随机数据上遇到了难题,查找了相关书籍后,发现C#中有一个定时器事件,它可以设置时间间隔,间歇性执行某一函数,从而解决了显示随机数的时间问题。在编写写文件类的时候,我纠结了好久,一刚开始,我直接调用了老师给的程序,但总是不成功,后来,我采用了最简单的写文件的方法,将字符一个一个地写进去,终于解决了问题。
六、系统进一步扩充
由于时间原因,该系统还有以下几个方面未完善:
(一)系统界面过于简单,美化程度有待提高。
(二)没有进行读文件操作,如果能够将学号存入一个文件中,从此文件中读取学号的范围,那么该系统的适用性将会更好。
(三)本系统采用的是三次点名后提醒的操作,如果将被点次数按照学号顺序单独存放起来,并且自动去除被点三次的学号,将更有利于用户操作
5.安置一个“清除”按钮,用来清除listbox中的数据。
6.安置一个“保存被点名单”按钮,保存本次点名的数据。
(二)该点名系统能够实现随机点名,并且当一个学生被点次数超过三次时,会提醒老师重新点名。
(三)能将本节课点名的情况记录到文件中,有利于老师下课后查看分析学生上课回答问题的情况并且有利于老师下节课点其他未被点过的学生。
(四)本系统没有实现覆盖技术,每次存文件时虽然记录了点名的时间,但是会造成空间的浪费,如果能够每次点名之前将之前的数据读进来,然后在和新的数据想合并,这样看起来比较简单方便,也节省了空间,也能增加上节课未被到的同学在这节课被点到的概率。
7、体会
虽然有过上个学期做过C语言课程设计的经验,但这次的C#课堂随机点名系统仍然花了我几个晚上的时间,主要原因是对C#语法不太了解,所以,在这次编写程序的过程当中遇到了不少难题。每次遇到难题的时候,我都会上网查资料或到图书馆去查找相关书籍,最后终于将这些问题解决了。
private void button2_Click(object sender, EventArgs e)
/*“被点名单”按钮事件*/
private void button3_Click(object sender, EventArgs e)
/*“保存被点名单”按钮事件*/
public static void WriteData(string filestr,string st)
ArrayList content = new ArrayList();
ArrayList result = new ArrayList();
public Form1()
{
InitializeComponent();
timer1.Interval = 10; /*设置定时器开始计时两次调用
控件的间隔时间*/
相关文档
最新文档