资源描述
精品文档数据库课程设计题目 学生管理系统学院计算机科学与工程专 业计算机科学与技术学号1341901326姓名姚振一班级13419013指导教师目录1 .需求分析1.1 用户提出自己的需求1.2 根据需求确定工作环境2 . 概念结构设计2.1 概念结构设计的原则 2.2 将用户需求模块化 3 数据库设计3.1 罗列数据信息 3.2 根据数据信息构建表结构 4 . 系统功能设计5 系统的测试5.1 系统的测试5.2 测试的目的 6 实训心得与总结可编辑1 .需求分析一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用 户到底需要什么是软件开发的头等大事。用户需求如何得来?用户有 没有把需求描述清楚?如何把用户需求转化成自动化方式?软件的 开发其实就是从一个个问题开始,再一个个地解决地过程。整个需求 的过程如图:用户需求分析流程图图1-1需求过程图1.1 用 户提出自己的需求。随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生的实时信息,该学校决定用一套新的学生信息管理系统软件,并要求满足以下条件:(1) 1 )能完成学生的学籍注册(2) 2 )学生若不喜欢此时的专业, 他们可以自动调剂专业(3) 3 )学生可以选课,并查看个人信息及日常表现情况。(4) 4 )对学生信息、选课信息、课程信息进行记录。(5) 老师可以对学生学籍信息的查询,添加,修改,删除;学生信息及成绩的录入,修改,删除。修改密码等功能。(6) 管理员拥有最高的权限。允许添加教师信息和课程信息等。学校需要的就是能满足以上需求的软件。需求就是一套软件的终极目标,但并不是每一个需求都能达到的,分析人员还要根据开发环境一条条地分析这些需求。1.2 根据需求确定工作环境1.2.1 软件环境除了要安装学生管理系统外,还必须具备相应的软件环境,才能更好地运行。( 1 )采用的软件操作系统( win 7 ) ,这是为了更好地管理。( 2 )服务器上安装数据库系统( SQL Server 2008 ) ,从而实现 信息资源安全化管理。2 . 概念结构设计概念结构设计阶段主要是粗略描述整个软件的框架, 并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。 概要设计的主要任务是将用户的需求划分为不同的功能, 然后将这些功能细分成模块, 并给模块一些规则约束, 以达到各个模块之间可以相互交流的目的。 概要设计关乎到系统的整体架构, 因此想做好一个概要设计, 不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2.1 概念结构设计的原则概念结构设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则 :( 1 ) 细分原则: 软件系统都是由很多不同的模块组成, 当设计一套软件时, 要先将所有的功能分解。 解决复杂问题的方法是将其分解成几个小问题,一个个来解决。( 2 ) 提高代码重用性: 在面向对象设计中, 首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。( 3 ) 从上而下层层分析: 概要设计要从整体出发, 逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。( 4 ) 一致性原则: 概要设计要求所有功能模块在定义时使用统一的规范。( 5 ) 提高独立性, 减少耦合: 各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责, 即理论情况下不允许两个类共同完成一个功能。( 6 )模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。 经验表明, 一个模块的规模不应过大, 模块的总行数应控制在10100行的范围内,最好为 3060 行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现, 会增加阅读理解的难度; 但小规模太多也会使模块之间联系变得复杂, 增大系统在模块调用时传递信息所花费的开销。2.2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。 什么样的需求才是一个模块?模块应该具备如下 3 个特征。( 1 ) 输入和输出: 模块必须能被调用并且正确的返回调用, 而且调用都是相对一个对象而言,这是模块独立性的一个体现。( 2 ) 处理功能: 模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。( 3)程序代码:用来实现模块功能的源代码。2.2.1确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。(1)管理员模块:是本系统的核心模块,该模块又包括对学生管理和课程管理2个子模块,功能如下:学生管理子模块:实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。添加学生信息修改学生信息学生管理子模块删除学生信息查询学生信息j L图3-1学生管理子模块课程管理子模块:实现对课程的添加,添加时为其分配任课教 师、上课时间和地点,实现对课程的修改、删除,查看某个课 程的详细信息等。添加课程信息修改课程信息课程管理子模块删除课程信息查询课程信息JK图3-2课程管理子模块(2)教师模块:实现查看自己所教授的课程、课程有哪些学生选修,以及利用本系统提交学生的成绩。图3-3教师管理模块(3)学生模块:实现学生的选课,查看、修改自己的选课信息及查看自己日常的表现情况。图3-4学生模块(4)公有模块:实现用户的身份验证,密码修改,退出系统等功3匕 能。图3-5公有模块3数据库设计数据是企业运作过程中不可缺少的重要部分, 建立自己的数据资 料库是提高企业整体竞争力的关键因素。 对于程序而言,安全完整地 保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发 中重要的一个环节。一旦数据设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。所以,为了更好地开发数据库, 了解信息的来源以及信息的流向是头等大事。对于客户的整个操作流 程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好 的数据库打下基础。本章主要介绍如何收集客户的数据资料, 并将其 转化为程序需要的数据资源。3.1 罗列数据信息在前面已经罗列出了用户的需求,这也正是数据库信息的来源。根据列表内容,可以提炼出以下数据信息。(1)需要管理学生信息:学生表。(2)需要管理教师信息:教师表。(3)需要管理课程信息:课程表。(4)需要管理选课信息:选课表。(5)需要管理活动信息:活动表。(6)需要管理管理员信息:管理员表。(7)需要管理奖惩信息:奖惩表。实体属性表:实体属性教师教师ID ,教师姓名,登录密码课程课程号,课程名称,教师ID管理员管理员ID ,管理员姓名、登录密码选课学号,课程号,课程名、成绩、总成绩学生学号,姓名,性别,密码,身份证号,地址、专业活动学号,项目,地点、时间、加分奖惩学号,事件、奖励、惩处数据库E-R图设计:3.2 根据数据信息构建表结构对于如何提取数据表字段,要遵守 3个原则(1)每个字段都是不可再分的最小数据单位。(2)非主键字段必须完全依赖于主键(3)如果两个表存在关联,必须有字段作为外键进行连接3.2.1数据库表的设计学生表:字段名回空值约束条件学号varchar(20)not null主键性别char(5)姓名Char(5)身份证号Varchar(20)专业Char (10)地址varchar(20)not null密码intnot null管理员表:字段名空值约束条件管理员IDIntnot null主键登录密码Intnot null管理员姓名Char(10)教师表:字段名空值约束条件教师IDIntnot null主键登录密码Intnot null教师姓名Char(10)课程表:字段名回空值约束条件球杠勺Intnot null主键课程名称varchar(20)not null教师IDIntnot null外键活动表:字段名空值约束条件:学号varchar(20)not null外键时间char(10)not null地点varchar(10)not null项目Varchar(20)主键选课表:字段名回空值约束条件学号varchar(20)not null外键课程名称varchar(50)not null球杠勺Intnot null外键成绩Varchar (10)总成绩Varchar (10)奖惩表:字段名回空值约束条件学号varchar(20)not null事件varchar(50)not null主键奖励Varchar(20)not null惩处Varchar (20)教师IDInt外键4.系统功能设计4.1 系统功能框架作为一个学生管理系统,本系统的设计主要包含:系统登录、学生信息管理、班级管理、课程管理和用户管理。学生管理系统主框架 的主要结构如下图所示。学生管理系统学生管理一课程管理用户管理密码修改删除用户7-1 学生管理系统框架图4.2 数据库代码一 、 首 先 要 建 立 数 据 库 ( stumgn ) : SQL 语 句 :CREATE databASe stumgn onprimary(name=stumgn_data,filename=c:Program FilesMicrosoft SQLServerMSSQLdatastumgn_data.mDF, SIZE=20MB, maxsize=100MB, filegrowth=25%) log on(name=stumgn_log,filename=c:Program FilesMicrosoft SQLServerMSSQLdatastumgn_Log.LDF, size=5MB,maxsize=20MB, filegrowth=1MB)二、创建表:( 1 )学生基本情况表( stu_jb.dbf )包括信息有:学生学号(主键) ,学生姓名,学生性别,籍贯,出生日期,联系电话,入校时间,家庭地址,注释等字段。 SQL 语句如下:CREATE TABLE dbo.stu_jb ( student_id bigint IDENTITY (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 Chinese _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, 重 庆 ) 删除记录:delete stu_jb where stu_id=20029890修 改 记录: update stu_jbset 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 nullconstraINT 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 VARCHAR(10) NULL, course_Type VARCHAR(10) NULL, course_Des VARCHAR(50) NULL( 4 )学生班级情况表(stu_class.dbf )包括信息有:学生学号,所在班级, 所在系,所学专业, 建表:语句:SQL)SQLCREATE TABLE stu_class (student_ID INT NOT NULL, grade char(10) NOT NULL, xiVARCHAR(10) NOT NULL, profess VARCHAR(10) NOT NULL,constraINT PK_TESTPROCESS PRIMARY KEY (student_ID) )( 5 )系统管理表(user_info.dbf )包括信息有:用户名,密码,用户描述建表: SQL 语句:CREATE TABLE user_Info (user_ID CHAR(10) PRIMARY KEY NOT NULL, user_PWD CHAR(10) NULL, user_DES CHAR(10) NULL, ) 三、在 stumgn 中创建视图(1). 创建名为 l_view 的视图。基于 stu_jb 和 course 两个表建立视 图 l_view, 并显示 student_id 和 course_no 。所用语句如下: CREATE view l_viewAS select student_id ,course_no from student_info,course_in fo SELECT * FROM l_view( 2 ) .创建一个名为 sex_view 的视图。显示性别为“男”的所有学生的资料,所用语句如下:CREATE view sex_viewAS SELECT * FROM student_info WHERE student_sex= 男 SELECT * FROM sex_view 四、创建存储过程 下面语句是在 stumgn 数据库中建立一个名为“ stu_scr ”的存储过 程 , 用 于 检 索 student_id=2002 的 信 息 , 代 码 如 下 : IF exists(select name from sysobjects WHERE name=s tu_scrand type=p) drop procedure stu_scr goCREATE procedure stu_scr ASselect student_id=2002 from student_info goexecute stu_scr go五、创建索引( 1 ) 在 stumgn 数据库中建立名为 clASs_no 的唯一性簇索引, 填充率为 90% ,并查看索引信息,代码:CREATE unique clusteredINDEX clASs_no on clASs_info(clASs_no,grade_no) withpad_INDEX, FILLFACTOR=90 exec sp_helpINDEX clASs_info六、创建触发器建 立 一 个 名 为 testprocess_insupd 的 触 发 器 。 代 码 如下: USE stumgn goIF EXISTS (SELECT name FROM sysobjectsWHERE name = testprocess_insupd AND type = TR) DROP TRIGGER testprocess_insupd GOCREATE TRIGGER testprocess_insupd ON testprocess FORinsert ASDECLARE result tinyINT DECLARE credit tinyINTSELECT result=testprocess.result from testprocess SELECT credit=testprocess.credit from testprocess IF (result60) BEGINUPDATE testprocess set testprocess.credit=credit FROM testprocess END GO六、确定表内和表之间的数据完整性( 1 )缺省值约束为表 stu_jb 中的列 sex 创建一个约束, 缺省值为 1 。 use stumgngoalter table student_infoadd constraint default_student_sex default 女 for student_sex 现我向表中插入一行学号为 20006598 ,不给 student_sex 赋值 .( 2 ) check 约束对表 grade 中的 result 字段进行约束, 使 result 的值在 0 100 之 间。 a. 通过企业管理器创建check 约束在表设计窗口中,单击属性按钮,选择check 约束表单,在约束表达式中输入: (result = 0 and result =0 and result=50)当向表中 result 列中键入值大于 50 或小与 0 时就会弹出出错信 息。( 3 ) FOREIGN KEY ( 外 部 关 键 字 约 束 ) SQL 语 句: alter table student_infoadd constraint fk_class_id foreign key(student_id)references student_info(student_id)5 系统的测试按照极限编程的理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了完成实际功能的代码。 先将测试写完, 然后再来实现代码, 这样所有的测试通过之日也就是程序完成之时。 虽然这些理论并不能完全实践,但测试的重要性是毋庸置疑的。5.1 系统的测试测试是为了更好地完成项目的功能,虽然测试并不能完全模拟实际发生的流程, 但可以降低错误的发生概率, 提高软件项目的稳定性。5.2 测试的目的( 1 )软件测试是为了发现错误而执行程序的过程。( 2 )测试是为了证明程序不够完美,任何程序都不可能有错。6 实训心得与总结感觉在这一学期当中学到东西最多的时候就是在实验期间了,虽然遇到很多困难, 我们都一一的解决。 尤其是在建数据库表的时候遇到点困难,就是表之间的关系,主键和外键约束、数据的删除、添加、修改等还就是在本系统的实现时有点难。在做界面的时候,我们用的时间最多, 因为光是界面就十几个都一一的拖拉好, 然后再 把每一个界面之间建立联系,不光是这些,还有就是界面的外观设计, 使得更加美观,而且让系统容易操作,在这方面下了很大的功夫。在 实验的过程中学到了平时没有学到的东西,这段时间感觉过的很充 实,知识得到了巩固而且动手的能力也有所提高。
展开阅读全文