《java程序设计-学生成绩信息管理系统.docx》由会员分享,可在线阅读,更多相关《java程序设计-学生成绩信息管理系统.docx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JAVA 程序设计学生信息管理系统题目学生信息管理系统学院 软件学院专业班别学号姓名XXX2015 年 6 月 10 日2一、课程题目设计一个简易的学生成绩管理系统。用于记录学生的各科成绩,以及实现常用的统计功能。(1)记录学生的基本信息,如姓名、学号、专业、班级等(2)记录各科成绩(3)实现常用的统计功能,如:单科成绩排名、总分排名、统计成绩高于/低于某一临界值的学生、统计单科/总分平均值(4)使用图形方式显示某些数据,如直方图显示各分数段的人数、绘制各科分数分布曲线(可选)(5)必须使用数据库。其它功能可自行扩展。二、题目分析与设计1.注明所使用的开发环境(Eclipse、NetBeans
2、,JBuilder)。开发环境:Eclipse2.论述题目的需求。给出软件功能架构图。题目需求:通过数据库记录学生成绩和信息,并通过数据库读取这些信息,实现单个学生查找、全体学生查找等功能和单科排名、平均分、总分排名、平均分等功能。其他扩展功能:登录界面,保存到 txt 文件。软件功能架构图:其中,删除、修改、单个查找功能均通过学号定位学生3.论述界面设计过程,指出其设计上的创意及组件的布局策略。界面设计过程:主要界面包括登录界面,主功能界面,各个子功能界面。登录界面包括 3 个面板,每个面板放入相应的标签、文本框、按钮等组件,登录界面采用 3 行 1 列的网格布局;主功能界面包括菜单栏和若干
3、面板,面板中放入标签或若干按钮,菜单栏的菜单项与按钮相对应,主功能界面采用 7 行1 列的网格布局;学生管理类子功能(增加学生、删除学生、修改学生、单个查找)界面采用 6行 2 列的网格布局,每个网格均放入一个面板,每个面板放入标签、文本框、组合框、按钮等组件,以达到较友好的界面效果;学生查找类子功能界面(查看全体、按年级查询、按班别查询、按专业查询)和成绩管理类子功能(单科排名、总分排名、合格学生、挂科学生)界面采用边界布局,界面的上部放入一个面板,面板放入相应的按钮或组合框,中部放入一个文本域。所有错误信息等信息均通过对话框的形式显示相应信息。4.论述程序逻辑的实现,包括类的设计、对象的协
4、作过程等,必要时加以各种图形和表格辅助论述。不得以粘贴代码的方式代替设计部分。类的设计过程:本程序包括 19 个类文件,每个类文件只含有一个类,分别是包含 main 方法的主类 Main,实现登录功能的类 Login,实现各种功能选择功能的类 Function,实现数据库连接的类 DataBaseCreate,实现学生信息编辑功能类StudentEdit,执行增加学生功能的类AddStudent,执行删除学生功能的类DeleteStudent,执行修改学生功能的类 UpdateStudent,执行单个查询功能的类 IndexOfSingle,(由于AddStudent,DeleteStuden
5、t,UpdateStudent,IndexOfSingle 界面和操作基本相同,所以上 4 类均继承 StudentEdit)实现条件查找和成绩管理功能的类IndexOrManage,执行查询全体功能的类LookAllStudents,执行按年级查询功能的类 IndexOfGrade,执行按班别查询功能的类 IndexOfClass,执行按专业查询的类 IndexOfMajor,执行单科排名功能的类 SubjectScoreRanking,执行总分排名功能的类 TotalScoreRanking,执行查找单科及格学生功能的类 PassStudents,执行查找单科不及格学生功能的类NotPas
6、sStudents,(由于 LookAllStudents,IndexOfGrade,IndexOfClass,IndexOfMajor,SubjectScoreRanking,TotalScoreRanking,PassStudents,NotPassStudents,界面和操作基本相同,所以上 8 类均继承 IndexOrManage)执行将文本域内容保存到 TXT 文件的类 TxtSave。以上 19 个类,除了 Main 类以外,均包含一个构造方法,有些还包含 actionPerformed(e)方法。对象的协作过程:三、测试分析小四字体,1.5 倍行距。对程序的测试情况作出分析。至少
7、包括但不限于需要具备以下内容:1.阐述扩展包(仅限于 SUN 官方发布)的部署过程,并将扩展包附于光盘源程序中;给出数据库的详细配置说明。导入扩展包mysql-connector-java-5.1.25-bin.jar数据库配置说明:数据库 mySQL数据库服务器 localhost端口 3306用户名 root密码 空数据库名 studentmanagementStudent 表2.典型测试数据的构建,并且给出测试数据的预计结果原数据:测试数据:添加学生10005 张兰 女 20122 信息工程 19930506 827458删除学生 10000修改学生 10001李嘉 女 2011 4网络
8、工程 1992030454 8586.5单个查找 10003查询全体按年级查找2011 级按班别查找1 班按专业查找软件工程单科排名并显示平均分语文总分排名并显示平均分单科及格学生英语单科不及格学生语文保存 Txt总分预测结果:均成功完成操作3.本程序的测试情况,与预计结果作对比测试情况:成功完成相关操作添加学生10005 张兰 女 20122 信息工程 19930506 827458删除学生 10000修改学生 10001李嘉 女 2011 4网络工程 19920304548586.5单个查找 1000320001查询全体按年级查找2011 级按班别查找1 班按专业查找软件工程单科排名并显示
9、平均分语文总分排名并显示平均分单科及格学生英语单科不及格学生语文保存 Txt总分排名附录:源代码小四字体,1.5 倍行距。只需列出程序中所有的包及相关的文件。不需要打印源代码。程序中所有的包及相关的文件:代码:import javax.swing.JFrame;public class Main/*param args*/public static void main(String args)Login login=new Login();login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);import java.awt.*;import
10、java.awt.event.*;import javax.swing.*;/登录界面public class Login extends JFrame implements ActionListenerJButton b1=new JButton(登录);JButton b2=new JButton(退出);JLabel la1=new JLabel(用户名);JLabel la2=new JLabel(密码);JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JTextField name=new JT
11、extField(15);JPasswordField pw=new JPasswordField(15);public Login()setTitle(学生成绩管理系统);getContentPane().setLayout(new GridLayout(3,1);getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p3);p1.add(la1);p1.add(name);p2.add(la2);p2.add(pw);p3.add(b1);p3.add(b2);setBounds(500,250,100
12、,100);pack();setVisible(true);pw.setEchoChar(*);b1.addActionListener(this);b2.addActionListener(this);public void actionPerformed(ActionEvent e)if(e.getActionCommand()=登录)String password=pw.getText();String user=name.getText();if(user.equals(admin)&password.equals(admin)Function function=new Functio
13、n();function.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(false);elseJOptionPane.showMessageDialog(null,用户名或密码错误,Error,JOptionPane.INFORMATION_MESSAGE);else if(e.getActionCommand()=退出)System.exit(0);import java.sql.*;/连接数据库类public class DataBaseCreate/连接数据库静态方法,若产生错误,则抛出相应错误信息public sta
14、tic ConnectiongetConnection()throwsSQLException,java.lang.ClassNotFoundException/建立本地数据库连接,编码规则转换为 utf-8(正常录入中文)Stringurl=jdbc:mysql:/localhost:3306/studentmanagement?useUnicode=true&characterEncoding=utf8;Class.forName(com.mysql.jdbc.Driver);String userName=root;Connection con=DriverManager.getConn
15、ection(url,userName,);return con;import javax.swing.JFrame;public class Main/*param args*/public static void main(String args)Login login=new Login();login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);import java.awt.*;import java.awt.event.*;import javax.swing.*;/主要功能界面public class Function exten
16、ds JFrame implements ActionListenerJPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p6=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JButton add=new JButton(增加学生);JButton del=new JButton(删除学生);JButton update=new JButton(修改学生);JButton single=new JButton(单个查询);J
17、Button look=new JButton(查看全体);JButton b11=new JButton(按年级查找);JButton b12=new JButton(按班别查找);JButton b13=new JButton(按专业查找);JLabel la1=new JLabel(学生管理);JLabel la2=new JLabel(成绩管理);JLabel la3=new JLabel(学生查找);JButton b1=new JButton(单科排名);JButton b2=new JButton(总分排名);JButton b3=new JButton(合格学生);JButto
18、n b4=new JButton(挂科学生);JMenuItem items=new JMenuItem4;JMenuBar bar=new JMenuBar();JMenu m1=new JMenu(开始);JMenu m2=new JMenu(学生管理);JMenu m3=new JMenu(学生查找);JMenu m4=new JMenu(成绩管理);/构造方法public Function()setTitle(学生成绩管理系统);/设计菜单栏items0=new JMenuItem2;items1=new JMenuItem4;items2=new JMenuItem4;items3=
19、new JMenuItem4;m1.add(items00=new JMenuItem(返回);m1.add(items01=new JMenuItem(退出);m2.add(items10=new JMenuItem(增加学生);m2.add(items11=new JMenuItem(删除学生);m2.add(items12=new JMenuItem(修改学生);m2.add(items13=new JMenuItem(单个查询);m3.add(items20=new JMenuItem(查看全体);m3.add(items21=new JMenuItem(按年级查找);m3.add(i
20、tems22=new JMenuItem(按班别查找);m3.add(items23=new JMenuItem(按专业查找);m4.add(items30=new JMenuItem(单科排名);m4.add(items31=new JMenuItem(总分排名);m4.add(items32=new JMenuItem(合格学生);m4.add(items33=new JMenuItem(挂科学生);bar.add(m1);bar.add(m2);bar.add(m3);bar.add(m4);/设计布局getContentPane().setLayout(new GridLayout(7
21、,1);getContentPane().add(bar);getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p6);getContentPane().add(p3);getContentPane().add(p4);getContentPane().add(p5);p1.add(la1);p2.add(add);p2.add(del);p2.add(update);p2.add(single);p6.add(la3);p3.add(look);p3.add(b11);p3.add(b12);p3.ad
22、d(b13);p4.add(la2);p5.add(b1);p5.add(b2);p5.add(b3);p5.add(b4);setBounds(500,250,100,100);pack();setVisible(true);/注册监听器add.addActionListener(this);del.addActionListener(this);update.addActionListener(this);look.addActionListener(this);single.addActionListener(this);b11.addActionListener(this);b12.a
23、ddActionListener(this);b13.addActionListener(this);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);items00.addActionListener(this);items01.addActionListener(this);items10.addActionListener(this);items11.addActionListener(this);items12.addAc
24、tionListener(this);items13.addActionListener(this);items20.addActionListener(this);items21.addActionListener(this);items22.addActionListener(this);items23.addActionListener(this);items30.addActionListener(this);items31.addActionListener(this);items32.addActionListener(this);items33.addActionListener
25、(this);/按钮事件响应,对用对应的类对象public void actionPerformed(ActionEvent e)if(e.getActionCommand()=增加学生)AddStudent addStudent=new AddStudent();else if(e.getActionCommand()=删除学生)DeleteStudent delStudent=new DeleteStudent();else if(e.getActionCommand()=修改学生)UpdateStudent delStudent=new UpdateStudent();else if(e
26、.getActionCommand()=单个查询)IndexSingle is=new IndexSingle();else if(e.getActionCommand()=查看全体)LookAllStudents look=new LookAllStudents();else if(e.getActionCommand()=按年级查找)IndexOfGrade ig=new IndexOfGrade();else if(e.getActionCommand()=按班别查找)IndexOfClass ic=new IndexOfClass();else if(e.getActionComman
27、d()=按专业查找)IndexOfMajor im=new IndexOfMajor();else if(e.getActionCommand()=单科排名)SubjectScoreRanking subject=new SubjectScoreRanking();else if(e.getActionCommand()=总分排名)TotalScoreRanking subject=new TotalScoreRanking();else if(e.getActionCommand()=合格学生)PassStudents pass=new PassStudents();else if(e.ge
28、tActionCommand()=挂科学生)NotPassStudents notPass=new NotPassStudents();else if(e.getActionCommand()=返回)setVisible(false);Login login=new Login();login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);else if(e.getActionCommand()=退出)System.exit(0);import java.awt.GridLayout;import java.awt.event.*;import
29、javax.swing.*;public class StudentEdit extends JFrameJPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JPanel p6=new JPanel();JPanel p7=new JPanel();JPanel p8=new JPanel();JPanel p9=new JPanel();JPanel p10=new JPanel();JPanel p11=new J
30、Panel();JPanel p12=new JPanel();JLabel la1=new JLabel(学号);JLabel la2=new JLabel(姓名);JLabel la3=new JLabel(性别);JLabel la4=new JLabel(生日);JLabel la5=new JLabel(年级);JLabel la6=new JLabel(班别);JLabel la7=new JLabel(语文);JLabel la8=new JLabel(英语);JLabel la9=new JLabel(数学);JLabel la10=new JLabel(专业);JButton
31、 b1=new JButton(确定);JButton b2=new JButton(取消);JTextField num=new JTextField(10);JTextField name=new JTextField(10);JTextField chinese=new JTextField(10);JTextField english=new JTextField(10);JTextField maths=new JTextField(10);JTextField birth=new JTextField(10);String sex=,男,女;JComboBox s=new JCom
32、boBox(sex);String grades=,2010,2011,2012,2013;JComboBox grade=new JComboBox(grades);String classes=,1,2,3,4,5,6;JComboBox clas=new JComboBox(classes);String majors=,网络工程,软件工程,信息工程,计算机科学;JComboBox major=new JComboBox(majors);public StudentEdit()p1.add(la1);p1.add(num);p2.add(la2);p2.add(name);p3.add(
33、la3);p3.add(s);p4.add(la4);p4.add(birth);p5.add(la5);p5.add(grade);p6.add(la6);p6.add(clas);p7.add(la7);p7.add(chinese);p8.add(la8);p8.add(english);p9.add(la9);p9.add(maths);p10.add(la10);p10.add(major);p11.add(b1);p11.add(b2);/设计布局getContentPane().setLayout(new GridLayout(6,2);getContentPane().add(
34、p1);getContentPane().add(p2);getContentPane().add(p3);getContentPane().add(p4);getContentPane().add(p5);getContentPane().add(p6);getContentPane().add(p7);getContentPane().add(p8);getContentPane().add(p9);getContentPane().add(p10);getContentPane().add(p11);getContentPane().add(p12);setBounds(500,250,
35、100,100);pack();setVisible(true);import java.awt.event.*;import java.sql.*;import javax.swing.JOptionPane;public class AddStudent extends StudentEdit implements ActionListenerpublic AddStudent()super();b1.addActionListener(this);b2.addActionListener(this);public void actionPerformed(ActionEvent e)if
36、(e.getActionCommand()=确定)/计算总分/调用字符串转换浮点数方法floattotal=Float.parseFloat(chinese.getText()+Float.parseFloat(english.getText()+Float.parseFloat(maths.getText();try/建立数据库连接Connection con=DataBaseCreate.getConnection();Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDA
37、TABLE);/添加数据到数据库sql.executeUpdate(insertintostudent(Num,Name,Sex,Grade,Class,Major,Birth,Chinese,English,Maths,Total)+values(+num.getText()+,+name.getText()+,+s.getSelectedItem()+,+grade.getSelectedItem()+,+clas.getSelectedItem()+,+major.getSelectedItem()+,+birth.getText()+,+chinese.getText()+,+engl
38、ish.getText()+,+maths.getText()+,+total+);/关闭数据库连接sql.close();con.close();JOptionPane.showMessageDialog(null,成功录入学生信息与成绩,Message,JOptionPane.INFORMATION_MESSAGE);setVisible(false);catch(java.lang.ClassNotFoundException err)/捕捉错误,以对话框形式显示错误信息JOptionPane.showMessageDialog(null,err.getMessage(),ClassNo
39、tFoundException:,JOptionPane.INFORMATION_MESSAGE);catch(SQLException ex)JOptionPane.showMessageDialog(null,ex.getMessage(),SQLException:,JOptionPane.INFORMATION_MESSAGE);else if(e.getActionCommand()=取消)setVisible(false);import java.awt.event.*;import java.sql.Connection;import java.sql.ResultSet;imp
40、ort java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JOptionPane;public class DeleteStudent extends StudentEdit implements ActionListener JButton b3=new JButton(删除);public DeleteStudent()super();p12.add(b3);/对非必要文本框设置不可编辑s.setEnabled(false);name.setEditab
41、le(false);birth.setEditable(false);grade.setEnabled(false);clas.setEnabled(false);chinese.setEditable(false);english.setEditable(false);maths.setEditable(false);major.setEnabled(false);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);Overridepublic void actionPerforme
42、d(ActionEvent e)/TODO 自动生成的方法存根if(e.getActionCommand()=确定)String number=num.getText();if(number.equals()JOptionPane.showMessageDialog(null,不存在此学生,Messages,JOptionPane.INFORMATION_MESSAGE);elsetryConnection con=DataBaseCreate.getConnection();Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENS
43、ITIVE,ResultSet.CONCUR_UPDATABLE);/查找 Num 字段中与 number 相等的数据ResultSet rs=sql.executeQuery(select*from student where Num like%+number+%);if(rs.next()/显示到文本框s.setSelectedItem(rs.getString(Sex);name.setText(rs.getString(Name);birth.setText(rs.getString(Birth);chinese.setText(rs.getString(Chinese);englis
44、h.setText(rs.getString(English);maths.setText(rs.getString(Maths);s.setSelectedItem(rs.getString(Sex);clas.setSelectedItem(rs.getString(Class);grade.setSelectedItem(rs.getString(Grade);major.setSelectedItem(rs.getString(Major);elseJOptionPane.showMessageDialog(null,不存在此学生,Messages,JOptionPane.INFORM
45、ATION_MESSAGE);sql.close();con.close();catch(java.lang.ClassNotFoundException err)JOptionPane.showMessageDialog(null,err.getMessage(),ClassNotFoundException:,JOptionPane.INFORMATION_MESSAGE);catch(SQLException ex)JOptionPane.showMessageDialog(null,ex.getMessage(),SQLException:,JOptionPane.INFORMATIO
46、N_MESSAGE);else if(e.getActionCommand()=取消)setVisible(false);else if(e.getActionCommand()=删除)String number=num.getText();if(number.equals()JOptionPane.showMessageDialog(null,不存在此学生,Messages,JOptionPane.INFORMATION_MESSAGE);elsetryConnection con=DataBaseCreate.getConnection();Statementsql=con.createS
47、tatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs=sql.executeQuery(select*from student where Num like%+number+%);if(rs.next()/删除 number 所在行数据rs.deleteRow();/清空文本框s.setSelectedItem();num.setText();name.setText();birth.setText();chinese.setText();english.setText();maths
48、.setText();s.setSelectedItem();clas.setSelectedItem();grade.setSelectedItem();major.setSelectedItem();JOptionPane.showMessageDialog(null,删除成功,Messages,JOptionPane.INFORMATION_MESSAGE);elseJOptionPane.showMessageDialog(null,不存在此学生,Messages,JOptionPane.INFORMATION_MESSAGE);sql.close();con.close();setV
49、isible(false);catch(java.lang.ClassNotFoundException err)JOptionPane.showMessageDialog(null,err.getMessage(),ClassNotFoundException:,JOptionPane.INFORMATION_MESSAGE);catch(SQLException ex)JOptionPane.showMessageDialog(null,ex.getMessage(),SQLException:,JOptionPane.INFORMATION_MESSAGE);import java.aw
50、t.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JButton;import javax.swing.JOptionPane;public class UpdateStudent extends StudentEdit implements ActionListenerJButt