Java项目:SSH在线考试系统

108 篇文章 2 订阅

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本项目是在线模拟考试系统的设计与实现,系统采用浏览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、分数的统计以及成绩查询等功能。系统运行在Windows操作系统上,以Tomcat作为Web服务器,使用SSH+JSP技术和MySQL数据库实现。

项目主要包含管理员、教师与学生三种角色;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;

6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目

技术栈

1. 后端:spring+structs+hibernate

2. 前端:JSP+Javascript+css

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;

4. 运行项目,浏览器中输入http://localhost:8080/ctest 登录

运行截图

相关代码

AdminUserAction

public class AdminUserAction extends ActionSupport implements ModelDriven<AdminUser> ,SessionAware{
	private AdminUser admin = new AdminUser();
	private AdminUserService adminUserService;
	
	public void setAdminUserService(AdminUserService adminUserService) {
		this.adminUserService = adminUserService;
	}

	public AdminUser getModel() {
		return admin;
	}
	
	private String npw;
	public void setNpw(String npw) {
		this.npw = npw;
	}

	//管理员登录
	public String alogin(){
		return "alogin";
	}
	
	//验证管理员编号和密码是否正确
	public String login(){
		//接收从数据库中查询的信息
		AdminUser existAdmin = adminUserService.login(admin);
		//判断用户是否存在
		if(existAdmin == null){
			this.addActionError("管理员编号或密码错误");
			return "loginFailadmin";
		}else{
			//如果用户存在,将用户信息存到session中
			ServletActionContext.getRequest().getSession().setAttribute("existAdmin", existAdmin);
			return "loginSuccessadmin";	
		}		
	}
	//查看管理员信息
	public String ckxx(){
		return "ckxxadmin";
	}
	//修改密码
	public String upw(){
		return "upwadmin";
	}
	public String updatePW(){
		adminUserService.updatePW(admin.getUid(),npw);
		return "updateadminPW";
	}
	//安全退出清除session
	public String sessionDestory(){
		ServletActionContext.getRequest().getSession().invalidate();
		return "sessionDestoryadmin";
	}

	public void setSession(Map<String, Object> arg0) {
	}
}

问题Action

public class QuestionAction extends ActionSupport implements ModelDriven<Question>{
	
	private Question question = new Question();
	
	public Question getModel() {
		return question;
	}
	private QuestionService questionService;

	public void setQuestionService(QuestionService questionService) {
		this.questionService = questionService;
	}
	private Integer tid;
	
	public void setTid(Integer tid) {
		this.tid = tid;
	}
	private Integer qtid;
	public void setQtid(Integer qtid) {
		this.qtid = qtid;
	}
	private int page;
	public void setPage(int page) {
		this.page = page;
	}
	//选择查找试题的试题类型
	public String ckQuestionAndXZQT(){
		List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
		ActionContext.getContext().getValueStack().set("listqt", listqt);
		return "ckQuestionAndXZQT";
	}
	//选择查找试题的试题类型
	public String ckAdminQuestionAndXZQT(){
		List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
		ActionContext.getContext().getValueStack().set("listqt", listqt);
		return "ckAdminQuestionAndXZQT";
	}
	//查找试题
	public String ckQuestion() throws UnsupportedEncodingException{
		if(question.getQid()!=null){
			question = questionService.selectQuestion(question.getQid());
		}
		PageBean<Question> pageBean = questionService.ckQuestion(question,tid,qtid,page);
		ActionContext.getContext().getValueStack().set("pageBean", pageBean);
		List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
		ActionContext.getContext().getValueStack().set("listqt", listqt);
		ActionContext.getContext().getValueStack().set("pageqtid", qtid);
		return "ckQuestion";
	}
	//管理员查找试题
	public String ckAdminQuestion() throws UnsupportedEncodingException{
		if(question.getQid()!=null){
			//根据试题编号,获取试题详细信息
			question = questionService.selectQuestion(question.getQid());
		}
		//获取符合条件的试题
		PageBean<Question> pageBean = questionService.ckAdminQuestion(question,qtid,page);
		//将符合符合条件的数据存放到值栈中,出入到显示界面
		ActionContext.getContext().getValueStack().set("pageBean", pageBean);
		List<QuestionType> listqt = questionService.ckQuestionAndXZQT();
		ActionContext.getContext().getValueStack().set("listqt", listqt);
		ActionContext.getContext().getValueStack().set("pageqtid", qtid);
		return "ckAdminQuestion";
	}
	//查看相似选择试题
	public String ckXSXZQuestion(){
		List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
		ActionContext.getContext().getValueStack().set("question", question);
		ActionContext.getContext().getValueStack().set("listxs", listxs);
		return "ckXSXZQuestion";
	}
	public String ckXSXZAdminQuestion(){
		List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
		ActionContext.getContext().getValueStack().set("question", question);
		ActionContext.getContext().getValueStack().set("listxs", listxs);
		return"ckXSXZAdminQuestion";
	}
	//添加选择题
	public String addQuestionXZ(){
		return "addQuestionXZ";
	}
	public String addAdminQuestionXZ(){
		return "addAdminQuestionXZ";
	}
	//添加选择实现
	public String addQuestionXZSX(){
		Date date = new Date();
		question.setQdate(date);
		questionService.addQuestionXZSX(question,qtid,tid);
		return "addQuestionXZSX";
	}
	public String addAdminQuestionXZSX(){
		Date date = new Date();
		question.setQdate(date);
		questionService.addAdminQuestionXZSX(question,qtid);
		return "addQuestionXZSX";
	}
	//查看相似填空题
	public String ckXSTKQuestion(){
		List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
		ActionContext.getContext().getValueStack().set("question", question);
		ActionContext.getContext().getValueStack().set("listxs", listxs);
		return"ckXSTKQuestion";
	}
	public String ckXSTKAdminQuestion(){
		List<Question> listxs = questionService.findByOword(question.getOword(), question.getQscope(), question.getQdifficulty(), qtid);
		ActionContext.getContext().getValueStack().set("question", question);
		ActionContext.getContext().getValueStack().set("listxs", listxs);
		return "ckXSTKAdminQuestion";
	}
	//添加填空题
	public String addQuestionTK(){
		return "addQuestionTK";
	}
	public String addAdminQuestionTK(){
		return "addAdminQuestionTK";
	}
	//添加填空实现
	public String addQuestionTKSX(){
		Date date = new Date();
		question.setQdate(date);
		questionService.addQuestionXZSX(question,qtid,tid);
		return "addQuestionTKSX";
	}

答案Action

public class AnswerStateAction extends ActionSupport implements ModelDriven<AnswerState>{
	private AnswerState answerState = new AnswerState();
	public AnswerState getModel() {
		return answerState;
	}
	private AnswerStateService asService;
	public void setAsService(AnswerStateService asService) {
		this.asService = asService;
	}
	private Integer qid;
	
	public void setQid(Integer qid) {
		this.qid = qid;
	}
	private Integer tnid;

	public void setTnid(Integer tnid) {
		this.tnid = tnid;
	}
	private String qanswer;

	public void setQanswer(String qanswer) {
		this.qanswer = qanswer;
	}
	//根据试题编号,记录编号 进行将试题答案保存
	public String saveAnswerState() throws IOException{
		String qas = java.net.URLDecoder.decode(qanswer, "UTF-8");
		asService.saveAnswerState(tnid,qid,qas);
		return NONE;
	}

}

如果也想学习本系统,下面领取。回复:107ssh

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值