C#学生信息管理系统
一、引言
学生信息管理系统是现代学校管理的重要组成部分,它能够有效地管理学生的基本信息、课程信息、成绩信息等,提高学校管理的效率和质量。本文将介绍如何使用SQL Server数据库和C#语言在.NET平台上开发一个学生信息管理系统的课程设计项目。
二、项目概述
学生信息管理系统旨在为学校提供一个完善的学生信息管理平台,包括注册登录、专业管理、班级管理和学生信息管理等功能。该系统将采用C#语言进行开发,利用.NET平台提供的丰富功能和框架,同时使用SQL Server作为数据库支持,以确保系统的稳定性和性能。
三、系统功能
-
注册登录功能:
- 注册:学生和教师用户可以通过输入用户名、密码和个人信息完成注册。
- 登录:已注册的用户可以使用用户名和密码进行登录,以访问系统的其他功能模块。
-
专业管理功能:
- 添加专业:管理员用户可以添加新的专业信息,包括专业名称、专业代码等。
- 修改专业:管理员用户可以修改已有专业的信息,如名称、代码等。
- 删除专业:管理员用户可以删除不再需要的专业信息。
-
班级管理功能:
- 添加班级:管理员用户可以添加新的班级信息,包括班级名称、所属专业、班级编号等。
- 修改班级:管理员用户可以修改已有班级的信息,如名称、所属专业等。
- 删除班级:管理员用户可以删除不再需要的班级信息。
-
学生信息管理功能:
- 添加学生:管理员用户和教师用户可以添加新的学生信息,包括学号、姓名、性别、年龄、联系方式等。
- 修改学生信息:管理员用户和教师用户可以修改已有学生的信息。
- 删除学生:管理员用户和教师用户可以删除不再需要的学生信息。
- 查询学生信息:管理员用户和教师用户可以根据条件查询学生信息,如学号、姓名、班级等。
四、数据库分析
在学生信息管理系统中,我们设计了以下表来存储学校的相关信息:
-
college(学院表):
- 该表存储学校的各个学院信息。
- 包括字段:Id(学院编号,自增主键)、Name(学院名称)。
-
major(专业表):
- 该表存储各个学院下的专业信息。
- 包括字段:Id(专业编号,自增主键)、Name(专业名称)、CollegeId(所属学院编号,外键关联到college表的Id字段,级联删除)。
-
majorClass(班级表):
- 该表存储各个专业下的班级信息。
- 包括字段:Id(班级编号,自增主键)、Name(班级名称)、MajorId(所属专业编号,外键关联到major表的Id字段,级联删除)。
-
student(学生表):
- 该表存储学生的基本信息。
- 包括字段:Id(学号,主键)、Name(姓名)、MajorClassId(所属班级编号,外键关联到majorClass表的Id字段,级联删除)、Age(年龄)、Sex(性别)。
-
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#学生信息管理系统
一、引言 学生信息管理系统是现代学校管理的重要组成部分,它能够有效地管理学生的基本信息、课程信息、成绩信息等,提高学校管理的效率和质量。本文将介绍如何使用SQL Server数据库和C#语言在.NET平台上开发一个学生信息管理系统的课程设计项目。 二、项…...
双机 Cartogtapher 建图文件配置
双机cartogtapher建图 最近在做硕士毕设的最后一个实验,其中涉及到多机建图,经过调研最终采用cartographer建图算法,其中配置多机建图的文件有些麻烦,特此博客以记录 非常感谢我的同门 ”叶少“ 山上的稻草人-CSDN博客的帮助&am…...
VMware提示 该虚拟机似乎正在使用中,如何解决?
VMware提示 该虚拟机似乎正在使用中,如何解决? 问题描述解决方法1.找到安装VMware的文件目录2.在VMware目录下.lck后缀的文件夹删除或重命名3.运行VMware 问题描述 该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所…...
阿里云短信服务业务
一、了解阿里云用户权限操作 1.注册账号、实名认证; 2.使用AccessKey 步骤一 点击头像,权限安全的AccessKey 步骤二 设置子用户AccessKey 步骤三 添加用户组和用户 步骤四 添加用户组记得绑定短信服务权限 步骤五 添加用户记得勾选openApi访问 添加…...
ElasticSearch的DSL查询
ElasticSearch的DSL查询 准备工作 创建测试方法,初始化测试结构。 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 按照官方文档安装:https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ curl安装 (1)下载curl安装压缩包: curl for Windows (2)配置环境变量: 用户变量: 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 解封装 --…...
静态成员主要用于提供与类本身相关的功能或数据,有什么应用场景
静态成员(包括静态方法和静态属性)在JavaScript中常用于多种应用场景,它们为类提供了与类本身直接相关而不是与实例相关的功能或数据。以下是一些常见的应用场景: 工厂方法 静态方法可以作为工厂方法,用于创建类的实…...
在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)
在线考试管理系统目录 目录 基于Springboot的在线考试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台: 2、后台 管理员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主…...
C语言-----数据在内存中的存储(1)
1.整数在内存中的存储 我们之前就了解过整数的二进制写法分别有3种,分别为原码,反码,补码。整型在内存中存储的是补码。 原码,反码,补码都有自己的符号位和数值位,符号位为1时,则表示负数&…...
Ribbon有哪些负载均衡策略
负载均衡类都实现了IRule接口。 RandomRule:随机的选用一个实例 RoundRobinRule:轮询的使用实例 RetryRule:在轮询的基础上加了一个错误重试机制,在deadline时间内会不断的重试 WeightResponeTimeRule:根据权重去做…...
websocket多级nginx代理
在使用多层Nginx代理时,WebSocket的连接可能会遇到一些问题,因为WebSocket连接是持久化的,它需要Upgrade头部来确认升级到WebSocket协议。在多层代理的情况下,每层代理可能会修改或丢失这个Upgrade头部信息。 为了确保WebSocket能…...
【python从入门到精通】-- 第四战:语句汇总
🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…...
【NC50937】货仓选址
题目 货仓选址 二分,前缀和,数学推导 思路 由题意可知货仓的位置是可以和商店的位置重合的。首先应该将商店的坐标从小到大排序,然后假设商店的坐标为 a i a_i ai,货仓的坐标为 x x x,货仓左侧第一家商店&#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 那么会在布局更改时会出现一些出人意料的情况。(本文完全不具备可读性和说教性,仅为博主方便查找问题) 布局item: <!--layout_item.xml--> <?xml version"1.0&qu…...
算法实验二 矩阵最小路径和 LIS
算法实验课二 矩阵最小路径和 leetcode裸题 最小路径和 给定一个包含非负整数的 *m* x *n* 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入&…...
Apache Paimon实时数据糊介绍
Apache Paimon 是一种湖格式,可以使用 Flink 和 Spark 构建实时 数据糊 架构,用于流式和批处理操作。Paimon 创新地将湖格式和 LSM(日志结构合并树)结构相结合,将实时流式更新引入湖架构中。 Paimon 提供以下核心功能: 实时更新: 主键表支持大规模更新的写入,具有非常…...
计算机网络:数据链路层 - 可靠传输协议
计算机网络:数据链路层 - 可靠传输协议 可靠传输概念停止-等待协议 SW回退N帧协议 GBN选择重传协议 SR 可靠传输概念 如下所示,帧在传输过程中受到干扰,产生了误码。接收方的数据链路层,通过真伪中的真检验序列 FCS 字段的值&…...
SaaS级AI员工系统源码商用版,多租户+计费系统+API分销,一套源码搞定
温馨提示:文末有资源获取方式最近“龙虾AI”的热度居高不下,到处都在讨论如何“养龙虾”。但观察下来发现,这类应用对普通用户而言技术门槛还是偏高,部署、配置、调试都需要专人跟进,最终往往沦为摆设。源码获取方式在…...
像素时装锻造坊入门必看:预设咒语+Forge Scale滑块参数详解
像素时装锻造坊入门必看:预设咒语Forge Scale滑块参数详解 1. 工具介绍:像素时装锻造坊 像素时装锻造坊(Pixel Fashion Atelier)是一款基于Stable Diffusion与Anything-v5模型的图像生成工具。它采用独特的复古日系RPG界面设计&…...
分布式电池管理系统:基于微控制器架构的智能电池保护与均衡解决方案
分布式电池管理系统:基于微控制器架构的智能电池保护与均衡解决方案 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS SmartBMS是一个开源的智能电池管理系统,专…...
Deepin Boot Maker:智能解析引擎驱动的跨平台启动盘制作方案
Deepin Boot Maker:智能解析引擎驱动的跨平台启动盘制作方案 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker Deepin Boot Maker是一款采用智能解析引擎的跨平台开源工具,通过自动化流程与硬…...
别再纠结了!用SpringBoot实战告诉你,图片上传选FastDFS还是MinIO(附完整代码)
SpringBoot实战:FastDFS与MinIO文件存储方案深度对比与选型指南 在当今数据驱动的互联网应用中,文件存储系统如同数字世界的基础设施,支撑着从用户头像到高清视频的各种数据存取需求。作为Java开发者,当我们面对"选择困难症&…...
Anaconda Prompt卡在solving environment?别慌,三步搞定清华镜像源配置(附.condarc文件)
Anaconda环境配置卡顿?清华镜像源优化全指南 刚接触Python数据科学的新手们,十有八九会在Anaconda环境配置这一步栽跟头。特别是当看到命令行窗口里"solving environment"的提示一直转圈却迟迟没有进展时,那种等待的煎熬简直让人抓…...
从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点)
从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点) 在工业自动化领域,字符识别技术正逐渐成为生产线上的"眼睛"。无论是产品追溯码读取、包装日期检测,还是仪表盘数值记录&…...
Qwen3-0.6B-FP8效果展示:中英混合输入、长上下文保持、多轮记忆实测
Qwen3-0.6B-FP8效果展示:中英混合输入、长上下文保持、多轮记忆实测 1. 开篇:小模型,大能耐 你可能听过很多关于大语言模型的讨论,动辄几十亿、上百亿参数,部署起来对硬件要求极高。但今天我想跟你聊点不一样的——一…...
AI原生应用的微服务架构设计模式
AI原生应用的微服务架构设计模式:用智能餐厅的故事讲透AI与微服务的碰撞关键词:AI原生应用、微服务架构、设计模式、模型生命周期、实时数据流摘要:当AI大模型、边缘计算和实时决策需求爆发时,传统单体架构已无法满足AI应用的动态…...
在构建高并发、海量数据的分布式系统时,数据存储与治理是核心挑战。单机数据库的性能瓶颈、ID 冲突、历史数据膨胀等问题,都需要通过架构层面的设计来解决
在构建高并发、海量数据的分布式系统时,数据存储与治理是核心挑战。单机数据库的性能瓶颈、ID 冲突、历史数据膨胀等问题,都需要通过架构层面的设计来解决。 以下结合具体业务场景,深度解析分布式 ID、分库分表、数据迁移与冷热分离的内部机制…...
