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

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...