C语言源程序的自动评判毕业设计论文

上传人:m**** 文档编号:564981578 上传时间:2022-08-27 格式:DOC 页数:67 大小:444.50KB
返回 下载 相关 举报
C语言源程序的自动评判毕业设计论文_第1页
第1页 / 共67页
C语言源程序的自动评判毕业设计论文_第2页
第2页 / 共67页
C语言源程序的自动评判毕业设计论文_第3页
第3页 / 共67页
C语言源程序的自动评判毕业设计论文_第4页
第4页 / 共67页
C语言源程序的自动评判毕业设计论文_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《C语言源程序的自动评判毕业设计论文》由会员分享,可在线阅读,更多相关《C语言源程序的自动评判毕业设计论文(67页珍藏版)》请在金锄头文库上搜索。

1、目 录第1章 引言111 背景介绍11.1.1 研究背景简介11.1.2 C语言简介1第2章 概要设计321 方案设计32.1.1 开发环境32.1.2 工作方式32.1.3 系统目标322 系统功能323 需要解决问题424 系统流程42.4.1 基本流程42.4.2 具体实现5第3章 详细设计731 系统模块化分73.1.1 添加文件对话框73.1.2 编译函数83.1.3 运行/评判对话框932 系统模块具体实现103.2.1 准备工作103.2.2 实现添加文件对话框113.2.3 实现编译函数153.2.4 实现运行/评判对话框19第4章 测试2641 测试方案2642 运行界面26

2、4.2.1 准备系统运行264.2.2 系统测试27结论30致谢32参考文献33附录A 外文参考文献(译文)34附录B 外文参考文献(原文)48第1章 引言11 背景介绍1.1.1 研究背景简介C语言是目前国际上广泛流行的、重要的计算机高级语言之一。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。对于学习计算机专业的学生来说,学好C语言将为今后学习其他编程语言打下良好的基础,而随着计算机应用的普及,更多的其他非计算机专业也会需要学习编写简单的程序,C语言也是一个很不错的选择。学习C语言,首先是要学习理论知识,阅读编程思想,阅读源代码,其次就是动手实践上机编写程序了。只有通过

3、自己编写程序,才能更好的掌握理论知识,发现不足,取得进步。传统的教学方式中,学生采用FTP,Email甚至手写的方式提交编程作业,老师一般采用逐一检查并试运行的手工检查方式,然后给出相应的得分。由于在编程作业的提交过程中,很多学生可能会把一些有语法错误以及结果不正确的程序提交上来,这就需要花费老师很多的精力和时间,效果也不是很好。当前,采用计算机对源程序直接进行评判还不是很普遍。因此,有必要开发一套简单易用的C语言源程序的自动评判系统,帮助老师检查学生的编程作业,提高老师工作效率,减轻老师负担。1.1.2 C语言简介C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言

4、,即可用来编写系统软件,也可用来编写应用软件。 早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系统在)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:对存地址的操作、位操作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。 C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。 1960年出现的ALGOL 60是一种面向问题的高级语

5、言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL语言。1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL语言。1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言,并用 B语言写第一个UNIX操作系统,在PDP-7上实现。 1971年在PDP-11/20上实现了B语言,并写了UNIX操作系统。但B语言过于简单,功能有限。1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母)。最

6、初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。1973年,K.Thom- pson和D.M.ritchie两人合作把UNIX的90%以上用 C改写。 后来,C语言多次作了改进,但主要还是在贝尔实验室部使用。直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意。1977年出现了不依赖于具体机器的C语言编译文本可移植C语言编译程序,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现。随着 UNIX的日益广泛使用,C语言也迅速得到推广。C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,C语

7、言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。 C语言主要有以下一些特点:(1)语言表达能力强。(2)语言简洁、紧凑,使用灵活,易于学习和使用。(3)数据类型丰富,具有很强的结构化控制语句。(4)语言生成的代码质量高。(5) 语法限制不严格,程序设计自由度大。(6)可移植性好。第2章 概要设计21 方案设计本课题的任务是完成一个C源程序的自动评判系统。首先需要解决的问题是确定整个系统的开发环境和工作方式,然后是确定系统所要达到的目标,接着分析系统所应完成的功能以及可能遇到的问题,最后给出具体实现的步骤。2.1.

8、1 开发环境经过与指导老师的交流,查阅有关资料,分析系统的整体情况,本系统更加类似于一个应用程序,再结合自己所学知识,决定采用微软的Visual C+集成开发环境来开发整个程序。Visual C+是Windows环境下最强大、最流行的程序设计语言之一。Visual C+可以用来开发各种类型、不同规模和复杂程度的应用程序,开发效率很高,生成的应用软件代码品质优良。2.1.2 工作方式分析整个系统,最主要的功能是:编译源程序,运行目标程序,目标程序输入输出的重定向。结合Visual C+开发环境来看,有批处理方式、普通应用程序方式、Add-in方式。考虑到Add-in的方式在使用Visual C+

9、编译器去编译C源程序的时候更加方便,并且Add-in的方式也可以利用Visual C+的可视化界面的开发功能,所以工作方式采用Visual C+下的Add-in方式。Visual C+ Add-In基本上就是实现了IDSAddIn接口的COM对象。通过这个接口,Add-in能够掌管Visual C+环境,并且执行特定的任务,例如在Visual C+环境下打开工作空间,编译工程等等。在使用Add-in方式的时候,首先需要打开Visual C+环境,然后加载add-in文件(*.dll)。2.1.3 系统目标本系统最终目的是为了减轻老师负担,利用计算机自动评判编程作业,替代手工检查方式。要求学生将

10、编写好的作业交至指定文件夹,然后老师运行本系统,编译,运行生成目标程序,通过比较程序输出与标准答案,可以得到每个源程序的评判结果。22 系统功能详细的分析整个系统功能应该包括:1. 从文件夹抽取源程序。2. 控制Visual C+编译器编译源程序。3. 以测试数据运行生成的目标程序。4. 程序输出与标准输出比较。5. 根据比较结果得到评判结果。23 需要解决问题1. 存放C源程序的文件夹的组织方式和文件夹中C源程序的命名方式。2. 程序通过何种方式提取C源程序。3. 用程序控制Visual C+编译器去编译C源程序。4. 如何处理编译时出错,没有生成目标程序的C源程序。5. 通过何种方式运行编

11、译之后生成的目标程序。6. 在运行目标程序时,如何自动完成目标程序的输入和输出。7. 对于运行目标程序时异常情况的处理。8. 采用何种方式比较输出结果和正确答案,以及如何存储比较结果。24 系统流程2.4.1 基本流程基本上本系统是一个顺序执行的过程,系统的实现也是一步一步来的。下一个模块需要用到上一个模块的数据。系统流程图如图1-1所示。1. 系统从文件夹提取出所有的C源程序。2. 系统控制Visual C+的编译器去编译提取出的C源程序,得到相应的生成的目标程序(exe)。3. 系统以正确输入数据运行生成的目标程序(exe)。4. 系统提取运行目标程序(exe)得到的输出数据。5. 系统将

12、输出数据与正确答案进行比较。6. 根据比较结果得到评判结果。图1-1 系统流程图2.4.2 具体实现根据系统应该完成的功能,结合需要解决的问题,系统的具体实现如下:1. 文件夹的组织方式:每一个题目设置一个文件夹,同一题目的所有编程作业(只交后缀名为*.c的文件)交至对应的唯一文件夹下。2. 每个文件夹中C源程序的命名方式:以学号命名,后缀名为*.c,这样每个文件夹中的C源程序是唯一的,在评判时能更直观的得到结果。3. 设置一个基本对话框,通过列表控件来提取选择的一个文件夹下的所有C源程序。4. 编译方面,Visual C+不能直接编译后缀名为*.c的C源程序,因此提前新建一个WIN32空白工

13、程文件,然后将C源程序的后缀名改为*.cpp,放至空白工程中,便可以解决不能直接编译的问题。通过Add-in接口,控制整个Visual C+环境,打开已放入改了后缀名的C源程序的空白工程文件,然后便可进行编译。在这里要设置循环,对列表框中的每一个C源程序都进行编译。5. 循环过程中,编译后生成目标程序的C源程序,从空白工程文件的Debug文件夹中复制其目标程序到暂存的文件夹,并用其学号来命名生成的目标程序。然后循环继续直到所有C源程序都完成编译。6. 对于编译后没有生成目标程序的C源程序,视为编译错误,将此结果先一步存至评判结果处。7. 编译全部完成后,设置弹出一个对话框,用于输入测试数据、运

14、行正确的目标程序,得到正确答案。同时通过列表框提取已经生成的所有以学号命名的目标程序。8. 对于编译正确,已经生成的目标程序,设置循环,每次循环过新建一个进程来运行应用程序,如果程序正常结束,则关闭进程,循环继续去运行下一个目标程序。9. 在运行目标程序时,通过管道技术来完成输入输出数据的重定向问题。10. 对于目标程序运行时可能出现的种种异常情况,例如死循环等,通过设定一个时间,超出这个时间后进程强制结束来处理,进程强制结束后主循环继续,同时判定为运行时错误。11. 在开始循环运行所有目标程序之前,需要老师首先运行此题目正确程序生成的应用程序,并且输入运行数据(如无需数据输入则省略此步骤),

15、得到正确的输出数据,存入一个编辑框。然后每次运行生成的目标程序得到输出时与编辑框中字符串比较,来得到比较结果。结果是相同或是不同。12. 最后的评判结果:没有生成目标程序,判为编译出错-50分;生成了目标程序,但是输出与正确答案不同,判为运行错误-60分;生成了目标程序,并且输出结果与正确答案相同,判为程序正确-100分。第3章 详细设计31 系统模块化分根据系统所应该完成的功能,以及考虑到使用的方便性,将系统划分为三个模块,其中包括两个基本对话框和一个函数。3.1.1 添加文件对话框此对话框需要完成的功能、遇到的问题及解决办法:1. 初始化:在系统运行之前删除空白工程文件中不需要的文件,清空相关的文件夹。此功能通过对话框上的一个“初始化”按钮完成。在系统运行选择C源程序文之前,需要对相关文件夹和文件进行处理,有删除文件夹、清空文件夹、删除文件。而在Visual C+中是不能直接删除非空的文件夹的,也没有清空文件夹的函数,文件是可以通过库函数DeleteFile()直接

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号