标准化考试系统Java课程设计范文文档格式.docx
- 文档编号:21037466
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:24
- 大小:1.15MB
标准化考试系统Java课程设计范文文档格式.docx
《标准化考试系统Java课程设计范文文档格式.docx》由会员分享,可在线阅读,更多相关《标准化考试系统Java课程设计范文文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
1.2需实现的主要功能
1 C/S模式,即客户端与服务器端都是Java应用程序;
2 输入服务器IP地址,连接服务器功能;
3 登录验证功能;
4 学生可以选择所要做的试题;
5 开始考试后,有计时功能,当时间结束时考试结束;
6 完成考试后,学生可以查看自己的分数、试题、正确答案、分值以及自己所选择的答案;
7 教师可以增加、修改、查询、删除试题;
8 教师可以查看所有考生的成绩,并且可以按成绩降序查看成绩;
9 教师可以增加、修改、查询、删除学生信息;
10 教师可以增加、修改、查询、删除教师信息;
2.需求分析
根据标准化考试系统的设计要求和所要实现的功能,对标准化考试系统的需求分析如下:
2.1数据库设计
此标准化考试系统采用的是数据库来存储试题的,而不是采用文件最主要的一个原因是数据库的读取速度比文件读取速度快。
该系统采用的是SQLServer2005数据库,SQLServer数据库是一个非常强大的数据库,在各方面应用比较广泛,是一些中小型项目开发首选数据库。
该标准化考试系统需要创建kaoshi数据库文件,在该数据库中需要创建student、teachter、shijuan和Test1四个表。
Student数据表是用来存储学生信息;
teachter数据表用来存储教师信息;
shijuan数据表用来存储试卷名字;
Test1用来存储试题。
2.2服务器端和客户端的数据传输方式
服务器端和客户端的数据时用套接字来传输的。
IP地址表示Internet上的计算机,端口号标识正在计算机运行的进程。
端口号与IP地址的组合得出一个网络套接字。
客户端使用Socket类建立到服务器的套接字连接,具体实现:
try{
Socketsock=newSocket(Stringhost,intport);
}catch(IOExceptione){}
当套接字连接sock建立后,sock使用getInputStream()方法获得一个输入流,然后把获得的输入流接到另一个数据流上,然后就可以从这个数据流读取服务器来的信息,同样sock使用getOutputStream()方法获得一个输出流,然后把获得的输出流接到另一个DataOutputStram()数据流上,然后向这个数据流写入信息,发送给服务器。
客户负责建立客户端到服务器的套接字连接,即客户端负责呼叫,因此服务器必须建立一个等待接收客户的套接字的ServerSocket对象,具体实现:
ServerSocketserver_socket=newServerSocket(intport);
当服务器的ServerSocket对象建立后,就可以使用accept()方法接收客户的套接字。
2.3服务器端功能设计
服务器端是接受客户端传来的信息,并作出相应的处理。
标准化考试系统服务器端最主要是实现试题的读取。
为了完成这个标准化考试系统还需要服务器有一些其他的功能,比如:
计算学生考试分数,用户登录验证,教师对系统管理的实现等。
2.3.1试题读取功能
本系统是采用数据库来存储试题的,所以要读取试题必须首先建立与Test1数据表的连接,然后利用ResultSet的对象rs的getString()方法得到试题的内容,然后把试题内容发给客户端。
2.3.2用户登录验证功能
当用户登录时,客户端会获取用户输入的用户名和密码,并且会把信息发送给服务器,服务器会根据客户端发来的信息对用户的身份进行验证。
kaoshi数据库有两个数据表是用来存储用户信息的,student数据表存储学生信息,teachter数据表存储教师信息,当用户以学生身份登录系统时,服务器会在student数据表中查询有没有这个用户,并根据查询的信息判断学生是否成功登陆,把信息发送给客户端,当用户以教师身份登录系统时,服务器会在student数据表中查询有没有这个用户,并根据查询的信息判断教师是否成功登陆,把信息发送给客户端。
2.4客户端功能设计
客户端是提供学生进行考试和教师对系统进行管理,由于该系统是C/S模式,所以客户端必须有连接服务器功能,连接服务器后有用户登录功能,用户正确登录后,学生用户进入考试界面,所以客户端必须有考试功能,教师用户正确登录后进入教室管理界面,客户端必须有试题管理功能,查询学生成绩功能,学生信息管理功能,教师信息管理功能。
2.4.1连接服务器功能
客户端与服务器端连接时通过套接字实现的,本系统采用的是把套接字放在一个线程中,就是使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用publicvoidconnect(SocketAddressendpoint)throwsIOException,请求和参数SocketServer指定的套接字建立连接。
为了使用connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,InetSocketAddress的构造方法如下:
publicInetSocketAddress(InetAddressaddr,intport)。
2.4.2用户登录功能
用户在进入系统前必须经过用户登录,用户登录功能是为了保护系统的安全,当用户写入用户名和密码,并且选择了登陆身份后,客户端会获取用户的信息发送给服务器端,让服务器度昂对用户的身份进行验证,并传来登录是否成功的信息,客户端根据服务器端传来的信息进行判断,如果登录成功,弹出对话框显示用户登录成功,学生进入考试界面,教师进入后台管理界面;
如果登录失败,弹出对话框显示用户名或密码错误或者显示你已经登录了。
2.4.3考试功能
学生正确登录后就进入考试界面,学生进入考试界面后,必须选择试卷,客户端会通知服务器端列出所有的试卷名称,在客户端的下拉列表中会显示所有试卷的名字,用户选择了试卷后,客户端会通知服务器端学生所选的试卷名称,学生点击开始考试按钮就可以开始考试了,同时计时器开始计时,当用户完成考试或者时间用完了考试结束,考试结束后用户可以点击查询成绩按钮,用户可以看到题目,答案以及自己所选的答案,还有你的成绩,查询成绩是用对话框实现,玩了后用户可以退出系统。
2.4.4后台管理功能
后台管理功能就是对试题进行管理,查询学生成绩,对学生信息进行管理,对教师信息进行管理,试题管理有对尸体进行增加,删除,查询,修改,当用户在客户端输入试题信息后,点击这些按钮,客户端就会发送信息给服务器,服务器来查询或者修改数据库,其他的也一样,总是通过服务器端对数据库进行数据库操作
3.总体设计
3.1总体功能图
根据分析,标准化考试系统必须实现以下功能:
1.连接服务器功能;
2.用户登录功能;
3.考试功能;
4.管理功能;
根据系统需求,标准化考试系统的总体功能图如图3-1所示:
图3-1总体功能图
3.2总体流程图
图3-2总体流程图
4.数据库设计
4.1数据库及表结构的建立
该标准化考试系统共创建了一个kaoshi数据库,该数据库中创建了student、teachter、shijuan和Test1四个表。
表3-1kaoshi数据库
逻辑名称
文件类型
文件组
初始大小
自动增长
路径
文件名
kaoshi
数据
PRIMARY
3MB
不限制
D:
\...
Kaoshi_log
日志
不适用
1MB
student数据表是用来保存学生信息,该数据表包含用户名,密码,性别,年龄,班级和分数六个字段,具体设计如表3-2所示:
表3-2student数据表
列名
数据类型
允许空
用户名
varchar(50)
否
密码
性别
否
年龄
班级
分数
int
是
teachter数据表是用来存储教师信息,该数据表包含教工ID,教工姓名,教工密码,教工性别和教工职称5个字段,具体设计如表3-3所示:
表3-3teachter数据表
教工ID
教工姓名
教工密码
教工性别
教工职称
Test1数据表是用来存储试题信息的,该数据表包含题目编号,内容,A选项,B选项,C选项,D选项,正确答案和分值8个字段,具体设计如表3-4所示:
表3-4Test1数据表
题目编号
内容
varchar(500)
A选项
varchar(100)
B选项
C选项
D选项
正确答案
分值
4.2JAVA数据库的连接
该系统是用JDBC连接数据库。
首先必须加载JDBC驱动,然后利用DriverManager.getConnection()连接服务器和数据库。
具体实现如下:
StringdriverName="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
//加载JDBC驱动
StringdbURL="
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=kaoshi"
//连接服务器和数据库kaoshi
StringuserName="
sa"
//默认用户名
StringuserPwd="
123"
//密码
try{
Class.forName(driverName);
dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("
ConnectionSuccessful!
"
);
//如果连接成功控制台输出ConnectionSuccessful!
}
catch(Exceptione){e.printStackTrace();
}
}
5.主要功能设计流程
5.1服务器端设计流程图
根据对服务器端功能的分析,得到服务器设计流程图如图3-3所示:
图3-3服务器端设计流程图
5.2客户端设计流程图
根据客户端功能分析,得到客户端设计流程图如图3-4所示:
图3-4客户端设计流程图
6.代码实现
6.1类之间关系图
在编写标准化考试系统时,编写了8个java源文件:
Main.Java,ChaChengji.Java,ClientTestArea.Java,DengluPanel.Java,Guanli.Java,Lianjie.Java,ChatServer.Java,ReadTestquestion.Java其中ChatServer.Java,ReadTestquestion.Java为服务器端java程序编译产生所需要的类;
Main.Java,ChaChengji.Java,ClientTestArea.Java,DengluPanel.Java,Guanli.Java,Lianjie.Java为客户端java程序编译产生所需要的类。
标准化考试系统除了需要编写的8个java源文件所编译产生的类外,还需要java系统提供的一些重要的类。
如ServerSocket,Socket,JTabbedPane等类。
标准化考试系统所用到的一些重要的类以及它们之间的关系如图3-5和图3-6所示。
图3-5服务器端类之间的关系图
图3-6客户端类之间的关系图
6.2运行效果图
连接服务器界面:
图3-7连接服务器界面
学生登录界面:
图3-8学生登录界面
考试主界面:
图3-9考试主界面
开始考试后界面:
图3-10开始考试后界面
成绩查询界面:
图3-11成绩查询界面
教师登录界面:
图3-12教师登录界面
试题管理界面:
图3-13试题管理界面
查看学生成绩界面:
图3-14查看学生成绩界面
学生信息管理界面:
图3-15学生信息管理界面
教师信息管理界面:
图3-16教师信息管理界面
服务器端效果图:
图3-17服务器端效果图
7.总结与说明
该标准化考试系统采用的是C/S模式,客户端和服务器端都是应用程序。
客户端与服务器端是用Socket和ServerSocket进行通信,服务器端根据客户端传来的信息来进行相应的操作,客户端根据服务器传来的信息把信息显示给用户。
该系统有学生考试功能和教师管理功能,两个功能都是在客户端,数据库存放在服务器端。
本系统有3个特点:
1 本系统采用的全都是null布局。
空布局容器可以准确地定位组件在容器中的位置和大小,setBounds(inta,intb,intwidth,intheight)方法是所有组件都拥有的一个方法,组件调用该方法可以设置本身的大小和在容器中的位置。
2 本系统用了大量的图片。
这些图片作为窗口的背景和按钮的背景,加入背景图片必须采用null布局,这些图片不是用drawImage()方法绘制的,而是用把背景图片加到JLabel,然后在容器中加入其它组件并设置这些组件的大小和位置,最后在该容器中加入JLabel组件,把JLabel组件的大小设置成窗口一样大,这样就实现了背景图片的加入。
因为本系统采用了大量的图片,所以界面不会很难看。
有人说用java做出来的界面很难看,我看不一定,java不是提供了图片功能吗,只要应用好java的这个特性就行。
所以不管那一种编程语言,只要它提供了图片功能,那么用它编写的界面就不会很难看。
3 本系统采用SQLServer存储数据,并且用JDBC连接数据库。
用JDBC连接SQLServer数据库首先必须加载JDBC驱动,然后利用DriverManager.getConnection()连接服务器和数据库。
附录标准化考试系统部分源代码
ClientTestArea.java
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.io.*;
import.*;
importjava.util.StringTokenizer;
publicclassClientTestAreaextendsJFrameimplementsActionListener,ItemListener,Runnable
{
Socketsock=null;
DataInputStreamin=null;
DataOutputStreamout=null;
Threadthread1=null;
JButtonshiti;
JComboBoxli;
JLabellabel1;
JTextFieldfenshu;
JButtonchakan;
JLabeltm;
JTextFieldtimeShow;
JCheckBoxbox[];
JPanelpanel1,panel2,panel3,panel4;
longtime1=0;
TimerT;
JButtonduqu,tijiao;
JScrollPanepanel5;
JTextAreatext;
JSplitPanesp1,sp2,sp3,sp4;
JLabelbeijing;
Toolkittool;
Imageimg,img1,img2,img3;
Dimensiondim;
boolean完成考试=false;
booleansuccess=false;
//booleanisSelected=true;
JButtonkaishi,chengji,tuichu;
ChaChengjicj;
Stringslb="
szx="
slz="
ClientTestArea()
{
super("
学生考试主界面"
setLayout(null);
tool=getToolkit();
img=tool.getImage("
images/zhu.png"
img1=tool.getImage("
images/kaishi1.png"
img2=tool.getImage("
images/chengji1.png"
img3=tool.getImage("
images/tuichu1.png"
dim=tool.getScreenSize();
//加入三个按钮
kaishi=newJButton(newImageIcon(img1));
chengji=newJButton(newImageIcon(img2));
tuichu=newJButton(newImageIcon(img3));
kaishi.addActionListener(this);
chengji.addActionListener(this);
tuichu.addActionListener(this);
kaishi.addMouseListener(newMouseAdapter()
{
publicvoidmouseEntered(MouseEvente)
{
kaishi.setIcon(newImageIcon(tool.getImage("
images/kaishi.png"
)));
}
publicvoidmouseExited(MouseEvente)
kaishi.setIcon(newImageIcon(img1));
});
chengji.addMouseListener(newMouseAdapter()
chengji.setIcon(newImageIcon(tool.getImage("
images/chengji.png"
{chengji.setIcon(newImageIcon(img2));
}});
tuichu.addMouseListener(newMouseAdapter()
{publicvoidmouseEntered(MouseEvente)
{tuichu.setIcon(newImageIcon(tool.getImage("
images/tuichu.png"
{tuichu.setIcon(newImageIcon(img3));
add(kaishi);
add(chengji);
add(tuichu);
kaishi.setBounds(151,70,80,30);
chengji.setBounds(285,40,80,30);
tuichu.setBounds(407,60,80,30);
//试卷选择区
shiti=newJButton("
加入试题到列表"
shiti.addActionListener(this);
li=newJComboBox();
li.addItemListener(this);
panel1=newJPanel();
panel1.setLayout(null);
panel1.add(shiti);
panel1.add(li);
shiti.setBounds(30,20,130,30);
li.setBounds(40,60,100,25);
panel1.setBorder(BorderFactory.createT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 标准化 考试 系统 Java 课程设计 范文
![提示](https://static.bdocx.com/images/bang_tan.gif)