学生基本系统管理
学生个人信息管理系统
一、课题研究背景
随着我国教育产业的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一套完善的教学管理软件提出了更多的要求。为了适应这种形式,教育系统尤其是大学不仅首先要有坚实的硬件基础,还要有一套完善的教学管理软件管理系统。而要实现这一功能,就要要求学校管理者配备一套高效的教育管理网络系统,以便在学校里实施良好的一套完善的管理且以最快的速度响应教师和学生的需求,及时为他们提供服务,为他们提供一个高效、便捷的环境。学生信息管理系统是校园网络中一个重要的应用系统,它大大改善了学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。二、选题的意义和价值
高校办学规模的扩大和招生人数的增加,学生信息管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的一个重要环节,介于它的重要性学生管理系统的开发和应用逐渐提入议程,并占着越来越重的分量。
运用学生信息管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率和准确率,能够节省时间,学生也能尽快的自己的信息。因此开发一套学生信息管理系统是非常必要的。
三、项目开发工具
Eclipse
Mysql 8.0(采用JDBC连接方式)
Tomcat 8.5
Mawen
四、可行性分析
管理人员登录,学生信息系统仅包括对学生的基本信息进行管理。
系统灵活性,操作简单。
可扩展性,站点的数据承载量、功能模块的单个或整体都可以满足变化的需要。数据与用户之间进行交互、数据符合用户的使用需求、表查询。
五、功能需求分析
在学生管理系统中,主要有用户登录,学生信息管理
(1)用户登录
采用用户名、密码及验证码。指定数据库的用户名及密码登录,验证通过可进入操作页面。
(2)学生信息管理
学生信息的添加、修改与删除。
六、功能实现
定义数据库操作元素的结构
连接数据库
# db.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/menagerie?serverTimezone=UTC
jdbc.user=root
jdbc.password=0000
initSize=1
maxActive=2
验证码
package util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public final class ImageUtil {
// 验证码字符集
private static final char[] chars = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
// 字符数量
private static final int SIZE = 4;
// 干扰线数量
private static final int LINES = 5;
// 宽度
private static final int WIDTH = 80;
// 高度
private static final int HEIGHT = 40;
// 字体大小
private static final int FONT_SIZE = 30;
/**
* 生成随机验证码及图片
*/
public static Object[] createImage() {
StringBuffer sb = new StringBuffer();
// 1.创建空白图片
BufferedImage image = new BufferedImage(
WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
// 2.获取图片画笔
Graphics graphic = image.getGraphics();
// 3.设置画笔颜色
graphic.setColor(Color.LIGHT_GRAY);
// 4.绘制矩形背景
graphic.fillRect(0, 0, WIDTH, HEIGHT);
// 5.画随机字符
Random ran = new Random();
for (int i = 0; i <SIZE; i++) {
// 取随机字符索引
int n = ran.nextInt(chars.length);
// 设置随机颜色
graphic.setColor(getRandomColor());
// 设置字体大小
graphic.setFont(new Font(
null, Font.BOLD + Font.ITALIC, FONT_SIZE));
// 画字符
graphic.drawString(
chars[n] + "", i * WIDTH / SIZE, HEIGHT / 2);
// 记录字符
sb.append(chars[n]);
}
// 6.画干扰线
for (int i = 0; i < LINES; i++) {
// 设置随机颜色
graphic.setColor(getRandomColor());
// 随机画线
graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT),
ran.nextInt(WIDTH), ran.nextInt(HEIGHT));
}
// 7.返回验证码和图片
return new Object[]{sb.toString(), image};
}
/**
* 随机取色
*/
public static Color getRandomColor() {
Random ran = new Random();
Color color = new Color(ran.nextInt(256),
ran.nextInt(256), ran.nextInt(256));
return color;
}
}
Mawen管理jar包
定义对数据库操作的接口
package dao;
import java.util.List;
import entity.Student;
//学生接口类
public interface StudentDao {
//抽象方法,查询学生,返回整个学生
public List<Student> findStudent();
//保存学生,返回值为空,传进去需要保存的学生信息
public void save(Student stu);
//通过stuId查询学生的信息,返回学生对象
public Student findById(int stuId);
//修改操作的更新操作,传进来一个学生对象,无返回值
public void updateStudent(Student student);
//删除操作,根据stuId来删除
public void deleteStudent(int stuId);
}
实现对数据库操作的封装:
在建立数据库连接的基础上,通过向数据库发送要执行的SQL语句,达到操作数据库的目的。
package dao;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import entity.Student;
import sun.management.snmp.util.SnmpListTableCache;
import util.DbUtils;
public class StudentDaoImpl implements Serializable, StudentDao {
/**
*
*/
private static final long serialVersionUID = 1L;
public List<Student> findStudent() {
Connection conn=null;
try {
//获取连接
conn=DbUtils.getConnection();
//执行查询语句
String sql="select * from Student";
Statement sm = conn.createStatement();
//获得查询结果
ResultSet rs = sm.executeQuery(sql);
//生成list集合用来存储student对象
List<Student> list=new ArrayList<Student>();
while(rs.next()) {
//生成student对象
Student student=new Student();
//存储学生的各个信息
student.setStuId(rs.getInt("stuId"));
student.setStuName(rs.getString("stuName"));
student.setStuSex(rs.getString("stuSex"));
student.setStuTel(rs.getString("stuTel"));
student.setStuDisc(rs.getString("stuDisc"));
//将学生存入集合中
list.add(student);
}
return list;
} catch (Exception e) {
throw new RuntimeException("找不到学生",e);
}finally {
//关闭连接
DbUtils.close(conn);
}
}
//保存学生信息
public void save(Student stu) {
Connection conn=null;
try {
//获取连接
conn=DbUtils.getConnection();
String sql="insert into student values(?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, stu.getStuId());
ps.setString(2, stu.getStuName());
ps.setString(3, stu.getStuSex());
ps.setString(4, stu.getStuTel());
ps.setString(5, stu.getStuDisc());
ps.executeUpdate();//执行插入语句
} catch (Exception e) {
throw new RuntimeException("无法保存学生信息",e);
}finally {
DbUtils.close(conn);
}
}
服务器端:
对于客户端不同的HTTP请求对数据库进行不同的操作,并跳转页面。
UML图
