《数据库课程设计学生管理系统(19页).doc》由会员分享,可在线阅读,更多相关《数据库课程设计学生管理系统(19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数据库课程设计学生管理系统-第 19 页数据库课程设计 题目 学生管理系统 学 院 计算机科学与工程专 业 计算机科学与技术学 号 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.需求分析一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用户到底需要什么是软件开发的头等大事。用户需求如何得来?用户有
2、没有把需求描述清楚?如何把用户需求转化成自动化方式?软件的开发其实就是从一个个问题开始,再一个个地解决地过程。整个需求的过程如图:用户需求分析流程图开始需求用户提出需求分析人员体验用户工作流程分析人员确定调研结果并写报告项目组分析并确定最终需求与用户共同确定工作环境结束需求准备进入设计图1-1需求过程图1.1 用户提出自己的需求。随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生的实时信息,该学校决定用一套新的学生信息管理系统软件,并要求满足以下条件:(1)能完成学生的学籍注册(2)学生若不喜欢此时的专业,他们可以自动调剂专业(3)学生可以选课,并查看个人信息及日常表现情况。(
3、4)对学生信息、选课信息、课程信息进行记录。 (5) 老师可以对学生学籍信息的查询,添加,修改,删除;学生信息及成绩的录入,修改,删除。修改密码等功能。 (6) 管理员拥有最高的权限。允许添加教师信息和课程信息等。学校需要的就是能满足以上需求的软件。需求就是一套软件的终极目标,但并不是每一个需求都能达到的,分析人员还要根据开发环境一条条地分析这些需求。1.2 根据需求确定工作环境1.2.1 软件环境除了要安装学生管理系统外,还必须具备相应的软件环境,才能更好地运行。(1)采用的软件操作系统(win 7),这是为了更好地管理。(2)服务器上安装数据库系统(SQL Server 2008),从而实
4、现信息资源安全化管理。2.概念结构设计概念结构设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。1.1 概念结构设计的原则概念结构设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则:(1)细分原则:软件系统都是
5、由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对
6、类进行扩展,而不能修改,而封装的类必须具有单一职责,即理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100行的范围内,最好为3060行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。1.2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块
7、应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3) 程序代码:用来实现模块功能的源代码。1.2.1 确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。(1)管理员模块:是本系统的核心模块,该模块又包括对学生管理和课程管理2个子模块,功能如下:l 学生管理子模块:实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。查询学生信息删除学生
8、信息修改学生信息学生管理子模块添加学生信息图3-1 学生管理子模块l 课程管理子模块:实现对课程的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除,查看某个课程的详细信息等。查询课程信息删除课程信息修改课程信息课程管理子模块添加课程信息图3-2 课程管理子模块(2)教师模块:实现查看自己所教授的课程、课程有哪些学生选修,以及利用本系统提交学生的成绩。教师模块查看所授课程录入学生成绩图3-3 教师管理模块(3)学生模块:实现学生的选课,查看、修改自己的选课信息及查看自己日常的表现情况。个人信息日常表现学生模块选课查看选课信息修改选课信息图3-4 学生模块(4)公有模块:实现用
9、户的身份验证,密码修改,退出系统等功能。公有模块身份验证密码修改退出系统图3-5 公有模块2 数据库设计数据是企业运作过程中不可缺少的重要部分,建立自己的数据资料库是提高企业整体竞争力的关键因素。对于程序而言,安全完整地保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发中重要的一个环节。一旦数据设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。所以,为了更好地开发数据库,了解信息的来源以及信息的流向是头等大事。对于客户的整个操作流程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好的数据库打下基础。本章主要介绍如何收集客户的数据资料,并将其转化为程序需要的数据
10、资源。3.1 罗列数据信息在前面已经罗列出了用户的需求,这也正是数据库信息的来源。根据列表内容,可以提炼出以下数据信息。(1)需要管理学生信息:学生表。(2)需要管理教师信息:教师表。(3)需要管理课程信息:课程表。(4)需要管理选课信息:选课表。(5)需要管理活动信息:活动表。(6)需要管理管理员信息:管理员表。(7)需要管理奖惩信息:奖惩表。实体属性表:实体属性教师教师ID,教师姓名,登录密码课程课程号,课程名称,教师ID管理员管理员ID,管理员姓名、登录密码选课学号,课程号,课程名、成绩、总成绩学生学号,姓名,性别,密码,身份证号,地址、专业活动学号,项目,地点、时间、加分奖惩学号,事件
11、、奖励、惩处数据库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管理员表:字段名 类型空值约束条件管理员ID Intnot null主键登录密码Intnot null管理员姓
12、名Char(10)教师表:字段名 类型空值约束条件教师ID Intnot 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课
13、程号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语句:CREATEdatabASestumg
14、nonprimary(name=stumgn_data,filename=c:ProgramFilesMicrosoftSQLServerMSSQLdatastumgn_data.mDF,SIZE=20MB,maxsize=100MB,filegrowth=25%)logon(name=stumgn_log,filename=c:ProgramFilesMicrosoftSQLServerMSSQLdatastumgn_Log.LDF,size=5MB,maxsize=20MB,filegrowth=1MB)二、创建表:(1)学生基本情况表(stu_jb.dbf)包括信息有:学生学号(主键),
15、学生姓名,学生性别,籍贯,出生日期,联系电话,入校时间,家庭地址,注释等字段。SQL语句如下:CREATETABLEdbo.stu_jb(student_idbigintIDENTITY(1,1)NOTFORREPLICATIONNOTNULL,stu_namechar(10)COLLATEChinese_PRC_CI_ASNOTNULL,sexchar(1)COLLATEChinese_PRC_CI_ASNOTNULL,stu_jgchar(10)COLLATEChinese_PRC_CI_ASNOTNULL,birthdaydatetimeNULL,telechar(14)COLLATEC
16、hinese_PRC_CI_ASNULL,in_datechar(10)COLLATEChinese_PRC_CI_ASNOTNULL,home_addchar(50)COLLATEChinese_PRC_CI_ASNULL,notechar(60)COLLATEChinese_PRC_CI_ASNULL)ONPRIMARY插入内容语句:insertintostu_jbvalues(20029543,樊浩,男,重庆,1983-4-23,65119449,2002-9-1,重庆)删除记录:deletestu_jbwherestu_id=20029890修改记录:updatestu_jbsetst
17、u_id=20029546(2)成绩表(score.dbf)包括信息有:学生学号,学生姓名,课程名称,分数,等级建表:SQL语句:CREATETABLEscore(student_IDINTNOTNULL,student_NameVARCHAR(10)NOTNULL,class_nointNULL,resulttinyintNULL,credittinyintnullconstraINTPK_TESTPROCESSPRIMARYKEY(student_ID,course_No)插入内容语句:insertintostu_jbvalues(20029543,樊浩,计算机维护,80,良好)(3)课程
18、信息表(course.dbf)建表:SQL语句:包括信息有:课程编号,课程名称,课程类型,课程描述建表:SQL语句:CREATETABLEcourse(course_NoINTPRIMARYKEYNOTNULL,grade_NoINTNULL,course_NameVARCHAR(10)NULL,course_TypeVARCHAR(10)NULL,course_DesVARCHAR(50)NULL)(4)学生班级情况表(stu_class.dbf)包括信息有:学生学号,所在班级,所在系,所学专业,建表:SQL语句:CREATETABLEstu_class(student_IDINTNOTNU
19、LL,gradechar(10)NOTNULL,xiVARCHAR(10)NOTNULL,professVARCHAR(10)NOTNULL,constraINTPK_TESTPROCESSPRIMARYKEY(student_ID) (5)系统管理表(user_info.dbf)包括信息有:用户名,密码,用户描述建表:SQL语句:CREATETABLEuser_Info(user_IDCHAR(10)PRIMARYKEYNOTNULL,user_PWDCHAR(10)NULL,user_DESCHAR(10)NULL,)三、在stumgn中创建视图(1).创建名为l_view的视图。基于st
20、u_jb和course两个表建立视图l_view,并显示student_id和course_no。所用语句如下:CREATEviewl_viewASselectstudent_id,course_nofromstudent_info,course_infoSELECT*FROMl_view(2).创建一个名为sex_view的视图。显示性别为“男”的所有学生的资料,所用语句如下:CREATEviewsex_viewASSELECT*FROMstudent_infoWHEREstudent_sex=男SELECT*FROMsex_view四、创建存储过程下面语句是在stumgn数据库中建立一个名
21、为“stu_scr”的存储过程,用于检索student_id=2002的信息,代码如下:IFexists(selectnamefromsysobjectsWHEREname=stu_scrandtype=p)dropprocedurestu_scrgoCREATEprocedurestu_scrASselectstudent_id=2002fromstudent_infogoexecutestu_scrgo五、创建索引(1)在stumgn数据库中建立名为clASs_no的唯一性簇索引,填充率为90%,并查看索引信息,代码:CREATEuniqueclusteredINDEXclASs_noon
22、clASs_info(clASs_no,grade_no)withpad_INDEX,FILLFACTOR=90execsp_helpINDEXclASs_info六、创建触发器建立一个名为testprocess_insupd的触发器。代码如下:USEstumgngoIFEXISTS(SELECTnameFROMsysobjectsWHEREname=testprocess_insupdANDtype=TR)DROPTRIGGERtestprocess_insupdGOCREATETRIGGERtestprocess_insupdONtestprocessFORinsertASDECLAREr
23、esulttinyINTDECLAREcredittinyINTSELECTresult=testprocess.resultfromtestprocessSELECTcredit=testprocess.creditfromtestprocessIF(result60)BEGINUPDATEtestprocesssettestprocess.credit=creditFROMtestprocessENDGO六、确定表内和表之间的数据完整性(1)缺省值约束为表stu_jb中的列sex创建一个约束,缺省值为1。usestumgngoaltertablestudent_infoaddconstra
24、intdefault_student_sexdefault女forstudent_sex现我向表中插入一行学号为20006598,不给student_sex赋值.(2)check约束对表grade中的result字段进行约束,使result的值在0100之间。a.通过企业管理器创建check约束在表设计窗口中,单击属性按钮,选择check约束表单,在约束表达式中输入:(result=0andresult=0andresult=50)当向表中result列中键入值大于50或小与0时就会弹出出错信息。(3)FOREIGNKEY(外部关键字约束)SQL语句:altertablestudent_inf
25、oaddconstraintfk_class_idforeignkey(student_id)referencesstudent_info(student_id)5系统的测试按照极限编程的理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了完成实际功能的代码。先将测试写完,然后再来实现代码,这样所有的测试通过之日也就是程序完成之时。虽然这些理论并不能完全实践,但测试的重要性是毋庸置疑的。5.1系统的测试测试是为了更好地完成项目的功能,虽然测试并不能完全模拟实际发生的流程,但可以降低错误的发生概率,提高软件项目的稳定性。5.2测试的目的(1)软件测试是为了发现错误而执行程序的过程。(2)测试是为了证明程序不够完美,任何程序都不可能有错。6实训心得与总结 感觉在这一学期当中学到东西最多的时候就是在实验期间了,虽然遇到很多困难,我们都一一的解决。尤其是在建数据库表的时候遇到点困难,就是表之间的关系,主键和外键约束、数据的删除、添加、修改等还就是在本系统的实现时有点难。在做界面的时候,我们用的时间最多,因为光是界面就十几个都一一的拖拉好,然后再把每一个界面之间建立联系,不光是这些,还有就是界面的外观设计,使得更加美观,而且让系统容易操作,在这方面下了很大的功夫。在实验的过程中学到了平时没有学到的东西,这段时间感觉过的很充实,知识得到了巩固而且动手的能力也有所提高。