package Server;
import DataObject.*;
import java.io.*;
import java.net.Socket;
import java.sql.SQLException;
//服务端先获得ObjectlnputStream对象,客户端就要先获得ObjectOutputStream对象;
//服务端先获得ObjectOutputStream对象,客户端就要先获得ObjectInputStream对象
public class ServerHandleThread implements Runnable{
Socket socket=null;
public ServerHandleThread(Socket socket) {
super();
this.socket = socket;
}
@Override
public void run() {
// TODO Auto-generated method stub
InputStream is=null;
OutputStream os = null;
ObjectInputStream ois = null;
ObjectOutputStream oos = null;
SerializableObject serializableObject_in=null;
SerializableObject[] serializableObjects_in=null;
SerializableObject serializableObject_out=null;
SerializableObject[] serializableObjects_out=null;
try {
is = socket.getInputStream();
ois=new ObjectInputStream(is);//反序列化流,将之前使用 ObjectOutputStream 序列化的原始数据恢复为对象,以流的方式读取对象
serializableObject_in=(SerializableObject) ois.readObject();//readObject()方法必须保证服务端和客户端的SerializableObject类包名一致,要不然会出现找不到类的错误
//System.out.println(serializableObject_in.getFunction());
//socket.shutdownInput();// 禁用套接字的输入流
//在客户端或者服务端通过socket.shutdownOutput()都是单向关闭的,即关闭客户端的输出流并不会关闭服务端的输出流,所以是一种单方向的关闭流;
//通过socket.shutdownOutput()关闭输出流,但socket仍然是连接状态,连接并未关闭
//如果直接关闭输入或者输出流,即:in.close()或者out.close(),会直接关闭socket
//以下功能是面向教师的
//实现登陆功能
if(serializableObject_in.getFunction().equals("登陆")){
socket.shutdownInput();
UserInfo userInfo_in=(UserInfo)serializableObject_in;
String telephonenum=userInfo_in.getTelephonenum();
String password=userInfo_in.getPassword();
Landing landing=new Landing();
UserInfo userInfo_out=landing.findUser(telephonenum,password);
//如果登陆成功,则返回一个function为“登陆成功”的对象,还包含一个用户的所有信息
if(userInfo_out!=null){
System.out.println("用户"+userInfo_out.getUsername()+"登陆!");
serializableObject_out=userInfo_out;
serializableObject_out.setFunction("登陆成功");
serializableObject_out.setTYPE("UserInfo");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
//登陆失败
else {
serializableObject_out=new SerializableObject();
serializableObject_out.setFunction("登陆失败,账号或密码错误");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
}
//实现注册功能
if(serializableObject_in.getFunction().equals("注册")){
socket.shutdownInput();
UserInfo userInfo_in=(UserInfo)serializableObject_in;
Enroll enroll=new Enroll();
String str=enroll.Enroll(userInfo_in.getUsername(),userInfo_in.getTelephonenum(),userInfo_in.getSchool(),userInfo_in.getPassword(),userInfo_in.getIdentity());
//如果注册成功,则返回一个function为“注册成功”的对象
if(str.equals("注册成功")){
System.out.println("用户"+userInfo_in.getUsername()+"注册!");
serializableObject_out=new SerializableObject();
serializableObject_out.setFunction("注册成功");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
//如果注册失败
else {
serializableObject_out=new SerializableObject();
serializableObject_out.setFunction("注册失败,账号或用户名重复");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
}
//修改密码
if(serializableObject_in.getFunction().equals("修改密码")){
socket.shutdownInput();
UserInfo userInfo=(UserInfo)serializableObject_in;
ChangePassword changePassword=new ChangePassword();
String str=changePassword.changePassword(userInfo.getTelephonenum(),userInfo.getPassword(),userInfo.getTYPE());
if(str.equals("修改成功")){
System.out.println("修改密码!");
}
serializableObject_out=new SerializableObject();
//System.out.println(str);
serializableObject_out.setFunction(str);
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
//在题库中添加题目
if(serializableObject_in.getFunction().equals("题库添加")){
socket.shutdownInput();
Question question=(Question) serializableObject_in;
DoQuestionBank doQuestionBank=new DoQuestionBank();
String str;
if(question.getType().equals("选择题")){
str=doQuestionBank.addSelection(question.getId(),question.getComplexity(),question.getType(),question.getContent(),question.getOptiona(),question.getOptionb(),question.getOptionc(),question.getOptiond(),question.getAnswer());
}
//其他两种题型
else{
str=doQuestionBank.addReadProgram(question.getId(),question.getComplexity(),question.getType(),question.getContent(),question.getAnswer());
}
if(str.equals("添加成功")){
System.out.println("题库添加!");
serializableObject_out=new SerializableObject();
serializableObject_out.setFunction("添加成功");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
else{
serializableObject_out=new SerializableObject();
serializableObject_out.setFunction("添加失败,题号或题目内容重复");
os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
oos.writeObject(serializableObject_out);
socket.shutdownOutput();
}
}
//在题库中根据题号查询
if(serializableObject_in.getFunction().equals("题库查询")){
socket.shutdownInput();
Question question=(Question) serializableObject_in;
DoQuestionBank doQuestionBank=new DoQuestionBank();
Question q=doQuestionBank.queryQuestionID(question.getId());
//如果查询成功,则返回一个function为“查询成功”的对象,还包含一个问题的所有信息
if(q!=null){
没有合适的资源?快使用搜索试试~ 我知道了~
2021山东大学软件学院JAVA高程课设-考试平台的设计
共139个文件
class:80个
java:48个
xml:6个
需积分: 18 1 下载量 71 浏览量
2022-10-24
20:50:06
上传
评论 1
收藏 620KB ZIP 举报
温馨提示
2021山东大学软件学院JAVA高程课设-考试平台的设计
资源详情
资源评论
资源推荐
收起资源包目录
2021山东大学软件学院JAVA高程课设-考试平台的设计 (139个子文件)
ServerHandleThread.class 16KB
DoTestPaper.class 12KB
SelectquesText.class 11KB
DoQuestionBank.class 9KB
StudentTest.class 8KB
CorrectTest.class 8KB
ViewTest.class 7KB
DoPaperName.class 7KB
AddTest.class 6KB
DoStudentPaper.class 6KB
StuBarChart.class 5KB
LogInterface$1.class 4KB
Enroll.class 4KB
ComSumTable.class 4KB
Enroll$1.class 4KB
TypeSumTable.class 4KB
ChoosePaper.class 4KB
LogInterface.class 4KB
TeacherPanel.class 4KB
ViewTeacherPaper.class 4KB
GradesType.class 4KB
AddTest$1.class 3KB
StudentPanel$3$1.class 3KB
TeacherPanel$6$1.class 3KB
PaperView.class 3KB
StudentPanel.class 3KB
ViewStudentPaper.class 3KB
TeacherPanel$1.class 3KB
StudentPanel$1.class 3KB
ViewTest01.class 3KB
ChooseText.class 3KB
TeacherPanel$6.class 3KB
StudentPanel$3.class 3KB
LookGrades.class 3KB
Enroll.class 2KB
NO2.class 2KB
DbConnect.class 2KB
Question.class 2KB
TestPaper.class 2KB
ChangePassword.class 2KB
StudentChooseTest.class 2KB
LookPaper.class 2KB
Landing.class 2KB
QuesComSum.class 2KB
QuesTypeSum.class 2KB
GiveTest.class 2KB
QuestionType.class 2KB
QuestionCom.class 2KB
DefendQuestion.class 2KB
LookGrades$1.class 2KB
Countdown1.class 2KB
InterInfor.class 1KB
UserInfo.class 1KB
DefendQuestion$1.class 1KB
MasterSever.class 1KB
PaperName.class 1KB
StudentPaper.class 1KB
GiveTest$1.class 1KB
ViewTest01$1.class 1KB
QuesTypeSum$1.class 1KB
QuestionType$1.class 1021B
QuestionCom$1.class 1014B
ChooseText$1.class 1009B
TeacherPanel$1$2.class 932B
StudentPanel$3$2.class 932B
TeacherPanel$6$2.class 932B
QuesComSum$1.class 932B
StudentPanel$1$2.class 932B
StudentPanel$2.class 926B
TeacherPanel$5.class 870B
TeacherPanel$4.class 869B
TeacherPanel$7.class 859B
StudentPanel$4.class 859B
StudentPanel$1$1.class 845B
TeacherPanel$1$1.class 845B
NO1.class 830B
SerializableObject.class 798B
TeacherPanel$2.class 793B
TeacherPanel$3.class 787B
Client.class 417B
.gitignore 50B
ExaminationSystem.iml 1KB
ServerHandleThread.java 36KB
SelectquesText.java 20KB
DoTestPaper.java 18KB
StudentTest.java 15KB
StudentPanel.java 14KB
DoQuestionBank.java 14KB
CorrectTest.java 11KB
TeacherPanel.java 11KB
AddTest.java 10KB
ViewTest.java 8KB
DoPaperName.java 8KB
Enroll.java 8KB
LogInterface.java 6KB
DoStudentPaper.java 6KB
StuBarChart.java 5KB
NO2.java 4KB
ChoosePaper.java 3KB
TypeSumTable.java 3KB
共 139 条
- 1
- 2
Lilith235
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- keil2 + proteus + 8051.exe
- 1961ee27df03bd4595d28e24b00dde4e_744c805f7e4fb4d40fa3f695bfbab035_8(1).c
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- windows注册表编辑工具
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
- 校园通行码预约管理系统20240522075502
- 车类型数据集6250张VOC+YOLO格式.zip
- The PyTorch implementation of STGCN.STGCN-main.zip
- 092300108.cpp
- 车类型数据集6000张VOC+YOLO格式.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0