数据库系统及应用——班级管理系统

article/2025/9/12 7:49:11

我的GitHub网址

数据库技术

在本次设计中,用SQL Server建了六个表用来存储基本信息,分别为Tb_Student (学生信息表)、Tb_Course(课程信息表)、Tb_Course2(选修课程表)、Tb_ScoreSt(学生成绩表)、Tb_Slogin(学生登录表)、Tb_Admin(管理员信息表)。建立一个存储过程,Change_Student实现对学生表增加、更新信息、删除信息。建立一个触发器Slogin,监听学生信息表,如果有新的学生信息插入,则自动给学生登录表添加学生以及默认密码000.。一个视图,用于查看学生成绩(选修和非选修结合)。

C#技术

采用Visual Studio 2015新建项目Windows窗体应用程序,进行界面设计,本程序主要用到了Button、DataGridView、Label、Menustrip、TextBox、RadioButton。
引用using System.Data.SqlClient来进行数据库连接,要存取数据源内的属性,首先要建立程序和数据源之间的连接,利用Connection对象提供与数据源的连接。使用Command对象可以访问用于返回数据、修改数据,运行存储过程以及发送或检索参数信息的数据库命令,调用DataAdapter对象的Fill()方法填充DataSet对象等。

功能需求描述

(1)系统应符合班级管理制度的规定,满足班级日常管理的需要。
(2)基于现有成绩,可展示某学年某学期的成绩,以及对应的获得绩点。
(3)数据录入时,要保证数据的真实性以及合理性,不可出现无关数据。
(4)通过学校给于的综合测评计算方法,在数据库端实现相应的存储过程,方便每个学期结束时,统计德育分总和,品行表现分,学业成绩以及综合成绩和排名情况。
(5)按照奖学金分发的流程,实现自动对奖学金进行评定,减轻工作负担,评定后不合理处可以更改。
(6)操作简单,易懂,方便,能及时按需求进行增、删、改、查。
(7)实现后台的监控功能。

系统运行环境

系统在Windows10开发环境下,利用Visual Studio 2015 开发工具,并使用SQL Server2012作为数据库管理系统,来现班级管理系统的各个功能。

系统功能结构图及功能模块简介

系统功能结构图

主要表的结构

数据库名称为课设,共有6个表,只展示一个,完整项目可以到我的GitHub查看。

Tb_Student(学生信息表),用于保存学生的基本信息,
表3-1	学生信息表

前端界面设计

主登录界面
详细界面设计在GitHub中可以看到

视图

	用于学生查看个人成绩,由于选修课程表和非选修课程表表结构有差异,因此创建虚字段视图,用union all将数据连接起来
create view ScoreSearch 
as 
select S.Sno as SNO,C.Cno as CNO,Cname as CNAME,Cyear as CYEAR,Cterm as CTERM,Ccredit as CCREDIT,Cnature as CNATURE,Score as SCORE
from Tb_Course C,Tb_ScoreSt S
where C.Cno=S.Cno
union all
select C2.Sno_C AS SNO,C2.Cno as CNO,Cname as CNAME,Cyear  as CYEAR,Cterm as CTERM ,Ccredit as CCREDIT , null  as CNATURE, CScore as SCORE
from Tb_Course2 C2,Tb_Student S2
where C2.Sno_C=S2.Sno

存储过程

本系统的存储过程主要用于学生信息更新或者添加时候,避免前端设计时候的语句重复性,造成运行缓慢,因此写到数据库端
create procedure Insert_Student @Sno char(16),@Sname varchar(8),@Ssex char(2) ,@Saddress varchar(50),@Stell char(11),@Sqq char(16) ,@rtn int output
as
declare @tmpSno char(16),@tmpSname varchar(8),@tmpSsex char(2) ,@tmpSaddress varchar(50),@tmpStell char(11),@tmpSqq char(16)if exists(select * from Tb_Student where Sno=@Sno)if @@OPTIONS=0delete from Tb_Student where Sno=@Snoelse if @@OPTIONS=1begin select @tmpSno=Sno,@tmpSname=Sname,@tmpSsex=Ssex,@tmpSaddress=Saddress,@tmpStell=Stell,@tmpSqq=Sqqfrom Tb_Studentwhere Sno=@Snoif (@tmpSno=@Sno and @tmpSname=@Sname and @tmpSsex=@Ssex and  @tmpSaddress=@Saddress  and @tmpStell=@Stell and @tmpSqq=@Sqq )beginset @rtn=0endelse beginupdate Tb_Student set Sno=@Sno,Sname=@Sname,Ssex=@Ssex,Saddress=@Saddress,Stell=@Stell,Sqq=@Sqqwhere Sno=@Snoset @rtn=2endendelsebegininsert into Tb_Student(Sno,Sname,Ssex,Saddress,Stell,Sqq) values(@Sno,@Sname,@Ssex,@Saddress,@Stell ,@Sqq)set @rtn=1    --没有相同的数据,进行插入处理end

触发器

触发器用于管理员添加一个学生个人信息后,向学生登录信息表中添加账户姓名以及默认密码
create trigger Slogin
on Tb_Student 
for insert
as 
declare @sno char(16),@sname varchar(8);
begin select @sno=Sno,@sname=Sname from insertedinsert into Tb_SLogin values (@sno,@sname,'000')
end

登陆界面

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;using System.Text.RegularExpressions;namespace WindowsFormsApplication1
{public partial class Login : Form
{
//静态变量传参,限定修改密码时候只能修改自己的static public string IDnew;static public string name;static public string pass;static public string welcome;public Login(){//Login.ID = null;InitializeComponent();}private void btnLogin_Click(object sender, EventArgs e){string strsql_query = "";if (IDBox.Text != string.Empty && passwdBox.Text != string.Empty){string ID2 = IDBox.Text.Trim().ToString();string passwd = passwdBox.Text.Trim().ToString();string strcon = "Data Source=(local);Initial Catalog=课设;Integrated Security=True";SqlConnection conn = new SqlConnection(strcon);conn.Open();if (stuButton.Checked){strsql_query = string.Format("select * from Tb_SLogin where  Sno='{0}' and Spassword='{1}'", ID2, passwd);}else if (adminButton.Checked){strsql_query = string.Format("select * from Tb_Admin where  id='{0}' and Password='{1}'", ID2, passwd);}SqlCommand cmd_query = new SqlCommand(strsql_query, conn);SqlDataReader dr = cmd_query.ExecuteReader();if (dr.HasRows){dr.Read();if (stuButton.Checked){Login.name = dr["Sname"].ToString();welcome = "欢迎  " + name + "  同学登录本系统";}else if (adminButton.Checked){Login.name = dr["id"].ToString();}dr.Close();if (stuButton.Checked){StudentPage stu = new StudentPage();pass = passwd;IDnew = ID2;MessageBox.Show(welcome);stu.Show();}else{adminPage main = new adminPage();main.Show();}Visible = false;}else{MessageBox.Show("用户名或密码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);passwdBox.Focus();}}else{MessageBox.Show("用户名或密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}}private void reBtn_Click(object sender, EventArgs e){IDBox.Text = "";passwdBox.Text = "";}private void Login_Load(object sender, EventArgs e)//光标TAB换行{IDBox.TabIndex = 0;passwdBox.TabIndex = 1;}public void clear_passwd_ID(Login l){l.passwdBox.Text = "";l.IDBox.Text = "";}}
}

学生个人界面

namespace WindowsFormsApplication1
{public partial class StudentPage : Form{// bool One = false;Login login = new Login();SCoreSt scst;PasswordChange pc;public StudentPage(){InitializeComponent();this.IsMdiContainer = false;}public void CloseFrom(){}private void 注销ToolStripMenuItem_Click(object sender, EventArgs e){DialogResult r = MessageBox.Show("确定注销吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);if (r == DialogResult.Yes){Login login = new Login();login.Visible = true;login.clear_passwd_ID(login);Close();}}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){DialogResult r = MessageBox.Show("确定退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);if (r == DialogResult.Yes){Close();}}private void 成绩查询ToolStripMenuItem_Click(object sender, EventArgs e){this.CloseFrom();scst = new SCoreSt();scst.Show();}private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e){this.CloseFrom();pc = new PasswordChange();pc.Show(); }private void btnChange_Click(object sender, EventArgs e){int clickTimes;object tag = this.btnChange.Tag;if (tag == null){clickTimes = 0;}else{clickTimes = Convert.ToInt32(tag);}this.btnChange.Tag = ++clickTimes;if ((clickTimes % 2) == 1){string word = "保存";btnChange.Text = word.ToString();SaddressBox.ReadOnly = false;StellBox.ReadOnly = false;SqqBox.ReadOnly = false;}else{//SnoBox.ReadOnly = false;string a = SnoBox.Text.Trim().ToString();//SnameBox.ReadOnly = false;string b = SnameBox.Text.Trim().ToString();//SexBox.ReadOnly = false;string c = SexBox.Text.Trim().ToString();//Char[] cc = c.ToCharArray();//由于数据库端对于Ssex列添加check('男','女')的约束,导致存储时出现问题,于是将该约束删去。string d = SaddressBox.Text.Trim().ToString();string g = StellBox.Text.Trim().ToString();string f = SqqBox.Text.Trim().ToString();string sql = "Insert_Student";string strcon2 = "Data Source=(local);Initial Catalog=课设;Integrated Security=True";//存储过程调用及传参SqlConnection conStr = new SqlConnection(strcon2);SqlCommand INs = new SqlCommand(sql, conStr);INs.CommandType = CommandType.StoredProcedure;INs.Parameters.Add("@Sno", SqlDbType.Char).Value = a;INs.Parameters.Add("@Sname", SqlDbType.VarChar).Value = b;INs.Parameters.Add("@Ssex", SqlDbType.Char).Value = c;INs.Parameters.Add("@Saddress", SqlDbType.VarChar).Value = d;INs.Parameters.Add("@Stell", SqlDbType.Char).Value = g;INs.Parameters.Add("@Sqq", SqlDbType.Char).Value = f;INs.Parameters.Add("@rtn", SqlDbType.Int).Value = 2;conStr.Open();SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter(INs);DataTable DT = new DataTable();SqlDataAdapter1.Fill(DT);conStr.Close();MessageBox.Show("修改成功!");string word = "修改";btnChange.Text = word.ToString();SaddressBox.ReadOnly = true;StellBox.ReadOnly = true;SqqBox.ReadOnly = true;}}private void StudentPage_Load(object sender, EventArgs e){string Sno = Login.IDnew;//MessageBox.Show(Sno);//测试有没有传过来string strcon = "Data Source=(local);Initial Catalog=课设;Integrated Security=True";SqlConnection conn = new SqlConnection(strcon);conn.Open();SnoBox.Text = Login.IDnew;string strsql1 = string.Format("select Sname from Tb_Student where Sno='{0}'", Sno);SqlCommand SNAME = new SqlCommand(strsql1, conn);SnameBox.Text = SNAME.ExecuteScalar().ToString().Trim();string strsql2 = string.Format("select Ssex from Tb_Student where Sno='{0}'", Sno);SqlCommand SEX = new SqlCommand(strsql2, conn);SexBox.Text = SEX.ExecuteScalar().ToString().Trim();string strsql3 = string.Format("select Saddress from Tb_Student where Sno='{0}'", Sno);SqlCommand SAD = new SqlCommand(strsql3, conn);SaddressBox.Text = SAD.ExecuteScalar().ToString().Trim();string strsql4 = string.Format("select Stell from Tb_Student where Sno='{0}'", Sno);SqlCommand STEL = new SqlCommand(strsql4, conn);StellBox.Text = STEL.ExecuteScalar().ToString().Trim();string strsql5 = string.Format("select Sqq from Tb_Student where Sno='{0}'", Sno);SqlCommand SQQ = new SqlCommand(strsql5,conn);SqqBox.Text = SQQ.ExecuteScalar().ToString().Trim();conn.Close();}}
}

没用更多的篇幅去讲解这个系统,在GitHub中有详细的说明

部分结果展示

在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/iZsTL0BB.shtml

相关文章

班级管理系统的设计与实现/java/SSM

SSM班级管理系统 摘 要 随着社会的发展,计算机的优势和普及使得SSM班级管理系统的开发成为必需。SSM班级管理系统主要是借助计算机,通过对首页、商铺信息、班级综合评测数据、综合评测数据商品、新闻资讯、我的、跳转到后台、购物车等信息进行管理。减…

学生管理系统

学生信息管理系统设计 一、需求分析 1、开发背景: 信息化已经渗透到我们生活的方方面面,学校信息化的发展也是一种不可避免的趋势。伴随着高等院校招生规模的不断扩大,传统人工管理信息的方法不但不能满足这种管理上的需求,而且…

基于Java的班级管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着信息技术不断的飞速发展,信息技术给现在的生活也在带来翻天覆地的变化。信息时代的到来已经成为一种趋势,人类的发展历史正在进入到一个新的时代。信息技术已经在生活中的各个领域得到普及以及被应用。班级管理在信息技术发展之前一直都是…

班级管理系统(SSM+LayUI)

项目预览 1.项目预览 获取项目q 2300852495(有偿) 项目预览地址 项目源码 角色分类账号密码管理员1705145123老师170507111123学生170507106123 2.系统功能介绍 3.开发环境 系统开发及运行环境 班级管理系统开发环境如下: 操作系统&…

C++课程设计班级管理系统

整体代码展示&#xff1a;借鉴作业的同学可以直接复制粘贴ctrlACV一气呵成&#xff0c;代码可以直接运行。如果怕和同学的重复了再改下参数名就可以&#xff0c;不过记得先备份一份哦。 如果觉得对你们有用还请不要忘记一键三连哟。ヾ(≧▽≦*)o #include <iostream> #i…

c语言编译器好玩的代码,读懂这4个函数,528行代码,你也可以实现一个C语言编译器...

引言 自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。 今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单…

c语言编译器 dev,1.1开篇一:C语言编译器的选择---Dev C++

目录&#xff1a; 1.Dev C的下载&安装&#xff1a; 2.Dev C的使用&#xff1a; 前言&#xff1a; 那么多编译器&#xff0c;为什么选择Dev C&#xff1f;理由有下 理由一&#xff1a;Dev C 体积比较小&#xff0c;不占用太多的内存。 理由二&#xff1a;Dev C 打开速度快&a…

C语言推荐编译器

前言&#xff1a;vs虽然好,但是2015往后的版本相对使用起来比较复杂,对小白不太友好 既然是第一次打C语言,就要使用一个简洁明了,通俗易懂的编译器,这里 推荐 小熊猫devC,这非常的简洁,没有过多的插件,点击下方链接就可以下载&#xff01; DevC官方下载-DevC中文最新版下载(…

C语言编译器Visual Studio官方正版下载安装

首先打开微软官网。 微软官网https://www.microsoft.com/zh-cn/进入Visual Studio的产品介绍页。 一般我们用的是win系统。 点击下载。 选择社区版&#xff0c;因为其他版本要花钱&#xff0c;专业版和企业版。 打开安装包。 选择c&#xff0c;确定没选错&#xff0c;接下来进行…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇&#xff0c;继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器&#xff08;C的编译器是g&#xff0c;用法选项基本一样&#xff09;。 既然是编译器&#xff0c;我们就再来加点餐…… 链接其实分为两种类型&#xff1a;静态链接和动态链接&#xff0…

初学者-C语言基础练习(二)——C语言编译器的使用方法

安装完之后我们就可以开始我们的程序编写了&#xff0c;但是这里还是有必要讲一下初学者该注意的事项。 1.拒绝堆排多个文件 2.切记不能使用中文输入&#xff0c;编写程序一定要在英文状态下编写&#xff0c;注释内容除外 3.每个语句结束不要忘记分号 说完这三个注意了&am…

c语言编译器苹果下载,c语言编译器ios下载

c语言编译器ios介绍 c语言编译器ios是一款非常实用的编程语言学习类手机软件&#xff0c;软件可以给我们带来许多的功能可以让我们使用&#xff0c;通过软件我们就能够进行代码的编译而且在这里就能够验证许多的小程序&#xff0c;还支持我们文件代码的打开可以在这里进行浏览非…

手机c语言编译器ide文件位置,C语言编译器IDE

C语言编译器IDE是一个手机上的C语言编辑软件&#xff0c;支持在线编译各种代码&#xff0c;创建代码文件或管理不同的代码项目等&#xff1b;里面设置了C语言工程管理中心&#xff0c;其中的工程项目内容一目了然&#xff0c;所有工程项目名称都清晰展示&#xff0c;还显示自己…

新手c语言编译器推荐

c语言程序开发需要在某种编程环境中进行。 c语言常用的编程环境有Dev-C、C-Free、Code::Blocks、CLion、Turbo C、VS、VS Code、Visual C等。 1、VS/VS Code vs和vs code是很好用的编辑器&#xff0c;但是占用空间很大、操作有点繁琐对新手不太友好。 2、C-Free/Turbo C C…

windows系统c语言编译器安装

windows系统c语言编译器安装 1、安装包下载及说明 MinGW 的全称是&#xff1a;Minimalist GNU on Windows &#xff0c;实际上是将gcc&#xff08;c/c编译器&#xff09;移植到了 Windows 平台下&#xff0c;并且包含了 Win32API &#xff0c;因此可以将源代码编译为可在 Win…

c语言如何用编译器编辑,C语言编译器怎么用,C语言编译器使用教程

C语言编译器怎么用的详细解析 一、本站站点下载并安装&#xff0c;解压缩后&#xff0c;运行exe安装文件&#xff0c;单击“下一步” 二、选择已安装的组件后&#xff0c;单击“下一步” 三、单击“下一步”&#xff0c;默认情况下可以设置软件的安装位置&#xff0c;或者单击“…

微信公众号怎么发PDF文件

在微信公众号发表图文时&#xff0c;可以借助“文章附件”小程序在图文素材中添加文件&#xff0c;作为附件给粉丝下载。文章附件小程序支持的文件格式&#xff1a;Word、Excel、PPT、PDF、txt、zip、rar、7z、mp3、psd、wps等&#xff08;还有更多&#xff09;。 方法/步骤 …

业余草微信公众号Markdown编辑器, 适合代码排版

随着大家都转战微信公众平台&#xff0c;如何快速的编写文章就摆在了首要位置。不可否认&#xff0c;使用微信自带的编辑器可以做出好看的排版&#xff0c;甚至用第三方编辑器有更多的模板。但是&#xff0c;这些全部都需要手动的调整。本来公众平台就算是自媒体&#xff0c;非…

Vue微信公众号 创建自定义菜单

创建菜单的程序之前需配置&#xff1a; 1、申请一个测试公众号并设置接口信息&#xff0c;JS接口安全域名以及网页授权获取用户基本信息&#xff0c;这三项都要设置为自己的程序映射的公网地址 网页服务-》网页帐号-》网页授权获取用户基本信息&#xff1a;进行OAuth2.0网页授…

视频教程-微信公众号编辑器开发-微信公众号开发11-微信开发php-微信开发

微信公众号编辑器开发-微信公众号开发11-微信开发php 大秦电商创始人&#xff0c;专注网络技术的电商应用。已经出品《1小时建站》《微博营销实战》《PHP采集》《网络招商系统》 秦子恒 1201.00 立即订阅 扫码下载「CSDN程序员学院APP」&#xff0c;1000技术好课免费看 APP订阅…