完整代码加实验报告都在https://download.csdn.net/download/qq_39980334/11232331
我已经设置成0积分下载了,有需要的自行下载,如果页面打不开可能还在审核中(2020.7.7设置的),有问题的多看看代码和实验报告,我已经记不太清里面的代码的详细细节了。
好久没更新了,现在的界面进行了更新,连接上了数据库,虽然连接数据库出了很大的问题,我的配置是eclipse 32位+JDK1.6+SQL2008R2 下载了jdbc3.0驱动程序但还是连接不成功,网上找了很多方法依然连不上,最后下了JDK1.7 问题就解决了,更换JDK的时候要新建一个项目才能更换成功.
连上数据库之后的界面:
依然还有一些功能没有实现,追加数据和评委评分基本上实现要求,添加的数据会插入数据库中,评委评分也会保存入数据库,但是没法在表格中刷新显示,只有下一次打开的时候才有刷新,这是需要改进的地方,还有排序功能,现在还在研究当中
我的数据库文件
评分界面
上代码:
主界面
package model1;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import utils.DBHandler;
public class SingerManage extends JFrame implements ActionListener{
JPanel jp1, jp2,jp3,p,jp4;
JLabel jl1,jl2;
JButton jb1, jb2, jb3, jb4,jb5,jb6;
JTable jt;
JScrollPane jsp = null;
JTextField jtf;
JTable jt2 ;
JScrollPane jsp2 ;
Connection conn = null;
PreparedStatement ps = null;
public SingerManage(){
jp1 = new JPanel();
jtf = new JTextField(10);
jb1 = new JButton("数据查询");
jb1.addActionListener(this);
jl2 = new JLabel("欢迎进入歌手管理系统!");
jp3=new JPanel();
jl1 = new JLabel("请输入选手编号:");
jp1.add(jl2);
jp3.add(jl1);
jp3.add(jtf);
jp3.add(jb1);
jp2 = new JPanel();
jb2 = new JButton("成绩排序");
jb2.addActionListener(this);
jb3 = new JButton("追加数据");
jb3.addActionListener(this);
jb4 = new JButton("写入数据文件");
jb4.addActionListener(this);
jb5 = new JButton("评委评分");
jb5.addActionListener(this);
jb6 = new JButton("退出系统");
jb6.addActionListener(this);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
jp2.add(jb6);
Singermodel singer=new Singermodel();
String[] columnNames={"姓名","编号","得分"};
jt = new JTable(singer.queryData(),columnNames);
jsp = new JScrollPane(jt);
jp2.setLayout(new GridLayout(5, 1));
this.add(jp1, "North");
this.add(jp2, "East");
this.add(jp3,"South");
this.add(jsp,"Center");
this.setTitle("歌手管理系统");
this.setSize(600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb1){ //数据查询
String n1=jtf.getText();
int n = Integer.valueOf(n1);
n = this.jt.getSelectedRow();
}else if(e.getSource()==jb3){ //追加数据
SingerAdd add=new SingerAdd();
Singermodel singer=new Singermodel();
jt = new JTable(singer);
}else if(e.getSource()==jb5){ //评委评分
Judge jud=new Judge();
}else if(e.getSource()==jb2){ // "成绩排序"
Suquence squ=new Suquence();
}else if(e.getSource()==jb4){ //"写入数据文件"
DBHandler sql=new DBHandler();
sql.queryAll();
System.out.print(sql);
}else if(e.getSource()==jb6){ //"退出系统"
System.exit(0);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SingerManage demo = new SingerManage();
}
}
添加类:
package model1;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import model3.Add;
import model3.SqlConnection;
public class SingerAdd extends JDialog implements ActionListener {
JPanel jp1,jp2,jp3;
JLabel jl1, jl2,jl3;
JButton jb1, jb2;
JTextField jf1, jf2,jf3;
public SingerAdd(){
jl1 = new JLabel("姓名");
jl2 = new JLabel("编号");
jl3 =new JLabel("得分");
jf1 = new JTextField();
jf2 = new JTextField();
jf3 = new JTextField();
jb1 = new JButton("添加");
jb2 = new JButton("取消");
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp1.setLayout(new GridLayout(4, 1));
jp2.setLayout(new GridLayout(4, 1));
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp2.add(jf1);
jp2.add(jf2);
jp2.add(jf3);
jp3.add(jb1);
jp3.add(jb2);
this.add(jp1, BorderLayout.WEST);
this.add(jp2, BorderLayout.CENTER);
this.add(jp3, BorderLayout.SOUTH);
jb1.addActionListener(this);
this.setTitle("追加数据");
this.setSize(300, 200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jb1){ //添加
int q;
SqlFunction sql=new SqlFunction();
q=sql.add(jf1.getText(),jf2.getText(),jf3.getText());
if(q==1)
JOptionPane.showMessageDialog(SingerAdd.this,"添加成功!");
else
JOptionPane.showMessageDialog(SingerAdd.this,"系统故障,请稍后在试!");
}
if(e.getSource()==jb2){ //取消
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
}
}
评分类:
package model1;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import model3.Score;
import model3.SqlConnection;
public class Judge extends JFrame implements ActionListener {
JPanel jp1,jp2,jp3,jp4,jp5;
JLabel jl1, jl2,jl3,jl4;
JButton jb1, jb2,jb3;
JTextField jf1, jf2,jf3,jf4;
JTextArea ja1;
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();//获得放置组件的容器对象
@SuppressWarnings("deprecation")
public Judge(){
jl1 = new JLabel("请输入选手姓名");
jl2 = new JLabel("请输入选手编号");
jl3=new JLabel("请十个评委评分");
jb2=new JButton("得分");
jb2.setBackground(Color.cyan);
jb2.addActionListener(this);
jf1 = new JTextField(10);
jf2 = new JTextField(10);
jf3 = new JTextField(10);
ja1=new JTextArea("",10,10);
jb1 = new JButton("Random");
jb1.addActionListener(this);
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp5= new JPanel();
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jb2);
jp2.add(jf3);
jp2.add(jf1);
jp2.add(jf2);
jp2.add(jb1);
jp3.add(jl3);
jp3.add(ja1);
contentPane.setLayout(new GridLayout(1,1));//布局2行1列
jp1.setLayout(new GridLayout(4, 1));//面板布局3行1列
jp2.setLayout(new GridLayout(4, 1));//
jp3.setLayout(new GridLayout(1, 1));//
jp5.setLayout(new GridLayout(2, 2));//
jp5.add(jp1);//将面板1放入面板5中
jp5.add(jp2);//
jp5.add(jp3);//
contentPane.add(jp5);//将面板5放入框架容器
frame.pack();
frame.setTitle("评委评分");
frame.setSize(400,400);
frame.show();
}
public void countSore(String s){
StringTokenizer tokens=new StringTokenizer(s);//使用默认的分隔符集合:空格、换行、Tab符合回车作分隔符
double sum=0;
int i;
List score=new ArrayList();
for(i=0;i<=9;i++){
String temp=tokens.nextToken();//从文本区取下一个数据
double n = Double.valueOf(temp);
sum+=n;
score.add(n);
}
double max=Collections.max(score);
double min=Collections.min(score);
sum=sum-max-min;
double sc=sum/8;
jf2.setText(""+sc);
}
public void random(){
int sum=0;
List list=new ArrayList();
for(int i=0;i<=9;i++){
int n=(int)(Math.random()*9+1);
sum+=n;
list.add(n);
}
int max=Collections.max(list);
int min=Collections.min(list);
sum=sum-max-min;
int sc=sum/8;
jf2.setText(""+sc);
}
public void actionPerformed(ActionEvent e) {
String name=jf3.getText();
String number=jf1.getText();
if(e.getSource()==jb2){ //得分
String s=ja1.getText();
countSore(s);
SqlFunction sql=new SqlFunction();
int j=sql.score(jl2.getText(),jf2.getText());
if(j==1)
JOptionPane.showMessageDialog(Judge.this,"评分成功!");
else if(j==3)
JOptionPane.showMessageDialog(Judge.this,"系统故障,请稍后在试!");
else
JOptionPane.showMessageDialog(Judge.this,"此歌手不存在!");
}else if(e.getSource()==jb1){ //随机
random();
SqlFunction sql=new SqlFunction();
int j=sql.score(jl2.getText(),jf2.getText());
if(j==1)
JOptionPane.showMessageDialog(Judge.this,"评分成功!");
else if(j==3)
JOptionPane.showMessageDialog(Judge.this,"系统故障,请稍后在试!");
else
JOptionPane.showMessageDialog(Judge.this,"此歌手不存在!");
}
}
数据库类:
package model1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class SqlFunction{
public Connection getConnection(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=massenge","lhx","1234567");
return con;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public void closeConnection(Connection connection){
if(connection!=null)
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public List<Singer> queryAll(){
List<Singer> siners=new ArrayList<Singer>();
Connection con=getConnection();
try{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from massenge");
while(rs.next()){
Singer s=new Singer();
s.setName(rs.getString("name"));
s.setId(rs.getString("id