在线考试系统数据库设计与实现
- 格式:docx
- 大小:689.80 KB
- 文档页数:29
软件设计开发本栏目责任编辑:谢媛媛基于B/S 模式程序设计类课程在线考试系统的设计与实现逄靓(辽宁理工职业大学,辽宁锦州121000)摘要:目前各高校程序设计类课程的考试模式发生了改变,以往单纯笔试或上机编程的考试方式逐步改为使用在线考试系统进行。
但是针对大部分考试系统,不能适应客观性试题与主观性试题混合随机组卷、判卷的弊端。
该文设计开发一款基于B/S 模式混合组卷的在线考试系统,重点对随机组卷和主观题自动判卷两个功能进行详细研究,学生登录系统后,进行程序设计类课程的阶段考试或期末考试,教师既能及时了解学生学习效果,同时也能减轻教师的工作压力。
关键词:在线考试系统;B/S ;程序设计中图分类号:TP311文献标识码:A文章编号:1009-3044(2021)08-0085-02开放科学(资源服务)标识码(OSID ):1背景在互联网遍布的时代,在线教学在如今传统课堂中的地位很高,随着在线教学不断建设与发展,成为一种超前的教学方式,发展空间非常广阔,是教学改革的重要方向。
同时,对应在线教学的考试方式也要进行改革,要顺应考试发展的新趋势。
改变传统的考试方式,将线上考试融入课程中。
高校中程序设计类课程是实践性很强的课程,主要培养学生的逻辑思维能力、创新思维能力以及实践动手能力。
这类课程的考核重点是考查学生对理论知识和实践技能的综合运用情况。
在高校程序设计类课程的传统考试方式主要有三种类型:纸质闭卷考试、上机编程考试、期末答辩考试。
本文根据这类课程的特点,构建出适合该类课程的考试系统。
随着“在线考试系统”在教学领域的不断应用,人工进行出出题、阅卷的方式已不能适应考试需求,各高校逐步使用在线考试系统对学生的学习效果进行考核评估。
目前,适用于程序设计类课程的在线考试系统都存在一定的弊端,主要出现在以下三个方面:1)没有针对程序设计类课程专业的在线考试系统,对于程序设计类课程依然采用通用考试系统,该系统适用于多类课程,系统操作复杂;2)大多数系统仅有客观题,没有编程填空、程序实操等主观题,所以很难考查学生动手编程能力。
目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2 系统分析与设计 (1)2.1 功能及性能分析 (1)2.1.1 功能需求 (1)2.1.2 性能需求 (2)2.1.3 数据流图 (2)2.2 系统的开发运行环境 (3)2.3 系统总体设计 (3)3 数据库设计 (4)3.1 数据库概念结构 (4)3.2 数据库逻辑结构 (5)3.2.1 关系模型及优化 (5)3.2.2 视图的设计 (5)3.3 数据库的实现 (6)3.3.1表 (6)3.3.2 安全性设计 (7)3.3.3 一致性设计 (7)3.3.4触发器的设计 (8)4 详细设计与实现 (9)4.1 登录模块 (9)4.2 考生注册模块 (9)4.3 在线考试模块 (10)4.4 后台功能模块 (13)I4.4.1试题管理模块 (13)4.4.2考生管理模块 (13)4.4.3成绩管理模块 (14)结论 (15)参考文献 (15)II1 引言1.1课程设计选题《在线考试系统》1.2课程设计的目的通过数据库系统课程设计,熟悉了SQL SERVER数据库管理系统的结构与组成;掌握了SQL SERVER数据库管理系统的应用技术和的使用;应用ASP开发工具实践了《在线考试系统》的数据库应用系统的设计方法、开发过程和SQL SERVER数据库的管理与维护。
最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。
1.3本选题的设计背景随着计算机技术的发展和互联网时代的到来,人们已经进入了信息时代,亦或是数字化时代。
在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时希望能够得到科学的评价;教育机构也希望给网上的学生提供更灵活的服务。
在线考试系统正是迎合这一需求而开发的,它旨在探索一种以互联网为基础的考试模式。
通过这种新的模式,为考生创造一种新的考试环境,提高考试工作效率和标准化水平。
基于Web技术的在线模拟考试系统设计与实现案例随着社会的快速发展,人们对教育的要求也越来越高。
特别是在幼儿教育阶段,家长和教师都希望孩子们能够提前掌握更多的知识和技能。
然而,传统的考试方式往往无法满足这种需求,因此,基于Web技术的在线模拟考试系统应运而生。
一、系统需求分析1.功能需求(1)用户注册与登录:用户可以通过注册账号的方式登录系统,以便于管理和查询考试记录。
(2)考试题目管理:管理员可以在系统中发布、修改和删除考试题目。
(3)考试模拟:用户可以根据自己的需求选择不同的考试科目进行模拟考试。
(4)考试结果展示:用户完成考试后,系统可以自动评分并展示考试结果。
2.性能需求(1)系统响应速度:系统需要能够在短时间内完成用户的登录、考试、评分等操作,以提高用户体验。
(2)数据安全性:系统需要保证用户数据和考试数据的安全性,防止数据泄露或被恶意攻击。
(3)系统稳定性:系统需要具备较强的抗压能力,能够应对高并发、大数据量的场景。
二、系统设计1.技术选型(1)前端:HTML、CSS、JavaScript(2)后端:Java、PHP、Python等(3)数据库:MySQL、Oracle等2.系统架构设计(1)B/S架构:采用浏览器/服务器架构,方便用户通过Web端进行访问和操作。
(2)三层架构:将系统分为表示层、业务层和数据层,有利于代码分离和模块化。
3.模块划分(1)用户模块:包括用户注册、登录、修改资料等功能。
(2)题目管理模块:包括题目发布、修改、删除等功能。
(3)考试模拟模块:用户可以选择题目进行模拟考试。
(4)考试评分模块:系统自动对用户提交的答案进行评分。
(5)考试记录模块:用户可以查看自己的考试记录和成绩。
三、系统实现1.前端实现(1)HTML页面:使用HTML标签搭建考试系统的页面结构。
(2)CSS样式:通过CSS样式美化页面,提高用户体验。
(3)JavaScript脚本:使用JavaScript实现页面的动态交互功能。
C语言在线考试系统的设计与实现作者:徐晓君来源:《考试周刊》2013年第83期摘要:根据实际教学需求,设计并实现了C语言在线考试系统。
系统的开发以采用结构化设计思想为指导,文章针对系统的分析、设计、数据库设计、关键模块的实现等进行了阐述。
系统在实际试用中运行良好,具有一定的实用价值和推广价值。
关键词: C语言在线考试系统设计实现1.系统开发的背景及意义考试作为教学评测的一种主要手段,其规范性、科学性及考试工作的组织、管理等直接关系到教学测评的准确性和客观性,影响教学质量。
目前,在我校,C语言程序设计课程作为公共基础必修课,全校大面积开设C语言程序设计课程,每学期期末考试时,面临大量问题,包括组卷、试卷印刷、试卷装订、试卷批阅、阅卷审核、合分、成绩计算及成绩录入等,不仅花费时间、金钱,而且造成大量纸张浪费,增加授课教师的工作量。
同时,人工阅卷、合分工作不仅速度慢,而且存在误判的情况,很容易造成教学事故。
鉴于以上情况,开发一个C语言考试系统就显得非常必要。
2.系统分析与设计经过对我校C语言程序设计课程的教学与考试情况的分析,我认为本系统应分为三个模块、学生端模块、教师端模块、管理员端模块。
不同模块实现不同的功能,分别针对不同用户对象。
2.1学生端模块学生模块主要包括学生个人信息查看、章节练习、章节自测、模拟考试、在线考试、成绩查询等模块。
学生在登录后,通过个人信息管理模块可以查看个人信息,若有错误,则可以向管理员传递正确信息,经管理员核查后修改;章节练习模块中存放各章节所有习题,学生可根据学习进度选择章节进行巩固与练习,若遇到不会的题目,学生则可查看本题参考答案;章节自测模块可对本章节学习情况进行测试,题型包括选择题、填空题、程序设计题等类型。
在答题过程中,在学生答完题点击提交后可自动判选择题、填空题、程序分析题的分值,同时给出题目答案,而程序设计题则会给出本题的参考答案;模拟考试模块可从题库中抽题,自动组卷,功能与章节自测模块类似,不同之处在于模拟考试模块所抽取的题是所有章节的题目;在线测试模块在期末考试时才对学生开放,完成期末考试。
在线考试系统需求分析报告目录1.1 系统设计1.1.1目标设计1.1.2设计思想1.1.3 系统功能设计2.2数据库设计与实现2.2.1 数据库的需求分析2.2.2数据库的结构创建考试系统主要包括系统的注册、在线的考试系统、考场信息管理系统、试题管理系统、试卷自由组装系统、针对不同科目考试系统、评分系统、在线的管理系统和在线的阅卷系统等。
首先是注册功能,虽然在本系统中没有复杂的注册功能,也不需要用户的详细信息,但是一定的注册功能对系统的安全还是必要的。
其次是在线的考试系统,这里要考虑的主要是怎样出题、怎样收集答案、怎样保存,怎样判分这些问题。
试卷自由组装系统,不同类型的试题可以自由组装形成一套新的试卷。
针对不同科目考试系统,可以安排不同的科目考试。
考场信息管理系统,安排不同考场,考生,考试时间等信息。
在线的账号管理系统比较简单,就是要对数据库中的管理员用户和教师用户,学生用户进行管理,而管理的项目则包括浏览整个系统的用户,添加、删除用户,以及更改用户的密码。
在线的阅览试卷系统是对在线考试系统的补充,因为我们的在线系统是自动判分的,但是为了判分的准确性,以及对用户的答题情况进行详细地了解,对用户的试卷应该进行判定。
1系统设计1.1目标设计考试系统的功能如下。
1.登录系统的功能如下:欢迎页面功能选择页面各种功能的登录页面及密码验证2.考试系统的主要实现功能要求:让用户选择试卷类型让用户选择试卷的断线情祝从试题库中随机出题给用户将随机试卷保存在暂时表中保存用户的答案给用户的试卷判分保存用户的试卷查询用户成绩3.试卷自由组装系统让用户自己选择试卷题目系统自己组装试卷题目4.针对不同科目考试系统安排不同科目考试题5.在线账户管理系统的主要功能要求选择更改账户属性的类别浏览整个系统中的各种用户(超级用户、普通用户、添加试题的、管理用户和评卷老师用户)添加包含某项功能的用户删除不再需要的用户更改用户的密码6.在线阅卷系统的主要功能要求浏览系统中用户答案情况。
西南财经大学Southwestern University of Finance and Economics课程实验报告课程名称:数据库学生姓名:周小钰、李佳颖学院:经济信息工程学院专业:计算机科学与技术指导教师:李玉荣.2016年12月1.课程设计题目与要求1.1数据库设计题目设计和实现一个网上在线考试系统,系统应完成以下基本的业务:a.至少两个教师,每个教一门课程b.每个班至少包含十名学生。
c.教师能够修改试卷的题目并模仿一名同学参加一门考试d.教师可提取一份试卷查卷e.教师可检查其所教班级的成绩、任一学生的成绩以及查询全班的平均成绩和总成绩。
f.每一套题至少包括十道选择题g.选择题自动阅卷,书写题人工阅卷以上很粗略描述了网上考试系统的基本要求,你们可以根据实际问题的需要,补充和细化系统的要求。
本课程设计包括两个部分:数据库和用户界面(用户图形化界面基本要求就是登录加试卷内容的提取)1.2数据库设计要求a.使用java/c语言,源程序要有适当的注释,使程序易于阅读b.建议作出用户界面c.学生可自动增加新功能模块2.数据库设计过程2.1需求分析2.1.1业务范围a.增加、删除、维护学生账号,老师账号,课程信息和选课信息b.在线出题、出题过程可修改试题、答题、分数c.学生若有疑问可以由老师提出自己的答卷查卷d.统计一个班的学生的成绩情况供老师分析e.提取试题2.1.2业务流程a.进入在线考试系统b.通过输入账号密码判断身份,分别进入不同界面:(1)进入管理员界面后获取管理员身份。
管理员具有对整个系统的管理权限,可以管理所有账户,管理课程,以及对选课过程控制。
(2)进入教师界面后获取教师身份。
教师有权自出题、对题库进行管理以及对学生试卷进行查询。
进入出题模块后,教师可自主命题,命题内容分为单选题和填空题。
进入改题模块后,首先判断是否已有人做题,若已存在完成题目的记录,则执行修改题目功能;若无学生完成题目的记录,则执行修改题目和答案两项功能。
进入查询模块后,教师可执行试卷、答卷以学生成绩的查询功能。
(3)进入学生考试界面后,学生可选择参加考试或成绩查询。
c.结束所有操作,退出界面。
2.1.3业务流程图图1 业务流程图2.2概念结构设计2.2.1步骤a.抽象数据并设计局部视图b.集成局部视图,得到全局概念结构2.2.2原则a.忠实性(设计忠实于应用的具体要求,恰当地反映现实)b.尽可能减少冗余c.简单性考虑2.2.3具体实现图2-1 总ER图图2-2 管理员图2-3 选课表图2-4 课程信息图2-5 填空题库图2-6 学生图2-7 答卷图2-8 试卷2.3逻辑结构设计2.3.1设计目的把概念结构设计阶段设计好的概念模型转换为逻辑模型,即将基本E-R图通过转换规则转换为关系模型,然后根据优化方法得到优化的数据模型。
2.3.2具体实现将上述E-R图转换优化后得到的关系模式为:Admin(ID,password);Teacher(tID,password);Student(sno,sname,password);Course(cno,cname);Sc(cno,sno,grade);Paper(cno,sno,titleno,sanswer,getscore);Title(cno,titleno,titlecontent,answear,score);Title1(cno,titleno,titlecontent,A,B,C,D,answear,score);Testpaper(cno,testpaperno,titleno,titlecontent);后期title1删去,统一使用了title0题库表表图2-9 ER图转关系模式2.4数据库实施和维护针对数据库维护部分,我们小组将及时对该系统数据库进行备份,将各用户信息保存在文件中,保证用户信息的安全性。
3.运行结果登入(以管理员为例):管理员管理相关表信息:登入老师后出题:老师修改题目:老师查卷(生成的视图):运行结果:试卷提取:查看相关成绩信息:学生答题后生成的数据学生查询自己的成绩(后两门暂时没有考试):登陆界面:4.源代码4.1建表//课程表CREATE TABLE COURSE(CNO CHAR(4) NOT NULL, CNAME VARCHAR2(20) NOT NULL, CONSTRAINT COURSE_PK PRIMARY KEY(CNO)ENABLE);//创建学生信息表CREATE TABLE STUDENT(SNO CHAR(9) NOT NULL, SNAME CHAR(20) NOT NULL, PASSWORD VARCHAR2(20) NOT NULL, CONSTRAINT STUDENT_PK PRIMARY KEY(SNO)ENABLE);//创建选课表CREATE TABLE SC(CNO CHAR(4) NOT NULL, SNO CHAR(9) NOT NULL, GRADE CHAR(4), CONSTRAINT SC_PK PRIMARY KEY(CNO, SNO)ENABLE);ALTER TABLE SCADD CONSTRAINT SC_FK1 FOREIGN KEY (CNO)REFERENCES COURSE(CNO)ENABLE;ALTER TABLE SCADD CONSTRAINT SC_FK2 FOREIGN KEY (SNO)REFERENCES STUDENT(SNO)ENABLE;//老师信息表CREATE TABLE TEACHER(TID CHAR(9) NOT NULL, PASSWORD VARCHAR2(20), CONSTRAINT TEACHER_PK PRIMARY KEY (TID)ENABLE);//试题信息表CREATE TABLE TITLE(CNO CHAR(4) NOT NULL, TITLENO CHAR(4) NOT NULL, TITLECONTENT VARCHAR2(40), ANSWER VARCHAR2(10), SCORE CHAR(4), CONSTRAINT TITLE_PK PRIMARY KEY (CNO, TITLENO)ENABLE);ALTER TABLE TITLEADD CONSTRAINT TITLE_FK1 FOREIGN KEY (CNO)REFERENCES COURSE(CNO)ON DELETE CASCADE ENABLE;//创建学生答题表CREATE TABLE PAPER(CNO CHAR(4) NOT NULL, SNO CHAR(9) NOT NULL, TITLENO CHAR(4) NOT NULL, SANSWER VARCHAR2(10), GETSCORE CHAR(4), CONSTRAINT PAPER_PK PRIMARY KEY (CNO, SNO, TITLENO)ENABLE);ALTER TABLE PAPERADD CONSTRAINT PAPER_FK1 FOREIGN KEY (CNO)REFERENCES COURSE(CNO)ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK2 FOREIGN KEY(SNO)REFERENCES STUDENT(SNO)ON DELETE CASCADE ENABLE;ALTER TABLE PAPERADD CONSTRAINT PAPER_FK3 FOREIGN KEY(CNO, TITLENO)REFERENCES TITLE(CNO, TITLENO)ON DELETE CASCADE ENABLE;CREATE USER teacer1 IDENTIFIED BY 123456 ;4.2存储过程//管理员存储过程Create or replace procedure manastu(sno in CHAR,sname in char,password in varchar2)IsBeginInsert into studentValues(SNO, SNAME, PASSWORD);Commit;End;CALL MANASTU ('4141051','赵日天','123456');Create or replace procedure manatea(tid in CHAR,password in varchar2)IsBeginInsert into teacherValues(TID, PASSWORD);Commit;End;CALL MANATEA ('teacher1','123456');Create or replace procedure manacou(cno in CHAR,cname in varchar2)IsBeginInsert into courseValues(CNO, cname);Commit;End;CALL MANACOU ('0001','课程1');Create or replace procedure manasc(cno in CHAR,sno in char)IsBeginInsert into SCValues(cno, sno,NULL);Commit;End;CALL MANASC ('0001','41410051');//出题存储过程Create or replace procedure ks(Cno_input in CHAR,Sno_input in char,Titleno_input in char,Sanswer_input in varchar2)Isanswer1 varchar2(10);score1 char(4);Cno1 char(4);Sno1 char(9);BeginSelect cno,sno INTO cno1,sno1 from scWHERE o=cno_input and sc.sno = sno_input;exceptionwhen no_data_foundthen dbms_output.put_line('没有选课不能考试!');select answer,score INTO answer1,score1 FROM titleWHERE o=cno_input AND title.titleno=Titleno_input;ifSanswer_input = answer1 THENInsert into paperValues(cno_input,sno_input,titleno_input,sanswer_inut,score1);elseInsert into paperValues(cno_input,sno_input,titleno_input,sanswer_inut,'0');END IF;Commit;End;Call KS('0001','41410051','01','B');//修改题目存储过程//修改题目create or replace procedure XGTM(cno_input in char,titleno_input in char,titlecontent_input in varchar2)isbeginupdate title settitle.titlecontent = titlecontent_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;//修改答案create or replace procedure XGDA(cno_input in char,titleno_input in char,answer_input in varchar2)isbeginupdate title settitle.answer = answer_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;//修改分数create or replace procedure XGFS(cno_input in char,titleno_input in char,score_input in char)isbeginupdate title settitle.score = score_inputWHERE o = cno_input AND title.titleno = titleno_input;commit;end;//学生查卷过程create or replace procedure CJ (cno_input in char,sno_input in char)isv_sql varchar2(1024);beginv_sql := 'create or replace VIEWPAPER_VIEW(titleno,titlecontent,answer,sanswer,gerscore) ASSELECTtitle.titleno,title.titlecontent,title.answer,paper.sanswer,paper .getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.titleno AND paper.sno=sno_input AND o=cno_inputorder by titleno';EXECUTE IMMEDIATE v_sql using cno_input,sno_input;end;//成绩统计过程(学生考试完成点击提交时)create or replace procedure TJ(cno_input in char,sno_input in char)istotle number(10,0);beginselect SUM(GETSCORE) into totle from paperWHERE O = cno_input AND paper.SNO = sno_input;update sc set sc.grade = totleWHERE O = cno_input AND SC.SNO = sno_input;commit;end;call TJ ('0001','41410050');4.3 查询//查卷(视图)CREATE or replace VIEWPAPER_VIEW_41410051(titleno,titlecontent,answer,sanswer,gers core)AS SELECTtitle.titleno,title.titlecontent,title.answer,paper.sanswer, paper.getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno='41410051'order by titleno;//查卷(sqlplus)set linesize 200 pagesize 999 newpage;Col answer format a47;SELECTtitle.titleno,title.titlecontent,'正确答案是',title.answer,'你的答案是',paper.sanswer,'得分',paper.getscoreFROMtitle,paperWHEREo=o AND title.titleno=paper.titleno ANDpaper.sno='41410051'order by titleno;//查看试题SELECTtitle.titleno,title.titlecontentFROMtitleWHEREo='0001'order by titleno;//查看课程考试成绩情况Selectstudent.sno,student.sname,sc.gradefrom student,scwhere o='0001' ANDsc.sno = student.sno;//查看课程平均分Select avg(grade) from scWhere o='0001';4.4 登陆设计由于做登陆的时候分表查询用户信息一直出bug,经过搜索解决办法后决定建立一个教师学生用户表来解决问题create table P_USER(username CHAR(9),password VARCHAR2(20),)从此表中只判断登陆是否成功。