java 课程系统_java课程设计 学生管理系统

这是一个Java课程设计项目,实现了学生和教师管理系统,包括学生信息查询、成绩管理、公选课选课、教师管理、成绩分析(柱状图和饼状图)及成绩导出(使用POI技术)。团队成员分工明确,项目包含用户登录、教师系统、班级查找、图形界面等功能,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

学生成绩管理系统

可实现功能

学生管理系统

查询学生信息:姓名、学号、性别、出生年月日。(学号自动生成且唯一)

查询学生成绩:每个人都有数学、Java与体育与选修课

查询学生课程

进行公选课选课

教师管理系统

添删改学生功能

查找学生(姓名查找(支持模糊查找),学号查找,班级查找,科目查找)

进行学生成绩分析(柱状图(显示学生在各个分数范围的人数)与饼状图(显示学生及格与不及格的比例))

进行学生成绩导出(poi)

一、 团队成员与任务分配

姓名

任务分配

马艺芳

DAO模式实现,数据库建立与连接,逻辑代码编写,代码整合,学生教师部分功能实现。

梁乐国

POI技术应用(导出学生成绩并生成excel表格),学生部分功能实现。

谢国庆

图形界面设计,部分教师功能。

梁志湖

学生成绩图形分析实现(柱形图,饼状图),团队博客编写,项目所需要的图片绘制与寻找

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

二、 项目git地址:

三、 项目git提交记录截图

ad48c39d41ff2161f2304603c47c732c.png

eecd07ce198cdd783c6bb01e882428c2.png

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

项目功能架构图

87e1f9ceaaa264fe3561e4498cbe0398.png

主要功能流程图

b3a0ae86f42a64cdd99dd5c836960305.png

五、 项目运行截图

1.用户登录界面:

094e37e2db95e976b14a7e0037d575e2.png

2.教师系统界面

d352a769087e10e3460af110e754d0b7.png

3.按照班级查找

6105637e0beb417ba3d9aa85158d8858.png

4.柱状图和饼状图

49b1c164a941b14dab6064df68c3078a.png

5.导出成绩

0d26ffef262554d1e935a829334d360a.png

6.学生信息界面

8368eb890d9651a744d81446d4e482c2.png

7.学生选课

10f2e96291578c517e898057168fcb0b.png

六、 项目关键代码

生成柱状图

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) 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 searchByname(String stuname) {

List 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 = new ArrayList<>();

for(int k = 6;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;

}

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

一,没有添加创建者信息

b8523db598cc8434edcc17f0e09e12ef.png

改正

652e3ef5372d926683d80a6cdaa35f5e.png

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

3e4549bd1ccc5d531b39ee7b735d9cf0.png

改正(应在代码上方)

e23064a5aa485f90a31b2ead492ba416.png

八、UML类图

7769034b2dcd9b3761bf97625ef05e76.png

696fd861c14deff9067c64f51fe2b826.png

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

尝试过网络功能,但目前还是未能实现,后面会争取再去尝试一下。

由于时间问题,多线程(多个账户同时登陆)与学生抢课功能还未能实现

代码结构进一步改善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值