数据库课程设计网上考试系统.docx

上传人:b****6 文档编号:5834222 上传时间:2023-01-01 格式:DOCX 页数:30 大小:310.12KB
下载 相关 举报
数据库课程设计网上考试系统.docx_第1页
第1页 / 共30页
数据库课程设计网上考试系统.docx_第2页
第2页 / 共30页
数据库课程设计网上考试系统.docx_第3页
第3页 / 共30页
数据库课程设计网上考试系统.docx_第4页
第4页 / 共30页
数据库课程设计网上考试系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据库课程设计网上考试系统.docx

《数据库课程设计网上考试系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计网上考试系统.docx(30页珍藏版)》请在冰豆网上搜索。

数据库课程设计网上考试系统.docx

数据库课程设计网上考试系统

计算机与软件工程学院

课程设计说明书

课程名称:

面向对象程序设计-课程设计

课程代码:

106086459

题目:

网上考试系统

年级/专业/班:

13级物联网工程2班

学生姓名:

陈凯锋

学  号:

3120130911227

开始时间:

2016年5月6日

完成时间:

2008年5月16日

课程设计成绩:

学习态度及平时成绩(30)

技术水平与实际能力(20)

创新(5)

说明书撰写质量(45)

总分(100)

指导教师签名:

年月日

 

1.引言

1.1问题的提出

随着计算机技术的发展和互联网时代的到来,人们已经进入了信息时代,亦或是数字化时代。

在数字化的网络环境下,学生希望能够有更方便,公平的考试方式,并且希望能够在网上随时查询自己的成绩,老师希望能够在线编辑,修改试卷,以及在线阅卷,系统管理员希望能够方便地查询,修改学生,教师的信息,以此来提高工作效率,以适应互联网时代的高速发展。

我国历来采用手工出卷的方式作为老师的例行工作之一,试卷的编辑,整理工作占了很大份额。

随着计算机网络技术的不断提高,学校对于学生的各方面管理也更加趋于网络化,网上考试系统就是其中一例。

在线考试系统正是迎合这一需求而开发的,它旨在探索一种以互联网为基础的考试模式。

通过这种新的模式,为考生创造一种新的考试环境,提高考试工作效率和标准化水平。

1.2国内外研究的现状

世界各国对教育的发展给予了前所未有的关注,都试图在未来的信息社会中让教育处于一个优势的位置,从而走在社会发展的前列,为此许多国家都把信息技术应用于教育,作为民族发展的重要推动力。

在国外,美国心理协会在1986年出版了关于如何开发、使用计算机化考试以及解释考分的指南,成为了考试和软件开发者的事实标准。

投入实际使用的例子有:

1982年采用远距离教育方式的美国学院(AmericanCollege)考试使用计算机进行测试;1993年美国教育考试中心(EraduadeRecordExamination简称ETS)考试;从1994年开始,美国护理证书考试完全在计算机上进行。

目前,国外许多大型测验出版机构、地区教育主管部门和专业资格认证机构都以某种测量理论为指导建立题库、设计考试系统,并进行各项相关研究。

除了这类行业专用的大型考试系统之外,供普通教师使用的通用考试系统软件也有相应的研究和产品。

如英国QuestionMarkComputing,Ltd公司出品的QuestionMark,就是一种基于项目反应理论的,可供广大教师使用的通用的考试系统。

在我国,计算机考试系统和题库的理论研究和实践应用起步比较晚。

但发展也比较迅速,研究和开发活动比较活跃。

北京师范大学、华北师范大学等高等院校都有教师在进行教育测量理论应用于题库建设方面的研究。

清华大学、上海交通大学、北京师范大学等高校,也有教师在组织力量致力于实用考试系统的研究和开发工作。

其中使用专用在线考试系统影响较大的考试有:

1994年开始,国家教务组织的全国计算机等级考试;1996年开始,教育部考试中心举办的全国算机应用技术证书考试(NationalApplideInformationTechnologyCertificate简称NIT);微软授权培训中心(MicrosoftAuthorizedTrainingCenter简称ATC)组织的认证考试等。

1.3国内网上考试系统的问题

我国的专用考试系统主要针对计算机考试,其他行业和科目的考试系统太少。

计算机在线考试系统由于操作类题目自动出题有较大的难度,基本没有实现题库化的管理。

系统对传统的客观题虽然一般建有题库但不大,多采用随机抽题组卷的方式,缺乏教育测量理论作为依。

多数的在线考试系统是C/S模式的,也就是说需要安装客户端之后才能使用,这样就带来了很多的不方便之处。

考试完成后,分数和试题统计分析比较简单,没有充分挖掘数据所包含的信息。

通过考试系统或题库系统对最终用户即教师的需求分析做的不够透彻,忽略老师们渴望能自由地操纵试题库的需求,没有完全实现用户自主初始化试题库、自主维护试题库、自主调用试题库的功能。

加上软件实用水平和商品化工作方面的不足。

通用系统并没有被广大教师认可和使用。

1.5任务与分析

本课题主要的目的是:

利用网络进行无软盘、无纸化的在线考试,大大提高考试的可靠性、有效性,降低考试成本,提高工作效率。

1.用户类别:

登录系统的身份定为三种,一是管理员,二是普通老师,四是学生,只有被授权的用户才可以使用本系统的资源。

2.权限管理:

系统需要经过有效的身份验证可以登录。

用户的身份不同,使用的系统资源也不同。

考生只可以参加在线考试;普通教师可以在线制作试卷,控制考试、成绩查询、添加试题、阅卷等。

管理员可添加系系部、教师、专业、科目信息、查询修改管理员信息及审批试卷、查询考生成绩。

3.在线考试功能:

考生输入学号密码登陆系统后,选择对应的试卷可进行考试。

答题中,有倒计时的功能,考试结束时还没提交就自动交卷,系统将自动对客观题进行评分。

4.考生管理功能:

可注册新增学生用户,同时查看考生及班级考生的信息。

5.考生成绩查询功能:

提供考生各科目成绩的详细查询。

可选:

将成绩导出到Excel等

6.试卷审批功能:

只有管理员有此权限。

教师制作试卷完毕,只有经过管理员审批后才能发布,发布后学生才能开考。

7.系统维护:

如数据安全管理(含备份与恢复)、操作员管理、权限设置等;

 

2.程序的主要功能

2.1选择身份登陆功能:

可以根据不同的身份进行登陆,登陆后会有不同的操作界面。

2.2编写试卷功能:

教师可以在线编写试卷,并将试卷添加到试卷库中。

2.3修改试卷功能:

教师可以将已经编写好的试卷从试卷库中提取出来并进行完善,修改后重新添加到试卷库中。

2.4查询考生成绩功能:

教师可以查询某个科目的所有学生的成绩。

2.5在线阅卷功能:

教师可以查询在线批改试卷,并进行打分。

2.6在线考试功能:

学生登陆后可以选择试卷进行考试。

2.7查询自己成绩功能:

学生可以查询自己已考科目的成绩。

2.8查看学生信息功能:

管理员可以查询所有学生信息。

2.9修改学生信息功能:

管理员可以修改指定学生的信息。

2.10查询教师信息功能:

管理员可以查询所有教师的信息。

2.11修改教师信息功能:

管理员可以修改制定教师的信息。

2.12查看管理员信息:

管理员可以查看所有管理员的信息。

2.13添加管理员信息:

管理员可以添加管理员。

 

3.程序运行平台

EclipseIDEforJavaEEDevelopers

jdk1.7

MySQL

MySQL的JDBC驱动

MyEclipse

运行方式:

①打开eclipse(或者MyEclipse),将动态网页工程ExamOnNet导入到eclipse中。

②然后找到src文件夹下的jdbc.properties配置文件,将里面的

user=root

password=1214758100

修改为本机的数据库用户名和密码。

③找到WebContent文件夹下的login.jsp,

右键→RunAs→RunOnServer

④输入用户名和密码并选择登陆身份,点击登陆。

图3-1

4.总体设计

4.1需求分析

首先该系统针对不同身份的人提供了不同的功能,当以某种身份登陆时,不能执行其他身份的功能,因此登录时需要进行身份验证。

其次,

①管理员可以执行的功能有:

查看,更新教师,学生,管理员的信息。

②教师可以执行的功能有:

在线编写试卷,修改试卷,批改试卷,查询某门课程的学生的成绩。

③学生可以执行的功能有:

在线考试,成绩查询。

根据①可以得出:

学生信息,教师信息,管理员信息,分别需要一张表。

根据②可以得出:

试卷,分数,课程信息,分别需要一张表。

4.2数据表信息

admin(管理员信息表)

列名

数据类型

长度

备注

adminno

char

10

管理员号

password

char

10

密码

aname

char

10

姓名

age

int

11

年龄

sex

char

1

性别

表4.2.1

 

teacher(教师信息表)

列名

数据类型

长度

备注

teacherno

char

10

教师号

password

char

20

密码

tname

char

10

姓名

rank

char

10

职称

age

int

11

年龄

sex

char

1

性别

表4.2.2

 

Student(学生信息表)

列名

数据类型

长度

备注

studentno

char

10

学生信息

password

char

20

密码

sname

char

10

姓名

age

int

11

年龄

sex

char

10

性别

classno

char

10

班级

grade

char

10

年级

major

char

20

专业

表4.2.3

paper(试卷信息表)

列名

数据类型

长度

备注

paperno

char

10

试卷信息

courseno

char

10

课程号

score_value

int

11

分值

time

int

10

时间

papercotain

text

试卷题目内容

表4.2.4

course(课程信息表)

列名

数据类型

长度

备注

courseno

char

10

课程号

cname

char

20

课程名称

表4.2.5

score(分数信息表)

列名

数据类型

长度

备注

studentno

char

10

学号

courseno

char

10

课程号

paperno

char

10

试卷号

answer

text

答案

score

int

3

分数

表4.2.6

 

4.3系统业务流程图

4.4E-R模型

5.程序说明

JDBCTools类(实现数据库连接,和数据库更新的方法)

publicclassJDBCTools{

/**

*1.获取连接的方法.通过读取配置文件从数据库服务器获取一个连接.

*

*@return

*@throwsException

*/

publicstaticConnectiongetConnection()throwsException{

//1.准备连接数据库的4个字符串.

//1).创建Properties对象

Propertiesproperties=newProperties();

//2).获取jdbc.properties对应的输入流

InputStreamin=JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");

//3).加载2)对应的输入流

properties.load(in);

//4).具体决定user,password等4个字符串.

Stringuser=properties.getProperty("user");

Stringpassword=properties.getProperty("password");

StringjdbcUrl=properties.getProperty("jdbcUrl");

Stringdriver=properties.getProperty("driver");

//2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块.)

Class.forName(driver);

//3.通过DriverManager的getConnection()方法获取数据库连接.

returnDriverManager.getConnection(jdbcUrl,user,password);

}

/**

*执行SQL语句,使用PreparedStatement

*@paramsql

*@paramargs:

填写SQL占位符的可变参数

*/

publicstaticvoidupdate(Stringsql,Object...args){

Connectionconnection=null;

PreparedStatementpreparedStatement=null;

try{

connection=JDBCTools.getConnection();

preparedStatement=connection.prepareStatement(sql);

//遍历占位符对应的对象

for(inti=0;i

preparedStatement.setObject(i+1,args[i]);

}

//执行SQL语句

preparedStatement.executeUpdate();

}catch(Exceptione){

e.printStackTrace();

}finally{

JDBCTools.release(null,preparedStatement,connection);

}

}

/**

*释放数据库资源的方法

*

*@paramresultSet

*@paramstatement

*@paramconnection

*/

publicstaticvoidrelease(ResultSetresultSet,Statementstatement,

Connectionconnection){

if(resultSet!

=null){

try{

resultSet.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

if(statement!

=null){

try{

statement.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

 

Student类(封装Student的各种属性,并赋值)

publicclassStudent{

//定义变量

privateStringstudentno;

privateStringpassword;

privateStringsname;

privateintage;

privateStringsex;

privateStringclassno;

privateStringgrade;

privateStringmajor;

publicStringgetStudentno(){

returnstudentno;

}

//定义Set和Get方法

publicvoidsetStudentno(Stringstudentno){

this.studentno=studentno;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicStringgetSname(){

returnsname;

}

publicvoidsetSname(Stringsname){

this.sname=sname;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicStringgetSex(){

returnsex;

}

publicvoidsetSex(Stringsex){

this.sex=sex;

}

publicStringgetClassno(){

returnclassno;

}

publicvoidsetClassno(Stringclassno){

this.classno=classno;

}

publicStringgetGrade(){

returngrade;

}

publicvoidsetGrade(Stringgrade){

this.grade=grade;

}

publicStringgetMajor(){

returnmajor;

}

publicvoidsetMajor(Stringmajor){

this.major=major;

}

//定义构造方法

publicStudent(Stringstudentno,Stringpassword,Stringsname,intage,Stringsex,Stringclassno,Stringgrade,

Stringmajor){

super();

this.studentno=studentno;

this.password=password;

this.sname=sname;

this.age=age;

this.sex=sex;

this.classno=classno;

this.grade=grade;

this.major=major;

}

publicStudent(){

super();

//TODOAuto-generatedconstructorstub

}

}

StudentDao类(实现对Student对象的添加,删除,修改,查找)

publicclassStudentDao{

//插入

publicvoidinsertAll(Stringstudentno,Stringpassword,Stringsname,intage,

Stringsex,Stringclassno,Stringgrade,Stringmajor){

Connectionconn=null;

Statementstatement=null;

ResultSetresultSet=null;

try{

//1.获取Connection

conn=JDBCTools.getConnection();

//2.获取Statement

statement=conn.createStatement();

//statement2=conn.createStatement();

//3.准备SQL

Stringsql="SELECT*fromstudentwherestudentno="+studentno;

//4.执行查询,得到ResultSet

resultSet=statement.executeQuery(sql);

//判断此学生账号是否存在

if(resultSet.next()){

//测试方法

System.out.println("已存在的学生员账号!

");

}else{

//插入新的学生信息

Stringsql1="insertintoadmin(studentno,password,sname,age,sex,classno,grade,major)"

+"values(?

?

?

?

?

?

?

?

)";

JDBCTools.update(sql1,studentno,password,sname,age,sex,classno,grade,major);

statement.executeUpdate(sql1);

System.out.println(sql1);

System.out.println("已执行添加操作。

");

}

}catch(Exceptione){

e.printStackTrace();

}finally{

//6.关闭数据库资源.

JDBCTools.release(resultSet,statement,conn);

}

}

//删除

publicvoiddeleteByStudentno(Stringstudentno){

Connectionconnection=null;

Statementstatement=null;

try{

StringdriverClass="com.mysql.jdbc.Driver";

Stringurl="jdbc:

mysql:

///atguigu";

Stringuser="root";

Stringpassword="1230";

Class.forName(driverClass);

connection=DriverManager.getConnection(url,user,password);

statement=connection.createStatement();

Stringsql="DELETEFROMadminWHEREstudentno=?

";

JDBCTools.update(sql,studentno);

statement.executeUpdate(sql);

System.out

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1