视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于JAVA的学生成绩管理系统源代码-精品
2025-10-03 15:21:12 责编:小OO
文档
Java程序设计

专   业

班   级

08级嵌入式系统实验班

学   号

  26号

姓   名

  赵黎明

题   目

  学生成绩管理系统

任课教师

  彭洁

 

一、课程设计要求:

1、用到书上(课本或实验册)上的至少三个实例;

2、用到至少两种布局和至少四种组件;

3、用到对话框;

4、用到对数据库的查询、删除、添加和修改;

5、最好用到输入输出流;

6、具有一定的实际意义。

二、用到的实例及实际意义:

2.1 程序所用到的实例:

1、《Java2使用教程》第10章例题10.12   P282;

2、《Java2使用教程》第11章例题11.8    P323;

3、《Java2使用教程》第15章所有例题均有使用作参考  P391-411;

4、在其他参考书和网上也有用到相关程序和代码,并有所参考和借鉴。

2.2程序的实际意义:

   本《学生成绩管理系统》具有对学生成绩进行管理的功能。并于数据库相连接,能够对学生的成绩、姓名、出生日期进行查询、添加和删除等,简捷方便,容易使用。

三、程序代码及运行效果:

3.1.1 主类代码:

/*主类代码*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class MyPanel extends JPanel{

    public void paint(Graphics g){

        g.drawImage(img,0,0,this);

    }

}

public class MainForm extends JFrame implements ActionListener

{

    JMenu mSystem=new JMenu("系统");

    JMenuItem mExit=new JMenuItem("退出");

    JMenu mOperate=new JMenu("数据操作");

    JMenuItem mAdd=new JMenuItem("添加");

    JMenuItem mDel=new JMenuItem("删除");

    JMenuItem mModify=new JMenuItem("修改");

    JMenu mQuery=new JMenu("查询");

    JMenuItem mName=new JMenuItem("按姓名查询");

    JMenuItem mScore=new JMenuItem("按成绩查询");

    JMenu mHelp=new JMenu("帮助");

    JMenuItem mAbout=new JMenuItem("软件信息");

    JMenuBar mBar=new JMenuBar();

    MainForm()

    {

        super("学生成绩管理系统");

        setSize(875,583);

        mSystem.add(mExit);

        mOperate.add(mAdd);

        mOperate.add(mDel);

        mOperate.add(mModify);

        mQuery.add(mName);

        mQuery.add(mScore);

        mHelp.add(mAbout);

        mBar.add(mSystem);

        mBar.add(mOperate);

        mBar.add(mQuery);

        mBar.add(mHelp);

        setJMenuBar(mBar);

        mExit.addActionListener(this);

        mAdd.addActionListener(this);

        mDel.addActionListener(this);

        mModify.addActionListener(this);

        mName.addActionListener(this);

        mScore.addActionListener(this);

        mAbout.addActionListener(this);

        setContentPane(new MyPanel());

        setVisible(true);

    }

    public void actionPerformed(ActionEvent ae){

        if(ae.getSource()==mExit)

            System.exit(0);

        else if(ae.getSource()==mAbout)

            JOptionPane.showMessageDialog(this,"学生成绩管理系统\n\\n应用科学学院\n\\n2011年4月软件信息",JOptionPane.INFORMATION_MESSAGE);

        else if(ae.getSource()==mAdd)

            new AddForm().setVisible(true);

         else if(ae.getSource()==mDel)

            new DeleteForm().setVisible(true);

          else if(ae.getSource()==mModify)

           new ModifyForm().setVisible(true);

         else if(ae.getSource()==mName)

           new NameQueryForm().setVisible(true);

         else if(ae.getSource()==mScore)

           new ScoreQueryForm().setVisible(true);

    }

    public static void main(String[] args) {

        new MainForm();

    }

}

3.1.2 运行效果:

3.2.1 修改数据:

/*修改数据*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class ModifyForm extends JFrame implements ActionListener

{

    JLabel labName=new JLabel("姓名:");

    JLabel labDate=new JLabel("出生日期:");

    JLabel labScore=new JLabel("成绩:");

    JTextField txtName=new JTextField(20);

    JTextField txtDate=new JTextField(18);

    JTextField txtScore=new JTextField(20);

    JButton btnModify=new JButton("修改");

    JButton btnCancel=new JButton("取消");

    JButton btnQuery=new JButton("查询");

    JPanel pan=new JPanel();

    JPanel pan1=new JPanel();

    JPanel pan2=new JPanel();

    JPanel pan3=new JPanel();

    JPanel pan4=new JPanel();

    Connection con;

    Statement sql;

    ResultSet rs;

    ModifyForm()

    {

        super("修改数据");

        setSize(400,300);

        pan1.add(labName);

        pan1.add(txtName);

        pan2.add(labDate);

        pan2.add(txtDate);

        pan3.add(labScore);

        pan3.add(txtScore);

        pan4.add(btnQuery);

        pan4.add(btnModify);

        pan4.add(btnCancel);

        pan.setLayout(new GridLayout(3,1));

        pan.add(pan1);

        pan.add(pan2);

        pan.add(pan3);

        getContentPane().add(pan,"Center");

        getContentPane().add(pan4,"South");

        btnQuery.addActionListener(this);

        btnModify.addActionListener(this);

        btnCancel.addActionListener(this);

        btnModify.setEnabled(false);

        txtDate.setEditable(false);

        txtScore.setEditable(false);

        setVisible(true);

        txtName.requestFocus();

    }

    public void actionPerformed(ActionEvent ae){

        if(ae.getSource()==btnCancel){

               dispose();

        } else if(ae.getSource()==btnQuery){

            try{

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

            catch(ClassNotFoundException e){   

            }

             try{con=DriverManager.getConnection("jdbc:odbc:sun

                sql=con.createStatement();

                rs=sql.executeQuery("select * from 成绩表 where 姓名='"+txtName.getText()+"'");

                if(rs.next()){

                    txtName.setText(rs.getString("姓名"));

                    txtScore.setText(new Integer(rs.getInt("成绩")).toString());

                    txtDate.setText(rs.getDate("出生日期").toString());

                    btnModify.setEnabled(true);

                    txtDate.setEditable(true);

                    txtScore.setEditable(true);

                }else{

                    System.out.println("不存在该记录! ");

                    btnModify.setEnabled(false);

                    txtName.setText("");

                    txtScore.setText("");

                    txtDate.setText("");

                    txtDate.setEditable(false);

                    txtScore.setEditable(false);

                }

            }catch(SQLException e){

            }

        }else if(ae.getSource()==btnModify){

            try{

                System.out.println("Update  成绩表 set 出生日期='"+txtDate.getText()+"',成绩="+txtScore.getText()+" where 姓名='"+txtName.getText()+"'");

                sql.executeUpdate("Update  成绩表 set 出生日期='"+txtDate.getText()+"',成绩="+txtScore.getText()+" where 姓名='"+txtName.getText()+"'");

                System.out.println("记录修改完毕!");

                btnModify.setEnabled(false);

                txtName.setText("");

                txtScore.setText("");

                txtDate.setText("");

                txtDate.setEditable(false);

                txtScore.setEditable(false);

                con.close();

            }catch(SQLException e){

            }

        }

    }

    public static void main(String[] args) {

        new ModifyForm();

    }

}

3.2.2 运行效果:

3.3.1 删除数据:

/*删除数据*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class DeleteForm extends JFrame implements ActionListener

{

    JLabel labName=new JLabel("姓名:");

    JLabel labDate=new JLabel("出生日期:");

    JLabel labScore=new JLabel("成绩:");

    JTextField txtName=new JTextField(20);

    JTextField txtDate=new JTextField(18);

    JTextField txtScore=new JTextField(20);

    JButton btnDelete=new JButton("删除");

    JButton btnCancel=new JButton("取消");

    JButton btnQuery=new JButton("查询");

    JPanel pan=new JPanel();

    JPanel pan1=new JPanel();

    JPanel pan2=new JPanel();

    JPanel pan3=new JPanel();

    JPanel pan4=new JPanel();

    Connection con;

    Statement sql;

    ResultSet rs;

    DeleteForm()

    {

        super("删除数据");

        setSize(400,300);

        pan1.add(labName);

        pan1.add(txtName);

        pan2.add(labDate);

        pan2.add(txtDate);

        pan3.add(labScore);

        pan3.add(txtScore);

        pan4.add(btnQuery);

        pan4.add(btnDelete);

        pan4.add(btnCancel);

        pan.setLayout(new GridLayout(3,1));

        pan.add(pan1);

        pan.add(pan2);

        pan.add(pan3);

        getContentPane().add(pan,"Center");

        getContentPane().add(pan4,"South");

        btnQuery.addActionListener(this);

        btnDelete.addActionListener(this);

        btnCancel.addActionListener(this);

        btnDelete.setEnabled(false);//取消删除按钮的功能

        txtDate.setEditable(false);

        txtScore.setEditable(false);

        setVisible(true);

        txtName.requestFocus();

    }

    public void actionPerformed(ActionEvent ae)

    {

        if(ae.getSource()==btnCancel)

        {

            dispose();

        } 

        else if(ae.getSource()==btnQuery){        //实现查询功能

            try

            {

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

            catch(ClassNotFoundException e){   

            }

               try{con=DriverManager.getConnection("jdbc:odbc:sun

                sql=con.createStatement();

                rs=sql.executeQuery("select * from 成绩表 where 姓名='"+txtName.getText()+"'");

                if(rs.next())

                {

                    txtName.setText(rs.getString("姓名"));

                    txtScore.setText(new Integer(rs.getInt("成绩")).toString());

                    txtDate.setText(rs.getDate("出生日期").toString());

                    btnDelete.setEnabled(true);//使删除按钮功能实现

                    txtDate.setEditable(true);

                    txtScore.setEditable(true);

                }else{

                    System.out.println("不存在该记录!");

                    btnDelete.setEnabled(false);

                    txtName.setText("");

                    txtScore.setText("");

                    txtDate.setText("");

                    txtDate.setEditable(false);

                    txtScore.setEditable(false);

                }

            }catch(SQLException e){

            }

        }

                else if(ae.getSource()==btnDelete)        //实现删除功能

                {

                    try

                    {

                        System.out.println("Update  成绩表 set 出生日期='"+txtDate.getText()+"',成绩="+txtScore.getText()+" where 姓名='"+txtName.getText()+"'");

                        sql.executeUpdate("DELETE FROM  成绩表  where 姓名='"+txtName.getText()+"'");

                        System.out.println("记录删除完毕!");

                        btnDelete.setEnabled(false);

                        txtName.setText("");

                        txtScore.setText("");

                        txtDate.setText("");

                        txtDate.setEditable(false);

                        txtScore.setEditable(false);

                        con.close();

                    }

                    catch(SQLException e){

                    }

                }

        }

            public static void main(String[] args) 

            {

                new DeleteForm();

            }

}

3.3.2 运行效果:

3.4.1 添加数据:

/*添加数据*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class AddForm extends JFrame implements ActionListener

{

    JLabel labName=new JLabel("姓名:");

    JLabel labDate=new JLabel("出生日期:");

    JLabel labScore=new JLabel("成绩:");

    JTextField txtName=new JTextField(20);

    JTextField txtDate=new JTextField(18);

    JTextField txtScore=new JTextField(20);

    JButton btnAdd=new JButton("添加");

    JButton btnCancel=new JButton("取消");

    JPanel pan=new JPanel();

    JPanel pan1=new JPanel();

    JPanel pan2=new JPanel();

    JPanel pan3=new JPanel();

    JPanel pan4=new JPanel();

    Connection con;

    Statement sql;

    ResultSet rs;  

    AddForm()

    {

        super("添加数据");

        setSize(400,300);

        pan1.add(labName);

        pan1.add(txtName);

        pan2.add(labDate);

        pan2.add(txtDate);

        pan3.add(labScore);

        pan3.add(txtScore);

        pan4.add(btnAdd);

        pan4.add(btnCancel);

        pan.setLayout(new GridLayout(3,1));

        pan.add(pan1);

        pan.add(pan2);

        pan.add(pan3);

        getContentPane().add(pan,"Center");

        getContentPane().add(pan4,"South");

        btnAdd.addActionListener(this);

        btnCancel.addActionListener(this);

        btnAdd.setEnabled(true);

        txtDate.setEditable(true);

        txtScore.setEditable(true);

        setVisible(true);

        txtName.requestFocus();

    }

    public void actionPerformed(ActionEvent ae)

    {

        String recode,insert1,出生日期,姓名;

        int 成绩;

        if(ae.getSource()==btnCancel)

        {

            this.dispose();

        } 

        else if(ae.getSource()==btnAdd)

                {

                    try

                    {

                        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

                        catch(ClassNotFoundException e){   

                        }

                        try{con=DriverManager.getConnection("jdbc:odbc:sun

                        sql=con.createStatement();

                        姓名=txtName.getText();

                        出生日期=txtDate.getText();

                        成绩=Integer.parseInt(txtScore.getText());

                        recode="("+"'"+姓名+"'"+出生日期+""+"',"+成绩+")";

                        insert1="INSERT INTO 成绩表 VALUES "+recode;

                        sql.executeUpdate(insert1);

                        System.out.println("记录添加完毕!");

                        btnAdd.setEnabled(false);

                        txtName.setText("");

                        txtScore.setText("");

                        txtDate.setText("");

                        con.close();

                    }

                        catch(SQLException e){

                        }

                }

        }

            public static void main(String[] args) 

            {

                new AddForm();

            }

}

3.4.2 运行效果:

3.5.1 按姓名查询数据:

/*按姓名查询数据*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class NameQueryForm extends JFrame implements ActionListener

{

    JLabel labName=new JLabel("姓名:");

    JLabel labDate=new JLabel("出生日期:");

    JLabel labScore=new JLabel("成绩:");

    JTextField txtName=new JTextField(20);

    JTextField txtDate=new JTextField(18);

    JTextField txtScore=new JTextField(20);

    JButton btnCancel=new JButton("取消");

    JButton btnQuery=new JButton("查询");

    JPanel pan=new JPanel();

    JPanel pan1=new JPanel();

    JPanel pan2=new JPanel();

    JPanel pan3=new JPanel();

    JPanel pan4=new JPanel();

    Connection con;

    Statement sql;

    ResultSet rs; 

    NameQueryForm()

    {

        super("按姓名查询");

        setSize(400,300);

        pan1.add(labName);

        pan1.add(txtName);

        pan2.add(labDate);

        pan2.add(txtDate);

        pan3.add(labScore);

        pan3.add(txtScore);

        pan4.add(btnQuery);

        pan4.add(btnCancel);

        pan.setLayout(new GridLayout(3,1));

        pan.add(pan1);

        pan.add(pan2);

        pan.add(pan3);

        getContentPane().add(pan,"Center");

        getContentPane().add(pan4,"South");

        btnQuery.addActionListener(this);

        btnCancel.addActionListener(this);

        txtDate.setEditable(false);

        txtScore.setEditable(false);

        setVisible(true);

        txtName.requestFocus();       

    }

    public void actionPerformed(ActionEvent ae){

        if(ae.getSource()==btnCancel){

               dispose();

        } else if(ae.getSource()==btnQuery){

            try{

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

            catch(ClassNotFoundException e){   

            }

            try{con=DriverManager.getConnection("jdbc:odbc:sun

                sql=con.createStatement();

                rs=sql.executeQuery("select * from 成绩表 where 姓名='"+txtName.getText()+"'");

                if(rs.next()){

                    txtName.setText(rs.getString("姓名"));

                    txtScore.setText(new Integer(rs.getInt("成绩")).toString());

                    txtDate.setText(rs.getDate("出生日期").toString());

                }else{

                    System.out.println("不存在该记录! ");

                    txtName.setText("");

                    txtScore.setText("");

                    txtDate.setText("");

                    txtName.requestFocus();

                }

            }catch(SQLException e){

            }

        }

    }    

    public static void main(String[] args) {

        new NameQueryForm();

    }

}

3.5.2 运行效果:

3.6.1 按成绩查询数据:

/*按成绩查询数据*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.JTableHeader;

public class ScoreQueryForm extends JFrame implements ActionListener

{

    JLabel labScore=new JLabel("请输入成绩:");

    JTextField txtScore=new JTextField(10);

    JButton btnQuery=new JButton("查询");

    JPanel pan1=new JPanel();

    JPanel pan2=new JPanel();

    String []str={"姓名出生日期成绩"};

    Object[][] data=new Object[10][3];

    JTable table=new JTable(data,str);

    JTableHeader head=table.getTableHeader();

    JScrollPane jsp=new JScrollPane(table);        //滚动

    Connection con;

    Statement sql;

    ResultSet rs;

    ScoreQueryForm()

    {

        super("按成绩查询");

        setSize(400,300);

        pan1.add(labScore);

        pan1.add(txtScore);

        pan1.add(btnQuery);                        //以上3条在第一个面板加入内容

        getContentPane().add(pan1,"North");        //把面板1放到窗口顶部

        pan2.setLayout(new BorderLayout());

        pan2.add(head,"North");            //将表头放在面板2的顶部

        pan2.add(jsp,"Center");            //表格放在pan2中间

        getContentPane().add(pan2,"Center");//把面板2整体加入到主窗口中

        btnQuery.addActionListener(this);  //增加查询按钮的监视器

        setVisible(true);

    }

    public void actionPerformed(ActionEvent ae){

        if(ae.getSource()==btnQuery){

            int i,j,row;

            try{

                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}

            catch(ClassNotFoundException e){   

            }

            try{  con=DriverManager.getConnection("jdbc:odbc:sun

                sql=con.createStatement();

                rs=sql.executeQuery("select COUNT(*) as rowcount from 成绩表 where 成绩="+txtScore.getText());                   //寻找相同成绩的行数

                rs.next();                                        //去掉头

                row=rs.getInt("rowcount");                    

                rs.close();

                data=new Object[row][3];

                rs=sql.executeQuery("select * from 成绩表 where 成绩="+txtScore.getText());

                i=0;j=0;

                while(rs.next()){

                    data[i][j++]=rs.getString("姓名");

                    data[i][j++]=rs.getDate("出生日期");

                    data[i][j]=new Integer(rs.getInt("成绩"));//将数据库中查询到的信息保存到data中

                    i++;j=0;

                }

               pan2.removeAll();

               getContentPane().remove(pan2);

              table=new JTable(data,str);

                pan2.setLayout(new BorderLayout());

                head=table.getTableHeader();

                jsp=new JScrollPane(table);

                pan2.add(head,"North");

                pan2.add(jsp,"Center");

                getContentPane().add(pan2,"Center");

                this.validate();

                con.close();

            }catch(SQLException e){

            }

        }

    }

    public static void main(String[] args) {

        new ScoreQueryForm();

    }

}

3.6.2 运行效果:

四、总结:

通过本次课程设计,不仅让我更深入的了解JAVA这门学科,更使自己有了继续探索的兴趣。

对我来说,在之前的学习过程中没有能够很好的掌握JAVA语言的学习,在很多地方还有生疏和遗漏,并且在此次课程设计过程中也遇到困难不能自己解决。但是,通过这次程序设计,除了增加了自己的编程能力,提高了我对JAVA的应用能力,同时我也深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我将继续保持严谨的学习态度。与此同时,在同学的帮助下,让我体会到了相互学习的重要性,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。总之,此次课程设计让我获益匪浅。下载本文

显示全文
专题