1、Java语言程序设计B报 告 班级: 学号: 姓名: 成绩: 年 月 一个简单的学生成绩管理信息系统 题目: 数据库要求: 1。 建立的数据库中包含如下信息:学生学号、姓名、班级,语文、数学、英语成绩。 2. 至少要有5个班级,每个班级要有10名以上学生。 3. 使用。txt格式文本表示各种表。 功能需求: 1。 能够实现根据以下关键字查询:学生姓名 、学号、班级、课程名称。 2. 能够实现按照单科成绩、总成绩、平均成绩
2、学号排序。 3。 能够实现学生信息的插入、删除和修改。 4。 能够查询每个课程的最高分、最低分及相应学生姓名、班级和学号. 5。 能够查询每个班级某门课程的优秀率(90分及以上)、不及格率,并进行排序。 界面要求: 使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。 一、需求分析 1、界面 符合日常软件使用规范,使用方便,外形简洁美观。 2、功能需求 存储学生学号、姓名、班级,语文、数学、英语成绩等信息,实现数据库的读取与存入,数据项的记录与修改,删除等。 二、设计思想 1、类设计 将添加数据、查询数据、删除数据、修改
3、数据四个功能分别为四个类来实现,为了便于测试,每一个类都继承了主窗口类JFRAME,使得窗口可以独自运行。 l INSERT类设计 功能组件 6个文本域、6个标签、1个按钮 功能实现 添加数据 实现过程 对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的INSERT语句。 l QUERY类设计 功能组件 5个按钮、三个单行文本组件、1个下拉框、1个多行文本 功能实现 按学号查询、按姓名查询、按班级查询、按课程查询、显示全部 实现过程 对按钮添加监控,共有五个监控事件,前三个实现按钮事件为先获取文本域中的信息,根据对应
4、查询的要求执行相应的SQL的SELLECT语句;按课程查询通过在下来框中选择对应的选项,即查询相应的课程;第五个查询按钮将全部信息在多行文本框中输出。 l MODIFY类设计 功能组件 6个单行文本、6个标签、1个按钮 功能实现 修改数据 实现过程 与添加数据类似,对按钮添加监控,实现按钮事件为获取文本域中的信息,并执行SQL的UPDATE语句;不同的是以学号为主键进行查找并更新. l DELETE类设计 功能组件 1个单行文本、1个标签、1个按钮、1个多行文本 功能实现 删除数据 实现过程 与修改数据类似,对按钮添加监控,实现按
5、钮事件为获取文本域中的学号信息,并执行SQL的DELETE语句;不同的是以学号为主键进行查找并将删除信息输出到文本框中. 2、数据库设计 l 系统概念结构设计 语文 学号 姓名 数学 成绩查询系统 班级 英语 l 系统逻辑结构设计 学生成绩信息表 字段名 属性 类型 空值 约束条件 学号 ID 文本 not null 主键 姓名 name 文本 从键 班级 class 文本 从简 语文 Chinese 长整数 英语 English 长整数 数学 Maths 长整数
6、 l 数据库截图 3、主界面设计 MAINFRAME类设计 功能组件 4个按钮、1个背景、2个标签文本、2个面板 功能实现 查询数据、添加数据、删除数据、修改数据 实现过程 对按钮添加监控,共有4个监控事件,实现按钮事件为创建对应功能的类对象,出现相应的功能窗口。 三、运行截图 Ø 主界面 Ø 添加数据 Ø 查询数据 l 按学号查询 l 按姓名查询 l 按班级查询 l 按课程名称查询 l 显示所有信息 Ø 修改数据 Ø 删除数据 四、实验感想 通过此次课程设计我学会了很多知识,将Java课上遗漏的知识又进一步补上。实
7、践过程中遇到了很多困难,比如没学过数据库,SQL语句不熟,对eclipse的使用很生疏等,因此花费了很多时间在前期准备工作上。即使如此,也有一些功能尚未实现,例如查询优秀率、最高分和最低分等,虽然比较简单,但由于时间问题还是没来得及做.由于本次试验的很多知识都是现学现用,以致很多地方的代码显得累赘繁琐。但总体上主要功能是实现了的,并且美化了一下主界面。 总之,此次课程设计让我获益匪浅,我将会继续把它完善做好。 五、源代码清单 Ø MainFrame类 import javax。swing.*; import java。awt。*; import java。awt。even
8、t。*; 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("学生成
9、绩管理系统”); insert=new JButton("添加数据”); insert。setBackground(Color.green); insert.addActionListener(new insertActionPerformed()); query=new JButton("查询数据”); query.addActionListener(new queryActionPerformed()); query.setBackground(Color.green); mod
10、ify=new JButton(”修改数据”); modify.setBackground(Color。green); modify。addActionListener(new modifyActionPerformed()); delete=new JButton("删除数据”); delete。setBackground(Color。green); delete.addActionListener(new deleteActionPerformed()); frame。setSize(360,2
11、00); 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.setForegr
12、ound(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);
13、 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,BorderL
14、ayout.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;
15、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(
16、true); } public class insertActionPerformed implements ActionListener { public void actionPerformed(ActionEvent e) { new Insert()。setVisible(true); } } public class modifyActionPerformed implements ActionListener { public void action
17、Performed(ActionEvent e) { new Modify()。setVisible(true); } } public class queryActionPerformed implements ActionListener { public void actionPerformed(ActionEvent e) { new Query().setVisible(true); } } public clas
18、s deleteActionPerformed implements ActionListener { public void actionPerformed(ActionEvent e) { new Delete().setVisible(true); } } public static void main(String[] args) { new MainFrame(); } } Ø Insert类 import java。awt。*;
19、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(”
20、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 JText
21、Field(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);
22、 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("添
23、加”); 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 = Toolk
24、it。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, screen
25、Height-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=inp
26、ut4.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。showMes
27、sageDialog(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(Inser
28、t。this, ”数据添加成功”,”提示对话框”,1); input1。setText(””); input2。setText("”); input3。setText("”); input4。setText(””); input5.setText(”"); input6。setText("”); } } catch(Exception ee){} } } } Ø Query类 import java.awt。*; import javax。sw
29、ing。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{ Cl
30、ass.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。addActionLis
31、tener(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);
32、 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(
33、按班级查询"); 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
34、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 JScrollPa
35、ne(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
36、 = 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
37、 { String sql="select * from ScoreInfo”; ResultSet rs=st。executeQuery(sql); show。setText(”"); show。append(”序号 学号 姓名 班级 语文 英语 数学”+"\n"); while(rs。next()) {
38、 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)+”
39、 "); 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 wher
40、e ID=’”+ss+”’”; ResultSet rs=st。executeQuery(sql); show。setText(””); show。append("序号 学号 姓名 班级 语文 英语 数学”+”\n"); while(rs。next()) { show。append(rs.getInt(1)+
41、 ”); 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。ap
42、pend(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
43、 rs=st。executeQuery(sql); show。setText(""); show。append(”序号 学号 姓名 班级 语文 英语 数学"+”\n”); while(rs.next()) { show。append(rs.getInt(1)+" ”); show。
44、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”);
45、} } 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);
46、 show。setText(""); show。append(”序号 学号 姓名 班级 语文 英语 数学”+"\n”); while(rs.next()) { show.append(rs。getInt(1)+” ”); show。append(rs。getString(2)+”
47、 ”); 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 e
48、e){} } } 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。set
49、Text(””); show.append(”序号 学号 姓名 班级 语文”+”\n”); } else if(ss。equals(”英语")) { sql=”select ID,name,class,English from ScoreInfo "; show.setText(””); show.append("序号 学号
50、 姓名 班级 英语 ”+"\n"); } else if(ss.equals("数学")) { sql="select ID,name,class,Maths from ScoreInfo ”; show。setText(""); show。append("序号 学号 姓名 班级






