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 ...
随机推荐
- jquery mobile 移动web(6)
jquery mobile 针对移动端设备的事件类型. 1.touch 事件. tap 快速触摸屏幕并且离开,类似一种完整的点击操作. taphold 触摸屏幕并保持一段时间. swipe 在1秒内水 ...
- #leetcode刷题之路26-删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1: ...
- 关系型数据库设计——E-R图
一.数据管理技术的三个发展阶段: 1)人工管理阶段(20世纪50年代中期) 特点:数据不保存:应用程序管理数据:数据不共享:数据没有独立性: 2)文件系统阶段(20世纪50年代后—60年代)特点:数据 ...
- css跨浏览器大全
CSS技巧1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不要 ...
- 移植Linux Kernel SM750 驱动到VxWorks 7
一.SM750简介 SM750 是SiliconMotion 推出的一款适合嵌入式设备的显卡(Embedded GPU),采用PCIe接口与CPU连接,内部集成16MB DDR SDRAM显存,产品具 ...
- python3 练习题100例 (二十四)打印完数
完数:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如 6 = 1+2+3. 题目内容: 输入一个正整数n(n<1000),输出1到n之间的所有完数(包括n). 输 ...
- ruby Encoding
一. 查看ruby支持的编码 Encoding.name_list 二. 搜索编码 Encoding.find('US-ASCII') #=> US-ASCII,不存在则抛出异常 三. __EN ...
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
如何定义Java中的类以及使用对象的属性 一:类的重要性: 所有Java程序都以类class为组织单元: 二:什么是类: 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 三:类的组成: 属性 ...
- JavaScript 对引擎、运行时、调用堆栈的概述理解
JavaScript 对引擎.运行时.调用堆栈的概述理解 随着JavaScript越来越流行,越来越多的团队广泛的把JavaScript应用到前端.后台.hybrid 应用.嵌入式等等领域. 这篇文 ...
- stm32f103 time2配置,转载
//----------------------------main()-------------------- //stm32f103c8t6有3个普通1个高级定时器 //每次进入中断服务程序间隔时 ...