完整代码加实验报告都在https://download.csdn.net/download/qq_39980334/11232331
我已经设置成0积分下载了,有需要的自行下载,有问题的多看看代码和实验报告,我已经记不太清里面的代码的详细细节了。
歌手比赛系统
对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。2、显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询 5)追加学生数据 6)写入数据文件7)退出系统。
这学期的大作业,要求必须用gui界面和数据库,第一次写CSDN,第一次在网上发表文章,有些忐忑呢
由于老师讲得比较快加上自己平时练得不够,对我来说完全是从0开始,从页面布局等等,从网上看了一些代码以及看书,现在只做出来了基本的界面,数据库还没连上。
主界面中间留的空间是想插入一个表格,数据都在表格中,按了成绩排序时就会按照成绩从高到低排序,当添加了数据时可以在表格中看到
代码:
public class SingerManage extends JFrame implements ActionListener{
JPanel jp1, jp2,jp3;
JLabel jl1,jl2;
JButton jb1, jb2, jb3, jb4,jb5,jb6;
JTable jt = null;
JScrollPane jsp = null;
JTextField jtf;
JTable jt2 = null;
JScrollPane jsp2 = null;
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);
//jt = new JTable(singer);
jsp = new JScrollPane(jt);
this.add(jsp);
this.add(jp1, "North");
this.add(jp2, "South");
this.add(jp3,"Center");
this.setTitle("歌手管理系统");
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
setSize(500,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()=="数据查询"){
/*singer=new SingerModel();
jt.setModel(singer);*/
}else if(e.getSource()==jb3){
SingerAdd add=new SingerAdd();
}else if(e.getSource()==jb5){
Judge jud=new Judge();
}else if(e.getSource()=="成绩排序"){
}else if(e.getSource()=="写入数据文件"){
}else if(e.getSource()=="退出系统"){
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SingerManage demo = new SingerManage();
}
按了评委评分之后:
在这里的界面设计是碰到了一些问题,因为BorderLayout布局只有东、西、南、北、中五种布局,无法同时出现三列。后来看了一些文章,改成了用JPanel的嵌套组织组件,在JFrame中的ContenPane对象,可以使用Container类的getContenPane()方法。
代码:
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;
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();//获得放置组件的容器对象
//contentPane.setLayout(new GridLayout(1,2));
@SuppressWarnings("deprecation")
public Judge(){
jl1 = new JLabel("请输入选手姓名");
jl2 = new JLabel("请输入选手编号");
jl3=new JLabel("请十个评委评分");
jb2=new JButton("得分");
jb2.addActionListener(this);
jf1 = new JTextField(10);
jf2 = new JTextField(10);
jf3 = new JTextField(10);
jf4=new JTextField(10);
//jf4.setEditable(false);
jb1 = new JButton("Random");
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);
jp3.add(jl3);
jp3.add(jf4);
jp3.add(jb1);
contentPane.setLayout(new GridLayout(2,1));//布局2行1列
jp1.setLayout(new GridLayout(3, 1));//面板布局3行1列
jp2.setLayout(new GridLayout(3, 1));//
jp3.setLayout(new GridLayout(3, 1));//
jp5.setLayout(new GridLayout(1, 1));//
jp5.add(jp1);//将面板1加入到面板5中
jp5.add(jp2);//
jp5.add(jp3);//
contentPane.add(jp5);//将面板5放入框架容器
jb1.addActionListener(this);
frame.pack();
frame.setTitle("评委评分");
frame.setSize(450,200);
frame.show();
}
public void actionPerformed(ActionEvent e) {
double n1=Double.parseDouble(jf1.getText());
if(e.getSource()==jb1){
}else if(e.getSource()==jb2){
jf4.setText(n1+"");
frame.show();
}
}
}
按了追加数据之后:
代码:
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);
}