1、JAVA 程序设计实验报告 学期:2016-2017-21实验名称:实验 5:综合性程序设计简单学生信息管理系统班级:* 姓名:Zzz 学号:20151601*一、实验目的二、实验内容与结果(1)任务描述(1.3 与 1.4 二选一,建议选择 1.4)利用课程所学知识,设计并实现一个简单学生信息管理系统,要求如下:1.1 声明 Student 类,该类实现 Serializable 接口以表明该类可以进行序列化。该类有姓名、学号(long) ,math 、os 、java 用来存放对应的成绩,在构造方法中进行姓名、学号、课程成绩的赋值。Override 由 Object 继承来的 toStri
2、ng方法以便以友好格式显示自己的属性,格式为:张三 12 os:90 java:90 math: 90。1.2 建立一个类,利用数据库来存储多个 Student,写完一个方法在 main中写一段测试代码,运行以保证目前所做工作的正确性。有以下方法:add(Student stu):可以增加新的学生,并保存在数据库中。update(Student stu):可以修改特定的学生,并保存在数据库中。dispAll():可以显示所有的学生信息。findById(long id):可以按照学号来查找,并显示符合条件的学生信息,查无该人的话显示错误信息。findByName(String name):可以
3、按照姓名查找学生,找到后显示其信息,查无此人显示错误信息。delById(long id):可以按照 id 删除学生的信息,然后显示找到该人。若查无此人,显示相应的错误信息。1.3 (控制台方式)完善应用程序,实现相应的功能如下:添加学生信息、修改指定学号的学生信息、显示所有学生信息、按学号查找、按姓名查找、按学号删除、按成绩排序和退出。1.4 (Swing 窗体方式)完善应用程序,实现相应的功能如下:添加学生信息、修改指定学号的学生信息、显示所有学生信息、按学号查找、按姓名查找、按学号删除、按成绩排序和退出。(2)处理思路及关键技术说明(3)程序完整源码(要求格式规范,适当注释)(4)运行结
4、果截图(按每个操作分别截图)(2)处理思路及关键技术说明分三个模块:一是 jdbc 的代码,另一个是 Swing 和 AWT的代码,剩下是 Student类。Jdbc 一共有两个类:DBUtil(连接工具类)和 Sql类(处理 jdbc功能的静态方JAVA 程序设计实验报告 学期:2016-2017-22法)Swing 和 AWT一个有两个类:MyJFrame 构建总窗口,MyJPanel 对窗口内的面板行修饰。然后就是 Student类和 Main主方法类。关键部分:1)在主窗体中 add三个 Jpanel,底层和第二层左右三个,右边的 Jpanel实现cardLayout布局,左边的 Jp
5、anel添加按钮并添加 ActionListener来实现对象的 card切换达到不同按钮进入不同功能面板的目的。2)在 MyJPanel类中,所有的 init方法均传递参数 JPanel p,对传递过来的 Panel进行加工修饰,并且调用 Sql里面对应功能的方法。3)Sql 中的显示全部信息的方法中使用了 ArrayList来存储从 studenttbl中读取的对象信息,存储之后为了按照 String的方式显示在 JtextArea中,又用了 listToString方法,通过 for循环并追加回车,使每个对象都转化为 String并在后面加上了回车(separator),4)在 Sql中
6、的查找,删除,添加都使用了 jdbc中的预处理 PreparedStatement在操作完毕后执行 sts.executeUpdate();5)在 Sql排序方法中,把所有的信息都存储到 list中以后,调用工具类Collections.sort:根据指定比较器产生的顺序对指定列表进行排序。(3 )程序完整源码(要求格式规范,适当注释)class DBUtilpackage test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBUtil
7、private static String driver;private static String url;private static String username;private static String password;static driver=“com.mysql.jdbc.Driver“;url=“jdbc:mysql:/localhost:3306/mydb“;username=“root“;password=“123456“;public static Connection open()try Class.forName(driver);JAVA 程序设计实验报告 学期
8、:2016-2017-23return DriverManager.getConnection(url,username,password);catch (Exception e) e.printStackTrace();return null;public static void close(Connection conn)if(conn!=null)try conn.close(); catch (SQLException e) e.printStackTrace();class Sqlpackage test;import java.sql.Connection;import java.
9、sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextArea;publi
10、c class Sql public static String listToString(List list, char separator) /使 list返回 String 类型并加入控制符(换行) StringBuilder sb = new StringBuilder(); for (int i = 0; i disAll() /打印显示所有信息JAVA 程序设计实验报告 学期:2016-2017-24/查询 Connection conn=DBUtil.open();String sql=“select id,name,frctionJava,fractionMath,fracti
11、onOS from studentTbl“;Statement stmt;try stmt = conn.createStatement();ResultSet rs=stmt.executeQuery(sql);List list=new ArrayList();/遍历操作while(rs.next()int id=rs.getInt(1);String name=rs.getString(2);double a=rs.getDouble(3);double b=rs.getDouble(4);double c=rs.getDouble(5);Student u=new Student();
12、u.setId(id);u.setName(name);u.setFractionJava(a);u.setFractionMath(b);u.setFractionOS(c);list.add(u);conn.close();return list; catch (SQLException e) e.printStackTrace();return null;public static void FindByID(long id ,JLabel lblNewLabel )/按 ID 查找Connection conn=DBUtil.open();ResultSet rs = null;try
13、 String sql=“select * from StudentTbl where id=?“;PreparedStatement sts=conn.prepareStatement(sql);sts.setLong(1, id);rs=sts.executeQuery();JAVA 程序设计实验报告 学期:2016-2017-25while(rs.next()int i=rs.getInt(1);String name=rs.getString(2);double a=rs.getDouble(3);double b=rs.getDouble(4);double c=rs.getDoub
14、le(5);lblNewLabel.setText(“ | “+i+“ | “+name+“ | “+a+“ | “+b+“ | “+c);catch(Exception e) e.printStackTrace();finallytry if(rs.first()!=true)lblNewLabel.setText(“查无此人!“); catch (SQLException e) e.printStackTrace();public static void FindByName(String s, JLabel lblNewLabel) /按 Name 查找Connection conn=D
15、BUtil.open();ResultSet rs = null;try String sql=“select * from StudentTbl where name=?“;PreparedStatement sts=conn.prepareStatement(sql);sts.setString(1, s);rs=sts.executeQuery();while(rs.next()int id=rs.getInt(1);String name=rs.getString(2);double a=rs.getDouble(3);double b=rs.getDouble(4);double c
16、=rs.getDouble(5);lblNewLabel.setText(“ | “+id+“ | “+name+“ | “+a+“ | “+b+“ | “+c);JAVA 程序设计实验报告 学期:2016-2017-26catch(Exception e) e.printStackTrace();finallytryif(rs.first()!=true)lblNewLabel.setText(“查无此人!“); catch (SQLException e) e.printStackTrace();public static void DeleteByID(long id)/删除Connec
17、tion conn=DBUtil.open();PreparedStatement sts=null;int a=0;try sts=conn.prepareStatement(“delete from StudentTbl where id=?“);sts.setLong(1, id);a=sts.executeUpdate();if(a0)JOptionPane.showMessageDialog(null, “删除成功!“, “WO“, JOptionPane.INFORMATION_MESSAGE);if(a=0)JOptionPane.showMessageDialog(null,
18、“无此人!“, “WO“, JOptionPane.INFORMATION_MESSAGE);catch(Exception e) e.printStackTrace();DBUtil.close(conn);public static void Sort(JTextArea ta,int index) /排序JAVA 程序设计实验报告 学期:2016-2017-27/查询 Connection conn=DBUtil.open();String sql=“select id,name,frctionJava,fractionMath,fractionOS from studentTbl“;S
19、tatement stmt;try stmt = conn.createStatement();ResultSet rs=stmt.executeQuery(sql);List list=new ArrayList();/遍历操作while(rs.next()int id=rs.getInt(1);String name=rs.getString(2);double a=rs.getDouble(3);double b=rs.getDouble(4);double c=rs.getDouble(5);Student u=new Student();u.setId(id);u.setName(n
20、ame);u.setFractionJava(a);u.setFractionMath(b);u.setFractionOS(c);list.add(u);Collections.sort(list,new Comparator() public int compare(Student o1, Student o2) int i = 1 ;if(index=1)i= (int) (o2.getFractionJava() - o1.getFractionJava(); if(index=2)i = (int) (o2.getFractionMath() - o1.getFractionMath
21、();if(index=3)i = (int) (o2.getFractionOS() - o1.getFractionOS();return i; JAVA 程序设计实验报告 学期:2016-2017-28);String s=listToString(list, n);ta.setText(s); catch (SQLException e) e.printStackTrace();DBUtil.close(conn); public static void add(Student stu) /添加Connection conn=DBUtil.open();PreparedStatemen
22、t sts;try sts = conn.prepareStatement(“insert into StudentTbl values(?,?,?,?,?)“);sts.setLong(1, stu.getId();sts.setString(2, stu.getName();sts.setDouble(3, stu.getFractionJava();sts.setDouble(4, stu.getFractionMath();sts.setDouble(5, stu.getFractionOS();sts.executeUpdate(); catch (SQLException e) e
23、.printStackTrace();DBUtil.close(conn);public static void UpdateStudent(Student stu)/更新Connection conn=DBUtil.open();try String sql=“update studenttbl set name=“+stu.getName()+“,FrctionJava=“+ stu.getFractionJava()+“,FractionMath=“+stu.getFractionMath()+“,FractionOS=“+stu.getFractionOS()+“ where id=“
24、+stu.getId()+“;PreparedStatement sts=conn.prepareStatement(sql);sts.executeUpdate();JAVA 程序设计实验报告 学期:2016-2017-29catch(Exception e) e.printStackTrace();class Studentpackage test;import java.io.Serializable;public class Student implements Serializableprivate static final long serialVersionUID =455887
25、6142427402513L;private String name;private long id;private double fractionOS;private double fractionJava;private double fractionMath;public String getName() return name;public void setName(String name) this.name = name;public long getId() return id;public void setId(long id) this.id = id;public doub
26、le getFractionOS() return fractionOS;public void setFractionOS(double fractionOS) this.fractionOS = fractionOS;public double getFractionJava() return fractionJava;public void setFractionJava(double fractionJava) this.fractionJava = fractionJava;JAVA 程序设计实验报告 学期:2016-2017-210public double getFraction
27、Math() return fractionMath;public void setFractionMath(double fractionMath) this.fractionMath = fractionMath;public String toString() return (name+“ “+id+“ Java:“+fractionJava+“ Math:“+fractionMath+“ OS:“+fractionOS);class MyJFramepackage test;import javax.swing.JFrame;import javax.swing.JPanel;impo
28、rt java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import java.awt.Color;import javax.swing.SwingConstants;import javax.swing.JLabel;import java.awt.Font;public class MyJFrame JF
29、rame frame=new JFrame(“Demo“);/* wbp.parser.entryPointJAVA 程序设计实验报告 学期:2016-2017-211*/public void init() frame.setVisible(true);frame.setBounds(100, 100, 570, 474);/JPanelJPanel panel = new JPanel();panel.setBackground(new Color(153, 204, 255);frame.getContentPane().add(panel, BorderLayout.CENTER);p
30、anel.setLayout(null);/Panel X YJPanel panel_x = new JPanel();panel_x.setBackground(new Color(153, 204, 255);panel_x.setBounds(0, 0, 141, 435);panel.add(panel_x);panel_x.setLayout(null);JPanel panel_y = new JPanel();panel_y.setBackground(new Color(255, 255, 255);panel_y.setBounds(140, 0, 414, 435);pa
31、nel.add(panel_y);/功能按钮/+JButton b0 = new JButton(“Home“);b0.setHorizontalAlignment(SwingConstants.LEADING);b0.setBackground(new Color(255, 255, 255);b0.setBounds(34, 21, 66, 23);panel_x.add(b0);JButton b1 = new JButton(“u663Eu793A“);b1.setBackground(new Color(255, 255, 255);b1.setBounds(22, 66, 93,
32、23);panel_x.add(b1);JButton b2 = new JButton(“u67E5u627E(ID)“);b2.setBackground(new Color(255, 255, 255);JAVA 程序设计实验报告 学期:2016-2017-212b2.setBounds(22, 112, 93, 23);b2.setMargin(new Insets(0, 0, 0, 0);panel_x.add(b2);JButton b3 = new JButton(“u67E5u627E(Name)“);b3.setBackground(new Color(255, 255, 2
33、55);b3.setBounds(22, 157, 93, 23);b3.setMargin(new Insets(0, 0, 0, 0);panel_x.add(b3);JButton b4 = new JButton(“u5220u9664“);b4.setBackground(new Color(255, 255, 255);b4.setBounds(22, 200, 93, 23);panel_x.add(b4);JButton b5 = new JButton(“u6392u5E8F“);b5.setBounds(22, 243, 93, 23);b5.setBackground(n
34、ew Color(255, 255, 255);panel_x.add(b5);JButton b6 = new JButton(“u6DFBu52A0“);b6.setBounds(22, 290, 93, 23);b6.setBackground(new Color(255, 255, 255);panel_x.add(b6);JButton b7 = new JButton(“u66F4u65B0“);b7.setBounds(22, 334, 93, 23);b7.setBackground(new Color(255, 255, 255);panel_x.add(b7);JButto
35、n bExit = new JButton(“u9000u51FA“);bExit.setBounds(22, 378, 93, 23);bExit.setBackground(new Color(255, 255, 255);panel_x.add(bExit);/+/=JAVA 程序设计实验报告 学期:2016-2017-213CardLayout cl_panel_y=new CardLayout();/卡片 JPanelpanel_y.setLayout(cl_panel_y);JPanel panel_0 = new JPanel();/欢迎界面panel_0.setBackgrou
36、nd(new Color(153, 204, 255);panel_y.add(panel_0, “c0“);panel_0.setLayout(null);JLabel l1 = new JLabel(“u6B22u8FCEu4F7Fu7528u5B66u751Fu4FE1u606Fu7BA1u7406u7A0Bu5E8F“);l1.setFont(new Font(“宋体“, Font.PLAIN, 16);l1.setHorizontalAlignment(SwingConstants.CENTER);l1.setBounds(37, 33, 317, 66);panel_0.add(l
37、1);JPanel panel_1 = new JPanel();/显示panel_y.add(panel_1, “c1“);JPanel panel_2 = new JPanel();/查找panel_y.add(panel_2, “c2“);JPanel panel_3 = new JPanel();/查找panel_y.add(panel_3, “c3“);/MyJPanel.init3(panel_3);JPanel panel_4 = new JPanel();/删除panel_y.add(panel_4, “c4“);/ MyJPanel.init4(panel_4);JPanel
38、 panel_5 = new JPanel();/排序panel_y.add(panel_5, “c5“);/MyJPanel.init5(panel_5);JPanel panel_6 = new JPanel();/添加panel_y.add(panel_6, “c6“);JPanel panel_7 = new JPanel();panel_y.add(panel_7, “c7“);/MyJPanel.init6(panel_6);JAVA 程序设计实验报告 学期:2016-2017-214/=/按钮事件/=b0.addActionListener(new ActionListener(
39、) public void actionPerformed(ActionEvent e) cl_panel_y.show(panel_y, “c0“););b1.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) MyJPanel.init1(panel_1);cl_panel_y.show(panel_y, “c1“););b2.addActionListener(new ActionListener() Overridepublic void actionPerf
40、ormed(ActionEvent e) MyJPanel.init2(panel_2);cl_panel_y.show(panel_y, “c2“););b3.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) MyJPanel.init3(panel_3);cl_panel_y.show(panel_y, “c3“););b4.addActionListener(new ActionListener() Overridepublic void actionPerf
41、ormed(ActionEvent e) MyJPanel.init4(panel_4);cl_panel_y.show(panel_y, “c4“);JAVA 程序设计实验报告 学期:2016-2017-215);b5.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) MyJPanel.init5(panel_5);cl_panel_y.show(panel_y, “c5“););b6.addActionListener(new ActionListener()
42、Overridepublic void actionPerformed(ActionEvent e) MyJPanel.init6(panel_6);cl_panel_y.show(panel_y, “c6“););b7.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) MyJPanel.init7(panel_7);cl_panel_y.show(panel_y, “c7“););bExit.addActionListener(new ActionListener
43、() Overridepublic void actionPerformed(ActionEvent e) System.exit(0););class MyJPanelpackage test;JAVA 程序设计实验报告 学期:2016-2017-216import java.awt.CardLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;impo
44、rt javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.SwingConstants;import java.awt.Color;class MyJPanel/ 显示static void init1(JPanel panel)/JPanel panel=new JPanel();pan
45、el.setBackground(new Color(255, 255, 255);panel.setBounds(0, 0, 373, 382);panel.setLayout(null);JLabel l = new JLabel(“ =u4E0Bu5217u662Fu6240u6709u67E5u770Bu7684u6240u6709u6570u636Eu4FE1u606F=“);/Labell.setFont(new Font(“宋体“, Font.PLAIN, 14);l.setBounds(15, 10, 336, 29);panel.add(l);JTextArea textAr
46、ea = new JTextArea();/TextAreatextArea.setFont(new Font(“Monospaced“, Font.PLAIN, 15);textArea.setBackground(new Color(255, 255, 255);textArea.setBounds(25, 49, 326, 311);List list=new ArrayList();/转换为 Stringlist=Sql.disAll();JAVA 程序设计实验报告 学期:2016-2017-217textArea.append(Sql.listToString(list,n);panel.add(textArea);panel.repaint();/ 查找 IDstatic void init2(JPanel panel)/ JPanel panel=new JPanel();panel.setBackground(new Color(255, 255, 255);panel.setBounds(0, 0, 373, 202);panel.setLayout(null);JLabel l1 = new JLabel(“输入查找的 ID:“);l1.setB