英语标准化考试系统java课设含可运行程序.docx

上传人:b****7 文档编号:10644824 上传时间:2023-02-22 格式:DOCX 页数:40 大小:161.22KB
下载 相关 举报
英语标准化考试系统java课设含可运行程序.docx_第1页
第1页 / 共40页
英语标准化考试系统java课设含可运行程序.docx_第2页
第2页 / 共40页
英语标准化考试系统java课设含可运行程序.docx_第3页
第3页 / 共40页
英语标准化考试系统java课设含可运行程序.docx_第4页
第4页 / 共40页
英语标准化考试系统java课设含可运行程序.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

英语标准化考试系统java课设含可运行程序.docx

《英语标准化考试系统java课设含可运行程序.docx》由会员分享,可在线阅读,更多相关《英语标准化考试系统java课设含可运行程序.docx(40页珍藏版)》请在冰豆网上搜索。

英语标准化考试系统java课设含可运行程序.docx

英语标准化考试系统java课设含可运行程序

英语标准化考试系统

1.课程设计目的

通过此次课程设计,巩固和增进所学Java语言基本知识和编辑基本功并学会独立完成小规模工程的开发。

充分掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。

在课程设计过程中把所学课程及相关知识加以融会贯通,理论联系实际,为今后从事实际工作打下坚实的基础。

本课程设计设计标准化考试系统(C/S网络版),设有服务器端的考试系统,考生必学输入服务器正确能进行开始考试,在开始考试后伴随着考试时间。

2.设计方案论证

2.1设计思路

2.1.1本系统界面有连接服务器框架。

只有连接成功才能进行考试操作。

2.1.2连接成功后具有一个选题功能能,选择想做的题目,开始答题。

2.1.3开始答题之后会出现答题内容,在答题过程中有倒计时功能,倒计时结束答题结束,选择具有A,B,C,D四个多选框。

有三个按钮控制题目番页及提交答案。

2.1.4答题结束提交答案会显示所得分数和正确答案与自己所做答案。

2.2设计方法

在设计标准化考试系统时,需要编写5个Java源文件:

ChoiceFile.java、Cliet.java、ClientTestArea.java、ReadTestquestion.java和Server.java。

和若干个试题文件。

2.2.1Client.java主类

负责创建标准化考试系统客户端的主窗口。

该类含有main方法,程序从该类开始执行。

如果服务器连接成功,将提示用户连接成功,并在窗口中显示选择试题界面;如果和服务器连接失败,将提示无法连接,不出现选择试题的界面

2.2.2CloiceFile.java

负责获取服务器上试题文件的名字,并将名字添加到客户端界面的下拉式列表中。

该类创建的对象是Client窗口的一个成员变量---选择试题文件界面

2.2.3ClientTestArea.java

负责客户端窗口中的考试界面,该界面可以读取服务器端的试题、显示试题、像服务器提交答案、显示考试所剩时间等等。

2.2.4Server.java

负责监听客户的呼叫,为每个发出呼叫的客户启动一个线程,在该线程中和客户交流信息。

2.2.5ReadTestquestion.java

负责读取试题文件和计算考试分数。

客户端各类之间的关系如图1所示。

 

图1客户端各类之间的依赖关系

服务器端各类之间的关系如图2所示。

 

图2服务器端各类之间的依赖关系

2.3功能模块

此设计共有以下几个功能模块。

2.3.1服务器

2.3.2呼叫服务器

输入服务器域名,如192.168.0.1呼叫。

如果成功显示呼叫成功,并显示隐藏块选择试题。

2.3.3选择试题

包括一个按钮和一个下拉列表。

点击“将试题文件添加到下拉列表中”按钮。

试题文件就添加到下拉列表中,在下拉列表中选择要答的试题。

2.3.4开始考试

包括一个按钮,点击开始考试出现考试内容。

2.3.5考试内容显示

点击开始考试之后显示该区域。

其中包括两个文本框、四个多选及三个按钮和一个计时器。

2.3.6得分文本框

显示得分、正确答案和回答的答案。

2.3.7试题文本框

显示试题内容。

2.3.8多选框

A、B、C、D四个选项,选择哪项在前面打勾。

2.3.9提交、下一题及查看得分按钮

提交该题答案:

确认提交,提交后不能修改,提交后可以读取下一题

读取下一题:

切换到下一题。

查看得分:

答完之后查看得分,显示自己的得分及其正确答案。

2.3.10计时器

显示剩余时间。

 

2.4流程图如下

图3客户端流程图

 

图4服务器流程图

2.5类、方法、属性说明

2.5.1客户端主类Client

(1)成员变量见表1

表1主要成员变量(属性)

成员变量描述

变量类型

名称

输入服务器IP的文框

TextField

输入呼叫地址

负责呼叫

Button

开始呼叫

负责开始考试

Button

考试测试

显示提示信息

Label

提示条1,提示条2,提示条3

客户端套接字对象

Socket

socket

负责选择试题文件

ChoiceFile

选择试题文件界面

显示考试界面

ClienTestArea

客户考试界面

(2)方法见表2

表2主要方法

名称

功能

备注

Client

创建客户端窗口

构造方法

actionPerformed

处理ActionEvent事件

接口方法

main

客户端程序开始运行

2.5.2客户端选择界面类ChoiceFile

(1)成员变量见表3

表3主要成员变量(属性)

成员变量描述

变量类型

名称

触发试题文件名的获取

Button

得到试题文件

负责显示试题文件名字

Choice

list

客户端套接字

Socket

socket

负责读取服务器发来的试题文件名的线程

Thread

thread

(2)方法见表4

表5主要方法

方法名

功能

备注

ChoiceFile

创建选择试题界面

构造方法

setSocketConnection

和服务器建立连接

run

读取服务器发来的信息

接口方法

actionPerformed

处理ActionEvent事件

接口方法

itemStateChanged

处理ItemEvnent事件

接口方法

得到选择的文件名

得到用户选择的试题的名字

getSuccess

判断选择试题界面是否得到了服务器端全部试题文件的名字

2.5.3客户端考试界面类ClientTestArea

(1)成员变量见表5

表5主要成员变量(属性)

成员变量描述

变量类型

名称

客户端套接字

Socket

socket

试题显示区

TextArea

试题显示区

答案显示区

TextArea

答案显示区

读取服务器信息的线程

Thread

threadMessage

选择答案用的Checkbok组件数组

Checkbox[]

box

计时器

Timer

计时器

考试时间

long

time

显示考试剩余时间的文本条

TextField

考试用时提示条

负责提交答案、读取试题、查看得分的按钮

Button

提交该题答案,读取下一题,查看得分

(2)方法见表6

表6主要方法

方法名

功能

备注

ClientTestArea

创建考试界面对象

构造方法

getTime

获取考试用时

setSocketConnection

和服务器建立套接字连接

Set试题显示区

设置试题显示区的文本内容

run

读取服务器端发送的信息

接口方法

actionPerformed

处理ActionEvent事件

接口方法

2.5.4服务器端主类Server

(1)成员变量见表7

表7主要成员变量(属性)

成员变量描述

变量类型

名称

监听客户端呼叫

ServerSocket

server

与客户端套接字建立起连接的服务器套接字

Socket

socket

为处理客户端请求而启动的线程

Server_thread

(无)

(2)方法见表8

表8主要方法

方法名

功能

main

启动服务器端程序

2.5.5服务器端读取试题类ReadTestquestion

(1)成员变量见表9

表9主要成员变量(属性)

成员变量描述

变量类型

名称

文件名字

String

filename

正确答案

String

correctAnswer

试题内容

String

testContent

用户提交的答案

String

selection

用户得分

int

score

试题用时

long

time

读取试题的字符流

FileDeader

in

(3)方法见表10

 

表10主要方法

方法名

功能

setFilename

设置试题文件的名字

getFilenama

获取试题文件的名字

getTime

获取考试用时

set

设置是否已完成考试

get

判断是否已完成考试

getTestContent

获取下一道试题的内容

setSelection

排列用户提交的答案

getScore

计算用户得分

getMessages

查阅分数和正确答案

3.设计结果与分析

3.1将服务器端到个java文件和若干试题文件保存到和网络相连接的一台计算机的同一个文件夹中,例如F:

\java\ksxt。

将两个java文件分别编译为.class文件,服务器端用java解释器运行主类:

F:

\java\tsxt>javaServer开始等待用户的呼叫,如图5所示。

图5启动服务器

3.2将客户端的3个java文件保存到一台与网络相连接的计算机的同一个文件夹中,例如F:

\java\ksxt。

将3个文件分别编译成相应的字节码(class)文件。

然后,用java解释器运行主类:

运行客户端F:

\java\ksxt>javaClient界面如图6所示。

图6客户端界面

根据提示输入服务器的IP地址,输入错误显示“您呼叫没有成功”。

重新输入,输入正确显示考试内容如图7、图8所示。

图7呼叫服务器失败界面

图8呼叫成功界面

呼叫成功,选择试题点击开始考试可以就可以进行考试。

如图9为选择B试题之后的界面。

图9开始考试界面

点击提交该题,确定此题答完读取下一题,全部答完查看得分,在上面的文本能看到自己的得分和正确答案。

如图10所示。

图10查看得分界面

4.设计体会

经过几天的努力,参考了一些书和网上的资料,完成了一个标准化考试系统。

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。

回顾起此次课程设计,至今我仍感慨颇多,从确定题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到的问题,可以说是困难重重,这毕竟是第一次自己做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。

5.参考文献

[1]陈国君,陈磊,刘洋.Java2程序设计基础[M].北京:

清华大学出版社;2008.6

[2]耿祥义,张跃平.Java课程设计[M].北京:

清华大学出版社;2008.11:

228-251

[3]张思民,梁维娜.Java程序设计实践教程[M].北京:

清华大学出版社;2006.8:

1-21

[4]叶核亚.JAVA2程序设计实用教程[M](第2版).北京:

电子工业出版社;2008.4.

 

6.附录:

(1)//Client类

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

import.*;

publicclassClientextendsFrameimplementsActionListener

{

TextField输入呼叫地址=null;

Button开始呼叫,开始测试=null;

Label提示条1=null,提示条2,提示条3;

Socketsocket=null;

DataInputStreamin=null;

DataOutputStreamout=null;

ChoiceFile选择试题文件界面=null;

ClientTestArea用户考试界面=null;

Panelwest,center;

publicClient()

{

super("英语标准化考试系统");

输入呼叫地址=newTextField(16);

开始呼叫=newButton("呼叫");

开始测试=newButton("开始考试");

开始呼叫.addActionListener(this);

开始测试.addActionListener(this);

选择试题文件界面=newChoiceFile();

选择试题文件界面.setVisible(false);

用户考试界面=newClientTestArea();

用户考试界面.setVisible(false);

提示条1=newLabel("输入服务器的IP或域名,如192.168.0.218");

提示条2=newLabel("提示是否连接成功的标签");

提示条3=newLabel("选择一个文件后,单击"+开始测试.getLabel()+"按钮");

提示条3.setVisible(false);

PanelH1=newPanel();

H1.add(提示条1);

PanelH2=newPanel();

H2.add(输入呼叫地址);

H2.add(开始呼叫);

PanelH3=newPanel();

H3.add(提示条2);

PanelH4=newPanel();

H4.add(提示条3);

PanelH5=newPanel();

H5.add(选择试题文件界面);

west=newPanel();

center=newPanel();

west.setLayout(newGridLayout(5,1));

west.add(H1);

west.add(H2);

west.add(H3);

west.add(H4);

west.add(H5);

center.setLayout(newBorderLayout());

center.add(开始测试,BorderLayout.NORTH);

center.add(用户考试界面,BorderLayout.CENTER);

add(west,BorderLayout.WEST);

add(center,BorderLayout.CENTER);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);

}

});

setVisible(true);

setBounds(60,40,660,460);

validate();

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==开始呼叫)

{

if(socket!

=null&&in!

=null&&out!

=null)

try

{

socket.close();

in.close();

out.close();

用户考试界面.setVisible(false);

}

catch(Exceptionee)

{

}

Stringip=输入呼叫地址.getText().trim();

try

{

socket=newSocket(ip,6666);

in=newDataInputStream(socket.getInputStream());

out=newDataOutputStream(socket.getOutputStream());

}

catch(IOExceptionee)

{

输入呼叫地址.setText("呼叫失败");

提示条2.setText("您呼叫没有成功");

}

if(socket!

=null)

{

InetAddressaddress=socket.getInetAddress();

提示条2.setEnabled(true);

提示条2.setText("您呼叫:

"+address+"成功");

选择试题文件界面.setVisible(true);

选择试题文件界面.validate();

选择试题文件界面.setSocketConnection(socket,in,out);

提示条3.setVisible(true);

west.validate();

validate();

}

}

if(e.getSource()==开始测试)

{

if(选择试题文件界面.getSuccess())

{

用户考试界面.setSocketConnection(socket,in,out);

用户考试界面.setVisible(true);

用户考试界面.set试题显示区("你选择了试题:

"+选择试题文件界面.得到选择的文件名());

center.validate();

validate();

}

}

}

publicstaticvoidmain(Stringargs[])

{

newClient();

}

}

(2)//ChoiceFile类

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

importjava.io.*;

import.*;

publicclassChoiceFileextendsPanelimplementsItemListener,ActionListener,Runnable

{

Button得到试题文件=null;

Choicelist=null;

Socketsocket=null;

DataInputStreamin=null;

DataOutputStreamout=null;

Threadthread=null;

booleansuccess=false,isSelected=false;

intn=0;

publicChoiceFile()

{

得到试题文件=newButton("将试题文件添加到下拉列表中");

得到试题文件.setEnabled(false);

得到试题文件.addActionListener(this);

list=newChoice();

list.add("**********");

add(得到试题文件);

add(list);

list.addItemListener(this);

thread=newThread(this);

}

publicvoidsetSocketConnection(Socketsocket,DataInputStreamin,DataOutputStreamout)

{

this.socket=socket;

this.in=in;

this.out=out;

try{

thread.start();

}

catch(Exceptionee)

{

}

if(this.socket!

=null)

{

得到试题文件.setEnabled(true);

}

}

publicvoidactionPerformed(ActionEvente)

{

try

{

out.writeUTF("列出考试文件");

}

catch(IOExceptionee)

{

success=false;

}

}

publicvoiditemStateChanged(ItemEvente)

{

n=list.getItemCount();

if(n>=1&&isSelected==true)

{

StringlistItem=list.getSelectedItem();

try

{

out.writeUTF("考试文件的名字:

"+listItem);

out.writeUTF("请通知考试界面考试用时:

");

}

catch(IOExceptionee)

{

}

}

}

publicString得到选择的文件名()

{

returnlist.getSelectedItem();

}

publicvoidrun()

{

Strings=null;

list.removeAll();

while(true)

{

try

{

s=in.readUTF();

if(s.startsWith("考试文件:

"))

{

StringlistItem=s.substring(s.indexOf(":

")+1);

list.add(listItem);

isSelected=true;

}

if(s.startsWith("已经全部列出:

"))

{

success=true;

break;

}

}

catch(Exceptionee)

{

}

}

}

publicbooleangetSuccess()

{

n=list.getItemCount();

if(n>0&&success==true)

returntrue;

else

returnfalse;

}

}

(3)//ClientTestArea类

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

importjava.io.*;

import.*;

publicclassClientTestAreaextendsPanelimplementsActionListener,Runnable

{

Socketsocket=null;

DataInputStreamin=null;

DataOutputStreamout=null;

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

当前位置:首页 > 求职职场 > 简历

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

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