《学生管理系统的数据库设计(共20页).doc》由会员分享,可在线阅读,更多相关《学生管理系统的数据库设计(共20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上信息科学与工程学院数据库课程设计 题目 学生管理系统 学 号 1 姓 名 刘茂昌 班 级 软件外包一班 指导教师 马先波 学 期 11-12学年第一学期 2010年 1 月 21 日目录1.需求分析一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用户到底需要什么是软件开发的头等大事。用户需求如何得来?用户有没有把需求描述清楚?如何把用户需求转化成自动化方式?软件的开发其实就是从一个个问题开始,再一个个地解决地过程。整个需求的过程如图:用户需求分析流程图开始需求用户提出需求分析人员体验用户工作流程分析人员确定调研结果并写报告项目组分析并确定最终需求与用户共同确定工
2、作环境结束需求准备进入设计图1-1需求过程图1.1 用户提出自己的需求本例用户是日照职业技术学院,目前使用的是手工记录学生的信息。随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生的实时信息,该学校决定用一套新的学生信息管理系统软件,并要求满足以下条件:(1)能完成学生的学籍注册(2)学生若不喜欢此时的专业,他们可以自动调剂专业(3)学生可以选课,并查看个人信息及日常表现情况。(4)对学生信息、选课信息、课程信息进行记录。 (5) 老师可以对学生学籍信息的查询,添加,修改,删除;学生信息及成绩的录入,修改,删除。修改密码等功能。 (6) 管理员拥有最高的权限。允许添加教师信息和
3、课程信息等。学校需要的就是能满足以上需求的软件。需求就是一套软件的终极目标,但并不是每一个需求都能达到的,分析人员还要根据开发环境一条条地分析这些需求。1.2 系统分析人员分析用户的需求1.2.1 分析人员体验用户环境当软件公司在接到用户的需求时,不是盲目地进行开发,而是应该对需求进行调研。需求的调研就是亲自到用户那里体验整个工作过程,掌握软件的运行环境以及人员操作水平等。系统分析员的任务就是了解并确认用户的需求,最终做出系统的流程设计。分析人员如何快速有效地掌握用户的整体情况,最好的方法就是提问题,然后找到这些问题的答案,不管什么样的软件系统,都可以从以下问题出发:(1)用户为什么要引入系统
4、?这个问题的答案将最终决定软件的定位。一套软件系统可繁琐可简单,根据用户需要软件的原因制定快速的开发计划,既满足了用户需求又节省了开发时间,降低了双方的成本。(2)软件要实现什么功能?用户最初的需求列表是否可行,分析人员要深入到用户的工作流程中,亲自体验工作环境,对照用户需求来分析各个流程是否有局限性,并与用户的管理层多进行沟通,对需求有异议的地方力求妥善解决。(3)操作人员有哪些?对于一个完善的软件系统来说,安全是不可缺少的一部分。并不是所有的人都能管理软件系统,不同的人应该具备不同的权限。从软件角度讲,就是角色分配问题。管理人员有编辑删除的权限,而普通人员只能查看。分析人员要时刻与管理人员
5、进行沟通,了解用户的组织管理机构,掌握用户角色的精确划分。(4)如何满足用户的需求?一个完整的软件系统,首先功能要完整,即用户的需求必须满足。软件该使用什么样的方式来满足用户的需求,并在满足需求的同时,提高用户的工作效率,节约用户的工作成本。分析人员要理清思路,清晰地处理与用户之间的每个问题,并将结果记录,为以后设计用例图准备好详细资料。因为不可能所有的开发人员都去用户那里体验工作流程,所以分析人员要力求实现需求的准确性和详细性。1.2.2 分析并确定调研结果分析人员将需求调研的结果带回公司,写出调研报告、召开会议研讨,开发人员和项目经理等所有参与项目的人都要参加。根据报告一条条地分析具体流程
6、的有效性和可行性,从软件的角度完善其中的细节,并将不清晰的地方再与用户进行沟通,争取做到每个人都清楚地明白用户究竟要什么样的功能。研讨完毕后,将可行需求和不可行需求(包括有局限性的需求)分别记录,并在不可行需求中详细注明原因,最后说明软件的目的及功能。对于局限性的需求一定要仔细推敲,并与用户紧密沟通,以达成改善的意见。可行性列表将在后面介绍。软件的目的是提高用户的工作效率,细分员工的工作职责,协调部分之间的业务往来,监督业务运行的过程。该软件的主要功能包括。(1)对学生信息的管理(2)对教师信息的管理(3)对课程信息的管理(4)对选课信息的管理 (5) 对成绩的管理 (6) 对学生的日常表现情
7、况1.3 根据需求确定工作环境1.3.1 软件环境除了要安装学生管理系统外,还必须具备相应的软件环境,才能更好地运行。(1)Java虚拟机,支持Java开发的软件。(2)应采用统一的软件操作系统(win 7),这是为了更好地管理。(3)服务器上安装数据库系统(SQL Server 2005),从而实现信息资源安全化管理。(4)安装防病毒软件,病毒防火墙等。因为所有的机器都是互连的,一旦有病毒侵入,容易造成整个系统的瘫痪。1.3.2 硬件环境软件不是一套可独立运行的系统,必须依托在完善的硬件设备上。本例从实际应用角度考虑,要使软件正常有效地运行,还必须具备以下硬件环境。(1)操作系统必须是586
8、以上,2G内存配置。(2)运行通畅的网络环境。所有的内容都通过网络传输,如果网络出现问题,则系统将无法正常工作。(3)服务器:由于系统采用C/S结构,为了数据安全和速度问题,数据库和系统文件等要求单独安装在一台机器上,服务器的选择是系统稳定性的关键因素。以上这些软硬件环境一定要跟用户及时沟通,如果用户保证不了这些环境要求,软件不能很好地运行,后果责任等一定提前说清楚。确定一切内容之后,双方在最终需求书上签字,软件进入实质开发阶段。2.概念结构设计概念结构设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
9、概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。122.1 概念结构设计的原则概念结构设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则:(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,
10、一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,即理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其
11、他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100行的范围内,最好为3060行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概念结构设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概念结构设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。2.2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求
12、才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3) 程序代码:用来实现模块功能的源代码。2.2.1 确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。(1)管理员模块:是本系统的核心模块,该模块又包括对学生管理和课程管理2个子模块,功能如下:l 学生管理子模块:实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。查
13、询学生信息删除学生信息修改学生信息学生管理子模块添加学生信息图3-1 学生管理子模块l 课程管理子模块:实现对课程的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除,查看某个课程的详细信息等。查询课程信息删除课程信息修改课程信息课程管理子模块添加课程信息图3-2 课程管理子模块(2)教师模块:实现查看自己所教授的课程、课程有哪些学生选修,以及利用本系统提交学生的成绩。教师模块查看所授课程录入学生成绩图3-3 教师管理模块(3)学生模块:实现学生的选课,查看、修改自己的选课信息及查看自己日常的表现情况。个人信息日常表现学生模块选课查看选课信息修改选课信息图3-4 学生模块(4
14、)公有模块:实现用户的身份验证,密码修改,退出系统等功能。公有模块身份验证密码修改退出系统图3-5 公有模块3 数据库设计数据是企业运作过程中不可缺少的重要部分,建立自己的数据资料库是提高企业整体竞争力的关键因素。对于程序而言,安全完整地保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发中重要的一个环节。一旦数据设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。所以,为了更好地开发数据库,了解信息的来源以及信息的流向是头等大事。对于客户的整个操作流程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好的数据库打下基础。本章主要介绍如何收集客户的数据资料,并将其转
15、化为程序需要的数据资源。3.1 罗列数据信息在前面已经罗列出了用户的需求,这也正是数据库信息的来源。根据列表内容,可以提炼出以下数据信息。(1)需要管理学生信息:学生表。(2)需要管理教师信息:教师表。(3)需要管理课程信息:课程表。(4)需要管理选课信息:选课表。(5)需要管理活动信息:活动表。(6)需要管理管理员信息:管理员表。(7)需要管理奖惩信息:奖惩表。实体属性表:实体属性教师教师ID,教师姓名,登录密码课程课程号,课程名称,教师ID管理员管理员ID,管理员姓名、登录密码选课学号,课程号,课程名、成绩、总成绩学生学号,姓名,性别,密码,身份证号,地址、专业活动学号,项目,地点、时间、
16、加分奖惩学号,事件、奖励、惩处数据库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
17、 null管理员姓名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)
18、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 数据库连接4.2.1 数据库连接技术Java数据库互连(JDBC,Java Da
19、tabase Connectivity)API是Sun Microsystems提供的Java API的一部分,它定义了一组API对象以及与数据库进行交互的方法。为了快速高效地访问数据库中的数据,Java应用程序使用了JDBC。虽然Java在其java.io包中提供了丰富的类和接口,但主要的缺陷是,通过这些类和接口访问的数据是以流的形式表示的。因此,对于访问存储在外部数据提供的程序中的数据的所有Java应用程序而言,JDBC是必需的。JDBC连接数据库可以通过不同的驱动来实现。JDBC有4种不同的驱动类型,它们分别是:l JDBC-ODBC桥驱动程序l 本地API部分Java驱动程序l JDB
20、C网络纯Java驱动程序l 纯Java驱动程序在本项目中我们使用的是JDBC-ODBC桥驱动程序,这种驱动程序是Sun公司提供的作为JDBC一部分驱动程序,用以从JDBC访问ODBC数据源。它的特点是易于Windows操作系统下的数据库操作,可移植性强。4.3 学生管理系统登录子系统4.3.1 学生管理系统登录子系统功能描述根据用户权限的不同,可以以不同的身份登录学生管理系统。用户的权限为:管理员、教师、学生。其中,管理员为完全权限,可以使用学生管理系统的所有功能;教师为部分权限,不具有使用“学生选课”、“课程修改”功能,并且只能修改本人的用户名和密码;学生为部分权限,具有“选课”、“查看个人
21、信息”和“课程查询”功能,其他模块只具有查询功能,并且只能修改本人的用户名和密码。在用户登录时,通过用户所输入的用户名和密码来验证用户的登录信息,并判断用户的权限,根据不同的权限打开不同的系统主页面。4.4学生管理系统4.4.1 学生管理系统主界面功能描述根据学生管理系统的主框架。我们设计了学生管理系统主界面,分别由:学生信息管理、课程管理、用户管理、退出等5个部分构成。4.5学生信息管理子系统4.5.1学生信息管理子系统功能描述学生信息管理子系统对所有学生的个人信息进行登记,其中包括学生的学号,姓名,性别,密码,身份证号,地址,奖惩等,并且系统还应能够验证输入错误的学生个人信息记录。学生信息
22、管理子系统由注册、修改和查询三部分组成。 注册界面由一些信息输入框、下拉菜单和两个按钮组成。其中,有三个下拉菜单分别显示学生所属系部、所属专业和所在班级,根据用户选择的系部显示该系部所属专业下拉菜单,根据用户选择专业显示该专业所有班级下拉菜单;两个按钮分别为:一个是提交按钮,通过单击它来提交学生个人信息注册记录;一个退出按钮,单击它退出注册页面。管理界面与注册界面控件元素布局完全相同。该页面可以将管理员权限用户查询到的学生信息显示在界面控件中,以供管理员修改学生信息。查询界面由JPanel、JScrollPane及相关控件组成,用户在查询时,先选择查询方式:按学号查询、按姓名查询、按班级查询。
23、选择查询方式后会有相应的JPanel显示,供用户输入查询条件。用户输入查询条件后,点击查询按钮符合条件的信息列表就会显示在下面的JScrollPane中。另外,用户还可以选中列表中的某一条学生信息,进行修改或删除操作。4.6 选课信息子系统4.6.1 选课信息子系统功能描述选课信息管理子系统对学生所选的课程进行管理,包括学生的可选课程和个人已选项课的信息,并可以进行选课和删除信息操作。选课信息管理子系统只能在“学生”权限下使用,界面分为选课和课程查询两部分。选课界面根据登录系统的学生权限用户信息,将学生的姓名和所属专业显示在界面的文本框中(该类文本框不可编辑),并在下面的JScrollPane
24、1中将该名学生可以选择的课程显示在列表中。用户可以根据列表中的课程信息选择要选修可课程,点击选择按钮后,该课程被选中,并将该条课程信息显示在下面的JScrollPane2中。用户最多可以选择两门课程。用户选择好要选修的课程后,点击确定按钮提交信息,点击删除按钮删除已选的课程。4.7课程管理子系统4.7.1课程管理子系统功能描述课程管理子系统对课程信息进行管理,能够录入课程的相关信息,并指定该门课程的任课教师,以供学生选择。课程管理子系统由:课程录入、课程修改和课程查询三部分组成。课程录入界面由文本框、下拉菜单和按钮组成。用户输入课程名称和该课程的学分,并根据所属专业来选择该门课程的任课教师,提
25、交到数据库。课程修改界面相关控件布局与课程录入界面相同,用户根据需要修改课程信息后点击修改按钮完成修改操作。课程管理界面由两部分组成查询信息输入部分和查询信息显示部分。其中,查询信息输入部分提供了三种不同的查询方式:按课程名称查询、按专业查询、按学分查询。用户需先选择查询方式,然后设置查询条件,点击查询按钮实现查询操作。查询出的信息将显示在界面下半部分的列表中。用户可以选择列表中的信息进行修改或删除操作。4.8 用户管理子系统4.8.1 用户管理子系统功能描述用户管理子系统对系统的用户信息进行管理,能够根据不同的用户权限,实现系统用户的注册、密码修改、删除用户等操作。5系统的测试按照极限编程的
26、理论,写测试就是对软件进行设计的过程,它的重要性甚至超过了完成实际功能的代码。先将测试写完,然后再来实现代码,这样所有的测试通过之日也就是程序完成之时。虽然这些理论并不能完全实践,但测试的重要性是毋庸置疑的。5.1系统的测试测试是为了更好地完成项目的功能,虽然测试并不能完全模拟实际发生的流程,但可以降低错误的发生概率,提高软件项目的稳定性。5.2测试的目的(1)软件测试是为了发现错误而执行程序的过程。(2)测试是为了证明程序不够完美,任何程序都不可能有错。(3)一个成功的测试,其实是发现了别人发现不了的错误。系统的测试,从根本上说是为了查找错误,但并不是找不出错误就说明测试没有价值。首先,测试
27、不光是要找出错误,还要分析错误产生的原因。通过分析,可以帮助项目管理者发现当前软件实现过程的缺陷。同时,这种分析也能帮助开发人员认识设计结构,改善测试的方法,提高测试效率。其次,并不是所有的测试都会出错,设计完善的功能模块和软件过程,通常都不会有明显的漏洞。目前的测试主要完成以下3个任务。(1)功能测试:对照需求说明,测试每一项功能是否完成。(2)性能测试:尤其是Web程序,测试是否满足客户需要的负载压力、响应的时间、吞吐量等要求。(3)进度要求:在预算范围内完成测试要求,尽快发布软件。6实训心得与总结 我感觉在这一学期当中学到东西最多的时候就是在实训期间了,虽然遇到很多困难,我们都一一的解决。尤其是在建数据库表的时候遇到点困难,就是表之间的关系,主键和外键约束、数据的删除、添加、修改等还就是在本系统的实现时有点难。我们组用的是java语编程言,在连接数据库的时候遇到了点麻烦,通过查找资料和组员的讨论,最终解决了真正问题的所在。在做界面的时候,我们用的时间最多,因为光是界面就十几个都一一的拖拉好,然后再把每一个界面之间建立联系,不光是这些,还有就是界面的外观设计,使得更加美观,而且让系统容易操作,在这方面下了很大的功夫。在实训的过程中学到了平时没有学到的东西,这段时间感觉过的很充实,知识得到了巩固而且动手的能力也有所提高。专心-专注-专业