c#_sqlserver_三层架构winform学生信息管理及选课系统

news2024/12/26 23:26:05

基本功能包括管理员登录、注册学生账号、删除学生信息、查找学生信息、发布课程、修改课程、删除课程等。

教师端

  1. 登录:管理员登陆,拥有相应账号即可登录(后台注册)。
  2. 注册学生账号:管理员可给学生分配学号,学号即作为学生登录账号
  3. 查找学生信息:对在籍学生信息查看

4) 删除学生信息:对毕业学生从系统删除

5) 发布课程:发布具体课程 

  6) 修改课程: 修改发布的课程

7) 删除课程:删除课程

学生端

  1. 登录:根据自己的学号和默认密码登录学生端 
  2. 上传完善自己的基本信息:老师注册学生基本信息,该信息不可更改,学生补充剩余信息保存,此信息老师端可查看。 
  3. 选课:对发布课程选课

2.3其他要求

操作系统:Windows10

运行环境:VisualStudio 

数据库环境:SQL Server 2008

)登陆注册功能

A.登录:输入用户名和密码登录,验证用户名和密码,进行登录。

B.注册:老师账号后台注册,学生账号老师注册的学号即是学生账号。

2)增删查改功能

A.添加学生信息、课程信息:对学生信息和课程的录入。

B.删除学生信息、课程信息:对学生信息和课程的移除。

C.查找学生信息:查看学生信息(学号查找)。

D.修改课程信息、学生修改自己基本信息:对学生错误信息进行修改。

E.学生选课:对老师发布的课程选课、退课

3.2数据库设计

本学生信息管理系统所用的数据库是Sqlserver数据库连接。在Sqlserver中创建学生信息和课程管理系统的数据库,包含5张表,学生信息表dbo.BasicInfomation,课程信息表dbo.Test,学生选课表dbo.Stuchoose,两个密码表dbo.User1,dbo.User2

dbo.BasicInfomation学生信息表结构如表3-1所示,dbo.Test课程信息表结构如表3-2所示,

dbo.Stuchoose学生选课表结构如表3-3所示,dbo. User1课程信息表结构如表3-4所示,dbo. User2课程信息表结构如表3-5所示

(1)用户表

此表主要用来存储学生基本信息,即学生的学号,姓名等信息

3-1学生信息

表名

dbo.BasicInfomation

功能

存放学生的基本信息

数据描述

数据规模

百级

聚集索引

学号  ASC

非聚集索引

字段名

类型

说明

约束控制

备注

学号

Int

主键

调用触发器,完成学生账号自动注册

姓名

nvarchar(50)

性别

nvarchar(50)

民族

nvarchar(50)

寝室号

nvarchar(50)

政治面貌

nvarchar(50)

邮政编码

nvarchar(50)

联系电话

nvarchar(50)

身份证号

nvarchar(50)

常住地址

nvarchar(50)

户籍地址

nvarchar(50)

学生照片

Image

2课程信息

此表主要用来存储课程的基本信息,即学生的学院、专业、课程名、老师等。

3-2课程信息

表名

dbo.Test

功能

存放课程信息

数据描述

数据规模

百级

聚集索引

课程编号  ASC

非聚集索引

字段名

类型

说明

约束控制

备注

课程编号

int

主键

PK identity(2021001,1)

学院

nvarchar(50)

专业

nvarchar(50)

课程名称

nvarchar(50)

授课教师

nvarchar(50)

上课时间

nvarchar(50)

教室

nvarchar(50)

学分

nvarchar(50)

3学生选课

此表主要用来存储学生的选课信息,即学生的学号、课程等。

3-3课程信息

表名

dbo. Stuchoose

功能

存放学生选课的信息

数据描述

数据规模

百级

聚集索引

学号  ASC

非聚集索引

字段名

类型

说明

约束控制

备注

学号

int

主键

课程编号

nvarchar(50)

学院

nvarchar(50)

专业

nvarchar(50)

课程名称

nvarchar(50)

授课教师

nvarchar(50)

上课时间

nvarchar(50)

教室

nvarchar(50)

学分

Int

4学生选课

此表主要用来存储老师的账号信息,即学生的账号、密码。

3-4课程信息

表名

dbo. 

功能

存放老师账号的信息

数据描述

数据规模

百级

聚集索引

  Id ASC

非聚集索引

字段名

类型

说明

约束控制

备注

id

nvarchar(50)

主键

pwd

nvarchar(50)

5学生账号

此表主要用来存储学生的账号信息,即学生的账号、密码、姓名。

3-5学生账号信息

表名

dbo. User2

功能

存放学生账号的信息

数据描述

数据规模

百级

聚集索引

学号  ASC

非聚集索引

字段名

类型

说明

约束控制

备注

学号

Int

主键

pwd

nvarchar(50)

默认值123

姓名

nvarchar(50)

7.总结

通过本次设计我感受到了自己的成长,也有一些具体的收获:

收获1:三层架构的应用使得程序的结构清晰,代码简洁,查错方便,可快速定位到是数据访问出错,还是表示层逻辑错误,但前提各项依赖以及调用必须严谨准确。 

收获2:代码千万条,结果就一条。我们要尽可能简化我们的代码,同样的效果,简洁的代码不仅可读性好,而且对程序性能也能有很好的优化。我们可以多在网上看看不同人对一个问题的解决方法,从而提升自己。

收获3:当我们在编码出错时,自己一眼看不出是什么问题时,我们可以尝试使用try catch语句来帮忙输出错误信息。

收获4:开发一个完整的程序,一定要按照正常流程操作。先进行前期调查,设计。最后再开始写程序,往往会省了不少事,这次我设计中就返工多次,都是因为与要求出现了分差。并且在入手程序开发时,一般从数据库入手,先想好功能需要什么数据。这样就不会出现在写代码途中,不停更改自己的数据库,这样很容易报错,并且不好找错。 

通过这次的系统设计,我还有一些感想:

经过自己一个月的努力,我完成了我的设计和报告。从选题开始,到需求以及实现系统的各个功能,我感觉它就像做数学题一样,当你在设计中遇到了难题时,开始会感到不知所措。不知道该怎么解决,但静下心来,通过翻阅书籍,上网查资料,自己一步一步尝试解决。中途可能很曲折,往往不会一试就过,而是需要尝试多次。多次尝试后当突然程序成功运行不报错时,那你心中的喜悦是无法形容的。这也使得你越来越有兴趣做下去。

一个完整的小系统包含的内容也是很多的,我们要养成写注释的习惯。我在完成的这个小系统的时间里,有时查看前几天的代码时,往往要从头看着走,不然很难看懂其中关系和意思。有时也不好查找相应功能的代码在哪儿,可见注释就很有必要。何况这是个小系统且一个人完成的,在实

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Mint编译安装Qemu

文章目录 前言1. 准备Qemu源码包2. 编译安装2.1 首次尝试编译2.2 安装python3-venv2.3 安装sphinx2.4 安装sphinx-rtd-theme2.4 安装ninja2.6 安装编译器 3. 重新编译并安装4. 进行固件仿真4.1 准备固件4.2 Binwalk解析文件4.3 看一下文件结构4.4 安装sasquatch4.5 重新解析文件…

OkHttp: 拦截器和事件监听器

文章目录 1. 拦截器1. 拦截器链2. 实际案例1. 注册为应用拦截器2. 注册为网络拦截器 3. 如何选择用哪种拦截器1. 应用拦截器2. 网络层拦截器3. 重写请求4. 重写响应 4. 可用性 2. 事件监听器1. 请求的生命周期2. EventListener使用案例3. EventListener.Factory4. 调用失败的请…

一、Oracle学习笔记

1.1.1实例的概念实例是一组内存结构和后台进程的集合。oracle适用于大型的应用系统1.1.2实例的构成1.实例中的这部分内存结构叫做系统全局区(SGA):存储数据库中的数据、存储数据字典的信息、重做日志、经过解析的SQL代码等一个实例只有一个SGA&#xff1…

QT作业4

实现一个闹钟&#xff0c;当输入时间后&#xff0c;点击启动到达时间后循环播报三遍&#xff0c;便签内容 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTextToSpeech> //文本转语言类 #include <QTimerEvent> //定…

EasyV易知微助力智慧城市未来趋势发展——数字孪生城市

“智慧城市的未来趋势就是数字孪生”——《基于数字孪生的智慧城市》 城市数字化管理、智慧城市和数字孪生城市的发展是相互促进、逐步深化的过程。 城市数字化管理作为起点&#xff0c;奠定了信息化、数据化的基础&#xff1b;而智慧城市则将数字城市管理进一步升级&#xff…

什么是防抖与节流?应用场景举例

防抖节流如何处理防抖与节流 防抖节流防抖例子节流例子Vue Axios全局接口防抖、节流封装实现 小结 防抖 防抖&#xff1a;触发高频事件后n秒内函数只会执行一次&#xff0c;如果n秒内高频事件再次被触发&#xff0c;则重新计算时间 应用场景&#xff1a; 提交按钮、用户注册…

时间序列预测 — CNN-LSTM实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 导入库文件 1.2 导入数据集 1.3 缺失值分析 2 构造训练数据 ​3 模型训练 3.1 CNN-LSTM网络 3.2 模型训练 4 模型预测 专栏链接&#xff1a;https://blog.csdn.net/qq_41921826/category_12495091.html 1 数据处理 1.1 导入库文件 import scip…

数据库系统相关概念

数据&#xff1a;描述事务的符号记录。 数据库(DB)&#xff1a;按一定的数据模型组织&#xff0c;描述和存储在计算机内的&#xff0c;有组织的&#xff0c;可共享的数据集合。 数据库管理系统(DBMS)&#xff1a;位于用户和操作系统之间的一层数据管理软件。主要功能包括&#…

(C++)最大连续1的个数--滑动窗口

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…

【LeetCode题目拓展】第207题 课程表 拓展(拓扑排序、Tarjan算法、Kosaraju算法)

文章目录 一、拓扑排序题目二、题目拓展1. 思路分析2. tarjan算法3. kosaraju算法 一、拓扑排序题目 最近在看一个算法课程的时候看到了一个比较好玩的题目的扩展&#xff0c;它的原题如下&#xff1a; 对应的LeetCode题目为 207. 课程表 这个题目本身来说比较简单&#xff…

C# WPF上位机开发(增强版绘图软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们写过一个绘图软件&#xff0c;不过那个比较简单&#xff0c;主要就是用鼠标模拟pen进行绘图。实际应用中&#xff0c;另外一种使用比较多的…

【flutter对抗】blutter使用+ACTF习题

最新的能很好反编译flutter程序的项目 1、安装 git clone https://github.com/worawit/blutter --depth1​ 然后我直接将对应的两个压缩包下载下来&#xff08;通过浏览器手动下载&#xff09; 不再通过python的代码来下载&#xff0c;之前一直卡在这个地方。 如果读者可以…

C++11 【初识】

C11简介 1.在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。 2.不过由于C03(TC1)主要是对C98标准中的漏洞进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯性的把两个标准合…

【vtkWidgetRepresentation】第十期 vtkAngleRepresentation标注角度

很高兴在雪易的CSDN遇见你 前言 本文分享VTK中的角度标注,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO AngleRepresentation 目录 前言 1. vtkAngleRepresentatio

Windows使用selenium操作浏览器爬虫

以前的大部分程序都是操作Chrome&#xff0c;很少有操作Edge&#xff0c;现在以Edge为例。 Selenium本身是无法直接控制浏览器的&#xff0c;不同的浏览器需要不同的驱动程序&#xff0c;Google Chrome需要安装ChromeDriver、Edge需要安装Microsoft Edge WebDriver&#xff0c…

直面双碳目标,优维科技携手奥意建筑打造绿色低碳建筑数智云平台

优维“双碳”战略合作建筑 为落实创新驱动发展战略&#xff0c;增强深圳工程建设领域科技创新能力&#xff0c;促进技术进步、科技成果转化和推广应用&#xff0c;根据《深圳市工程建设领域科技计划项目管理办法》《深圳市住房和建设局关于组织申报2022年深圳市工程建设领域科…

二叉搜索树基本概念与实现

目录 基本概念 模拟实现 完整代码 基本概念 根的左节点比根小 根的右节点比根大 左右子树都满足 搜索二叉树的中序遍历是升序 模拟实现 完整代码 #pragma oncetemplate<class K> struct BSNode {BSNode<K>* _left;BSNode<K>* _right;K _val;BSNode(c…

【C语言程序设计】循环结构程序设计

目录 前言 一、程序设计第一题 二、程序设计第二题 三、程序设计第三题 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da…

1.函数递归起(复习)

1.debug版本可以调试,realse版本不能调试 2.在realse版本中,代码已经得到了优化(编译器可能会自作主张地对代码进行优化),在大小和速度上都是最优的 3.ctrl F5 是开始执行不调试 4.设置好断点后,用F5到达该断点,相当于是到达了该断点的那个位置程序就先停止运行了 5.设立断…

Linux shell编程学习笔记35:seq

0 前言 在使用 for 循环语句时&#xff0c;我们经常使用到序列。比如&#xff1a; for i in 1 2 3 4 5 6 7 8 9 10; do echo "$i * 2 $(expr $i \* 2)"; done 其中的 1 2 3 4 5 6 7 8 9 10;就是一个整数序列 。 为了方便我们使用数字序列&#xff0c;Linux提供了…