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 字段的值&…...
苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)
目录 一、缓存菜品 1 问题说明 2 实现思路 3 代码开发:修改DishServiceImpl 4 功能测试 二、SpringCache 1. 介绍 2. 使用语法 1 起步依赖 2 使用要求 3 常用注解 4 SpEL表达式(了解备用) 5 步骤小结 3.入门案例 1 准备环境 2 使用入门 1 引导类上加…...
C语言第三十八弹---编译和链接
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 编译和链接 1、翻译环境和运行环境 2、翻译环境 2.1、预处理(预编译) 2.2、编译 2.2.1、词法分析 2.2.2、语法分析 2.2.3、语义分…...
无人售货奶柜:开启便捷生活的新篇章
无人售货奶柜:开启便捷生活的新篇章 在这个快节奏的现代生活中,科技的革新不仅为我们带来了前所未有的便利,更在不经意间改变着我们的日常。其中,无人售货技术的出现,尤其是无人售货奶柜,已经成为我们生活…...
STM32为什么不能跑Linux?
STM32是一系列基于ARM Cortex-M微控制器的产品,它们主要用于嵌入式系统中。而Linux则是一个开源的类Unix操作系统,主要面向的是桌面电脑、服务器等资源丰富的计算机。虽然理论上可以将Linux移植到STM32上运行,但是由于两者之间存在着很多技术…...
Dubbo 3.x源码(18)—Dubbo服务引用源码(1)
基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo的服务导出的源码,在DubboBootstrapApplicationListener#startSync方法中,在调用了exportServices方法进行服务导出之后,立即调用了referServices方法…...
设计模式:工厂模式和抽象工厂模式的区别
定义 工厂模式(Factory Pattern)通常指的是工厂方法模式(Factory Method Pattern),它定义了一个创建对象的方法,由子类决定要实例化的类。工厂方法让类的实例化推迟到子类。 抽象工厂模式(Abstract Factory Pattern)提供了一个接口,用于创建相关或依赖对象的家族,而…...
python面试题(36~50)
36、如何取一个整数的绝对值? 这可以通过abs函数来实现。 abs(2) #> 2 abs(-2) #> 2 37、如何将两个列表组合成一个元组列表? 可以使用zip函数将列表组合成一个元组列表。这不仅仅限于使用两个列表。也适合3个或更多列表的情况。 a [a,b,c] b [1,2,3] [(k,v) fo…...
Vue 样式技巧总结与整理[中级局]
SFC(单文件组件)由 3 个不同的实体组成:模板、脚本和样式。三者都很重要,但后者往往被忽视,即使它可能变得复杂,且经常导致挫折和 bug。 更好的理解可以改善代码审查并减少调试时间。 这里有 7 个奇技淫巧…...
cesium加载.tif格式文件
最近项目中有需要直接加载三方给的后缀名tif格式的文件 <script src"https://cdn.jsdelivr.net/npm/geotiff"></script> 或者 yarn add geotiff npm install geotiff 新建tifs.js import GeoTIFF, { fromBlob, fromUrl, fromArrayBuffer } from geotif…...
分布式全闪占比剧增 152%,2023 年企业存储市场报告发布
近日,IDC 发布了 2023 年度的中国存储市场报告。根据该报告,在 2023 年软件定义存储的市场占比进一步扩大,分布式全闪的增长尤其亮眼,其市场份额从 2022 年的 7% 剧增到 2023 年的 17.7%,增长了 152%。 01 中国企业存…...
凡科做的网站怎么样/北京seo优化推广
方法1:sudo apt-get -f install -f 尝试修正系统依赖损坏处 方法2:修改/etc/apt/sources.list文件,用下面的地址替换原来的官方默认地址 deb cdrom:[Ubuntu 16.04.3 LTS _Xenial Xerus_ - Release amd64 (20170801)]/ xenial main restrict…...
专业集团门户网站建设方案/扬州网络优化推广
1 第2-3课:模板引擎 Thymeleaf 基础使用 1.1 模板引擎 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的 HTML 文档。 模板引擎的实现方…...
网站公安备案是必须的吗/百度平台我的订单查询在哪里
在linux运维工作中,熟练掌握磁盘管理相关技能是对运维人员最基本的要求。最近在学习系统管理的内容,而磁盘分区是其中比较重要的一部分内容。本实验所用linux系统为Centos6.6,涉及到的知识为linux磁盘分区。一、在实验前必须先要了解磁盘管理…...
重庆网领网站建设公司/泉州百度开户
在使用自带的水晶报表时,请注册,否则只能使用30次<?xml:namespace prefix o />水晶报表注册码注册号:6707437608密码:AAP5GKS0000GDE100DS...
服务佳的小企业网站建设/东莞seo外包
Spring Framework Documentation 5.3.10 Core Technologies 下载此文档pdf版 返回文档下载页面 Spring框架文档 - 核心技术部分 中英双语版 第二部分 内容目录 2. Resources (资源) 407 2.1. Introduction(介绍) 407 2.2. The Resource Interface(…...
渭南疫情防控最新通知/王通seo赚钱培训
题面 二分后用网络流判定 S->人,流量为二分的mid 人->比赛,流量为1 比赛->T,流量为1 输出方案只要判断a就可以了 # include <bits/stdc.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, si…...