首页 > 代码库 > 基于SSH框架的实验报告系统

基于SSH框架的实验报告系统

    其实也可以算成是作业系统,老师可以发布作业,实验内容,学生完成提交,老师批改给分。前端主要是之前在CSDN下载的一个资源的前端,原作者做得很漂亮就拿来用了(前端硬伤,还有几个页面是同学做的,在此谢过原作者和同学,改用了一些图片和文字)。其实写这篇博文的目的还是想用CSDN的CODE的功能,自己折腾了一个下午,了解CODE的帮助和git工具,原来版本控制这么好玩且方便。传说中的一个程序员向另外一个程序员的发出的挑战就是一个项目下的分支。


主页:



  为了将框架那些零零碎碎的东西和3个框架整合起来,就搭建好SSH后来开发,相对于纯JSP的开发,总体来说框架的话是前难后易(自己一步一步摸索,一次次趴倒在桌子上,最后还是搞定了),纯JSP的话是前易后难。方便的地方是Hibernate带来的数据库语句的精简(面向对象)。Struts页面的跳转控制,Spring的注入,如不用自己new SessionFactory。


注册页面:



项目还有很多不完善之处,如学院班级专业,如果算上这个,加上那么多老师,后面的跨系问题很复杂,就此打住,只针对一个专业做。密码做了加密处理。


老师登录:



邮件通知功能未完善,就是javamail的东西。

作业发布的编辑器用了百度的UEditor。



学生登录:


  其实里面的逻辑关系也不复杂,你布置我完成,我完成你改,你改我查成绩,一气呵成,主要是有了框架之后要考虑比较多的东西。

 

  分层(以下代码省略)为实体类Bean层,如Homework

package com.web.bean;

import java.sql.Timestamp;

/**
 * AbstractHomework entity provides the base persistence definition of the
 * Homework entity. @author MyEclipse Persistence Tools
 */

public class Homework implements java.io.Serializable {

	// Fields

	private Integer id;
	private String title;
	
	//科目
	private String subject;
	private String studentcontent;
	private String teachercontent;
	private Integer teacherid;
	private Integer studentid;
	private Integer homeworkid;
	
	//完成时间
	private Timestamp finishdate;
	//发布时间
	private Timestamp publishdate;
	//完成时间
	private Timestamp lastdate;
	//分数
	private Integer mark;
}

Action层,struts的跳转,如登录跳转LoginAction

public class LoginAction extends ActionSupport {
	
	private int loginid;
	private String password;
	private String role;
	private LoginService loginService;

	@Override
	public String execute() throws Exception {
		if(role.equals("1")){
			Student student = new Student();
			student.setLoginid(this.getLoginid());
			student.setPassword(this.getPassword());
			if(loginService.student_check(student) != null){
				
				//验证成功后 ,往session中存入student
				Map session = ActionContext.getContext().getSession();
				session.put("student", loginService.student_check(student));
				//System.out.println("true");
				return "student_login";
			}
		}
}


DAO抽象层,HomeworkDAO,其实抽象主要为了以后的拓展,如果我一般系统定型,可以直接一层实现层应该也是可以的。

public interface HomeworkDAO {

	void save(Homework homework);
	void update(Homework homework);
	void delete(Homework homework);
	
	//所有作业
	List<Homework> listall();
}

DAO实现层,HomeworkDAOImpl

public class HomeworkDAOImpl extends HibernateDaoSupport implements HomeworkDAO  {
	/* (non-Javadoc)
	 * @see com.web.DAO.impl.HomeworkDAO#save(com.web.bean.Homework)
	 */
	public void save(Homework homework){
		 this.getHibernateTemplate().save(homework);
	 }
}

Util,功能层,主要实现一些具体的功能,如MD5加密等等。


服务层和服务实现层。HomeworkServiceImpl

public class HomeworkServiceImpl implements HomeworkService {
	
	private HomeworkDAO homeworkDAO;

	public HomeworkDAO getHomeworkDAO() {
		return homeworkDAO;
	}
}

  总的层次有了之后,就是一个一个功能的实现,每实现一个功能就保存一份,然后命名给自己看明白,这也是所谓的版本控制。


 根据CODE说明,发现Github的git shell一样可以用,vim打开存在路径问题。

查看属性

git config --list 
仓库初始化

git init

添加文件,add可以是将文件更新到暂存区域,也可以是文件已在暂存区域可以提交,具体看文件状态。add添加想要上传的文件。

git add README.md

commit -m不懂 可以利用git  help commit跳转到浏览器的解释文本 -m <msg> 即添加消息提示。

remote add 远程仓库添加,即存放在CSDN CODE区。

push到远程仓库,分支为master

git commit -m "first commit"

git remote add origin git@code.csdn.net:iaiti/experimentreportsystem.git

git push -u origin master


终于,可以了。

https://code.csdn.net/iaiti/experimentreportsystem/tree/master

基于SSH框架的实验报告系统