然后可以选择是否置顶显示,主要代码如下 if (top == 0) { this.TopMost = true; button2.Text = "取消置顶"; top = 1; } else { this.TopMost = false; button2.Text = "置顶显示"; top = 0; }
然后选择是否需要语音点名,然后开始点名。主要代码如下: Random ra = new Random(); name_3.Text =ds.Tables[0].Rows[ra.Next(0, ds.Tables[0].Rows.Count)][1].ToString(); if (checkBox1.Checked == true) { try { svsf = new SpeechVoiceSpeakFlags(); svc = new SpVoiceClass(); svc.SetVolume(Convert.ToUInt16(80)); svc.SetRate(2); svc.Voice = svc.GetVoices(string.Empty, string.Empty).Item(3); } catch { MessageBox.Show("语音库不存在,请安装Microsoft Speech SDK 5.1和Microsoft Speech SDK 5.1 Language Pack! "); checkBox1.Checked = false; } mythread = new Thread(Voice); mythread.Start(); } 2.1 操作流程
3.2.4 出勤统计模块 1.1 设计方法 本功能模块主要为实现对历史出勤情况的一个统计汇总。主要分为学生个人出勤情况统计和班级出勤情况统计。主要工作流程见下图:
1.2 界面设计 点击tabControl1上的出勤统计选项卡,这时出现一个空白界面。然后向此界面上分别添加一个button按钮、dataGridView、groupBox和六个label。再给上述控件设定相应的参数,具体参数见下表: 类型 Name Text button openfile_3 统计 dataGridView dataGridView4 groupBox groupBox1 班级出勤情况: label Label6 个人出勤情况: label Label11 班 级: label Label12 总人数: label Label13 出勤总人次: label Label14 缺席总人次: label Label15 出 席 率: 这样出勤统计模块的界面就设计好了,如图所示:
1.3 主要程序代码说明 主要用于计算并显示统计结果。 算法示意:
public void dt_3(DataGridView Dgv) { int c1,ct,cf=0,cg=1,to=0,cto=0; string c0=cf.ToString() ,cv=cg.ToString(); DataTable dt3 = new DataTable(); DataColumn dc1 = new DataColumn("姓 名", Type.GetType("System.String")); DataColumn dc2 = new DataColumn("缺席次数", Type.GetType("System.String")); DataColumn dc3 = new DataColumn("点名总次数", Type.GetType("System.String")); dt3.Columns.Add(dc1); dt3.Columns.Add(dc2); dt3.Columns.Add(dc3); for (int ij = 0; ij < row; ij++) { ct=c1=0; DataRow dr = dt3.NewRow(); dr["姓 名"] = reutrnDs().Tables[0].Rows[ij][1]; for (int cc = 3; cc<column;cc++ ) { if (reutrnDs().Tables[0].Rows[ij][cc].ToString()== c0) { c1++; ct++; cto++; } if (reutrnDs().Tables[0].Rows[ij][cc].ToString() == cv) { ct++; to++; }
} dr["缺席次数"] = c1; dr["点名总次数"] = ct; dt3.Rows.Add(dr); } Dgv.DataSource = dt3; label11.Text += " " + openFileDialog1.FileName.Substring(openFileDialog1.FileName.LastIndexOf("\\") + 1); label12.Text += " " + row+"人"; label13.Text += " " + to+"人次"; label14.Text += " " + cto+"人次"; float ccf; ccf= (float)to / ((float)to + (float)cto)*100; label15.Text += " " +ccf.ToString("F")+"%"; } 2.1操作流程 只需点击“统计”按钮,便可生成通解结果。 四、系统的测试与运行 4.1 软件测试 尽管软件质量保证是贯穿软件开发全过程的活动,但最关键的步骤是软件测试,软件测试是对软件规格说明、软件设计和编码的最后复审,目的是在软件产品交付之前尽可能发现软件中潜伏的错误。大量统计表明,软件测试工作量往往占软件开发总工作量的40%以上。 这个阶段是用来测试程序,找出系统Bug并修改错误的过程。虽然在每个模块开发的过程中都进行过阶段性的测试,但是现场整体测试更接近将来系统投入使用的情况。 在查阅了资料后,了解到系统的整体测试方法主要有非渐增测试法和渐增测试法两种。其中渐增测试法适用于模块间数据流多、可以单独测试各个模块到测试多的模块的情况。由于系统各部分之间有密切的关系,所以选择渐增测试法作为测试的方法。 测试时首先对各个模块的功能进行测试,对照需求分析逐个测试系统的功能;然后对照数据库的内容察看各个查询功能反馈的结果是否正确;最后整体运行系统,测试各个模块之间的衔接是否会对系统的整体性能发生影响。为了测试程序的健壮性,还可以在测试过程中故意输入一些错误的数据,保证系统能够自行处理这些错误,使得系统在日常的使用中不会由于工作失误而无法运行。
测试小结 在测试过程中,确实发现了很多的错误。一部分因为开发环境与实际使用环境不同产生的,比如说图片的效果不对,或者控件的位置出现偏移等等;还有数据库的连接问题,在不同的计算机上因为计算机名的不同导致无法连接数据库,这些问题通过现场的调试基本得到了解决。 使用面向对象的开发工具进行系统开发后,由于其独有的特点,所以调试时与传统的程序开发语言并不完全相同,就本次开发过程中使用的Microsoft Visual Studio 2005来说,例如:在Microsoft Visual Studio 2005的定义当中,面向对象的设计方法使得很多模块的变量封装起来,由此,对象的变量常常是不可见的,定义全局变量一定要在窗体之外的公用模块中,而且要定义为公用。 另一部分错误却出乎意料,比如说有些控件数组的初始化问题。因为要知道很多情况下程序的错误是连锁性的,一个语句错误,其后相关语句也跟着出错,所以找出错误源是很重要,在程序中设置断点或在调试模式下执行程序,可以快速发现和纠正错误,把无法初始化的控件元素单独初始化后,问题可以得到解决。 经过测试的过程,认识到自己在程序的编写和思路方面都存在一定的问题,相信经过不断的学习和经验积累,可以实现较大的改观。
参考文献 张忠国. Visual C#中随机数使用实例 关于红叶二级电站生产管理系统开发要求. 红叶二级电站生产管理系统 2008 配网管理系统---需求分析说明书. 红叶二级电站生产管理系统 2008 商小千. 燕山大学里仁学院“两课”社会调查报告 2006 白 春. POS系统在零售行业的应用 2005
首页 上一页 1 2 3 4 下一页 尾页 3/4/4