一个简单的学生成绩管理信息系统(Java)

发布时间:2012-03-04 10:41:30

Java语言程序设计B

班级: 192091-27

学号: 20091003757

姓名:

成绩:

20121

一个简单的学生成绩管理信息系统

题目:

数据库要求:

1. 建立的数据库中包含如下信息:学生学号、姓名、班级,语文、数学、英语成绩。

2. 至少要有5个班级,每个班级要有10名以上学生。

3. 使用.txt格式文本表示各种表。

功能需求:

1. 能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。

2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。

3. 能够实现学生信息的插入、删除和修改。

4. 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号。

5. 能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。

界面要求:

使用图形界面实现,要符合日常软件使用规范来设计菜单和界面

一、需求分析

1、界面

符合日常软件使用规范,使用方便,外形简洁美观。

2、功能需求

存储学生学号、姓名、班级,语文、数学、英语成绩等信息,实现数据库的读取与存入,数据项的记录与修改,删除等。

二、设计思想

1、类设计

将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现,为了便于测试,每一个类都继承了主窗口类jframe,使得窗口可以独自运行。

Insert类设计

功能组件 6个文本域、6个标签、1个按钮

功能实现 添加数据

实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQLinsert语句。

Query类设计

功能组件 5个按钮、三个单行文本组件、1个下拉框、1个多行文本

功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部

实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获取文本域中的信息,根据对应查询的要求执行相应的SQLSellect语句;按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将全部信息在多行文本框中输出。

Modify类设计

功能组件 6个单行文本、6个标签、1个按钮

功能实现 修改数据

实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQLUpdate语句;不同的是以学号为主键进行查找并更新。

delete类设计

功能组件 1个单行文本、1个标签、1个按钮、1个多行文本

功能实现 删除数据

实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中的学号信息,并执行SQLdelete语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中。

2、数据库设计

系统概念结构设计

系统逻辑结构设计

学生成绩信息表

数据库截图

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

}

}

}

}

一个简单的学生成绩管理信息系统(Java)

相关推荐