当前位置: 首页 > news >正文

C#学生信息管理系统

一、引言

学生信息管理系统是现代学校管理的重要组成部分,它能够有效地管理学生的基本信息、课程信息、成绩信息等,提高学校管理的效率和质量。本文将介绍如何使用SQL Server数据库和C#语言在.NET平台上开发一个学生信息管理系统的课程设计项目。


二、项目概述

学生信息管理系统旨在为学校提供一个完善的学生信息管理平台,包括注册登录、专业管理、班级管理和学生信息管理等功能。该系统将采用C#语言进行开发,利用.NET平台提供的丰富功能和框架,同时使用SQL Server作为数据库支持,以确保系统的稳定性和性能。


三、系统功能

  1. 注册登录功能

    • 注册:学生和教师用户可以通过输入用户名、密码和个人信息完成注册。
    • 登录:已注册的用户可以使用用户名和密码进行登录,以访问系统的其他功能模块。
  2. 专业管理功能

    • 添加专业:管理员用户可以添加新的专业信息,包括专业名称、专业代码等。
    • 修改专业:管理员用户可以修改已有专业的信息,如名称、代码等。
    • 删除专业:管理员用户可以删除不再需要的专业信息。
  3. 班级管理功能

    • 添加班级:管理员用户可以添加新的班级信息,包括班级名称、所属专业、班级编号等。
    • 修改班级:管理员用户可以修改已有班级的信息,如名称、所属专业等。
    • 删除班级:管理员用户可以删除不再需要的班级信息。
  4. 学生信息管理功能

    • 添加学生:管理员用户和教师用户可以添加新的学生信息,包括学号、姓名、性别、年龄、联系方式等。
    • 修改学生信息:管理员用户和教师用户可以修改已有学生的信息。
    • 删除学生:管理员用户和教师用户可以删除不再需要的学生信息。
    • 查询学生信息:管理员用户和教师用户可以根据条件查询学生信息,如学号、姓名、班级等。

四、数据库分析

在学生信息管理系统中,我们设计了以下表来存储学校的相关信息:

  1. college(学院表):

    • 该表存储学校的各个学院信息。
    • 包括字段:Id(学院编号,自增主键)、Name(学院名称)。
  2. major(专业表):

    • 该表存储各个学院下的专业信息。
    • 包括字段:Id(专业编号,自增主键)、Name(专业名称)、CollegeId(所属学院编号,外键关联到college表的Id字段,级联删除)。
  3. majorClass(班级表):

    • 该表存储各个专业下的班级信息。
    • 包括字段:Id(班级编号,自增主键)、Name(班级名称)、MajorId(所属专业编号,外键关联到major表的Id字段,级联删除)。
  4. student(学生表):

    • 该表存储学生的基本信息。
    • 包括字段:Id(学号,主键)、Name(姓名)、MajorClassId(所属班级编号,外键关联到majorClass表的Id字段,级联删除)、Age(年龄)、Sex(性别)。
  5. siuser(系统用户表):

    • 该表存储系统用户的信息,包括管理员和教师用户。
    • 包括字段:Id(用户编号,自增主键)、Username(用户名)、Pwd(密码)、CollegeId(所属学院编号,外键关联到college表的Id字段,级联删除)。

这些表之间通过外键关联建立了关系,以便于实现数据的一致性和完整性。同时,对于学院、专业和班级信息的层级结构,我们通过相应的外键关联来实现了级联删除,以确保数据的完整性和关联性。

五、关键代码

StudentManagementWindow

using NPOI.Util;
using StudentInfoManagmentSystem.Model;
using StudentInfoManagmentSystem.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace StudentInfoManagmentSystem.View {/// <summary>/// Interaction logic for StudentManagementWindow.xaml/// </summary>public partial class StudentManagementWindow {StudentManagementViewModel _smvm;public StudentManagementWindow() {InitializeComponent();_smvm = Grid.DataContext as StudentManagementViewModel;for (int i = 12; i < 51; i++) {CBAge.Items.Add(i);}}private void Window_MouseDown(object sender, MouseButtonEventArgs e) {DragMove();}private void BtnReSelect_Click(object sender, RoutedEventArgs e) {CurrentMajorClass.ID = -1;new MajorClassManagementWindow().Show();Close();}private void BtnExport_Click(object sender, RoutedEventArgs e) {var sfd = Util.FileDialogFactory.GetSFD("Excel 97-2003|*.xls|Excel 2007|*.xlsx");if (!(bool) sfd.ShowDialog()) return;var dt = _smvm.ToDataTable();Util.ExcelIO.Write(sfd.FileName, dt);}private void BtnSave_Click(object sender, RoutedEventArgs e) {_smvm.Save();}private void BtnAdd_Click(object sender, RoutedEventArgs e) {TBProm.Visibility = Visibility.Hidden;TBProm.Foreground = Brushes.Red;var id = TBId.Text.Trim();var name = TBName.Text.Trim();if (Util.StringUtil.IsAnyNullOrEmpty(id, name)) {TBProm.Text = "请填写完整信息";TBProm.Visibility = Visibility.Visible;return;}if (DBHelper.ExistStudent(id)) {TBProm.Text = "已存在相同学号学生";TBProm.Visibility = Visibility.Visible;return;}if (CBAge.SelectedIndex < 0) {TBProm.Text = "请选择年龄";TBProm.Visibility = Visibility.Visible;return;}var age = (int) (CBAge.SelectedItem);var sex = (bool) RBMale.IsChecked ? "男" : "女";var s = new Student {Id = id, Age = age, Name = name, Sex = sex, MajorClassId = CurrentMajorClass.ID};_smvm.Add(s);TBProm.Foreground = Brushes.SeaGreen;TBProm.Text = "添加成功";TBProm.Visibility = Visibility.Visible;}private void BtnDelete_Click(object sender, RoutedEventArgs e) {_smvm.Remove();}private void CBAll_Checked(object sender, RoutedEventArgs e) {foreach (var item in _smvm.Students) {item.IsSelected = true;}}private void CBAll_Unchecked(object sender, RoutedEventArgs e) {foreach (var item in _smvm.Students) {item.IsSelected = false;}}}
}

MajorManagementWindw

using StudentInfoManagmentSystem.Model;
using StudentInfoManagmentSystem.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace StudentInfoManagmentSystem.View {/// <summary>/// Interaction logic for MajorManagementWindow.xaml/// </summary>public partial class MajorManagementWindow {MajorManagementViewModel _mmvm;public MajorManagementWindow() {InitializeComponent();_mmvm = Grid.DataContext as MajorManagementViewModel;}private void MetroWindow_MouseDown(object sender, MouseButtonEventArgs e) {DragMove();}private void BTNSignOff_Click(object sender, RoutedEventArgs e) {CurrentUser.SignOff();new MainWindow().Show();Close();}private void BtnDelete_Click(object sender, RoutedEventArgs e) {var ret = MessageBox.Show("确定删除?", "提示", MessageBoxButton.YesNo);if (ret == MessageBoxResult.No) return;_mmvm.Remove(int.Parse((sender as Button).Tag.ToString()));}private void BtnSelect_Click(object sender, RoutedEventArgs e) {int id = int.Parse((sender as Button).Tag.ToString());CurrentMajor.ID = id;new MajorClassManagementWindow().Show();Close();}private void BtnExport_Click(object sender, RoutedEventArgs e) {var sfd = Util.FileDialogFactory.GetSFD("Excel 97-2003|*.xls|Excel 2007|*.xlsx");if (!(bool) sfd.ShowDialog()) return;var dt = _mmvm.ToDataTable();Util.ExcelIO.Write(sfd.FileName, dt);}private void BtnAdd_Click(object sender, RoutedEventArgs e) {var newMajorName = TBNewMajor.Text.Trim();if (string.IsNullOrEmpty(newMajorName)) return;_mmvm.Add(new Major { Name = newMajorName, CollegeId = CurrentUser.GetCollegeId() });}}
}

MajorClassManagementWindow

using StudentInfoManagmentSystem.Model;
using StudentInfoManagmentSystem.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace StudentInfoManagmentSystem.View {/// <summary>/// Interaction logic for MajorClassMagementWindow.xaml/// </summary>public partial class MajorClassManagementWindow {MajorClassManagementViewModel _mcmvm;public MajorClassManagementWindow() {InitializeComponent();_mcmvm = Grid.DataContext as MajorClassManagementViewModel;}private void MetroWindow_MouseDown(object sender, MouseButtonEventArgs e) {DragMove();}private void BtnReSelect_Click(object sender, RoutedEventArgs e) {CurrentMajor.ID = -1;new MajorManagementWindow().Show();Close();}private void BtnDelete_Click(object sender, RoutedEventArgs e) {var ret = MessageBox.Show("确定删除?", "提示", MessageBoxButton.YesNo);if (ret == MessageBoxResult.No) return;_mcmvm.Remove(int.Parse((sender as Button).Tag.ToString()));}private void BtnSelect_Click(object sender, RoutedEventArgs e) {int id = int.Parse((sender as Button).Tag.ToString());CurrentMajorClass.ID = id;new StudentManagementWindow().Show();Close();}private void BtnAdd_Click(object sender, RoutedEventArgs e) {var newMajorClassName = TBNewMajorClass.Text.Trim();if (string.IsNullOrEmpty(newMajorClassName)) return;_mcmvm.Add(new MajorClass { Name = newMajorClassName, MajorId = CurrentMajor.ID });}private void BtnExport_Click(object sender, RoutedEventArgs e) {var sfd = Util.FileDialogFactory.GetSFD("Excel 97-2003|*.xls|Excel 2007|*.xlsx");if (!(bool) sfd.ShowDialog()) return;var dt = _mcmvm.ToDataTable();Util.ExcelIO.Write(sfd.FileName, dt);}}
}

六、程序截图

在这里插入图片描述
请添加图片描述
请添加图片描述

在这里插入图片描述

七、联系与交流

q:969060742 完整代码、sql

相关文章:

C#学生信息管理系统

一、引言 学生信息管理系统是现代学校管理的重要组成部分&#xff0c;它能够有效地管理学生的基本信息、课程信息、成绩信息等&#xff0c;提高学校管理的效率和质量。本文将介绍如何使用SQL Server数据库和C#语言在.NET平台上开发一个学生信息管理系统的课程设计项目。 二、项…...

双机 Cartogtapher 建图文件配置

双机cartogtapher建图 最近在做硕士毕设的最后一个实验&#xff0c;其中涉及到多机建图&#xff0c;经过调研最终采用cartographer建图算法&#xff0c;其中配置多机建图的文件有些麻烦&#xff0c;特此博客以记录 非常感谢我的同门 ”叶少“ 山上的稻草人-CSDN博客的帮助&am…...

VMware提示 该虚拟机似乎正在使用中,如何解决?

VMware提示 该虚拟机似乎正在使用中,如何解决&#xff1f; 问题描述解决方法1.找到安装VMware的文件目录2.在VMware目录下.lck后缀的文件夹删除或重命名3.运行VMware 问题描述 该虚拟机似乎正在使用中。 如果该虚拟机未在使用&#xff0c;请按“获取所有权(T)”按钮获取它的所…...

阿里云短信服务业务

一、了解阿里云用户权限操作 1.注册账号、实名认证&#xff1b; 2.使用AccessKey 步骤一 点击头像&#xff0c;权限安全的AccessKey 步骤二 设置子用户AccessKey 步骤三 添加用户组和用户 步骤四 添加用户组记得绑定短信服务权限 步骤五 添加用户记得勾选openApi访问 添加…...

ElasticSearch的DSL查询

ElasticSearch的DSL查询 准备工作 创建测试方法&#xff0c;初始化测试结构。 import org.apache.http.HttpHost; import org.apache.lucene.search.TotalHits; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRespo…...

每天定时杀spark进程

##编写shell脚本 #!/bin/bash arr(“zhangsan” “lisi” “wangwu”) for i in “${arr[]}” do processps -ef|grep ${i}| grep -v "grep"| awk {print $2} kill -9 ${process} done ##每日定时杀手动启动的进程 0 19 * * * cd /kill_process && sh kil…...

win10 安装kubectl,配置config连接k8s集群

安装kubectl 按照官方文档安装&#xff1a;https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ curl安装 &#xff08;1&#xff09;下载curl安装压缩包: curl for Windows &#xff08;2&#xff09;配置环境变量&#xff1a; 用户变量&#xff1a; Path变…...

Calico IPIP和BGP TOR的数据包走向

IPIP Mesh全网互联 文字描述 APOD eth0 10.7.75.132 -----> APOD 网关 -----> A宿主机 cali76174826315网卡 -----> Atunl0 10.7.75.128 封装 ----> Aeth0 10.120.181.20 -----> 通过网关 10.120.181.254 -----> 下一跳 BNODE eth0 10.120.179.8 解封装 --…...

静态成员主要用于提供与类本身相关的功能或数据,有什么应用场景

静态成员&#xff08;包括静态方法和静态属性&#xff09;在JavaScript中常用于多种应用场景&#xff0c;它们为类提供了与类本身直接相关而不是与实例相关的功能或数据。以下是一些常见的应用场景&#xff1a; 工厂方法 静态方法可以作为工厂方法&#xff0c;用于创建类的实…...

在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)

在线考试管理系统目录 目录 基于Springboot的在线考试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 2、后台 管理员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主…...

C语言-----数据在内存中的存储(1)

1.整数在内存中的存储 我们之前就了解过整数的二进制写法分别有3种&#xff0c;分别为原码&#xff0c;反码&#xff0c;补码。整型在内存中存储的是补码。 原码&#xff0c;反码&#xff0c;补码都有自己的符号位和数值位&#xff0c;符号位为1时&#xff0c;则表示负数&…...

Ribbon有哪些负载均衡策略

负载均衡类都实现了IRule接口。 RandomRule&#xff1a;随机的选用一个实例 RoundRobinRule&#xff1a;轮询的使用实例 RetryRule&#xff1a;在轮询的基础上加了一个错误重试机制&#xff0c;在deadline时间内会不断的重试 WeightResponeTimeRule&#xff1a;根据权重去做…...

websocket多级nginx代理

在使用多层Nginx代理时&#xff0c;WebSocket的连接可能会遇到一些问题&#xff0c;因为WebSocket连接是持久化的&#xff0c;它需要Upgrade头部来确认升级到WebSocket协议。在多层代理的情况下&#xff0c;每层代理可能会修改或丢失这个Upgrade头部信息。 为了确保WebSocket能…...

【python从入门到精通】-- 第四战:语句汇总

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…...

【NC50937】货仓选址

题目 货仓选址 二分&#xff0c;前缀和&#xff0c;数学推导 思路 由题意可知货仓的位置是可以和商店的位置重合的。首先应该将商店的坐标从小到大排序&#xff0c;然后假设商店的坐标为 a i a_i ai​&#xff0c;货仓的坐标为 x x x&#xff0c;货仓左侧第一家商店&#x…...

Nginx配置使用笔记

Nginx配置使用笔记 前言 官网下载压缩包https://nginx.org/ 解压完成后当前目录cmd输入nginx指令启动 访问http://localhost:80确认启动成功 1.部署前端项目 部署前端项目到路径E:\Workspaces\Vscode\app-web 2.0配置nginx.conf文件 在nginx安装的conf目录下新建一个文件夹l…...

GridLayoutManager 中的一些坑

前言 如果GridLayoutManager使用item的布局都是wrap_cotent 那么会在布局更改时会出现一些出人意料的情况。&#xff08;本文完全不具备可读性和说教性&#xff0c;仅为博主方便查找问题&#xff09; 布局item: <!--layout_item.xml--> <?xml version"1.0&qu…...

算法实验二 矩阵最小路径和 LIS

算法实验课二 矩阵最小路径和 leetcode裸题 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&…...

Apache Paimon实时数据糊介绍

Apache Paimon 是一种湖格式,可以使用 Flink 和 Spark 构建实时 数据糊 架构,用于流式和批处理操作。Paimon 创新地将湖格式和 LSM(日志结构合并树)结构相结合,将实时流式更新引入湖架构中。 Paimon 提供以下核心功能: 实时更新: 主键表支持大规模更新的写入,具有非常…...

计算机网络:数据链路层 - 可靠传输协议

计算机网络&#xff1a;数据链路层 - 可靠传输协议 可靠传输概念停止-等待协议 SW回退N帧协议 GBN选择重传协议 SR 可靠传输概念 如下所示&#xff0c;帧在传输过程中受到干扰&#xff0c;产生了误码。接收方的数据链路层&#xff0c;通过真伪中的真检验序列 FCS 字段的值&…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...