Java课设:学生管理系统

Java课设:学生管理系统文章目录StudentManagerStudentManagerMain.javaStuInfo.javaClassInfo.javaScoreInfo.javaAdd.javaDelete.javaStudentManager查询学生的个人基本信息,查询课程表、选课情况,查询课程的成绩信息。其中课程表及选课信息和成绩信息无法改动,个人基本信息可以添加或者删除。这是一个比较简单的管理系统,具…

大家好,又见面了,我是你们的朋友全栈君。

系统概述

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

}

运行

主界面

在这里插入图片描述

学生信息查询表

查询表

添加信息

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

删除信息

在这里插入图片描述

课程信息查询

在这里插入图片描述

成绩信息查询

在这里插入图片描述


相关问题会持续更新~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158047.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 集群技术概述_集群计算机

    集群技术概述_集群计算机集群技术概述一、集群的起源二、集群的优点1.强扩展能力2.实现方式容易3.高可用性4.易管理性三、集群的类型1.负载均衡集群2.高可用性集群3.高性能集群四、集群的特点1.心跳监测2.漂移IP地址五、集群的应用1.石油地震数据处理2.数值天气预报一、集群的起源        集群并不是一个全新的概念,其实早在七十年代计算机厂商和研究机构就开始了对集群系统的研究和开发。由于主要用于科学工程计算,所以这些系统并不为大家所熟知。直

  • selenium爬取淘宝_selenium抓取ajax数据

    selenium爬取淘宝_selenium抓取ajax数据fromlxmlimportetreefromseleniumimportwebdriverimportjsonimporttimeborwer=webdriver.Chrome(

  • vscode插件大全_腾讯视频vip插件

    vscode插件大全_腾讯视频vip插件VSCode最全实用插件(VIP典藏版)

  • 基于ZigBee的工业废气监测系统

    基于ZigBee的工业废气监测系统摘要本文主要对工业现场中排放的工业废气浓度进行检测。并根据国内外气体监测技术的发展现状,提出了基于ZigBee的工业废气监测系统的设计方案。本系统主要由单片机、气体浓度检测模块、模数转换模块、显示模块、按键、蜂鸣器和无线通信模块等组成。本文首先介绍了工业废气检测系统的研究背景意义,同时结合国内外气体检测技术的发展现状,提出了基于ZigBee的工业废气监测…

  • httprunner(5)编写测试用例

    httprunner(5)编写测试用例编写测试用例HttpRunnerv3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例格式关系如下图所示

  • 安装linux对磁盘分区的要求_ubuntu磁盘分区教程

    安装linux对磁盘分区的要求_ubuntu磁盘分区教程Linux操作系统磁盘分区操作及原理,Linux系统网络环境的配置方法。

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号