当前位置: 首页 > 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 字段的值&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...