zoukankan      html  css  js  c++  java
  • JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html

    2.个人负责模块或任务说明

    我主要负责实现学生信息的添加功能、学生成绩的录入功能、对单个学生各科成绩画出柱状分布图功能和小组博客内容收集整理。

    3.自己的代码提交记录截图

    4.自己负责模块或任务详细说明

    学生信息的添加功能

    代码

    public boolean writeStudent(Student student) {   //添加学生
    		Connection conn = null;//创建数据库连接对象
    		PreparedStatement pstat = null;//使用PreparedStatement进行参数化查询
    		String sql = ("insert into insert into student(id,name,gender,birthday )"+ "values(?,?,?,?)");//插入数据
    		int result = -1;
    		try {
    			conn = JDBCUtil.getConnection();
    			pstat = conn.prepareStatement(sql);
    			pstat.setInt(1, student.getId());
    			pstat.setString(2, student.getName());
    			pstat.setString(3, student.getGender());
    			pstat.setDate(4, new java.sql.Date(student.getBirthday().getTime()));
    			result = pstat.executeUpdate();//设置参数
    		} catch (SQLException sqle) {
    			sqle.printStackTrace();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    		        JDBCUtil.realeaseAll(null, pstat, conn);
    		}
    		return result > 0 ? true : false;
    	}
    

    截图

    学生成绩的录入功能

    代码

    public boolean update(Student student) {  //修改学生信息or输入学生的成绩
    		// 拿到连接对象
    		Connection conn = null;// 创建预处理命令对象
    		PreparedStatement pstmt = null;
    		int n = 0;
    		try {
    			conn = JDBCUtil.getConnection();
    			pstmt = conn.prepareStatement("update student set name=?,gender=?,birthday=?,数学=?,Java=?,体育=?");
    			pstmt.setString(1, student.getName());
    			pstmt.setString(2, student.getGender());
    			pstmt.setDate(3, new java.sql.Date(student.getBirthday().getTime()));
    			pstmt.setDouble(4, student.getScoreList().get(0).getScore());
    			pstmt.setDouble(5, student.getScoreList().get(1).getScore());
    			pstmt.setDouble(6, student.getScoreList().get(2).getScore());
    			n = pstmt.executeUpdate();
    			System.out.println("插入语句执行结果-----" + n);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			JDBCUtil.realeaseAll(null, pstmt, conn);
    		}
    		return n > 0 ? true : false;
    	}
    

    对单个学生各科成绩画出柱状分布图功能

    代码

    public class main extends JPanel {
            private double[] value;
            private String[] classes;
            private String title;
            public main(double[] val, String[] lang, String t) {
                    classes = lang;
                    value = val;
                    title = t;
            }
            public void paintComponent(Graphics graphics) {
                    super.paintComponent(graphics);//绘制窗体
                    double minValue = 0;//柱形最小值
                    double maxValue = 0;//柱形最大值
                    for (int i = 0; i < value.length; i++) {
                    if (minValue > value[i]) 
                    minValue = value[i];
                    if (maxValue < value[i])
                    maxValue = value[i];
            }//将数据的最大最小值记为柱形的大小范围
            Dimension dim = getSize();//设置图形的长宽
            int clientWidth = dim.width;//定义窗体宽度
            int clientHeight = dim.height;//定义窗体高度
            int barWidth = clientWidth / value.length;//每条柱形平均宽度
            Font titleFont = new Font("gb2312", Font.BOLD, 20);
            //标题格式为gb2312才不会导致中文乱码
            //中文 加粗 20号字体
            FontMetrics titleFontMetrics = graphics.getFontMetrics(titleFont);
            Font labelFont = new Font("gb2312", Font.PLAIN, 15);
            //数据名称格式为gb2312才不会导致中文乱码
            FontMetrics labelFontMetrics = graphics.getFontMetrics(labelFont);
            int titleWidth = titleFontMetrics.stringWidth(title);//标题总宽度
            int q = titleFontMetrics.getAscent() + 3;//标题距上界距离
            int p = (clientWidth - titleWidth) / 2;//设置为居中
            graphics.setFont(titleFont);//标题输出格式设置完成
            graphics.drawString(title, p, q);
            //输出标题
            //str - 要绘制的 string。
            //x - x 坐标。
            //y - y 坐标。 
            int top = titleFontMetrics.getHeight();//图形区域上边缘坐标等于标题高度
            int bottom = labelFontMetrics.getHeight();//图形区域下边缘坐标等于数据名称高度
            double scale = (clientHeight - top - bottom) / (maxValue - minValue);//单位高度
            q = clientHeight - labelFontMetrics.getDescent();
            //设置数据名称y坐标,为窗体高度-文本基线到下降线距离
            graphics.setFont(labelFont);//数据名称输出格式设置完成
            for (int j = 0; j < value.length; j++) {
                    int valueP = j * barWidth + 1;//要填充矩形的 x 坐标
                    int valueQ = top;//要填充矩形的 y 坐标
                    int height = (int) (value[j] * scale);//要填充矩形的高度
                    valueQ += (int) ((maxValue - value[j]) * scale);//要填充矩形的宽度
                    graphics.setColor(Color.lightGray);//设置柱形图颜色
                    graphics.fillRect(valueP, valueQ, barWidth, height);
                    //填充柱形图
                    graphics.setColor(Color.darkGray);//设置边框颜色
                    graphics.drawRect(valueP, valueQ, barWidth, height);
                    //柱形图边框
                    int labelWidth = labelFontMetrics.stringWidth(classes[j]);
                    p = j * barWidth + (barWidth - labelWidth) / 2;
                    graphics.setColor(Color.black);//设置数据名称颜色
                    graphics.drawString(classes[j], p, q);
                    //设置柱状图的坐标
                    //str - 要呈现的字符串
                    //x - 呈现 String 位置的 x 坐标
                    //y - 呈现 String 位置的 y 坐标 
            }
    }
    
    public static void main(Student s) {
    	JFrame frame = new JFrame();
      	frame.setSize(400, 300);//设置窗口大小
      	double[] value= new double[3];
      	String[] classes = new String[3];
      	value[0] = s.getScoreList().get(0).getScore();
      	classes[0] = "数学";
      	value[1] = s.getScoreList().get(1).getScore();
      	classes[1] = "Java";
      	value[2] = s.getScoreList().get(2).getScore();
      	classes[2] = "体育";
      	frame.getContentPane().add(new main(value, classes,s.setName(name) + "的成绩单"));
      	//输出柱形图各数据名称
    			WindowListener winListener = new WindowAdapter() {
    			public void windowClosing(WindowEvent event) {
    			System.exit(0);
    		}
    	};
    	frame.addWindowListener(winListener);//建立一个窗口
    	frame.setVisible(true);//弹出窗口
     	}
    }  
    

    截图

    5.课程设计感想

    学习要在实践中摸索才有实际成效,在编写函数的同时也提升了查找关键字的能力。这次课设可以实现学生信息的增删改查、对单个学生各科成绩画出柱状分布图功能和将学生信息汇总成excel功能,但还未实现多名学生同时生成成绩对比图,柱状图的画面质感也有待改进。我们希望在暑假能进一步完善功能,做出真正能够投入使用的学生成绩管理系统。

  • 相关阅读:
    php 发送超大数据处理
    Linux 忘记了mysql 密码
    利用mysqldump 实现每天备份方案
    window 下忘记了mysql 密码的解决方法
    MySQL添加字段和修改字段的方法
    php 即使客户端或者服务器断开(如关掉浏览器)脚本也可以继续执行
    PHP面向对象05_接口与多态
    PHP面向对象06_异常处理
    PHP面向对象07_PDO
    PHP面向对象之魔术方法复习
  • 原文地址:https://www.cnblogs.com/kawajiang/p/7063168.html
Copyright © 2011-2022 走看看