学生成绩管理系统

可实现功能

学生管理系统

  • 查询学生信息:姓名、学号、性别、出生年月日。(学号自动生成且唯一)
  • 查询学生成绩:每个人都有数学、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. selenium之Xpath定位

    1. 绝对定位: driver.find_element_by_xpath("/html/body/div[x]/form/input") x 代表第x个 div标签,注意,索引从 ...

  2. oracle权限配置

    系统权限管理:1.系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构. RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构. CON ...

  3. Golang学习笔记(一)

    一段基础的go语言代码解析 package main import "fmt" func main(){ fmt.Println("hello golang") ...

  4. 姆洋自主研发堆(heap)头文件

    这是姆洋自主研发的heap头文件 将其录入IDE,并保存为heap.h,保存在存放C++头文件的文件夹里(我只知道Dev-C++是Dev-cpp/MinGW64/lib/gcc/x86_64-w64- ...

  5. 小胖办证 wzoi

    小胖办证 题目描述: xuzhenyi要办个签证.办证处是一座M层的大楼,1<=M<=100. 每层楼都有N个办公室,编号为1..N(1<=N<=500).每个办公室有一个签证 ...

  6. Tomcat服务器的介绍、安装配置

    [1] Tomcat服务器的介绍 1.是一个免费的.开饭源代码的Servlet服务器,目前非常流行. 2.Tomcat服务器是Apache软件基金会的一个顶级项目,由Apache.Sun等公司共同开发 ...

  7. 实践笔记-VA05 销售订单清单 增加字段

    现在都自开发很多报表 ,估计没有多少人 用  VA05 1.在结构 VBMTVZ 中增加需要的字段 2.表t180a 中  添加一条 “添加字段”的数据,如下: 3.取值 修改程序 INCLUDE V ...

  8. SAPの販売管理で、価格設定をするまでの関連カスタマイズ画面

    この記事ではSAP SDで.価格を決めるまでに必要な設定画面について述べています. condition table (条件テーブル) 条件レコードのキー項目を定義したもの.3桁の数字で名前がついている ...

  9. 0301001_Lesson1&2

    Lesson 1 Excuse me! 对不起! Listen to the tape then answer this question.Whose handbag is it?听录音,然后回答问题 ...

  10. Java - 问题集 - linux下,jar: command not found

    linux下的找不到jar命令解决方法如下: 1. 确认jdk是否已安装 2. 检查jdk环境变量是否已设置,并且确认该设置已生效 3. 1,2两步均正常时,建立jar的软链接 # cd /usr/b ...