javaweb学生管理系统的课程设计

项目地址:
链接: https://pan.baidu.com/s/1Ul97vJQ6dVRqCAw6i5jHhg
提取码: mpwt

1.设计任务书
1.1 简单的学生管理体统
本人计划编写一个简单的学生管理系统,主要从两个身份来说——老师和学生,对于老师来说,带验证码的登录注册,对学生进行增删改查,以分页的形式展示学生的所有信息;对于学生来说,带验证码的登录注册,以及查询自己的信息,修改自己的信息,以及查询其他学生的信息除密码以外。具体要求如下:
1、实现数据库连接,数据库有两个表,一个教师表,一个学生表教师表只有简单的username和password两个属性,学生表有sid name password gender birthday address等属性;
2、学生信息的增删改查;
3、写出老师及学生的登录注册的代码;
4、用代码生成一张验证码;
5、对学生信息进行分页
6、在网页上具体操作,并显示结果
1.2 本系统涉及的知识点
函数、数据库、jsp、servlet、面向对象、动画
2.功能设计(左对齐,宋体粗四号)
2.1 算法设计
本系统需要实现的功能要求:
教师登陆成功后会有以下选择如图1所示:
(1) 选择要操作:
这里写图片描述
(2) 选择5后,进入到如图2所示的菜单,输入要查询学生的学号,SelectServlet拿到相应的数据后,通过创建对象调用Student类的select方法进行查询,然后SelectServlet把查到的数据传给selectstudent.jsp在网页上显示出来如图3所示的主菜单
这里写图片描述
这里写图片描述
(3) 根据所选菜单编写相应代码:
求查询函数:
这里写图片描述

2.2 部分模块流程图
这里写图片描述
3.程序代码设计
(1) 数据库连接(需要引入jar包)

public class DBO {
		static String url="jdbc:mysql://localhost:3306/dl";
	tatic String user="root";
	static String password="123";
	static{
try {
	Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
				e.printStackTrace();
}
	}
	public static Connection getConnection() {
Connection conn=null;
try {
	conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
				e.printStackTrace();
}
	return conn;
	}
}

(2) 老师和学生类
a.老师类

public class Teacher {
			private int id;
			private String username;
			private String password;
			public int getId() {
				return id;
			}
			public void setId(int id) {
				this.id = id;
			}
			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;
			}
	}

b.学生类
id sid name password gender birthday address属性以及相应的get set方法(与上面相同)
(3) 学生登录注册以及老师要操作的增删改查
3.1.学生相关操作的接口

public interface StudentManager {
		//登录时
public Student CheckLogin(String name,String sid,String password);
		//添加学生信息
		public boolean addStudent(Student student);
		//更新学生信息
public boolean updateStudent(String sid,Student student);
		//删除学生信息
		public boolean deleteStudent(String sid);
		//查询所有的学生信息
		public List<Student> getAllStudent(String sid);
	}

3.2.学生相关操作的接口的实现类
	public  class StudentManagerImpl implements StudentManager {
		public Student CheckLogin(String name, String sid,String password) {
	Student s=null;
		Connection conn=null;
		Statement st=null;
		ResultSet rs=null;
		String sql="select * from student";
		conn=DBO.getConnection();
		try {
			st=conn.createStatement();
			rs=st.executeQuery(sql);
			while(rs.next()) {
				String nm=rs.getString("name");
				String id=rs.getString("sid");
				String psd=rs.getString("password");
	if(nm.equals(name) && id.equals(sid) && psd.equals(password)) {
					s= new Student();
					s.setName(nm);
					s.setSid(id);
					s.setPassword(psd);
					s.setGender(rs.getString("gender"));
					s.setAddress(rs.getString("address"));
					s.setId(rs.getInt("id"));
					s.setBirthday(rs.getString("birthday"));
				}
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return s;
	}
	public boolean addStudent(Student student) {
		// TODO Auto-generated method stub
		boolean flag=false;
		String sql="insert into student(sid,name,password,gender,birthday,address) values(?,?,?,?,?,?)";
		Connection conn=null;
		PreparedStatement pst=null;
		conn=DBO.getConnection();
		try {
			pst=conn.prepareStatement(sql);
			pst.setString(1,student.getSid());
			pst.setString(2,student.getName());
			pst.setString(3, student.getPassword());
			pst.setString(4,student.getGender());
			pst.setString(5,student.getBirthday());
			pst.setString(6,student.getAddress());	
			pst.executeUpdate();
			flag=true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}
	public boolean updateStudent(String sid, Student student) {
		// TODO Auto-generated method stub
		boolean flag=false;
		String sql="update student set name=?,password=?,gender=?,birthday=?,address=? where sid='"+sid+"'";
		Connection conn=null;
		PreparedStatement pst=null;
		conn=DBO.getConnection();
		try {
			pst=conn.prepareStatement(sql);
			pst.setString(1,student.getName());
			pst.setString(2,student.getPassword());
			pst.setString(3,student.getGender());
			pst.setString(4,student.getBirthday());
			pst.setString(5,student.getAddress());	
			pst.executeUpdate();
			flag=true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}
	public boolean deleteStudent(String sid) {
		// TODO Auto-generated method stub
		boolean flag=false;
		String sql="delete from student where sid='"+sid+"'";
		System.out.println(sql);
		Connection conn=null;
		PreparedStatement pst=null;
		conn=DBO.getConnection();
		try {
			pst=conn.prepareStatement(sql);
			int row=pst.executeUpdate();
			if(row>0)
				flag=true;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}
	public List<Student> getAllStudent(String sid) {
		// TODO Auto-generated method stub
		List<Student> list=new ArrayList<Student>();
		String sql="select * from student where sid='"+sid+"'";
		Connection conn=null;
		Statement st=null;
		ResultSet rs=null;
		conn=DBO.getConnection();
		try {
			st=conn.createStatement();
			rs=st.executeQuery(sql);
			while(rs.next()) {
				Student s=new Student();
				s.setSid(sid);
				s.setName(rs.getString("name"));
				s.setPassword(rs.getString("password"));
				s.setGender(rs.getString("gender"));
				s.setBirthday(rs.getString("birthday"));
				s.setAddress(rs.getString("address"));
				list.add(s);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
}

3.3登陆的servlet

public class CheckLogin extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		String name=request.getParameter("username");
		String sid=request.getParameter("sid");
		String password=request.getParameter("password");
		String checkcode=request.getParameter("checkcode");
		String piccode=(String) request.getSession().getAttribute("piccode");
		StudentManager smg = new StudentManagerImpl();
		Student s=new Student();
		s=smg.CheckLogin(name, sid,password);
		HttpSession session=request.getSession();
		session.setAttribute("s", s);
		if(s!=null && checkcode.equalsIgnoreCase(piccode)) {
			response.sendRedirect("person.jsp");
		}else{
			response.sendRedirect("error.jsp");
		}	
	}
}

3.4注册和登录的servlet道理相似
(4) 老师的登录注册与学生的相似(就已不在写了)
(5) 验证吗

public class PicCodeGenerator extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		BufferedImage bi=new BufferedImage(68,22,BufferedImage.TYPE_INT_BGR);
		Graphics g=bi.getGraphics();
		Color color=new Color(224,205,19);
		g.setColor(color);
		g.fillRect(0, 0, 68,22);
		char [] c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
		Random random= new Random();
		int len=c.length;
		int temp;
		StringBuffer sb=new StringBuffer(4);
		for(int i = 0 ; i<4 ; i++){
			char index = c[(int)(0+Math.random()*c.length)];
			Font font = new Font("幼圆",Font.BOLD,25);
			Color clo = new Color(random.nextInt(255));
			g.setFont(font);
			g.setColor(clo);
			g.drawString(index+"",i*15,18);
			g.setColor(new Color(random.nextInt(150),random.nextInt(220),random.nextInt(180)));
			sb.append(index);	
	  }
		for(int i=0;i<5;i++) {
			g.drawLine(random.nextInt(68),random.nextInt(22),random.nextInt(68), random.nextInt(22));
		}
		request.getSession().setAttribute("piccode", sb.toString());
		ImageIO.write(bi, "JPG", response.getOutputStream());
	}
}

(6) 分页
6.1servlet

public class StudentServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doPost(request, response);
}
	public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
StudentService studentService = new StudentService();
String uri = request.getRequestURI()+"?"+request.getQueryString();
int index=uri.indexOf("StudentServlet");
if(index==-1) 
uri="http://localhost:8080/student/StudentServlet?null";
index = uri.lastIndexOf("&pc=");
	if(index != -1 )
uri = uri.substring(0,index);		//获取当前页页码
		int pc = 1;
		String param = request.getParameter("pc");
		if(param != null && !param.trim().isEmpty()){
			//将string类型强制转化为Int类型
			pc = Integer.parseInt(param);
		}
		PageBean<Student> pageBean = studentService.findByPageBean(pc);
		//pageBean.setPc(pc);
		pageBean.setUrl(uri);
		//将数据放到Request域
		request.setAttribute("pb", pageBean);
		//转发
		request.getRequestDispatcher("Partner.jsp").forward(request, response);
	}
}

4.界面及运行效果、测试工具与测试效果
4.1身份选择(碰到教师和学生,这两个词会转动,老师这个小人会左右移动)
这里写图片描述
4.11选择教师后,进入老师登录界面,下面有超链接返回和注册
这里写图片描述
这里写图片描述
(1)填入正确的username和password以及验证码吗后进入
这里写图片描述
(2)对学生进行增删改查操作
这里写图片描述
(3)用分页查询所有学生(上下一页可以跳转)
这里写图片描述
4.12选择学生后,进入学生登录界面,下面有超链接返回和注册
这里写图片描述
(1) 学生登陆成功的界面
这里写图片描述
(1) 学生登陆成功的界面
这里写图片描述
5.设计总结
1.本人在程序设计中遇到了非常多的困难,通过找他人请教,百度,以及翻阅书籍,一点一点解决错误,收获颇多,学到了非常多的知识,以及更加巩固我以前的知识
2.调试程序:先判断是哪一步程序出错,缩小范围在具体修改
比如:登陆失败时

这里写图片描述

6.致谢
通过这次的实践,我不仅对学到的东西加以综合,巩固,以及学到许多新的知识,收获颇多,这也是我第一次做的小项目,虽然比较简单,但感到非常充实,也更加的熟悉如何调试程序,等等。
参考文献
《Java基础教程》
http://www.imooc.com/
http;www.baidu.com/
《传智播客_2015年java基础视频-深入浅出版》
等等

  • 55
    点赞
  • 320
    收藏
    觉得还不错? 一键收藏
  • 164
    评论
系统的主要功能需求是对学生选课信息进行管理,对于要进行选课的学生进行选课操作,同时记录学生所选课的信息。如果对所选的课程不满意可以进行退课操作。学生如果想要对自己信息进行查看,可以登录后进行查看,如遇到修改信息,学生信息管理和系统管理可以对学生的信息进行修改,以便管理人员和用户可以随时查到最新的信息,同时,可以随时对需要的信息进行维护和更新。 经过对学校选课情况的分析,选课管理系统应该具有下列功能需求: 1、记录学生基本信息,提供查看、修改、删除学生基本信息的功能。学生基本信息包括学号、姓名等。 2、维护课程信息,提供查看、修改、删除课程基本信息的功能。课程信息包括id,课程名,学时,课程简要说明,上课教师等。 3、维护教师信息,提供修改,删除教师基本信息的功能。教师的基本信息ID,教师名,email,职称,年龄等。 4、制定选修课课表,根据学生的课程,时间的安排进行课表的制定。 5、维护学生选选修的课程信息。能够在选课的时间范围内可以进行退课操作,选课时间结束,系统不再能够访问。 6、录入课程分数,提供查看、修改,删除课程分数的功能。 2.1.2 用户及相关操作 系统有三种用户,分别为系统管理员、教师、学生,他们能够执行的操作不同,每种用户能执行的操作如下。
1. 系统介绍 学生信息管理系统是一个基于JAVAweb技术的系统,用于管理学生的基本信息,包括个人信息、课程信息、成绩信息等。该系统可以实现学生信息的录入、查询、修改和删除,教师可以对学生的成绩进行管理和统计,管理员可以对系统进行维护和管理。 2. 系统功能模块 (1)学生信息管理模块:该模块主要用于学生信息的录入、查询、修改和删除,包括学生的基本信息、课程信息、成绩信息等。 (2)教师成绩管理模块:该模块主要用于教师对学生成绩的管理和统计,包括成绩录入、查询、修改和删除等。 (3)管理员维护管理模块:该模块主要用于管理员对系统进行维护和管理,包括用户管理、权限管理、系统设置等。 3. 技术实现 (1)前端技术:HTML、CSS、JavaScript、jQuery等。 (2)后端技术:Java、Servlet、JSP、JDBC、MySQL等。 (3)开发工具:Eclipse、MySQL Workbench、Tomcat等。 4. 数据库设计 (1)学生表:包括学生ID、姓名、性别、年龄、班级等字段。 (2)课程表:包括课程ID、课程名称、任课教师等字段。 (3)成绩表:包括学生ID、课程ID、成绩等字段。 (4)用户表:包括用户名、密码、用户类型等字段。 5. 系统界面设计 系统采用响应式设计,可以适应不同尺寸的屏幕。主要界面包括登录界面、学生信息管理界面、教师成绩管理界面、管理员维护管理界面等。 6. 系统实现步骤 (1)数据库设计和建表。 (2)编写JavaBean类和DAO类,用于操作数据库。 (3)编写Servlet和JSP页面,实现系统的各个功能模块。 (4)实现用户登录和权限管理。 (5)进行系统测试和优化。 7. 系统预期效果 (1)学生可以方便地查询和管理自己的个人信息、课程信息和成绩信息。 (2)教师可以方便地录入、查询和管理学生的成绩信息。 (3)管理员可以方便地对系统进行维护和管理,包括用户管理、权限管理、系统设置等。 (4)系统可以提高学校信息化管理水平,提高工作效率,降低管理成本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值