Java大作业简单的学籍管理系统.pdf
上海电力学院上海电力学院期末作业:简单的学籍管理系统期末作业:简单的学籍管理系统课程:Web 应用程序设计院系:电气工程学院专业:电力系统及其自动化学生姓名:张富杰学号:指导教师:2017 年 1 月 6 日目录1一、设计思路.3二具体实现.3三运行调试与分析.3四设计体会与小结.8五程序代码.82一、设计思路随着社会经济的发展,入学的同学越来越多,为方便对同学学籍信息的的管理,设计学籍管理软件来管理本班级同学的学籍信息。该软件应支持添加、删除、修改、查询功能。查询方式主要是支持学号查询,例如:输入“1”,则显示该学生的信息。运用流式、卡片、整体布局方式对系统的主界面和各功能界面进行设计;通过连接数据库的方式来实现对数据的存储;各功能实现时访问数据库,并对数据信息进行读取,运用 Java 语句对其进行输出,学号查询时显示在文本框中;系统提示功能用来提醒用户的错误操作和输入时的错误信息,提醒用户进行改正。二具体实现1 向班级里插入一个学生,但必须是插在已经建立的班级里。2 输入学生信息,建立一个班级。3 修改一个学生的所有资料。4 删除某班的一个学生及其所有资料。5 删除一个班级。6根据学生姓名查找某个学生信息。每种功能通过一个类来实现:类分分为主类、查询类、修改类、添加类、增加类。主类各功能界面的连接;精确查询类(SearchStudent)实现根据学生姓名查找某个学生信息;修改类(MdifyStudent)实现修改一个学生的所有资料;添加类(AddStudent)实现向班级里插入一个学生,但必须是插在已经建立的班级里。;删除类(DeleteStudent)实现删除某班的一个学生及其所有资料。;删除类(DeleteClass)实现删除一个班级;建立类(BuiltClass)实现输入学生信息建立一个班级。三运行调试与分析系统的详细设计代码请查阅附带的代码。以下仅对各个界面进行截图展示:3图 1:管理界面4图 2:添加学生到指定的班级界面图 3:删除一个学生信息界面5图 4:修改一个学生信息界面图 5:查询某个学生信息界面6图 6 删除一个班级界面图 7:输入一个学生建立一个班级界面运行 JAVA程序中的 StudentManager 文件,显示系统的主界面,如图 1 所示,主界面有进入其他子功能的按钮,选择相应的按钮便可进入相应的功能。添加学生到指定班级功能如图 2 所示,根据提示输入要添加的信息,点击确定,将弹出7提示框,确认是否添加。输入一个学生建立一个班级功能如图 7 所示,根据提示输入要添加的信息,点击确定,将弹出提示框,确认是否建立。删除一个班级信息功能如图 6 所示,根据提示输入班级号,点击删除。删除一个学生信息功能如图 3 所示,根据提示输入学号,点击删除。修改一个学生信息功能如图 4 所示,首先输入要修改的人姓名,点击开始修改,在下面的文本框现实当前数据库内所存该人的信息,同时录入修改键变化为可点击,在文本框内输入要修改的学号,点击录入修改,系统将新信息录如数据库。点击查询某个学生信息按钮,将弹出查询对话框,输入姓名便可以精确查询到此人的所有学籍信息。查询如图5所示,将显示数据库中所存的所有号码信息。四设计体会与小结期末大作业的课设,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对 GUI 组键的应用有了更深入的认识与掌握,另外还学到了一些新东西,比如JAVA 的 SWING、AWT 包,以前是没有接触过的,可是通过这次课程设计使得我们对这个包更了解。通过与数据库的连接掌握了 Java 与数据库的连接技术。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。五程序代码package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;publicclass StudentManager extends JFrame implements ActionListener/继承JFrame 类JMenuBar jmb;/菜单栏JMenu Message;/菜单JMenuItem Item1,Item2,Item3,Item4,Item5,Item6;/菜单项public StudentManager(String s)/构造函数 StudentManage/添加按键8jmb=new JMenuBar();Message=new JMenu(学生信息);Item1=new JMenuItem(增加学生信息到指定班级);/菜单名Item2=new JMenuItem(删除一个学生学籍信息);Item3=new JMenuItem(修改一个学生信息);Item4=new JMenuItem(查询某个学生信息);Item5=new JMenuItem(删除一个班级信息);Item6=new JMenuItem(输入一个学生建立一个班级);Message.add(Item1);Message.add(Item2);Message.add(Item3);Message.add(Item4);Message.add(Item5);Message.add(Item6);jmb.add(Message);Item1.addActionListener(this);Item2.addActionListener(this);Item3.addActionListener(this);Item4.addActionListener(this);Item5.addActionListener(this);Item6.addActionListener(this);setTitle(s);/设置窗口标题setBounds(500,300,500,500);/窗口的位置setVisible(true);/组件可见setJMenuBar(jmb);/菜单栏validate();/再次布置容器及其组件setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置隐藏,关闭,放大窗口public void actionPerformed(ActionEvent e)/ActionEvent 包含一个事件,该if(e.getSource()=Item1)/e.getSource()=Item2)返回事件为执行动作事件点击按钮等的当前动作所指向的对象,包含对象的所有信息。9AddStudent ad=new AddStudent();else if(e.getSource()=Item2)/通过获取事件源,获取相应DeleteStudent ds=new DeleteStudent();ModifyStudent ms=new ModifyStudent();SearchStudent ss=new SearchStudent();DeleteClass dc=new DeleteClass();BuiltClassbc=new BuiltClass();的对象 else if(e.getSource()=Item3)else if(e.getSource()=Item4)else if(e.getSource()=Item5)else if(e.getSource()=Item6)public static void main(String args)StudentManager stu=new StudentManager(学生管理系统);package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class AddStudent extends JFrame implements ActionListener/继承java的窗口体类JLabel JL=new JLabel(添加学生到指定班级,JLabel.CENTER);JLabel JLNumber=new JLabel(学号:);/显示输入学号JTextField JTNumber=new JTextField();/创建文本框JLabel JLName=new JLabel(姓名:);JTextField JTName=new JTextField();JLabel JLClass=new JLabel(班级:);ButtonGroup BG=new ButtonGroup();JRadioButton JRB1=new JRadioButton(一班);JRadioButton JRB2=new JRadioButton(二班);10JButton JBAdd=new JButton(添加);/创建按钮JButton JBExit=new JButton(退出);public AddStudent()this.setTitle(添加学生到指定班级);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLNumber.setBounds(140,80,100,20);this.add(JLNumber);JTNumber.setBounds(180,80,80,20);this.add(JTNumber);JLName.setBounds(140,120,60,20);this.add(JLName);JTName.setBounds(180,120,80,20);this.add(JTName);JLClass.setBounds(140,160,100,20);this.add(JLClass);JRB1.setBounds(180,160,60,20);JRB2.setBounds(240,160,60,20);this.add(JRB1);this.add(JRB2);BG.add(JRB1);BG.add(JRB2);JBAdd.setBounds(120,220,60,20);this.add(JBAdd);JBAdd.addActionListener(this);JBExit.setBounds(200,220,60,20);11/x 轴和 y 轴,宽高this.add(JBExit);JBExit.addActionListener(this);this.setBounds(500,300,500,400);/添加窗口的位置this.setVisible(true);public void actionPerformed(ActionEvent e)/监听接口if(e.getSource()=JBAdd)/点击建立的时候生效String snumber=JTNumber.getText();/获取文本框中的信息String sname=JTName.getText();String sclass=一班;if(JRB1.isSelected()/单选按钮sclass=一班;sclass=二班;elseConnection con;/声明 Connection 对象/遍历查询结果集try=Class.forName(driver);/加载驱动程序conString driver=com.mysql.jdbc.Driver;/驱动程序名DriverManager.getConnection(jdbc:mysql:/localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=false,root,zfj15162642062);/1.getConnection()方法,连接 MySQL 数据库!statement 类对象,用来执行 SQL 语句!/要执行的 SQL 语句Statement statement=con.createStatement();/2.创建String sql=select*from student where id=+snumber+;ResultSet rs=statement.executeQuery(sql);/3.ResultSetif(rs.next()JOptionPane.showMessageDialog(null,该号已经存在);/else 12类,用来存放获取的结果集!提示sql=insert into student values(+snumber+,+int i=statement.executeUpdate(sql);/执行sname+,+sclass+);SQL 语句,把返回值赋给 iif(i 0)JOptionPane.showMessageDialog(null,建立成功);/提示成功elseJOptionPane.showMessageDialog(null,添加失败);/提示失败catch(Exception ee)/捕获异常if(e.getSource()=JBExit)/退出按钮监视setVisible(false);public static void main(String args)new BuiltClass();package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class BuiltClass extends JFrame implements ActionListener JLabel JL=new JLabel(输入一个学生建立一个班级,JLabel.CENTER);/什么意思13JLabel JLNumber=new JLabel(学号:);/显示输入学号JTextField JTNumber=new JTextField();/创建文本框JLabel JLName=new JLabel(姓名:);JTextField JTName=new JTextField();JLabel JLClass=new JLabel(班级:);JTextField JTClass=new JTextField();JButton JBAdd=new JButton(建立);/创建按钮JButton JBExit=new JButton(退出);/什么意思public BuiltClass()this.setTitle(输入一个学生建立一个班级);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLNumber.setBounds(140,80,100,20);this.add(JLNumber);JTNumber.setBounds(180,80,80,20);this.add(JTNumber);JLName.setBounds(140,120,60,20);this.add(JLName);JTName.setBounds(180,120,80,20);this.add(JTName);JLClass.setBounds(140,160,100,20);this.add(JLClass);JTClass.setBounds(180,160,80,20);this.add(JTClass);JBAdd.setBounds(120,220,60,20);this.add(JBAdd);JBAdd.addActionListener(this);JBExit.setBounds(200,220,60,20);this.add(JBExit);JBExit.addActionListener(this);14/x 轴和 y 轴,宽高this.setBounds(500,300,500,400);this.setVisible(true);public void actionPerformed(ActionEvent e)/什么意思?监听接口if(e.getSource()=JBAdd)/点击建立的时候生效String snumber=JTNumber.getText();/获取文本框中的信息String sname=JTName.getText();String sclass=JTClass.getText();Connection con;/声明 Connection 对象/遍历查询结果集try=Class.forName(driver);/加载驱动程序conString driver=com.mysql.jdbc.Driver;/驱动程序名DriverManager.getConnection(jdbc:mysql:/localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=false,root,zfj15162642062);/1.getConnection()方法,连接 MySQL 数据库!Statement statement=con.createStatement();/2.Stringsql=select*fromstudentwherers=statement.executeQuery(sql);ResultSetif(rs.next()JOptionPane.showMessageDialog(null,该号已经存在);/else sql=insert into student values(+snumber+,+int i=statement.executeUpdate(sql);/执行创建 statement 类对象,用来执行 SQL 语句!id=+snumber+;/3.ResultSet 类,用来存放获取的结果集!提示sname+,+sclass+);SQL 语句,把返回值赋给 i15if(i 0)JOptionPane.showMessageDialog(null,建立成功);/提示成功elseJOptionPane.showMessageDialog(null,添加失败);/提示失败catch(Exception ee)/什么意思?if(e.getSource()=JBExit)/什么意思?setVisible(false);public static void main(String args)new BuiltClass();package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class DeleteClass extends JFrame implements ActionListener JLabel JL=new JLabel(删除一个班级信息,JLabel.CENTER);JLabel JLClass=new JLabel(班级:);/显示班级窗口JTextField JTClass=new JTextField();/输入班级的窗口16JButton JBDel=new JButton(删除);JButton JBExit=new JButton(退出);public DeleteClass()public void actionPerformed(ActionEvent e)/执行操作if(e.getSource()=JBDel)String sclass=JTClass.getText();/获取文本中输入的班级Connection con;/声明 Connection 对象/遍历查询结果集17this.setTitle(删除一个班级信息);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLClass.setBounds(140,80,60,20);this.add(JLClass);JTClass.setBounds(180,80,80,20);this.add(JTClass);JBDel.setBounds(120,120,60,20);this.add(JBDel);JBDel.addActionListener(this);JBExit.setBounds(200,120,60,20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(500,300,500,400);this.setVisible(true);String driver=com.mysql.jdbc.Driver;/驱动程序名try=Class.forName(driver);/加载驱动程序conDriverManager.getConnection(jdbc:mysql:/localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=false,root,zfj15162642062);/1.getConnection()方法,连接 MySQL 数据库!18Statement statement=con.createStatement();/2.Stringsql=select*fromstudentwhereResultSetcatch(Exception er)if(rs.next()sql=delete from student where class=+sclass+;int n=statement.executeUpdate(sql);if(n 0)JOptionPane.showMessageDialog(null,删除成功);JOptionPane.showMessageDialog(null,删除失败);elsers=statement.executeQuery(sql);创建 statement 类对象,用来执行 SQL 语句!class=+sclass+;/3.ResultSet 类,用来存放获取的结果集!else JOptionPane.showMessageDialog(null,不存在该班级);if(e.getSource()=JBExit)setVisible(false);public static void main(String args)new DeleteClass();package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class DeleteStudent extends JFrame implements ActionListener JLabel JL=new JLabel(删除一个学生信息,JLabel.CENTER);JLabel JLNumber=new JLabel(学号:);/显示输入“学号”JTextField JTNumber=new JTextField();/输入学号的文本框JLabel JLClass=new JLabel(班级:);/显示输入“班级”JTextField JTClass=new JTextField();/输入班级的文本框JLabel JLName=new JLabel(姓名:);/显示输入“姓名”JTextField JTName=new JTextField();/输入姓名的文本框JButton JBDel=new JButton(删除);/删除键JButton JBExit=new JButton(退出);/退出键public DeleteStudent()this.setTitle(删除一个学生信息);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLNumber.setBounds(140,80,100,20);/x 轴和 y 轴,宽高this.add(JLNumber);JTNumber.setBounds(180,80,80,20);this.add(JTNumber);19JLName.setBounds(140,120,80,20);/x 轴和 y 轴,宽高this.add(JLName);JTName.setBounds(180,120,80,20);this.add(JTName);JLClass.setBounds(140,160,80,20);/x 轴和 y 轴,宽高this.add(JLClass);JTClass.setBounds(180,160,80,20);this.add(JTClass);JBDel.setBounds(120,200,60,20);this.add(JBDel);JBDel.addActionListener(this);JBExit.setBounds(200,200,60,20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(500,300,500,400);this.setVisible(true);public void actionPerformed(ActionEvent e)if(e.getSource()=JBDel)Connection con;/声明 Connection 对象/遍历查询结果集try=Class.forName(driver);/加载驱动程序conString snumber=JTNumber.getText();/获取输入的学号String driver=com.mysql.jdbc.Driver;/驱动程序名DriverManager.getConnection(jdbc:mysql:/localhost:3306/database?useUnicode=t20rue&characterEncoding=utf-8&useSSL=false,root,zfj15162642062);21Statement statement=con.createStatement();/2.Stringsql=select*fromstudentwherers=statement.executeQuery(sql);ResultSetcatch(Exception er)if(rs.next()sql=delete from student where id=+snumber+;int n=statement.executeUpdate(sql);if(n 0)JOptionPane.showMessageDialog(null,删除成功);/创建 statement 类对象,用来执行 SQL 语句!id=+snumber+;/3.ResultSet 类,用来存放获取的结果集!执行了返回删除成功elseJOptionPane.showMessageDialog(null,不存在该学号学生);JOptionPane.showMessageDialog(null,删除失败);else if(e.getSource()=JBExit)setVisible(false);public static void main(String args)new DeleteStudent();package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class ModifyStudent extends JFrame implements ActionListener JLabel JL=new JLabel(修改一个学生信息,JLabel.CENTER);JLabel JLNumber=new JLabel(学号:);/显示学号JTextField JTNumber=new JTextField();/创建用于输入学号的文本JLabel JLName=new JLabel(姓名:);JTextField JTName=new JTextField();JLabel JLClass=new JLabel(班级:);JTextField JTClass=new JTextField();JButton JBGet=new JButton(修改);/修改按钮JButton JBExit=new JButton(退出);public ModifyStudent()this.setTitle(修改一个学生信息);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLNumber.setBounds(140,80,100,20);/x 轴和 y 轴,宽高this.add(JLNumber);JTNumber.setBounds(180,80,80,20);this.add(JTNumber);JLName.setBounds(140,120,60,20);this.add(JLName);22JTName.setBounds(180,120,80,20);this.add(JTName);JLClass.setBounds(140,160,100,20);this.add(JLClass);JTClass.setBounds(180,160,80,20);this.add(JTClass);JBGet.setBounds(120,220,60,20);this.add(JBGet);JBGet.addActionListener(this);JBExit.setBounds(200,220,60,20);this.add(JBExit);JBExit.addActionListener(this);this.setBounds(500,300,500,400);this.setVisible(true);public void actionPerformed(ActionEvent e)if(e.getSource()=JBGet)String snumber=JTNumber.getText();/读取文本中输入的学号String sname=JTName.getText();String sclass=JTClass.getText();Connection con;/声明 Connection 对象/遍历查询结果集try=Class.forName(driver);/加载驱动程序conString driver=com.mysql.jdbc.Driver;/驱动程序名DriverManager.getConnection(jdbc:mysql:/localhost:3306/database?useUnicode=true&characterEncoding=utf-8&useSSL=false,root,zfj15162642062);/1.getConnection()方法,连接 MySQL 数据库!2324Statement statement=con.createStatement();/2.Stringsql=select*fromstudentwhere/根据 id 对数据库查询rs=statement.executeQuery(sql);ResultSetcatch(Exception er)if(rs.next()sql=UPDATE student SET name=+sname+,class=+sclass+intif(n 0)JOptionPane.showMessageDialog(null,修改成功);JOptionPane.showMessageDialog(null,修改失败);elsen=创建 statement 类对象,用来执行 SQL 语句!id=+snumber+;/3.ResultSet 类,用来存放获取的结果集!where id=+snumber+;/什么意思?statement.executeUpdate(sql);else JOptionPane.showMessageDialog(null,不存在该学号学生);if(e.getSource()=JBExit)public static void main(String args)new ModifyStudent();setVisible(false);package simplebighomework;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class SearchStudent extends JFrame implements ActionListener JLabel JL=new JLabel(查询某个学生信息,JLabel.CENTER);JLabel JLNumber=new JLabel(学号:);JTextField JTNumber=new JTextField();/输入学号的文本JLabel JLName=new JLabel(姓名:);JTextField JTName=new JTextField();JLabel JLClass=new JLabel(班级:);JTextField JTClass=new JTextField();JButton JBSet=new JButton(查询);/查询按钮JButton JBExit=new JButton(退出);/退出按钮public SearchStudent()/设置窗口的大小,位置this.setTitle(查询某个学生信息);this.setLayout(null);JL.setBounds(100,30,200,40);this.add(JL);JLNumber.setBounds(140,80,80,20);/x 轴和 y 轴,宽高this.add(JLNumber);JTNumber.setBounds(180,80,80,20);this.add(JTNumber);JLName.setBounds(140,120,80,20);/x 轴和 y 轴,宽高this.add(JLName);JTName.setBounds(180,120,80,20);this.add(JTName);JLClass.setBounds(140,160,80,20);/x 轴和 y 轴,宽高this.add(JLClass);25JTClass.setBounds(180,160,80,20);this.add(JTClass);JBSet.setBounds(120,200,60,20);this.add(JBSet);JBSet.addActionListener(this);JBExit.setBounds(200,200,60,20);this.add(