1、 1 Java程序设计 系 专 业 班 级 08 级嵌入式系统实验班 学 号 26 号 姓 名 赵黎明 题 目 学生成绩管理系统 任课 教师 彭洁 2 一、课程设计要求: 1、用到书上(课本或实验册)上的至少三个实例 ; 2、用到至少两种布局和至少四种组件 ; 3、用到对话框 ; 4、用到对数据库的查询、删除、添加和修改 ; 5、最好用到输入输出流 ; 6、具有一定的实际意义 。 二、用到的实例及实际意义: 2.1 程序 所用到 的实例 : 1、 Java2 使用教程第 10 章例题 10.12 P282; 2、 Java2 使用教程第 11 章例题 11.8 P323; 3、 Java2 使
2、用教程第 15 章所有例题均有使用作参考 P391-411; 4、在其他参考书和网上也有用到相关程序和代码,并有所参考和借鉴。 2.2 程序的实际意义: 本学生成绩管理系统具有对学生成绩进行管理的功能。并于数据库相连接,能够对学生的成绩、姓名、出生日期进行查询、添加和删除等,简捷方便,容易使用。 3 三、程序代码 及运行效果: 3.1.1 主类代码: /*主类代码 */ import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyPanel extends JPanel Image img=Toolkit.
3、getDefaultToolkit().getImage(“c:/a.jpg“); 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(“添加
4、“); 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(); Main
5、Form() 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.addActionListen
6、er(this); mAdd.addActionListener(this); mDel.addActionListener(this); 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.ge
7、tSource()=mExit) System.exit(0); else if(ae.getSource()=mAbout) JOptionPane.showMessageDialog(this,“学生成绩管理系统 nn 应用科学学院 nn2011 年 4 月 “,“软件信息 “,JOptionPane.INFORMATION_MESSAGE); else if(ae.getSource()=mAdd) new AddForm().setVisible(true); else if(ae.getSource()=mDel) new DeleteForm().setVisible(true);
8、 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 运行效果 : 5 3.2.1 修改数据 : /*修改数据 */ imp
9、ort 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); JTextF
10、ield 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
11、=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(n
12、ew GridLayout(3,1); pan.add(pan1); pan.add(pan2); pan.add(pan3); getContentPane().add(pan,“Center“); getContentPane().add(pan4,“South“); 6 btnQuery.addActionListener(this); btnModify.addActionListener(this); btnCancel.addActionListener(this); btnModify.setEnabled(false); txtDate.setEditable(false);
13、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) trycon=DriverManager.getConne
14、ction(“jdbc:odbc:sun“,“gxy“,“123“); 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.
15、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
16、()=btnModify) try System.out.println(“Update 成绩表 set 出生日期=“+txtDate.getText()+“,成绩 =“+txtScore.getText()+“ where 姓名7 =“+txtName.getText()+“); sql.executeUpdate(“Update 成绩表 set 出生日期=“+txtDate.getText()+“,成绩 =“+txtScore.getText()+“ where 姓名=“+txtName.getText()+“); System.out.println(“记录修改完毕! “); btnMo
17、dify.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 运行效果 : 8 3.3.1 删除数据: /*删除数据 */ import javax.swing.*; import ja
18、va.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(
19、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 co
20、n; 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(
21、pan1); pan.add(pan2); pan.add(pan3); getContentPane().add(pan,“Center“); getContentPane().add(pan4,“South“); btnQuery.addActionListener(this); btnDelete.addActionListener(this); 9 btnCancel.addActionListener(this); btnDelete.setEnabled(false);/取消删除按钮的功能 txtDate.setEditable(false); txtScore.setEditab
22、le(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) trycon=DriverManager.getConnection(“jdb
23、c:odbc:sun“,“gxy“,“123“); 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.setEnab
24、led(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.getSour
25、ce()=btnDelete) /实现删除功能 10 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 运行效果 :