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功能,但还未实现多名学生同时生成成绩对比图,柱状图的画面质感也有待改进。我们希望在暑假能进一步完善功能,做出真正能够投入使用的学生成绩管理系统。
JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳的更多相关文章
- JAVA课程设计个人博客 学生成绩管理 201521123023 戴建钊
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现随机生成10万个学生及其姓名.学号 ...
- JAVA课程设计个人博客 学生成绩管理 201521123014 黄绍桦
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责DAO模式.添加和修改学生的信息功能 ...
- JAVA课程设计个人博客 学生成绩管理 201521145048 林健
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 本人主要负责支持用户登录.验证操作,显示设计界面 ...
- JAVA课程设计个人博客 学生基本信息管理 201521123117 李心宇
1. 团队课程设计博客链接 http://www.cnblogs.com/ll321/p/7067598.html 2.个人负责模块或任务说明 ①主要有三个界面的设计,包括:登录界面,功能选择界面还有 ...
- JAVA课程设计——团队博客
JAVA课程设计--团队博客 1. 团队名称.团队成员介绍(需要有照片) 团队名称:"小羊吃蓝莓"小游戏 团队成员介绍: 成员 班级 学号 廖怡洁 网络1513 201521123 ...
- java课程设计团队博客
java课程设计 本组主题:Calculator(简易计算器) 功能要求:基本实现计算器的功能,可运行加.减.乘.除.求倒数.求平方根.求百分号运算.正负数运算等 一.团队介绍 团队名称:熬夜做不出随 ...
- java课程设计团队博客《基于学院的搜索引擎》
JAVA课程设计 基于学院网站的搜索引擎 对学院网站用爬虫进行抓取.建索(需要中文分词).排序(可选).搜索.数据摘要高亮.分页显示.Web界面. 一.团队介绍 学号 班级 姓名 简介 2016211 ...
- Java课程设计---团队博客
课设题目:购物车系统 题目要求: 1.先建立一个文本文件,定义出自己想要的商品.//也可用数据库以商品编号:商品名称:商品品牌:价格作为文件的内容,中间要求用分号或者分割 2.编写程序,定义一个商品类 ...
- Python课程设计 搭建博客
安装包Github地址 Python综合设计 233博客 注意还有个email文件是需要填入自己信息的,比如最高权限账号和要发送邮件的账号密码 请安装Python2.7环境,本服务器所用环境为 设置环 ...
随机推荐
- python之----------字符编码具体原理
1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编 ...
- dom作业
<body> <select size="7" style="width: 200px;" id="slt"> &l ...
- Fiddler过滤会话
Fiddler每次打开的时候都会打开十多个会话,期望只想抓取自己想要的请求. 1)User Filters:启用过滤器 2)在Filers面板中勾选"Use Filters", ...
- Oracle - 简单理解字符集
起因 今天使用SoapUI来模拟第三方的程序进行测试. 简单来说,流程是我们的程序从SoapUI里面获取数据,然后将数据插入数据库从数据库. SoapUI的脚本来自于第三方,里面包含当地的字符编码,当 ...
- Tomcat修改端口
当在服务器上运行报错说端口已占用的时候,需要修改Tomcat的端口,步骤如下: 一.找到Tomcat的安装目录 二.进入conf目录,找到server.xml文件,记事本打开 此时文件中有三个地方可以 ...
- Neo4J图库的基础介绍(二)-图库开发应用
JAX-RS是一个用于构建REST资源的Java API,可以使用JAX-RS注解装饰每一个扩展类,从而让服务器处理对应的http请求,附加注解可以用来控制请求和响应的格式,http头和URI模板的格 ...
- ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍
在上一章中,我们介绍了 ASP.NET Core 的启动过程,主要是对 WebHost 源码的探索.而本文则是对上文的一个补充,更加偏向于实战,详细的介绍一下我们在实际开发中需要对 Hosting 做 ...
- Akka(20): Stream:压力缓冲-Batching backpressure and buffering
akka-stream原则上是一种推式(push-model)的数据流.push-model和pull-model的区别在于它们解决问题倾向性:push模式面向高效的数据流下游(fast-downst ...
- 推广技巧:新站要如何推广引流做到日IP10000?
一.回复高人气帖子插楼推广 1.找高人气的帖子在二楼或者二楼楼层中直接插入链接推广.虽然这种方法存活率比较低,但也算是贴吧里面最直接的有效的方法.一般我们分为三种: 1.1图中链接是一个短网址,这个是 ...
- Java - 9个处理异常的最佳准则
其实工作这么久了一直都没搞清楚到底如何来处理异常,偶然看到一篇外文感觉还不错,便把它翻译了下来,原文链接位于本文末尾处. 在java中处理异常并不是一件简单的事,不止初学者觉得它难以理解甚至连有经验的 ...