【数据库设计】学籍管理的数据库系统

如下代码供学习交流,获取完整代码,请关注文后二维码(coding加油站)回复“数据库学籍管理”免费获取

1、简介

可以用于数据库作业的设计,也可以用于javase作业的设计,数据库为sql server

功能说明:

  1. 简化了数据库的使用者,即没有根据用户名自动切换布局的功能,目标使用者即为管理员
  2. 提供了txt导入学生信息,成绩,课程信息的功能
  3. 提供手动录入学生信息,修改学生信息,批量修改班级及删除学生信息功能
  4. 提供按学号修改成绩及按课程号修改成绩功能
  5. 提供了班级增添,修改,删除,查询功能
  6. 提供了利用班号,学号,姓名,性别查询学生信息及查看学生成绩详情的功能
  7. 提供了按学号查询所有教过课的任课老师姓名
  8. 提供了教学计划修改,查询,统计功能
  9. 提供了自定义查询将被开除学生功能,可以同时设定选修未完成学分限制,必修未完成学分限制及学期必修未完成学分限制,并可查看所有未达标详情
  10. 提供了登陆登出功能,可以利用数据库权限控制指定用户所可拥有的功能

2、项目截图

3、项目代码:

java代码:

package database;

import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;

public class CheckHeaderCellRenderer implements TableCellRenderer {
    CheckTableModle tableModel;
    JTableHeader tableHeader;
    final JCheckBox selectBox;

    public CheckHeaderCellRenderer(JTable table) {
        this.tableModel = (CheckTableModle)table.getModel();
        this.tableHeader = table.getTableHeader();
        selectBox = new JCheckBox(tableModel.getColumnName(0));
        selectBox.setSelected(false);
        tableHeader.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() > 0) {
                    //获得选中列
                    int selectColumn = tableHeader.columnAtPoint(e.getPoint());
                    if (selectColumn == 0) {
                        boolean value = !selectBox.isSelected();
                        selectBox.setSelected(value);
                        tableModel.selectAllOrNull(value);
                        tableHeader.repaint();
                    }
                }
            }
        });
    }
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        // TODO Auto-generated method stub
        String valueStr = (String) value;
        JLabel label = new JLabel(valueStr);
        label.setHorizontalAlignment(SwingConstants.CENTER); // 表头标签剧中
        selectBox.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
        selectBox.setBorderPainted(true);
        JComponent component = (column == 0) ? selectBox : label;

        component.setForeground(tableHeader.getForeground());
        component.setBackground(tableHeader.getBackground());
        component.setFont(tableHeader.getFont());
        component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));

        return component;
    }

}
package database;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Course_insert extends JFrame {


	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JCheckBox checkBox_2,checkBox_1,checkBox;
	private Vector<Integer> order=new Vector<Integer>();
	private final String[] name=new String[]{"课程号","课程名","学分","课程类型"};
	private JPanel panel;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Sql_connetcton.login_s("admin", "admin");
					Course_insert frame = new Course_insert();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	/**
	 * Create the frame.
	 */
	public Course_insert() {
		setTitle("\u8BFE\u7A0B\u4FE1\u606F\u5BFC\u5165");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		this.setResizable(false);//居中
		this.setLocationRelativeTo(null);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		ActionListener checkBoxListener=new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String s=textField_1.getText();
				if(((JCheckBox)e.getSource()).isSelected()){	
					s+=e.getActionCommand()+",";
				}else{
					s=s.replaceAll(e.getActionCommand()+",","");
				}
				textField_1.setText(s);
			}
		};
		
		JLabel lblNewLabel = new JLabel("\u5BFC\u5165\u6587\u4EF6:");
		lblNewLabel.setBounds(10, 10, 63, 15);
		contentPane.add(lblNewLabel);
		
		textField = new JTextField();
		textField.setBounds(67, 7, 216, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		JButton button = new JButton("...");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser file=new JFileChooser();
				file.setAcceptAllFileFilterUsed(false); //关闭所有文件筛选器
				file.setMultiSelectionEnabled(false); //关闭多选
				file.setFileFilter(new FileNameExtensionFilter("TXT", "txt")); //添加txt筛选器
				if(file.showDialog(getParent(), "导入")==JFileChooser.APPROVE_OPTION){
					textField.setText(file.getSelectedFile().getPath()); //获得保存路径
				}
				
			}
		});
		button.setBounds(287, 7, 25, 21);
		contentPane.add(button);
		
		JButton button_1 = new JButton("\u5BFC\u5165");

		button_1.setBounds(379, 6, 63, 23);
		contentPane.add(button_1);
		
		JButton button_2 = new JButton("\u9884\u89C8");

		button_2.setBounds(315, 6, 63, 23);
		contentPane.add(button_2);
		
		JLabel label = new JLabel("\u5BFC\u5165\u683C\u5F0F:");
		label.setBounds(10, 38, 87, 15);
		contentPane.add(label);
		
		textField_1 = new JTextField();
		textField_1.setBounds(67, 35, 216, 21);
		contentPane.add(textField_1);
		textField_1.setColumns(10);
		 checkBox = new JCheckBox("\u8BFE\u7A0B\u53F7");
		checkBox.setBounds(10, 59, 63, 23);
		checkBox.addActionListener(checkBoxListener);
		checkBox.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				if(((JCheckBox)e.getSource()).isSelected()){
					order.add(new Integer(0));
				}else{
					order.remove(new Integer(0));
				}
			}
		});
		
		 checkBox_2 = new JCheckBox("\u5B66\u5206");
		checkBox_2.setBounds(146, 59, 54, 23);
		checkBox_2.addActionListener(checkBoxListener);
		checkBox_2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				if(((JCheckBox)e.getSource()).isSelected()){
					order.add(new Integer(2));
				}else{
					order.remove(new Integer(2));
				}
				
			}
		});
		contentPane.add(checkBox_2);
		
		 checkBox_1 = new JCheckBox("\u8BFE\u7A0B\u540D");
		checkBox_1.setBounds(77, 59, 67, 23);
		checkBox_1.addActionListener(checkBoxListener);
		checkBox_1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				if(((JCheckBox)e.getSource()).isSelected()){
					order.add(new Integer(1));
				}else{
					order.remove(new Integer(1));
				}
				
			}
		});
		contentPane.add(checkBox_1);
		contentPane.add(checkBox);
		final JButton button_3 = new JButton("\u9501\u5B9A");
		button_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String s=textField_1.getText();
				if(e.getActionCommand()=="锁定"){
					textField_1.setEnabled(false);
					checkBox_2.setEnabled(false);
					checkBox_1.setEnabled(false);
					checkBox.setEnabled(false);
					if(s.endsWith(",")){
						textField_1.setText(s.substring(0,s.length()-1));
					}
					button_3.setText("解锁");
				}else{
					textField_1.setEnabled(true);
					checkBox_2.setEnabled(true);
					checkBox_1.setEnabled(true);
					checkBox.setEnabled(true);
					textField_1.setText(s+",");
					button_3.setText("锁定");
				}
			}
		});
		button_3.setBounds(287, 34, 63, 23);
		contentPane.add(button_3);
		panel = new JPanel();
		panel.setBounds(10, 88, 424, 173);
		contentPane.add(panel);
		panel.setLayout(new BorderLayout(0, 0));//保持边距,不然会超出显示区域
		final JTable table = new JTable();

		panel.removeAll();
		JScrollPane sPane=new JScrollPane(table);
		sPane.setAutoscrolls(true);
		panel.add(sPane,BorderLayout.CENTER);
		
		JCheckBox kind = new JCheckBox("\u8BFE\u7A0B\u7C7B\u578B");
		kind.setBounds(202, 59, 103, 23);
		contentPane.add(kind);
		kind.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				if(((JCheckBox)e.getSource()).isSelected()){
					order.add(new Integer(3));
				}else{
					order.remove(new Integer(3));
				}
				
			}
		});
		kind.addActionListener(checkBoxListener);
		button_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				final Vector<Vector<String>> ans=
						file_insert.get(textField_1.getText(), textField.getText(), name, order);
						//file_insert.get("","C:\\Users\\jxy1\\Documents\\GitHub\\Database-project\\导入数据\\test.txt",name,order);
				final Vector<String> names=new Vector<String>();
				for(String s:name)names.add(s);
				DefaultTableModel dataModel=new DefaultTableModel(ans,names)
				{
					
					

					
					@Override
					public boolean isCellEditable(int rowIndex, int columnIndex) {
				
						return false;
					}
					
					@Override
					public Object getValueAt(int rowIndex, int columnIndex) {
						if(columnIndex==0){
							return rowIndex+1;
						}
				        Vector rowVector = (Vector)dataVector.elementAt(rowIndex);
				        if(columnIndex==4)
				        	if(rowVector.elementAt(columnIndex-1)=="NULL")
				        		setValueAt("必修", rowIndex, columnIndex-1);
				        return rowVector.elementAt(columnIndex-1);
					}
					
					@Override
					public String getColumnName(int columnIndex) {
						if(columnIndex==0)return "序号";
						return names.get(columnIndex-1);
					}
					
					@Override
					public int getColumnCount() {
						return names.size()+1;
					}

					
				};
				
				table.setModel(dataModel);
				for(int i=0;i<1;i++){
					TableColumn column = table.getColumnModel().getColumn(i); 
					column.setPreferredWidth(25);
				}
				
				
			}
		});
		button_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				DefaultTableModel  now=(DefaultTableModel) table.getModel();
				int row=now.getRowCount(),col=now.getColumnCount()-1;
				int rr=0;
				Vector s= now.getDataVector();
				for(int i=0;i<row;i++){
					Vector<String> temp=(Vector<String>) s.elementAt(rr);
					if(temp.size()>col)temp.remove(col);
					if(Sql_connetcton.insert(temp,"课程")==true){
						now.removeRow(rr);
					}else{
						rr++;
					}
				}
				
				JOptionPane.showMessageDialog(null,"成功"+(row-rr)+"个,失败"+rr+"个","导入结果", JOptionPane.INFORMATION_MESSAGE);

			}
		});
		
	}
}

数据库相关sql:

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[专业]    Script Date: 12/18/2021 00:42:01 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[专业](
	[专业号] [int] NOT NULL,
	[专业名] [nchar](10) NOT NULL,
	[学院名] [nchar](10) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[专业号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[班级]    Script Date: 12/18/2021 00:42:08 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[班级](
	[班号] [nchar](6) NOT NULL,
	[专业号] [int] NOT NULL,
	[班主任] [nchar](10) NOT NULL,
	[入学年份] [int] NOT NULL,
 CONSTRAINT [PK_班级] PRIMARY KEY CLUSTERED 
(
	[班号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[班级]  WITH CHECK ADD  CONSTRAINT [FK_班级_专业] FOREIGN KEY([专业号])
REFERENCES [dbo].[专业] ([专业号])
GO

ALTER TABLE [dbo].[班级] CHECK CONSTRAINT [FK_班级_专业]
GO

ALTER TABLE [dbo].[班级]  WITH CHECK ADD  CONSTRAINT [CK_班级] CHECK  (([入学年份]>(1800) AND [入学年份]<(10000)))
GO

ALTER TABLE [dbo].[班级] CHECK CONSTRAINT [CK_班级]
GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[学生]    Script Date: 12/18/2021 00:42:18 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[学生](
	[班号] [nchar](6) NULL,
	[学号] [nchar](8) NOT NULL,
	[姓名] [nchar](10) NOT NULL,
	[性别] [nchar](1) NOT NULL,
	[出生日期] [smalldatetime] NULL,
 CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED 
(
	[学号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[学生]  WITH CHECK ADD  CONSTRAINT [FK_学生_班级] FOREIGN KEY([班号])
REFERENCES [dbo].[班级] ([班号])
GO

ALTER TABLE [dbo].[学生] CHECK CONSTRAINT [FK_学生_班级]
GO

ALTER TABLE [dbo].[学生]  WITH CHECK ADD  CONSTRAINT [CK_学生] CHECK  (([性别]=N'女' OR [性别]=N'男'))
GO

ALTER TABLE [dbo].[学生] CHECK CONSTRAINT [CK_学生]
GO

ALTER TABLE [dbo].[学生] ADD  CONSTRAINT [DF_学生_性别]  DEFAULT (N'男') FOR [性别]
GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[课程]    Script Date: 12/18/2021 00:42:25 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[课程](
	[课程号] [nchar](9) NOT NULL,
	[课程名] [nchar](25) NOT NULL,
	[学分] [int] NOT NULL,
	[课程类型] [nchar](2) NOT NULL,
 CONSTRAINT [PK_课程] PRIMARY KEY CLUSTERED 
(
	[课程号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[课程]  WITH CHECK ADD  CONSTRAINT [CK_课程] CHECK  (([课程类型]='任选' OR [课程类型]='限选' OR [课程类型]='必修'))
GO

ALTER TABLE [dbo].[课程] CHECK CONSTRAINT [CK_课程]
GO

ALTER TABLE [dbo].[课程] ADD  CONSTRAINT [DF_课程_课程类型]  DEFAULT (N'必修') FOR [课程类型]
GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[课表]    Script Date: 12/18/2021 00:42:30 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[课表](
	[课程号] [nchar](9) NOT NULL,
	[班级号] [nchar](6) NOT NULL,
	[任课教师] [nchar](10) NOT NULL,
 CONSTRAINT [PK_课表] PRIMARY KEY CLUSTERED 
(
	[任课教师] ASC,
	[班级号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[课表]  WITH CHECK ADD  CONSTRAINT [FK_课表_班级] FOREIGN KEY([班级号])
REFERENCES [dbo].[班级] ([班号])
GO

ALTER TABLE [dbo].[课表] CHECK CONSTRAINT [FK_课表_班级]
GO

ALTER TABLE [dbo].[课表]  WITH CHECK ADD  CONSTRAINT [FK_课表_课程] FOREIGN KEY([课程号])
REFERENCES [dbo].[课程] ([课程号])
GO

ALTER TABLE [dbo].[课表] CHECK CONSTRAINT [FK_课表_课程]
GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[教学计划]    Script Date: 12/18/2021 00:42:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[教学计划](
	[学期] [nchar](1) NOT NULL,
	[专业号] [int] NOT NULL,
	[课程号] [nchar](9) NOT NULL,
 CONSTRAINT [PK_教学计划] PRIMARY KEY CLUSTERED 
(
	[专业号] ASC,
	[课程号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[教学计划]  WITH CHECK ADD  CONSTRAINT [FK_教学计划_课程] FOREIGN KEY([课程号])
REFERENCES [dbo].[课程] ([课程号])
GO

ALTER TABLE [dbo].[教学计划] CHECK CONSTRAINT [FK_教学计划_课程]
GO

ALTER TABLE [dbo].[教学计划]  WITH CHECK ADD  CONSTRAINT [FK_教学计划_专业] FOREIGN KEY([专业号])
REFERENCES [dbo].[专业] ([专业号])
GO

ALTER TABLE [dbo].[教学计划] CHECK CONSTRAINT [FK_教学计划_专业]
GO

ALTER TABLE [dbo].[教学计划]  WITH CHECK ADD  CONSTRAINT [CK_教学计划] CHECK  (([学期]>(0) AND [学期]<(9)))
GO

ALTER TABLE [dbo].[教学计划] CHECK CONSTRAINT [CK_教学计划]
GO

USE [学籍管理系统]
GO

/****** Object:  Table [dbo].[成绩]    Script Date: 12/18/2021 00:42:53 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[成绩](
	[学号] [nchar](8) NOT NULL,
	[课程号] [nchar](9) NOT NULL,
	[成绩] [int] NULL,
	[补考成绩] [int] NULL,
	[真实成绩] [int] NULL,
 CONSTRAINT [PK_成绩] PRIMARY KEY CLUSTERED 
(
	[学号] ASC,
	[课程号] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[成绩]  WITH CHECK ADD  CONSTRAINT [FK_成绩_课程] FOREIGN KEY([课程号])
REFERENCES [dbo].[课程] ([课程号])
GO

ALTER TABLE [dbo].[成绩] CHECK CONSTRAINT [FK_成绩_课程]
GO

ALTER TABLE [dbo].[成绩]  WITH CHECK ADD  CONSTRAINT [FK_成绩_学生] FOREIGN KEY([学号])
REFERENCES [dbo].[学生] ([学号])
GO

ALTER TABLE [dbo].[成绩] CHECK CONSTRAINT [FK_成绩_学生]
GO

ALTER TABLE [dbo].[成绩]  WITH CHECK ADD  CONSTRAINT [CK_成绩] CHECK  (([成绩]>=(0) AND [成绩]<=(100)))
GO

ALTER TABLE [dbo].[成绩] CHECK CONSTRAINT [CK_成绩]
GO

ALTER TABLE [dbo].[成绩]  WITH CHECK ADD  CONSTRAINT [CK_成绩_t] CHECK  (([补考成绩] IS NULL OR [成绩] IS NOT NULL AND [补考成绩]>=(0) AND [补考成绩]<=(100) AND [成绩]<(60)))
GO

ALTER TABLE [dbo].[成绩] CHECK CONSTRAINT [CK_成绩_t]
GO

如下代码供学习交流,获取完整代码,请关注文后二维码(coding加油站)回复“数据库学籍管理”免费获取

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据库课程设计报告_学籍管理系统 本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。综合 我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作 到了理论与实践相结合。 一、题目说明 学生学籍管理系统是典型的学籍管理系统(MIS),其开发主要包括后台数据库的建立和维 护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数 据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统 还可以完成对各类信息的浏览、添加、删除、等功能。 系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成 对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系 统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件 查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添 加、删除和密码修改功能,并具备报表打印功能。 关键字:窗体、数据库、vb6.0、access2000。 学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强 、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的 ,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到 了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统 的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二. 总体设计 我的总体设计如下: (1)利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表 、选课表、学生选课表以及口令表。 (2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面 FORM2 用于登陆此系统的登录界面 FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4) 数据信息——管理使用(FORM5) 基本操作——学生操作、选课操作、课程操作(FORM6、FORM7、FORM8) (3)对以上的界面进行设计以及对所要操作的部件进行编程。 如图: 三.常用控件的说明 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动 条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交互的可视化部件, 即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用 程序的用户界面设计即可。 序号   名称   功能 1   Label标签   用于说明 2   Textbox文本框   用于文本输入或显示 3  Frame框架  用于组合控件 4  Commandbutton命令按扭  单击执行命令 5  Timer计时期  用于定时 6  Data数据控件  用于访问数据库 三.详细说明 1、数据库的建立与设计 数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一 串文字或数字流。数据库中的数据可以是文字、图象、声音等。 Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。 (1).表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成 ,表用来存贮数据库的数据,故又称数据表。 (2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接 若干个表的字段组成新表。 (3).窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建 子窗体显示相关联的表的内容。窗体也称表单。 (4).报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分 析。 (5).宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一 些常用的操作供用户选择,使用起来十分方便。 (6).模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可 以根据自己的需要编写程序。模块使用Visual Basic编程。 我们利用Access来建立数据库,我们的库中有五张表格,其分别是学生表、课程表、选 课表、学生选课表以及口令表。 我们就以学生表为例做一个简单的说明: 我们使用设计器来创建表的,我的这张表有七个字段,每个字段的名称分别是:学号、 班级、姓名、性别、出生年月、民族、地址、电话号码,每个字段有七个数据。我并对 其字段的属性进行了重新的修改,以做到不浪费其空间。 我具体的实施步骤是:启动数据库管理器——建立数据库——建立数据表结构——
学籍管理系统数据库的SQL设计通常包括对学生基本信息、班级、专业、院系、课程、学生成绩、奖惩信息等数据的管理。下面是一个简单的学籍管理系统数据库的SQL示例: 1. 创建表格: ```sql CREATE TABLE student ( student_id INT PRIMARY KEY, name VARCHAR(50), gender VARCHAR(10), birthday DATE, class_id INT, major_id INT, department_id INT ); CREATE TABLE class ( class_id INT PRIMARY KEY, class_name VARCHAR(50) ); CREATE TABLE major ( major_id INT PRIMARY KEY, major_name VARCHAR(50) ); CREATE TABLE department ( department_id INT PRIMARY KEY, department_name VARCHAR(50) ); CREATE TABLE course ( course_id INT PRIMARY KEY, course_name VARCHAR(50) ); CREATE TABLE grade ( student_id INT, course_id INT, score INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES student(student_id), FOREIGN KEY (course_id) REFERENCES course(course_id) ); CREATE TABLE punishment ( student_id INT, punishment_reason VARCHAR(100), PRIMARY KEY (student_id), FOREIGN KEY (student_id) REFERENCES student(student_id) ); ``` 2. 插入数据: ```sql INSERT INTO student (student_id, name, gender, birthday, class_id, major_id, department_id) VALUES (1, '张三', '男', '1990-01-01',1, 1, 1); INSERT INTO class (class_id, class_name) VALUES (1, '计算机科学与技术1班'); INSERT INTO major (major_id, major_name) VALUES (1, '计算机科学与技术'); INSERT INTO department (department_id, department_name) VALUES (1, '计算机学院'); INSERT INTO course (course_id, course_name) VALUES (1, '数据库'); INSERT INTO grade (student_id, course_id, score) VALUES (1, 1, 90); INSERT INTO punishment (student_id, punishment_reason) VALUES (1, '违纪'); ``` 3. 查询数据: ```sql -- 查询学生信息 SELECT * FROM student; -- 查询某个班级的学生信息 SELECT * FROM student WHERE class_id = 1; -- 查询某个学生的成绩 SELECT * FROM grade WHERE student_id = 1; -- 查询某个学生的奖惩信息 SELECT * FROM punishment WHERE student_id = 1; ``` 4. 更新数据: ```sql -- 更新学生信息 UPDATE student SET name = '李四' WHERE student_id = 1; -- 更新某个学生的成绩 UPDATE grade SET score = 95 WHERE student_id = 1 AND course_id = 1; -- 更新某个学生的奖惩信息 UPDATE punishment SET punishment_reason = '违纪处分' WHERE student_id = 1; ``` 5. 删除数据: ```sql -- 删除学生信息 DELETE FROM student WHERE student_id = 1; -- 删除某个学生的成绩 DELETE FROM grade WHERE student_id = 1 AND course_id = 1; -- 删除某个学生的奖惩信息 DELETE FROM punishment WHERE student_id = 1; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值