目录
功能:
效果图:
项目结构:
一些细节:
Gitee:
在学生成绩数据保存到数据库的提前下实现以下功能:
1) 学生成绩新增界面设计及功能实现
2) 学生成绩查询界面设计及功能实现、支持多条件查询
3) 学生成绩修改界面设计及功能实现
4) 学生成绩删除界面设计及功能实现
5)提供学生成绩批量导入和导出的功能(txt文件)
6) 可统计学生成绩信息,课程成绩信息
第一次用swing,网上swing的相关资料相对较少,边学边写算是写出来了.
界面主要是通过eclipse的插件:WindowBuilder完成的,用起来还算方便,但是细节还是要自己写代码,查查API或者百度就能搞定了。
在导入信息的时候需要注意格式:
如果格式错误程序就识别错误了。。。
导出信息的话只需要弄一个空的txt文件进行接收就好了。
如果导出成功就会变成绿色,反之红色。(导入也是一样)
存储方面用mysql,使用了JdbcTemplate。
dao层:
public class StuDaoImpl implements StuDao {
//注入JdbcTemplate
private JdbcTemplate jdbcTemplate=new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public void add(Stu stu) {
String sql="insert into student values(?,?,?,?,?)";
jdbcTemplate.update(sql,stu.getID(),stu.getName(),stu.getCourse(),stu.getClasses(),stu.getScore());
}
@Override
public void delete(int ID,String course) {
jdbcTemplate.update("DELETE FROM student WHERE id = ? AND course= ?",ID,course);
}
@Override
public void update(Stu stu) {
jdbcTemplate.update("UPDATE student SET NAME=?,course=?,classes=?,score=? WHERE id =?",
stu.getName(),stu.getCourse(),stu.getClasses(),stu.getScore(),stu.getID());
}
@Override
public List findAll() {
List query = jdbcTemplate.query("select * from student",
new BeanPropertyRowMapper(Stu.class));
return query;
}
@Override
public List findById(int id) {
String sql="select * from student where id =?";
List query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Stu.class), id);
return query;
}
@Override
public List findByCourse(String course) {
String sql="select * from student where course =?";
List query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Stu.class), course);
return query;
}
@Override
public List findByIdAndCourse(int id, String course) {
String sql="select * from student where id =? and course =?";
List query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Stu.class), id, course);
return query;
}
/*
业务需要根据行数查询,通过行数得到改行的数据
SELECT * FROM student LIMIT n-1,1
*/
@Override
public Stu findByRow(int row) {
String sql="SELECT * FROM student LIMIT ?,1";
Stu stu = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Stu.class), row );
return stu;
}
@Override
public List findAllCourse() {
String sql="SELECT DISTINCT course FROM student";
List all=jdbcTemplate.queryForList(sql, String.class);
return all;
}
@Override
public List findAllClasses() {
String sql="SELECT DISTINCT classes FROM student";
List all=jdbcTemplate.queryForList(sql, String.class);
return all;
}
@Override
public List findAllStu() {
String sql="SELECT DISTINCT * FROM student";
List query = jdbcTemplate.query(sql,
new BeanPropertyRowMapper(Stu.class));
return query;
}
public String findAvgCourse(String course) {
String sql="SELECT AVG(score) FROM student WHERE course =?";
String avg=jdbcTemplate.queryForObject(sql, String.class,course);
return avg;
}
@Override
public String findAvgPerson(int id) {
String sql="SELECT AVG(score) FROM student WHERE id = ?";
String avg=jdbcTemplate.queryForObject(sql, String.class,id);
return avg;
}
@Override
public String findSumPerson(int id) {
String sql="SELECT SUM(score) FROM student WHERE id=?";
String sum=jdbcTemplate.queryForObject(sql, String.class,id);
return sum;
}
// SELECT MAX(score) FROM student WHERE course ='音乐'
// SELECT MIN(score) FROM student WHERE course ='音乐'
//SELECT SUM(score) FROM student WHERE id=103
@Override
public String findMaxCourse(String course) {
String sql="SELECT MAX(score) FROM student WHERE course =?";
String max=jdbcTemplate.queryForObject(sql, String.class,course);
return max;
}
@Override
public String findMinCourse(String course) {
String sql="SELECT MIN(score) FROM student WHERE course =?";
String min=jdbcTemplate.queryForObject(sql, String.class,course);
return min;
}
}
放一个主页面的代码:
//初始化主页面
private void initialize() {
frame = new JFrame();
frame.getContentPane().setBackground(Color.BLACK);
frame.setTitle("主页面");
frame.setBounds(100, 100, 529, 717);
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 511, 82);
panel.setBackground(Color.BLACK);
frame.getContentPane().add(panel);
JButton button = new JButton("新增单个");
button.setForeground(Color.WHITE);
button.setBackground(Color.BLACK);
button.setFont(new Font("宋体", Font.PLAIN, 15));
button.setBounds(249, 28, 101, 41);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//添加按钮点击进入添加界面
new Add_Gui();
}
});
panel.setLayout(null);
JButton button_3 = new JButton("批量导出");
button_3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new DeriveTips();
}
});
button_3.setForeground(Color.WHITE);
button_3.setBackground(Color.BLACK);
button_3.setFont(new Font("宋体", Font.PLAIN, 15));
button_3.setBounds(37, 28, 101, 41);
panel.add(button_3);
JButton button_1 = new JButton("批量导入");
button_1.setForeground(Color.WHITE);
button_1.setBackground(Color.BLACK);
button_1.setFont(new Font("宋体", Font.PLAIN, 15));
button_1.setBounds(146, 28, 97, 41);
button_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
new ImportTips();
}
});
panel.add(button_1);
panel.add(button);
JButton button_2 = new JButton("查询/修改");
button_2.setForeground(Color.WHITE);
button_2.setBackground(Color.BLACK);
button_2.setFont(new Font("宋体", Font.PLAIN, 15));
button_2.setBounds(358, 28, 110, 41);
button_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//查询按钮点击进入查询界面
new Query_Gui();
}
});
panel.add(button_2);
JPanel panel_1 = new JPanel();
panel_1.setBounds(0, 95, 445, 575);
panel_1.setBackground(Color.BLACK);
frame.getContentPane().add(panel_1);
panel_1.setLayout(null);
JLabel label = new JLabel("");
label.setIcon(new ImageIcon(BdGrade.class.getResource("/img/4.jpg")));
label.setBounds(-118, -132, 657, 694);
panel_1.add(label);
}
昨天刚刚学了git管理,就把这个放上去了,算是我的第一个完整项目吧。
java学生信息管理系统: 使用javaGUI实现的图形化java学生信息管理系统。 (gitee.com)
ps:前面刚刚学SSM,但是web的前端页面好乱,写出来的根本就乱七八糟的,就算后台实现了功能前端页面也是丑的一批。。要是web页面也有这样的设计工具就好了。