java课程作业——学生信息管理系统(swing实现图形化界面)

news/2024/6/3 20:49:45 标签: eclipse, java

目录

功能:

效果图:

 项目结构:

一些细节:

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<Stu> findAll() {
        List<Stu> query = jdbcTemplate.query("select * from student",
                new BeanPropertyRowMapper<Stu>(Stu.class));
        return query;
    }

    @Override
    public List<Stu> findById(int id) {
        String sql="select * from student where id =?";
        List<Stu> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Stu.class), id);
        return query;
    }

    @Override
    public List<Stu> findByCourse(String course) {
        String sql="select * from student where course =?";
        List<Stu> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Stu.class), course);
        return query;
    }

    @Override
    public List<Stu> findByIdAndCourse(int id, String course) {
        String sql="select * from student where id =? and course =?";
        List<Stu> 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<String> findAllCourse() {
		String sql="SELECT DISTINCT course FROM student";
		List<String> all=jdbcTemplate.queryForList(sql, String.class);
		return all;
	}

	@Override
	public List<String> findAllClasses() {
		String sql="SELECT DISTINCT classes FROM student";
		List<String> all=jdbcTemplate.queryForList(sql, String.class);
		return all;
	}

	@Override
	public List<Stu> findAllStu() {
		String sql="SELECT  DISTINCT  * FROM student";
		 List<Stu> query = jdbcTemplate.query(sql,
	                new BeanPropertyRowMapper<Stu>(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);
		
	}

Gitee:

昨天刚刚学了git管理,就把这个放上去了,算是我的第一个完整项目吧。

java学生信息管理系统: 使用javaGUI实现的图形化java学生信息管理系统。 (gitee.com)

ps:前面刚刚学SSM,但是web的前端页面好乱,写出来的根本就乱七八糟的,就算后台实现了功能前端页面也是丑的一批。。要是web页面也有这样的设计工具就好了。 


http://www.niftyadmin.cn/n/513176.html

相关文章

js块元素和内联元素的种种恩怨

有人问过这样一个问题&#xff1a;为啥div不能放到p标签里面呢 只能说这是规定&#xff0c;哈哈 下面入主题 块级元素---h1,h2,h3,h4,h5,h6,hr,div,fieldset,form,dl,address,ol,p,table,ul,pre等常见 内联元素---a,b,br,em,i,img,input,strong,textarea,span,label等常见 …

Oracl Over函数

Oracl Over函数 简介 在介绍Over之前, 必须提到开窗函数, 与 聚 合函数一样, 开窗函数也是对行集组进行聚合计算, 但是它不像普通聚合函数那样每组只返回一个值, 开窗函数可以为每组返回多个值. 开窗函数用于为行定义一个窗口&#xff08;这里的窗口是指运算将要操作的行的集合…

智能语音转换文字——百度API

想实现一个功能——即通过语音转换为文字进行写博客(个人博客) 百度API很好提供了这个功能——语音技术 (baidu.com) 新用户有五万次的免费请求次数&#xff0c;使用也不难&#xff0c;申请成功之后区控制台添加应用即可看到对应三个码 复制好这三个码&#xff0c;后面有用。…

js读取json,纠结。。。

什么是json&#xff0c;先小抄一段&#xff1a; &#xfeff;&#xfeff;JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;采用完全独立于语言的文本格式&#xff0c; 是理想的数据交换格式&#xff0c;同时&#xff0c;JSON是 JavaScript 原生格式…

操作系统大作业——进程调度模拟系统

本系统采用时间片轮转以及优先级调度算法。 概述 时间片轮转调度算法 时间片轮转调度算法主要适用于分时系统。在这种算法中&#xff0c;系统将所有就绪进程按到达时间的先后次序排成一个队列&#xff0c;进程调度程序总是选择就绪队列中第一个进程执行&#xff0c;即先来先…

数字人民币上线红包新功能;高通开始人员优化;第一批AI绘画公司开始倒闭;网易云音乐加码声音社交;统计学课程(2023版);GitHub今日热榜 | ShowMeAI资讯日报

&#x1f3a1; 『数字人民币』上线新功能&#xff0c;你体验了吗&#xff1f; 2022年12月&#xff0c;数字人民币迎来一连串动作&#xff1a;试点范围扩大&#xff0c;数字人民币App能领取独一无二的个人头像、发放。数字人民币开展常态化试点已近3年&#xff0c;此次是其年内…

序列类型

一.定义 序列表示索引为非负整数的有序对象集合&#xff0c;包括字符串&#xff0c;列表和元组 字符串是字符的列表和元组是任意python对象的序列注意 &#xff1a; 字符和元组属于不可变序列&#xff0c;而列表则支持插入&#xff0c;删除和替换元素所有序列都支持迭代二.适合…

nodejs初学-----helloworld

最近紧锣密鼓的学习了下nodejs&#xff08;之前在学php&#xff0c;算入门了吧&#xff0c;但是时间关系&#xff0c;还没写文章&#xff0c;后续要搞安卓和大数据&#xff0c;总之比较忙哈&#xff0c;计划上php要排到后面了&#xff0c;还请广大小伙伴不要着急&#xff09; …