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

cs 复制代码
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

cs 复制代码
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

cs 复制代码
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
相关推荐
哎呦没22 分钟前
SpringBoot框架下的资产管理自动化
java·spring boot·后端
程序员爱技术1 小时前
Vue 2 + JavaScript + vue-count-to 集成案例
前端·javascript·vue.js
m0_571957582 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
并不会2 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、2 小时前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜2 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师2 小时前
CSS的三个重点
前端·css
耶啵奶膘4 小时前
uniapp-是否删除
linux·前端·uni-app
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2344 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端