精华内容
下载资源
问答
  • java管理员登陆界面

    2013-04-11 21:04:04
    用于数据开发的前台界面设计,更便捷的开发环境
  • java框架SSM的用户,管理员,快递员的注册登录java框架SSM的用户,管理员,快递员的注册登录
  • 一,项目功能描述 通过对管理员在前台页面输入的用户名,密码和验证码...3.由于这是一个为学生信息管理系统所作的登录页面,学生信息将会存储在数据库中,所以我们将管理员的信息也存入数据库之中。 三,界面预览 ...

    前言

    这一篇是用来记录我编写学生信息管理系统时实现登录操作的过程,这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块分享出来。

    其它章节

    ------------------------>登录模块< ------------------------

    ------------------------>查询模块< ------------------------

    ------------------------> 增添模块< ------------------------

    ------------------------>修改模块< ------------------------

    ------------------------>删除模块< ------------------------

    GitHub–>学生信息管理系统

    一,项目功能描述

    通过对管理员在前台页面输入的用户名,密码和验证码进行校验,校验通过即可登录成功转到查询页面,校验失败则在页面上显示相应的错误。

    二,技术选型

    java+MySQL+jsp

    1.前台页面的登录逻辑使用Java编写。
    2.页面的展示使用jsp。
    3.由于这是一个为学生信息管理系统所做的登录页面,学生信息将会存储在数据库中,所以我们将管理员的信息也存入数据库之中。

    三,项目文件结构

    项目文件结构
    我们把项目分为如图所示的几个层次:
    1.web层:用来存放jsp页面和用来接收页面数据并进行逻辑处理 的servlet。
    2.service层:组合Dao层中的简单方法,形成复杂的功能。
    3.dao层:定义了对于数据库最基本的CRUD操作。
    4.util:存放一些自己定义的工具类。
    5.domain:用来存放实体类

    四, 准备工作

    1.创建一个JavaEE的模块取名为学生信息管理系统。

    2.点击如图所示蓝色区域进行编辑(按个人喜好来)设置tomact-1

    这是我配置的
    设置tomcat-2

    3.在WEB-INF目录下导入依赖JAR包

    在WEB-INF目录下导入依赖JAR包

    4.在数据库中创建表

    CREATE DATABASE chapter07; -- 创建数据库
    USE chapter07; 			   -- 使用数据库
    CREATE TABLE USER(   -- 创建表
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	NAME VARCHAR(20) NOT NULL,
    	gender VARCHAR(5),
    	age INT,
    	address VARCHAR(32),
    	class	VARCHAR(50),
    	tel VARCHAR(20),
    	username VARCHAR(20),
    	PASSWORD VARCHAR(20)
    );
    ALTER TABLE USER  CHANGE class cls VARCHAR(50)
    
    SELECT * FROM USER
    
    INSERT  INTO USER(`id`,`name`,`gender`,`age`,`address`,`class`,`tel`,`username`,`password`) VALUES(1,'管理员',NULL,NULL,NULL,NULL,NULL,'administrators','123'); 
    
    

    5.在domain包下创建users的JavaBean

    注意:在创建变量的时候需要与数据库中的变量名保持一致。

    package com.itevent.domain;
    
    
    public class Users {
    
        private int id;
        private String name;
        private String gender;
        private int age;
        private String address;
        private String cls;
        private String tel;
        private String username;
        private String password;
    
        public Users() {
        }
    
        public Users(int id, String name, String gender, int age, String address, String cls, String tel, String username, String password) {
            this.id = id;
            this.name = name;
            this.gender = gender;
            this.age = age;
            this.address = address;
            this.cls = cls;
            this.tel = tel;
            this.username = username;
            this.password = password;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public String getCls() {
            return cls;
        }
    
        public void setCls(String cls) {
            this.cls = cls;
        }
    
        public String getTel() {
            return tel;
        }
    
        public void setTel(String tel) {
            this.tel = tel;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "Users{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", gender='" + gender + '\'' +
                    ", age=" + age +
                    ", address='" + address + '\'' +
                    ", cls='" + cls + '\'' +
                    ", tel='" + tel + '\'' +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }
    
    

    6.创建一个properties配置文件

    在这里插入图片描述

    7.创建一个使用数据库的工具类

    在这里我使用的是Druid,如果各位用的是其他的数据库连接池可以自行更改。

    package com.itevent.util;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * JDBC工具类 使用Durid连接池
     */
    public class JDBCUtils {
    
        private static DataSource ds ;
    
        static {
    
            try {
                //1.加载配置文件
                Properties pro = new Properties();
                //使用ClassLoader加载配置文件,获取字节输入流
                InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                pro.load(is);
    
                //2.初始化连接池对象
                ds = DruidDataSourceFactory.createDataSource(pro);
    
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 获取连接池对象
         */
        public static DataSource getDataSource(){
            return ds;
        }
    
    
        /**
         * 获取连接Connection对象
         */
        public static Connection getConnection() throws SQLException {
            return  ds.getConnection();
        }
    }
    
    

    五,分析(我们只对登录逻辑进行分析)

    1.对验证码进行校验,首先我们需要获取到用户输入的用户名,密码和验证码等数据,将用户输入的验证码与后台生成的验证码进行比对,如果验证码错误,则在页面的提示框中显示错误的信息,如果验证码正确则继续进行用户名和密码的验证,有了验证码可以避免机器登录恶意访问,提高了安全性能,也减少了对数据库的操作。

    2.将获取到的用户名和密码封装为一个users对象,现在,我们拥有数据之后需要对数据库进行操作,所以在dao层中我们创建一个通过用户名和密码查询的方法,参数为username和password,在其中定义sql语句进行查询的操作,返回的对象用service来接受,在登录的servlet里边封装调用此方法。
    在这里插入图片描述

    六,代码实现

    1.首先,我们需要在页面上显示一个验证码,这个验证码不能是已经缓存好的图片,我们需要自己来写一个servlet来生成动态的验证码,当然我这里为了演示,并没有在验证码上画干扰线,各位可以根据自己的需求加。

    package com.itevent.web.servlet;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    /**
     * 验证码
     */
    @WebServlet("/checkCodeServlet")
    public class CheckCodeServlet extends HttpServlet {
    	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    
    		//服务器通知浏览器不要缓存
    		response.setHeader("pragma", "no-cache");
    		response.setHeader("cache-control", "no-cache");
    		response.setHeader("expires", "0");
    
    		//在内存中创建一个长80,宽30的图片,默认黑色背景
    		//参数一:长
    		//参数二:宽
    		//参数三:颜色
    		int width = 80;
    		int height = 30;
    		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    
    		//获取画笔
    		Graphics g = image.getGraphics();
    		//设置画笔颜色为灰色
    		g.setColor(Color.gray);
    		//填充图片
    		g.fillRect(0, 0, width, height);
    
    		//产生4个随机验证码,
    		String checkCode = getcheckCode();
    		//将验证码放入HttpSession中
    		request.getSession().setAttribute("checkCode",checkCode);
    
    		//设置画笔颜色为黄色
    		g.setColor(Color.yellow);
    
    		//设置字体的小大
    		g.setFont(new Font("黑体",Font.BOLD,24));
    
    		//向图片上写入验证码
    		g.drawString(checkCode,15,25);
    
    
    		//将内存中的图片输出到浏览器
    		//参数一:图片对象
    		//参数二:图片的格式,如PNG,JPG,GIF
    		//参数三:图片输出到哪里去
    		ImageIO.write(image,"PNG",response.getOutputStream());
    	}
    
    	/**
    	 * 产生4位随机字符串
    	 */
    	private String getcheckCode(){
    
    		String base = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    		Random r = new Random();
    		int size = base.length();
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < 4; i++) {
    			//产生0到size-1的随机值
    			int index = r.nextInt(size);
    			//在base字符串中获取下标为index的字符
    			char ch = base.charAt(index);
    			//将c放入到StringBuffer中去
    			sb.append(ch);
    		}
    
    			return sb.toString();
    
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doGet(request,response);
    	}
    }
    
    
    
    
    

    2.将checkCode展示在页面上

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html lang="zh-CN">
      <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title>管理员登录</title>
    
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
        <script type="text/javascript">
    
    		function refreshCode() {
    		    //绑定单击事件
    			var vocode = document.getElementById("vcode");
    			vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
    		}
    
        </script>
    
      </head>
      <body>
      	<div class="container" style="width: 400px;">
      		<h3 style="text-align: center;">管理员登录</h3>
            <form action="${pageContext.request.contextPath}/loginServlet" method="post">
    	      <div class="form-group">
    	        <label for="username">用户名:</label>
    	        <input type="text" name="username" class="form-control" id="username" placeholder="请输入用户名"/>
    	      </div>
    	      
    	      <div class="form-group">
    	        <label for="password">密码:</label>
    	        <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
    	      </div>
    	      
    	      <div class="form-inline">
    	        <label for="vcode">验证码:</label>
    	        <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
    	        <a href="javascript:refreshCode()">
    				<img src="${pageContext.request.contextPath}/checkCodeServlet" title="看不清点击刷新" id="vcode"/>
    			</a>
    	      </div>
    	      <hr/>
    
    	      <div class="form-group" style="text-align: center;">
    	        <input class="btn btn btn-primary"  type="submit" value="登录">
    	       </div>
    	  	</form>
    		
    		<!-- 出错显示的信息框 -->
    	  	<div class="alert alert-warning alert-dismissible" role="alert">
    		  <button type="button" class="close" data-dismiss="alert" >
    		  	<span>&times;</span></button>
    		   <strong>${login_msg}</strong>
    		</div>
      	</div>
      </body>
    </html>
    

    3.实现登录的逻辑操作

    package com.itevent.web.servlet;
    
    import com.itevent.domain.Users;
    import com.itevent.service.UserService;
    import com.itevent.service.impl.UserServiceImpl;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            //1.设置编码
            request.setCharacterEncoding("utf-8");
    
            //2.获取数据
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            String verifycode = request.getParameter("verifycode");
    
    
            //3.判断验证码是否正确
            HttpSession session = request.getSession();
            String checkCode = (String)session.getAttribute("checkCode");//获取用户输入的验证码
            session.removeAttribute("checkCode");//保证了验证码的唯一性
            //对验证码进行校验
            if (verifycode == null || ! checkCode.equalsIgnoreCase(verifycode)){
                request.setAttribute("login_msg","验证码错误!");
                //跳转登录页面
                request.getRequestDispatcher("/login.jsp").forward(request,response);
                return;
            }
    
    
            //4.封装user对象
            Users users = new Users();
            users.setUsername(username);
            users.setPassword(password);
    
            //5.调用service中的登录方法
            UserService service = new UserServiceImpl();
            Users adm = service.login(users);
    
    
            //6.判断输入的数据是否正确
            if (adm != null){
             
                //验证成功
    
                //跳转页面
                response.sendRedirect(request.getContextPath()+"/index.jsp");
            }else {
            //验证失败
                request.setAttribute("login_msg","用户名或密码错误!");
           //发送信息
                request.getRequestDispatcher("/login.jsp").forward(request,response);
            }
            
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    }
    
    

    4.service层(由于现在只实现了一个登录功能,暂时体现不出service层组合Dao层中的简单方法,形成复杂的功能的方便之处。)

    package com.itevent.service;
    
    import com.itevent.domain.Users;
    
    public interface UserService {
    
        /**
         * 通过用户名和密码查找管理员
         * @return
         * @param users
         */
        Users login(Users users);
    }
    
    
    package com.itevent.service.impl;
    
    import com.itevent.dao.UserDao;
    import com.itevent.dao.impl.UserDaoImpl;
    import com.itevent.domain.Users;
    import com.itevent.service.UserService;
    
    public class UserServiceImpl implements UserService {
    
        
        private UserDao dao = new UserDaoImpl();
        
        @Override
        public Users login(Users users) {
            //返回查询的结果
            return dao.findAdm(users.getUsername(),users.getPassword());
        }
    }
    
    

    5.对数据库通过用户名和密码来进行查询的操作

    package com.itevent.dao;
    
    import com.itevent.domain.Users;
    
    public interface UserDao {
        
        Users findAdm(String username, String password);
    }
    
    
    package com.itevent.dao.impl;
    
    
    import com.itevent.dao.UserDao;
    import com.itevent.domain.Users;
    import com.itevent.util.JDBCUtils;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    public class UserDaoImpl implements UserDao {
    
        private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    
        @Override
        public Users findAdm(String username,String password) {
    
            try {
                //要和数据库中的名字保持一致
                String sql = "select * from user where username = ? and password = ?";
                Users adm = template.queryForObject(sql, new BeanPropertyRowMapper<Users>(Users.class), username, password);
    
                return adm;
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
    
        }
    }
    
    

    6. 启动服务器,运行程序

    这是初始化页面
    在这里插入图片描述
    这是验证码输入有误的情况
    在这里插入图片描述
    用户名或密码输入错误
    在这里插入图片描述
    登陆成功后会跳转的下一个页面(这个页面只是一个测试页面)
    在这里插入图片描述

    八,我所遇到的问题

    1.在刚开始向数据库中存储管理员数据的时候只是将他的用户名和密码给保存了,其它的数据取了默认值,到最后我要检查我的用户名输入是否正确的时候,程序一直显示我的用户名或密码错误,起初我并不知道是什么原因,只是在代码上看过来看过去,我觉的我编写的逻辑并没有什么问题,所以在程序中打了几个点,debug了一下,发现问题出在UserDaoImpl中,执行完sql语句之后并没能封装成一个users对象,出现了数据转换异常,因为age的数据没有填写导致问题。如果你使用我上边创建的管理员数据也会出现同样的问题。
    2.在写登录页面的逻辑操作的时候,出现了很多小bug,因为找不到令人很头疼,而且对与web项目中的debug还不太熟悉,只能凭着感觉来打点,找bug所在,慢慢摸索怎么打点。debug也是我所需要学习的地方

    九,总结

    这是我的第一次将自己所做的项目用博客的形式写了出来,因为想记录一下自己写代码时的过程,把自己写代码的思路和步骤还有自己所碰到的问题展示出来,相当于做一个笔记吧。
    之前跟着视频敲代码,感觉挺良好,啥都会,等到自己一上手,全都懵。所以看会了不代表你会了。代码只有多敲一敲才能发现自己的问题,从而解决问题,最后掌握问题。

    这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块给各位分享出来,如果你发现我的代码有什么错误或者可以改进的地方评论出来,大家共同进步!

    展开全文
  • Java web实现登录时分为两种不同的状态,比如用户登录管理员登录,做成两个登录按钮,登录不同的账号进入不同的后台,怎么实现呢?
  • JAVA实现普通用户和管理员用户同页面登录

    千次阅读 多人点赞 2020-06-12 08:34:04
    摘要:之前写了一个Python Flask实现普通用户和管理员用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    摘要:之前写了一个Python Flask实现普通用户和管理员用户同页面登录;现在把用Java实现这个功能的代码和思想写一下。

    1.前端JSP页面效果及代码:

    1.1效果图

    在这里插入图片描述

    1.2前端表单代码

    <form action="IndexServlet?method=Login" method="post">
    			<table height="240px" width="240px">
    				<tr style="height: 20%">
    					<td>用户名:</td>
    					<td><input type="text" value="${username }"  name="username" id="username"></td>
    				</tr>
    				<tr style="height: 20%">
    					<td>密码:</td>
    					<td><input type="password" value="${password }"  name="password" id="password"></td>
    				</tr>
    				<tr align="center" style="height: 20%">
    					<td style="padding-left: 10px"><input type="submit" name="sub_name" value="辅导员登录"></td>
    					<td style="padding-right: 40px;padding-left: 20px"><input type="submit" name="sub_name" value="管理员登录" ></td>
    				</tr>
    				
    				<tr style="height: 20%">
    					<td colspan="3">
    					<font color="red">${error_msg }</font>
    					</td>
    				</tr>
    				
    			</table>
    		</form>
    

    2.后台java代码:

    2.1IndexServlet里的Login方法代码:

    public void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String sub_name = request.getParameter("sub_name");
    
    		if (sub_name.equals("辅导员登录")) {
    			CkInsService cis = new CkInsServiceImpl();
    			try {
    				Instructor ins = cis.insLogin(username, password);
    
    				request.getSession().setAttribute("ins", ins);
    				request.getRequestDispatcher("/counselorMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    		} else if (sub_name.equals("管理员登录")) {
    			CKRootService crs = new CKRootServiceImpl();
    
    			try {
    				Super_Manager root = crs.superLogin(username, password);
    				request.getSession().setAttribute("root", root);
    				request.getRequestDispatcher("/schoolMain.jsp").forward(request, response);
    			} catch (UserException e) {
    				e.printStackTrace();
    				request.setAttribute("username", username);
    				request.setAttribute("password", password);
    				request.setAttribute("error_msg", e.getMessage());
    				request.getRequestDispatcher("/schoolIndex.jsp").forward(request, response);
    			}
    
    		}
    	}
    
    

    总结:其实思想和代码跟前面的Flask实现是差不多的,增加一个单选框,传值到后台后进行判断是那种类型的用户进行登录。

    往期文章推荐:
    Flask实现普通用户和管理员用户同页面登录
    html设置背景图适应屏幕大小及透明度
    Java判断用户是否登陆
    MySQL的卸载(完全卸载,操作简单)

    注:转载请附上原文链接:https://blog.csdn.net/yue200403/article/details/106707816

    展开全文
  • 积分管理系统java源码 ...管理员管理:管理员是系统操作者,该功能主要完成系统管理员相关配置和角色授权。 角色管理:角色的基础功能以及角色分配权限。 菜单管理:配置系统菜单,操作权限,按钮权限标识
  • Java swing实现学生信息管理系统(管理员+学生) (ps:数据库中数据为个人编造,不涉及个人隐私问题,有需要源代码的请联系我) 一.代码包功能展示 二.数据库截图 三.程序实现效果图 登陆界面 管理员 ...

    Java swing实现学生信息管理系统(管理员+学生)
    (ps:数据库中数据为个人编造,不涉及个人隐私问题,有需要源代码的请联系我)

    (代码中加入一些美化,整体功能不变)
    (表结构设计放在数据库截图中)

    一.代码包功能展示

    在这里插入图片描述

    二.数据库截图

    注:数据库连接的时候要根据自己的数据库修改连接的localhost

    在这里插入图片描述

    logintable表(存放登陆用户名和密码)
    在这里插入图片描述
    在这里插入图片描述
    students表(存放学生信息)
    在这里插入图片描述

    在这里插入图片描述
    studentcourse表(存放学生选课信息)
    在这里插入图片描述
    在这里插入图片描述
    studentgrade表(存放学生成绩信息)
    在这里插入图片描述

    在这里插入图片描述

    三.程序实现效果图

    登陆界面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    管理员
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    学生端
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Java实现在线考试系统(管理员功能)

    万次阅读 多人点赞 2020-02-14 20:55:42
    在线考试系统管理员登录页面 学科管理页面(可以对科目进行增删改查) 章节管理(一个科目有多个章节) 学生信息管理页面 老师信息管理页面 老师科目管理页面 (老师所教的科目) 班级管理页面 ...

    在本考试系统中,管理员、老师、学生三个角色是相当于是三个系统。
    在线考试系统管理员登录页面
    这里写图片描述
    学科管理页面(可以对科目进行增删改查)
    这里写图片描述

    /**
    	 * 分页查询科目,展示给页面
    	 * @param curr
    	 * @param model
    	 * @return
    	 */
    	@RequestMapping("/list")
    	public String showSubject(Integer curr, Model model){
    		
    		if (curr == null){
    			curr = 1;
    		}
    		
    		PageInfo<Subject> pageInfo = subjectService.showList(curr, 5);
    		model.addAttribute("pageInfo", pageInfo);
    		
    		return "/subject/list";
    	}
    	
    	/**
    	 * 跳转到添加科目页面
    	 * @return
    	 */
    	@RequestMapping(value = "/add", method=RequestMethod.GET)
    	public String addSubjectView(){
    		
    		return "/subject/add";
    	}
    	
    	/**
    	 * 添加科目
    	 * @param subject
    	 * @return
    	 */
    	@RequestMapping(value = "/add", method=RequestMethod.POST)
    	public @ResponseBody AjaxResult addSubject(Subject subject){
    		
    		//判断学科名称是否为空
    		if (CommonUtils.isEmpty(subject.getName())){
    			return AjaxResult.errorInstance("学科名称不能为空");
    		}
    		//判断学科名称是否存在
    		if (subjectService.isExisted(subject)){
    			return AjaxResult.errorInstance("学科名称不能重复");
    		}
    		//添加科目
    		subjectService.insert(subject);
    		return AjaxResult.successInstance("添加成功");
    	}
    	
    	/*
    	 * 跳转到修改页面 
    	 */
    	@RequestMapping(value = "/update",  method=RequestMethod.GET)
    	public String updateSubjectView(int id, Model model){
    		
    		Subject subject = subjectService.selectOne(id);
    		model.addAttribute("subject", subject);
    		return "/subject/update";
    	}
    	
    	/**
    	 * 修改科目
    	 * @param subject
    	 * @return
    	 */
    	@RequestMapping(value = "/update",  method=RequestMethod.POST)
    	public @ResponseBody AjaxResult updateSubject(Subject subject){
    		
    		//判断学科名称是否为空
    		if (CommonUtils.isEmpty(subject.getName())){
    			return AjaxResult.errorInstance("学科名称不能为空");
    		}
    		//判断学科名称是否存在
    		if (subjectService.isExisted(subject)){
    			return AjaxResult.errorInstance("学科名称不能重复");
    		}
    		
    		subjectService.update(subject);
    		return AjaxResult.successInstance("修改成功");
    	}
    	
    	@RequestMapping(value = "/delete")
    	public @ResponseBody AjaxResult deleteSubject(int id){
    		
    		if (!chapterService.isEmpty(id)){
    			return AjaxResult.errorInstance("对不起,该课程中的篇章没有删除完,不能删除!");
    		}
    		subjectService.delete(id);
    		return AjaxResult.successInstance("删除成功");
    	}
    

    章节管理(一个科目有多个章节)
    这里写图片描述

    **学生信息管理页面 **
    这里写图片描述

    **老师信息管理页面 **
    这里写图片描述

    老师科目管理页面 (老师所教的科目)
    这里写图片描述

    **班级管理页面 **
    这里写图片描述

    班级学生管理 (每个班级都有学生)
    这里写图片描述

    班级科目管理 (每个班级都有所要学习的科目,和所对应的老师)
    这里写图片描述

    **考试管理页面 **
    这里写图片描述

    发布考试页面 (根据考试科目,试题模块类型,试题数量在系统中随机组卷,试题分值为每个小题的分值)
    这里写图片描述

    //发布考试时试题模块,试题数量,分值对应的JavaBean对象
    public class TextModel {
    	
    	private Integer textModelId;
    	private Integer textCount;
    	private Integer grade;
    	public Integer getTextModelId() {
    		return textModelId;
    	}
    	public void setTextModelId(Integer textModelId) {
    		this.textModelId = textModelId;
    	}
    	public Integer getTextCount() {
    		return textCount;
    	}
    	public void setTextCount(Integer textCount) {
    		this.textCount = textCount;
    	}
    	public Integer getGrade() {
    		return grade;
    	}
    	public void setGrade(Integer grade) {
    		this.grade = grade;
    	}	
    }
    //模块集合类
    public class BeanTextModel {
    
    	private List<TextModel> listTextModel = new ArrayList<TextModel>();
    
    	public List<TextModel> getListTextModel() {
    		return listTextModel;
    	}
    
    	public void setListTextModel(List<TextModel> listTextModel) {
    		this.listTextModel = listTextModel;
    	}
    	
    }
    
    /**
    	 * 初始化时间类型
    	 * @param binder
    	 */
    	@InitBinder
    	public void initBinder(WebDataBinder binder) {
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    	}
    	
    	/**
    	 * 显示考试信息列表
    	 * @param curr
    	 * @param model
    	 * @return
    	 */
    	@RequestMapping("/list")
    	public String showExam(Integer curr, Model model){
    		if (curr == null){
    			curr = 1;
    		}
    		//查询出发布的开始信息列表
    		PageInfo<Publishexam> publishexamList = publishExamService.selectAll(curr, 5);
    		model.addAttribute("publishexamList", publishexamList);
    		return "/exam/list";
    	}
    	
    	/**
    	 * 跳转到考试页面
    	 * @param model
    	 * @return
    	 */
    	@RequestMapping(value="/add", method=RequestMethod.GET)
    	public String addExamView(Model model){
    		
    		//查询试题和试题模块列表,在前端页面上显示
    		List<Subject> textList = subjectService.showList();
    		List<Textmodel> textModelList = textModelService.showList();
    		model.addAttribute("textList", textList);
    		model.addAttribute("textModelList", textModelList);
    		return "/exam/add";
    	}
    	
    	/**
    	 * 添加考试信息
    	 * @param request
    	 * @param publishExam
    	 * @param textModelIds
    	 * @param beanTextModel
    	 * @return
    	 */
    	@RequestMapping(value="/add", method=RequestMethod.POST)
    	@ResponseBody
    	public AjaxResult addExam(HttpServletRequest request,PublishexamWithBLOBs publishExam,int[] textModelIds, BeanTextModel beanTextModel){
    		
    		//添加考试信息,获取到是哪个管理员添加的考试信息
    		HttpSession session = request.getSession();
    		Admin admin = (Admin) session.getAttribute("adminInfo");
    		publishExam.setAdminId(admin.getId()); 
    		publishExam.setAdminName(admin.getName());
    		publishExam.setStatus(0);
    		publishExam.setPublishtime(new Date());
    		//查询出考试的科目
    		Subject subject = subjectService.selectOne(publishExam.getSubjectId());
    		publishExam.setSubjectName(subject.getName());
    		//因为试题模块数量,题目数量,题目分值是一直变化的
    		//存储在数据库中比较字段不好建立,因此我们将这块提取出一个TextModel类
    		//将多个模块添加到List集合中转成JSON格式存储到数据库中
    		List<TextModel> list = new ArrayList<TextModel>();
    		if (textModelIds != null){
    			for (int i : textModelIds) {
    				for(TextModel textModel : beanTextModel.getListTextModel()){
    					if (textModel.getTextModelId() != null && i == textModel.getTextModelId()){
    						list.add(textModel);
    					}
    				}
    			}
    			String json = JsonUtils.toJson(list);
    			publishExam.setExam(json);
    		}
    		publishExamService.insert(publishExam);
    		
    		return AjaxResult.successInstance("添加成功");
    	}
    	
    	/**
    	 * 跳转到发布考试页面
    	 * @param id
    	 * @param model
    	 * @return
    	 */
    	@SuppressWarnings("unchecked")
    	@RequestMapping(value="/update", method=RequestMethod.GET)
    	public String updateExamView(int id, Model model){
    		PublishexamWithBLOBs publishExam = publishExamService.selectByKey(id);
    		//将存储的JSON取出并解析成Java对象
    		ArrayList<TextModel> updateList = JsonUtils.toBean(publishExam.getExam(), ArrayList.class, TextModel.class);
    		//获取科目列表
    		List<Subject> textList = subjectService.showList();
    		//获取试题模块列表
    		List<Textmodel> textModelList = textModelService.showList();
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		String date = dateFormat.format(publishExam.getExamtime());
    		model.addAttribute("date", date);
    		model.addAttribute("textList", textList);
    		model.addAttribute("textModelList", textModelList);
    		model.addAttribute("updateList", updateList);
    		model.addAttribute("publishExam", publishExam);
    		return "/exam/update";
    	}
    	
    	/**
    	 * 修改所发布的考试
    	 * @param request
    	 * @param id
    	 * @param publishExam
    	 * @param textModelIds
    	 * @param beanTextModel
    	 * @return
    	 */
    	@RequestMapping(value="/update", method=RequestMethod.POST)
    	@ResponseBody
    	public AjaxResult updateExam(HttpServletRequest request,int id, PublishexamWithBLOBs publishExam,int[] textModelIds, BeanTextModel beanTextModel){
    		HttpSession session = request.getSession();
    		Admin admin = (Admin) session.getAttribute("adminInfo");
    		publishExam.setAdminId(admin.getId()); 
    		publishExam.setAdminName(admin.getName());
    		publishExam.setStatus(0);
    		publishExam.setPublishtime(new Date());
    		Subject subject = subjectService.selectOne(publishExam.getSubjectId());
    		publishExam.setSubjectName(subject.getName());
    		List<TextModel> list = new ArrayList<TextModel>();
    		if (textModelIds != null){
    			for (int i : textModelIds) {
    				for(TextModel textModel : beanTextModel.getListTextModel()){
    					if (textModel.getTextModelId() != null && i == textModel.getTextModelId()){
    						list.add(textModel);
    					}
    				}
    			}
    			String json = JsonUtils.toJson(list);
    			publishExam.setExam(json);
    		}
    		publishExamService.update(publishExam);
    		return AjaxResult.successInstance("修改成功");
    	}
    	
    	/**
    	 * 删除考试信息
    	 * @param id
    	 * @return
    	 */
    	@RequestMapping(value = "/delete")
    	public @ResponseBody AjaxResult deleteExam(int id){
    		publishExamService.delete(id);
    		return AjaxResult.successInstance("删除成功");
    	}
    

    **发布考试修改页面 **
    这里写图片描述

    ** 查询学生成绩 **
    这里写图片描述

    老师管理 (可以删除老师信息,重置老师密码)
    这里写图片描述
    ** 学生管理 (可以删除学生信息,重置学生密码) **
    这里写图片描述

    因为基本上都是增删改查方法,差不多,粘贴所有代码没有必要。(发布考试和修改考试信息是管理员中的难点,因此我粘出了代码

    TextModel是发布试题时为了存储JSON抽取的JavaBean类
    Textmodel是试题模块类
    (当时创建类的时候没有注意命名)

    展开全文
  • java web简单权限管理设计

    万次阅读 多人点赞 2015-03-19 23:23:05
    推荐最新技术springboot版权限管理java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大! 注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有...
  • java 判断当前系统用户是不是管理员

    千次阅读 2020-01-10 11:25:05
    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AdminUitl { private sta...
  • 本系统分三个部分,分别为学生端,教师端以及服务器端,三部分各师其职。其中学生端的功能及作用是学生个人信息的查询,成绩...服务器的功能作用是全面的管理,即对学生信息,教师信息,课表信息及相关的信息的管理
  • 管理员可以给教师管理系统添加一个新的教师用户:添加的内容包括教师工号、姓名、密码、性别、任教班级; 以下图片就是实现的界面: 添加内容之后的数据库验证: 以下是教师添加功能的源代码: ...
  • 该资源是基于java程序设计语言,实现的在线题库系统,包含用户身份【教师、学生、管理员】。教师--登录、出题、组卷功能、查看学生信息、学生成绩等功能;学生--注册登录、在线考试、自由练习、查看成绩等功能;管理...
  • java----图书管理系统 (用户和管理员)

    千次阅读 2021-01-26 22:44:22
    图书管理系统有两个角色对书进行操作, 分别是普通用户类和管理员类. b> 操作 操作可划分为: 增添图书, 删除图书, 更新图书, 查找图书, 借阅图书, 归还图书, 退出系统 2. 实现 a> Book 类 package java0126; /...
  • Java-学生宿舍管理系统

    万次阅读 多人点赞 2018-12-30 10:29:03
    这次记录的是最近完成的实训作业,学生宿舍管理系统,使用Java swing...宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,...
  • xml java系统源码 ##更新记录 更新日期 ...SpringBootAdmin主要定位于微应用的开发,已内置后台系统的基础功能,用户管理、角色管理、权限管理、会员管理、日志管理等;前台已经实现用户登录,注册等基
  • 本资源来源于互联网,版权为原作者所有。若侵犯到您的版权, 请提出指正, 我们将立即删除。
  • java图书管理系统.zip

    2021-03-28 17:49:42
    Java Mysql 图书管理系统 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统
  • 需求说明: 定义管理员类(Admin),管理员类中的属性包括:姓名、账号、密码、电话;方法包括:登录、显示自己的信息。 实现思路: 分析类的属性及其变量... 使用定义类的语法定义管理员类。 实现代码: ...
  • 基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员登录,个人信息修改等。 系统功能大致描述:基于javaweb实现学生成绩管理系统,实现了学生信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,004
精华内容 38,001
关键字:

java管理员登录

java 订阅