package myServer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.io.Serializable;
import java.net.Socket;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.dom4j.DocumentException;
import entity.Question;
import entity.Student;
import entity.Subject;
import parseXML.ParseQuestionXML;
import parseXML.ParseStudentXML;
import parseXML.ParseSubjectXML;
import util.QuestionOperation;
import util.StudentOperation;
import util.SubjectOperation;
/*
* 对客户端的不同请求进行判断
*/
public class RegexServer implements Serializable{
private Socket socket= null;
BufferedReader br = null;
PrintWriter pw = null;
//创建对象输入流,用来接收从客户端传来的
ObjectInputStream ois = null;
public RegexServer(Socket socket){
this.socket = socket;
try {
br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
pw = new PrintWriter(this.socket.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//完成添加用户的功能 ---------------------------界面1
public void addUser(){
//创建解析用户XML对象
ParseStudentXML psxml = new ParseStudentXML();
//创建解析科目的对象
ParseSubjectXML psubxml = new ParseSubjectXML();
//声明List集合,用来存放用户集合
List<Student> list = null;
//声明科目集合
List<Subject> listsub = null;
try {
//获取用户集合
list = psxml.showStudent();
//获取科目集合
listsub = psubxml.selXML();
/*//测试数据
String str = br.readLine();
System.out.println(str);*/
//获取用户端的姓名
String ID = br.readLine();
System.out.println(ID);
//获取客户端传来的用户名
String username = br.readLine();
System.out.println(username);
//获取客户端传来的密码
String password = br.readLine();
System.out.println(password);
//获取重复密码
String passwordagain = br.readLine();
System.out.println(passwordagain);
if(!password.equals(passwordagain)){
pw.println("2");
pw.flush();
return;
}
String pass = "";
String unpass = "";
for(Subject sub:listsub){
unpass = unpass + sub.getName() +",";
}
//遍历
for (Student stu : list) {
if(stu.getUsername().equals(username)){
pw.println("1");
pw.flush();
return;
}
}
pw.println("0");
pw.flush();
System.out.println("添加成功!");
StudentOperation.addStudent(ID, username, password, pass, unpass);
System.out.println("11111111");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//完成添加题目的功能 --------------------------界面2
public void addQuestion(){
//声明增加的科目
String sub = null;
//创建List集合
Map<Question, Subject> map = null;
try {
//接收来自客户端的map集合
ois = new ObjectInputStream(socket.getInputStream());
map = (Map<Question, Subject>) ois.readObject();
Set<Question> set = map.keySet();
for (Question question : set) {
Subject subject = map.get(question);
sub = subject.getName();
String ID = subject.getID();
String answer = question.getAnswer();
String choicea = question.getChoicea();
String choiceb = question.getChoiceb();
String choicec = question.getChoicec();
String choiced = question.getChoiced();
String ques = question.getQuestion();
SubjectOperation.addSubject(ID, sub);
StudentOperation.addOrDelOfUnpass(sub);
QuestionOperation.addQuestion(sub, ques, choicea, choiceb, choicec, choiced, answer);
}
System.out.println("题目录入完成");
} catch (ClassNotFoundException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//完成对用户名的校验功能 -------------------界面3
public String regexUser(){
//记录用户的姓名
String name = null;
//接收来自客户端的信息
String username;
String password;
//创建Student集合
List<Student> list =null;
//创建解析XML对象
ParseStudentXML psxml = new ParseStudentXML();
//创建一个标记
boolean flag = false;
try {
//判断是学生或者是管理员
String num = br.readLine();
//从客户端接收用户名和密码
username = this.br.readLine();
password = this.br.readLine();
System.out.println(username + " " + password);
//解析获得用户信息
list = psxml.showStudent();
System.out.println("获得了解析的数据");
//进行匹配
for (Student stu:list) {
if(username.equals(stu.getUsername()) && password.equals(stu.getPassword())&&"0".equals(num)){
flag = true;
name = stu.getID();
}
}
//判断该用户是否已经登录
for(String name2:MyThread.listUsers){
if("bjsxt".equals(name2)&&"bjsxt".equals(username)){
System.out.println("管理员已经存在");
pw.print("0"+"\r");
pw.flush();
return null;
}
if(name2.equals(name)){
System.out.println("用户已经存在");
pw.print("0"+"\r");
pw.flush();
return null;
}
}
//对管理员信息进行判断
if("bjsxt".equals(username)&&"bjsxt".equals(password)&&"1".equals(num)){
pw.print("1"+"\r");
pw.flush();
return "bjsxt";
}
} catch (IOException e1) {
e1.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
if(flag){
pw.print("1"+"\r");
pw.flush();
}
else{
pw.print("0"+"\r");
pw.flush();
}
System.out.println(name + " " + flag);
return name;
}
//完成修改科目的功能 ---------------------------界面4
public void modifySubject(){
//声明客户端传来的科目信息
String subject = null;
//声明解析科目
ParseSubjectXML psubxml = new ParseSubjectXML();
//声明一个集合用于存放科目集合
List<Subject> list = null;
//声明对象输入流
//创建一个标记
boolean flag = false;
try {
System.out.println("123465");
ois = new ObjectInputStream(socket.getInputStream());
System.out.println("123465");
//接收传来的问题对象
Map<String, Question> map = (Map<String, Question>) ois.readObject();
System.out.println(map.size());
//获取客户端传来的科目信息
subject = br.readLine();
System.out.println(subject);
//创建对象输入流
//获取科目集合
list = psubxml.selXML();
for (Subject sub : list) {
if(sub.getName().equals(subject)){
System.out.println("科目存在");
flag = true;
}
}
//声明题目中的一些变量
String question = null;
String choicea = null;
String choiceb = null;
String choicec = null;
String choiced = null;
String answer = null;
String num = null;
Set<String> set = map.keySet();
for (String str : set) {
num = str + "";
Question ques = map.get(str);
question = ques.getQuestion();
choicea = ques.getChoicea();
choiceb = ques.getChoiceb();
choicec = ques.getChoicec();
choiced = ques.getChoiced();
answer = ques.getAnswer();
}
flag = QuestionOperation.modifyQuestion(subject, num, question, choicea, choiceb, choicec, choiced, answer);
if(flag){
pw.println("1");
pw.flush();
System.out.println("修改了题目");
}else{
pw.println("0");
pw.flush();
System.out.println("修改失败");
return;
}
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//完成修改用户的功能 ---------------------------------界面5
public void modifyUser(){
//创�
没有合适的资源?快使用搜索试试~ 我知道了~
百战尚学堂在线考试系统.zip
共120个文件
svn-base:45个
class:28个
java:27个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 177 浏览量
2024-03-07
17:10:34
上传
评论
收藏 2.12MB ZIP 举报
温馨提示
【百战尚学堂在线考试系统】是一个由作者亲自开发的毕业设计项目,旨在提供一个功能完善的在线考试平台。该项目的核心目标是实现一个便捷、高效、安全的考试管理系统,供教育机构或个人使用。代码注释详尽,方便后续维护和学习,同时配备完整的环境部署文档,确保用户能够顺利地在自己的环境中运行此系统。 该在线考试系统可能包含以下关键知识点: 1. **前端技术**:项目可能会使用HTML、CSS和JavaScript作为基础,构建用户界面。为了提高交互性和用户体验,可能采用了现代前端框架如React、Vue或Angular。框架的选择取决于项目复杂性和作者的偏好。此外,Bootstrap或自定义CSS样式可能用于实现响应式设计,确保系统在不同设备上都能良好展示。 2. **后端技术**:后端可能基于Java、Python、Node.js等服务器端语言开发,搭配Spring Boot、Django、Express等框架。这些框架提供了处理HTTP请求、数据持久化、身份验证等功能,对于构建Web服务至关重要。 3. **数据库管理**:数据库管理系统(如MySQL、PostgreSQL或MongoDB)用于存储用户信息、考试题目、成绩等数据。SQL查询和ORM(对象关系映射)工具如Hibernate或 SQLAlchemy 可能被用来操作数据库,实现数据的增删改查。 4. **身份验证与授权**:为了保护用户信息安全,系统可能实现了用户注册、登录功能,以及基于JWT(JSON Web Tokens)或OAuth2的认证机制。权限控制(如角色基
资源推荐
资源详情
资源评论
收起资源包目录
百战尚学堂在线考试系统.zip (120个子文件)
RegexServer.class 12KB
TeacherSwing.class 10KB
TestSwing.class 8KB
InputSubjectSwing.class 8KB
FunctionOfTeacher.class 8KB
ModifyTopicSwing.class 7KB
StudentSwing.class 7KB
LoadSwing.class 6KB
AddUserSwing.class 6KB
TeacherWinOpe.class 6KB
ModifyUserSwing.class 6KB
QuestionOperation.class 5KB
StudentOperation.class 4KB
SubjectOperation.class 4KB
Student.class 3KB
StudentWinOpe.class 3KB
ParseQuestionXML.class 3KB
ModifySubWinOpe.class 3KB
LoadWinOpe.class 3KB
MyThread.class 3KB
InputSubWinOpe.class 2KB
ModifyUserWinOpe.class 2KB
ParseStudentXML.class 2KB
AddUserWinOpe.class 2KB
Question.class 2KB
ParseSubjectXML.class 2KB
MyServer.class 1KB
Subject.class 1KB
.classpath 352B
wc.db 62KB
entries 3B
format 3B
dom4j-1.6.1.jar 307KB
RegexServer.java 14KB
TeacherSwing.java 13KB
InputSubjectSwing.java 10KB
TeacherWinOpe.java 9KB
FunctionOfTeacher.java 9KB
TestSwing.java 8KB
ModifyTopicSwing.java 7KB
StudentSwing.java 6KB
LoadSwing.java 6KB
AddUserSwing.java 6KB
ModifyUserSwing.java 6KB
QuestionOperation.java 5KB
SubjectOperation.java 4KB
StudentOperation.java 4KB
StudentWinOpe.java 3KB
MyServer.java 2KB
Student.java 2KB
ParseQuestionXML.java 2KB
LoadWinOpe.java 2KB
ModifySubWinOpe.java 2KB
InputSubWinOpe.java 1KB
ParseStudentXML.java 1KB
Question.java 1KB
AddUserWinOpe.java 1KB
ModifyUserWinOpe.java 1KB
ParseSubjectXML.java 934B
Subject.java 601B
teacherSwing.png 109KB
testSwing.png 100KB
inputSubject.png 98KB
studebtSwing.png 92KB
modifyUser.png 89KB
addUser.png 89KB
modifySubject.png 77KB
loadSwing.png 59KB
tubiao.png 32KB
org.eclipse.jdt.core.prefs 587B
org.eclipse.core.resources.prefs 55B
.project 667B
5d3ccc056b6f056dbf0dddfdf43894b9065a8f94.svn-base 307KB
670d2597e099c2ddf27e17ed4e958db98d9f55f3.svn-base 109KB
f78ad93ca54e1f515b05ab0975b6ba5fd3963c91.svn-base 100KB
56b9fe8d5382bf019ff0522f852815f31f1af11e.svn-base 98KB
9001c02c3983cf634c0d9627a342813c7f92d1c4.svn-base 92KB
84f79e2d12260e8cdf305dab2d33241120256469.svn-base 89KB
0118466fa015363293eccef46a629cab0d64fdc9.svn-base 89KB
f414937f11b43e8526ce6d8014b5b8c55dc965f5.svn-base 77KB
b046161930285f13097d4143c1ee20ca4ad2801d.svn-base 59KB
465c4ada0973f30febe837966ea45797059f76de.svn-base 32KB
34f53a79e8f72c4f86f376e19fa4a89eb4b630d2.svn-base 14KB
1ba84e06fc88e7c769a6efd3f52d398703b27b29.svn-base 13KB
ca4ee7317be8fa77d359633162d9dc7cf88ff25c.svn-base 10KB
2a1a926c7bf87698ec40d270d4bea9474485bd29.svn-base 9KB
a3c11eb94aab6c58fd6a0c1c9a61b457ea9d518b.svn-base 9KB
903e3b785f4a9d10656f8eb388c7e71c8ce57fe9.svn-base 8KB
06eaabdb5c4b25e1fecd26f250663580987aab16.svn-base 7KB
80405a1cbee638b064c23eea19f2f0c722f832bf.svn-base 6KB
fb4add884863701c7cab66d7311d33c697693547.svn-base 6KB
1ab65e60e63f1bfca93fac94f28af9b254b353fc.svn-base 6KB
5cda675e00bcdfbaeef3531df1a8b35b2cd30825.svn-base 6KB
ceb0478c6a3aa38a34d0cafac8606fa90fbb9490.svn-base 5KB
9420b4d448d0a95a30bc9a4eef05b098e0b5c7bf.svn-base 4KB
48ae4eeb4165e845852437ad701da28d7cec9ca1.svn-base 4KB
94830c6bab980eced1f12765331a42c14ad6dcc6.svn-base 3KB
f0cb06a9a61101eed7dd612a25410ba22244aab5.svn-base 2KB
f4076eaf4288435f64d6c6638826f2e5684fbbe5.svn-base 2KB
34ff32a3c674f881fa6d95e65bbdabca4a347687.svn-base 2KB
共 120 条
- 1
- 2
资源评论
AI拉呱
- 粉丝: 2862
- 资源: 5510
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java浏览器(使用VSCode)
- PHPThinkphp+Vue2.0前后端分离框架通用后台源码数据库 MySQL源码类型 WebForm
- 构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,基于MindSpore内置的并行技术和组件化设计
- 基于SpringCloud+Vue的财务数据管理系统(后端代码)
- 基于SpringBoot+Vue的在线课程管理系统(前端代码)
- 基于SpringBoot+Vue的在线课程管理系统(后端代码)
- MindInsight为MindSpore提供了简单易用的调优调试能力 用于模型优化的可视化仪表板
- 野火霸道开发板485原工程
- 国产化自主可控的人工智能开源平台 平台面向人工智能研究中的数据处理、算法开发、模型训练、算力管理和推理应用等各个流程的技术难点
- 基于Springboot+Vue的江西红色旅游景点宣传网站(后端代码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功