c语言考试系统(共12篇)
c语言考试系统 篇1
操作系统是计算机系统的重要组成部分, 也是各大高校计算机专业必修的专业课程之一, 学好操作系统是学习计算机其他知识的重要基础。文件系统是操作系统原理知识中的一部分, 本文将介绍利用c语言实现简单文件系统, 包括用户注、用户登录以及文件操作等功能。其中, 文件操作主要包括创建文件、删除文件、现实文件信息、修改文件的执行权限、打开文件、读文件以及写文件等。
1 用户注册
总界面 (如图1所示) 上选择2, 即可进行用户注册。输入新用户的用户名按回车显示注册成功。如图2所示。
实现用户注册的关键思路如下: (1) 如果登录信息文件不存在, 创建一个; (2) 输入用户注册名; (3) 检验该用户名是否被别的用户占用, 如果占用, 回到 (2) , 否则 (4) ; (4) 创建该用户的用户文件, 用于管理该用户的文件。
2 用户登录
总界面 (如图1所示) 上选择1, 即可进行用户登录。输入用户名按回车以后, 显示该用户有哪些文件, 以及对文件能实现哪些操作。如图3所示。
实现用户登录的关键思路如下: (1) 输入用户登录的用户名; (2) 从登录信息文件中查找是否有该用户, 如果没有转 (1) , 否则转 (3) ; (3) 登录成功, 并显示该用户的所有文件, 以及对文件能进行的操作。
3 对文件实现的操作
用户对文件能进行创建、删除、打开、读取和写入操作。
在图3中输入1, 选择了创建文件的操作, 输入create>用户名, 即可创建文件。如图4所示, 输入create>filea即创建了文件filea。
创建文件的关键思路如下: (1) 输入需要创建的文件名; (2) 如果该文件名存在, 转到 (2) , 否则转 (3) ; (3) 将该文件信息 (文件名和文件长度) 写入该用户的用户文件中。
在图3中输入3, 选择了创建打开文件的操作, 输入open>文件名, 即可以记事本的方式打开文件。
在图3中输入5, 选择了向文件写入信息的操作, 输入write>文件名, 即可将信息写入文件。如图5所示, 有两种写入方式:覆盖原文件和在原文件末尾写入。
文件写入信息的关键思路如下: (1) 输入文件名; (2) 检验文件名是否存在, 如果不存在转 (1) , 否则转 (3) ; (3) 选择写入方式; (4) 将文件内容写入文件的磁盘位置中, 将文件长度写入用户文件中。
在图3中输入4, 选择了读取文件内容的操作, 输入read>文件名, 即可将文件内容读出。如图6所示。
读取文件的关键思路如下: (1) 输入文件名; (2) 检验文件名是否存在, 如果不存在转 (1) , 否则转 (3) ; (3) 将该文件信息逐一输出到终端。
4 结语
本文只是实现了用户注册登录后操作文件系统的基本功能、高级功能, 如显示文件信息、修改文件执行权限等, 以后有待实现。
参考文献
[1]杨章伟.21天学通C语言 (第二版) [M].北京:电子工业出版社, 2011.
[2]陆丽娜.计算机操作系统[M].北京:高等教育出版社, 2012.
[3]汪胡青, 刘道才.操作系统答疑解惑与典型题解[M].北京:北京邮电大学出版社, 2012.
c语言考试系统 篇2
#include
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//课程信息结构体
{
int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * next;
};
struct student//学生信息结构体
{
int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student * next;
};
void Ms
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);
}
void keyboardc()//录入课程子函数(从键盘录入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf(“课程编号 课程名称 学分 课程人数上限 ”);
scanf(“%d%s%d%d”,&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head1=NULL;
while(p1->num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf(“%d%s%d%d”,&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
void filec()//录入键盘子函数(从文件录入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf(“输入要读入的文件路径:”);
getchar();
gets(filepath);
if((fp=fopen(filepath,“r”))==NULL)
{
printf(“找不到%s文件! ”,filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
void inputc()//录入课程主函数
{
int i;
printf(“ 录入课程信息 ”);
printf(“ 1.从键盘录入 ”);
printf(“2.从文件录入 ”);
printf(“3.返回主菜单 ”);
printf(“请选择(1~3): ”);
scanf(“%d”,&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//课程管理子函数(增加课程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
DSP嵌入式系统下的C语言开发 篇3
关键词:DSP嵌入式系统;C语言;软件开发
中图分类号:TP368.12 文献标识码:A 文章编号:1674-7712 (2014) 06-0000-01
随着社会的不断发展,技术的发展速度也在不断飞跃,在通信领域、电子信息领域、自动控制领域、软件无线电领域和信息家电领域等,DSP都取得了较为广泛的发展和应用。按照以往的经验来说,在对DSP嵌入式产品进行开发的时候往往都采用控制器的汇编语言来进行编写,但是到目前来说,很多领域都认为采用C语言进行DSP嵌入式的语言开发更加方便。
一、DSP嵌入式系统下的C语言开发过程
本研究采用TMS320F240芯片进行研究,其整个开发过程可分为五步。
(一)对C语言的源程序进行编辑
在对该系统软件进行编写的时候可以采用任何的编辑器进行源程序的书写,比如NOTEPAD、EDIT等,需要注意的是,程序的命名需要以“.C”为后缀进行存盘。而程序的源代码既可以写在一个“C文件”里,也可以写在多个“C”文件里面,但是对于一些函数的原型声明或者是预定义变量则可以集中地放置在一个头文件里面。要特别注意,一定要在C程序的前面用#include“c240.h”将寄存器的文件包括在其中。
(二)对源程序进行编译
编辑好C语言的源程序以后就可以采用DSPCL编译程序对其进行编译,最终生成OBJ文件。
在编译的时候所采用的格式:DSPCL 源文件名 参数
举例来说:DSPCL EX1.C -V2XX -GK -MN
其常用参数的意义是:V2XX表示C编译器选择的处理器是2XX系列;GK代表的是保留编译所生成的汇编文件,也就是(.ASM)文件;MN表示正在进行的正常优化。而其他的参数则需要参考DSP的编译器手册,假如存在多个源文件,那么需要对其分别进行编译,每一个源文件在编译之后都会生成一个ASM文件和OBJ文件[1]。
(三)目标文件的链接
IT公司的汇编器和编译器所创建的目标文件采用的是COFF的格式文件,这种格式能够更好地进行模块化的编程,能够使代码段的管理和对目标系统存储器的管理更加的方便和灵活。给COFF格式进行C语言或者汇编程序的编写的时候,不需要对变量目标地址和程序代码进行指定,这也为程度的移植和程序的编写提供了很大的方便。而链接器对块的处理主要有两种功能,一种功能是对COFF目标文件当中的块进行利用,用其建立数据块和程序,再将这些块组合起来,就能够成为被DSP芯片执行COFF输出的模块,而第二种就是链接器为输出的块指定存储的位置[2]。因此链接器需要为上述两个功能提供指令,分别是MEMORY、SECTTONS。MEMORY命令对目标系统的存储器进行定义,程序员可以选择对每一块存储器的长度和起始地址做出定义,而SECTIONS命令则是用来对输入块组合以及输出块放置在存储器当中的位置进行定义的。加入在具体的编写当中不采用以上两种命令的话,也可以使链接器以缺省的分配算法进行,笔者建议使用者两种命令,但是在使用的时候需要注意这两个命令要在CMD文件当中使用。
(四)程度的仿真
EMURST仿真器会对命令做出复位,EMU2XXW EX1.OUT将COFF格式的二进制代码载入并进行仿真运行,而有关调节器则按照规定使用即可。
(五)程序的固化
等到程序仿真运行通过之后,就需要将其固化到FLASH ROM当中,TMS320F240内有16k字的FLASH ROM可以用来对程序进行固化,在其程序不大于16k的时候,它不需要外扩EPROM。接下来将主要采用JTAG口的固化方法来对进行分析说明。
先要采用EMURST命令对调试器进行复位,然后在对三个批处理文件做出执行。第一个是执行BC0.BAT批处理文件,对FLASH ROM的(CLEAR)进行清除,使其全部为“0”;接下来是执行BE0.BAT批处理文件,对FLASH ROM的(ERASE)进行擦除,使其全部为“1”。这两步对于软件包当中自带的这个两个BAT文件不需要做出修改。下面是第三步,对BP16K.BAT批处理文件做出执行,需要将自己的OUT文件加入到DSP内部的FROM当中,在此之前需要先对BP16K.BATJ进行修改,对待写入的OUT文件做出替换,替换成自己的OUT文件。需要注意的是,在对程序进行固化的时候,一定要将CPU控制在20MHz的频率之下,然后在SRC目录当中配置一个C240_CFG.I的文件。
二、结束语
在本研究当中,笔者主要以TMS320F240芯片为例,针对DSP嵌入式系统下的C语言开发的开发过程作出了简要分析,文中笔者也根据自身理解和自身经验提出了一些主观意见。希望本篇文字能够对读者有所启发,也希望相关的工作人员再接再厉,进行不懈的努力,争取开发出更新的语言来服务DSP嵌入式系统,为系统开发作出更多的贡献。
参考文献:
[1]瞿新吉.嵌入式系统的BootLoader技术浅析[J].科技经济市场,2010(10):28.
C语言在线考试系统的设计与实现 篇4
随着Internet网络的贯通全球,网络化,信息化浪潮的涌动迭起,科技生产力知识 - 经济 - 信息社会雏形的孕育诞生,,网络教育发展战略已日益成为教育的重大研究课题。以往在传统考试时,教师需要经过大量而繁琐的出卷、印刷、评分、成绩上报和公布等有一系列操作过程,学生在第一时间查询自己的成绩和试卷情况也很困难,而且在复习、批卷等操作过程中难以保证考试环节的公正性。
C语言在线考试系统能够克服传统考试的弊端,实现学生在计算机上完成随机从系统的题库中抽取试题,进行考试,,同时可以在线查询自己的考试成绩并进行试卷的复查 ;教师可以在计算机上完成出卷、评分、成绩提交、公布和试卷分析。。考试过程由此而变得高效、便捷,同时考试成本大大降低,考试的公正、公平性和有效性得到了提高。
1 系统分析
1.1 技术可行性
C语言在线 考试系统 前台使用Microsoft Visual Studio软件结合ASP编程技术,后台利用SQL Server2005数据库进行网络数据库系统的开发,具体包括SQL Server数据库的创建和客户端的连接方法、使用数据库后台存储过程和触发器及利用ADOConnection实现数据库的事务处理比较高级的数据库实用技术。
1.2 经济可行性
经济可行性主要对项目开发的经济价值方面进行分析评价,在线考试系统,,只需要一台计算机和相应的网络环境就可以顺利实现。从节省人力方面看,相关管理人员数量大大减少了,降低了高校的用人成本,同时也提高了高校的教学管理水平。
1.3 使用可行性
在线考试系统是学生学习过程中的一个辅助工具,基于Internet或者局域网,其主要功能是实现学生在学习过程中通过本系统对课程进行各个章节的综合测试和评分,以检验学习效果。同时系统能过进行分数的统计以及成绩的查询,为学生及教师在学习过程中提供帮助。
综上所述,开发的目标系统是完全可行的。
2 系统设计
由数据库直接输入考生信息,考生登录成功后进入考生界面。考生界面主要由考试、成绩查询、修改个人资料模块组成。考试时考生输入考生编号、考生密码,确定后进入考场,考生在选择确认考试后由系统在试题库中随机抽题、组卷,进入考试页面后,考试进入倒计时,距离考试时间剩余五分钟结束时,系统提醒考生保存答题结果后交卷,考试时间到系统自动提交试卷并退出考试,考试结束后,系统对客观题自动完成阅卷和给分工作。管理员登录管理界面,管理员界面主要由基本资料管理、试题库管理、试卷查询管理、成绩管理等模块组成。
2.1 系统功能模块设计
(1) 用户登录模块 :系统执行其主要功能前用来确认使用系统的用户是否能够使用系统以及有何种操作权限。用户没有登录成功是不能使用系统的,同时如果权限不够则不能使用一些特定功能。
(2) 系统管理模块 :主要涉及了普通用户、管理员和教师。管理员在系统中负责用户信息管理。系统中的用户主要包括两类人员,管理员和用户。管理员负责对系统中的所有数据进行包括添加、修改、查询以及删除的操作控制,拥有最大的权限。用户负责个人信息管理和成绩查询的操作。
(3) 学生管理模块 :包括注册管理和专业信息管理,主要实现对学生个人信息和专业信息进行修改、删除以及更新。
(4) 课程信息管理模块 :对系统中所学的课程进行考试科目的选择。管理员负责对课程信息的管理包括课程的添加、修改、查询以及删除的操作。对系统中的基础性数据进行管理。
(5) 考题信息管理模块 :管理员可以对考试的题目进行编写、修改、删除和查看。界面上显示了考试的题目、考试类型、所属套题、加入时间以及所属课程。这些都可以进行修改。
2.2 数据库设计
SQL Server数据库管理系统能够通过满足客户多种管理需求而推动企业管理信息化建设的先进的商业智能平台 ;通过提高管理能力而提高管理效率并降低风险以及运营成本 ;具有安全、可靠、高效的企业级数据管理平台 ;先进、一体化的商业智能平台和极具扩展性和灵活性的开发平台的优点。C语言在线考试系统采用SQL Server2005进行数据库设计,包含用户信息表,题库信息表,考试系统信息表,待审核项目表,考试成绩信息表等十个表,用来实现对系统资源的数据存储。
3 系统实现
C语言在线考试系统从功能上可分为用户考试程序和考试管理程序。用户考试程序主要实现用户考生登录的身份验证、试题抽取、接收考生所选择的答案和考试时间的控制。考试管理程序主要实现试题库、学生信息库和学生答题信息库的管理,包括相关信息的增、删、改、查操作控制。同时系统还要确定同一场考试相同IP地址的计算机只允许登录使用一次,而且每个考生登录的身份验证信息也不能在同一场考试中出现两次,从而保证学生不能因为从题库中随机抽取的试题难而任意换题。学生管理模块的专业信息管理界面如图1所示。
功能描述 :后台的主界面里显示了所有已经添加完毕的专业变更信息,在此页面里可以通过专业类型查询某种变更的信息。
完成对数据的录入,并与数据库数据的对比,通过btn OK_Click事件,完成专业的添加。其中专业名称与增加要同过点击button按钮进行专业检测。如果没有重复的专业名称则点击添加。
4 结论
在线考试正在逐渐取代传统纸介质考试。计算机在线考试利用互联网实现成绩评分、在线考试等功能,实现考教分离模式,在很大程度上减少了管理员以及教师的工作量,同时减少了影响考生参与考试的各种人为主观因素。“利用信息技术来推动教学改革”是当前高等学校教育改革的一条重要思想,网上在线考试是教育信息化的必然发展趋势。
c语言考试系统 篇5
功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上
3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。
4、进一步要求:学生选修课程(可选项)
要求:
1、用C语言实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
c语言考试系统 篇6
【摘要】随着教育改革的深入和计算机网络技术的发展,计算机自动化考试已经成为一种趋势,针对目前考试系统只具备组卷评分功能,缺乏教师与学生的沟通互动及用户使用范围受限的问题,本系统采用B/S网络结构模式扩展了用户使用区域,并增加评价与推送功能,完善了教学反馈环节。本系统首先进行组卷、阅卷、评分,完成对学生知识点的考核,然后统计每个学生知识点的得分、错题率等信息,生成教学方案反馈给老师以促进教学改革,同时把错题知识点汇总,通过APP客户端发送给学生。
【关键词】无纸化考试 B/S架构 C语言考试系统
【基金项目】2013年,省级教研项目:基于“理实贯通、多元协作”的信息与通信工程学科教学创新研究,项目编号:2013286;2015年,湖北工业大学校级项目:基于PBL教学模式的智能考试、评估、推送C语言学习方案研究,项目编号:校2015062;2014年,湖北工业大学校级项目:面向电子信息类专业的一体化CDIO工程教育改革实践,项目编号:校2014013;2013年,湖北工业大学校级项目:电气卓越工程师培养程序设计类课程改革研究,项目编号:校2013011;2015年,华中师范大学中央高校基本科研业务费项目:基于设备指纹的数字音频被动取证关键技术研究,项目编号:CCNU15A05054;大学生创新创业训练计划项目(201510500035)。
【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)04-0211-02
一、引言
C语言作为国际上广泛流行的计算机高级程序设计语言,在广大高校的计算机及相关专业中是一门必修课程。对于C语言的考核虽然已经走向计算机自动化阅卷的道路,但目前的考试系统的设计局限于技术细节改善,如客观题评分标准的完善、随机组建算法设计,而忽视了教学的本质——考试只是教学的一个环节,而不是终极目标。
(一)系统需求分析
根据现在考试系统的现状,针对目前考试系统只具备组卷、评分功能,缺乏教师和学生的沟通互动,信息反馈及用户使用范围受限等问题,本系统强化考试后的反馈环节,在题库的数据库组建时,考虑题目与知识点的对应关系,题目的难度分级。学生在预习时,通过查看其它学生的考试结果,可以预判学习的重难点,合理分配学习时间。
(二)系统设计分析
二、系统的设计与实现
(一)系统总体设计
根据系统需求分析,在线并发C语言考试系统由两个PC客户端和一个Android客户端组成,设计分为两个阶段实现:(1)先完成基于B/S模式的教师和学生的PC客户端系统;(2)在PC客户端的基础上开发基于Android手机平台的反馈和师生交流系统,在线并发C语言考试系统采用B/S架构,用户可以在PC客户端进行系统访问,PC端进行数据的读取和存储,并提供完善的考试管理系统,该系统采用Basic语言在VB开发环境下实现。
(二)学生考试模块
1.考生登录模块
首先判断考生输入的账号和密码是否正确,若账号或密码错误则给出相应的错误警告,验证通过后进入后台数据库提取相关数据转入答题界面,并且记录登录次数,限制只能登录一次,否则给予相应警告。
2.考试答题模块
在后台数据库中抽取题目,将题目以选择题、判断题、填空题和程序设计题的形式在不同窗口中显示,并提示考试时间和答题结果,在时间完成后自动交卷,并将考试数据自动存入后台数据库。
3.分数显示和本地推送模块
在考试完成并提交答案后将激活分数显示和推送模块,首先将考生的答案和数据库标准答案进行比对,对比正确答案进行统计,然后将考生答案和得分情况存入后台数据库并显示到本界面,反馈给相应的考生,推送模块只有考生在点击本页面的推送按钮时才被激活,然后根据统计结果将相应的知识点和学习方案推送到本地客户端,同时将反馈的内容一并上传到教师端数据库,供教师端进行整体统计使用。
4.管理模块
在学生端管理模块部分主要实现对账号和密码的修改,考生可以在管理界面对自己的信息进行修改,首先输入初始设置的账号和密码,确认正确后就可以修改为更加安全的账号密码,保证个人的信息安全。
(三)教师管理模块
教师端登录模块与学生端基本相似,在此不做另外介绍,着重介绍几个主要的模块。
1.记录工具模块
在登录完成后便激活记录工具模块,并获得相应记录ID,初始记录为空,教师可在此记录相关的工作日志等信息,并只有相同ID才可以访问其内容,保障其安全性,另本系统工具模块自带浏览器,相关问题可随时上网查询而无需切换界面。
2.导入试题模块
点击进入导入试题模块,可以进行选择题、判断题、填空题和程序设计题的导入工作,教师输入完成并确认后系统将自动分配题号并存入后台数据库。
3.试题浏览模块
本模块主要对数据库中生成的临时temp表进行显示,点击确认后生成正式试题表并发送至学生考试客户端。
4.考生信息查询模块
考生信息查询模块主要对学生端反馈的信息进行汇总后在本地显示并供教师端查询使用,查询方式为单条件方式查询和组合式查询,查询结果在本界面进行显示。
三、系统的实现
(一)学生端功能实现流程
参加考试的考生首先进入一个登录界面,考生输入正确的账号和密码登录,进入登录界面后系统自动开始进行倒计时,考生选择相应的试题类型进入相应答题界面,答完题后返回并选择其他未作答的试题,直到答题结束后,点击提交试卷,系统自动进行处理和判断,得出考试分数并显示出来,考试分数会自动存入相应数据库的表中,考试系统会自动在本地的数据库中链接生成推送的知识点内容和相应的方案,考生可以在本地浏览或者在连接的APP客户端中进行浏览。
(二)教师端功能实现流程
教师在输入正确的账号后登录教师端,首先是组卷界面,教师可以在这个界面选择自动组卷或者人工组卷,组卷完成后可以点击预览模式进行对试卷的预览,确认无误后就可以点击确定来发布生成的试卷到学生端供考试使用。
参考文献:
[1]李雪玲,管群. 基于 PHP技术的在线考试系统设计与实现[J]. 计算机与现代化, 2009,(2): 118-121
[2]张朋. 用数据库编程开发考试系统[J]. Computer Knowledge and Technology 电脑知识与技术, 2009,(6): 1374-1375
作者简介:
c语言考试系统 篇7
关键词:定位,黑盒测试,骨架法,日志
0 引 言
目前,很多高校都开设了计算机语言程序设计课程,在考试中,使用人工进行阅卷既费时、费力且容易出错。于是,针对计算机语言程序设计的自动评分系统就被应运而生。济南大学计算机工程学院的乔善平等人在《基于智能移动Agent的C语言考试系统》中提出了从人工智能中可信度的角度引入执行可信度、程序最大相似性、代码可信度、指数曲线衡量标准和输出可信度等几个新的概念,然后分析了实现的过程。并且将整个程序的设计分为几个部分执行、代码、输出和其他因素。使之存在偏序和制约关系,以实现自动评分[1]。但是在实际的使用过程中,自动评分系统[2]也存在很多问题,不能客观、真实地评价一个考生的真实答题情况。主要存在的问题主要如下:
C语言程序设计考试的题型主要分为改错题、填空题、编程题等类型,在C语言的程序设计考试中,改错题与填空题可以归为客观试题的范畴,而编程题可以归为主观题的范畴。
在C语言程序设计中,改错题与填空题主要是在程序的某个位置出错或者留出空白,让考生在该位置做出解答,为了将对试题与答案进行比较,往往在该位置处进行标注,以往的自动评分系统中,为了对该位置进行定位,往往提示考生不能随意改动试题,特别是不能添加空行等,这样就严格的限制了考生,如果某个考生不小心在里面添加了一个回车换行,即使答案正确,也会得不到成绩,主要原因是自动评分系统将不能找到该位置。而且,在填空题中一个空往往有很多不同类型的答案,如果考生写出的答案与标准答案不相符,但是也能实现相同的功能,这样,考生也不能得到相应的成绩。比如,一个填空题应该填i++,其实,考生填写i=i+1,++i。都应该是正确的,但是以往的评分系统往往不给分,这种一题多解的问题也不能客观、真实地评价一个考生的成绩。
程序编程题的评价更加困难,以往的评分系统往往强制考生使用某种算法去解答,这既违反了程序编程的初衷,也限制了考生的想象与发挥。即使考生采用了某种算法,也可能在算法的细节方面或可能与标准的答案不同,所以程序编程题不能采用简单的比对的方法,文献[3]采用了模糊的评价方法,但是这种方法会使一些抄袭的考生也能过关。
针对以上问题,本文采用了正则表达式[4]进行定位,使用XML结构的答案库,并且使用黑盒测试方法[5]和抽取程序设计的骨架[6]等方法,成功的解决了上述问题。
1 系统设计思想
1.1 试题问题的定位
在C程序设计中,程序设计需要的源文件往往不止一个,所以首先是寻找问题所在的程序文件,这个程序文件的名称被记录在XML格式的答案库中。如前所述,在C程序设计的改错题与填空题中,往往在问题出现的地方添加标注,让考生在添加标注的地方进行作答,为了有效的对问题所在位置进行定位,该系统利用了这些标注,采用正则表达式的匹配准确的定位到问题的所在位置,找到位置后,为了避免考生在问题位置添加空行等问题,接着在该位置的后面过滤掉空行,然后使用字符串前缀的方法准确的定位到问题所在的行,然后取出考生的答案与答案库进行比对。
1.2 一题多解问题的解决
C程序设计的填空题中,一个问题的解答往往有很多种解答的方法,针对问题考虑所有可能出现的解答方法,将这些答案存放在答案库中,根据答案库中答案出现的次数采用循环与考生答案做比对,只要考生的答案符合其中之一的任何一个答案,终止循环,同时给学生成绩。
1.3 程序编程题的评分
程序设计题的评分应该分为两种情况:
(1) 考生编写的程序通过的编译、连接阶段并且有结果输出;
(2) 考生编写的程序没有通过编译。
在第1种情况下,该系统借鉴了软件工程中程序测试的方法,使用了黑盒测试法来评价考生的程序。在XML格式的答案库中,针对该题给出一些测试数据,然后根据测试数据对比应该输出的结果,根据考生输出结果与标准的答案的异同给不同的分值。
第2种情况下,因为考生的程序没有通过编译,因此没有输出结果,但是可能考生已经写了一部分程序,如果仅仅根据没有输出结果,直接给考生零分,显然很不公平。于是,该系统采用抽取考生程序中骨架的方法来进行。比如一个排序程序应该有这样的程序设计结构:
for(i=0;i
for(j=i+1;j
if(a>b)
{
…
}
根据C语言的关键字[7],可以抽取骨架为for()for()if(){}或者for(){for()if(){}}等,从考生文件抽取的骨架与标准的骨架[6]相对比,根据异同给予一定的分数。
为了避免考生互相抄袭,该系统采用了两种预防措施。第一种措施,不同考生在考试期间随机抽取试题库中不同的试题,但是还可能出现相近考生试题相同的情况,该系统从实际出发,采用“记录解答过程”的方法,利用Windows内部功能[8],或考核软件(VC++)提供的“宏”功能[9],跟踪记录考生操作的每一步骤,形成独立日志文件,通过特殊方法“固化”在当前位置,或者直接传送到服务器上,作为评分的必需内容。评分时,如搜索不到指定日志文件,就可认定为“抄袭”[10]。
2 系统设计
该系统中,XML格式的答案文件是整个系统的核心,在其中几乎记录了所有的跟自动评分有关的信息,下面是该系统使用的答案文件的一部分。
…
type="Blank">
…
style="Program">
第一种骨架
…
第n种骨架
…
…
其中:QSet表示试题的套数;First表示第一道题试题考察点在name属性所指的文件名中,本题的分值在score中记录,试题的类型由type来指明。
3 结 语
该系统经过多次实际的使用,有效地避免了上述出现的问题,能够准确定位问题的位置,并且对于一题多解的问题也运行良好。在程序编程问题中,能够基本体现公平、客观的评价一个学生的编程思想,特别是操作日志的使用有效的监督了学生的“抄袭”现象。对程序编程时,不能通过编译但已经编写了一部分程序的考生,可使用提取骨架的方法,基本能够给考生一个公平的评价,改善了过去很多系统给学生打零分的情况。
参考文献
[1]乔善平.基于智能移动Agent的C语言考试系统[J].计算机工程与科学,2004(4):29-31.
[2]梁振球.填空题自动评分系统的研究与实现[J].计算机系统应用,2007(2):109-111.
[3]嵇敏.自动评分系统的设计与实现[J].辽宁师范大学学报,2006(2):193-194.
[4]赵兴涛,王斌君,刘舒.正则表达式在文档自动识别中的应用[J].中国人民公安大学学报,2005(4):33-35.
[5]陈浩,刘海涛.遗传算法在黑盒测试中的应用[J].电子技术应用,2000(9):4-6.
[6]钟旭,万剑怡,万红艳.基于骨架的结构化网格编程模型[J].计算机工程,2010,36(2):266-268.
[7]阂光太.C语言程序设计与数据结构实践[M].北京:高等教育出版社,2005.
[8]朱友芹.WindowsAPI参考大全[M].北京:电子工业出版社,2000.
[9]刘晓华.基于语义的主观题自动批改算法的设计[J].软件导刊,2006(13):27-31.
C语言自动命题系统的设计与开发 篇8
关键词:C语言,命题系统,试题库
0前言
考试作为检查学生学习效果的基本手段,是教学过程中的一个重要环节。考试之前的一项重要工作就是命题,在传统的命题组卷过程中,任课教师往往要花费大量的时间去查找相关资料,反复推敲试题的难度和知识点的薄盖率。即便如此,出的试卷也免不了因为教师的个人主观因素而出现偏题、怪题或者难度过大(小),给考试造成了一定的负面影响。因此为保证课程考核的客观性及公正性,同时适应现代教育的发展要求,需要建立丰富完善的试题库,以促使教考分离,提高教学质量。本系统的开发可辅助教师出具试卷,在一定程度上减轻教师工作负担。同时使试卷更加标准化、科学化,更加客观、真实、全面地反映教学的实际效果。
1 系统的开发环境
“C语言自动命题系统”由两部分组成,用VB+SQL Server开发,一部分为试题库,另一部分为功能实现。
一个题量充分且经过精心组织的题库是整个命题系统的基础,因此为更好地保证试题的安全性,采用SQL Server实现对试题库的管理和维护,C语言课程题库系统具有结构明晰、性能强、高效适用的特点。为方便检索查询、适应复杂的需要,除需要在题库中存放题目外,还需设置包含的(考点)知识点、试题的答案、难度等信息,为以后的筛选组卷、出题等提供参考和保证。
Visual Basic由于与数据库连接非常紧密,访问非常灵活,因此功能实现部分采用VB进行开发,以实现自动命题。
一般来说,连接数据库有两种方法。一种方法是预先建立ODBC数据源,即在操作系统中建立确定的数据源与自动命题系统的数据库相连,然后在程序中使用此数据源代表自动命题系统的数据库。应用该方法,系统能实现数据库的连接,但用户必须手动建立相同名称、相同路径的数据源,这显然不方便。本系统采用另一种方法——ADO (ActiveX Data Objects)技术。ADO实际是一种提供访问各种数据类型的连接机制,该方法可以通过程序中简单的命令使系统在运行时动态连接数据库。
2 系统运行结果
本试题库共有四种题型,分别为单项选择题、读程序试题、程序填空试题和写程序试题,单击图1中的按钮即可进行相应试题的选取。
为加强人机交互能力,使教师随时控制掌握试题抽取情况,本系统采用一题一题抽取的方式,如图2所示。在选题条件框中选择一级知识点、二级知识点、试题难度,并输入抽题数量后,单击“确定”按钮,即可在中间的文本框中显示抽取出的试题。考虑到某知识点下同一难度的试题可能有多个,因此本系统采用了VB自带的Rnd函数和Randomize函数实现试题的随机抽取。文本框的下方显示出抽取的试题中难度为“难”和“易”的题目数量,以使教师更好地把握试题的难易程度,最终组成一份难易适中的试卷。
若没有输入抽题数量,或已抽取了所需数量的试题,或该知识点下没有所选难度的试题,系统都会给出相应的提示信息,如某知识点下没有所选难度的试题的提示信息等。
单击图2中的“查看全部”按钮,可随时查看已选出的全部试题,使教师做到心中有数,如图3所示。单击“返回”按钮,回到图1所示的界面继续选择其它题型的试题。
抽取读程序、程序填空、写程序试题时,考虑到每个题目在知识点1下,知识点2的范围可以很宽广,两者之间没有固定的从属关系,设计时采用在选题条件框中先显示试题知识点1,如图4所示,选择知识点1后,在试题知识点2列表框中再显示该知识点下的知识点2,如图5所示。这样可以使教师在出题时对要考察的知识点和覆盖范围有更清楚的了解,使选取出的试题更加符合我们要考核的范围。
题目都抽好后,单击图1中的“生成Word文档按钮”,可以生成指定题头格式的Word文档,用户可以保留、修改和打印。
3 结论
随着计算机技术的普及与发展,传统的教学方式面临变革。就“C语言”课程而言,是理工类院校中开设最为普遍的一门计算机基础课程,涉及的学时、大纲、学生层次都较多;因此,考核方式和考试内容差别都较大。C语言试题库及灵活的命题系统,无论对学生的学习,还是对教师的教学都有很好的辅助和监督作用,既能增加学生的学习兴趣又能减轻教师的工作负担,对教与学产生积极促进作用。
参考文献
[1]毛峡,等.电路分析自动命题系统的开发[J].实验技术与管理,2006,23(2):42-44.
[2]刘焕淋,等.数字信号处理题库和命题系统的开发[J].实验技术与管理,2007,24(2):77-78.
[3]林科学.计算机辅助命题系统的设计与实现[J].红河学院学报,2005,3(3):39-42.
[4]奚越,等.计算机考试系统研究与实现[J].济南大学学报(自然科学版),2002,16(3):274-277.
[5]李春堡,张植民.Visual Basic数据库系统设计与开发[M].北京:清华大学出版社,2003.
[6]郭胜,夏邦贵.Visual Basic数据库开发入门与范例解析[M].北京:机械工业出版社,2004.
c语言考试系统 篇9
关键词:MYMY关键词:嵌入式系统,编程语言,C语言,Android,Python
您在下一项目编程时所使用的最佳语言是什么?如果您是一名嵌入式系统设计人员,可能认为这一问题实在可笑。您会使用C语言,如果希望加强管理,则会使用C衍生的C++。可能会有一些关键代码片段是以汇编语言编写的,但是,据Barr集团最近的一项研究表明,目前95%的嵌入式系统代码是采用C或者C++编写的。
然而,世界是在变化的。新的程序员、新挑战以及新体系结构让C松开了在嵌入式软件上的“抓手”。据最近的一项研究表明,嵌入式计算语言发展最快的是Python,当然还有很多其他参与竞争的语言,只是这些语言仍然占少数。但是逐渐地,一直坚持使用C/C++的程序员像20年前汇编语言专家那样开始冒险——采用更快、更紧凑和更可靠的程序。图1提出了新语言能够提高嵌入式计算机领域的效能。
C语言在嵌入式领域中的地位受到冲击
嵌入式算法变革的一个主要推动力量是其他工作环境的程序员进入了嵌入式领域。这方面最明显的是刚毕业的学生进入职场。以前,刚毕业的学生在C课程中学会了编程,会用C或者C++完成他们的大部分项目。而现在,已经不再如此了。Intel软件工程经理David Stewart注意到,“现在,大部分计算机科学课程使用Python作为他们的入门语言。”计算机科学专业毕业的学生很有可能在Python、Ruby以及几种脚本语言上有丰富的经验,但是他们可能从未认真地使用过C语言。同时,其他影响也越来越多。使用Android作为平台进行相关的或者用户友好的嵌入式设计,为Android的自然语言——Java,带来了机会。在这一复杂景象的另一端,机器人、无人机或者相似的小项目业余爱好开发人员通常都有Arduino或者Raspberry-Pi背景。他们的经验会体现在非常紧凑和简单的程序发生器或者B#等小型语言环境里。
这一现象对物联网(Io T)的广泛研究也产生了影响,网络开发人员也参与到讨论中。他们认为,如果嵌入式系统的外部接口是RESTful Web,编程语言应该是Java Script或者其服务器侧相关的Node.js。热衷于使用C语言进行开发的人员应该观察一下node.js——贝宝和沃尔玛等公司在企业规模的开发中大量使用了这一可扩展平台,据跟踪调查网站modulecounts.com,在任何编程语言中,该平台的辅助支持系统增长是最快的。
选择Node.js的动机部分是源自文化,但是也有体系结构方面的因素。Io T会在客户侧、互联网以及服务器侧之间分配其嵌入式系统任务。其中,客户侧连接实际环境,通常要求尽可能少地采用硬件。客户侧很自然地采用硬件专用库支持的Web应用程序,而服务器侧则是服务器应用程序。这样,对于Web程序员,在Io T系统编程中很显然会使用Java Script和Node.js。
日益复杂的嵌入式算法是变革的另一推动力量。简单的控制环路被卡尔曼滤波器、神经网络以及基于模型的控制功能所替代,高性能计算语言——Python,开放计算语言(例如Open CL™)以及MATLAB等基于模型的环境逐渐发展起来。
强烈的动机
那么这些新人们为什么不静下心来学习C语言呢?Stewart说:“真正的原因在于开发人员的效能。”反对C语言的人一直认为这种语言编写慢,容易出错,会带来意想不到的硬件相关问题,并且除了最初的程序员,其他人很难读懂它。这些因素会对提高设计效能产生不利影响。而很多最近出现的语言逐步转向快速学习和高效的代码重用。虽然目前几乎所有语言都受益于C语言高度简洁的语法,但现在的重点已经转回可读性,而不是最少字符数。不但在现代语言中鼓励实现协调一致的文档,而且结构化约定也通常会这样定义文档。C程序员一直把这类文档看成是自由表述的例子,因为作者自己不会牵连其中。例如,这些约定使得实用工具程序能够从Python组件的结构化注释中生成用户手册。
现代语言还采用了高级数据结构,可以在C++环境中建立任何对象,并重用它。基于指针,Python还提供自然List和Dictionary数据类型。而Ruby等其他语言,基本上是面向对象的,支持结构和重用,这使其可以融入到程序员的习惯中。
影响了现代语言是否易于重用的另外两个重要因素是动态输入和模块化。动态输入是一个很有争议的因素。当程序员在使用变量时,解释程序确定程序员传送给表达式的数值的当前数据类型——几乎所有这些服务器侧语言都是解释性的,而不是编译的。然后,解释程序会选择相应的操作,评估含有该数据类型的表达式。这样,程序员不用太过担心他要调用的函数需要的是整数变量还是实数变量。但是,嵌入式程序和代码可靠性专家很快指出,动态输入在运行时实际上效率不高。另一个因素是部分程序员对模块化的偏见。有时候会有人说,Python编程实际上不是编程,而是脚本,是把别人用C语言编写的函数调用或串起来。
可读性、协调一致的文档、动态输入以及函数大量的重用等,催化了开源领域中辅助支持系统的爆发。程序员本能地会在巨大的开源库中找到他们能够使用的函数,例如,npm(用于Node.js)、Py PI(用于Python)或者Rubygems.org(用于Ruby)。如果他们不用修改组件或者编写新的组件,他们会回到库中工作。结果,库会越来越大(npm目前大概有25万个组件)。这些大规模的辅助支持系统也相应地大幅度提高了程序员的效能。
嵌入式的新编程语言的不足之处及解决方法
这些编程语言尽管有这么多的优点,但也有缺点。要想在嵌入式计算领域占据一席之地还有很多不足。
大部分这些语言最明显的问题是,它们是解释性的,而不是编译的。这意味着它们需要可观的运行时程序包,包括解释程序本身、工作存储、动态输入开销和运行时库等,都要适配到嵌入式系统中。基本上,所有这些会非常紧凑,某些Java虚拟机可以装入到几十K字节中,但是Node.js、Python以及来自服务器侧相似的语言需要自己的空间。一个兼容性还可以的Python虚拟机在加入程序员自己的代码之前可能已经占用了几兆字节。
在性能问题方面,解释程序读取每一行代码(源程序或者预处理过的中间级代码)需要解析它、进行运行时检查以及调用执行所需操作的例程。在C语言中,这会导致一行代码有很多操作,编译成很多机器语言指令。执行时间和能耗的成本都会增加。
在运行时效率方面,可以使用即时(Ji T)编译器进行改进。一个Ji T编译器可以与解释程序并行工作,为循环中的代码生成编译后的机器指令,因此,后续的代码能够更快地执行。Stewart说:“Ji T技术非常有趣,Py Py Ji T编译器把Python执行速度提高了两倍。”对于效率方面,还研究了其他方法。例如,如果函数是无阻塞的,或者使用了信令机制,有很多函数调用的程序即使是在采用循环展开等方法来建立更多的线程之前,也可以含有很多线程。因此,可以在一个组件上应用很多多线程内核——这是高性能计算已经研究应用的方向。更进一步,Ruby语言本身支持多线程,因此,即使底层操作系统不支持线程,它也能够产生线程代码。某些团队则寻求在硬件加速器中实现库或者组件,例如,图形处理单元(GPU)、Xeon Phi和FPGA。实际上,解释程序本身就会有适合加速的任务。
服务器侧语言遇到的其他困难是缺少处理实际环境的结构。在服务器环境中,除了网络和存储,没有实时限制,也没有I/O。可以通过几种方式来解决这一问题。
最简单的是,Android环境以硬件几乎无关的抽象方式包封Java代码:具有图形、触摸屏、音频、视频、多个网络以及物理传感器的虚拟机。对于更强调物理I/O,甚至能够在微控制器上运行的轻型平台,提供嵌入式Java。
Python等语言需要不同的方法。由于CPython解释程序运行在Linux上,因此,原理上能够运行在有足够速度和物理存储器的任何嵌入式Linux系统中。在这方面已经有了工作基础,通过减小装入时间开销,为物理I/O访问提供功能,使用硬件加速器,进一步适应CPython,运行时系统适应实时约束。最新的一个实例是STM32微控制器的裸金属Micro Python环境。虽然这看起来几乎不可能,但是已经在Node.js下面的Java Script引擎上有了类似的工作。
安全呈现出更多的问题。很多安全和可靠性标准不鼓励甚至禁止使用未经正式认证或者全面测试的开源代码。这些限制使得不可能重用组件,或者重用组件过于复杂,对效能的提高不大。同样等级的详细检查也延伸到虚拟机等开源环境中。在可靠和安全大环境下,CPython等开源平台很容易受到攻击。
未来的编程语言发展方向
最后,考虑到有众多的推动力量促使新语言进入嵌入式世界中,可以预见到会有多语系统,这种系统含有的组件来自多种源语言,每一种选择要使用的关键库,或者方便某类开发人员使用。当然,您可以在不同的CPU内核上放置几种虚拟机,在一个内核管理程序下相统一,然后,通过函数调用,为任务间消息的传送提供约定。但是,这样的系统最终会非常大。
另一种可能是一组语言相关解释程序,为Ji T编译器生成公共中间代码(图2)。当然,还能列出其他问题,例如,不同的任务间具有不同的通信模型、存储器模型和调试环境,但这些问题总是能够解决的。
小结
c语言考试系统 篇10
随着网络的普及以及大学生自主学习能力的加强, 教学资源管理网络化已经成为一个必然的趋势, 甚至已经广泛应用。但目前大多数计算机等级考试的培训机构仍采用传统的教学方法。在传统教学中, 学生有任何问题都必须与教师面对面交流, 而教师只能在上课时间替学生解答。这种传统的教学模式受到时间和地域的限制, 使教学效果大打折扣。而今, 教学资源管理系统能够很好地解决这些问题, 甚至可以实现网络课堂等功能。因此, 开发一个计算机二级考试培训系统不仅方便学生学习以及更好地与教师沟通交流, 也给教师的工作带来了极大的方便。
本培训系统的设计理念是将网络技术与传统的教学相结合, 根据学习者的学习动机和学习习惯来进行设计, 以达到促进学生学习的目的。计算机二级考试培训系统设计原则有:对象的特定性原则;内容的整合性原则;功能的综合性原则。
1、前期分析
1.1 学习内容分析
C语言是一种计算机程序设计语言。它既具有高级语言的特点, 又具有汇编语言的特点。它可以作为工作系统设计语言、编写系统应用程序, 也可以作为应用程序设计语言。其编写不依赖计算机硬件及其应用程序。因此, 它的应用范围广泛, 不仅仅是软件开发上, 而且各类科研都需要用到C语言。
C语言是一种程序设计语言, 学好C语言的方法不仅仅是掌握它的基本概念和理论基础, 更重要的是实际编程能力。对于初学者来说, 读程序是学习C语言入门最快, 也是最好的方法。对于没有学过任何计算机语言的初学者, 可先阅读教程, 学习完每一章, 然后仔细研读程序, 直到对每一行都有所理解。再找几个和例程类似的编程题目, 试图写出这段已经读懂的程序, 如果一开始写程序有困难, 则应该反复思考原因, 直到真正掌握为止。
在C语言的学习中应掌握各种解决问题的手段 (数据结构) 和解决问题的方法 (算法) 。所以掌握好数据结构和一些常用算法, 是C语言学习的必经之路。
1.2 学习者分析
该计算机二级考试培训系统是以大学生 (主要是大一新生) 为对象的培训系统, 其目的是引导学习者学习C语言, 并通过这个培训系统获得系统、全面的知识。进而通过计算机等级考试, 提升自己的就业竞争力。
大学生在智能发展上呈现出进一步成熟的一系列特征。其思维有了较高的抽象性和理论性, 在学习上显得得心应手;在情感方面已有更明确的价值观念, 深信自己的力量能加速社会的进步与发展;学习动机倾向于信念型, 坚信自己当前的学习一定能取得满意的结果;自我调控已建立在日趋稳定的人格基础上。
虽然大学生是一个自主学习能力强, 学习动机明确的群体。但C语言对于刚进入大学的大一新生来说是一门新兴学科, 在已有的知识体系结构中很难找到与其相似的知识, 所以需要一些外界因素引导学生学习。计算机二级考试培训系统可以为学生提供一个良好的自主学习平台, 在那里学生可以根据自身学习情况选择适合自己的学习内容、练习、测试等, 并通过自测来调整学习计划。
2、系统分析
2.1 系统功能分析
根据前期的学习内容分析与学习者分析, 可以确定系统功能如图1所示:
图1培训系统功能模块图
(1) 教学资源管理模块:教学资源管理模块实现了C语言这门课程教学内容、教学课件的管理。在这个模块中, 教师或者管理员可以按章、节添加教学内容 (包含文字、图片、flash动画等) 以及上传相应的课件。学生可以按章、节查看教学内容以及下载教师已经上传的课件。本模块在传统的教学内容管理基础上增加了一个定制专属课件的功能, 在这里, 教师可以做多种适合不同学习风格的学生学习的课件, 学生可以根据自己的学习风格, 学习爱好定制适合自己的教学课件, 从而促进教学。
(2) 经典案例集锦模块:在学习内容分析中提到, 初学者要学好C语言编程, 最好的方法就是读程序, 所以本系统提供了经典案例集锦的功能。这里不只是将案例呈现在系统中, 而是将案例按章节归纳分类, 并对每一个案例进行注释和讲解。
(3) 练习与测试模块:计算机二级考试分为操作 (上机) 和理论 (笔试) 两方面, 所以本系统在练习与测试模块中也涉及操作和理论两方面, 而且上机操作采用与计算机二级考试系统类似的方式。尽管一些培训机构已经开发了一些与考试系统类似的系统, 但其系统题库都为综合型, 只针对已经学完C语言的同学。本系统在综合题库的基础上, 对每一章节的知识点都做了题库, 学生可以按章节选择练习或测试, 并根据测试结果调整自己的学习进度。
交流社区模块:交流社区主要提供一些在线讨论, 在线留言的功能。在学习过程中, 通过与别人的交流讨论可以促进学习, 使学习效率更高。
3、结束语
随着信息技术的发展, 近几年各高校的精品课程网站已如雨后春笋般发展起来。本文借鉴了精品课程网的优势, 将其与教育技术学中的一些理论相结合, 对计算机二级考试培训系统进行了分析与设计。此类系统相对于封闭的传统教学模式而言, 突破了时间、空间、地域的限制, 体现了以学生为本, 因材施教的教育理念, 提高了学生的学习兴趣, 促进了学生创新意识和创新能力的培养, 为学生向多方向、全方位发展起到了促进作用。
摘要:随着信息技术的迅速发展, 高校学生计算机能力和素质的培养越来越受到重视, 计算机等级考试成为各高校学生为提升自身能力和就业竞争力的一种途径, 各种计算机等级考试的培训机构也随之产生。但由于地域和时间的限制, 这种传统的教学方法和手段已经受到了极大的挑战。为了构建一个打破传统的、不受地域和时间限制的教育、学习新模式, 本文针对计算机二级 (C语言) 考试的特征就培训系统进行了分析与设计。
关键词:计算机二级考试,培训系统,C语言
参考文献
[1]张燕丽.教学设计的方法论及反思及展望[J].现代教育技术, 2008, (1) .
[2]谭浩强.C语言程序设计[M].北京:清华大学出版社, 第二版.
[3]何克抗郑永柏谢幼如.教学系统设计[M].北京师范大学出版社.2002.
高职C语言教学浅析 篇11
【关键词】C语言;学生兴趣;教学方法
现在计算机已普及到各行各业,深入到各级层次。在我国高职院校教育中,C语言不但成为计算机专业的必修课,而且也成为非计算机专业的学习课程。做好该门课程的教学具有非常重要而深远的社会意义,现将我在C语言程序设计课程中教学内容、教学手段、教学方法等方面的改革与取得的教学效果与大家做一探讨
一、努力培养学生的学习兴趣及正确的思维摸式
兴趣是学习的关键,兴趣决定了教学效果的好坏。初学C语言时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,授课时我改变过去先给出定义和规则的讲授办法,而是演示一些由前几届学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了C语言程序设计的内容后,大家都能够编出这些小程序。努力把枯燥无味的“语言”讲的生动、活泼。
二、循序渐进
高职学生第一次接触计算机语言,“通俗性、可接受性”的教学原则同样适合于这门课的教学。在课程讲授过程中,我没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注意易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言的规定和程序设计的方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的、好的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。
三、改进授课方法、实现教学相长
(一)采用启发、引导的教学方法
(1)教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。我教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,给时间让学生思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。例如 ,在讲数组的概念时,我先设置问题:编程计算10个人的英语平均成绩。根据以前所学,学生会想到:需要说明10个类型相同的变量用于存放10个人的英语成绩。进一步要求:计`算50个人的英语平均成绩,这时候如再说明50个变量,则会将问题麻烦化,学生此刻需要讨论该如何合理说明变量。再深入一步:求100个人的英语平均成绩。此时,当教师引出数组的概念、分析数组的性质时,学生不仅能够记住数组的性质,还能够知道在什么情况下使用数组类型,达到事半功倍的效果。
(2)教给学生正确的学习方法,引导学生掌握程序设计的思想和方法。经验丰富的软件设计者都知道程序设计的关键在于找到解决问题的方法,即算法。根据软件工程的思想,当拿到一个任务时,首先应将这个问题自顶向下逐步细化,逐层向下分解,直到满足每一个要求。实现时,可以先用流程图描述出算法,进而写出合理的算法,再将之转化成程序。
(二)采用目标教学法,使学生明确目的,确立主题
学生是认知主体,是信息的主动接受者,但也并不能否定教师的指导作用,教师作为知识的先知者,自然清楚所学内容哪些是重点及难点,哪些是只需一般掌握的,如果脱离了这一点,学生有可能会不加区分地对所学内容完成认知,进而导致其知识主结构的无法确定,所以教师在进行教学设计的第一步还是要进行目标分析,指导学生确立主题。
四、校企结合,加强实践教学环节
高职教育着重培养具有实际工作能力的技术型和应用型人才。为了使学生学习到的知识与社会接轨,可以创建校企结合的课程建设方法。听取企业家对C语言程序设计教学改革的意见、由企业向学校提供实验(实习)条件、以企业作为学生的校外实习基地,通过这些方法使学生熟悉公司内的编程环境。学校还可以邀请企业家为学生开讲座,派遣青年教师到企业去实习,使教学的内容与企业的实际更为贴近。高职院校作为企业的人才培育基地,发挥技术和设备的优势,为企业提供支持,向企业输送合格毕业生,校企结合实现双赢。
c语言考试系统 篇12
关键词:C语言程序设计,自动评分系统
1 C语言简介
C语言是1972年由美国贝尔研究所的D.M.Ritchie提出的。它既具有高级语言的特点, 又具有汇编语言的特点。因此可用它开发系统程序, 也可以用来编写应用软件。C语言具备很强的数据处理能力, 是世界上应用最广泛的计算机语言之一。C语言一共有37个关键字、9种控制语句、34种运算符、丰富的数据类型, 能用来实现各种复杂的数据结构的运算, 尤其是指针类型数据, 使用灵活, 提高程序效率;用C语言较易实现程序的模块化、结构化设计, 生成的目标代码质量高, 程序执行效率高;可移植性好, 几乎在所有的计算机系统中都可以使用C语言。
2 系统开发工具
自动评分系统的开发工具是采用Visual Basic语言与C语言相结合, 其中主体程序与界面均由Visual Basic语言实现, 对编程题的评分算法 (词法分析、语法分析等) 则采用C语言编写。
3 关键技术简介
3.1 Visual Basic数据库编程技术
(1) Visual Basic的数据库对象
Visual Basic访问数据库常用三种方法, 它们分别是:数据访问对象 (DAO) 、远程数据对象 (RDO) 和Active X (ADO) 。
DAO数据访问对象。Visual Basic把DAO模型封装在Data控件, 分别设置相应的Database Name属性和Recordsoucre属性就可以将Data控件与数据库中的记录源连接起来, 以后就可以使用Data控件来对数据库进行操作。因此DAO最适用于单系统应用程序或在本地分布使用。RDO是Visual Basic访问关系型ODBC数据源的最佳界面接口, 这种方法也集成于Visual Basic中。Active Data Objects (ADO) 作为另一种可供选择的技术出现, 正在逐渐代替其他数据访问接口。ADO“扩展”了DAO和RDO所使用的对象模型, 这意味着它包含较少的对象、更多的属性、方法 (和参数) , 以及事件。ADO是独立于开发工具和开发语言的简单而且容易使用的数据接口, 所有的数据源都可以通过ADO来访问。
(2) 数据绑定控件
连接好数据库后, 还需要用数据绑定控件将数据源对象显示出来, 然后才能对后台中的数据信息进行编辑和查询等数据处理操作。常用的数据绑定控件有文本框、组合框等标准控件及数据列表 (Data List) 、数据网格 (Data Grid) 等Active X控件。数据绑定控件有两个标准的属性:Datasource和Data Field属性。Datasource属性用于设置数据源, Data Field属性用来设置数据库字段的名称。
3.2 Visual Basic中调用API函数
Application Programming Interface, 简称API函数, 是Windows操作系统提供的函数, 可以实现对应用程序的控制。要调用API函数, 必须先在Visual Basic中用Declare语句声明。可借助于Visual Basic提供的应用程序“API文本查看器”, 正确地声明与使用API函数。
3.3 TCC行编辑命令的使用
除了使用集成开发环境之外, 也可以用传统的命令行界面来运行Turbo C程序, TCC命令可以以命令行的方式编译C源文件, 将它们连接成可执行文件。可在其它程序中将TCC作为外部程序调用, 实现以命令行方式编译连接C源程序。
除以上几点外, 系统还涉及到了编译原理中的词法分析及语法分析方法。
4 编程题自动评分流程
对于编程题进行自动评卷, 较复杂, 因此本文重点介绍该题型自动评分功能的实现方法。
由于本文针对的是非计算机专业的C语言课程, 学生普遍刚刚接触程序设计, 造成恶意代码的概率较低, 再结合C语言程序结构、语法特点, 对编程题评分主要采用结果、静态评分与动态评分相结合的方法, 具体步骤如下:
(1) 结果对比
检查指定的结果文件是否存在, 若存在则与标准答案文件进行对比, 与标准答案文件内容完全相同, 则说明结果正确, 得满分, 否则转去静态评阅, 若无结果文件, 执行动态评分。
(2) 基于可执行文件的动态评分
对考生源程序进行编译连接, 若生成可执行文件成功, 则运行考生程序, 用预先定义的测试数据集中的各组测试数据作为输入值, 进行测试, 比较运行结果和期望结果, 并通过比较结果评定学生程序的分数。若生成失败, 说明考生程序存在语法错误, 转入以下过程继续处理:
1) 对考生源程序进行词法分析。扫描源程序, 将其转化为特定格式的TOKEN串, 存入TOKEN文件;
2) 根据词法分析的结果, 即TOKEN文件, 进行语法分析, 详细指出程序中存在的语法错误, 生成错误文件, 在保证不对考生程序正确部分产生破坏的前提下, 尽最大可能将考生程序修改正确, 生成修改后的TOKEN文件;
3) 调用转换程序将修改后的TOKEN文件重新生成为C语言源程序, 其与考生源程序的名字不同, 称其为新生成源程序;
4) 调用TCC程序以命令行方式对新生成源程序进行编译连接;
5) 编译连接成功, 运行新源程序的执行文件, 并调用API函数控制程序运行, 以防由于死锁的发生导致系统崩溃;编译失败则退出动态评阅过程, 改用静态评阅;
6) 对新生成源程序的运行结果进行检测, 若有结果, 则转去进行结果比较, 若无结果则转去进行静态评阅。
(3) 基于程序代码的静态评分
与动态评分相比, 代码静态评分不需要运行学生的程序, 因此不用考虑对系统安全性的影响, 作为编程题评分的必要环节, 代码静态检查对于可执行和不可执行的程序都适用。代码静态检查分为软件质量度量方法和源程序分析比较方法。软件质量度量方法主要是对程序的常量、变量和关键字等内容进行分析后, 根据匹配程度给出分数。源程序分析比较方法主要是通过将学生源程序和标准程序进行匹配, 该方法依赖于标准答案的数据集, 根据模板最为匹配的答案与学生源程序进行对比, 根据匹配程度给出评分。源程序分析比较方法主要采用的是基于结构度量的技术。从程序设计题题库文件中读取该试题的关键语句, 对考生程序进行检测, 根据检测出的考生程序中的关键语句的条数, 判断程序的逻辑合理性, 给出相应分值。
5 结束语
目前, 利用计算机对学校各门课程考试试题库进行管理、组卷、测试、评分系统的开发与使用, 已成为各个院校教学改革的重点内容之一。限于篇幅, 本文只重点介绍编程题目的自动评分方法的实现。
参考文献
[1]赫伽宁.结合动态测试与静态分析的编程题自动评分方法研究[D].哈尔滨工业大学, 2008.
[2]谭浩强.C语言程序设计[M].北京:清华大学出版社, 2004.
[3]王春霞.自动阅卷系统的开发[J].盐城工学院学报, 2002 (15) .
【c语言考试系统】推荐阅读:
C语言考试12-19
二级C语言等级考试11-09
c语言考试题目及答案07-06
c语言考试模拟试题05-26
c语言考试编程题练习09-05
c语言期末考试试题106-09
大学C语言考试知识点09-21
深大C语言期末考试模拟题06-28
嵌入式系统C语言05-30
c语言考试题及答案a卷08-27