C#学生成绩管理系统数据库课程设计

据库课程设计

目录

一、建立数据库的目的与要求 2

二、需求分析 3

2.1 需求分析 3

2.2 系统功能模块图 4

2.3数据字典 5

三、概念结构设计 7

3.1 局部E-R图 7

3.2 全局E-R图 9

四、逻辑结构设计 10

4.1关系表 10

4.2关系表 10

4.3视图 12

五、物理结构设计 12

六、结论 13


学生成绩管理系统

一、建立数据库的目的与要求

  1. 目的

1.通过数据库课程设计,熟悉SQL SERVE的结构区域组成,掌握SQL SERVE的使用,最终达到掌握数据库管理系统的使用,提高分析问题、解决问题和实践应用能力。

2.掌握学生成绩管理系统开发的全过程,理解数据库课程相关的概念,掌握数据库系统的开发步骤。主要包括:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施阶段、数据库运行维护阶段。

  1. 要求

管理员信息管理

添加管理员信息;

管理员可以添加其他的管理员信息。

修改管理员信息;

管理员可以删除其他的管理员信息。

学生信息管理

添加学生信息;

管理员可以添加学生信息,这些信息包括学生的学号,密码,年级,专业,出生日期等等。

修改学生信息;

管理员可以修改学生的信息;

课程管理

开设课程;

管理员可以录入课程信息,学生就可以浏览到这些课程信息,从而选课。

查询课程;

可以通过学期查询课程,或通过学期和课程结合的方式查询课程。

成绩管理

录入成绩;

管理员可以录入学生的成绩。

统计成绩;

管理员可以通过学期和课程信息来统计某门课的学生成绩,平均分、最高分、最低分以及可以通过成绩区间来查询某个学期某门课的学生的成绩信息。并且可以实现排序功能。

修改成绩;

管理员可以对成绩出错的学生的成绩进行修改。

修改个人密码;

管理员可以修改自己的密码。

二、需求分析

2.1 需求分析

学生成绩管理系统,旨在探索一种以互联网为平台的管理模式。这种新的管理模式,使教务管理突破时空限制,实现管理的网络化,提高管理效率和标准化水平。使学校管理者、教师和学生可以在任何时候、任何地点通过网络进行管理与查询,让管理者从繁重的工作中解脱出来,将主要精力转移到创造性的教学改革工作中。本系统主要完成对学生基本信息、教师信息、院系信息、专业信息、课程信息、成绩信息和奖惩信息等多种数据信息的管理,即对数据库中表的录入、修改、删除和查询等功能。

成绩管理系统的功能需求包括管理员、学生和教师对功能的需求的三大部分:

1.管理员对功能的需求:管理员权限最大,可以对学生、教师、课程进行管理,包括对学生成绩信息的增删改查,对教师信息的增删改查,以及对课程信息的增删改查等。

2.学生对功能的需求:学生只是利用此系统修改自己的登录密码,查

询自己的成绩信息,查询课程信息,进行选课,查询成绩。

3.教师对功能的需求:

教师利用该系统可以修改自己的登录密码,查询自己的信息,查询自己的授课信息,还对学生和课程进行管理,录入、修改学生的成绩。



2.2 系统功能模块图



其系统功能模块说明如下:

  • 学生信息管理模块:该模块主要负责所有在校学生的个人基本信息。学生通过这个模块,可以查询自己在校的成绩信息,以及修改自己的登录密码等。管理员通过这个模块可以增加、删除、更改、查询学生的成绩信息。
  • 学生课程管理模块:该模块主要负责管理全校师生的课程信息。主要功能包括增加、删除、更改、查询课程信息,其中只有管理员才具有对课程信息进行维护的权限(增加、删除、更改)。学生课程管理模块是选课管理模块的基础,只有在课程管理中添加选修课的信息,学生才能进行选课。针对选课模块,其功能行使者是学生,学生通过浏览全部的课程信息,选择符合自己要求的课程。
  • 学生成绩管理模块:该模块的功能主要由老师所拥有。对于选择自己所教授课程的学生,老师具有给定该学生的专业分数和修改该学生的专业分数的权限,而学生只具有查询自己专业成绩的权限。
  • 奖惩信息管理模块:该模块主要负责学生受奖励或受批评的公告信息。由学校管理员负责发布。
  • 系统管理员管理模块:该模块由系统管理员全权拥有,负责管理学生、管理教师、管理课程等功能模块。

2.3数据字典

数据字典的数据项如下列表所示:

学生信息表

用户表:student
字段名称 数据类型 可空 默认值 说明
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) 学生籍贯


管理员信息表

管理员信息表:manager
字段名称 数据类型 可空 默认值 说明
manid int 不可 主键,管理员id,无实际意思,每次自增1
manname Nvarchar(30) 不可 管理员用户名
role Nvarchar(30) 不可 管理员 角色,管理员
manpasswd Nvarchar(30) 不可 管理员密码


课程表

课程表:class
字段名称 数据类型 可空 默认值 说明
claid int 不可 主键,课程id,无实际意思,每次自增1
claname Nvarchar(30) 不可 课程名
term Nvarchar(30) 不可 开课的学期
teacher Nvarchar(30) 不可 开课的教师


课程细节表

课程细节表:sctime
字段名称 数据类型 可空 默认值 说明
sctimeid int 不可 主键,课程细节id,无实际意思,每次自增1
claid int 不可 外键,课程号
sctime Nvarchar(30) 不可 课程上课的时间
location Nvarchar(30) 不可 课程上课的地点


选课表

选课表:sc
字段名称 数据类型 可空 默认值 说明
scid int 不可 主键,选课id,无实际意思,每次自增1
stuid int 不可 外键,学生id
claid int 不可 外键,课程id
grades int 不可 学生成绩


三、概念结构设计

3.1 局部E-R图














3.2 全局E-R图








四、逻辑结构设计

4.1关系表

将E-R图转换为关系模型实际上就是要奖实体型、实体的属性和实体型之间的联系转换为关系模式,这种转换一般遵循如下原则:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。

4.2关系表

1、系统用户表

系统用户表“admin”用于存放系统用户的相关数据。其结构如表1-1所示。

表1-1 系统用户表

列名 说明 数据类型 约束
userName 用户名 字符串,长度为16 主键
userPwd 用户密码 字符串,长度为16 非空
RoleName 权限 字符串,长度为16 取值为“用户”、 “管理员”

2、学生信息表

学生信息表“Student”结构如表1-2所示。

表1-2 学生信息表

列名 说明 数据类型 约束
studentID 学号 字符串,长度为10 主键
StudentName 姓名 字符串,长度为8 非空
ClassID 班级 字符串,长度为2 非空
MajorID 年级 整数 -非空
PicURL 照片 字符串,长度为20 主键-

3、课程信息表

课程信息表“subject”结构如表1-3所示。

表1-3 课程信息表

列名 说明 数据类型 约束
SubjectID 课程号 字符串,长度为10 主键
SubjectName 课程名 字符串,长度为20 非空
TypeID 课程数 整数 非空

4、专业信息表

成绩信息表“Major”结构如表1-4所示。

表1-4 成绩信息表

列名 说明 数据类型 约束
MajorID 专业号 字符串,长度为10 主键
MajorName 专业名 字符串,长度为10 主键

4.3视图

根据用户的需求,需建立三个视图,分别是查看学生视图、查看课程视图、查询选课视图。

五、物理结构设计

数据库在物理设备上的存储结构与存取方法成为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。

 数据库的物理设计通常分为两步:

(1) 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;

(2) 对物理进行评价,评价的重点是时间和空间效率。

 关系数据库物理设计的内容主要包括:

(1) 为关系模式选择存取方法;常用的存储方法有索引法(B+树法)、聚簇法和HASH方法。

(2) 设计关系、索引等数据库文件的物理存储结构。

 确定数据库物理结构主要指确定数据的存放位置和存储结构,包括:确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。

 评价屋里数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存储时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。

六、结论

在这开发的过程中,我收获很大,相比前几次的开发,我真正重视起测试在软件开发中的作用,在软件开发的后期,我专门建立一个bug列表,将出现的bug详细记录在列表中,并在软件调试的后期对照列表认真改进软件,考虑以后使用软件来做相关方面的管理。当然,我也遇到不少代码编写的问题,有时要花较长的时间来解决问题,这也是自己平时编写代码较少的原因。通过这次软件的开发,在编写代码上有了一定的提高,同时也知道了软件开发过程中需要注意的问题。比如,开发逻辑思维要清晰,不然可能会把问题想的复杂化。平时多和项目成员交流,这样你才能知道自己的想法有那些出入,利于软件的开发。

通过这次实验,使我对软件开发有了更深一步的了解。在软件开发中应注意的问题和考虑的问题都能较好的做到。

发布于 2021-12-09 21:49