学生管理系统 数据库课程设计



《学生管理系统 数据库课程设计》由会员分享,可在线阅读,更多相关《学生管理系统 数据库课程设计(19页珍藏版)》请在装配图网上搜索。
1、精品文档 数据库课程设计 题目 学生管理系统 学 院 计算机科学与工程 专 业 计算机科学与技术 学 号 1341901326 姓 名 姚振一 班 级 13419013 指导教师 目录 1 .需求分析 1.1 用户提出自己的需求 1.2 根据需求确定工作环境 2 . 概念结构设计 2.1 概念结构设计的原则 2.2 将用户需求模块化 3 数据库设计 3.1 罗列数据信息 3.2 根据数据信息构建表结构 4 . 系统功能设计 5 系统的测试 5.1 系统的测试 5.2 测试的目的 6 实训心得与总
2、结 可编辑 1 .需求分析 一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用 户到底需要什么是软件开发的头等大事。用户需求如何得来?用户有 没有把需求描述清楚?如何把用户需求转化成自动化方式?软件的 开发其实就是从一个个问题开始,再一个个地解决地过程。整个需求 的过程如图: 用户需求分析流程图 图1-1需求过程图 1.1 用 户提出自己的需求 。随着学校规模的增大以及新增学生选课的影响,手工方式 已经无法记录学生的实时信息,该学校决定用一套新的学生信息 管理系统软件,并要求满足以下条件 : (1) 1 )能完成学生的学籍注册 (2) 2 )学生若不喜欢
3、此时的专业 , 他们可以自动调剂专业 (3) 3 )学生可以选课,并查看个人信息及日常表现情况。 (4) 4 )对学生信息、选课信息、课程信息进行记录。 (5) 老师可以对学生学籍信息的查询,添加,修改,删除;学生 信息及成绩的录入,修改,删除。修改密码等功能。 (6) 管理员拥有最高的权限。允许添加教师信息和课程信息等。 学校需要的就是能满足以上需求的软件。需求就是一套软件 的终极目标,但并不是每一个需求都能达到的,分析人员还要根 据开发环境一条条地分析这些需求。 1.2 根据需求确定工作环境 1.2.1 软件环境 除了要安装学生管理系统外,还必须具备相应的软件环境,
4、 才能更好地运行。 ( 1 )采用的软件操作系统( win 7 ) ,这是为了更好地管理。 ( 2 )服务器上安装数据库系统( SQL Server 2008 ) ,从而实现 信息资源安全化管理。 2 . 概念结构设计 概念结构设计阶段主要是粗略描述整个软件的框架, 并从业务的 角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏, 而概要设计则是整个设计的关键部分。 概要设计的主要任务是将用户 的需求划分为不同的功能, 然后将这些功能细分成模块, 并给模块一 些规则约束, 以达到各个模块之间可以相互交流的目的。 概要设计关 乎到系统的整体架构, 因此想做好一个概要设计
5、, 不仅仅要熟悉用户 的业务流程,还要具备相当丰富的设计经验。 2.1 概念结构设计的原则 概念结构设计是根据系统分析的需求和工作环境的情况对整个 软件的总体结构进行大致的设计。概要设计要坚持以下几个原则 : ( 1 ) 细分原则: 软件系统都是由很多不同的模块组成, 当设计一 套软件时, 要先将所有的功能分解。 解决复杂问题的方法是将其分解 成几个小问题,一个个来解决。 ( 2 ) 提高代码重用性: 在面向对象设计中, 首先考虑的就是代码 的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省 了人力物力。 ( 3 ) 从上而下层层分析: 概要设计要从整体出发,
6、逐个剖析软件 的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最 小的功能模块。 ( 4 ) 一致性原则: 概要设计要求所有功能模块在定义时使用统一 的规范。 ( 5 ) 提高独立性, 减少耦合: 各个模块与模块之间尽量减少关联, 否则修改一个地方就会引起其他多处的变动,不符合面向对象的原 则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改, 而封装的类必须具有单一职责, 即理论情况下不允许两个类共同完成 一个功能。 ( 6 )模块的大小要尽量适中:不是结构算法越复杂的模块越好, 模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。 经 验表明,
7、 一个模块的规模不应过大, 模块的总行数应控制在 10~100 行的范围内,最好为 30~60 行,这样理解和阅读都较方便。过长的 模块往往是分解不充分的表现, 会增加阅读理解的难度; 但小规模太 多也会使模块之间联系变得复杂, 增大系统在模块调用时传递信息所 花费的开销。 2.2 将用户需求模块化 根据概要设计的原则来分析一下本项目的用户需求,并最终转化 成用程序语言描述的模块。 什么样的需求才是一个模块?模块应该具 备如下 3 个特征。 ( 1 ) 输入和输出: 模块必须能被调用并且正确的返回调用, 而且 调用都是相对一个对象而言,这是模块独立性的一个体现。 ( 2
8、) 处理功能: 模块必须可以对调用的输入数据进行灵活的处理, 并为输出准备好处理结果。 ( 3) 程序代码:用来实现模块功能的源代码。 2.2.1确定系统最终模块 概要设计中最重要的就是确定此项目包括哪些模块。根据上两节 讲述的设计原则和模块特征,将用户需求转化为下面的模块。 (1)管理员模块:是本系统的核心模块,该模块又包括对学生管 理和课程管理2个子模块,功能如下: 学生管理子模块:实现对学生信息的添加、修改、删除操作, 还可以输入查询条件进行查询操作。 添加学生信息 修改学生信息 学生管理子模块 删除学生信息 查询学生信息 j । L 图3-1
9、学生管理子模块 课程管理子模块:实现对课程的添加,添加时为其分配任课教 师、上课时间和地点,实现对课程的修改、删除,查看某个课 程的详细信息等。 添加课程信息 修改课程信息 课程管理子模块 删除课程信息 查询课程信息 J K 图3-2课程管理子模块 (2)教师模块:实现查看自己所教授的课程、课程有哪些学生选 修,以及利用本系统提交学生的成绩。 图3-3教师管理模块 (3)学生模块:实现学生的选课,查看、修改自己的选课信息及 查看自己日常的表现情况。 图3-4学生模块 (4)公有模块:实现用户的身份验证,密码修改,退出系统等功
10、 3匕 能。 图3-5公有模块 3数据库设计 数据是企业运作过程中不可缺少的重要部分, 建立自己的数据资 料库是提高企业整体竞争力的关键因素。 对于程序而言,安全完整地 保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发 中重要的一个环节。一旦数据设计出现问题,软件就会出现问题,某 些功能的使用就发挥不了最大作用。所以,为了更好地开发数据库, 了解信息的来源以及信息的流向是头等大事。对于客户的整个操作流 程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好 的数据库打下基础。本章主要介绍如何收集客户的数据资料, 并将其 转化为程序需要的数据资源。 3.1 罗
11、列数据信息 在前面已经罗列出了用户的需求,这也正是数据库信息的来源。 根据列表内容,可以提炼出以下数据信息。 (1)需要管理学生信息:学生表。 (2)需要管理教师信息:教师表。 (3)需要管理课程信息:课程表。 (4)需要管理选课信息:选课表。 (5)需要管理活动信息:活动表。 (6)需要管理管理员信息:管理员表。 (7)需要管理奖惩信息:奖惩表。 实体属性表: 实体 属性 教师 教师ID ,教师姓名,登录密码 课程 课程号,课程名称,教师ID 管理员 管理员ID ,管理员姓名、登录密码 选课 学号,课程号,课程名、成绩、总成绩 学生 学号,姓
12、名,性别,密码,身份证号,地址、专业 活动 学号,项目,地点、时间、加分 奖惩 学号,事件、奖励、惩处 数据库E-R图设计: 3.2 根据数据信息构建表结构 对于如何提取数据表字段,要遵守 3个原则 (1)每个字段都是不可再分的最小数据单位。 (2)非主键字段必须完全依赖于主键 (3)如果两个表存在关联,必须有字段作为外键进行连接 3.2.1数据库表的设计 学生表: 字段名 回 空值 约束条件 学号 varchar(20) not null 主键 性别 char(5) 姓名 Char(5) 身份证号 Varcha
13、r(20) 专业 Char (10) 地址 varchar(20) not null 密码 int not null 管理员表: 字段名 空值 约束条件 管理员ID Int not null 主键 登录密码 Int not null 管理员姓名 Char(10) 教师表: 字段名 空值 约束条件 教师ID Int not null 主键 登录密码 Int not null 教师姓名 Char(10) 课程表: 字段名 回 空值 约束条件 球杠勺
14、 Int not null 主键 课程名称 varchar(20) not null 教师ID Int not null 外键 活动表: 字段名 空值 约束条件 :学号 varchar(20) not null 外键 时间 char(10) not null 地点 varchar(10) not null 项目 Varchar(20) 主键 选课表: 字段名 回 空值 约束条件 学号 varchar(20) not null 外键 课程名称 varchar(50) not null
15、 球杠勺 Int not null 外键 成绩 Varchar (10) 总成绩 Varchar (10) 奖惩表: 字段名 回 空值 约束条件 学号 varchar(20) not null 事件 varchar(50) not null 主键 奖励 Varchar(20) not null 惩处 Varchar (20) 教师ID Int 外键 4.系统功能设计 4.1 系统功能框架 作为一个学生管理系统,本系统的设计主要包含 :系统登录、学 生信息管理、班级管理、课程管理和用户管理。
16、学生管理系统主框架 的主要结构如下图所示。 学生管理系统 学生管理 一课程管理 用户管理 密码修改 删除用户 7-1 学生管理系统框架图 4.2 数据库代码 一 、 首 先 要 建 立 数 据 库 ( stumgn ) : SQL 语 句 : CREATE databASe stumgn on primary (name=stumgn_data,filename=c:\Program Files\Microsoft S QL Server\MSSQL\data\stumgn_data.mDF, SIZE=20MB, max size=100MB, filegrow
17、th=25%) log on (name=stumgn_log,filename=c:\Program Files\Microsoft SQ L Server\MSSQL\data\stumgn_Log.LDF, size=5MB, maxsize=20MB, filegrowth=1MB) 二、创建表: ( 1 )学生基本情况表( stu_jb.dbf ) 包括信息有:学生学号(主键) ,学生姓名,学生性别,籍贯,出生 日期,联系电话,入校时间,家庭地址,注释等字段。 SQL 语句如 下: CREATE TABLE [dbo].[stu_jb] ( [student_id
18、] [bigint] IDENTI TY (1, 1) NOT FOR REPLICATION NOT NULL , [stu_name] [ char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [sex] [ char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL , [stu_jg ] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [bir thday] [datetime] NULL , [tele] [char] (14) COLLATE Chines
19、e _PRC_CI_AS NULL , [in_date] [char] (10) COLLATE Chinese_ PRC_CI_AS NOT NULL , [home_add] [char] (50) COLLATE C hinese_PRC_CI_AS NULL , [note] [char] (60) COLLATE Chin ese_PRC_CI_AS NULL ) ON [PRIMARY] 插入内容语句: insert into stu_jb values (20029543, 樊浩 ,男,重庆 ,1983-4-23,65119449,2002-9-1, 重 庆 ) 删除记录:
20、 delete stu_jb where stu_id=20029890 修 改 记 录: update stu_jb set stu_id=20029546 ( 2 )成绩表( score.dbf ) 包括信息有:学生学号,学生姓名,课程名称,分数,等级 建表: SQL 语句: CREATE TABLE score ( student_ID INT NOT NULL, student_Name VARCHAR(10) NOT NULL, class_no int N ULL, result tinyint NULL, credit tinyint null constraI
21、NT PK_TESTPROCESS PRIMARY KEY (student_ID, course_No) ) 插入内容语句: insert into stu_jb values (20029543, 樊浩 ,计算机维护 ,80, ’良好’ ) (3)课程信息表( course.dbf ) 建表: SQL 语句: 包括信息有: 课程编号, 课程名称, 课程类型, 课程描述 建表: 语句: CREATE TABLE course ( course_No INT PRIMARY KEY NOT NULL, grade_No INT NULL, course_Name VAR
22、CHAR(10) NULL, course_Type VARC HAR(10) NULL, course_Des VARCHAR(50) NULL ( 4 )学生班级情况表( stu_class.dbf ) 包括信息有:学生学号,所在班级, 所在系,所学专业, 建表: 语句: SQL ) SQL CREATE TABLE stu_class ( student_ID INT NOT NULL, grade char(10) NOT NULL, xi VARCHAR(10) NOT NULL, profess VARCHAR(10) NOT NUL L, constraI
23、NT PK_TESTPROCESS PRIMARY KEY (student_ID) ) ( 5 )系统管理表( user_info.dbf ) 包括信息有:用户名,密码,用户描述 建表: SQL 语句: CREATE TABLE user_Info ( user_ID CHAR(10) PRIMARY KEY NOT NULL, user_P WD CHAR(10) NULL, user_DES CHAR(10) NULL, ) 三、在 stumgn 中创建视图 (1). 创建名为 l_view 的视图。基于 stu_jb 和 course 两个表建立视 图 l_view, 并显
24、示 student_id 和 course_no 。所用语句如下: CREATE view l_view AS select student_id ,course_no from student_info,course_in fo SELECT * FROM l_view ( 2 ) .创建一个名为 sex_view 的视图。显示性别为“男”的所有学 生的资料,所用语句如下: CREATE view sex_view AS SELECT * FROM student_info WHERE student_sex= 男 SELECT * FROM sex_view 四、创建存储过程 下
25、面语句是在 stumgn 数据库中建立一个名为“ ‘ stu_scr ’ ”的存储 过 程 , 用 于 检 索 ‘ student_id=2002 ’ 的 信 息 , 代 码 如 下 : IF exists(select name from sysobjects WHERE name=s tu_scrand type=p) drop procedure stu_scr go CREATE procedure stu_scr AS select student_id=2002 from student_info go execute stu_scr go 五、创建索引 ( 1 ) 在
26、 stumgn 数据库中建立名为 clASs_no 的唯一性簇索引, 填 充率为 90% ,并查看索引信息,代码: CREATE unique clustered INDEX clASs_no on clASs_info(clASs_no,grade_no) with pad_INDEX, FILLFACTOR=90 exec sp_helpINDEX clASs_info 六、创建触发器 建 立 一 个 名 为 testprocess_insupd 的 触 发 器 。 代 码 如 下: USE stumgn go IF EXISTS (SELECT name FROM sys
27、objects WHERE name = testprocess_insupd AND type = TR) D ROP TRIGGER testprocess_insupd GO CREATE TRIGGER testprocess_insupd ON testprocess FOR insert AS DECLARE @result tinyINT DECLARE @credit tinyINT SELECT @result=testprocess.result from testprocess SELE CT @credit=testprocess.credit from
28、testprocess IF (@result> 60) BEGIN UPDATE testprocess set testprocess.credit=@credit FRO M testprocess END GO 六、确定表内和表之间的数据完整性 ( 1 )缺省值约束 为表 stu_jb 中的列 sex 创建一个约束, 缺省值为 ‘ 1 ’ 。 use stumgn go alter table student_info add constraint default_student_sex default ‘女’ for studen t_sex 现我向表中插入一行学
29、号为 20006598 ,不给 student_sex 赋值 . ( 2 ) check 约束 对表 grade 中的 result 字段进行约束, 使 result 的值在 0— 100 之 间。 a. 通过企业管理器创建 check 约束 在表设计窗口中,单击属性按钮,选择 check 约束表单,在约束表 达式中输入: ([result] >= 0 and [result] <= 100) b. 用 create table 语句建立 check 约束,语句为: alter table testprocess add constraint check_result check(
30、re sult>=0 and result<=50) 当向表中 result 列中键入值大于 50 或小与 0 时就会弹出出错信 息。 ( 3 ) FOREIGN KEY ( 外 部 关 键 字 约 束 ) SQL 语 句: alter table student_info add constraint fk_class_id foreign key(student_id) references student_info(student_id) 5 系统的测试 按照极限编程的理论,写测试就是对软件进行设计的过程,它的 重要性甚至超过了完成实际功能的代码。 先将测试写完, 然后再
31、来实 现代码, 这样所有的测试通过之日也就是程序完成之时。 虽然这些理 论并不能完全实践,但测试的重要性是毋庸置疑的。 5.1 系统的测试 测试是为了更好地完成项目的功能,虽然测试并不能完全模拟实 际发生的流程, 但可以降低错误的发生概率, 提高软件项目的稳定性。 5.2 测试的目的 ( 1 )软件测试是为了发现错误而执行程序的过程。 ( 2 )测试是为了证明程序不够完美,任何程序都不可能有错。 6 实训心得与总结 感觉在这一学期当中学到东西最多的时候就是在实验期间了, 虽然遇到很多困难, 我们都一一的解决。 尤其是在建数据库表的时候 遇到点困难,就是表之间的关系,主键和外键约束、数据的删除、添 加、修改等 ~~还就是在本系统的实现时有点难。在做界面的时候, 我们用的时间最多, 因为光是界面就十几个都一一的拖拉好, 然后再 把每一个界面之间建立联系,不光是这些,还有就是界面的外观设计, 使得更加美观,而且让系统容易操作,在这方面下了很大的功夫。在 实验的过程中学到了平时没有学到的东西,这段时间感觉过的很充 实,知识得到了巩固而且动手的能力也有所提高。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。