一个简单的学生成绩管理信息系统(Java).pdf
Java语言程序设计 B报 告 班级: 192091-27 学号: 20091003757 姓名:罗斌 成绩: 2012年 1 月 一个简单的学生成绩管理信息系统 题目: 数据库要求: 1. 建立的数据库中包含如下信息:学生学号、姓名、班级,语文、数学、英语 成绩。 2. 至少要有 5个班级,每个班级要有10 名以上学生。 3. 使用.txt 格式文本表示各种表。 功能需求: 1. 能够实现根据以下关键字查询:学生姓名、学号、班级、课程名称。 2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。 3. 能够实现学生信息的插入、删除和修改。 4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。 5. 能够查询每个班级某门课程的优秀率(90分及以上)、 不及格率,并进行排序。 界面要求: 使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。 一、需求分析 1 、界面 符合日常软件使用规范,使用方便,外形简洁美观。 2 、功能需求 存储学生学号、姓名、班级,语文、数学、英语成绩等信息,实现数据库 的读取与存入,数据项的记录与修改,删除等。 二、设计思想 1、类设计 将添加数据、 查询数据、 删除数据、 修改数据四个功能分别为四个类来实现, 为了便于测试,每一个类都继承了主窗口类JFRAME,使得窗口可以独自运行。 INSERT类设计 功能组件 6个文本域、 6 个标签、 1 个按钮 功能实现添加数据 实现过程对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行 SQL的 INSERT 语句。 QUERY 类设计 功能组件 5个按钮、三个单行文本组件、1 个下拉框、 1 个多行文本 功能实现按学号查询、按姓名查询、按班级查询、按课程查询、显示全部 实现过程对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先 获取文本域中的信息, 根据对应查询的要求执行相应的SQL的 SELLECT 语句;按 课程查询通过在下来框中选择对应的选项,即查询相应的课程; 第五个查询按钮 将全部信息在多行文本框中输出。 MODIFY 类设计 功能组件 6个单行文本、 6 个标签、 1 个按钮 功能实现修改数据 实现过程与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域 中的信息,并执行 SQL的 UPDATE 语句;不同的是以学号为主键进行查找并更新。 DELETE 类设计 功能组件 1个单行文本、 1 个标签、 1 个按钮、 1 个多行文本 功能实现删除数据 实现过程与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域 中的学号信息,并执行SQL的 DELETE 语句;不同的是以学号为主键进行查找并 将删除信息输出到文本框中。 2、数据库设计 系统概念结构设计 系统逻辑结构设计 学生成绩信息表 字段名属性类型空值约束条件 学号ID 文本not null 主键 姓名name 文本从键 班级class 文本从简 语文Chinese 长整数 英语English 长整数 数学Maths 长整数 数据库截图 3、主界面设计 成绩查询系统 学号 姓名 班级 语文 数学 英语 MAINFRAME类设计 功能组件 4个按钮、 1 个背景、 2 个标签文本、 2 个面板 功能实现查询数据、添加数据、删除数据、修改数据 实现过程对按钮添加监控,共有4 个监控事件,实现按钮事件为创建对应 功能的类对象,出现相应的功能窗口。 三、运行截图 主界面 添加数据 查询数据 按学号查询 按姓名查询 按班级查询 按课程名称查询 显示所有信息 修改数据 删除数据 四、实验感想 通过此次课程设计我学会了很多知识,将Java课上遗漏的知识又进一步补 上。实践过程中遇到了很多困难, 比如没学过数据库, SQL 语句不熟, 对 eclipse 的使用很生疏等, 因此花费了很多时间在前期准备工作上。即使如此, 也有一些 功能尚未实现,例如查询优秀率、最高分和最低分等,虽然比较简单,但由于时 间问题还是没来得及做。 由于本次试验的很多知识都是现学现用,以致很多地方 的代码显得累赘繁琐。但总体上主要功能是实现了的,并且美化了一下主界面。 总之,此次课程设计让我获益匪浅,我将会继续把它完善做好。 五、源代码清单 MainFrame 类 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MainFrame extends JFrame JButton insert,query,delete,modify ; JPanel panel,panel1,panel2; public MainFrame() / TODO Auto-generated method stub ImageIcon img= new ImageIcon(“1.gif“ ); JLabel text1,text2,picture= new JLabel(img); JFrame frame=new JFrame(“学生成绩管理系统“); insert=new JButton(“添加数据 “); insert.setBackground(Color.green); insert.addActionListener( new insertActionPerformed(); query=new JButton(“查询数据 “); query.addActionListener( new queryActionPerformed(); query.setBackground(Color. green); modify =new JButton( “修改数据 “); modify .setBackground(Color. green); modify .addActionListener( new modifyActionPerformed(); delete=new JButton(“删除数据 “); delete.setBackground(Color. green); delete.addActionListener( new deleteActionPerformed(); frame.setSize(360,200); frame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE ); Container contentPane=frame.getContentPane(); contentPane.setLayout(new BorderLayout(); text1=new JLabel(“欢迎使用学生成绩管理系统“,JLabel.CENTER); text1.setFont(new Font(“宋体 “,Font.BOLD ,24); text1.setForeground(Color. blue); text2=new JLabel(“-192091 班罗斌制作 “); text2.setFont(new Font(“TimesRoman“ ,Font.ROMAN_BASELINE ,14); panel1=new JPanel(); panel1.add(insert); panel1.add(query); panel2=new JPanel(); panel2.add(modify ); panel2.add(delete); panel1.setOpaque(false); panel2.setOpaque(false); panel=new JPanel(); panel.add(text2,BorderLayout. NORTH); panel.add(panel1,BorderLayout. NORTH); panel.add(panel2,BorderLayout. SOUTH); panel.setOpaque(false); contentPane.add(text1,BorderLayout. NORTH); contentPane.add(panel,BorderLayout. CENTER); frame.getLayeredPane().add(picture, new Integer(Integer.MIN_VALUE ); Toolkit kit = Toolkit.getDefaultToolkit (); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width /2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); picture.setBounds(0,0,360,360); (JPanel)contentPane).setOpaque(false); frame.setLocation(screenWidth-width/2, screenHeight-height/2); frame.setVisible( true); public class insertActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Insert().setVisible( true); public class modifyActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Modify().setVisible( true); public class queryActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Query().setVisible( true); public class deleteActionPerformed implements ActionListener public void actionPerformed(ActionEvent e) new Delete().setVisible( true); public staticvoid main(String args) new MainFrame(); Insert 类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Insert extends JFrame JTextField input1,input2 ,input3,input4,input5 ,input6 ; JLabel label1,label2,label3,label4,label5; JButton button; static Statement st; static try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“ ); Connection con=DriverManager. getConnection(“jdbc:odbc:student“ ); st=con.createStatement(); catch(Exception e) ResultSet rs; public Insert() input1=new JTextField(15); input2=new JTextField(15); input3=new JTextField(15); input4=new JTextField(15); input5=new JTextField(15); input6=new JTextField(15); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(6,2); panel.add(new JLabel(“学号 “),BorderLayout. CENTER); panel.add(input1); panel.add(new JLabel(“姓名 “),BorderLayout. CENTER); panel.add(input2); panel.add(new JLabel(“班级 “),BorderLayout. CENTER); panel.add(input3); panel.add(new JLabel(“语文 “),BorderLayout. CENTER); panel.add(input4); panel.add(new JLabel(“英语 “); panel.add(input5); panel.add(new JLabel(“数学 “); panel.add(input6); button=new JButton(“添加 “); button.addActionListener( new mysql(); Container container=getContentPane(); container.add(panel,BorderLayout. CENTER); container.add(button,BorderLayout. SOUTH); setTitle(“添加数据窗口“); setDefaultCloseOperation(JFrame. DISPOSE_ON_CLOSE ); setSize(250,250); Toolkit kit = Toolkit.getDefaultToolkit (); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width /2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class mysql implements ActionListener public void actionPerformed(ActionEvent e) try String number= input1.getText().trim(); String name=input2.getText().trim(); String clas=input3.getText().trim(); String temp=input4.getText(); int chinese=Integer.parseInt(temp); temp=input4.getText(); int english=Integer.parseInt(temp); temp=input4.getText(); int maths=Integer.parseInt(temp); if(number.equals(“ )|name.equals(“ )| clas.equals(“ )|temp.equals(“ ) JOptionPane.showMessageDialog(Insert.this,“请重新输入“,“ 提示对话 框“,1); else String sql=“insert into ScoreInfo(ID,name,class,Chinese,English,Maths) values('“+number+“','“ +name+“','“+clas+“',“ +chinese+“,“ +english+“,“ +maths+“);“ ; st.executeUpdate(sql); JOptionPane.showMessageDialog(Insert.this, “数据添加成功“,“提示对 话框 “,1); input1 .setText(“ ); input2 .setText(“ ); input3 .setText(“ ); input4 .setText(“ ); input5 .setText(“ ); input6 .setText(“ ); catch(Exception ee) Query 类 import java.awt.*; import javax.swing.event.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Query extends JFrame JTextArea show; JButton button1,button2,button3,button4,button5; JTextField field1 ,field2 ,field3; JComboBox comoBox; static Statement st; static try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“ ); Connection con=DriverManager. getConnection(“jdbc:odbc:student“ ); st=con.createStatement(); catch(Exception e) public Query() show=new JTextArea(5,10); button1=new JButton(“显示所有信息“); button1.addActionListener( new Mysql1(); Container container=getContentPane(); container.setLayout( new BorderLayout(); JPanel panel=new JPanel(); JPanel mainpanel=new JPanel(); button2=new JButton(“按学号查询 “); button2.addActionListener( new Mysql2(); panel.add(button2); field1 =new JTextField(7); panel.add(field1 ); panel.setVisible(true); mainpanel.add(panel); button3=new JButton(“按姓名查询 “); button3.addActionListener( new Mysql3(); panel.add(button3); field2 =new JTextField(6); panel.add(field2 ); panel.setVisible(true); mainpanel.add(panel); button4=new JButton(“按班级查询 “); button4.addActionListener( new Mysql4(); panel.add(button4); field3 =new JTextField(6); panel.add(field3 ); panel.setVisible(true); mainpanel.add(panel); String items= “请选择 “,“语文 “,“英语 “,“数学 “; comoBox=new JComboBox(items); button5=new JButton(“按课程名称查询“); button5.addActionListener( new Mysql5(); panel.add(button5); panel.add(comoBox); panel.setVisible(true); mainpanel.add(panel); panel=new JPanel(); panel.add(button1); container.add(mainpanel,BorderLayout. NORTH); container.add(panel,BorderLayout. SOUTH); container.add(new JScrollPane(show),BorderLayout. CENTER); setTitle(“查询数据 “); setDefaultCloseOperation(JFrame. DISPOSE_ON_CLOSE ); setSize(750,400); Toolkit kit = Toolkit.getDefaultToolkit (); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width /2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class Mysql1 implements ActionListener public void actionPerformed(ActionEvent e) try String sql=“select * from ScoreInfo“ ; ResultSet rs=st.executeQuery(sql); show.setText(“ ); show.append(“序号学号 姓名班级语文英语 数学 “+“n“); while(rs.next() show.append(rs.getInt(1)+ “ “); show.append(rs.getString(2)+ “ “); show.append(rs.getString(3)+ “ “); show.append(rs.getString(4)+ “ “); show.append(rs.getInt(5)+ “ “); show.append(rs.getInt(6)+ “ “); show.append(rs.getInt(7)+ “n“ ); catch(Exception ee) class Mysql2 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field1 .getText().trim(); String sql=“select * from ScoreInfo where ID='“+ss+“'“ ; ResultSet rs=st.executeQuery(sql); show.setText(“ ); show.append(“序号学号 姓名班级语文英语 数学 “+“n“); while(rs.next() show.append(rs.getInt(1)+ “ “); show.append(rs.getString(2)+ “ “); show.append(rs.getString(3)+ “ “); show.append(rs.getString(4)+ “ “); show.append(rs.getInt(5)+ “ “); show.append(rs.getInt(6)+ “ “); show.append(rs.getInt(7)+ “n“ ); catch(Exception ee) class Mysql3 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field2 .getText().trim(); String sql=“select * from ScoreInfo where name='“ +ss+“'“ ; ResultSet rs=st.executeQuery(sql); show.setText(“ ); show.append(“序号学号 姓名班级语文英语 数学 “+“n“); while(rs.next() show.append(rs.getInt(1)+ “ “); show.append(rs.getString(2)+ “ “); show.append(rs.getString(3)+ “ “); show.append(rs.getString(4)+ “ “); show.append(rs.getInt(5)+ “ “); show.append(rs.getInt(6)+ “ “); show.append(rs.getInt(7)+ “n“ ); catch(Exception ee) class Mysql4 implements ActionListener public void actionPerformed(ActionEvent e) try String ss=field3 .getText().trim(); String sql=“select * from ScoreInfo where class='“ +ss+“'“; ResultSet rs=st.executeQuery(sql); show.setText(“ ); show.append(“序号学号 姓名班级语文英语 数学 “+“n“); while(rs.next() show.append(rs.getInt(1)+ “ “); show.append(rs.getString(2)+ “ “); show.append(rs.getString(3)+ “ “); show.append(rs.getString(4)+ “ “); show.append(rs.getInt(5)+ “ “); show.append(rs.getInt(6)+ “ “); show.append(rs.getInt(7)+ “n“ ); catch(Exception ee) class Mysql5 implements ActionListener public void actionPerformed(ActionEvent e) try String sql=“; String ss=comoBox .getSelectedItem().toString(); if(ss.equals(“语文 “) sql=“select ID,name,class,Chinese from ScoreInfo “ ; show.setText(“ ); show.append(“序号学号 姓名班级语文 “+“n“ ); elseif(ss.equals(“英语 “) sql=“select ID,name,class,English from ScoreInfo “ ; show.setText(“ ); show.append(“序号学号 姓名班级英语“+“n“ ); elseif(ss.equals(“数学 “) sql=“select ID,name,class,Maths from ScoreInfo “ ; show.setText(“ ); show.append(“序号学号 姓名班级数学 “+“n“ ); ResultSet rs=st.executeQuery(sql); int i=0; while(rs.next() i+; show.append(“ +i+ “ “+rs.getString(1)+ “ “); show.append(rs.getString(2)+ “ “); show.append(rs.getString(3)+ “ “); show.append(rs.getInt(4)+ “n“ ); catch(Exception ee) Modify 类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class Modify extends JFrame JTextField input1,input2 ,input3,input4,input5 ,input6 ; JLabel label1,label2,label3,label4,label5; JButton button; static Statement st; static try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“ ); Connection con=DriverManager. getConnection(“jdbc:odbc:student“ ); st=con.createStatement(); catch(Exception e) ResultSet rs; public Modify() input1=new JTextField(15); input2=new JTextField(15); input3=new JTextField(15); input4=new JTextField(15); input5=new JTextField(15); input6=new JTextField(15); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(6,2); panel.add(new JLabel(“学号 “); panel.add(input1); panel.add(new JLabel(“姓名 “); panel.add(input2); panel.add(new JLabel(“班级 “); panel.add(input3); panel.add(new JLabel(“语文 “); panel.add(input4); panel.add(new JLabel(“英语 “); panel.add(input5); panel.add(new JLabel(“数学 “); panel.add(input6); button=new JButton(“修改 “); button.addActionListener( new mysql(); Container container=getContentPane(); container.add(panel,BorderLayout. CENTER); container.add(button,BorderLayout. SOUTH); setTitle(“修改数据窗口“); setDefaultCloseOperation(JFrame. DISPOSE_ON_CLOSE ); setSize(300,150); Toolkit kit = Toolkit. getDefaultToolkit (); Dimension screenSize = kit.getScreenSize(); int screenWidth = screenSize.width/2; int screenHeight = screenSize.height/2; int height = this.getHeight(); int width = this.getWidth(); setLocation(screenWidth-width/2, screenHeight-height/2); setVisible(true); class mysql implements ActionListener public void actionPerformed(ActionEvent e) try String number= input1.getText().trim(); String name=input2.getText().trim(); String clas=input3.getText().trim(); String temp=input4.getText(); int chinese=Integer.parseInt(temp); temp=input4.getText(); int english=Integer.parseInt(temp); temp=input4.getText(); int maths=Integer.parseInt(temp); if(number.equals(“ ) JOptionPane.showMessageDialog(Modify. this,“学号不能为空!“,“提示 对话框 “,1); else try String sql=“update ScoreInfo set name='“+name+“',class='“+clas+“',Chinese=“ +chinese+“,English=“ +english+ “,Maths=“ +maths+“ where ID='“ +number+“'“; st.executeUpdate(sql); JOptionPane.showMessageDialog(Modify. this, “ 数据修改成功“,“提示 对话框 “,1); input1 .setText(“ ); input2 .setText(“ ); input3 .setText(“ ); input4 .setText(“ ); input5 .setText(“ ); input6 .setText(“ ); catch(Exception ee) JOptionPane.showMessageDialog(Modify. this,“请确认需要修改的 学号是否存在 “,“提示对话框 “,1); System.out.println(ee); catch(Exception eee) System.out.println(eee); Delete类 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; publ