Java语言程序设计B报告班级:学号:姓名:成绩:年月一个简单的学生成绩管理信息系统题目:数据库要求: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文本notnull主键姓名name文本从键班级class文本从简语文Chinese长整数英语English长整数数学Maths长整数数据库截图3、主界面设计成绩查询系统学号姓名班级语文数学英语MAINFRAME类设计功能组件4个按钮、1个背景、2个标签文本、2个面板功能实现查询数据、添加数据、删除数据、修改数据实现过程对按钮添加监控,共有4个监控事件,实现按钮事件为创建对应功能的类对象,出现相应的功能窗口。三、运行截图主界面添加数据查询数据按学号查询按姓名查询按班级查询按课程名称查询显示所有信息修改数据删除数据四、实验感想通过此次课程设计我学会了很多知识,将Java课上遗漏的知识又进一步补上。实践过程中遇到了很多困难,比如没学过数据库,SQL语句不熟,对eclipse的使用很生疏等,因此花费了很多时间在前期准备工作上。即使如此,也有一些功能尚未实现,例如查询优秀率、最高分和最低分等,虽然比较简单,但由于时间问题还是没来得及做。由于本次试验的很多知识都是现学现用,以致很多地方的代码显得累赘繁琐。但总体上主要功能是实现了的,并且美化了一下主界面。总之,此次课程设计让我获益匪浅,我将会继续把它完善做好。五、源代码清单MainFrame类importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassMainFrameextendsJFrame{JButtoninsert,query,delete,modify;JPanelpanel,panel1,panel2;publicMainFrame(){//TODOAuto-generatedmethodstubImageIconimg=newImageIcon(1.gif);JLabeltext1,text2,picture=newJLabel(img);JFrameframe=newJFrame(学生成绩管理系统);insert=newJButton(添加数据);insert.setBackground(Color.green);insert.addActionListener(newinsertActionPerformed());query=newJButton(查询数据);query.addActionListener(newqueryActionPerformed());query.setBackground(Color.green);modify=newJButton(修改数据);modify.setBackground(Color.green);modify.addActionListener(newmodifyActionPerformed());delete=newJButton(删除数据);delete.setBackground(Color.green);delete.addActionListener(newdeleteActionPerformed());frame.setSize(360,200);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ContainercontentPane=frame.getContentPane();contentPane.setLayout(newBorderLayout());text1=newJLabel(欢迎使用学生成绩管理系统,JLabel.CENTER);text1.setFont(newFont(宋体,Font.BOLD,24));text1.setForeground(Color.blue);text2=newJLabel(------192091班罗斌制作);text2.setFont(newFont(TimesRoman,Font.ROMAN_BASELINE,14));panel1=newJPanel();panel1.add(insert);panel1.add(query);panel2=newJPanel();panel2.add(modify);panel2.add(delete);panel1.setOpaque(false);panel2.setOpaque(false);panel=newJPanel();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,newInteger(Integer.MIN_VALUE));Toolkitkit=Toolkit.getDefaultToolkit();DimensionscreenSize=kit.getScreenSize();intscreenWidth=screenSize.width/2;intscreenHeight=screenSize.height/2;intheight=this.getHeight();intwidth=this.getWidth();picture.setBounds(0,0,360,360);((JPanel)contentPane).setOpaque(false);frame.setLocation(screenWidth-width/2,screenHeight-height/2);frame.setVisible(true);}publicclassinsertActionPerformedimplementsActionListener{publicvoidactionPerformed(ActionEvente){newInsert().setVisible(true);}}publicclassmodifyActionPerformedimplementsActionListener{publicvoidactionPerformed(ActionEvente){newModify().setVisible(true);}}publicclassqueryActionPerformedimplementsActionListener{publicvoidactionPerformed(ActionEvente){newQuery().setVisible(true);}}publicclassdeleteActionPerformedimplementsActionListener{publicvoidactionPerformed(ActionEvente){newDelete().setVisible(true);}}publicstaticvoidmain(String[]args){newMainFrame();}}Insert类importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;publicclassInsertextendsJFrame{JTextFieldinput1,input2,input3,input4,input5,input6;JLabellabel1,label2,label3,label4,label5;JButtonbutton;staticStatementst;static{try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connectioncon=DriverManager.getConnection(jdbc:odbc:student);st=con.createStatement();}catch(Exceptione){}}ResultSetrs;publicInsert(){input1=newJTextField(15);input2=newJTextField(15);input3=newJTextField(15);input4=newJTextField(15);input5=newJTextField(15);input6=newJTextField(15);JPanelpanel=newJPanel();panel.setLayout(newGridLayout(6,2));panel.add(newJLabel(学号),BorderLayout.CENTER);panel.add(input1);panel.add(newJLabel(姓名),BorderLayout.CENTER);panel.add(input2);panel.add(newJLabel(班级),BorderLayout.CENTER);panel.add(input3);panel.add(newJLabel(语文),BorderLayout.CENTER);panel.add(input4);panel.add(newJLabel(