基于JAVA的学生成绩管理系统源代码 - 图文

更新时间:2024-01-16 21:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java程序设计 1 Java程序设计

系 专 业 班 级 学 号 姓 名 题 目 任课教师

08级嵌入式系统实验班 26号 赵黎明 学生成绩管理系统 彭洁

Java程序设计 2 一、课程设计要求:

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程序的实际意义:

本《学生成绩管理系统》具有对学生成绩进行管理的功能。并于数据库相连接,能够对

学生的成绩、姓名、出生日期进行查询、添加和删除等,简捷方便,容易使用。

Java程序设计 3 三、程序代码及运行效果:

3.1.1 主类代码:

/*主类代码*/

import javax.swing.*; import java.awt.*;

import java.awt.event.*;

class MyPanel extends JPanel{

Image img=Toolkit.getDefaultToolkit().getImage(\ 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);

Java程序设计 4 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月\软件信息\ 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 运行效果:

Java程序设计 5 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,\ getContentPane().add(pan4,\

Java程序设计 6 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(\ catch(ClassNotFoundException e){ }

try{con=DriverManager.getConnection(\ sql=con.createStatement();

rs=sql.executeQuery(\成绩表 where 姓名='\ if(rs.next()){

txtName.setText(rs.getString(\姓名\

txtScore.setText(new Integer(rs.getInt(\成绩\

txtDate.setText(rs.getDate(\出生日期\ 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(\成绩表 set 出生日期='\成绩=\姓名

Java程序设计 ='\

sql.executeUpdate(\成绩表 set 出生日期='\成绩=\姓名='\

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(); } }

7 3.2.2 运行效果:

Java程序设计 8 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,\ getContentPane().add(pan4,\ btnQuery.addActionListener(this); btnDelete.addActionListener(this);

Java程序设计 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(\ catch(ClassNotFoundException e){ }

try{con=DriverManager.getConnection(\ sql=con.createStatement();

rs=sql.executeQuery(\* from 成绩表 where ='\ if(rs.next()) {

txtName.setText(rs.getString(\姓名\ txtScore.setText(new Integer(rs.getInt(\成\

txtDate.setText(rs.getDate(\出生日期\ 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) //实现删除功能

9 姓名绩Java程序设计 10 {

try {

System.out.println(\ 成绩表 set 出生日期='\成绩=\where 姓名='\

sql.executeUpdate(\FROM 成绩表 where 姓名='\

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 运行效果:

Java程序设计 11 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,\ getContentPane().add(pan4,\ btnAdd.addActionListener(this); btnCancel.addActionListener(this);

Java程序设计 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(\ catch(ClassNotFoundException e){ }

try{con=DriverManager.getConnection(\ sql=con.createStatement(); 姓名=txtName.getText(); 出生日期=txtDate.getText();

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

recode=\姓名+\出生日期+\成绩+\

insert1=\成绩表 VALUES \ 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) {

12

Java程序设计 }

new AddForm(); }

13 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;

Java程序设计 14 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,\ getContentPane().add(pan4,\ 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(\ catch(ClassNotFoundException e){ }

try{con=DriverManager.getConnection(\ sql=con.createStatement();

rs=sql.executeQuery(\成绩表 where 姓名='\ if(rs.next()){

txtName.setText(rs.getString(\姓名\

txtScore.setText(new Integer(rs.getInt(\成绩\

txtDate.setText(rs.getDate(\出生日期\ }else{

System.out.println(\不存在该记录! \

Java程序设计 txtName.setText(\ txtScore.setText(\ txtDate.setText(\ txtName.requestFocus(); }

}catch(SQLException e){ } } }

public static void main(String[] args) { new NameQueryForm(); } }

15 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();

Java程序设计 16 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,\//把面板1放到窗口顶部 pan2.setLayout(new BorderLayout());

pan2.add(head,\ //将表头放在面板2的顶部 pan2.add(jsp,\ //表格放在pan2中间

getContentPane().add(pan2,\把面板2整体加入到主窗口中 btnQuery.addActionListener(this); //增加查询按钮的监视器 setVisible(true); }

public void actionPerformed(ActionEvent ae){ if(ae.getSource()==btnQuery){ int i,j,row; try{

Class.forName(\ catch(ClassNotFoundException e){ }

try{ con=DriverManager.getConnection(\ sql=con.createStatement();

rs=sql.executeQuery(\成绩表 where 成绩=\寻找相同成绩的行数 rs.next(); //去掉头 row=rs.getInt(\ rs.close();

data=new Object[row][3];

rs=sql.executeQuery(\成绩表 where 成绩=\ i=0;j=0;

while(rs.next()){

data[i][j++]=rs.getString(\姓名\

Java程序设计 17 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,\ pan2.add(jsp,\

getContentPane().add(pan2,\ this.validate(); con.close();

}catch(SQLException e){ } } }

public static void main(String[] args) { new ScoreQueryForm(); } }

3.6.2 运行效果:

Java程序设计 18 四、总结:

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

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

本文来源:https://www.bwwdw.com/article/2tfo.html

Top