学生成绩管理系统

可实现功能

学生管理系统

  • 查询学生信息:姓名、学号、性别、出生年月日。(学号自动生成且唯一)
  • 查询学生成绩:每个人都有数学、Java与体育与选修课
  • 查询学生课程
  • 进行公选课选课

教师管理系统

  • 添删改学生功能
  • 查找学生(姓名查找(支持模糊查找),学号查找,班级查找,科目查找)
  • 进行学生成绩分析(柱状图(显示学生在各个分数范围的人数)与饼状图(显示学生及格与不及格的比例))
  • 进行学生成绩导出(poi)

一、 团队成员与任务分配

姓名 任务分配
马艺芳 DAO模式实现,数据库建立与连接,逻辑代码编写,代码整合,学生教师部分功能实现。
梁乐国 POI技术应用(导出学生成绩并生成excel表格),学生部分功能实现。
谢国庆 图形界面设计,部分教师功能。
梁志湖 学生成绩图形分析实现(柱形图,饼状图),团队博客编写,项目所需要的图片绘制与寻找

团队成员课程设计博客链接:

二、 项目git地址:

欢迎大家访问学生管理系统的码云

三、 项目git提交记录截图



四、 项目功能架构图与主要功能流程图

项目功能架构图

主要功能流程图

五、 项目运行截图

1.用户登录界面:

2.教师系统界面

3.按照班级查找

4.柱状图和饼状图

5.导出成绩

6.学生信息界面

7.学生选课

六、 项目关键代码

生成柱状图

public BarChartPanel(int x1, int x2, int x3, int x4, int x5, String name) {
// TODO 自动生成的构造函数存根
//CategoryDataset dataset = getDataSet();
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(x1,name,"0~60"); dataset.addValue(x2, name, "61~70"); dataset.addValue(x3, name, "71~80"); dataset.addValue(x4, name, "81~90"); dataset.addValue(x5, name, "91~100");
JFreeChart chart = ChartFactory.createBarChart3D(
"成绩柱形图", // 图表标题
"科目", // 目录轴的显示标签
"人数", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
); //从这里开始
CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象
// plot.getRenderer().setSeriesPaint(50, new Color(10,10,10)) ;
BarRenderer3D customBarRenderer = (BarRenderer3D) plot.getRenderer();
customBarRenderer.setSeriesPaint(0, Color.decode("#7979FF")); // 给series1 Bar CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表
domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); //水平底部标题
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //垂直标题
ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//设置标题字体 //到这里结束,虽然代码有点多,但只为一个目的,解决汉字乱码问题 frame1 = new ChartPanel(chart,true); } //这里也可以用chartFrame,可以直接生成一个独立的Frame

poi导出表格

public void ExportBycoursePOI(List<Student> student) throws IOException {

		HSSFWorkbook wb = new HSSFWorkbook();

		HSSFCellStyle cellStyle = wb.createCellStyle(); 

        HSSFSheet sheet = wb.createSheet("学生成绩");

        HSSFRow row = sheet.createRow(0);

        HSSFCell cell = row.createCell(0);

        HSSFDataFormat format = wb.createDataFormat();

        cellStyle.setDataFormat(format.getFormat("@"));
cell.setCellValue("学号");
cell.setCellStyle(cellStyle);
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("班级");
row.createCell(3).setCellValue("科目");
row.createCell(4).setCellValue("成绩");
for (int i = 0; i < student.size(); i++) {
//创建list.size()行数据
row = sheet.createRow(i + 1);
//把值一一写进单元格里
//设置第一列为自动递增的序号
row.createCell(0).setCellValue(student.get(i).getStudentID());
row.createCell(1).setCellValue(student.get(i).getName());
row.createCell(2).setCellValue(student.get(i).getClasses());
row.createCell(3).setCellValue(student.get(i).getSublist().get(0).getName());
row.createCell(4).setCellValue(student.get(i).getSublist().get(0).getScore());
}
try {
FileOutputStream output = new FileOutputStream("E:\\JAKARTA.xls");
wb.write(output);
output.flush();
JOptionPane.showMessageDialog(null, "导出成功!");
System.out.println("成功创建excel文件");
} catch (Exception e) {
e.printStackTrace();
}
}

通过关键字实现模糊查找

public List<Student> searchByname(String stuname) {
List<Student> stulist = new ArrayList<>();
PreparedStatement pstat = null;
ResultSet rs = null;
//数据库模糊匹配的sql语法
String sql = "select * from student where name like'%"+stuname+"%'" ;
try (Connection conn = JDBCUtil.getConnection()) {
pstat = conn.prepareStatement(sql);
rs = pstat.executeQuery(sql);
//创建ResultSetMetaData
//获得ResultSet对象rs
ResultSetMetaData data = rs.getMetaData();
//调用方法得到表的列数
int colum = rs.getMetaData().getColumnCount();
String[] columnamestr = new String[colum]; //获得表头,以实现图形界面动态建表
for(int i = 7;i <= colum;i++) {
columnamestr[i-1] = data.getColumnName(i);
System.out.println(data.getColumnName(i));
}
//获取数据库数据
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String classes = rs.getString("class");
String gender = rs.getString("gender");
String birthdate = rs.getString("birthdate");
System.out.println(id+" "+name+" "+classes+" "+gender+" "+birthdate);
double[] source = new double[colum];
for(int j = 6;j < colum;j++) {
source[j] = rs.getDouble(columnamestr[j]);
System.out.println(source[j]);
}
//将课程信息包装成Subject类型
List<Subject> subject = new ArrayList<>();
for(int k = 6;k<colum;k++) {
Subject s = new Subject(columnamestr[k],new Teacher(""));
s.setScore(source[k]);
subject.add(s);
}
//将所得数据包装成Student类型,
Student student = new Student(id,name,classes,gender,birthdate);
//加入课程信息
student.setSublist(subject);
//加入List
stulist.add(student);
} } catch (SQLException sqle) {
sqle.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} return stulist;
}

七、项目代码扫描结果及改正

一,没有添加创建者信息

改正

二,不能在代码尾部添加注释

改正(应在代码上方)

八、UML类图



九、尚待改进或者新的想法

  • 尝试过网络功能,但目前还是未能实现,后面会争取再去尝试一下。
  • 由于时间问题,多线程(多个账户同时登陆)与学生抢课功能还未能实现
  • 代码结构进一步改善

java课程设计 学生管理系统的更多相关文章

  1. Java课程设计——学生成绩管理系统(201521123003 董美凤)

    Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...

  2. Java课程设计—学生成绩管理系统(201521123004-林艺如)

    1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...

  3. Java课程设计—学生成绩管理系统(201521123005 杨雪莹)

    一.团队课程设计博客链接 学生成绩管理系统 二.个人负责模块或任务说明 学生成绩录入 显示所有学生信息 显示各科平均成绩 显示学生成绩(按降序排序) 三.自己的代码提交记录截图 四.自己负责模块或任务 ...

  4. JAVA课程设计---学生基本信息管理系统(201521123039 王兴)

    1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...

  5. Java课程设计 学生基本信息管理系统 团队博客

    学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...

  6. JAVA课程设计---学生基本信息管理系统

    1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...

  7. Java课程设计—学生成绩管理系统(201521123002 林楚虹)

    1. 团队课程设计博客链接 团队博客链接 2.个人责模块或任务说明 根据学生学号查找学生成绩 根据学生姓名(支持模糊匹配)查找学生成绩 用POI技术导出Excel文件 3.自己的代码提交记录截图 4. ...

  8. Java课程设计—学生成绩管理系统(54号童欢)

    1. 团队课程设计博客链接 http://www.cnblogs.com/wufuckshuo/p/7063183.html 2.个人责模块或任务说明 负责模块/任务:主函数(调用其他的功能函数),添 ...

  9. JAVA课程设计-学生信息管理系统(个人博客)

    1. 团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模块或任务说明 负责person类的编写,建立person对象, 完成M ...

随机推荐

  1. Linux/Mac scp命令笔记

    scp命令用于Linux之间复制文件和目录. 参数说明: -1: 强制scp命令使用协议ssh1-2: 强制scp命令使用协议ssh2-4: 强制scp命令只使用IPv4寻址-6: 强制scp命令只使 ...

  2. Web中的中文参数乱码

    中文参数乱码    1 get方式传参,中文乱码        修改tomcat中的配置server.xml        在修改端口的标签中添加属性URIEncoding="XXX&quo ...

  3. 数论(一)LOJ1282

    1.题目来源LOJ1282 You are given two integers: n and k, your task is to find the most significant three d ...

  4. Maximum Subsequence Sum

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  5. Java四舍五入时保留指定小数位数

    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); , BigDecimal.ROUND_HALF_UP).doubleValue(); ...

  6. 关于antd-mobile中列表上拉加载PullToRefresh的使用

    相信有很多小伙伴发现antd-mobile中的下拉刷新组件,也发现例子挺难的,其实这个组件并没有那么复杂,只是demo例子不好理解,给大家提供一个简单的demo,或许可以帮到你 上拉刷新下拉加载 - ...

  7. tp5 数据库信息导出到excel(带图片)

    function excel_down(){ //导入谁就去查谁 $data=Db::name('order_xueyou')->select(); // 导出Exl // import(&qu ...

  8. Spark知识点

    1.Spark架构 分布式spark应用中的组件 在分布式环境下,Spark集群采用的是主/从结构.在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点.这个中央协调节点被称为驱动器 ...

  9. PHP代码统计文件大小(自动确定单位)

    php中有一个系统自带的计算文件大小的函数,就是filesize(),但是这个函数是以字节为单位的,但是在一些情况下,我们需要很直观的了解一个文件大小,就不仅仅需要字节B这个单位了,还需要KB,MB, ...

  10. 记一次艰难的CTP调试

    一个atmel,mxt540e的CTP触摸屏. 中断配置为下降沿,输入上拉. 总是只能触发一次中断,中断脚就一直低电平,无法拉高.这只是表面现象   不停找底层I2C驱动,改代码,没用.要靠波形来说话 ...