# 基于C#与SQL SERVER数据库的学生选课及成绩查询管理系统的设计与开发
# 1 项目背景
学生选课及成绩查询系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提高学校的管理效率,有助于推进学校的信息化建设。
# 2 技术选型
本系统未采用C#实现MDI——多文档窗口,因为考虑到C#的该技术与java类似,而暑期java实训时,曾用过类似的方法做过停车场管理系统,所以想为这次的系统注入一点新鲜的血液,所以本系统设计的主题采用了了C#的C#TreeView 实现。
# 3 需求分析
本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等,而学生则可以通过系统来选择课程、查询课程、显示自己的课表、查询自己的成绩单、修改个人密码等等。
## 3.1 系统实现的功能流程
![](http://www.writebug.com/myres/static/uploads/2021/10/19/f32406f849256e82347b74c9e88f640c.writebug)
## 3.2 管理员角色拥有的功能
### 3.2.1 管理员信息管理
- 添加管理员信息
- 管理员可以添加其他的管理员信息
- 修改管理员信息
- 管理员可以删除其他的管理员信息
### 3.2.2 学生信息管理
- 添加学生信息
- 管理员可以添加学生信息,这些信息包括学生的学号,密码,年级,专业,出生日期等等
- 修改学生信息
- 管理员可以修改学生的信息
### 3.2.3 课程管理
- 开设课程
- 管理员可以录入课程信息,学生就可以浏览到这些课程信息,从而选课
- 查询课程
- 可以通过学期查询课程,或通过学期和课程结合的方式查询课程
### 3.2.4 成绩管理
- 录入成绩
- 管理员可以录入学生的成绩
- 统计成绩
- 管理员可以通过学期和课程信息来统计某门课的学生成绩,平均分、最高分、最低分以及可以通过成绩区间来查询某个学期某门课的学生的成绩信息。并且可以实现排序功能
- 修改成绩
- 管理员可以对成绩出错的学生的成绩进行修改
- 修改个人密码
- 管理员可以修改自己的密码
## 3.3 学生角色拥有的功能
### 3.3.1 课程管理
- 选择课程
- 学生可以根据本学期管理员发布的课程来选课
- 查询课程
- 可以通过学期查询课程,或通过学期和课程结合的方式查询课程
- 显示课表
- 学生可以根据自己的选课情况来查询自己的课表
### 3.3.2 成绩管理
- 我的成绩单
- 学生可以根据学期来查询自己某个学期所有选修课程的成绩信息
- 修改个人密码
- 学生可以修改自己的密码
# 4 数据库设计
## 4.1 数据库关系图
![](http://www.writebug.com/myres/static/uploads/2021/10/19/2db1cd8925f90c6aaf7a66fa55deeeb1.writebug)
## 4.2 完成系统中数据表的结构设计
**学生信息表**
| 字段名称 | 数据类型 | 可空 | 默认值 | 说明 |
| ----------- | ------------ | ---- | ---- | ----------------------- |
| stuid | int | 不可 | | 主键,学生id,无实际意思,每次自增1 |
| stuname | Nvarchar(30) | 不可 | | 学生姓名 |
| stuxuehao | Nvarchar(30) | 不可 | | 学生学号,不能重复,登陆时的用户名默认是学号。 |
| stupasswd | Nvarchar(30) | 不可 | | 学生密码 |
| stugrade | Nvarchar(30) | | | 学生年级 |
| stumajor | Nvarchar(30) | | | 学生专业 |
| stusex | varchar(2) | | | 学生性别 |
| stuborn | Nvarchar(30) | | | 学生出生日期 |
| role | Nvarchar(30) | | 学生 | 角色,学生 |
| stuhometown | Nvarchar(30) | | | 学生籍贯 |
**管理员信息表**
| 字段名称 | 数据类型 | 可空 | 默认值 | 说明 |
| --------- | ------------ | ---- | ---- | -------------------- |
| manid | int | 不可 | | 主键,管理员id,无实际意思,每次自增1 |
| manname | Nvarchar(30) | 不可 | | 管理员用户名 |
| role | Nvarchar(30) | 不可 | 管理员 | 角色,管理员 |
| manpasswd | Nvarchar(30) | 不可 | | 管理员密码 |
**课程表**
| 字段名称 | 数据类型 | 可空 | 默认值 | 说明 |
| ------- | ------------ | ---- | ---- | ------------------- |
| claid | int | 不可 | | 主键,课程id,无实际意思,每次自增1 |
| claname | Nvarchar(30) | 不可 | | 课程名 |
| term | Nvarchar(30) | 不可 | | 开课的学期 |
| teacher | Nvarchar(30) | 不可 | | 开课的教师 |
**课程细节表**
| 字段名称 | 数据类型 | 可空 | 默认值 | 说明 |
| -------- | ------------ | ---- | ---- | --------------------- |
| sctimeid | int | 不可 | | 主键,课程细节id,无实际意思,每次自增1 |
| claid | int | 不可 | | 外键,课程号 |
| sctime | Nvarchar(30) | 不可 | | 课程上课的时间 |
| location | Nvarchar(30) | 不可 | | 课程上课的地点 |
**选课表**
| 字段名称 | 数据类型 | 可空 | 默认值 | 说明 |
| ------ | ---- | ---- | ---- | ------------------- |
| scid | int | 不可 | | 主键,选课id,无实际意思,每次自增1 |
| stuid | int | 不可 | | 外键,学生id |
| claid | int | 不可 | | 外键,课程id |
| grades | int | 不可 | | 学生成绩 |
# 5 界面设计
**登录界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/b3ce969c6a3d2859c839bc3e95e9a5f8.writebug)
## 5.1 管理员角色
**管理员主界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/32d6ffb484b63e81b3d73e510dbe2c28.writebug)
**管理员-------添加管理员界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/36cd4329a7aad97bc5a1e76bd51b89e2.writebug)
**管理员——修改管理员界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/2481f201b121f3eb9e957d601688b3d1.writebug)
**管理员——开设课程界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/3cda63e11cc676204ea70ee9d2fb221f.writebug)
**管理员——查询课程界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/61a98269e40ad5fe48032eda6c88ffc1.writebug)
**管理员——录入成绩界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/bfd7d5f4935ebf040abd70fd71487b81.writebug)
**管理员——统计成绩页面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/0d33cecb85846c5379c255eeea053425.writebug)
**管理员——修改成绩界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/862bbf70aa8f9bdb50643e1cafe148b9.writebug)
**管理员——添加学生信息界面**
![](http://www.writebug.com/myres/static/uploads/2021/10/19/86765037ec9498d4c5554d18f7167785.writebug)
**管理员——修改学生信息界面**
![