语音点名系统设计与实现.doc

上传人:文库蛋蛋多 文档编号:2806649 上传时间:2023-02-25 格式:DOC 页数:180 大小:355.50KB
返回 下载 相关 举报
语音点名系统设计与实现.doc_第1页
第1页 / 共180页
语音点名系统设计与实现.doc_第2页
第2页 / 共180页
语音点名系统设计与实现.doc_第3页
第3页 / 共180页
语音点名系统设计与实现.doc_第4页
第4页 / 共180页
语音点名系统设计与实现.doc_第5页
第5页 / 共180页
点击查看更多>>
资源描述

《语音点名系统设计与实现.doc》由会员分享,可在线阅读,更多相关《语音点名系统设计与实现.doc(180页珍藏版)》请在三一办公上搜索。

1、师范学院本科毕业论文题 目 语音点名系统设计与实现学 生 指导教师 讲师年 级 2003级专 业 计算机科学与技术系 别 计算机科学系 师范学院计算机科学系2007年5月郑重声明 本人的毕业论文(设计)是在指导教师李小慧的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。毕业论文(设计)作者(签名): 年 月 日目 录标题1中文摘要 11 引言11.1语音技术发展简介11.2微软语音包简介11.3研究背景和意义21.4研究内容22 系统分析22.1摆脱传统人工考勤方式的必要性

2、22.2新系统功能要求22.2.1整体要求32.2.2具体功能需求32.2.3运行环境需求43 系统总体设计43.1系统设计原则43.2系统设计原理43.3系统模块设计44 数据库设计54.1系统数据流图54.2数据字典64.3系统E-R图74.4数据库表的结构74.5数据库中表的关系95 系统详细设计105.1系统流程图105.2管理模块设计105.2.1新用户注册子模块105.2.2设置系统时间子模块125.2.3数据库管理子模块135.3考勤模块145.3.1日常考勤子模块145.3.2期末统计子模块186 总结与展望196.1总结196.2展望19参考文献20致谢22外文页23语音点名

3、系统设计与实现闫志英摘 要 考勤工作是每个学校必须进行的一项重要工作。教学考勤簿中详细记录了学生的出勤情况,是评定学生平时上课表现的一个重要标准。语音点名系统是对学校的考勤工作做了深入和细致的调查研究后设计的考勤系统。此系统严格按照软件工程的思想进行设计与开发,以windows xp作为设计平台,以SQL Server数据库为系统后台数据库,采用visual basic 6.0为开发工具,调用微软的语音包Speech SDK5.1和中文语言包Speech LangPack SDK进行中文语音合成,实现了语音点名、日常考勤管理、期末出勤统计、系统管理等功能。语音点名系统是学校急需的系统,它摆脱了

4、人工点名的传统方式,减轻了教师的负担,对学校的办公自动化起到了推动和促进作用。关键词 语音合成 点名系统 Speech SDK5.11 引言1.1语音技术发展简介语音是人类间相互通信的最自然和最方便的形式。语音技术主要包括语音识别技术和语音合成技术。语音识别是使计算机能听懂说话人的话语,语音合成是指将文本转换成语音。二十世纪20年代到30年代,美国Bell实验室对英语语音分析技术做了大量研究,这应该看作是语音技术方面最早的研究。70年代语音技术取得了实质性的进展并首次进入商品市场,此时的研究主要致力于对英语词汇的识别和合成。如今,语音技术的研究已经深入到一定程度。语音识别方面要求把语音识别和自

5、然语言理解结合起来;语音合成方面则要求能更接近真人发声系统,朗读出的声音更完美。在有关中文语音技术方面,IBM的Via Voice首先实现了中文语音识别技术,而中文语音合成技术则是由我国首先实现的。我国相对欧美来讲,语音技术的研究起步较晚。语音技术产品较少,技术性能较差,功能简单,涉及领域少。我国的语音技术产品分为两大类:语音识别产品和语音合成产品。相对语音识别产品,语音合成产品数量较多,技术较成熟。目前我国语音合成技术的产品主要有:数字语音留言机,电脑报站机,电脑语音报警器,语音合成卡。语音合成这一技术在人机对话、电话咨询、自动播音、助讲助读、语音教学等方面有着广阔的应用前景。语音合成技术对

6、语音库的依赖很大。许多发达国家都建立了本国语言的语音库。由清华大学等单位研制的汉语语音语料库于1月19日通过鉴定,填补了中国自主开发中文语音库的空白。1.2微软语音包简介作者主要利用微软提供的语音合成技术进行二次开发,所以下面介绍一下微软提供的语音开发包SAPI.51 SDK。大力推广语音技术是未来的趋势,也是现阶段软件用户界面发展的最高目标。微软公司在推动语音技术的发展方面也做出了一定的贡献,并且公布了语音开发平台Speech SDK帮助开发人员实现语音应用。SAPI是Speech Application Program Interface 的缩写,即语音应用程序接口。SDK是Softwar

7、e Development Kit的缩写,即软件开发工具箱(或称为软件开发包)。SAPI SDK是一款由微软公司免费提供的语音应用开发工具包,其中包含了语音应用设计接口(SAPI)、微软的连续语音识别引擎(MCSR)以及微软的语音合成(TTS)引擎等等。目前的SAPI SDK的最高版本为SAPI SDK6.0。本系统所使用的是SAPI SDK5.1,此版本一共可以支持3种语言的识别 (英语,汉语和日语)以及2种语言的合成(英语和汉语),不过合成汉语仍需另外安装Speech LangPack SDK。Speech SDK5.1语音包包含了主要的语音合成技术,将文本按字或词分解为音素,并且对文本中

8、的数字、货币单位、单词变形以及标点等要特殊处理的符号进行分析,以及将音素生成数字音频然后用扬声器播放出来。语音引擎则通过DDI层(设备驱动接口)和SAPI(Speech API)进行交互,应用程序通过API层和SAPI通信。通过使用这些API,作者可以开发语音点名系统。1.3研究背景和意义考勤工作是每个学校必须进行的一项重要工作。任课教师在开始讲授课堂内容之前,要先检查记录学生的出勤情况。传统的方式是由任课教师进行点名,即人工点名。每个学期结束时,要对每个学生的出勤情况进行整理、统计。统计结果将作为评定学生平时成绩的一项标准。人工点名时,任课教师把学生姓名一一念出来,然后对学生的出勤情况进行记

9、录。由于任课教师经常用嗓,所以大多数教师都患有不同程度的咽喉炎症,点名无疑是加重了对他们咽喉的伤害。因为每个任课教师每学期的授课班级较多,所以每个学期末,对出勤情况的记录是一项工作量很大而又繁琐的工作。语音点名系统由此而生。利用语音合成技术让计算机通过扬声器播放学生姓名,既可以达到很好的效果,又可以减轻教师的用嗓负担。用数据库保存学生每次的出勤情况,并在学期末进行统计,可以大大减轻教师的负担。1.4研究内容该课题的开发目标就是利用微软具有强大语音开发功能的语音包,实现适合学校使用的语音点名系统,以摆脱人工点名实现自动化。具体研究内容包括以下几方面:(1)对考勤工作和课堂教学考勤簿进行调查研究、

10、分析总结,研究系统所需要的功能。(2)学习开发此系统所需要的理论知识和技术,主要包括:VB语言,微软的语音开发包Speech SDK5.1,SQL Server数据库。(3)系统的总体规划和设计。包括系统的原理设计和功能模块设计。(4)系统的具体设计与实现。编写代码实现各个模块的功能,包括后台数据库、前台界面设计和各功能的具体实现。2系统分析2.1摆脱传统人工考勤方式的必要性传统的考勤工作采用人工方式,存在的问题有:(1)对教师的声带伤害加重。教师工作有三大特点:说话时间长、站立时间长、伏案时间长。声带是老师“容易受伤”的部位之一。老师长时间讲课使声带疲劳过度、边缘充血而导致声带息肉,声带小结

11、。表现为喉咙痛、说话声音沙哑。根据岭南心血管病杂志刊登的数据,一份对广东省862名中小学教师的调查结果,21.9的人患有高血压;最常见的职业病是慢性咽喉炎,在所有的五官科门诊中,该病患者有81是教师。考勤时进行点名无疑是加重了教师的用嗓负担,对其声带的伤害加重。(2)考勤统计工作繁琐,加重了教师的工作负担。据调查,本校03级计算机系本科班在2004年的人数为108人。此班级0405学年第一学期的微机原理课程共有18周72节课。每个学生每节课的出勤情况又可分为正常、请假、迟到、早退、旷课五项。那么微机原理的任课教师本学期末的共要统计38880项记录(课时数乘于学生人数乘于记录种类)。由于每个任课

12、教师每学期所授课程不唯一,所以任课教师的考勤统计工作量非常大。高校教师不仅要进行授课,还要进行学术研究,指导学生进行研究等。工作任务繁重,心理压力大。在繁重而辛劳的教学中,亚健康正在迅速蔓延,高校教师重度亚健康发生率高达34.16%,相比起一般人的重度亚健康发生率10%,教师的亚健康状况显然令人担心。传统的考勤方式应该尽快改变,以减轻教师的负担。所以设计一个高效实用的学校自动化考勤系统成了当务之急。2.2新系统功能要求2.2.1整体要求语音点名系统是一个小型学校考勤系统,主要作用是使教师考勤工作自动化。此系统主要应该实现下面两大功能:(1)上课时进行语音点名和记录出勤。(2)学期末统计每个学生

13、本学期本课程的出勤情况。根据对考勤工作的分析,得出了语音点名系统的高层程序流程图。见图2-1:图2-1 语音点名系统的高层程序流程图2.2.2具体功能需求该系统面向的用户为学校,具体使用者为任课教师或考勤负责人。主要任务是进行语音点名、记录出勤情况、期末统计出勤三方面。具体分析如下: (1)语音点名。利用微软Speech SDK5.1工具包的语音合成技术把学生姓名播放出来,并对播放进行必要的控制。播放控制包括以下方面:对停顿时间的控制。当播放完一个学生名字后,需要停顿一段时间再播放下一个名字,以便于教师记录此学生的出勤情况。由于课堂环境不同、老师的记录速度不同、使用习惯不同等,这都需要系统对停

14、顿时间加以控制。停顿时间不宜过长,能保证老师在停顿时间段内完成记录即可。经过调查,最大停顿时间值为6秒最适合。对重复播放次数的控制。重复播放指对一个名字重复播放若干次再播放下一个名字。点名过程中,一个名字只播放一次可能会使学生来不及做出正确反应,所以应使教师可以选择重复播放,但是播放次数不宜过多,达到效果即可。经过访问老师,把重复最大数值限定为3次,同一个名字在重复播放时不进行停顿。而在某种特定环境下学生的注意力高度集中时,可能每个名字只播放一遍就可以达到效果。随机点名和跳读功能。随机点名主要用于对学生的出勤情况进行随机抽查。跳读是按照一定的间隔进行点名。当用户选择随机点名或跳读时,系统须提前

15、计算将被点到的学生个数和覆盖范围。(2)记录出勤情况。实现对出勤情况的记录功能,并把每个学生每节课出勤情况存入后台数据库。记录功能。经过调查学生出勤情况的记录表,确定学生的出勤情况为以下五种:迟到、早退、旷课、请假、正常上课,所以在点名系统中设计此五种情况的选择按钮。因为出勤情况多样,用鼠标选择相对不便,所以应该设计对应的快捷键。经过实际调查得知,记录考勤时一般只是对“迟到”、“早退”、“旷课”、“请假”进行记录,正常情况会空起来不写,所以用户对“迟到”、“早退”、“旷课”、“请假”的记录较为频繁。大多数人的右手使用频繁而且灵活,所以将确定“迟到”、“早退”、“旷课”、“请假”的快捷键设置在小

16、键盘区。而当用户没有对某一学生的出勤情况进行记录时,系统会默认其出勤情况为正常。修改功能。某个学生的出勤情况记录可能会发生变化,例如迟到变为旷课、迟到变为迟到并且早退、迟到变为请假、旷课变为请假,所以出勤情况应该能够被修改。(3)学期末出勤统计。按照班级、课程分类统计每个学生的五种出勤情况(正常、请假、迟到、早退、旷课)。2.2.3运行环境需求(1)要求使用微软系统并且系统版本要高于Windows 98。因为该系统使用的语言是VB,而且安装的语音包由微软提供,所以开发出来的软件只适合微软系统。而Windows 98本身不支持汉语语音引擎,无法使用该系统播放中文,所以要求系统版本高于Window

17、s 98。(2)要求在使用前安装微软提供的两个语音包:Microsoft Speech SDK5.1和Microsoft Speech SDK51 LangPack使系统具有发音功能,但不支持中文。Microsoft Speech SDK51 LangPack使系统支持中文发音。(3)要求安装SQL Server数据库。因为学生的出勤情况保存在SQL Server数据库中,所以需要安装SQL Server数据库。(4)要求安装扬声器。语音点名系统中合成的语音需要通过扬声器播放出来,并且要求所使用的扬声器发出的。3系统总体设计3.1系统设计原则系统总体设计主要采用软件工程的基本思想、用户前端访问

18、界面等方面的重要思想内容。系统的设计过程中始终贯穿软件工程思想,遵从以下设计原则进行设计:(1)实用性原则此系统将实用性作为衡量其质量的首要标准和最重要的标准。开发应用软件,实用性是第一原则1。此系统设计时充分考虑了用户的使用习惯和思维习惯,在日常考勤管理模块中为记录功能设置了很多快捷键。设计这些快捷键时充分考虑到用户左右手的使用情况,使其使用更加方便。针对考勤人员的点名习惯设置了随机点名和跳读点名并自动计算点名范围,还设置了重复次数和停顿时间。在用户注册模块中自动根据系别列出专业,课程时间信息由系统自动添加,节省了教师的时间。(2)模块化设计原则系统采用模块化的设计原则,使系统功能伸缩性良好

19、,可以根据具体情况进行扩展。3.2系统设计原理通过分析SAPI SDK结构得知,可以用VB实现用户接口程序,即语音点名系统。在系统中调用Speech SDK5.1语音开发包所提供的VB接口,从而完成文语转换。系统原理图如下图所示:图3-1 系统原理图3.3系统模块设计该系统共分为管理模块和考勤模块两大模块。管理模块由管理员执行,完成新用户注册、设置学期时间信息、数据库管理。考勤模块供用户使用,可以分为日常考勤管理和期末统计两个子模块。对各模块进行分析,得出系统模块结构图。如图3-2所示:图3-2 系统模块图4数据库设计语音点名系统采用SQL Server数据库作为后台数据库,数据库中存放了考勤

20、工作所必须的学生信息、课程信息和教师信息、系别信息、班级信息。4.1系统数据流图通过对考勤工作的具体事项进行分析,分别得出语音点名系统两个模块的数据流图。考勤模块数据流图和管理模块数据流图分别如图4-1和4-2所示:图4-1 考勤模块数据流图图4-2管理模块数据流图4.2数据字典鉴于篇幅原因,此论文在此只列出部分数据流条目。(1) 数据流条目 数据流名称:登录信息简述:说明用户名和口令及其要进行的操作类别来源:用户去向:加工1“判断并提取信息”组成:用户名+口令+日常考勤|期末统计 数据流名称:考勤范围简述:说明用户要对哪个系别哪个班级哪一学年哪一学期的哪门课程的出勤情况进行检查来源:加工1“

21、判断并提取信息”去向:加工2“点名及记录修改”组成:学年信息+学期信息+系别+专业+班级+课程名 数据流名称:统计范围简述:说明用户要对哪个系别哪个班级哪一学年哪一学期的哪门课程的出勤情况进行统计来源:加工1“判断并提取信息”去向:加工4“期末统计”组成:学年信息+学期信息+系别+专业+班级+课程名 数据流名称:学生名单简述:用户所检查的班级的所有学生的有关信息来源:“学生出勤信息库”去向:加工2“点名及记录修改”组成:系别+专业+班级+学号+姓名+学生照片 数据流名称:学生出勤信息来源:加工2“点名及记录修改”去向:“学生出勤信息库”组成:学号+姓名+出勤信息+课程名+系别+专业+班级+节次

22、+周次+学期信息+学年信息 数据流名称:语音别名:中文语音简述:点名时播放的学生名字的中文发音来源:加工2“点名及记录”去向:学生组成:中文发音 数据流名称:操作类别简述:描述管理员进行何种操作来源:加工4“判断并提取信息”去向:加工5“判断后进行注册”|加工6“设置学期时间”|加工7“数据库管理”组成:设置学期时间|新用户注册|数据库管理(2)数据存储条目数据存储名称:学生出勤信息库简述:存放学生的出勤信息及相关的课程、教师、时间、系别、班级信息组成:学生出勤表+教师表+课程表+学生表+班级表数据存储名称:期末统计表:别名:无简述:某学年某学期末对某班级某课程学生出勤信息的统计组成:学年+学

23、期+班级+课程名称+姓名+学生出勤信息的分类统计4.3系统E-R图语音点名系统的E-R图参见图4-3。4.4数据库表的结构语音点名系统的数据库中共有6张表,分别为学生出勤信息表、学生表、课程表、用户表、教师表、班级表。(1)学生出勤信息表(tblattendance)学生出勤信息表是数据库中最重要的一个表,用来存放所有学生的所有出勤信息。字段有编号、学号、用户编号、出勤信息和有关时间信息。因为学校按照学年、学期、周次、节次进行排课,所以有关的时间信息中包含了这4项。学生出勤信息表中编号是主键,attendance字段的值有5种,分别为:迟到、早退、请假、旷课、正常。学生出勤信息表的结构如表4-

24、1所示:表4-1 学生出勤信息表字段名称字段类型长度描述主键attend_idchar10编号是student_idchar12学号user_idchar3课程号Attend_attendancechar4出勤信息Attend_weekchar2周次Attend_jiecichar2节次(2) 学生表(tblStudent)学生表用于存放考勤工作中所需的学生信息。结构如下:表4-2 学生表字段名称字段类型长度描述主键student_idchar12学号是student_namechar10姓名Class_departmentchar20系别Class_majorchar20专业Class_gr

25、adechar2年级Class_classchar4学历(3) 课程表(tblSubject)课程表用于存放考勤工作所需的课程信息。结构如下:表4-3 课程表字段名称字段类型长度描述主键subject_idchar3课程号是subject_namechar20课程名Subject_countchar2学时Subject_termchar1学期Subject_year1char4上半学年Subject_year2char4下半学年(4) 教师表(tblTeacher)教师表用于存放考勤工作所需的教师信息。结构如下:表4-4 教师表字段名称字段类型长度描述主键teacher_idchar5教师号是

26、teacher_namechar10教师姓名departmentchar20教师所在系别(5)用户表(tblUser)教师使用前需要进行注册,用户表中存放了教师的注册信息。结构如下:表4-5 用户表字段名称字段类型长度描述主键User_idint4用户编号是User_nameChar10用户名User_passwordChar10口令Teacher_idChar5教师号Class_idChar4班级号Subject_idchar4课程号(6)班级表(tblClass)表4-6 班级表字段名称字段类型长度描述主键Class_idChar4班级号是Class_departmentchar20系别C

27、lass_gradeChar2年级Class_majorChar20专业Class_classchar1学历图4-3 语音点名系统的E-R图4.5数据库中表的关系各表之间的关系如下图所示:图4-4 各数据表之间的关系图5系统详细设计5.1系统流程图语音点名系统的系统流程图如图5-1所示。是是是图5-1 语音点名系统流程图5.2管理模块设计管理模块有三个子模块,分别是新用户注册子模块、设置系统时间子模块、数据库管理子模块。5.2.1新用户注册子模块使用系统前需要先进行注册,主要作用有:对用户的权限进行管理。因为学生的出勤信息直接影响到学生的期末成绩,而语音点名系统安装在教室的计算机中,为了避免学

28、生擅自修改出勤记录,要设置用户号码和登录口令。方便用户的使用。当用户成功注册后,系统会记录用户的基本信息。在系统中,一个用户名对应多个用户编号,每一个编号对应此用户所教授的不同班级的不同课程,所以一个用户可以用一个用户名对所教授的不同班级的不同课程进行考勤管理。实现原理:系统根据用户填写的班级信息得出班级编号,根据填写的课程信息得出课程编号。然后分配用户编号,记录此用户的班级编号和课程编号。主要代码如下:strCN=Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;password=4569464;Initial Catalog=a

29、ttendence Set cn = New ADODB.Connection 建立连接实例Set rs = New ADODB.Recordset 建立记录集实例rs.CursorLocation = adUseClientcn.open strCN 连接到数据源userDepartment = teacherDepartmentCMBox.Text 记录教师的系别通过输入的班级信息获得班级号rs.open select class_id from tblclass where class_department= & classDepartmentCMBox.Text & and class

30、_major= & classMajorCMBox.Text & and class_grade= & classGradeCMBox.Text & and class_class= & classClassCMBox.Text & , cn, adOpenKeyset, adLockOptimisticclassId = rs.Fields(0) 记录班级号通过输入的课程信息获得课程号strSql = select subject_id from tblsubject where subject_name= & subjectNameCMBox.Text & and subject_term

31、= & subjectTerm & and subject_year1= & subjectYear1CMBox.Text & and subject_year2= & subjectYear2CMBox.Text & rs.open strSql, cn, adOpenKeyset, adLockOptimisticsubjectCount = subjectCountCMBox.Text 记录课程学时subjectId = rs.Fields(0) 记录课程号选出用户表中的最大user_id,新用户user_di的增1rs.Closers.open select max(user_id)

32、from tblUser , cn, adOpenDynamic, adLockOptimisticuserId = rs.Fields(0) + 1判断信息是否重复,即是否已有教师注册了此学期教授此班此课程的信息向用户表中添加新用户信息rs.Closers.open select * from tbluser, cn, 1, 3With rs.AddNew!user_id = userId!user_name = userName!user_password = userPassword!teacher_id = teacherId!class_id = classId!subject_id

33、 = subjectIdEnd Withrs.Update同一用户注册其它班级的其他课程考虑到需要用系别、专业、年级、班级四项才能唯一确定用户教授的是哪个班,这增加了用户输入的信息量,所以增加了“班级简称”项。这样用户使用系统时不必选择系别、专业、班级、年级,直接选择“班级简称”就可以确定所教授的班。新用户注册界面图如图5-2所示:图5-2 用户注册界面5.2.2设置系统时间子模块系统管理员在每个新学期须进行学期时间的管理,输入此学期的起止时间。输入的时间信息由系统记录,当用户需要填写课程的时间信息时,系统会自动显示,减少了用户的输入量。主要代码如下:第一学期一般会跨越两年,检查管理员的输入是

34、否正确If termCMBox.Text = 第一学期 Then如果是第一学期 year1 = CInt(Left(year1CMBox.Text, 4)读取学期的起始时间 year2 = CInt(Left(year2CMBox.Text, 4)读取学期的结束时间 If Not year2 - year1 = 1 Then If (MsgBox(确定要这样设置吗?(第一学期一般会跨越两年,您设置的时间并非如此。), vbOKCancel) = 2 ThenExit sub End IfElse End If End IftermYear1=year1 记录学期的起始时间termYear2=y

35、ear2记录学期的结束时间设置系统时间的界面如图5-3所示:图5-3 设置系统时间子模块5.2.3数据库管理子模块数据库管理模块实现了数据库的备份。主要利用了VB提供的用于数据库备份的函数fBackupDatabase_a()。主要代码如下:创建数据库连接对象Set iDb = New ADODB.Connection 连接数据库服务器iConcStr=Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;password=4569464;Initial Catalog=attendence iDb.open iConcStr 生成数据

36、库备份语句iSql = backup database & sDataBaseName & & vbCrLf & _ to disk= & sBackUpfileName & & vbCrLf & _ with description= & zhiying-backup at: & Date & ( & Time & ) & vbCrLf & _ IIf(sIsAddBackup, , ,init) iDb.Execute iSql执行数据库备份 备份数据库的用户界面如图5-4,图5-5所示:图5-4 选择备份文件夹界面图5-5 数据库备份界面5.3考勤模块考勤模块是用户使用最多的模块,也是语

37、音点名系统最重要的模块。考勤模块分为日常考勤模块和期末统计模块两个子模块。5.3.1日常考勤子模块日常考勤子模块是用户日常使用最多的模块,此模块实现的主要功能有生成新考勤表、语音点名、记录和修改出勤信息。日常考勤子模块的用户界面有播放选项界面,日常考勤界面。日常考勤主界面如图5-6所示,选择点名方式、进行音量和语速控制的界面图如图5-7所示。图5-6日常考勤主界面图5-7 选择点名方式、进行音量和语速控制的界面图(1)生成新考勤表功能的实现因为教师并不是每节课都检查考勤,所以为了尽量减少数据库中的信息量,教师在上一堂课之前,考勤表中没有关于这节课的考勤信息为空的记录。当教师需要点名时,在数据库

38、的考勤表中追加本节课每个学生出勤信息为空的考勤记录。实现原理:记录教师选择的周次节次,然后根据此班的班级号从学生表中调出学生名单,根据学生名单向考勤表中追加记录,向新生成的记录中填写学生学号、学生姓名、本次课的周次节次。将datagrid控件绑定到新生成的记录集,通过datagrid控件显示记录集。主要代码如下:Private Sub submitBtn_Click() 调用Connection对象的方法Open连接数据源 记录节次周次 attendJieci = Mid(attendJieciCMBox.Text, 2, 1) attendWeek = Mid(attendWeekCMBox

39、.Text, 2, 1) 生成本周本节次的记录,其中每个学生的考勤信息均为空 If rs.RecordCount = 0 Then 如果考勤表中没有此周此节的信息,需要追加 If appendRs.RecordCount = 0 Then 判断是否是空考勤表 maxid = 1000000000 考勤表编号从1000000000开始 Else考勤表中记录不为0,取得最大编号,新追加的记录号为此编号加一 appendRs.MoveLast maxid = CLng(appendRs.Fields(0) 把记录号转换为长整型 End If Do追加记录 With appendRs .AddNew

40、!attend_id = CStr(maxid + 1)填写编号 !student_id = rs.Fields(0)填写学号 !user_id = userId填写用户表 !attend_jieci = attendJieci填写节次 !attend_week = attendWeek填写周次 !Update End With rs.MoveNext maxid = maxid + 1编号增加一 Loop Until rs.Bookmark = rslastbookmark 追加后重新查找记录 设定datagrid控件属性 Set DataGrid1.DataSource = rs 将dat

41、agrid1绑定到记录集 End Sub(2)语音点名功能语音点名功能包括随机点名、跳读点名、顺序点名、二次点名、设置停顿时间、设置重复朗读次数六个功能。跳读点名、顺序点名、随机点名的实现实现原理:设置跳读点名标志位skipFlag和随机点名的标志位rndFlag,类型为boolean型。当进行跳读点名时跳读标志位skipFlag值为真,随机点名标志位rndFlag值为假;当进行随机点名时跳读标志位skipFlag值为假,随机点名标志位rndFlag值为真;当顺序点名时跳读点名和随机点名的标志位均为假。朗读过程时调用Timer1控件的Timer1_Time过程,在Timer1_Time过程中通

42、过判断标志位选择进行何种点名方式。主要代码如下:Private Sub playBtn_Click() 监测声卡,设置各种按钮的可用状态,设置声音的音量、速度等 If rndFlag = True Then 随机点名 skipFlag = False设置随机点名标志位值为真 scaleCount = rs.RecordCount * randomScale * 0.01 按百分比计算的随机点名人数上限 intScale = 0设置随机点名过程中已经被点到的人数为0 MsgBox 随机点名共会点到 & scaleCount & 人 提示随机点名会点到的总人数 Else跳读点名或顺序点名 If skipFlag = True Then 如果是跳读 rndFlag = False设置跳读标志位值为假 End If End If secondcheckFlag = F

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号