一个简单的学生成绩管理信息系统(Java)
发布时间:2012-03-04 10:41:30
发布时间:2012-03-04 10:41:30
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语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中。
学生成绩信息表
● 数据库截图
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 static void 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");
}
else if(ss.equals("英语"))
{
sql="select ID,name,class,English from ScoreInfo ";
show.setText("");
show.append("序号 学号 姓名 班级 英语 "+"\n");
}
else if(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.*;
public class Delete extends JFrame
{
JButton search;
JTextField input;
JTextArea show;
Connection con;
Statement st;
public Delete()
{
JPanel p=new JPanel();
search= new JButton("删除");
input= new JTextField(10);
show= new JTextArea(6,43);
p.add(new JLabel("输入要删除的学号"));
p.add(input);
p.add(search);
setTitle("删除数据窗口");
search.addActionListener(new Mysql());
show.setEditable(false);
add(p,BorderLayout.NORTH);
add(show,BorderLayout.CENTER);
setSize(400,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);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
}
class Mysql implements ActionListener
{
public void actionPerformed(ActionEvent ee)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException eee)
{
System.out.println(""+eee);
}
try
{
String ss=input.getText().trim();
con=DriverManager.getConnection("jdbc:odbc:student");
st=con.createStatement();
String sql="select * from ScoreInfo where ID='"+ss+"'";
show.setText(sql);
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
String number=rs.getString("ID");
String name=rs.getString("name");
String clas=rs.getString("class");
int chinese=rs.getInt("Chinese");
int english=rs.getInt("English");
int math=rs.getInt("Maths");
show.setText("你删除了:\n");
show.append("学号:"+number+"\n姓名:"+name+"\n班级:"+clas+"\n语文"+chinese+"\n英语 "+english+"\n数学 "+math);
show.append("\n");
sql="delete * from ScoreInfo where ID='"+ss+"'";
st.executeUpdate(sql);
}
con.close();
}
catch(SQLException e)
{
show.setText("无此条记录");
System.out.println(e);
}
}
}
}