版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告题 目:在线考试系统课程名称:C#S程设计学 院:信息工程学院专 业:软件工程班 级:15软件1学生姓名:马铭璐学 号:20150305142指导教师:于启红成 绩:开课时间:2017-2018 学年 第二 学期一、系统的应用背景1.1.1 系统的应用背景1.1.2 系统的功能!.1.3 系统预览2.二、 系统概要设计 2.2.1 系统实现方案和系统功能模块22.2 数据库逻辑设计 2.三、系统详细设计3.3.1 自动出题功能的设计 3.3.2 监控操作功能的设计 4.3.3 校对评分功能的设计9.3.4 时间提醒功能的设计10四、系统程序设计U4.1 自动出题功能的实现 114.
2、2 监控操作功能的实现114.3 校对评分功能的实现144.4 时间提醒功能的实现14五、总结.15.参考文献.16.在线考试系统一、系统的应用背景1.1 系统的应用背景随着计算机技术的快速发展,学校管理和教学的信息化发展也有进步,各个环节都均衡 发展,从软硬件双方面把学校建设成一流的信息管理、教育教学的平台。目前设计开发的计 算机考试系统也是其中重要的一个方面。传统的考试由于涉及到组织命题、试卷印刷、考试 安排、组织阅卷等诸多环节,考试的时间周期长、效率低下。显然,随着考试类型的增加和 考试要求的提高,教师的工作量将会愈来愈大,并且其工作将是项烦琐和容易出错的事情, 可以说旧式的考试已经不能
3、适应现代考试的需求了。人们急切要求利用一些技术来进行计算 机考试,以缓解教师的工作负担和提高工作效率,与此同时提高了考试的质量。其中文件操作是使用 Windows操作系统必须掌握的一项基本技能,已成为计算机初级操 作员考证、计算机文化基础课考试中必考内容之一1。目前,这些考试大多采用机上考试系统。文件操作题必须提供考试所需的各文件夹及文件,而且对考生操作的要求需要做到实时 监控来判断考生操作是否正确。因此,Windows文件操作题考试应解决自动评分技术关键技术问题。目前,许多专家已有 计算机应用基础考试系统的研究,本设计主要描述自动评分技术的实现。1.2 系统的功能界面需要达到的要求是要能显示
4、题目,提示时间,选择下一题,提交所有操作。界面结 构如下图1所示:图1界面结构图1.3 系统预览窗体上一个text控件用于显示题目,默认显示提示信息:考生文件夹位于 D盘stu文件夹。一个label标签显示分,一个label标签显示秒,一个button用于进入下一题, 一个button 用于提交评分,窗体的标题为“windows操作题”。实际界面图2如下所示。16图2实际界面二、系统概要设计2.1 系统实现方案和系统功能模块针对需求分析提出来的运行流程,概要设计这里对自动出题、监控操作、校对评分、时 间提醒这四项功能根据需用到的技术进行设计。2.2 数据库逻辑设计在form窗体加载时,程序已经
5、完成操作题目、正确操作记录的读取。程序中使用到的数 据,在各个函数方法中都可以访问,所以定义全局变量最好。全局变量的定义所下表1所示:表1全局变量名称类型作用初始值mintInt分钟59curInt当前操作题号0strtextString口存放题目无studoneString口存放考生操作无sysdoneString存放正确操作无myDocsstring考生文件夹d:stuscssInt秒钟59三、系统详细设计3.1自动出题功能的设计自动出题这个功能使用到了,StreamReader这个类,在读写文件的过程中,Filestream只可以进行以字节为单位原始数据流进行读写操作,为此,C#中提供了
6、功能更加强大的StreamReader来支持文件的读写.StreamReader可以进行以字符为单位的数据读写操作。我们使用到构造函数 StreamReader(String string, Encoding encoding)。这里的 String 对象不是简单的字符串而是具体文件的地址,然后根据用户选择编码去读取流中的数据。自动出题功能是是一项非常智能的功能,旨在题库中随机检索出指定数量的题目,按顺 序显示出来,本设计的题库题目不多,实现了题目的全部检索,按顺序显示。题库中题目按 通过文本的方式保存在考生文件夹的"question.dat ”文件中,每到题目的存放格式如下:题目1
7、行数n1行1行2行n1题目2行数n2行1 行2行n2题目n行数nn"question.dat”文件内容如图3所示。程序在创建form对象时候,调用form对象的构造 函数通过字节流将整个文本按行读入,首先读入行数n,知道这个题目有几行,接着读入 n行字符,存放在字符串数组string口 strtext里,接着读入下一题的行数。文件立端相©格式。互看电:帮助中b1,请在聿J,文件夹;氤,炭件夹中“下查找阪总的Jpg文件,并将文件移动到“二道在考学笠住去工宠卧下岗羯 0?在若£我?决下建立之格 (2)在考生文柞夹下.查找,F长操作到看WORD文档非文 A”文件夹!小文
8、上,将纪移动瞿 董芸1 轩薪筋整露口的文 与将八MVFILE ”文件b移动到考生文舛岁F文任正下的噬的文档仰/文件.并为其移动到"删FILE/文择夹.e出誓”两个文文文交立 :建 *夹中 *夹 ,文文件 作* M文 选等 下二至一一 如:”报 成,4五一 元建建的 下下下下 夹头夹夹图3文件内容3.2监控操作功能的设计监控操作,需要利用到 Windows的文件变化通知,调用CreateFile 函数获得文件夹句柄, 再调用 ReadDirectoryChangesW 获得文件变化通知。这里要熟悉 CreateFile 和 ReadDirectoryChangesW 的使用。Creat
9、eFile 这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:控制台对象、通信资源对象、目录对象 (只能打开)、磁盘设备对象、文件对象、邮槽对象、 管道对象。其函数原型:HANDLE CreateFile(LPCTSTR lpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTES IpSecurityAttributes,DWORDdwCreationDisposition,DWORDdwFlagsAndAttributes,HANDLE hTemplateFile);lpFileName 一个
10、指向无终结符的字符串的指针,来指明要创建或打开的对象的名字。dwDesiredAccess指明对象的控制模式。一个应用程序可以包含读控制、写控制、读/写控制、设备查询控制。这个参数的取值可以是下面这些的组合如下表2所示:表 2 dwDesiredAccess 参数表参数作用0指定设备查询控制:程序可以不访问设备就查询到设备属性。GENERIC_READ指定读控制,可以从对象中读取数据(指针将可以移动)。GENERIC_WRITE指定写控制,可以向对象中写数据(指针将可以移动)。dwShareMode指定对象的共享模式。如果dwShareMode=0,表示是互斥使用的。如果CreateFile打
11、开成功,则别的程序只能等到当前程序关闭对象句柄CloseHandle后才能在打开或使用。 使用下面这些值的组合来表示对象的共享模式如下表3所示:表3 dwShareMode参数表参数作用FILE_SHARE_DELETE打开操作只有在删除请求发生时才能返回成功FILE_SHARE_READ打开操作只有在读控制请求发生时才能返回成功FILE_SHARE_WRITE打开操作只有在写控制请求发生时才能返回成功IpSecurityAttributes 一个指向 SECURITY_A TTRIBUTES 结构对象的指针,决定返回的句 柄是否被子进程所继承。如果 IpSecurityAttributes参
12、数为NULL句柄就不能被子进程继承。dwCreationDisposition指明当打开的对象存在或不存在的时候各需怎样处理。这个参数必 须是一下值的其中之一,参数如下表4所示:表 4 dwCreationDisposition 参数表CREATE_NEW创建新文件/对象(当对象已经存在是将返回失败)。CREATE_ALWAYS总是创建(如果对象存在就覆盖它,清 除当前属性,把文件属性和dwFlagsAndAttributes 指定的标志相结合)。OPEN_EXISTING打开文件(如果不存在就返回失败)OPEN_ALWAYS存在就打开;若不存在,假如dwCreationDisposition
13、 =CREATE_NE般创建一个新文件。TRUNCATE_EXISTING存在就打开,且清空文件内容 (至少要 有GENERIC_WRITE 权限);若义件不 存在就返回失败。dwFlagsAndAttributes 指定文件属性和标志。hTemplateFile把具有GENERIC_READ权限的句柄指定为一个模板文件。这个模板文件 提供了文件属性和扩展属性,用于创建文件。而ReadDirectoryChangesW如果函数成功,返回值为非零。函数原型如下所示:BOOL WINAPI ReadDirectoryChangesW(_inHANDLE_outLPVOID_inDWORD_inBO
14、OL_inDWORD_out_optLPDWORD_inout_optLPOVERLAPPED_in_optlpCompletionRoutine);hDirectory为对目录进行监视的句柄, 访问权限。hDirectory,IpBuffer,nBufferLength,bWatchSubtree,dwNotifyFilter,1PBytesReturned,©Overlapped,LPOVERLAPPED_COMPLETION_ROUTINE被监视的目录必须打开FILE_LIST_DIRECTORY 的lpBuffer为一个指向DWORD型的缓冲区,其中可以将获取的数据结果将其返
15、回。这个缓冲区的定义是 FILE_NOTIFY_INFORMATION 结构。 这个缓冲区充满要么同步或异步,这取决于如何打开目录什么价值给予©Overlapped参数。nBufferLength,指lpBuffer的缓冲区的大小值,以字节为单位。bWatchSubtree,监视子目录.一般选择 TRUEdwNotifyFilter ,对文件过滤的方式和标准。该过滤器的标准,功能检查,以决定是否等待操作完成。这个参数可以是一个或多个下列值,参数如下表5所示:表 5 dwNotifyFilter 参数表参数作用FILE_NOTIFY_CHANGE_FILE_NA任何文件名改变都会查看所
16、在目录或子ME目录的变更,并将结果通知给等待操作返回。变化包括重命名,创建或删除文件。FILE_NOTIFY_CHANGE_DIR_NAM任何目录名称改变都会查有所在目录或E子目录的变更,并将结果通知给等待操作返回。改变包括建立或删除一个目录。FILE_NOTIFY_CHANGE_ATTRIBUTESFILE_NOTIFY_CHANGE_SIZEFILE_NOTIFY_CHANGE_LAST_WRITEFILE_NOTIFY_CHANGE_LAST_ACCESSFILE_NOTIFY_CHANGE_CREATIONFILE_NOTIFY_CHANGE_SECURITY任何属性变化,都会查看所在
17、目录或子目 录的变更,并将结果通知给等待操作返 回。任何文件大小的变化, 都会查看所在目录 或子目录的变更,并将结果通知给等待操 作返回。操作系统检测改变文件大小,只 有当该文件被写入到磁盘时发生。操作系统使用广泛缓存,检测时才会发生的缓 存足够同满。任何改变过去修改时间的文件 ,都会查 看所在目录或子目录的变更, 并将结果通 知给等待操作返回。操作系统检测改变过 去写的时间只有当该文件被写入到磁盘。任何改变文件最近访问时间, 都会查看所 在目录或子目录的变更, 并将结果通知给 等待操作返回。任何改变文件的创建时间的, 都会查看所 在目录或子目录的变更, 并将结果通知给 等待操作返回。任何安全
18、描述符被改变的,都会查看所在 目录或子目录的变更, 并将结果通知给等 待操作返回。1PBytesReturned同步调用,将接收的字节数转入IpBuffer参数。©Overlapped 一个指针的重叠结构,提供供数据时使用的异步操作。否则,这个值为NULL。lpCompletionRoutine 一个指针一个完成例程如果在呼叫使用函数操作时已经完成或取消和调用线程是在alertable等待。状态。ReadDirectoryChangesW 该函数用来监控文件夹变化,基本步骤是:(1)使用CreateFile打开目录,要取得一定权限,打开目录的时候一定要包含FILE_LIST .DIR
19、ECTORY 参数;(2)然后使用该函数监听,收到系统的消息后,从 Ipbuffer里面取得Action和Filename。该函数可以同步调用或者异步调用,是同步还是异步取决于CreateFile时给的参数,和该函数的第 7 个参数 LPOVERLAPPED ©Overlapped :(1) 同步调用,则CreateFile时使用FILE_LIST .DIRECTORY,第7个参数设置为nil ;(2) 异步调用,则 CreateFile时还要指定 FILE _FLAG .OVERLAPPED ,第7个参数还要给个值。还有要注意的是第三个参数和第四个参数设置缓冲区,最大64KB如果监
20、视目录下一次操作太多的文件,超过缓冲区(缓冲区溢出),就会丢失消息。创建线程调用ReadDirectoryChangesW ,将考生没操作一题的记录按指定的格式用字符串 数组变量string studoneW:存下来。3.3 校对评分功能的设计同样这个功能使用到了,StreamReade这个类,正确的操彳记录保存在“check.dat”文件中,存放格式如下:操彳1行数n1行1行2行n1操彳2行数n2行1行2行n2操彳n行数nn"check.dat” 文件内容如图4所示:文件也)镰辑11格式)查看。帮助理)10添加Old新建文件来Num删除 8加 改修改 删除 僚加 卷改1添加Old图
21、图新建文件夹 图片之 夹心2.jp 522.j四2夹心1. jpq 21.jpq 2New修改 删除 懿 12 添加 OldN9W新建妾任麦nme新硅文件夹MVFILE图4文件内容程序在创建form对象时候,调用form对象的构造函数通过字节流将整个文本按行读入, 首先读入行数n,知道这个题目有几行,接着读入n行字符,存放在字符串数组 string口 sysdone 里,接着读入下一题的行数。3.4 时间提醒功能的设计时间提醒的实现使用到.net提供的 System. Windows . Forms. timer控件,它直接继承自 Componet. Timer控件只有绑定了 Tick事件,和
22、设置 Enabled=True后才会自动计时,停止计 时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用 Start()方法来启动计 时器。Timer控件和它所在的Form属于同一个线程;将间隔时间timeh. Interval设置为1000毫秒二1秒,在form_load()的时候调用timer. Start()方法启动计时器,timer_Tick()方法实现 在每隔1秒的时间里更新label标签,显示剩余时间。当时间到的时候,自动评分。计时器启动,时间变化,时间提醒功能工作流程如下图5所示:图5工作流程四、系统程序设计4.1 自动出题功能的实现由于全部的题目都存放在
23、字符串数组string口 strtext中,所以只要将strtext cur显示在Text文本框上,同时更新cur的值即可,实现代码如下所示:private void button2_Click(object sender, EventArgs e)if (cur < 10)cur+;textBox1.Text = strtextcur;button2.Text ="下题"4.2 监控操作功能的实现直接调用概要设计提到的CreateFile和ReadDirectoryChangesW 这两条 API, CreateFile获 得句柄,ReadDirectoryChan
24、gesW接收句柄监控指定的考生文件夹目录,并将监控的记录按题 号保存在字符串数组 string studone中,实现代码如下所示:public void myThreadMethod() IntPtr hDir = CreateFile(myDocs, FILE_LIST_DIRECTORY, FILE_SH ARE_READ | FILE_SHARE_WRITE |FILE_SHARE_DELETE, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG _BACKUP_SEMANTICS, IntPtr.Zero);if (hDir = IntPtr.Zero) M
25、essageBox.Show("文件创建失败"+ Marshal.GetLastWin32Error ();return;IntPtr pBuf = IntPtr.Zero;try pBuf = Marshal.AllocHGlobal(int)BUFSIZE); uint bytesReturned;while (ReadDirectoryChangesW(hDir, pBuf, BUFSIZE, true, FILE _NOTIFY_CHANGE_FILE_NAME |FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_ CHANGE_L
26、AST_WRITE, out bytesReturned,IntPtr.Zero, IntPtr.Zero)string actions = new string "(未知操作)","添加"," 删除","修改", "Old name ", "New name " ;IntPtr pCurrent = pBuf;while (pCurrent != IntPtr.Zero)/ Read file length (in bytes) at offset 8int fileLen
27、 = Marshal.ReadInt32(pCurrent, 8);/ Read file name (fileLen/2 characters) from offset 12string file = Marshal.PtrToStringUni(IntPtr)(12 + (int)pCurrent), fileLen / 2);/ Read action at offset 4int action = Marshal.ReadInt32(pCurrent, 4);if (action < 1 | action >= actions.Length) action = 0;if (
28、action != 3)studonecur += actionsaction + file + "rn"/ Read NextEntryOffset at offset 0 and move pointer tonext structure if neededint inc = Marshal.ReadInt32(pCurrent);pCurrent = inc != 0 ? (IntPtr)(inc + (int)pCurrent) : IntPtr.Zero;/elseConsole.WriteLine("ReadDirectoryChangesW fail
29、ed. " + Marshal.GetLastWin32Error();finallyif (pBuf != IntPtr.Zero) Marshal.FreeHGlobal(pBuf);CloseHandle(hDir);以下方法通过线程实现,执行于Form1_Load()方法中,实现代码如下所示:Thread threadl = new Thread(myThreadMethod);thread1.Start();4.3 校对评分功能的实现这个功能的实现主要是通过比较字符串数组string口 sysdone和string口 studone 。从sysdone1到studone10
30、依次同studone1 10比较,相同则加10分。实现代码如下:private void check() int grade = 0;for (i = 1; i <= 10; i+) if (string.Equals(sysdonei, studonei)grade += 10;MessageBox.Show("本次操作得分:"+ grade.ToString();4.4 时间提醒功能的实现时间提醒,每隔一秒钟执行一次timer1_Tick(),更新窗体上的时间信息,实现代码如下所示:private void timer1_Tick(object sender, E
31、ventArgs e)if (mint >= 0)scss-;if (scss = 0)mint-;labell.Text = mint.ToString() + "分";scss = 59;label2.Text = scss.ToString() + "秒"; else check(); 在Form1_Load()中初始化Interval时间间隔,设定Tick事件,启动计时器,实现代码如下 所示:this.timer1.Interval = 1000;this.timer1.Tick += new System.EventHandler(this.timer1_Tick);this.timer1.Start();五、总结针对高校学生在 Windows平台核心编程及 Windows上机操作题考试等问题,本文设计了Windows上机操作题考试软件。主要采用C黜言,利用Visual Studio作为开发工具,对Windo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南卫生健康职业学院《演讲与辩论》2023-2024学年第一学期期末试卷
- 2025年度私人车辆转让及绿色环保认证合同3篇
- 2025版金融风险评估与管理服务协议2篇
- 海南师范大学《欧洲现代主义建筑选读》2023-2024学年第一学期期末试卷
- 二零二五年度影视作品制作担保合同3篇
- 二零二五年度拆迁项目综合评估居间代理服务协议书模板2篇
- 2025年度版权购买合同属性为图书出版权2篇
- 二零二五年度智能办公家具销售与服务协议3篇
- 2025年出口贸易融资续约合同范本3篇
- 幼儿园财务管理制度细则模版(2篇)
- SQL Server 2000在医院收费审计的运用
- 北师大版小学三年级数学下册课件(全册)
- 工程临时用工确认单
- 简约清新大气餐饮行业企业介绍模板课件
- 氮气窒息事故案例经验分享
- 某公司年度生产经营计划书
- 厂房租赁合同标准版(通用10篇)
- 《教育心理学》教材
- 易制毒化学品安全管理制度(3篇)
- 建设单位业主方工程项目管理流程图
- 断裂力学——2Griffith理论(1)
评论
0/150
提交评论