学生信息管理系统
项目数据库设计说明书
专 业: 计算机科学与技术
班 级: 2016级4班
姓 名: **
报告日期: 2018年12月
目录
第一部分:课程设计内容
第一章 绪论
1课题简介
随着学校规模的不断扩大,学生数量的不断增长,原来的人工记录的方式,甚至是一般的数据存储管理软件都已经不能够满足学生信息管理的需要。因为这些传统的管理方式存在太多的缺陷,例如:
(1)、维护数据的性能低下
(2)、查询信息不方便
(3)、选课效率不高
(4)、维护信息的工作量大
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样的一套学生信息管理系统成为很有必要的事情。
2设计目的
学生信息管理系统提供了强大的学生信息管理功能,方便系统管理员对学生管理,教师管理,课程管理,成绩管理等操作,同时一样的方面学生对自己成绩查询,信息查询,教师对个人信息的查询等。便于学生信息的管理与维护,提高管理的效率,从而开发出此学生成绩管理系统,以实现学校的信息化管理。
3设计内容
运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发公交车管理信息系统,完成学生选课系统的全部功能, 对驾驶员基本档案的管理、车辆基本档案的管理、线路的管理、站点记录的管理。
首先做好需求分析,并完成数据流图和数据字典。
其次做概念结构设计,利用实体联系的方法将用户需求抽象为信息结构,得到E-R 图。
再次就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型。
然后就是物理结构设计,将逻辑数据模型转换为计算机系统所支持的数据库物理结构。
最后就是数据库的实施与运行,把数据载入及运行数据库。
第二章 需求分析
1功能需求
该学生信息管理系统共有三个角色:学生、教师、管理员,各个角色实现的功能如下:
1.1 学生(Student)用户
- 按照学院号查询所开课程,勾选课程选课。
- 查询本学期已选课程。
- 注销本学期所选课程。
- 修改个人信息。
- 修改密码。
- 成绩查询。
- 打印成绩单。
- 查询奖惩信息。
1.2教师(Teacher)用户
- 成绩录入。
- 查看本人所授课程。
- 修改密码。
- 查看所授课程名单
- 学生管理:查询、添加、修改、删除学生信息。查询学生人数。
- 教师管理:查询、添加、修改、删除教师信息。查询教师人数。
- 课程管理:查询、添加、修改、删除课程信息。查询课程数。
- 院系管理:添加、修改、删除院系信息。查询院系数。
- 奖惩管理:添加、修改、删除学生奖惩信息。
- 修改个人信息。
学生管理信息系统 |
登录系统 |
学生用户 修改个人信息 课程查询 选课 退课 成绩查询 打印成绩单 查询奖惩信息 |
教师用户 修改个人信息 查看所授课程信息 查看学生选课信息 成绩录入 |
管理员用户 学生管理 教师管理 课程管理 选课管理 成绩管理 院系设置 奖惩信息管理 管理员操作 |
退出系统 |
2 性能需求
(1)并发访问数量在1000以内;
(2)各类操作系统响应时间控制在5s以内;
(4)要求具有良好的安全性和完整性控制。
第三章 概念结构设计
根据系统需求分析,可以得出学生信息管理系统数据库的概念模型(信息模型),以下图是用E-R图表示的学生信息管理系统的概念模型。最后,对设计出的数据模型进行规范化处理,使数据模型满足第三范式。
1局部E-R图
院长 |
将改系统定名为“学生信息管理系统”。 各实体的分E-R图,如下图所示:
院系 |
院系名 |
学院号 |
联系电话 |
地点 |
图1.1 院系实体图
专业 |
专业名 |
专业号 |
学生规模模 |
特征 |
所属学院 |
图1.2 专业实体图
专业 |
班级名 |
编号 |
所属专业 |
班主任 |
图1.3 班级实体图
教师 |
姓名 |
工号 |
生日 |
职称 |
性别 |
教龄 |
学院 |
电话 |
图1.4 教师实体图
学生 |
姓名 |
学号 |
学龄 |
生日 |
性别 |
电话 |
住址 |
班级 |
图1.5 学生实体图
用户 |
用户名 |
用户类别 |
密码 |
图1.6用户实体图
教师 |
学期 |
课程号 |
学分 |
学时 |
课程号 |
所属院系 |
教师 |
上课地点 |
上课时间 |
图1.7 课程实体图
选课 |
课程号 |
学号 |
学期 |
课程名 |
课程序号 |
图1.8 选课实体图
学生 |
学号 |
奖惩号 |
内容 |
学生姓名 |
类型 |
时间 |
备注 |
图1.9 奖惩实体图
2全局E-R图
全局E-R图,如图E所示:
图E 各实体间的联系
第四章 逻辑结构设计
1关系模式
将学生信息管理系统的E-R图转换为关系数据库的数据模型,其关系模式为:
(1)department(dno,dname,headno,place,phone)
(学院基本信息记录:学院号、学院名、院长、地点、联系方式)
主码:dno
外码:headno参照teacher(tno)
(2)profession(pno,pname,dno,speciality,scale)
(专业基本信息记录:专业号、专业名、所属学院、特征、学生规模)
主码:pno
外码:dno参照department(dno)
- class(classno,classname,tno,pno)
(班级信息管理:班号、班名、班主任、所属专业)
主码:classno
外码:tno参照teacher(tno);pno参照profession(pno)
(4)teacher(tno,tname,sex,level,birthday,worktime,dno,phone)
(教师基本信息记录:工号、姓名、性别、职称、生日、教龄、学院、电话)
主码:tno
外码:dno参照department(dno)
- student(sno,sname,sex,birthday,studytime,phone,address,classno)
(学生基本信息记录:学号、姓名、性别、生日、学龄、电话、住址、班级)
主码:sno
外码:classno参照class(classno)
- user(uname,upwd,uright)
(用户:用户名,密码,用户类别)
主码:uname
- course(cno,ctno,term,cname,period,credit,dno,tno,place,time)
(课程:课程号、课序号、学期、课程名、学时、学分、所属院系、教师、上课时间、上课地点)
主码:cno,ctno,term
外码:dno参照department(dno);tno参照teacher(tno)
- scourse(sno,cno,ctno,term,score)
(选课:学号、选定课程的课程号、课序号、课程名、学期)
主码:sno,cno,ctno,term
外码:sno参照student(sno);cno,ctno,term参照course(cno,ctno,term)
(9)behavior(bno,sno,sname,content,category,date,detail)
(奖惩记录:奖惩号、学号、学生姓名、内容、类型、时间、备注)
主码:bno
外码:sno参照student(sno)
2数据库结构的详细设计
经过检查,此数据库的详细逻辑设计满足第3范式的要求。学生信息管理系统中各表的属性
计情况如下:
表2-1院系表(department)
表2-2专业表(profession)
表2-3班级表(class)
表2-4教师表(teacher)
表2-5学生表(student)
表2-6用户表(user)
表2-7课程表(course)
表2-8选课表(scourse)
表2-9奖惩表(behavior)
第五章 物理结构设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库系统确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。
1建立索引
(1)在表“学生”中,对主键学号做了索引,作为该表的主索引。索引使“学生”中的学号一列按顺序排列,方便查找学生信息,为实现以下功能提供了方便:
查找学生基本信息以及修改学生基本信息;
向“学生”表里添加学生和删除学生信息也可以根据索引方便找到。
(2)在奖惩表中,因频繁用学号作为搜索条件,因此为其建立索引。
(3)其余的表的数据量均不是很大,为了提升系统效率,没有为其单独建立索引。
2存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘,可以改进系统的性能,提高系统的安全性。所以,系统应将日志文件和数据文件存放在不同磁盘上。
3数据库的建立
具体SQL代码如下:
建立数据库:
create database education;
表2-1建立院系表(department)
CREATE TABLE `department` (
`dno` varchar(20) NOT NULL,
`dname` varchar(255) DEFAULT NULL,
`headno` varchar(20) DEFAULT NULL,
`place` varchar(255) DEFAULT NULL,
`phone` varchar(15) DEFAULT NULL,
PRIMARY KEY (`dno`),
KEY `headno` (`headno`),
CONSTRAINT `department_ibfk_1` FOREIGN KEY (`headno`) REFERENCES `teacher` (`tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-2建立专业表(profession)
CREATE TABLE `profession` (
`pno` varchar(30) NOT NULL,
`pname` varchar(255) DEFAULT NULL,
`dno` varchar(30) DEFAULT NULL,
`speciality` varchar(255) DEFAULT NULL,
`scale` varchar(10) DEFAULT NULL,
PRIMARY KEY (`pno`),
KEY `dno` (`dno`),
CONSTRAINT `profession_ibfk_1` FOREIGN KEY (`dno`) REFERENCES `department` (`dno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-3建立班级表(class)
CREATE TABLE `class` (
`classno` varchar(15) NOT NULL,
`classname` varchar(255) NOT NULL DEFAULT '',
`tno` varchar(30) DEFAULT NULL,
`pno` varchar(15) DEFAULT NULL,
PRIMARY KEY (`classno`),
KEY `tno` (`tno`),
KEY `pno` (`pno`),
CONSTRAINT `class_ibfk_2` FOREIGN KEY (`pno`) REFERENCES `profession` (`pno`),
CONSTRAINT `class_ibfk_1` FOREIGN KEY (`tno`) REFERENCES `teacher` (`tno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-4建立教师表(teacher)
CREATE TABLE `teacher` (
`tno` varchar(11) NOT NULL,
`tname` varchar(255) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
`level` varchar(255) DEFAULT NULL,
`brithday` varchar(255) DEFAULT NULL,
`wroktime` datetime DEFAULT NULL,
`dno` varchar(11) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
PRIMARY KEY (`tno`),
KEY `dno` (`dno`),
CONSTRAINT `teacher_ibfk_1` FOREIGN KEY (`dno`) REFERENCES `department` (`dno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-5建立学生表(student)
CREATE TABLE `student` (
`sno` varchar(255) NOT NULL,
`sname` varchar(255) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
`brithday` varchar(255) DEFAULT NULL,
`studytime` datetime DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`classno` varchar(11) DEFAULT NULL,
PRIMARY KEY (`sno`),
KEY `classno` (`classno`),
KEY `sno` (`sno`) USING BTREE,
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`classno`) REFERENCES `class` (`classno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-6建立用户表(user)
CREATE TABLE `user` (
`uname` varchar(255) NOT NULL,
`upwd` varchar(255) DEFAULT NULL,
`uright` varchar(255) DEFAULT NULL,
PRIMARY KEY (`uname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-7建立课程表(course)
CREATE TABLE `course` (
`cno` varchar(15) NOT NULL,
`ctno` varchar(15) NOT NULL,
`term` varchar(255) NOT NULL,
`cname` varchar(255) DEFAULT NULL,
`period` varchar(255) DEFAULT NULL,
`credit` float(2,1) DEFAULT NULL,
`dno` varchar(255) DEFAULT NULL,
`tno` varchar(255) DEFAULT NULL,
`place` varchar(255) DEFAULT NULL,
`time` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cno`,`ctno`,`term`),
KEY `dno` (`dno`),
KEY `tno` (`tno`),
CONSTRAINT `course_ibfk_2` FOREIGN KEY (`tno`) REFERENCES `teacher` (`tno`),
CONSTRAINT `course_ibfk_1` FOREIGN KEY (`dno`) REFERENCES `department` (`dno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-8建立选课表(scourse)
CREATE TABLE `scourse` (
`sno` varchar(12) NOT NULL,
`cno` varchar(11) NOT NULL,
`ctno` varchar(11) DEFAULT NULL,
`term` varchar(255) DEFAULT NULL,
`score` varchar(255) NOT NULL,
PRIMARY KEY (`sno`,`cno`),
KEY `cno` (`cno`,`ctno`,`term`),
CONSTRAINT `scourse_ibfk_2` FOREIGN KEY (`cno`, `ctno`, `term`) REFERENCES `course` (`cno`, `ctno`, `term`),
CONSTRAINT `scourse_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表2-9建立奖惩表(behavior)
CREATE TABLE `behavior` (
`bno` varchar(12) NOT NULL,
`sno` varchar(12) DEFAULT NULL,
`sname` varchar(10) DEFAULT NULL,
`content` varchar(255) DEFAULT NULL,
`category` varchar(255) DEFAULT NULL,
`date` datetime DEFAULT NULL,
`detail` varchar(255) DEFAULT NULL,
PRIMARY KEY (`bno`),
KEY `sno` (`sno`),
CONSTRAINT `behavior_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
实验结果:如下图:
第三部分 分析与总结
1数据库分析
由于在数据库的设计初期,没有对学生信息管理系统进行准确地需求分析,导致后期设计过程中的数据库的概念设计阶段无法进行。
因此,通过此次数据库课程设计使学生认识到了需求分析对于软件系统设计的重要性。也认识到规范化的设计流程对于后期的设计来说,是十分重要的。
前面的设计是后面的铺垫,只有对前面的设计过程进行准确地分析,才能节省整个系统的开发时间。
最后,通过此次数据库课程设计使学生初步理解了简单数据库的一般开发流程,以及数据流图和E-R图等专业图形地绘制。
2课题总结
这一段时间的工作努力,最后的结果固重要,但更重要的是它让我们了解了数据库设计的一般过程。在接受客户的一个项目的时候,首先是进行系统分析。既首先分析其以后的情况以及技术可行性,如果二者可行,我们接下来做的就是总体设计。我们首先必须听取客户的要求,将其提出的功能按某种方式划分为几种模块,这就是整体设计,再对每一个模块进行细化形成最为简单的模块。然后是考虑每一细化模块的算法并将其用语言刻画出来,这就是详细设计。这就迈出了最为关键的一步。剩下的就是编译测试阶段。这是编程的必经阶段,也是我们劳动结果的验金石。只有得到我们期望的结果我们才算真正完成了任务。最后是软件的维护。在软件的使用过程中不可避免地会出现一些错误,因此维护便是必不可少的。这便是完成一个项目必经的过程。
3、项目展望
- 系统的稳定性不高,长时间的运行会导致程序的运行缓慢且影响软件的效率,为了使数据库表之间的关系更为合理的划分,牺牲了一些查询检索的时间,这在大量数据的情况下将会导致程序的查询时间较长。
- 在选课的时候考虑到每个学校选课都是由特定的表格下发的,所以没能将院系的具体中文名称给予提示,这样没有专业对照表的人选课可能不是非常的方便。在以后可以进一步完善这个功能。
4、心得与体会
通过这次课程设计发现这其中需要的很多知识我们没有接触过,去图书馆查资料的时候发现我们前边所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
参考文献
[1] 王珊、萨师煊编著.《数据库系统概论》.第四版.高等教育出版社,2007年
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)