毕业设计-考场安排系统的系统设计与实现论文.doc_第1页
毕业设计-考场安排系统的系统设计与实现论文.doc_第2页
毕业设计-考场安排系统的系统设计与实现论文.doc_第3页
毕业设计-考场安排系统的系统设计与实现论文.doc_第4页
毕业设计-考场安排系统的系统设计与实现论文.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考场安排系统的系统设计与实现摘 要随着社会的不断进步,各个领域对信息化需求不断增加,同时智能化水平也在不断提升,高等教育的教务管理信息化要求也越来越高。“考场安排系统”是根据的信息化需求进行开发的。该系统采用了vc+6.0作为代码编写工具,并使用access数据库来存储和处理数据。通过对国内外专家学者在考场安排系统中的研究成果的分析之后,我们总结出一些系统开发的思路,并根据高校的实际资源状况进行有效、合理的考场安排。考场关键词:考场安排,数据库设计,手工考场安排,数据集合,半自动安排zhejiang gongshang university night school examination arrangements system system design and system to implementationabstractas society advances in all fields of information technology increasing demand while intelligent level has also been upgraded. our zhejiang gongshang university night school examination arrangements system is based on requirement of development of night school information. the system used as a code vc+6.0 preparation tools and the use of access database to store and process data. through examination arrangements for domestic and foreign experts and scholars in the research system analysis, we summed up the development of some systems thinking, and based on the actual night of zhejiang gongshang university and resources for effective and rational examination place.keywords:examination arrangements,database design,manual examination arrangements,data pool,semi-automaticexamination arrangement 目 录 第一章 引言 81.1 选题背景和选题意义 81.1.1 选题背景81.1.2 选题意义 81.2 当前考场安排系统的研究现状 8第二章 系统设计 102.1 系统功能分析 102.2 系统功能模块设计 10第三章 数据库设计 1031 数据库概念结构设计 1232 数据库需求分析 1333 数据库安全认证以及基本数据操作 15第四章 各功能模块建立 164.1 用户登入模块 164.2 资料管理模块 174.2.1 教室资料管理模块184.2.2 其他模块 184.3 考场安排模块 204.3.1 手工考场安排 204.3.2 半自动考场安排244.3.3 考场安排基本条件 254.3.4 考场安排特殊条件 26第五章 系统实现 275.1 系统功能实现275.2 系统环境配置325.3 开发工具介绍335.4 系统测试34第六章 结论与展望 35致谢 36参考文献 37附录(核心代码) 38 45考场安排系统的系统设计与实现第一章 引言11 选题背景和选题意义111 选题背景随着高校招生规模的不断扩大,高校在考场安排方面的花费越来越大,因此如何更加有效、合理地安排考场并合理利用现有资源,进一步提高现有资源的利用率已经为各大高校的学校领导所关注。由于近些年来各大高校的不断扩招,考场安排管理工作越来越复杂,给学校成教考务管理工作带来了巨大的压力。传统的考场安排工作基本是由人工来完成,其工作工程和基础主要依赖操作人员的经验,类似相关工作不仅比较烦琐而且往往带来的是花费巨大并且质量不高的后果。112 选题意义 考场安排系统能够在一定程度上解决在考场安排中人力、物力财力浪费以及资源的不合理调配,并且能够适应数据的动态变化,做到真正意义上的一劳永逸。考场安排是一个学校整个考务系统中相当重要的环节,如果由于考场安排编排表的制作周期延长而影响了正常的考试,那么将给学校的正常运做带来难以估计的后果。所以从考场安排的周期来考虑的话,一个能够快速制作,编排合理的考场安排系统就是一个优秀的考场安排系统。12 当前考场安排系统的研究现状国内在考场安排系统的研究中基本上是根据特定条件进行的,一般都是某个或者某些学校的特定情况,很少有可以通用的考场安排系统。因此对每个学校的不同情况都需要进行一次系统设计和开发。现在的排课系统大都是模拟手工排课过程,以“班级”为单位,运用启发式函数来进行编排的。这种课表编排系统有优势也有劣势,优势在于实现比较容易,但是劣势在于往往他兼容性较差,只能适合某类学校甚至某个学校。另外的一种应用趋势就是基于优先级的自动编排算法17,它是通过划分等价类、计算优先级等方法降低课程调度的算法复杂度, 采用简洁高效的快速排序和考场安排表匹配的方法,并引用操作系统中优先级调度的算法,对每一次的排序和考场安排表匹配进行优化控制,并且它引入了信号量的概念对每次考场安排结果进行验证和评定,最后产生适合需求的编排表,从而可以以较快的速度获得较为满意的考场安排结果,这种算法具有较高的兼容性。因此这种编排思想的可参考性较高,应用到我们的考场安排系统的机会也比较大。采用网络化的考场安排系统也是一个较新的研究方向,国内已经有了网络化考场安排系统的成功案例,这种网络化的考场安排系统是建立在学校校园网络的基础之上,为解决教师不能随时随地查询考场安排情况,以及根据实际需要调整教室和时间,当遇到某个教师临时重要事件不能及时参加监考时可以及时更换合适的监考教师。这种网络化的考场安排系统在发生突发事件时显得很有效,而且对于未来考场安排发展可能会占据主流位置。解决考场安排问题还有很多方法,比如说图论方法,拉格朗日松弛法模拟退火法,二次分配型法等等。这些算法研究不仅仅依靠单纯的数学方法来解决问题,而且还利用了运筹学中比如最短路径算法、着色算法等等。所以根据现在研究的经验我们需要充分利用运筹学思想将整个问题细化,并逐步进行解决,这样才能够做出完美的考场安排系统。当然对于一个考场安排系统来说最主要的是它的智能化程度,也就是系统对于考场安排的合理化程度。目前还没有完全智能的考场安排系统,主要原因是因为不确定因素过多,而且考虑的情况也有千千万万。而不确定因素又往往根据高校的特殊情况又会产生其他不确定因素。所以,对于一个考场安排系统的研究我觉得不仅仅应该在算法上做深入的研究,还要对实际情况进行深入分析,如果能够充分考虑到考场安排时可能产生冲突的因素,那么这样呈现在我们面前的将是一个好的考场安排系统。第二章 系统设计21 系统功能分析 本系统需要实现用户登入、考场编排以及信息录入等,所以主要模块包括:用户登入、资料管理和考场安排等模块。其中包含的主要功能有:l 用户登入,授权用户通过输入用户名和密码进入本系统进行相关操作。l 资料管理,包括教室资料、班级资料、监考教师资料、专业课程等四项基本信息的添加、修改、删除的操作。l 考场安排手动生成,通过手工固定班级课程手动安排具有固定记录数的考场安排系统。l 考场安排半自动生成,通过电脑随机分配教室和教师来达到考场的半自动安排。以上所列功能是考场安排系统所必需的功能,实现以上这些功能之后我们就可以根据需要添加辅助功能。22 系统功能模块设计对于“考场安排系统”来说,最重要的当然是考场安排这个环节,所以考场安排模块是必不可少的。对于数据量小的情况我们采取手动安排考场,当数据量大的情况下我们考虑半自动考场安排,也就是先电脑自动进行编排之后再人工手动进行修改,所以这样我们就有必要建立两个考场安排模式:手动生成考场安排表和半自动生成考场安排表。实现这两个功能我们需要数据来支持,由于我们采用的是access数据库,所以表名称可以用中文来描述,这样显得比较直观。根据考场安排所涉及的属性我们将某些属性集合在一起,并独立在四张表中,即:教室表、教师表、班级表、专业课程表,其中班级表和专业课程表又可以做一个视图,用来存放班级和专业课程的数据集合。当确定了表之后我们就需要考虑建立提供信息录入的界面,并且需要提供增加、修改、删除等功能。为了保证系统的安全性我们还需要考虑加入身份认证功能,这是系统安全所必需的。当然系统还需要美工,虽然这些不是系统的重点,但是一个能够吸引人眼球的系统能够让人有种舒适的感觉,使用者的心情会用的舒服。所以我们在系统的设计中穿插几张带有轻松元素的图片,增加了界面的美观程度。系统设计时我们考虑实现一个查询功能,可以根据班级查询该班级的课程考试安排情况,根据考试时间和教室的编号来用于教学楼的考场安排情况,以便能够让自修的同学知道哪些教室安排考场,并到空的教室自修等。还可以添加打印功能来提供考场安排表的打印。对于大的模块设计框架基本搭建完毕。我们现在所要考虑的是系统的智能化以及考场编排表的制作周期、合理化程度。对于一个考场安排系统来说智能化水平看的是考场安排这个模块,所以我们在考场安排时班级课程首先生成,这样就能对所要安排的系统的记录数固定下来,并且可适当利用随即数来增加课表编排的可换性。对于周期问题的改善主要还是依赖于算法对客观不确定因素的可确定能力,也就是对不确定因素做一些限制,而除了这些限制条件以外都是系统可接受的,那么通过诸如随即数或者其他方法就可以进行有限制地选择,这样保证了冲突发生的概率不会过大。对系统不确定因素的分析是整个系统合理性的主要焦点。第三章 数据库设计31 数据库概念结构设计利用实体-关系模型(e-r模型)可以表示数据库表之间的关联,图3.6是考场安排系统中数据库表之间的e-r图。从e-r图中我们可以看出数据库的各个模块之间没有直接的参数联系以及库的交叉关联,从而使数据库其他数据能够独立运行,并且在某一数据变动的情况下不会影响其他数据的正常运行。通过e-r图我们可以很直观的看出考场安排表中的班级名称和课程名称来源于班级表和专业课程表的关联,而他们之间关联之后能够对考场安排表的记录数做出限制,也就是说班级名称和课程名称构成了考场安排表的主键。在这个e-r图中监考教师表被使用两次,用于调用教师一和教师二,但是在e-r图里我们把他们放在同一表内。图3.6 浙江工商大学夜大考场安排系统e-r图n:1专业课程专业编号课程编号班级班级编号专业编号教室教室编号是否大教室监考教师教师编号教师名称考场安排表班级名称课程名称教室编号教师一教师二考试日期n:1n:1n:132 数据库需求分析根据数据前面介绍的对数据的要求,我们可以列出考场安排系统中所需的数据项和数据结构(表3.1中为详细的数据项和数据结构):l 教室:教室编号、是否大教室。符合第三范式。l 班级:班级编号、班级名称、专业编号、班级人数。符合第三范式。l 监考教师:教师编号、教师名称。符合第三范式。l 专业课程:专业编号、课程编号、专业名称、课程名称、考试时间。符合第三范式。l 考场安排表:班级名称、课程名称、教室编号、教师一、教师二、考试日期。符合第三范式。存放关联的数据的视图以及一些临时表:l 班级专业课程视图:用于关联班级和课程,包括班级名称、专业编号、专业名称、课程名称、考试时间(如表3.2)。l 临时班级课程教室表:存放半自动考场安排临时数据的表,包括班级名称、课程名称、考试时间、教室编号、教师一、教师二(如表3.3)。l 临时班级课程表:用于存放临时班级的班级课程,包括班级名称、课程名称、考试时间(如表3.4)。l 登入表:用于授权用户登入认证,包括用户名、密码。两个属性都是文本类型(如表3.5),该表符合第三范式。表3.1 考场安排系统中所需的数据项和数据结构数据库表字段名称字段类型类型长度是否主键班级班级编号文本10是班级名称文本20否专业编号文本10否班级人数数字整型否监考教师教师编号文本10是教师姓名文本20否表3.1 考场安排系统中所需的数据项和数据结构教室教室编号文本10是是否大教室是/否(布尔)1否专业课程专业编号文本10是课程编号文本10否专业名称文本20否课程名称文本30否考试时间文本10否考试安排表班级名称文本20是课程名称文本30教室编号文本10否教师一文本20否教师二文本20否考试日期文本10否表3.2班级专业课程视图字段名称数据类型类型长度是否主键班级名称文本20否专业编号文本10否专业名称文本20否课程名称文本30否考试时间文本10否表3.3临时班级课程教室表字段名称字段类型类型长度是否主键班级名称文本20是课程名称文本30考试时间文本10否教室编号文本10否教师一文本20否教师二文本20否表3.4临时班级课程表字段名称字段类型类型长度是否主键班级名称文本20否课程名称文本30否考试时间文本10否表3.5 登入表字段名称字段类型类型长度是否主键用户名文本20是密码文本20否33数据库安全认证以及基本数据操作对基本数据的操作需要通过安全认证,也就是用户的身份认证对于基本数据的操作我们可以在进入系统之后的,权限用户通过对资料管理模块中班级资料、教室资料、监考教师资料以及专业课程的资料的添加、修改和删除的操作来对考场安排所需的数据进行调整。在基本数据的输入规则虽然没有明确的定义,但是我们可以对格式进行统一,比如根据习惯有的人喜欢将日期输入为“某年.某月.某日”,有的人喜欢“某年-某月-某日”,而我们的数据表中定义了文本类型,所以可以根据习惯使用任何一种,但是为了美观起见,最好格式统一。第四章 各功能模块的创建41 用户登入模块用户登入模块是建立在主窗体上用于进入系统的唯一通道。它包括了四个tlabel、一个edit 、一个combox、两个button。在两个tedit中分别输入用户名和密码,然后通过点击登陆按钮对数据库进行查询来验证用户的合法性,并通过在输入错误信息后弹出对话框提示用户重新输入.在程序初始化时从数据库中取出所有权限用户的用户名,显示在下拉列表框中。登入界面如图4.1所示。在这个界面中最重要的是对记录的对比,也就是用户用户名和密码的校验。校验的核心代码如下:cstring strsql,strname,strpas,passward,m_strjiaose;m_id.getwindowtext(strname);if(degree=3)messagebox(对不起!您无权登录!,系统提示,mb_ok|mb_iconstop);this-oncancel();return;if(strname.isempty()messagebox(请选择用户名!,系统提示,mb_ok|mb_iconstop);degree=degree+1;return;strsql.format(select * from 登陆 where 用户名=%s, strname); m_recordsetptr=theapp.m_pado.readdatabase(strsql);m_psw.getwindowtext(passward);strpas=(char*)(_bstr_t)m_recordsetptr-getcollect(密码);strpas.trimleft();strpas.trimright();if (passward = strpas)cmydlg dlg;this-oncancel();dlg.domodal();elsemessagebox(您输入的密码不正确!请重新输入!,系统提示,mb_ok|mb_iconstop);degree=degree+1;图4.1用户登入界面42 资料管理模块在mainmenu组件中加入资料管理模块,它主要包括了四个小模块:教室资料、班级资料、监考教师资料、专业课程资料。资料管理模块及其子模块显示如图4.2所示。图4.2资料管理模块421 教室资料管理模块教室资料模块的主要功能是输入考场安排所需要的教室信息。其控件布局如图4.3所示, 由一个listctrl控件来显示所有的教室资料信息,教室资料的所有信息包括列名,所有数据均由数据库中取出自动生成。当用户选择其中的一行数据后,在下面的edit控件与combox控件中就会自动出现教室编号与教室是否为大教室的选择。界面中有四个控制数据库基本操作的button,分别完成插入、删除、修改等数据库的基本操作,并提供数据库操作的合法性检验。图4.3教室资料管理422其它模块除了教室资料管理模块之外,模块中还包括了班级资料、监考教师资料、专业课程资料三大模块。这三大模块的设计基本与教室资料管理相似。这三个模块所示如图4.4。图4.4 监考教师资料管理、班级资料管理、专业课程资料界面43 考场安排模块这个模块是整个“考场安排系统”的核心,重要包含了手工考场安排和半自动考场安排两个子模块。对于这两个模块的实现要求和一些设计思路我们会在下面做详细说明。431 手工考场安排界面设计如图4.6所示,程序设计的步骤为:1、-如果同一监考教师在同一时间在 两个不同的地方进行监考,则发生错误;2、课程名称与考试时间对应,通过课程名称检索出考试时间;3、检索考试安排表中,监考教师对应的考试时间,检索出所有教师一或教师二对应的考试时间;4、同一个教室在同一时间不可能提供两门不同的课程的考试,课程名称与考试时间对应,通过课程名称检索出考试时间;5、什么专业的学生考什么课程,班级名称对应一个专业编号,专业编号对应一个课程名称;6、把合法的信息全部插入到考试安排表中,刷新所有列表现实。图4.6 手工考场安排界面在手动考场安排中,最重要的是对用户输入的数据进行纠错,通过对话框的形式与用户进行交互。而通常我们所使用的纠错方法的代码如下:cstring strjs1,strjs2,strbjmc,strsql;m_js1.getwindowtext(strjs1);m_js2.getwindowtext(strjs2);m_bjmc.getwindowtext(strbjmc);cstring strkcmc,strkssj;m_kcmc.getwindowtext(strkcmc);strsql.format(select 考试时间 from 专业课程 where 课程名称 = %s,strkcmc);m_recordsetptr=theapp.m_pado.readdatabase(strsql);m_recordsetptr-movefirst();while(!m_recordsetptr-adoeof)strkssj=(char*)(_bstr_t)m_recordsetptr-getcollect(考试时间);m_recordsetptr-movenext();/-检索考试安排表中,监考教师对应的考试时间-strsql.format(select 考试日期 from 考试安排 where 教师一=%s or 教师二=%s ,strjs1,strjs1);m_recordsetptr=theapp.m_pado.readdatabase(strsql);/检索出所有教师一对应的考试时间if (m_recordsetptr!=false) m_recordsetptr-movefirst();while(!m_recordsetptr-adoeof)if (strkssj=(char*)(_bstr_t)m_recordsetptr-getcollect(考试日期) cstring tmp;tmp.format(%s在本日期已有其他考试安排,请安排其他老师监考!,strjs1);afxmessagebox(tmp);return;break;m_recordsetptr-movenext();strsql.format(select 考试日期 from 考试安排 where 教师一=%s or 教师二=%s ,strjs2,strjs2);m_recordsetptr=theapp.m_pado.readdatabase(strsql);/检索出所有教师一对应的考试时间if (m_recordsetptr!=false) m_recordsetptr-movefirst();while(!m_recordsetptr-adoeof)if (strkssj=(char*)(_bstr_t)m_recordsetptr-getcollect(考试日期) cstring tmp;tmp.format(%s在本日期已有其他考试安排,请安排其他老师监考!,strjs2);afxmessagebox(tmp);return;break;m_recordsetptr-movenext();/-同一个教室在同一时间不可能提供两门不同的课程的考试-cstring strjsid;m_kcmc.getwindowtext(strkcmc);m_jsbh.getwindowtext(strjsid);strsql.format(select 考试时间 from 专业课程 where 课程名称 = %s,strkcmc);m_recordsetptr=theapp.m_pado.readdatabase(strsql);m_recordsetptr-movefirst();while(!m_recordsetptr-adoeof)strkssj=(char*)(_bstr_t)m_recordsetptr-getcollect(考试时间);m_recordsetptr-movenext();strsql.format(select * from 考试安排 where 考试日期 =%s and 教室编号=%s,strkssj,strjsid);m_recordsetptr=theapp.m_pado.readdatabase(strsql);if (m_recordsetptr!=false) afxmessagebox(该教室已有考试,请选择另一教室!);return;strsql.format(select 专业编号 from 班级 where 班级名称=%s,strbjmc);cstring strzybh;/取出专业编号m_recordsetptr=theapp.m_pado.readdatabase(strsql);m_recordsetptr-movefirst();while(!m_recordsetptr-adoeof)strzybh=(char*)(_bstr_t)m_recordsetptr-getcollect(专业编号);m_recordsetptr-movenext();strsql.format(select 课程名称 from 专业课程 where 专业编号 =%s and 课程名称=%s,strzybh,strkcmc);m_recordsetptr=theapp.m_pado.readdatabase(strsql);if (m_recordsetptr=false) /说明没有找到afxmessagebox(该班无该项考试,请选择正确的考试安排!);return;strsql.format(select * from 考试安排 where 班级名称=%s and 课程名称=%s,strbjmc,strkcmc);m_recordsetptr=theapp.m_pado.readdatabase(strsql);if (m_recordsetptr!=false) /说明没有找到afxmessagebox(该班该项考试已安排完毕!);return;strsql.format(insert into 考试安排 values(%s,%s,%s,%s,%s,%s),strbjmc,strkcmc,strjsid,strjs1,strjs2,strkssj);theapp.m_pado.operaterecord(strsql);afxmessagebox(添加成功!);strsql.format(select * from 考试安排);m_recordsetptr=theapp.m_pado.readdatabase(strsql);show(m_recordsetptr); 以上为当判断教师二在当天是否被编排过的一种情况,对于这种情况我们是通过用户在选择未安排过的某个班级的某个课程之后,再选择教师二中的教师,然后查询数据库临时考场安排表中是否有符合在该门课程的考试时间中,有教师一与选择的教师二想同,如果相同说明教师二的选择有冲突,需要对教师二重新进行选择。同样的情况判断教师二在当天是否被编排过还需要判断选择的教师二是否在数据库临时考场安排表中有该考试时间内,有教师二与选择的教师二相同的情况。同理,我们判断教师一是否被编排过也是通过上面所描述的在该天教师一或者教师二中都不能有记录。对于同一考试日期内,一个教室只能提供一次考试的情况,我们通过在选择未安排过的某个班级的某个课程之后,选择教室编号,然后通过对班级专业课程表进行查询,查询该班级该课程的考试时间,然后查询该考试时间下是否有与用户输入的教室编号相同的,如果相同那么将输入错误提示:“该教室该天已经安排考试,请输入不同的数据!”。432 半自动考场安排在半自动考场安排中,由于考场的安排涉及到很多张数据库表,例如:教室表、监考教师表、班级表等等,我们主要是通过连接多个数据库表查询的复杂sql语句来实现自动生成考场安排的算法。算法的具体实现步骤如下:1、 去处要安排考试的班级,考试科目,考试时间。典型sql语句分析:(select 班级.班级名称,专业课程.课程名称,专业课程.考试时间 from班级,专业课程 where 班级.专业编号=专业课程.专业编号)从班级与专业课程两张表中去查找对应班级与考试相关的班级名、考试时间、考试科目等信息。2、 开始分配考试教室,取出所有的教室名,查找自动生成表,如果在本考试时间内没有安排就选择它。典型sql语句分析:(select 教师姓名 from 监考教师 where 教师姓名 not in (select 教师一 from 自动安排 where 考试日期=%s ) and 教师姓名 not in (select 教师二 from 自动安排 where 考试日期=%s )查询所有在所选出的日期中没有进行监考安排的老师,使用的是查询的嵌套。3、 在步骤2中已通过循环生成了所有符合条件的考试安排信息,在步骤3中将其插入数据库,同时刷新列表显示。4、 在手动调整功能模块中,主要是针对已生成的考试安排数据表,在授权用户进行插入、删除、修改等数据库操作时,根据考试安排的的基本条件(下文将详细讲述)拒绝执行不合法的操作,并给出提示给用户。图4.7 半自动考场安排form1图4.8半自动考场安排form2433考场安排基本条件1)同一监考教师不可能在同一时间在两个不同的地方进行监考。考虑到这个情况,我们系统的数据库设计时在考场安排表内通过对新增加的数据与数据库原有数据进行比较,如果有同一时间内有相同的教师一,或者相同的教师二,或者一条记录的教师一与另外条记录中教师二相同,那么都将被视为该类情况。对于监考教师一和监考教师二在一条记录中出现也视为此类情况。2)同一班级不可能在同一时间考两门不同的课程。为了直接避免这种情况的发生我们在数据库专业课程表中直接考虑课程与时间上的对应,这样就使得这种情况不会发生3)同一教室在同一时间不可能提供两门不同的课程的考试。对于这种情况我们在系统设计时将考场安排表中的班级和课程从班级专业课程表中取出,并从教室表中取得教室,如果考场安排表内教室编号和考试时间相同,将被视为此类情况。4)同一课程需要在同一时间内进行考试。对于这个我们在专业课程信息录入时就将课程与时间安排好,并存储在专业课程表中。5)由于存在大小班之分,所以必须根据学生人数数量安排教室的大小。我们的数据库设计在这方面还有点不足之处,我们不排大教室,一般都是用小教室提供单班考试。当系统考场编排半自动结束之后,然后可以根据需求使用大教室,并且多余的大教室我们做最后考虑。6)参加监考的两位监考教师不能为同一个人。但是还有种情况就是同名同姓的两个不同老师,虽然在数据库表中我们可以通过主键来区分,但是在界面显示中还是不大会分清楚,所以对于这种情况我们可以采用姓名之后加编号的方法,比如“王五1”、“王五2”等,这样就可以在直观上分清是哪位监考教师参加监考。434考场安排特殊条件1)对于监考教师的安排我们需要考虑合理安排监考教师的监考次数,这个可以采取当监考教师参加一次监考之后,为监考的监考次数后面加上1,每次先去监考次数小的教师。这种判定方法在实现方面比较复杂,为了能够既考虑到教师的合理监考次数,又考虑系统实现的简单性,我们采取了随机数取值的方法。2)对于大小教室的安排,我们采取优先安排小教室,然后特殊情况再使用大教室。考虑到这一点的原因是大教室的数量远远比小教室要少,因此考虑完小教室情况之后然后根据实际要求使用大教室。3)考试安排设置在每天晚上这个时间段。对于这种情况,我们就可以在时间安排上将一天时间做为一个时间单位,并且只要显示考试的日期就可以了,这样一来在时间的判断上我们的的工作量就可以减少很多。4)对于教师有特殊要求,比如该教师那段时期处于假期或者培训,或者某些教师需要先做安排的情况,我们可以提高这些教师的优先级,让这些教师先做安排。但目前由于算法上的原因我们的系统还未满足此项需求。第五章 系统实现51 系统功能实现在双击debug文件夹中的考场安排系统.exe后,首先弹出一个用户登入窗口,如图5.1所示。当输入正确的用户名和密码之后将进入主程序窗体,同时隐藏登入界面。如果连接失败将会提示“连接数据库出错!”或者“输入信息不完整,请重新输入!”或者“用户名密码不正确,请重新输入!”。进入主程序窗体之后我们首先需要录入考场安排所需要的数据。图5.1 系统登入界面由于缺少后台管理,所以管理员帐号和密码需要事先输入到数据库中,这个是本系统的一个不足之处。进入主程序窗口之后我们首先要输入本次考场安排所需要的基本数据,其中包括教室资料(如图5.2)、班级资料(如图5.3)、监考教师资料(如图5.4)、专业课程资料(如图5.5)。这四部分的结构基本上是相同的。由一列表显示已经输入数据库的信息。图5.2考场安排系统中教室资料管理图5.3考场安排系统中班级资料管理图5.4考场安排系统中专业课程资料管理5.5考场安排系统中监考教师资料管理在信息录入的时候我们需要特别注意的是专业课程资料管理。由于在设计时我们的考试时间在这里就已经定好了,这样做的目的是为了能够减少不稳定因素,使考场安排的编排出现不合理的几率能够降低。所以在信息录入的时候我们需要做出判断(如图5.6),我们需要先判断有多少班级的课程需要进行编排,然后确定需要在多少时间内将这些考试安排完。这个过程是一个取平均值的过程,通过对总的班级课程数目除以考试天数,然后得到平均值,并通过数学方法或者运筹学的方法得到最优方案,避免了某天的考场安排时由于安排班级过多而导致教室的不足。在考试天数的计算问题上我们可以采取这种方法:取考试课程数量最大值x2。这样的安排目的是确保考试之余能够提供复习时间,如果需要加长复习时间我们可以x2.5来计算天数。在安排课程和时间的时候我们需要主要注意:1)同一专业的不同课程的考试不能安排在同一天进行,当然视情况,最好安排间隔一天,中间的间隔天数能够提供复习。2)同一专业的班级必须在同一天参加同一门考试。这种情况是明显需要支持的。3)对于班级课程的安排要大致接近计算出来的平均数,不能有太多偏差。由于专业课程的录入是通过人工操作的,所以在时间上的编排需要人工来操作,系统在该点上还存在不足,如果能够将考试时间的安排能够做一个自动化安排将能够减少更多的人力资源。在上面的教师资料管理中我们还需要注意一个问题,就是如果教师重名的情况,对于这种情况我们需要在录入的时候做好标记,能够明显地区分两者或者更多重名。全部班级课程考试时间1安排考试的天数考试时间2考试时间n部分课程1部分课程2部分课程n图5.6 课程与时间的合理安排当完成相关的系统录入之后我们便可以对这些数据进行相关操作。首先我们先进行一次考场安排手工编排。如图 5.7所视,考虑到使手工编排不出现混乱的情况,我们可以将班级跟课程作为一个数据集合,然后分配教室和监考教师,当出现于本文中4.3.2所提到的基本要求相冲突的话系统将弹出一个对话框,告诉手工编排者选择其他教室或者其他教师,直到系统判定选择为合理的为止。当记录中包含了所有班级与课程的数据集之后,那么一个考场编排基本成型,这个时候为了优化考场编排,我们可以对记录再进行调整。图5.7 考场安排手动编排手工编排考场具有随意性和主观性,半自动考场生成将这种随意性和主观性大大削弱。我们只要点击半自动考场安排界面中的“生成考场安排表”按钮,系统就会自动编排考场(如图5.8所示)。记录数与班级和课程的数据集合数量相同。图5.8 半自动生成考场安排表点击“手动调整”按钮我们可以进入半自动考场安排表手动调整界面对数据进行相关操作(如图5.9),在这里主要是针对已生成的考试安排数据表,在授权用户进行插入、删除、修改等数据库操作时,根据考试安排的的基本条件(下文将详细讲述)拒绝执行不合法的操作,并给出提示给用户。 图5.9 半自动考场安排表手动调整52 系统环境配置本程序所使用的工具为vc+6.0.0,数据库设计所用工具是access 2000,软件测试环境为microsoft windows xp.本系统具有良好的可移植性,通过解压安装可以在普通计算机上使用。系统对硬件和软件配置有一定的要求,其中硬件配置:486以上档次的计算机,彩色显示器,内存8m,硬盘200m;软件配置:windows 98/2000/xp操作系统,具有sp2补丁。53 开发工具介绍5.3.1 visual c+简介:几乎所有世界级的软件,从业界领先的web浏览器到面向任务的企业应用,都是使用microsoft visual c+开发系统来开发的。要用c+来开发windows和web上的高性能应用程序,visual c+是效率最高的首选工具。visual c+ 6.0在不牺牲灵活性、性能和控制力度的同时,给c+带来更高水平的生产效率。除了intellisense technology(智能感应技术)和edit and continue(即编即调)等显著缩短开发时间的新特性外,visual c+ 6.0还为web开发和企业开发提供更良好的支持。microsoft visual c+ 6.0专业版的健壮的构件开发、强大的数据库工具和完备的internet支持将使您从中受益,创建出策略性的商务解决方案来。visual studio c+6.0采用一种非常巧妙的方法将原本非常复杂的windows编程步骤封装起来,使编程人员可以轻松容易地编写windows应用程序。visual c+6.0是microsoft visual studio6.0的一个子集,他对低版本开发程序兼容。它有如下的特点:(1) visual c+6.0提供了用于开发windows环境下的应用程序和简捷、快速的开发环境。利用visual c+6.0开发windows应用程序具有很高的效率。(2) visual c+6.0提供了mfc类,开发者只需要做少量的工作就可以得到功能齐全的windows应用程序。与使用c和windows sdk开发windows应用程序相比,使用visual c+6.0建立一个完美的windows应用程序所花费的时间要少得多。(3) visual c+6.0还提供了一个高度集成的工具集,使得在开发应用程序的全过程中都保证了较高的效率。集成化便于程序开发,开发者可以同时在编辑、建立、调试等不同任务之间快速切换,甚至可以同时进行。(4)调试方便:在程序调试时,在遇到编译错误时,会在输出窗口显示出错误类型、行号及错误提示等信息。在输出窗口中双击错误提示时,光标会自动指向出现错误的代码所在行应方便快速找出错误。visual c+支持断点调试,同时也可以在调试窗口观察有关变量的值,以方便查找出有关的逻辑错误。5.3.2 ado技术1) ado的技术特点 ado的全称是activex data object,它是微软公司为数据库应用程序开发的新接口。ado基于com,提供编程语言可利用的对象,它不仅面向visual c+,同时还提供面向其他开发工具的应用,如visual basic、vj等,甚至还提供面向诸如 vbscript、javascript等脚本语言的应用。ado的底层是ole db,不仅能访问关系数据库,也能访问非关系型数据库。ado对ole db的包装是相当成功的,相对于ole db中众多的接口来说,ado对象模型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论