- Java语言程序设计实践-运动会比赛系统(个人部分)
- 一、 实验目的
- 二、 实验内容
- 三、 分析与设计
- 四、 代码设计
- 五、 运行结果
- 六、 结果分析与结论
Java语言程序设计实践-运动会比赛系统(个人部分) 一、 实验目的
通过本次程序设计,掌握Java面向对象程序设计方法;掌握Java程序设计过程中数据库设计以及与后台数据库进行交互的方法。
二、 实验内容运用Java语言和mysql技术,实现运动会比赛系统中两个重要功能。
- 学生成绩查询功能:按照学号查询该学生参与的所有比赛的成绩。
- 插入数据功能:录入比赛成绩。
- 学生成绩查询功能中,只需要输入学号。构建一个单输入框和按钮的窗口,添加tabledata控件显示查询结果,加载驱动推送sql语句即可(select * from 参与 where 学号=?)。
- 插入数据功能中,需要输入三个值,构建一个三输入框单按钮的窗口,加载驱动推送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可以正常插入数据,完成了实验目标。



