- 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可以正常插入数据,完成了实验目标。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)