




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
堂随机点名系统题目:课堂随机点名系统班级:姓名:学号:指导教师:朱新峰成绩:—2013年12月一、任务描述本次任务要求完成一个课堂随机点名系统。具体内容为:教师在每次上课时,有时需要叫学生起来回答问题,为了公平起见,使每个学生被叫起来回答问题的概率相同,故采用ctt来编写一个随机点名系统。具体要求如下:(一)完成一个点名系统界面的设计,具体设计如下:安置一个“开始”按钮,当按下“开始”按钮时,按钮上面的字显示为“停止”,并且开始在界面上随机抽取数字。安置一个“被点名单”按钮,可以查看己经被点过的学生的学号以及被点次数。添加两个标签,分别在上面显示“欢迎进入点名系统”和抽取的随机数字。添加一个listbox用来存放己经被点过的学生的学号以及被点次数。安置一个“清除”按钮,用来清除listbox中的数据。安置一个“保存被点名单”按钮,保存本次点名的数据。(二)该点名系统能够实现随机点名,并且当一个学生被点次数超过三次时,会提醒老师重新点名。(三)能将本节课点名的情况记录到文件中,有利于老师下课后查看分析学生上课回答问题的情况并且有利于老师下节课点其他未被点过的学生。二、系统概要设计(一)模块整体设计图
模块功能介绍窗体类窗体事件FormlQ功能:对各变量进行初始化开始按钮事件button1_Click(objectsender,EventAigse)功能:进行随机点名,将点到的学号和被点次数写入listbox,并在某学号点到三次后提醒老师定时器事件timer1_Tick(objectsender,EventAigse)功能:产生随机学号并将数据在界面上显示出来被点名单按钮事件button2_Click(objectsender,EventArgse)功能:显示和隐藏listbox
清除按钮事件button3_Click(objectsender,EventAigse)功能:清除listbox中的内容保存被点名单事件button4_Click(objectsendei;EventAigse)功能:将被点名单写入文件并记录点名时间写文件类(1)写文件函数WtiteData(stringfilestr,strmgst)功能:将点到的学号和被点次数写入文件三、系统详细设计(一)数据结构设计本系统采用文件保存点到的学号及其被点次数定义全局变量n,num以及名为count的数组分别用来存放班级人数,产生的随机学号以及每个学号被点次数1.各类的原型为:public1.各类的原型为:publicpartialclassForml:FormpublicclassFileWrite2.各事件原型为:publicForml()privatevoidbuttonl_Click(objectsender,/*窗体类*//*写文件类*//*窗体事件*/EventArgse)timerl_Tick(objectsender,EventArgse)privatevoidbutton2_Click(objectsender,/*“开始”按钮事件*//*定时器事件*/EventArgstimerl_Tick(objectsender,EventArgse)privatevoidbutton2_Click(objectsender,privatevoidbutton3_Click(objectsender,publicstaticvoidWriteData(stringfilestr,stringst)/*写文件函数*/系统实现1•界面设计
2.点名界面3.开始点名4.显示被点名单□?浬堂涟机点名奈统欢迎进入点名系统29激点名单开始1A111A110^1*11CMo/ta111A111*CMCO889589899316289102200220010212保存被点名单5.文档数据文件⑥霍(E)格式(。)辞M帮期H)112/13/20130110210310400510600710800920000100100100206.提醒界面g课堂随机点名系统221111231213132499316289960848482001021210112020欢迎进入点名系统29开始保存被点名单该名同学已被点过三次,清重新点名!确定五、系统调试在做这个系统的时候,由于对C#的语法不太了解,所以即使是这样一个简单的系统,还是花了我一个星期的时间,并且还有许多不完善的地方。刚开始的时候,我是先在控制台完成了一个能每次产生3个随机数的程序,在做这个程序的时候,我不知道如何将数值数据转换为文本数据输出,上网查资料后,才知道应该调用ToString()函数。在做界面程序的时候,我在如何不断显示随机数据上遇到了难题,查找了相关书籍后,发现C#中有一个定时器事件,它可以设置时间间隔,间歇性执行某一函数,从而解决了显示随机数的时间问题。在编写写文件类的时候,我纠结了好久,一刚开始,我直接调用了老师给的程序,但总是不成功,后来,我采用了最简单的写文件的方法,将字符一个一个地写进去,终于解决了问题。六、系统进一步扩充由于时间原因,该系统还有以下儿个方面未完善:(一)系统界面过于简单,美化程度有待提高。(二)没有进行读文件操作,如果能够将学号存入一个文件中,从此文件中读取学号的范围,那么该系统的适用性将会更好。(三)本系统采用的是三次点名后提醒的操作,如果将被点次数按照学号顺序单独存放起来,并且自动去除被点三次的学号,将更有利于用户操作(四)本系统没有实现覆盖技术,每次存文件时虽然记录了点名的时间,但是会造成空间的浪费,如果能够每次点名之前将之前的数据读进来,然后在和新的数据想合并,这样看起来比较简单方便,也节省了空间,也能增加上节课未被到的同学在这节课被点到的概率。虽然有过上个学期做过C语言课程设计的经验,但这次的C#课堂随机点名系统仍然花了我儿个晚上的时间,主要原因是对C#语法不太了解,所以,在这次编写程序的过程当中遇到了不少难题。每次遇到难题的时候,我都会上网查资料或到图书馆去查找相关书籍,最后终于将这些问题解决了。编写程序的过程其实也是一个自学的过程。在这次编写程序的过程中,我虽然遇到了不少难题,但是在解决这些难题的时候,我学会了不少东西,对有些知识的理解也更加深刻,也让让我初步了解编写一个小型系统的过程,那就是设计程序,发现问题,解决问题,继续完善。我相信,在以后的编程过程中,我会不断的运用这些解决问题的方法。这次课堂随机点名系统的编写让我收获颇丰。附录(源程序)usingSystem;usingSystem.10;usingSystem.Collections.Generic;usingSystem.ComponentMode1;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections:usingSystem.Timers;usingSystem.Linq;namespacedianming(publicpartialclassForml:Form/*窗体类*/(boolfirst_click=true;/*定义全局变量*/intn=30,num;/*n为全班人数,num为随机产生的学号*/Randomr=newRandom();int[]count=newint[31];ArrayListcontent=newArrayList();ArrayListresult=newArrayList();publicForml()/*随机对象r*//*记录每个学号被点到的次数*/InitializeComponent();timerl.Interval=10;timerl.Stop();inti;for(i=0;i<31;i++)count[i]=0;/*设置定时器开始计时两次调用控件的间隔时间*//*开始时定时器是停止的*//*初始化点名次数*/}privatevoidbuttonl_Click(objectsender,EventArgse){一/*定义“开始”按钮事件*/first_click=!first_click;if(!firstclick)/*开始抽取随机数*/timerl.Start();buttonl.Text=〃停止〃;}else(timerl.Stop();count[num]++;strings=num.ToString()+〃+count[num].ToString();if(num<10)s=〃0〃+s;result.Add(num.ToString());this.listBoxl.Items.Add(s);/*将点名的学号和被点次数写到1istbox中*/buttonl.Text=〃开始〃;if(count[num]>3)/*学生被点次数超过三次时提醒老师重新点名*/MessageBox.Show(,z该名同学己被点过三次,请重新点名!〃);})privatevoidtimerl_Tick(objectsender,EventArgse){~/*定义定时器事件*/num=r.Next(1,n);/*产生随机学号*/labell.Text=num.ToString():/*将数据在界面上显示出来*/)privatevoidbutton2_Click(objectsender,EventArgse){~/*定义“被点名单”按钮事件*/this.listBoxl.Visible=!this.listBoxl.Visible;this.button3.Visible=!this.button3.Visible;)privatevoidbutton3_Click(objectsender,EventArgse){~/*定义“清除”按钮事件*/this.listBoxl.Items.Clear();result.Clear();)}privatevoidbutton4_Click(objectsender,EventArgse)inti,y,m,d;stringsi,s2;DateTimet=DateTime.Now;y=t.Year;m=t.Month;d=t.Day;s2=m.ToString()+'7〃+d.ToString()+〃/〃+y.ToString();Stringfile=.\LML\test.txt〃;FileWrite.WriteData(file,s2);/*记录时间*/for(i=1;i<=n;i++)/*将点名的学号和(被点次数写到test,txt中*/si=i.ToString()+"+count[i].ToString();if(i<10)si=〃0〃+si;FileWrite.WriteData(file,si);}})publicclassFileWrite/*定义写文件类*/(publicstaticvoidWriteData(stringfilestr,stringst){/*定义写文件函数*/FileStreamfs=newFileStream(Filestr,FileMode.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平面与组合回转体相交
- 2023-2024学年湖北省武汉市新洲区高二下学期6月期末考试数学试题(解析版)
- 2023-2024学年广东省肇庆市高要区高二下学期期中调研测试数学试题(解析版)
- 2025届广东省六校高三第四次联考语文试题(解析版)
- 芬兰和中国科技合作协议
- 环境工程概论电子课件
- 驾驶员安全驾驶培训课件(精)
- 向量数量积讲课件
- 佛山机关休假管理制度
- 佛山集体宿舍管理制度
- 妇科急症的处理与应急预案
- 钢筋挂篮计算书
- 集团分权管理手册
- 信息系统运维服务项目归档资料清单
- 辽宁省义务教育课程各科目安排及占九年总课时比例、各科目安排样表(供参考使用)
- 慢性呼吸疾病肺康复护理专家共识课件
- 乌兰杰的蒙古族音乐史研究-评乌兰杰的《蒙古族音乐史》
- 年产8万吨煅烧铝矾土熟料生产线项目环评影响报告
- 变电工程施工合同协议书
- 电工技术-北京科技大学中国大学mooc课后章节答案期末考试题库2023年
- 星海音乐学院乐理试题A卷
评论
0/150
提交评论