数据库课程设计-学生管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩:__________
《数据库原理及应用》
课程设计
课题数据库课程设计之学生管理系统
班级
学号
姓名
指导教师
2012 年 6 月 25 日—2012年 6 月 29 日
前言 (3)
概述 (3)
项目背景 (3)
编写目的 (3)
定义 (4)
开发环境 (4)
需求分析 (5)
问题陈述 (5)
功能需求 (5)
运行需求 (5)
数据流图 (6)
存储说明 (9)
数据字典 (10)
概念结构设计 (14)
逻辑结构设计 (17)
软件功能设计 (22)
代码设计和界面设计 (25)
小结................................................................................................ 错误!未定义书签。
参考文献........................................................................................ 错误!未定义书签。
附录................................................................................................ 错误!未定义书签。
网络的兴起和巨大发展对人们的生活方式产生了深远的改变,通过互联网络,人们获得了一个更加便捷更加广阔的获取有用信息的途径,人们可以足不出户坐在电脑前便可以做很多事情。
而数据库系统的不断发展与完善,则让互联网络在人们生活中的应用如虎添翼,因为随着越来越多的人认识到WEB网络给我们日常生活带来的巨大便利,WEB 应用的用户也在爆炸式增长,在方便我们生活的同时,许多问题也接踵而至,越来越庞大的数据量让工作人员不堪重负,无论在建立数据库和维护数据库方面,近几个月来,CSDN、天涯等知名IT企业相继出现数据库信息泄露事件向我们昭示了数据库安全方面所面临的严峻挑战。
可见,建立安全高效的高性能数据库是我们要为之不懈努力的方向。
为了更好地掌握数据库相关知识,我们针对学生管理问题,运用所学到的数据库知识,在老师的指导下建立了一个简易的模仿教务工作的WEB应用系统,该论文就是主要针对所用到的数据库设计过程进行简要的论述。
概述
项目背景
随着经济的发展,“科教兴国”战略的提出,人们对教育变得越来越重视,国家也加大了对教育的投入,大学中学的入学学生逐年增加,为了减轻教务人员的工作负担,节省时间和经费,提高教务工作的执行效率,几乎所有的大学运用近几年逐步兴起的WEB应用技术和数据库技术相结合,建立学校教务系统。
为了更好地理解数据库系统所起的作用和实践数据库设计的过程,基于学校教务系统的基本流程,我们尝试着建立了学生管理系统,这个系统主要包括三大部分:学生信息管理系统、学生选课系统和学生成绩管理系统。
模拟了学校教务系统的主要部分。
该项目的执行者为数据库课程设计小组。
编写目的
这个学生管理系统实现了以下功能:学生、教师、管理员三种身份的数据库访问控制,学生管理个人信息,学生选择课程,学生查询课程成绩,教师录入课程成绩,管理员拥有最高权限等。
编写该课程设计报告的目的在于帮助读者对该系统的设计过程充分了解,该文档尤其对该系统中数据库的设计结构、工作流程和设计原理做了详细的描述和说明。
希望能够对读者有所帮助。
JSP+JavaBean:JSP就是在HTML中嵌入Java代码,所以在本质上JSP程序就是Java程序,JSP程序继承了Java的一切优点。
JSP程序有严格的Java语法和丰富的Java类库支持。
jsp作用主要是负责页面展现,java负责逻辑,业务处理,JSP是把JAVA代码嵌套到HTML中,让服务器端跟客户端实现动态沟通。
相对于ASP,PHP等其他WEB编程语言,JSP具有许多的优势,例如,运行速度快,占用空间小,安全性好,支持大多数运行环境,函数支持多,厂商支持多,支持XMl等。
使用JAVABean是JSP的一大特征和优势体现,它是遵循一定标准、用Java语言编写的一个类,该类的一个实例称为一个JavaBean,简称bean 。
JAVABean对具体的业务逻辑实现了封装,大大增强了JSP的安全性和可维护性。
MySQL:是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。
MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。
这样就增加了速度并提高了灵活性。
MySQL的SQL “结构化查询语言”。
SQL是用于访问数据库的最常用标准化语言。
MySQL软件采用了GPL(GNU通用公共许可证)。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
开发环境
操作系统:windows 7
开发语言:JSP+JavaBean
数据库:MySQL
浏览器:IE浏览器
需求分析
问题陈述
功能需求
1.用户登录:任何用户只有在登陆之后才能够进入系统,不同用户登陆后进入
对应的界面。
2.个人信息管理:学生、教师、管理员注册登陆后可以完善、修改个人基本信
息。
3.学生选课管理:管理员录入可选课程信息,学生登陆后可以进行选课操作。
4.学生成绩管理:教师录入成绩,学生可以查询成绩。
不允许修改成绩。
运行需求
1.安全性:该系统应当有良好的权限控制和身份认证机制,各模块页面之间的通信跳转应该是高效简洁安全的。
2.可维护性:当出现故障时,系统应当在规定时间内被较容易地排除故障,数据库出现故障时可以通过数据库恢复备份技术进行恢复。
3.健壮易用性:该系统应当具有适当的容错排错性,对用户的非法操作能够给出提示信息而不是卡死或崩溃,能够使初次使用的用户也可以轻易地掌握操作方法。
数据流图
全局0层数据流图:
成绩管理1层数据流图:
选课管理1层数据流图:
个人信息管理1层数据流图:
存储说明
数据字典
数据流DD表:
学生信息数据字典
数据存储DD表:
教师信息数据字典
概念结构设计整体ER图:
教师实体ER图:
学生实体ER图:
管理员实体ER图:
课程实体ER图:
成绩实体ER图:
录入成绩ER图:
选课ER图:
查询成绩ER图
录入教学计划ER图
逻辑结构设计
(1)学生实体集转换为关系Student(Stu_no, Stu_id, Stu_password, Stu_name, Sex, Collage, Profession, Stu_birthday,
Admission_time);
(2)教师实体集转换为关系Teaher(Teacher_no, Teacher_password, Teacher_name, Sex);
(3)管理员实体集转换为关系Admin(Admin_no, Admin_no_password, Admin_no_name, Sex);
(4)课程实体集转换为关系 Course(Course_no, Course_name,
Course_credit, Course_hours, Course_teach_no);
(5)成绩实体集转换为关系 Grade(Stu_no, Course_no, Grade_grade);
(6)录入成绩联系转换为关系 Entry_grade(Grade_stu_no, Grade_cou_no, Grade_grade);
(7)查询成绩联系转换为关系 Query_grade(Stu_no, Course_no, Grade_grade);
(8)录入教学计划联系转换为关系 Entry_plan(Admin_no, Course_no, Course_name, Course_credit, Course_hours, Course_teach_no);
说明:在第六个关系中,教师工号可以由课程号决定,因为录入成绩的老师即为本门课程的教学老师。
注:ER图转化为关系模式的一般方法
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
而关系的码为各实体码的组合。
根据第几范式的判断方法,前4个关系的键均为单一属性,并且由键决定其他属性,
显然前四个关系均为BCNF;对于第5个关系,Grade_stu_no, Grade_cou_no为键,存在函数依赖Grade_stu_no, Grade_cou_no-> Grade_grade,决定子为超键,所以也是BCNF;同理,第6、7个关系也为BCNF;对于第8个,存在的任意非平凡函数依赖决定子均为Admin_no, Course_no,故也是BCNF。
为了提高搜索效率,我们通常会基于对应的键码建立索引,即主关键字; Student(Stu_no); Teaher(Teacher_no); Admin(Admin_no); Course(Course_no); Grade(Grade_stu_no, Grade_cou_no );Entry_grade(Grade_stu_no,
Grade_cou_no); Query_grade(Grade_stu_no, Grade_cou_no);
Entry_plan(Admin_no, Course_no).
部分建立表和定义索引的语句为:
创建学生信息表:
Create table student
(Stu_id bigint(20) not null,
Stu_no varchar(20) not null,
Stu_password varchar(50) not null,
Stu_name varchar(50) not null,
Sex nvarchar(1) not null,
Collage nvarchar(10) not null, Profession nvarchar(10) not null,
Stu_birthday nvarchar(10) not null, Admission_time nvarchar(10) not null, Primary key(Stu_no));
创建成绩信息表
Create table grade
(Stu_no varchar(20) not null,
Course_no varchar(20) not null,
Grade_grade DEC(4,1) not null,
Primary key(Stu_no, Course_no),
Foreign key(Stu_no)
References student
On delete cascade,
Foreign key(Course_no)
References course
On delete restrict);
为成绩信息表建立索引:
Create index FK1 on grade (Stu_no)
Create index FK2 on grade (Course_no)
建立触发器:
CREATE TRIGGER autodelete
BEFORE DELETE
ON student
FOR EACH ROW
delete from grades where sno=erNo; 定义视图
视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。
视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
举例:定义视图view1,表示学生的成绩,其中包括名字,课程名,成绩;
Create view view1(Stu_name,Course_name,Grade_grade)
As select Stu_name,Course_name,Grade_grade
From student,course,sc
Where student.Stu_no=sc.Stu_no
And course.Course_no= sc. Course_no
Group by Stu_name;
关于权限控制,我们是通过在登录时控制身份实现的,没能实现数据库中的权限给予和收回。
实际上,我们所建立的数据库与所设计的是有一些差异的。
Student 学生信息表
Teacher 教师信息表
Admin 管理员信息表
Course 课程信息表
Grade 成绩信息表
Article 公告信息表
Mess 建议信息表
软件功能设计
系统功能模块划分如下图
学生管理
系统
个人信息
管理
选课管理成绩管理
管理员录入教学计划学生选定
课程
查询个人
信息
修改密码
教师录入
成绩
学生查询
成绩
系统的简要工作流程图如下:
系统功能流程的详细介绍:
1.不同身份的通用原则
任何身份都需要输入用户名和密码及选择身份进行登录才能进入系统,三者缺一不可。
用户每一次进入新的页面,系统都会记录当前的用户名并自动检查用户是否拥有进行此项操作的权限。
用户进入系统后,每个页面都存在注销链接,用于注销当前用户并返回系统入口,用户在登陆之后可以修改密码。
2.管理员部分
首先,root管理员可以添加其他管理员。
管理员登陆以后可以添加、删除教师,添加、删除学生,可以在选课的时候添加课程信息,可以查看学生的反馈建议,支持分页显示。
3.教师部分
教师可以对自己所教授的课程进行录入成绩,并且可以查询成绩。
4.学生部分
学生能够在登陆之后修改密码,对学校提出意见和建议,可以选择实名提交和匿名提交。
在选课期间可以选择课程并显示课表,可以查询自己的考试成绩。
在选课管理中,我们小组希望将课程分为选修和必修,在管理员将必修课程录入教学计划时,通过触发器实现自动的将所录入的必修课程保存到学生课表中,不过暂时还没有实现。
代码设计和界面设计。