精华内容
下载资源
问答
  • Java课设学生选课系统

    2018-07-31 21:32:32
    Java学生选课系统 有界面 采用文档存储无数据库 初次使用 管理员账户:DlPF 密码:961227 所有信息要手动添加
  • java课设教学管理系统

    2010-12-29 19:13:22
    java课设教学管理系统,教学管理系统作为一款管理软件,可以更好的管理学校各个方面的人员信息,如学生、教师、管理员等。更加方便快捷。是学校的管理更加的系统化,简洁化。此款软件运用了Java语言和SQL软件。两...
  • 学生成绩管理系统 1.课程设计目标 因为高等学校快速发展高校规模越来越大学生数量和课程数量全部在快速地增加管理上手工操作不仅仅会花费学生和工作人员大量时间和精力效率和正确性也很低怎样使同学们方便快捷正确地...
  • Java课设学生管理系统

    千次阅读 多人点赞 2019-05-21 16:21:23
    文章目录StudentManagerStudentManagerMain.javaStuInfo.javaClassInfo.javaScoreInfo.javaAdd.javaDelete.java StudentManager 查询学生的个人基本信息,查询课程表、选课情况,...这是一个比较简单的管理系统,具...

    系统概述

    查询学生的个人基本信息,查询课程表、选课情况,查询课程的成绩信息。其中课程表及选课信息和成绩信息无法改动,个人基本信息可以添加或者删除。
    这是一个比较简单的管理系统,具备简单的添删查功能,适合学习用。
    首先设计好数据库,软件为Microsoft SQL server

    1. 表名:成绩信息,课程信息,学生基本信息
    2. 列名,字段属性:
      学生基本信息:学号varchar(8) notnull,姓名char(10)notnull,性别varchar(2)notnull,出生年月varchar(20),籍贯varchar(20),班级varchar(20),专业varchar(20),系varchar(20)
      课程信息:课程号varchar(8)notnull,课程名varchar(20)notnull,学分 tinyint,学时 tinyint
      成绩信息:学号 varchar(8)notnull,课程号 char(8)notnull,成绩 tinyint,已获学分tinyint
    3. 主键:学生基本信息:学号
      课程信息:课程号
      成绩信息:学号,课程号

    设置好后,随便往数据库里输入两个人的信息
    设置好后,随便往数据库里输入两个人的信息
    设计类:
    主界面类:MainFrame
    学生信息界面类:StuInfo
    课程信息界面类:ClassInfo
    成绩信息界面类:ScoreInfo
    添加学生信息方法类:Add
    添加学生信息界面类:AddFrame
    删除学生信息方法类:Delete
    删除学生信息界面类:DeleteFrame


    代码段

    MainFrame.java

    package StuManager;
    
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import java.awt.Font;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class MainFrame extends JFrame {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					MainFrame frame = new MainFrame();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public MainFrame() {
    		setTitle("\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(600, 300, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    		String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=学生管理系统数据库";
    		String userName="sa";
    		String pwd="w12621058";
    		String tab1="学生基本信息";
    		String tab2="课程信息";
    		String tab3="成绩信息";
    		
    		JButton btnNewButton = new JButton("\u5B66\u751F\u4FE1\u606F\u67E5\u8BE2");
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				new StuInfo(driver,url,userName,pwd,tab1);
    			}
    		});
    		btnNewButton.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		btnNewButton.setBounds(125, 98, 171, 27);
    		contentPane.add(btnNewButton);
    		
    		JButton btnNewButton_1 = new JButton("\u8BFE\u7A0B\u67E5\u8BE2");
    		btnNewButton_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				new ClassInfo(driver,url,userName,pwd,tab2);
    			}
    		});
    		btnNewButton_1.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		btnNewButton_1.setBounds(151, 149, 113, 27);
    		contentPane.add(btnNewButton_1);
    		
    		JButton btnNewButton_2 = new JButton("\u5B66\u5206\u67E5\u8BE2");
    		btnNewButton_2.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				new ScoreInfo(driver,url,userName,pwd,tab3);
    			}
    		});
    		btnNewButton_2.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		btnNewButton_2.setBounds(151, 199, 113, 27);
    		contentPane.add(btnNewButton_2);
    		
    		JLabel label = new JLabel("\u6B22\u8FCE\u6765\u5230\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF(\u6559\u5E08\u6A21\u5F0F)");
    		label.setFont(new Font("微软雅黑", Font.BOLD, 25));
    		label.setBounds(35, 40, 383, 43);
    		contentPane.add(label);
    		
    		JMenuBar menuBar = new JMenuBar();
    		menuBar.setToolTipText("");
    		menuBar.setBounds(0, 0, 432, 27);
    		contentPane.add(menuBar);
    		
    		JMenu mnNewMenu = new JMenu("\u4FE1\u606F\u66F4\u65B0");
    		menuBar.add(mnNewMenu);
    		
    		JMenuItem mntmNewMenuItem = new JMenuItem("\u5B66\u751F\u4FE1\u606F\u5F55\u5165");
    		mntmNewMenuItem.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				AddFrame af1=new AddFrame(driver,url,userName,pwd);
    				af1.setVisible(true);
    			}
    		});
    		mnNewMenu.add(mntmNewMenuItem);
    		
    		JMenuItem menuItem = new JMenuItem("\u5B66\u751F\u4FE1\u606F\u5220\u9664");
    		menuItem.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				DeleteFrame df1=new DeleteFrame(driver,url,userName,pwd);
    				df1.setVisible(true);
    			}
    		});
    		mnNewMenu.add(menuItem);
    	}
    }
    

    StuInfo.java

    package StuManager;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    class StuInfo extends JFrame{
     /**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    JTable table=new JTable();
    private Connection conn;
    public StuInfo(String drv,String url,String usr,String pwd,String tb)
    {
    this.setBounds(500,300,800,200);
    this.setTitle("学生基本信息");
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    try{
             Class.forName(drv);
             this.conn=DriverManager.getConnection(url,usr,pwd);
             table=query(tb);
        }   catch(Exception e){e.printStackTrace();}
    this.getContentPane().add(new JScrollPane(table));
    this.setVisible(true);
    try{conn.close();}catch(Exception e){e.printStackTrace();}
    }
    
    public JTable query(String table) throws SQLException{
    DefaultTableModel tbmode=new DefaultTableModel();
    String sql="SELECT * FROM "+table+";";
    try{
    Statement Stmt=conn.createStatement();
    ResultSet rs= Stmt.executeQuery(sql);
    ResultSetMetaData meta=rs.getMetaData();
    int colcount=meta.getColumnCount();
    for(int i=1;i<=colcount;i++)
        tbmode.addColumn(meta.getColumnName(i));
    Object[]col=new Object[colcount];
    while(rs.next()){
      for(int j=1;j<=col.length;j++)
          col[j-1]=rs.getString(j);
      tbmode.addRow(col);
    }
    rs.close();
    Stmt.close();
    }catch(Exception e){e.printStackTrace();} 
    return new JTable(tbmode);
    }
    }
    

    ClassInfo.java

    package StuManager;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    class ClassInfo extends JFrame{
     /**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    JTable table=new JTable();
    private Connection conn;
    public ClassInfo(String drv,String url,String usr,String pwd,String tb)
    {
    this.setBounds(500,300,800,200);
    this.setTitle("课程信息");
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    try{
             Class.forName(drv);
             this.conn=DriverManager.getConnection(url,usr,pwd);
             table=query(tb);
        }   catch(Exception e){e.printStackTrace();}
    this.getContentPane().add(new JScrollPane(table));
    this.setVisible(true);
    try{conn.close();}catch(Exception e){e.printStackTrace();}
    }
    
    public JTable query(String table) throws SQLException{
    DefaultTableModel tbmode=new DefaultTableModel();
    String sql="SELECT * FROM "+table+";";
    try{
    Statement Stmt=conn.createStatement();
    ResultSet rs= Stmt.executeQuery(sql);
    ResultSetMetaData meta=rs.getMetaData();
    int colcount=meta.getColumnCount();
    for(int i=1;i<=colcount;i++)
        tbmode.addColumn(meta.getColumnName(i));
    Object[]col=new Object[colcount];
    while(rs.next()){
      for(int j=1;j<=col.length;j++)
          col[j-1]=rs.getString(j);
      tbmode.addRow(col);
    }
    rs.close();
    Stmt.close();
    }catch(Exception e){e.printStackTrace();} 
    return new JTable(tbmode);
    }
    }
    

    ScoreInfo.java

    package StuManager;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    class ScoreInfo extends JFrame{
     /**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    JTable table=new JTable();
    private Connection conn;
    public ScoreInfo(String drv,String url,String usr,String pwd,String tb)
    {
    this.setBounds(500,300,800,200);
    this.setTitle("成绩信息");
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    try{
             Class.forName(drv);
             this.conn=DriverManager.getConnection(url,usr,pwd);
             table=query(tb);
        }   catch(Exception e){e.printStackTrace();}
    this.getContentPane().add(new JScrollPane(table));
    this.setVisible(true);
    try{conn.close();}catch(Exception e){e.printStackTrace();}
    }
    
    public JTable query(String table) throws SQLException{
    DefaultTableModel tbmode=new DefaultTableModel();
    String sql="SELECT * FROM "+table+";";
    try{
    Statement Stmt=conn.createStatement();
    ResultSet rs= Stmt.executeQuery(sql);
    ResultSetMetaData meta=rs.getMetaData();
    int colcount=meta.getColumnCount();
    for(int i=1;i<=colcount;i++)
        tbmode.addColumn(meta.getColumnName(i));
    Object[]col=new Object[colcount];
    while(rs.next()){
      for(int j=1;j<=col.length;j++)
          col[j-1]=rs.getString(j);
      tbmode.addRow(col);
    }
    rs.close();
    Stmt.close();
    }catch(Exception e){e.printStackTrace();} 
    return new JTable(tbmode);
    }
    }
    

    实际上这三个Info类除了连接的表不同,获取表的函数完全一样


    Add.java

    package StuManager;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    import javax.swing.JOptionPane;
    
    public class Add{
    	private Connection conn;
    	public Add(String a,String b,String c,String d,String i,String f,String g,String h,String drv,String url,String usr,String pwd){
    		try{
    	        Class.forName(drv);
    	        conn=DriverManager.getConnection(url,usr,pwd);
    	        String sql="insert into 学生基本信息(学号,姓名,性别,出生年月,籍贯,班级,专业,系) VALUES('"+a+"','"+b+"','"+d+"','"+c+"','"+i+"','"+f+"','"+g+"','"+h+"')";	
    	        java.sql.Statement stmt=conn.createStatement();
    	        stmt.executeUpdate(sql);
    	        conn.close();
    	        JOptionPane.showMessageDialog(null, "添加成功!");
    	        } catch (ClassNotFoundException e) {
    	        	JOptionPane.showMessageDialog(null, "添加失败!");
    	            e.printStackTrace();
    	        }
    	        catch (SQLException e) {
    	        	JOptionPane.showMessageDialog(null, "添加失败!");
    	            e.printStackTrace();
    	        }      	
    	}	
    }
    

    Delete.java

    package StuManager;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JOptionPane;
    
    public class Delete {
    	private Connection conn;
    	public Delete(String drv,String url,String usr,String pwd,String tb){
            try{
            	Class.forName(drv);
            	conn=DriverManager.getConnection(url,usr,pwd);
            	String sql1="delete from 学生基本信息 where 学号='"+tb+"'";	
            	java.sql.Statement stmt1=conn.createStatement();
            	stmt1.executeUpdate(sql1);
            	String sql2="delete from 成绩信息 where 学号='"+tb+"'";	
            	Statement stmt2 = conn.createStatement();
            	stmt2.executeUpdate(sql2);
            	conn.close();
            	JOptionPane.showMessageDialog(null, "删除成功!");
            	} catch (ClassNotFoundException e) {
            		JOptionPane.showMessageDialog(null, "删除失败!");
            	    e.printStackTrace();
            	}
            	catch (SQLException e) {
            		JOptionPane.showMessageDialog(null, "删除失败!");
            	    e.printStackTrace();
            	}      	
            
    	}
    
    }
    

    AddFrame.java

    package StuManager;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import java.awt.Font;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    import java.awt.Color;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class AddFrame extends JFrame {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
    	private JTextField textField;
    	private JTextField textField_1;
    	private JTextField textField_2;
    	private JTextField textField_3;
    	private JTextField textField_4;
    	private JTextField textField_5;
    	private JTextField textField_6;
    	private JTextField textField_7;
    	JButton btnNewButton;
    
    	/**
    	 * Create the frame.
    	 */
    	public AddFrame(String drv,String url,String usr,String pwd) {
    		setTitle("\u6DFB\u52A0\u5B66\u751F\u4FE1\u606F");
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setBounds(500, 200, 450, 528);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		
    		JLabel label = new JLabel("\u5B66\u53F7\uFF08\u5FC5\u586B\uFF09");
    		label.setBounds(69, 40, 90, 20);
    		label.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_1 = new JLabel("\u59D3\u540D\uFF08\u5FC5\u586B\uFF09");
    		label_1.setBounds(69, 82, 90, 20);
    		label_1.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_2 = new JLabel("\u6027\u522B\uFF08\u5FC5\u586B\uFF09");
    		label_2.setBounds(69, 124, 90, 20);
    		label_2.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_3 = new JLabel("\u51FA\u751F\u5E74\u6708");
    		label_3.setBounds(69, 166, 60, 20);
    		label_3.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_4 = new JLabel("\u7C4D\u8D2F");
    		label_4.setBounds(69, 208, 30, 20);
    		label_4.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_5 = new JLabel("\u73ED\u7EA7");
    		label_5.setBounds(69, 250, 30, 20);
    		label_5.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_6 = new JLabel("\u4E13\u4E1A");
    		label_6.setBounds(69, 292, 30, 20);
    		label_6.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		JLabel label_7 = new JLabel("\u7CFB");
    		label_7.setBounds(69, 334, 15, 20);
    		label_7.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		btnNewButton = new JButton("\u6DFB\u52A0");
    		btnNewButton.setBounds(175, 418, 74, 29);
    		
    		btnNewButton.setForeground(Color.BLACK);
    		btnNewButton.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		
    		textField = new JTextField();
    		textField.setBounds(219, 39, 153, 24);
    		textField.setColumns(10);
    				
    		textField_1 = new JTextField();
    		textField_1.setBounds(219, 81, 153, 24);
    		textField_1.setColumns(10);
    				
    		textField_2 = new JTextField();
    		textField_2.setBounds(219, 123, 153, 24);
    		textField_2.setColumns(10);
    				
    		textField_3 = new JTextField();
    		textField_3.setBounds(219, 165, 153, 24);
    		textField_3.setColumns(10);
    				
    		textField_4 = new JTextField();
    		textField_4.setBounds(219, 207, 153, 24);
    		textField_4.setColumns(10);
    				
    		textField_5 = new JTextField();
    		textField_5.setBounds(219, 249, 153, 24);
    		textField_5.setColumns(10);
    		
    		textField_6 = new JTextField();
    		textField_6.setBounds(219, 291, 153, 24);
    		textField_6.setColumns(10);
    					
    		textField_7 = new JTextField();
    		textField_7.setBounds(219, 333, 153, 24);
    		textField_7.setColumns(10);
    				
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				if(e.getSource()==btnNewButton){
    					String a=textField.getText();
    					String b=textField_1.getText();
    					String c=textField_2.getText();
    					String d=textField_3.getText();
    					String i=textField_4.getText();
    					String f=textField_5.getText();
    					String g=textField_6.getText();
    					String h=textField_7.getText();
    				    new Add(a,b,d,c,i,f,g,h,drv,url,usr,pwd);
    			}
    			}
    		});
    		contentPane.setLayout(null);
    		contentPane.add(label);
    		contentPane.add(label_1);
    		contentPane.add(label_2);
    		contentPane.add(label_4);
    		contentPane.add(label_3);
    		contentPane.add(label_5);
    		contentPane.add(label_6);
    		contentPane.add(label_7);
    		contentPane.add(textField_7);
    		contentPane.add(textField_6);
    		contentPane.add(textField_5);
    		contentPane.add(textField_4);
    		contentPane.add(textField_3);
    		contentPane.add(textField);
    		contentPane.add(textField_1);
    		contentPane.add(textField_2);
    		contentPane.add(btnNewButton);
    	}
    }
    

    DeleteFrame.java

    package StuManager;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import java.awt.Font;
    import java.awt.Color;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class DeleteFrame extends JFrame {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
    	private JTextField textField;
    
    	/**
    	 * Create the frame.
    	 */
    	public DeleteFrame(String drv,String url,String usr,String pwd) {
    		setTitle("\u5220\u9664\u4FE1\u606F");
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setBounds(500, 200, 451, 122);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		
    		textField = new JTextField();
    		textField.setBounds(127, 28, 135, 24);
    		textField.setColumns(10);
    		
    		JButton button = new JButton("\u5220\u9664");
    		button.setBounds(293, 26, 72, 27);
    		button.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String a=textField.getText();
    				new Delete(drv,url,usr,pwd,a);
    			}
    		});
    		contentPane.setLayout(null);
    		button.setForeground(Color.RED);
    		button.setFont(new Font("微软雅黑", Font.BOLD, 15));
    		contentPane.add(button);
    		contentPane.add(textField);
    		
    		JLabel label = new JLabel("\u5B66\u53F7\uFF1A");
    		label.setFont(new Font("宋体", Font.BOLD, 15));
    		label.setBounds(63, 31, 48, 18);
    		contentPane.add(label);
    	}
    
    }
    

    运行

    主界面

    在这里插入图片描述

    学生信息查询表

    查询表

    添加信息

    在这里插入图片描述
    在这里插入图片描述

    删除信息

    在这里插入图片描述

    课程信息查询

    在这里插入图片描述

    成绩信息查询

    在这里插入图片描述


    相关问题会持续更新~

    展开全文
  • Java这门课程的课程设计,是一个学生管理系统,有增删改查功能,适合初学者参考运用。
  • 管理员可以方便的在菜单中选择对学院,专业的删除和添加,对学生信息的添加,删除,查询,修改。在对这些信息进行处理后要求...此外,添加日志文件,以供查看操作的记录,操作界面美观,实现基本的学籍管理系统的功能。
  • 学生信息管理系统java课设
  • 大二时候的课设JAVA链接MySQL实现的学生信息管理系统学生选课管理系统。使用SWing实现GUI设计,实现学生和管理员两种身份登录,教师身份由于时间问题没有完成。
  • 1.团队课程设计博客链接 ...2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示、退出等功能。...(1)需要管理学生信息有:学号、姓名、性别、出生日期、政治面貌、家庭住址、电话...

    1.团队课程设计博客链接

    http://www.cnblogs.com/Min21/p/7064093.html

    2.个人负责模板或任务说明

    设计登陆界面和学生信息界面的设计,学生信息的显示、退出等功能。

    3.自己的代码提交记录截图

    1109705-20170622110200570-2064488882.png

    4.自己负责模块或任务详细说明

    (一)总体设计(概要设计)

    系统主要功能
    (1)需要管理的学生信息有:学号、姓名、性别、出生日期、政治面貌、家庭住址、电话、宿舍号。
    (2)点清空按钮,数据将会清空。实际上它的作用就是清空输入栏。方便再往里面加入数据。
    (3)查看功能:首先输入要查看的学号,点查看,信息将会显示在输入栏中。如果学号不存在,下面会有提示。
    (4)修改功能:为了防止误修改,首先要查看,才能修改,查看后直接改输入栏中的数据,点击修改,既修改成功。
    (5)删除功能:先输入要删除的学号,点删除,该学生的信息将被移除,在查看该学号,将不存在。
    (6)显示功能:你输入的数据通过序列化保存在一个文档里,点击显示, 会跳出一个窗口,能把它们全部显示出来。
    (7)系统退出:其实就是退出登录状态,返回登录界面。可以再重新登录。
    数据存储:文件。

    流程图:
    1109705-20170622110437007-136902927.png

    (二)本人负责的主要功能展示与代码分析

    (1)学生登陆界面。
    程序运行显示的第一个界面。输入用户名和密码就可以进入管理界面。
    用户名:admin
    密码:admin
    1109705-20170622110520101-1360458531.png

    用户名或密码错误会报错:
    1109705-20170622110531804-1966612285.png

    重置用于清空输入栏

    主要代码:

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    class LoginCheck{
        private String name;
        private String password;
        public LoginCheck(String name,String password){
            this.name=name;
            this.password=password;
        }
        public boolean equals(){
            if("admin".equals(name)&&"admin".equals(password)){
                return true;
            }else{
                return false;
            }
        }
    };
    class ActionHandle{
        private JFrame frame=new JFrame("学生信息管理系统");
        private JTextField name=new JTextField();//设置文本框
        private JPasswordField pass=new JPasswordField();
        private JLabel but1=new JLabel("用户名:");
        private JLabel but2=new JLabel("密   码:");
        private JButton but3=new JButton("登陆");
        private JButton but4=new JButton("重置");
        
        public ActionHandle(){
            but3.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    if(e.getSource()==but3){
                        String sname=name.getText();
                        String spass=new String(pass.getPassword());
                        LoginCheck log=new LoginCheck(sname,spass);
                        if(log.equals()){
                            try {
                                new Menu();
                            } catch (Exception e1) {
                                
                                e1.printStackTrace();
                            }
                            frame.setVisible(false);
                            
                        }else{
                            JOptionPane.showMessageDialog(null, "登录失败,错误的用户名或密码!");
                        }
                    }
                }                   
            });     
            but4.addActionListener(
    new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    if(e.getSource()==but4){
                        name.setText("");
                        pass.setText("");
                    }
                }
    
            });
            frame.setLayout(null);
            but1.setBounds(80, 40 , 80,30);
            name.setBounds(140,40, 120, 30);    //
            but2.setBounds(80, 80 , 80,30);
            pass.setBounds(140,80, 120, 30);
            but3.setBounds(100, 150 , 60,30);
            but4.setBounds(180, 150 , 60,30);
            frame.setSize(400,330);     
            frame.setLocation(300, 200);
            frame.add(but1);
            frame.add(name);
            frame.add(pass);
            frame.add(but2);
            frame.add(but3);
            frame.add(but4);
            frame.setVisible(true);
        }
    }
    public class  Enter{
        public static void main(String[] args) {
            
            new ActionHandle();
        }
    
    }

    (2)学生信息的显示、退出。

    当输入学生信息后,信息保存到文件中,之后点击显示按钮,即可得到
    如下图:
    1109705-20170622110627632-709276497.png
    1109705-20170622110647226-962779188.png

    代码展示:

    package Student;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.Enumeration;
    import java.util.Hashtable;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.*;
    public class Menu {
        private JButton but1 = new JButton("增加数据"); // 按钮
        private JButton but2 = new JButton("删除数据");
        private JButton but3 = new JButton("修改数据");
        private JButton but4 = new JButton("查看数据");
        private JButton but0 = new JButton("系统退出");
        private JButton but5 = new JButton("显示");
        private JButton clear = new JButton("清空");
        private JTextField number = new JTextField();// 文本框
        private JTextField name = new JTextField();
        private JTextField dor = new JTextField();
        private JTextField address = new JTextField();
        private JTextField sex = new JTextField();
        private JTextField date = new JTextField();
        private JTextField pol = new JTextField();
        private JTextField phone = new JTextField();
    
        private JTextArea show = new JTextArea(16, 30); 
        private JLabel lab1 = new JLabel("姓名:");// 标签
        private JLabel lab2 = new JLabel("宿舍号:");
        private JLabel num = new JLabel("学号:");
        private JLabel lab4 = new JLabel("家庭住址:");
        private JLabel lab5 = new JLabel("性别:");
        private JLabel lab6 = new JLabel("出生日期:");
        private JLabel lab7 = new JLabel("政治面貌:");
        private JLabel lab8 = new JLabel("电话:");
        // private JLabel lab3 = new JLabel("请输入内容,完成操作。");
    
        private JFrame frame = new JFrame("信息管理系统"); // 框架
        private JFrame frame1 = new JFrame("显示信息");
    
        Hashtable<String, Person> has = new Hashtable<String, Person>();// 哈希表,加密,文件乱码    
        File file = new File("学生信息.txt");// 新建一个文件
        public Menu() {
            if (!file.exists()) {
                try {
                    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));// 把一个实例的对象以文件的形式保存到磁盘上。        out.writeObject(has);
                    out.close();
                } catch (IOException e) {
                }
            }
            but5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (e.getSource() == but5) {
                        frame1.setVisible(true);
                        try {
                            ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
                            has = (Hashtable) in.readObject();
                            in.close();
                        } catch (Exception ee) {
                        }
                        if (has.isEmpty()) {
                            show.append("目前还没有学生的信息记录!\n");
    // append(s:String)向文本域的文本追加字符串,简单的说就像system.out.println()                  
    } else {
                                                
                        for (Enumeration enu = has.elements(); enu.hasMoreElements();) {
    //存入内存的内容如果不经过遍历是显示不出来的
                                Person per = (Person) enu.nextElement();
                                String str = "  <学号>:" + per.getNum() + "\n" + "  <姓名>:" + per.getName() + "\n" + "  <宿舍号>:"
                                        + per.getDor() + "\n" + "  <家庭住址>:" + per.getAddress() + "\n" + "  <性别>:"
                                        + per.getSex() + "\n" + "<出生日期>:" + per.getDate() + "\n" + "  <政治面貌>:"
                                        + per.getPol() + "\n" + " <电话>:" + per.getPhone() + "\n" + "\n";
                                show.append(str);
                            }
                            String str2 = "------------------------------结束---------------------------------------------------"
                                    + "\n";
                            show.append(str2);
                        }
                    }
                }
    
            });
            but0.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (e.getSource() == but0) {
                        frame.setVisible(false);
                        new ActionHandle();
                    }
                }
            });
            frame.setLayout(null);
            but1.setBounds(30, 35, 90, 25);
            but2.setBounds(30, 75, 90, 25);
            but3.setBounds(30, 115, 90, 25);
            but4.setBounds(30, 155, 90, 25);
            but0.setBounds(240, 430, 100, 25); // setBounds(x,y,width,height);
            num.setBounds(150, 30, 70, 25);
            lab1.setBounds(150, 65, 70, 25);
            lab2.setBounds(150, 100, 70, 25);//
            lab4.setBounds(150, 135, 70, 25);
            lab5.setBounds(150, 170, 70, 25);
            lab6.setBounds(150, 205, 70, 25);
            lab7.setBounds(150, 240, 70, 25);
            lab8.setBounds(150, 275, 70, 25);
            number.setBounds(230, 30, 90, 25);
            name.setBounds(230, 65, 90, 25);
            dor.setBounds(230, 100, 90, 25);
            address.setBounds(230, 135, 90, 25);
            sex.setBounds(230, 170, 90, 25);
            date.setBounds(230, 205, 90, 25);
            pol.setBounds(230, 240, 90, 25);
            phone.setBounds(230, 275, 90, 25);
            // lab3.setBounds(130, 390, 250, 25);
            clear.setBounds(250, 310, 60, 25);
            but5.setBounds(150, 310, 60, 25);
            frame.add(lab1);
            frame.add(lab2);
            //frame.add(lab3);
            frame.add(lab4);
            frame.add(lab5);
            frame.add(lab6);
            frame.add(lab7);
            frame.add(lab8);
            frame.add(num);
            frame.add(number);
            frame.add(name);
            frame.add(dor);
            frame.add(address);
            frame.add(sex);
            frame.add(date);
            frame.add(pol);
            frame.add(phone);
            frame.add(clear);
            frame.add(but1);
            frame.add(but2);
            frame.add(but3);
            frame.add(but4);
            frame.add(but0);
            JScrollPane scroll = new JScrollPane(show);
                frame1.add(scroll,BorderLayout.CENTER);      
    frame.add(but5);
            frame.setSize(400, 500); // 页面大小
            frame1.setBounds(200, 200, 400, 300);
            frame.setLocation(300, 200);
            frame.setVisible(true);
            frame1.setVisible(false);
        }
    }

    5.课程设计感想

    1.功能比较齐全,增删改查都有,虽然GUI设计得比较简陋。
    2.需要完善添加统计学生各门科目成绩,班级平均分等。

    转载于:https://www.cnblogs.com/Min21/p/7063877.html

    展开全文
  • Java数据库课设 学生选课管理系统(源代码)

    千次阅读 多人点赞 2020-07-02 22:16:07
    设计一个简单的学生选课管理系统,语言用Java swing SQLserver。 2.内容 1.注册学生、管理员 2.查询课程 3.添加课程 4.删除课程 5.添加成绩 6.修改成绩 7.查询全部选课信息 8.查询全部课程信息 9.查询全部学生各科...

    1.要求

    设计一个简单的学生选课管理系统,语言用Java swing SQLserver。

    2.内容

    1.注册学生、管理员
    2.查询课程
    3.添加课程
    4.删除课程
    5.添加成绩
    6.修改成绩
    7.查询全部选课信息
    8.查询全部课程信息
    9.查询全部学生各科成绩

    3.E-R图

    在这里插入图片描述

    3.登录界面演示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    数据库部分展示图
    在这里插入图片描述
    在这里插入图片描述

    如果有需要源代码的同学留言哈!

    有时候看不到这里的消息,可能私聊就没回,私聊没回的 0可以直接加我微信,备注CSDN我就知道啦!下面是我的微信二维码。。。IMG

    展开全文
  • 数据库课设学生宿舍管理系统源码,直接将项目拖入eclipse就可以用,有视频教程。
  • 实现了添加修改删除学生学生选课、课程增加修改删除、成绩增加修改功能,还有刷新,翻页功能,JFrame,登录小界面,要连上Mysql数据库
  • 但是看到了题目要求使用Java读写文件,但是想到的是不能使用数据库(后面和老师了解到才知道,数据库文件也是Java读取文件,当时就懵了哈哈哈,但是那个时候我已经做完了课设就没有事件去改了。)当然使用数据库比...

    写在前面

    前面几节已经介绍了整个课设,这一节重点介绍一些在做课设中遇到的一些问题和讨论出来的解决办法。希望大家多多指正!!!

    一、存储文件的选择

    之前一直考虑使用MYSQL数据库进行数据的存储,因为使用数据库对于后面的查询、更新等操作。但是看到了题目要求使用Java读写文件,但是想到的是不能使用数据库(后面和老师了解到才知道,数据库文件也是Java读取文件,当时就懵了哈哈哈,但是那个时候我已经做完了课设就没有事件去改了。)当然使用数据库比读写文本文件方便的太多,很多一行sql就可以搞定了。JDBC也是可以有很多的东西可以学习的,虽然现在有很多的框架比如mybatis这些,但是这些比较基本的还是可以学习一下他们的思路,比如怎么去编写连接池。最后还是选择了读取文本文件,因为自己本身对于文件IO了解的少(至少比数据库连接少,因为之前大一的时候做过JDBC)所以想学习一下文件IO。确实在这个过程过也学到了不少的东西。

    二、使用写入对象遇到的问题

    在刚开始进行选择功能的时候,我第一次想的是直接将对象按照文本写入文件,这样就和python处理数据一样,每次读一行,然后分割,这样就不是按照对象存储的了。所以又转战考虑了使用二进制IO进行对象存储,使用writeObject方法将对象写入文件,只不过是二进制写入,这样的话,你打开文件的时候是看不见了里面的内容的。但是这里面有一个坑,如果使用一次FileOutputStream fos = new FileOutputStream(file, true); ObjectOutputStream oos = new ObjectOutputStream(fos);方法的话,那么你使用FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis);读出来的对象是可以正常的,但是如果进行多次打开文件进行追加对象的化使用该方法读取就会出现错误,只能读取第一个对象,后面的就会报错java.io.StreamCorruptedException: invalid type code: AC,该原因是在每一次打开文件进行写入对象的时候就在前面加4个字节的头部,所以多次打开的时候就会有多个头部,所以会在读取的时候就会出现错误。我在网上找到的解决办法有一种我使用的是在每次写入对象的时候,先向后4个字节,这样就可以避免多个头部的问题,还有一个办法就是在写入追加对象的时候就不写入头部。网上都有这个的解决办法。

    三、存储文件的方法

    最后选择了使用json格式来存储对象,将每一个对象存在数组中,然后整个转为字符串存入到文件中。这个存储只需要存储一个字符串就可以了,不需要其他的操作,也不需要考虑各种复杂的对象写入文件。

    四、更新表格的渲染报错空指针异常

    之前的章节使用的是正确的,下面先放一个错误的代码

    	studentTableView.getSelectionModel().selectedItemProperty().addListener(
                    (observable, oldValue, newValue) ->  showStudentDetail(newValue)
            );
    

    这个没有进行更新的时候会报错,报错信息如下:
    在这里插入图片描述
    原因是在我们更新后newValue是一个空值,因为当前表格中没有选中,所以index一直为-1,就没有新的值去进行文本框的补全,这个对象是空,那么对应的所以这个对象的get方法也是会报错空指针异常的。
    改进如下:

    	studentTableView.getSelectionModel().selectedItemProperty().addListener(
                    (observable, oldValue, newValue) ->  {
                        if (studentTableView.getSelectionModel().getSelectedIndex() >= 0){
                            showStudentDetail(newValue);
                        }
                    }
            );
    

    先进行判断选的所以,如果没有选择的化index是-1,就不会执行渲染到下面的文本框,就避免了空对象。只有index大于等于0的时候才会有一个不为空的对象。这样就可以进行正常的操作了。

    五、使用本地线程绑定当前用户

    虽然本次课设没有使用自己更新自己的信息,但是可以实现这个操作。使用本地的线程绑定到当前登陆的用户。这样就可以在其他页面获取到用户的信息。代码如下:

    public static ThreadLocal<User> threadLocal = new ThreadLocal<>();
    

    在登陆成功的时候就将用户绑定到本地线程上

    Main.threadLocal.set(teacher);
    

    如果其他的页面需要就直接用线程获取就可以了。

    Main.threadLocal.get()
    

    六、总结

    这一次的课设就已经全部完成了,虽然写完了,但是还是有很多写的不好的地方。希望大家多多指正,共同进步!!!

    关于本篇的其他的章节

    Java课设–学生成绩管理系统一
    Java课设–学生成绩管理系统二
    Java课设–学生成绩管理系统三
    Java课设–学生成绩管理系统四
    Java课设–学生成绩管理系统五
    Java课设–学生成绩管理系统六
    Java课设–学生成绩管理系统七
    Java课设–学生成绩管理系统八

    展开全文
  • 父类User的设计,因为不管是管理员、教师还是学生对于整个系统来说他们都是有很多的共同的属性,所以他们都是继承于User类。User里面都是一些关于用户的一些属性比如:用户名、密码等 同时也为User设置对应的构造...
  • 上一节介绍了实体类和异常的设计,这一节我们单单从功能上来分析和设计这个系统,不考虑任何的界面。大概的功能都是简单的增删改查。 学生方面 1、查询所有学生 2、按照学号查询学生 3、根据学号删除学生 4、让根据...
  • 上一节介绍了学生界面的开发,这一节介绍管理员界面的设计,因为业务逻辑差不多,就简单的叙述了。 一、管理员主界面 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.image.*?> <?...
  • 现在已经不需要classpath了,只需要配置JAVA_HOME和path中的JAVA_HOME中的lib路径即可。 二、IDEA的下载和安装配置 IDEA可以算得上是Java开发的神器了,之前也用过eclipse,后面在Web开发的时候十分的不友好(个人...
  • 上一节介绍了管理员的界面,这一节介绍教师的设计。 一、教师主界面 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.image.*?> <?import java.lang.*?> <?import java.util....
  • 写在前面 ...学生主界面 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.image.*?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.
  • 上一节介绍了整个系统的主要功能,并使用工具类实现了这些功能。后面就会介绍界面的设计。主要是JavaFX的项目结构。这一节会介绍JavaFX的结构和主界面的设计 JavaFX项目结构 JavaFX项目的基础结构,这是一个新建的...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 213
精华内容 85
关键字:

java课设学生管理系统

java 订阅