Java语言程序设计实践-运动会比赛系统

Java语言程序设计实践-运动会比赛系统,第1张

Java语言程序设计实践-运动会比赛系统

文章目录
    • Java语言程序设计实践-运动会比赛系统(个人部分)
  • 一、 实验目的
  • 二、 实验内容
  • 三、 分析与设计
  • 四、 代码设计
  • 五、 运行结果
  • 六、 结果分析与结论


Java语言程序设计实践-运动会比赛系统(个人部分) 一、 实验目的

通过本次程序设计,掌握Java面向对象程序设计方法;掌握Java程序设计过程中数据库设计以及与后台数据库进行交互的方法。

二、 实验内容

运用Java语言和mysql技术,实现运动会比赛系统中两个重要功能。

  1. 学生成绩查询功能:按照学号查询该学生参与的所有比赛的成绩。
  2. 插入数据功能:录入比赛成绩。
三、 分析与设计
  1. 学生成绩查询功能中,只需要输入学号。构建一个单输入框和按钮的窗口,添加tabledata控件显示查询结果,加载驱动推送sql语句即可(select * from 参与 where 学号=?)。
  2. 插入数据功能中,需要输入三个值,构建一个三输入框单按钮的窗口,加载驱动推送sql语句即可(insert into 参与(学号,项目号,成绩) values (?,?,?))。
四、 代码设计
package function1;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

class DbUtil {
	private String url="jdbc:mysql://localhost:3306/javadb?serverTimezone=UTC&characterEncoding=utf-8";
	private String name="root";
	private String pass="0000";
	private String jdbcName="com.mysql.jdbc.Driver";
	public Connection getCon() throws Exception{

	Class.forName(jdbcName); //加载驱动
	Connection con=DriverManager.getConnection(url,name,pass); //创立连接
	return con;
	}}

class StuDao{
	public ResultSet show(Connection con,int num) throws Exception{
		String sql="select * from 参与 where 学号=?";
		PreparedStatement pstmt=con.prepareStatement(sql); //设置通道
		pstmt.setLong(1, num);
		return pstmt.executeQuery();
}}

public class StudentShow extends Jframe implements ActionListener{
	JLabel classTxt;
	JTextField classesTxt;
	JButton selectBtn;
	JTable students;
	JPanel panel;
	String []headers= {"学号","项目号","成绩"}; //结果集显示
	Object [][] tabledata;
	public StudentShow(String s) {
		super(s);
		classTxt=new JLabel("学号:");
		classesTxt=new JTextField(10);
		selectBtn=new JButton("查找");
		panel=new JPanel();
		panel.add(classTxt);panel.add(classesTxt);panel.add(selectBtn); //把组件添加到面板
		students=new JTable();
		setBounds(100,100,300,300);
		add(panel,BorderLayout.NORTH);
		selectBtn.addActionListener(this); //按钮添加监听器
		setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		String num=classesTxt.getText(); //从文本框获取文字
		int numInt = Integer.parseInt(num); //强制转换为int类型
		Connection con=null;
		DbUtil dbutil=new DbUtil();
		StuDao studao=new StuDao();
		ResultSet rs=null;
		tabledata=new Object[9][3];
	
		try {
			con=dbutil.getCon();
			rs=studao.show(con, numInt);
			int row=0;
			while(rs.next()) { //给表赋值
				tabledata[row][0]=rs.getInt(1);
				tabledata[row][1]=rs.getInt(2);
				tabledata[row][2]=rs.getInt(3);
				row++;
			}
			students=new JTable(tabledata,headers);
			add(new JScrollPane(students),BorderLayout.CENTER);
			
		} catch (Exception e1) {
			System.out.println("数据库连接失败");
		}}
		public static void main(String[] args) {
			new StudentShow("输入学号查询成绩");
		}
}

package function2;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;

class DbUtil {
	private String url="jdbc:mysql://localhost:3306/javadb?serverTimezone=UTC&characterEncoding=utf-8";
	private String name="root";
	private String pass="0000";
	private String jdbcName="com.mysql.jdbc.Driver";
	public Connection getCon() throws Exception{
	Class.forName(jdbcName); //加载驱动
	Connection con=DriverManager.getConnection(url,name,pass); //创立连接
	return con;
	}	
}

class StuDao{
	public void show(Connection con,int num1,int num2,int num3) throws Exception{ //ResultSet
	String sql="INSERT INTO 参与(学号,项目号,成绩) VALUES (?,?,?)";
	PreparedStatement pstmt=con.prepareStatement(sql); //设置通道
	pstmt.setInt(1, num1); //按顺序添加
	pstmt.setInt(2, num2);
	pstmt.setInt(3, num3);
	pstmt.executeUpdate(); //执行更新(可返回bool)
}}
public class Insert extends Jframe implements ActionListener{
	JLabel classTxt1;
	JTextField classesTxt1;
	JLabel classTxt2;
	JTextField classesTxt2;
	JLabel classTxt3;
	JTextField classesTxt3;
	JButton selectBtn;
	JTable students;
	JPanel panel;
	public Insert(String s) {
		super(s);
		classTxt1=new JLabel("学号:");
		classesTxt1=new JTextField(10);
		classTxt2=new JLabel("项目号:");
		classesTxt2=new JTextField(10);
		classTxt3=new JLabel("成绩:");
		classesTxt3=new JTextField(10);
		selectBtn=new JButton("确定添加");
		panel=new JPanel();
		panel.add(classTxt1);panel.add(classesTxt1); //把组件添加到面板
		panel.add(classTxt2);panel.add(classesTxt2);
		panel.add(classTxt3);panel.add(classesTxt3);
		panel.add(selectBtn);
		students=new JTable();
		setBounds(100,100,300,300);
		add(panel,BorderLayout.NORTH);
		selectBtn.addActionListener(this); //按钮添加监听器
		setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		String num1=classesTxt1.getText(); //从文本框获取文字
		String num2=classesTxt2.getText();
		String num3=classesTxt3.getText();
		int numInt1 = Integer.parseInt(num1); //强制转换为int类型
		int numInt2 = Integer.parseInt(num2);
		int numInt3 = Integer.parseInt(num3);
		Connection con=null;
		DbUtil dbutil=new DbUtil();  //连接数据库
		StuDao studao=new StuDao();  //执行sql语句
		try {
			con=dbutil.getCon();
			studao.show(con, numInt1,numInt2,numInt3);
		} catch (Exception e1) {
			System.out.println("数据库连接失败");
		}
		}
		public static void main(String[] args) {
			new Insert("添加比赛成绩");
		}}

五、 运行结果


六、 结果分析与结论

功能1能正确返回查询结果,功能2可以正常插入数据,完成了实验目标。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存