java课程设计 学生管理系统
学生成绩管理系统
可实现功能
学生管理系统
- 查询学生信息:姓名、学号、性别、出生年月日。(学号自动生成且唯一)
- 查询学生成绩:每个人都有数学、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课程设计 学生管理系统的更多相关文章
- Java课程设计——学生成绩管理系统(201521123003 董美凤)
Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...
- Java课程设计—学生成绩管理系统(201521123004-林艺如)
1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...
- Java课程设计—学生成绩管理系统(201521123005 杨雪莹)
一.团队课程设计博客链接 学生成绩管理系统 二.个人负责模块或任务说明 学生成绩录入 显示所有学生信息 显示各科平均成绩 显示学生成绩(按降序排序) 三.自己的代码提交记录截图 四.自己负责模块或任务 ...
- JAVA课程设计---学生基本信息管理系统(201521123039 王兴)
1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...
- Java课程设计 学生基本信息管理系统 团队博客
学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...
- JAVA课程设计---学生基本信息管理系统
1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...
- Java课程设计—学生成绩管理系统(201521123002 林楚虹)
1. 团队课程设计博客链接 团队博客链接 2.个人责模块或任务说明 根据学生学号查找学生成绩 根据学生姓名(支持模糊匹配)查找学生成绩 用POI技术导出Excel文件 3.自己的代码提交记录截图 4. ...
- Java课程设计—学生成绩管理系统(54号童欢)
1. 团队课程设计博客链接 http://www.cnblogs.com/wufuckshuo/p/7063183.html 2.个人责模块或任务说明 负责模块/任务:主函数(调用其他的功能函数),添 ...
- JAVA课程设计-学生信息管理系统(个人博客)
1. 团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模块或任务说明 负责person类的编写,建立person对象, 完成M ...
随机推荐
- 数据库:DDL/DML/DCL/TCL基本概念
SQL(Structure Query Language)语言是数据库的核心语言 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: ...
- 【TOJ 3305】Hero In Maze II
描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他急忙赶到迷宫,开 ...
- PHPStorm+Xdebug断点远程调试PHP xdebug安装
一.xdebug安装 wget http://www.xdebug.org/files/xdebug-2.2.3.tgz #下载Xdebug tar xzf xdebug-2.2.3.tgz cd x ...
- MySQL数据库常见报错原因
1.启动数据库时报错 启动 # /etc/init.d/mysqld start Starting MySQL.Logging to '/application/mysql-5.6.36/data/m ...
- 路由器基础配置之广播多路访问链路上的ospf
我们将以上面的拓扑图进行实验,因为是要以不断广播的形式进行ospf,所有中间加了一个集线器,这种ospf和前一种不同,路由器之间会在配置好ospf之后选举出一个老大,DR,一个备份,BDR,而其他路由 ...
- 【TCP/IP实现磁盘资源的分享-----ISCSI(互联网最小应用程序接口)】
Iscsi server: 首先把多块磁盘合并为RAID5,便于后期iscis client访问以及服务端的管理 安装 targted服务端包,以及targtedcli创建iscsi TCP/IP共享 ...
- java后台去除JSON数组的重复值
假设原始Json数组是这样的 原始JSONArry:[{"Value":"15153129877","Key":"09770985 ...
- Leecode刷题之旅-C语言/python-35.搜索插入位置
/* * @lc app=leetcode.cn id=35 lang=c * * [35] 搜索插入位置 * * https://leetcode-cn.com/problems/search-in ...
- C语言学习记录_2019.02.02
变量在第一次被使用之前应该赋初值 scanf(“%d”,&price); scanf(“price%d %d”,&price); scanf中的东西一定是要输入的东西. 定义常量:c ...
- ABAP CDS ON HANA-(10)項目結合して一つ項目として表示
Numeric Functions ABS(arg) CEIL(arg) DIV(arg1, arg2) DIVISION(arg1, arg2, dec) FLOOR(arg) MOD(arg1, ...