基于JavaWeb的学生信息管理系统

项目背景

学生信息管理是学校的重要工作之一。传统的学生信息管理由于是手工操作,工作量大且容易出错。随着计算机和网络技术的迅速发展,越来越多的院校都拥有了自己的学生信息管理系统,而采用B/S架构的学生信息管理系统进行学生信息的管理则是其趋势。
Java web技术的基础就是核心Java平台,它有许多优点,例如:“编写一次、随处运行”的特性、方便存取数据库的JDBC API技术以及能够在Internet应用中保护数据的安全模式等等。J2EE体系结构提供中间层集成框架用来满足高可用性、高可靠性以及可扩展性的应用需求,为搭建具有可伸缩性、灵活性、易维护性的网络应用系统提供了良好的机制。
本文基于Java web平台技术、采用Browser/Server结构,设计并实现了该系统的简化版学生信息管理系统。
论文首先介绍了系统开发涉及的相关技术及开发平台,主要围绕学生信息管理系统实现的相关技术和系统的体系结构,介绍了学生信息管理系统的总体分析与设计,包括需求分析、功能模块分析和数据库设计。最后,利用Jsp+Servlet+JavaBean模式对简单学生信息管理子系统进行了实现,并作了详细描述,主要采用图片与代码结合的方式详细地叙述了系统功能的实现。
关键词: 学生信息管理系统,Java web,Servlet,JSP

功能设计

功能模块图

系统结构图
在这里插入图片描述
用户登录流程图
在这里插入图片描述
程序流程图
在这里插入图片描述

功能截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关代码

1public class LoginServlet extends HttpServlet {
2	private static final long serialVersionUID = 1L;
3	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
4		request.setCharacterEncoding("utf-8");
5		String username = request.getParameter("username");
6		String password = request.getParameter("password");
7		String level = null;
8		//实例化UserDao对象
9		UserDao userDao = new UserDao();
10		User user = userDao.login(username, password);
11		//判断是否登录成功
12		if(user != null){//成功
13			level = user.getLevel();
14			if(level.equals("用户")){
15				request.getSession().setAttribute("user", user);//将用户对象放到session中
16				//转发到user.jsp中
17				request.getRequestDispatcher("user.jsp").forward(request, response);
18			}
19			else{
20			request.getSession().setAttribute("admin", user);//将管理员对象放到session中
21				//转发到admin.jsp中
22				request.getRequestDispatcher("admin.jsp").forward(request, response);
23			}	
24		}else {//失败
25			request.setAttribute("info"," 错误:用户名或密码错误!");
26			request.getRequestDispatcher("message.jsp").forward(request, response);
27		}
28	}
}
1public class CourseDao {
2	// 获取所有课程的信息,用ArrayList返回
3	public ArrayList<Course> query_all_course() {
4		Connection conn = DBUtils.getConnection();
5		String sql = "select * from course order by cno;";
6		ArrayList<Course> results = new ArrayList<Course>();
7		try {
8			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
9			ResultSet rs = ps.executeQuery();
10			while (rs.next()) {
11				Course temp = new Course();
12				temp.setCno(rs.getString("Cno"));
13				temp.setCname(rs.getString("Cname"));
14				temp.setCteacher(rs.getString("Cteacher"));
15				temp.setCcredit(rs.getInt("Ccredit"));
16				results.add(temp);
17			}
18			// 关闭资源
19			rs.close();
20			ps.close();
21		} catch (SQLException e) {
22			e.printStackTrace();
23		} finally {
24			DBUtils.closeConnection(conn);
25		}
26		return results;
27	}
28	// 插入课程信息,返回一个int值表示状态,1:成功,0失败
29	public int insert_course(String Cno, String Cname, String Cteacher, double Ccredit) {
30		Connection conn = DBUtils.getConnection();
31		String sql = "insert into course values(?,?,?,?);";
32		int flag = 0;
33		try {
34			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
35			ps.setString(1, Cno);
36			ps.setString(2, Cname);
37			ps.setString(3, Cteacher);
38			ps.setDouble(4, Ccredit);
39			flag = ps.executeUpdate();
40			ps.close();
41		} catch (SQLException e) {
42			e.printStackTrace();
43		} finally {
44			DBUtils.closeConnection(conn);
45		}
46		return flag;
47	}
48	// 删除课程信息,返回一个int值表示状态,1:成功,0失败
49	public int delete_course(String Cno) {
50		Connection conn = DBUtils.getConnection();
51		String sql = "delete from course where Cno = ?;";
52		int flag = 0;
53		try {
54			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
55			ps.setString(1, Cno);
56			flag = ps.executeUpdate();
57			ps.close();
58		} catch (SQLException e) {
59			e.printStackTrace();
60		} finally {
61			DBUtils.closeConnection(conn);
62		}
63		return flag;
64	}
65	//修改课程信息,返回一个int值表示状态,1:成功,0失败
66	public int alter_course(String cno,String after_cno,String after_cname,String after_cteacher,double after_ccredit) {
67		Connection conn = DBUtils.getConnection();
68		String sql = "update course set cno = ?,cname = ?,cteacher = ?,ccredit = ? where cno = ?;";
69		int flag = 0;
70		try {
71			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
72			ps.setString(1, after_cno);
73			ps.setString(2, after_cname);
74			ps.setString(3, after_cteacher);
75			ps.setDouble(4, after_ccredit);
76			ps.setString(5, cno);
77			flag = ps.executeUpdate();
78			ps.close();
79		} catch (SQLException e) {
80			e.printStackTrace();
81		}finally {
82			DBUtils.closeConnection(conn);
83		}
84		return flag;
85	}
86	// 查询课程平均分信息,返回一个ArrayLst集合
87	public ArrayList<Course_avg> course_avg() {
88		Connection conn = DBUtils.getConnection();
89		String sql = "select sc.cno cno,cname,avg(grade) avg from course,sc where course.cno = sc.cno group by cno order by cno;";
90		ResultSet result = null;
91		ArrayList<Course_avg> course_avg = new ArrayList<Course_avg>();
92		try {
93			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
94			result = ps.executeQuery();
95			while(result.next()){
96				Course_avg temp = new Course_avg();
97				temp.setCno(result.getString("Cno"));
98				temp.setCname(result.getString("Cname"));
99				temp.setAvg(result.getDouble("avg"));
100				course_avg.add(temp);
101			}
102			ps.close();
103			result.close();
104		} catch (SQLException e) {
105			e.printStackTrace();
106		} finally {
107			DBUtils.closeConnection(conn);
108		}
109		return course_avg;
110	}
111	//查询课程不及格率,返回一个ArrayList集合
112	public ArrayList<Course_fail_rate> fail_rate(){
113		Connection conn = DBUtils.getConnection();
114		String sql = "select cno,(select cname from course where cno = x.cno) cname,cast(100.0*(select count(sno) from sc where grade < 60 and cno = x.cno)/(select count(sno) from sc where cno = x.cno) as decimal(18,2)) rate from sc x group by cno order by cno;";
115		ArrayList<Course_fail_rate> fail_rate = new ArrayList<Course_fail_rate>();
116		try {
117			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
118			ResultSet rs = ps.executeQuery();
119			while(rs.next()){
120				Course_fail_rate temp = new Course_fail_rate();
121				temp.setCno(rs.getString("cno"));
122				temp.setCname(rs.getString("cname"));
123				temp.setFail_rate(rs.getDouble("rate"));
124				fail_rate.add(temp);
125			}
126			rs.close();
127			ps.close();
128		} catch (SQLException e) {
129			e.printStackTrace();
130		} finally {
131			DBUtils.closeConnection(conn);
132		}
133		return fail_rate;
134	}
135	//查询课程排名情况,返回一个ArrayList集合
136	public ArrayList<Course_ranking> course_ranking(String cno){
137		Connection conn = DBUtils.getConnection();
138		String sql = "select student.Sno Sno,Dname,Clname,Sname,Ssex,Sage,Grade from department,class,student,sc where student.sno = sc.sno and class.Clno = student.Clno and department.Dno = class.Dno and cno = '"+cno+"' order by grade desc;";
139		ArrayList<Course_ranking> course_ranking = new ArrayList<Course_ranking>();
140		try {
141			PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
142			ResultSet rs = ps.executeQuery();
143			while(rs.next()){
144				Course_ranking temp = new Course_ranking();
145				temp.setSno(rs.getString("Sno"));
146				temp.setDname(rs.getString("Dname"));
147				temp.setClname(rs.getString("Clname"));
148				temp.setSname(rs.getString("Sname"));
149				temp.setSsex(rs.getString("Ssex"));
150				temp.setSage(rs.getInt("Sage"));
151				temp.setGrade(rs.getDouble("Grade"));
152				course_ranking.add(temp);
153			}
154			rs.close();
155			ps.close();
156		} catch (SQLException e) {
157			e.printStackTrace();
158		} finally {
159			DBUtils.closeConnection(conn);
160		}
161		return course_ranking;
162	}
}
  • 2
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              
学生信息管理系统是一个基于JavaWeb的在线管理平台,旨在方便学校或机构管理学生的个人信息、课程成绩和其他相关记录。该系统包括学生信息的录入、修改、查询、删除等功能,可以实现对学生信息的全面管理和监控。 首先,该系统可以通过用户登录实现权限管理,确保只有授权的用户才能进行信息的操作。管理员可以在系统中添加、删除和修改学生信息,包括姓名、年龄、性别、学号、班级等基本信息,并能够上传学生照片。 其次,学生成绩管理是该系统的另一个重要功能。管理员可以录入学生成绩,包括考试成绩、平时成绩等,并可以进行统计和分析。学生和家长可以通过系统查询自己的成绩情况,了解自己的学业表现。 另外,该系统还可以提供学生课程表管理功能,管理员可以录入学生的课程信息,包括上课时间、地点、任课教师等。学生和教师可以通过系统查询自己的课程表,方便管理学习和教学安排。 此外,系统还具有学生信息统计和报表功能,可以生成各种报表和统计图表,帮助管理员全面了解学生信息的整体状况。 总的来说,基于JavaWeb学生信息管理系统集成了学生信息录入、成绩管理、课程表管理、统计分析等功能,能够实现对学生信息的全方位管理和监控,为学校和机构提供了一种高效便捷的管理方法。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值