资源描述
Java语言程序设计B报 告
班级:
学号:
姓名:
成绩:
年 月
一个简单的学生成绩管理信息系统
题目:
数据库要求:
1。 建立的数据库中包含如下信息:学生学号、姓名、班级,语文、数学、英语成绩。
2. 至少要有5个班级,每个班级要有10名以上学生。
3. 使用。txt格式文本表示各种表。
功能需求:
1。 能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。
2. 能够实现按照单科成绩、总成绩、平均成绩、学号排序。
3。 能够实现学生信息的插入、删除和修改。
4。 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号.
5。 能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。
界面要求:
使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
一、需求分析
1、界面
符合日常软件使用规范,使用方便,外形简洁美观。
2、功能需求
存储学生学号、姓名、班级,语文、数学、英语成绩等信息,实现数据库的读取与存入,数据项的记录与修改,删除等。
二、设计思想
1、类设计
将添加数据、查询数据、删除数据、修改数据四个功能分别为四个类来实现,为了便于测试,每一个类都继承了主窗口类JFRAME,使得窗口可以独自运行。
l INSERT类设计
功能组件 6个文本域、6个标签、1个按钮
功能实现 添加数据
实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的INSERT语句。
l QUERY类设计
功能组件 5个按钮、三个单行文本组件、1个下拉框、1个多行文本
功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部
实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获取文本域中的信息,根据对应查询的要求执行相应的SQL的SELLECT语句;按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将全部信息在多行文本框中输出。
l MODIFY类设计
功能组件 6个单行文本、6个标签、1个按钮
功能实现 修改数据
实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的UPDATE语句;不同的是以学号为主键进行查找并更新.
l DELETE类设计
功能组件 1个单行文本、1个标签、1个按钮、1个多行文本
功能实现 删除数据
实现过程 与修改数据类似,对按钮添加监控,实现按钮事件为获取文本域中的学号信息,并执行SQL的DELETE语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中.
2、数据库设计
l 系统概念结构设计
语文
学号
姓名
数学
成绩查询系统
班级
英语
l 系统逻辑结构设计
学生成绩信息表
字段名
属性
类型
空值
约束条件
学号
ID
文本
not null
主键
姓名
name
文本
从键
班级
class
文本
从简
语文
Chinese
长整数
英语
English
长整数
数学
Maths
长整数
l 数据库截图
3、主界面设计
MAINFRAME类设计
功能组件 4个按钮、1个背景、2个标签文本、2个面板
功能实现 查询数据、添加数据、删除数据、修改数据
实现过程 对按钮添加监控,共有4个监控事件,实现按钮事件为创建对应功能的类对象,出现相应的功能窗口。
三、运行截图
Ø 主界面
Ø 添加数据
Ø 查询数据
l 按学号查询
l 按姓名查询
l 按班级查询
l 按课程名称查询
l 显示所有信息
Ø 修改数据
Ø 删除数据
四、实验感想
通过此次课程设计我学会了很多知识,将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("序号 学号 姓名 班级
展开阅读全文