《学生信息管理系统Java版电子教案.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统Java版电子教案.doc(462页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Good is good, but better carries it.精益求精,善益求善。学生信息管理系统Java版-Java项目实战院系:计算机学院班级:计071-3姓名:闫轲学号:200725501317目录课题一需求分析3课题二项目计划安排10课题三概要设计19课题四详细设计23课题五数据库设计35课题六项目技术准备44课题七系统功能设计47课题八项目的测试200课题九实战演练205附件软件文档编写向导209课题一需求分析一套软件是否有市场,满足用户需求是关键因素,所以搞清楚用户到底需要什么是软件开发的头等大事。用户需求如何得来?用户有没有把需求描述清楚?如何把用户需求转化成自动化方式
2、?软件的开发其实就是从一个个问题开始,再一个个地解决地过程。整个需求的过程如图:用户需求分析流程图开始需求用户提出需求分析人员体验用户工作流程分析人员确定调研结果并写报告项目组分析并确定最终需求与用户共同确定工作环境结束需求准备进入设计图1-1需求过程图1.1用户提出自己的需求本例用户是职业技术学院,目前使用的是手工记录学生的信息。随着学校规模的增大以及新增学生选课的影响,手工方式已经无法记录学生的实时信息,该学校决定用一套新的学生信息管理系统软件,并要求满足以下条件。(1)学生卡使用磁卡及防伪标志,学生卡如有遗失,学校方面可以补办、原资料需重新录入。(2)学生卡不能转借给他人使用,如违反给予
3、相应处罚。(3)学生可以选课,并查看个人信息。(4)对学生信息、选课信息、课程信息进行记录。学校需要的就是能满足以上需求的软件。需求就是一套软件的终极目标,但并不是每一个需求都能达到的,分析人员还要根据开发环境一条条地分析这些需求。1.2系统分析人员分析用户的需求1.2.1分析人员体验用户环境当软件公司在接到用户的需求时,不是盲目地进行开发,而是应该对需求进行调研。需求的调研就是亲自到用户那里体验整个工作过程,掌握软件的运行环境以及人员操作水平等。系统分析员的任务就是了解并确认用户的需求,最终做出系统的流程设计。分析人员如何快速有效地掌握用户的整体情况,最好的方法就是提问题,然后找到这些问题的
4、答案,不管什么样的软件系统,都可以从以下问题出发。(1)用户为什么要引入系统?这个问题的答案将最终决定软件的定位。一套软件系统可繁琐可简单,根据用户需要软件的原因制定快速的开发计划,既满足了用户需求又节省了开发时间,降低了双方的成本。(2)软件要实现什么功能?用户最初的需求列表是否可行,分析人员要深入到用户的工作流程中,亲自体验工作环境,对照用户需求来分析各个流程是否有局限性,并与用户的管理层多进行沟通,对需求有异议的地方力求妥善解决。(3)操作人员有哪些?对于一个完善的软件系统来说,安全是不可缺少的一部分。并不是所有的人都能管理软件系统,不同的人应该具备不同的权限。从软件角度讲,就是角色分配
5、问题。管理人员有编辑删除的权限,而普通人员只能查看。分析人员要时刻与管理人员进行沟通,了解用户的组织管理机构,掌握用户角色的精确划分。(4)如何满足用户的需求?一个完整的软件系统,首先功能要完整,即用户的需求必须满足。软件该使用什么样的方式来满足用户的需求,并在满足需求的同时,提高用户的工作效率,节约用户的工作成本。分析人员要理清思路,清晰地处理与用户之间的每个问题,并将结果记录,为以后设计用例图准备好详细资料。因为不可能所有的开发人员都去用户那里体验工作流程,所以分析人员要力求实现需求的准确性和详细性。1.2.2分析并确定调研结果分析人员将需求调研的结果带回公司,写出调研报告、召开会议研讨,
6、开发人员和项目经理等所有参与项目的人都要参加。根据报告一条条地分析具体流程的有效性和可行性,从软件的角度完善其中的细节,并将不清晰的地方再与用户进行沟通,争取做到每个人都清楚地明白用户究竟要什么样的功能。研讨完毕后,将可行需求和不可行需求(包括有局限性的需求)分别记录,并在不可行需求中详细注明原因,最后说明软件的目的及功能。在本例中,不可行的需求的列表如下。(1)学生卡使用磁卡及防伪标志。使用磁卡可以,但必须具备扫描卡专用设备,仅仅靠软件无法实现。防伪标志的使用由用户自己决定,也不能通过软件实现。(2)学生卡不能转借他人使用。软件不是万能的,无法判断学生卡是否是本人使用,此需求只能由用户管理部
7、分实施各种监管制度来满足。(3)学生卡补办需重新输入资料,学生资料已存储在数据库中,无需重新输入所有资料。对于局限性的需求一定要仔细推敲,并与用户紧密沟通,以达成改善的意见。可行性列表将在后面介绍。软件的目的是提高用户的工作效率,细分员工的工作职责,协调部分之间的业务往来,监督业务运行的过程。该软件的主要功能包括。(1)对学生信息的管理(2)对教师信息的管理(3)对课程信息的管理(4)对选课信息的管理1.3用户与项目管理人员确定最后的需求整个项目组已经讨论并确定了需求,对于不清晰的地方也与用户进行了沟通,最后需要列出软件的最终需求。(1)学生卡使用磁卡,允许手工输入学生证号和扫描器输入两种方式
8、。学生证号的长度为10:1-2位是专业编号,3-6位是入学年份,7-10连续编号(2)学生卡办理之前需登记学生的详细资料,其中包括学生的学号、姓名、性别、生日、地址、电话、身份证号等,并且系统还应能够修改输入错误的学生个人信息记录(3)可以对学生所选的课程进行管理,包括学生的可选课程和个人已选课的信息,并可以进行选课。(4)可以对课程进行管理,课程管理包括增加课程,该课程包括任课教师和所属专业。(5)根据学号、身份证号查询学生信息。根据学号查询选课信息。(6)软件使用权限管理方式。根据工作流程,软件有2种角色:管理员、学生和教师。管理员允许对课程信息、教师信息、学生信息的管理。学生可以进行选课
9、和查看课程信息的操作。教师可以查看本人所授课程的学生信息(7)本软件从签字起二个月内交付。确定需求时,要从用户实际需求和工作环境出发,本着一切为用户着想的原则,尽量满足用户的需求。为了用户成本方面的考虑,尽量与用户已有软件系统不冲突,在可能的情况下,尽量实现两个系统的融合。需求在整个开发过程中相当重要,一旦与实际情况出现偏差,则会造成整个工程的反复。确定需求后,项目经理开始组织项目开发小组讨论需求以及用户工作环境的注意事项。1.4根据最终需求确定工作环境1.4.1软件环境除了要安装学生管理系统外,还必须具备相应的软件环境,才能更好地运行。(1)Java虚拟机,支持Java开发的软件。(2)应采
10、用统一的软件操作系统(XP),这是为了更好地管理。(3)服务器上安装数据库系统(SQLServer2000或2005),从而实现信息资源安全化管理。(4)安装防病毒软件,病毒防火墙等。因为所有的机器都是互连的,一旦有病毒侵入,容易造成整个系统的瘫痪。1.4.2硬件环境软件不是一套可独立运行的系统,必须依托在完善的硬件设备上。本例从实际应用角度考虑,要使软件正常有效地运行,还必须具备以下硬件环境。(1)操作系统必须是586以上,64MB内存配置。为了更好更快地运行,如果情况允许,建议尽量采用内存较大的电脑。(2)运行通畅的网络环境。所有的内容都通过网络传输,如果网络出现问题,则系统将无法正常工作
11、。(3)服务器:由于系统采用C/S结构,为了数据安全和速度问题,数据库和系统文件等要求单独安装在一台机器上,服务器的选择是系统稳定性的关键因素。(4)写卡器及刷卡器:学生卡全部采用新版磁卡,必须具备读写磁卡的设备才能进行正确的扫描。写卡器一般用于向学生卡内写入学生学号等简单信息。以上这些软硬件环境一定要跟用户及时沟通,如果用户保证不了这些环境要求,软件不能很好地运行,后果责任等一定提前说清楚。确定一切内容之后,双方在最终需求书上签字,软件进入实质开发阶段。因为需求是整个软件的基础,从开始到了解到分析是一个异常慎重的过程,每一步的失误都可能导致软件的重新开发。为了更好、更快地开发系统,项目小组要
12、在开发前进行充分的讨论,有问题的地方一定要跟用户及时沟通。最后要做出需求说明书,供将来设计、开发和测试等人员查看。需求说明书一般采用IEEE标准830-1998(IEEE1998)描述的需求规格说明书模板,如表所示。需求说明书根据模板格式书写清楚,放在公司的共享资料库内,整个需求分析过程就结束了,项目进入第二阶段。课题二项目计划安排一项任务的成功完成,必须依靠合理的计划安排以及各种资源的有效利用。有计划、有步骤地进行软件开发,除了可以提高开发进度外,更能明确项目组各成员之间的职责及任务。项目进度表要安排每个成员的任务,并要求成员每天修改自己的进度,保证项目管理人员可以随时查看整个项目的进度,以
13、及时发现问题,调整工作策略。2.1项目计划软件对于项目计划软件,主要使用的是Microsoft提供的Project。Project2003是Office2003中带的一项,安装比较简单,所以安装过程不作介绍。2.1.1创建一个进度表Project项目软件是一个可以直观显示项目进度和管理项目资源的软件。下面创建一个本例的初期进度安排表。(1)打开Project,选择“文件|新建”菜单命令,出现窗口如图2-1所示。默认情况下开打4个区域:视图、任务定义、任务列表、图形任务显示。一般,所有的任务都在任务列表区完成,图形任务显示区只用于显示,不能修改。图2-1Project的工作界面(2)新建一个任务
14、,双击任务列表区的第一行,出现对话框,如图2-2所示。这里有6个选项卡:常规、前置任务、资源、高级、备注、自定义域,通常情况下只设置前4个即可。常规选项卡中要求写明任务的名称,工期长短,开始日期和结束日期;前置任务选项卡中要求写明必须完成什么任务后才可以进行此项任务;资源选项卡中写明此项任务需要的资源,包括人员、设备等。高级选项卡一般指明此任务的一些限制。图2-2任务信息图(3)填写任务名称和任务所需资源后,就粗略完成了一项任务,如图2-3所示。图2-3填写好任务的工作界面2.1.2使用不同的图表显示项目进度为了更加直观地显示任务安排,Project提供了多种图形供选择。有甘特图、跟踪甘特图、
15、日历图、网格图等,默认的图形是甘特图。下面分别介绍各种图形的显示方式。在“视图栏”中有一些变换图形显示的快捷按钮。(1)单击“日历”按钮,界面变化为如图2-4所示的效果。这主要是以日历的形式展现每个任务以及任务的工期。图2-4日历式显示任务(2)单击“网格”按钮,以分段的形式展示任务列表,如图2-5所示。这样更直观地显示了有多少任务以及任务的安排时间图2-5网络式显示任务(3)单击“跟踪甘特图”按钮,以进度比例的方式显示每个任务,如图2-6所示。这个图和甘特图是十分相似的,只是有个进度跟踪显示,其他没什么区别。图2-6跟踪甘特图式显示任务每种图都从不同的角度显示了进度安排情况,但只有甘特图的方
16、式可以清晰地显示任务的前置关系(必须完成的前提任务)、任务的进度等。其他几种图只是比较简单直观的显示任务名称及任务的时间安排。2.2实现此项目需要的资源一个项目,必须包括人员和设备。在项目进度表中所说的资源,就是完成该项目需要的人员和设备。每个阶段分配不同的资源,什么职责该干什么,用多长时间,就是一个项目安排进度的过程。(1)单击“视图栏|资源工作表”列表按钮,显示如图2-7所示界面图2-7资源工作表(2)添加资源的操作方式与添加任务是相同的,双击表格第一行,出现对话框,如图2-8所示。资源信息分5项:常规、工作时间、成本、备注和自定义区域。常规选项卡中主要说明资源的名称、类型等,一般写人名。
17、工作时间选项卡定义工作日和非工作日以及工作日中几点到几点属于工作时间。成本选项卡设置某资源1小时的费用,通常用来作成本控制。一般小型软件不需要设定。图2-8资源属性信息(3)根据情况填写资源信息,项目组的人员名称,笔记本等设备名称。人员的类型是“工时”,设备的类型一般选择“材料”。(4)单击“甘特图”界面转换到任务列表。(5)双击要分配资源的任务,打开任务信息,选中“资源”选项卡,此时就可以在资源名称处选择此任务需要的资源。如图2-9所示。图2-9资源选项卡的内容(6)给所有的任务分配好资源后,可以通过“任务分配情况”和“资源使用情况”来查看和调节每项任务的资源。除了可以用以上方式添加资源外,
18、Project提供了更简便的方式:资源可以从公司的电子通讯簿导入。安排好任务和资源后,其实就完成了一个项目进度安排表。因为Project是一个比较简单的工具,十分容易上手,真正功能完善的进度表还得在实践中不断地探索。2.3如何写好项目计划安排表项目计划不仅仅安排工作日期,还代表了很多在软件开发过程中的关键因素,比如成本、资源等。项目计划主要内容包含以下内容。(1)估计任务工期。根据资源的安排情况和任务的多少以及任务的完成期限可以估算出整个项目的工期。(2)分阶段地明确项目的进度。可以将任务标记为里程碑,在甘特图中就能很明显地看到所分的阶段以及每个阶段的任务。(3)考虑管理成本。在资源中可以设置
19、每项资源的工时费,Project会根据任务中此项资源的使用情况自动核算此项资源在整个项目中占多大成本。(4)优化项目计划,控制项目风险,满足预算要求,保证完成日期。通过以上几点分析,可以看到项目计划既是给管理层人员的一份报告,又是控制项目小组成员进度的一份跟踪表,起到了承上启下的作用。知道了项目计划可以为系统做什么,那么该如何做好呢?这应该全面考虑本项目的各个方面。(1)是否考虑成本预算问题。如果考虑,则在人员和设备的选择上要精确计算。(2)此项目是否与其他项目有关联。如果有,那需要判断是否有相冲突的资源,是否可以共享其他的资源以节约时间。(3)要及时记录任务进度,尤其是在开发一个有前置任务的
20、资源时。(4)各阶段的里程碑要设置明确,而且要恰到好处。例如分析是一个阶段,开发是一个阶段,测试是一个阶段,这样看起来层次分明,对各阶段的资源也有个详细的划分。(5)任务列表不要一个层级往下走,要精确划分,每个任务都不能包括太多的功能,有层次的显示任务,让其他成员能一目了然。2.4前期的项目计划表由于在做项目进度安排时,并不知道详细的软件模块,只知道具体需要哪些功能,所以初期无法详细地描述开发进度,而只是给出一个开发的时间段,由分析人员做完具体的模块划分后,再在项目计划安排表中予以补充。下面是学生信息管理系统前期的项目进度表。如图2-10所示。图2-10前期计划表在这里,大的任务主要有6个。(
21、1)需求分析:分解需求,画出用例图,分出类模块。(2)模块划分:将分析出的类分配给不同资源(3)开发:进入编写代码阶段,并要求开发人员自己进行初步测试。(4)测试:测试人员分两步完成测试。单元测试并不要求所有模块都完成,而集成测试则是所有模块完成后统一进行的测试。(5)部署:将开发完成的代码部署到服务器或互联网中。(6)材料准备:相关资料以及帮助性的说明文档。在甘特图中,菱形黑点标示里程碑,此进度表分了3个里程碑。(1)模块划分完毕(2)开发完毕(3)测试完毕从甘特图中可以很明显的看出任务的资源、任务的进度以及某项任务的前置任务,如此直观的图例方便了管理人员的监督和开发人员的计划安排。越详细的
22、项目计划表就越能说明整个软件系统开发流程及资源利用率,所以在实际应用中应尽可能详细地描述各个任务及任务的辅助信息。课题三概要设计概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。3.1概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体
23、结构进行大致的设计。概要设计要坚持以下几个原则。(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就
24、会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100行的范围内,最好为3060行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努
25、力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。3.2将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3)程序代码:用来实现模块功能的源代码。3.3确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上
26、两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。(1)管理员模块:是本系统的核心模块,该模块又包括对学生管理和课程管理2个子模块,功能如下:1)学生管理子模块:实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。查询学生信息删除学生信息修改学生信息学生管理子模块添加学生信息图3-1学生管理子模块2)课程管理子模块:实现对课程的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除,查看某个课程的详细信息等。查询课程信息删除课程信息修改课程信息课程管理子模块添加课程信息图3-2课程管理子模块(2)教师模块:实现查看自己所教授的课程、课程有哪些学生选修,以
27、及利用本系统提交学生的成绩。教师模块查看所授课程录入学生成绩图3-3教师管理模块(3)学生模块:实现学生的选课,查看、修改自己的选课信息。学生模块选课查看选课信息修改选课信息图3-4学生模块(4)公有模块:实现用户的身份验证,密码修改,退出系统等功能。公有模块身份验证密码修改退出系统图3-5公有模块3.4根据模块划分完善项目计划表在初期的项目计划表中,只简单地估计了开发的时间,并没有详细划分模块。截止到目前,模块已经分配清楚,那么必须在项目计划表中分配模块所需的资源以及模块开发的时间这样能更好地估计开发时间,掌握项目进度。课题四详细设计概要设计是为了明确开发人员的工作步骤和工作目标。详细设计使
28、开发人员可以轻松地完成代码的编写,并熟悉所编写的业务流程。4.1UMLUML(UnifiedModelingLanguage,统一建模语言)是一种可视化的建模语言。对各建模元素可进行详细的说明,并能生成所建模型的文档。4.1.1为什么用UMLUML语言是一种可视化的语言,是一种图形符号。UML的出现就是为了详细描述工作过程,以用例驱动的方式描述流程中的元素和顺序,客观而又直观地体现了业务流程。设计人员把使用UML的过程叫做建模,建模就是对现实的简化。使用UML可以给设计带来很多便利。(1)按照程序需要的样式对系统实现可视化流程展示。(2)可以详细说明系统的结构和各种行为。(3)对所有的决策可实
29、现文档化管理。(4)可以以体系结构为中心,实现增量和迭代。UML是统一化的一种设计标准。因为统一,所以任何人所做的设计只要符合标准,都可以很容易地让别人看懂,符合UML标准的用例图也可以让用户看懂。因此,大部分的设计人员目前都采用UML来进行详细设计。4.1.2UML包括的内容UML主要包括3个构造块,分别是事物、关系、图。事物是UML模型中最基本的面向对象的建筑块。其在模型中属于最静态的部分,代表概念上或物理上的元素。UML的4种事物主要包括如下。(1)结构事物:类、接口等。(2)行为事物:交互、状态等。(3)分组事物:包。(4)注释事物:注释、文档等。关系用来形容UML中事物之间的关联,某
30、事物是否依赖于其他事物,或者某事物的改变是否会影响到其他事物。UML的4中关系包括:依赖、泛化、关联和实现。图是组织这些建筑块的方式。图代表一系列的元素,这些元素常常被画成用点(事物)和弧(关系)相连的图。利用图来从不同的视角观察系统。UML的10种图包括如下。(1)类图:描述类以及类之间的关系。描述类的职责,显示类的方法和属性。(2)对象图:是类图所反映的事物实例。(3)用例图:参与者与模块间的关系。(4)交互图:要实现一个目的行为的一种交互操作。(5)顺序图:按时间顺序体现对象之间的消息传递。(6)协作图:与顺序图可以互换,主要体现对象之间的结构组织。(7)状态图:某对象的几种可能状态以及
31、状态之间的切换。(8)活动图:工作流方式的一种图形展示。(9)构件图:构件之间的组织和依赖。(10)部署图:软硬件结合的一种表现整个系统架构的图例。4.2分析设计工具VisioUML只是一种建模语言,不是一种工具,就像Java语言一样,必须使用Java开发工具才能进行开发。市场上有很多建模工具,有些工具甚至可以实现UML与Java语言的互相转换。Visio是Microsoft提供的一款建模工具,使用起来比较方便。4.2.1为什么用Visio本项目使用的版本是MicrosoftVisualStudio.NETEnterpriseArchitect(VSEA)版本中自带的Visio。在VS的版本中
32、,只有此版本自带有Visio。另外,也可以单独下载此版本中的Visio。不要使用Office自带的Visio版本,因为很多功能在这个版本上无法实现。Visio不仅包括软件工程的一些建模,还涉及其他建筑、网络、建筑工程等建模。Visio中可以全面应用UML语言中所有的事务、关系和图,更好地体现了图形化设计的意义。其可视化设计允许操作者通过拖拽就能够轻松地完成模块的建设。Visio的开始界面如图4-1所示,主要包括类别区和模板区。图4-1Visio的开始界面4.2.2使用Visio设计模块本小节以学生管理子模块为例,详细介绍如何用Visio设计模块。(1)启动Visio后单击“类别区|软件”列表按
33、钮,模板列出预定义的软件项目的模板,如图4-2所示。图4-2软件模型(2)选择模板区的“UML模型图”,打开UML模型的工作界面,如图4-3所示。这里主要包括形状工具栏、模型资源管理区、工作区3部分,从图中可以看到工具栏区列出了UML所有的图形模式。图4-3Visio的软件模型工作界面(3)单击形状工具栏区的“UML静态结构”列表按钮,显示出了在Visio中类图的所有元素,如图4-4所示,包括包、类、接口等。图4-4类图的元素图(4)拖拽类元素到工作区,出现一个UML定义的标准类图,如图4-5所示。类图主要分3部分,最上面显示类名,中间列出类属性,最下面类出类的方法。图4-5类(5)双击类图,
34、打开类的属性窗口,如图4-6所示。左侧是对类中类别的罗列,右侧是每个类的具体属性。图4-6类的属性窗口(6)在该对话框右侧类的属性中,将“名称”设置为“Student”;在“可见性”下拉列表中选择“Public”,因为一般情况下类都是对所有模块可见,如果仅仅内部可见,则选择“Private”。在“文档”文本框内可以输入对此类的描述,以便将来生成统一的文档资料。(7)选择左侧列表栏的“特性”,对话框右侧会随之更改为特性的相关属性,如图4-7所示。学生类型的属性包括学生学号、密码、姓名、系院号、年级、班级。单击“新建”按钮,将这几个属性添加,并同时指明属性的类型和可见性。学号(ID:string)
35、、密码(Password:string)、姓名(Name:string)、院系号(Depart:int)、年级(Grade:int)、班级(Class:int)均为内部可见。图4-7添加属性的界面(8)选择左侧列表栏的“操作”项,如图4-8所示。此处允许添加类的操作,即类的方法。学生类的方法包括:添加学生信息、修改学生信息、删除学生信息和获取学生信息。单击“新建”按钮,将这4个方法添加,并选择每个方法的返回类型。图4-8添加方法界面(9)如果方法有输入参数,则单击“属性”按钮,打开方法属性窗口,如图4-9所示,将参数一一添加即可。图4-9方法参数窗口(10)添加完类名、类的属性、类的方法后,一
36、个类图就基本完成了。为了减少以后的设计反复,此处对于类的方法和属性一定要全面而且精确。当然,设计需要经过很多实践经验的积累,刚刚开始做设计的程序员做不到完美也是允许的。说明:在静态类图中,类名、属性名、方法名一般要求用英文表示,类名和方法名首字母大写,属性名全部小写。完成的类图,如图4-10所示。图4-10完成属性和方法的类图4.3用图例实现设计既然UML是一种图形化的设计语言,而Visio又是一种图形化的设计工具,那么用图例来实现设计,然后再配上文档说明则是完成详细设计的最好方法。本节先用用例图详细说明业务流程,再用类图详细描述各个模块的功能。4.3.1用用例图实现业务流程的设计用例图是描述
37、业务流程的一种设计图,由于其简单易懂,需求分析人员在初期体验用户业务时,就可以画出用例图,并与用户就用例图进行磋商。这样,完成的用例图就比较接近事实上的业务。上一节讲到了类图,其实类图是一种静态图,只是描述一些特性,而用例图是一种动态行为图,描述业务的流程。本项目以学生选课为例,设计一个选课的业务用例图。首先用语言描述一下选课的流程。(1)管理员录入学生信息和课程信息(2)学生使用管理员提供的用户名和密码登陆本系统。(3)查看可供该学生选择的课程列表。(4)从该列表中选择要所选课程,对该课程进行选课,系统自动记录选课信息。整个业务流程分为4步,下面以图形化方式描述以上流程。(1)启动Visio
38、的UML模型图,打开如图4-3所示界面,显示类图的所有元素。(2)选择左侧形状工具栏最下面一项“UML用例”,显示UML用例的模型符号,如图4-10所示。主角一般表示行为操作者,通常情况下是人或设备;而用例就是业务过程中的一个行为;包的意义就是统一归纳多步行为。图4-10UML用例图模型元素(3)在学生选课流程中有两个主角,管理员和教师,先拖拽出2个主角符号到工作区,并分别命名。(4)在此例中有5个行为,录入学生信息、录入课程信息、登录、查看课程列表,选课。拖拽5个“用例”符号到工作区,并分别命名。此时的用例图如图4-11所示,包括2个角色5个用例。图4-11角色和用例(5)确定角色和行为之间
39、的关系。角色和行为之间不属于使用关系,也不属于扩展关系,是一般情况下的通信关系。将“通信”符号添加到工作区,并依次连接角色和用例,最后如图4-12所示。图4-12学生选课业务用例图业务流程图中要注意有些手工行为在实际程序中是不能实现的,但为了体现业务流程的完整性,一般还是在用例图中体现,此时要根据实际程序加以注释或说明。4.3.2类图实现静态模块结构的设计开发人员了解一个类的属性就是靠研究类图和业务流程。类图是设计人员根据业务流程和面向对象设计原则总结出来的相关属性的集合,便于将来代码的重用和维护。4.3.3类图与类图之间的关系虽然在设计类时,要坚持类与类之间低耦合的原则,但很多情况下,类于类
40、之间有相互调用或依赖的关系,所以为了让开发人员清晰地明白类和类之间的关系,设计人员应该有条理的设计好类图与类图之间的依赖关系。类与类之间的依赖关系在Visio中定义了以下几种。(1)Call:调用。某类中的方法可以调用其他类的方法,箭头指向被调用者。(2)Friend:友好。两个类是友元关系。(3)实例:某对象是某类的实例。(4)继承:某类是某类的子类,这个是比较常见的类的关系。课题五数据库设计数据是企业运作过程中不可缺少的重要部分,建立自己的数据资料库是提高企业整体竞争力的关键因素。对于程序而言,安全完整地保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发中重要的一个环节。一旦数据
41、设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。所以,为了更好地开发数据库,了解信息的来源以及信息的流向是头等大事。对于客户的整个操作流程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好的数据库打下基础。本章主要介绍如何收集客户的数据资料,并将其转化为程序需要的数据资源。5.1罗列数据信息在前面已经罗列出了用户的需求,这也正是数据库信息的来源。根据列表内容,可以提炼出以下数据信息。(1)需要管理学生信息:学生表。(2)需要管理教师信息:教师表。(3)需要管理课程信息:课程表。(4)需要管理选课信息:选课表。(5)需要管理院系信息:院系表。(6)需要管理管理员信息:管
42、理员表。很多初做设计的程序员容易犯一个错误:每个需求都做成一个独立的表。其实这是一个误区,在选择表时,需要遵守以下原则。(1)每个表中不能有重复的字段属性。(2)将相关数据合成到一个表中。(3)每个表都有一个主键,而其他属性对这个主键有依赖性。对于重复添加的字段属性,最好单独列表,如果教师信息中有职称这个字段属性,这个字段就是重复增加的。为了减少数据冗余,可以单独将城市拿出来做一个表。5.2根据数据信息构建表结构对于如何提取数据表字段,要遵守3个原则。(1)每个字段都是不可再分的最小数据单位。(2)非主键字段必须完全依赖于主键(3)如果两个表存在关联,必须有字段作为外键进行连接。表5-1Stu
43、dent(学生)表字段名数据类型备注stuIDvarchar(20)notnull学号stuPwdvarchar(20)notnull密码stuNamevarchar(10)notnull姓名stuDepartint系院号stuGradeint年级stuClassint班级表5-2Teacher(教师)表字段名数据类型备注teaIDvarchar(20)notnull教师编号teaPwdvarchar(20)notnull教师密码teaNamevarchar(10)notnull教师姓名teaDepartint系院号表5-3Cource(课程)表字段名数据类型备注courceIDvarchar
44、(20)notnull课程编号tealIDvarchar(20)notnull教师编号courceNamevarchar(100)notnull课程名称courceTimevarchar(20)上课时间courceAddressvarchar(50)上课地点courceInfotext课程简介表5-4Elect(选课)表字段名数据类型备注electIdintnotnull选课编号stuIDvarchar(20)notnull学生编号teaIDvarchar(20)notnull教师编号courceIDvarchar(20)notnull课程编号scoreint成绩表5-5Users(系统管理员
45、)表字段名数据类型备注adminNamevarchar(20)notnull管理员用户名adminPwdvarchar(20)管理员密码表5-6Depart(系院)表字段名数据类型备注departedintnotnull系院号departNamevarchar(100)系院名称5.3数据库构建工具PowerDesigner本项目的数据库采用SQLServer,它的功能很强大,可以完成所有与数据表相关的操作。因为其太强大,从而增加了复杂性,操作起来不容易上手,显示出来也不够直观。为了方便用户构建数据表,Sybase公司推出了PowerDesigner工具。5.3.1使用构建工具PowerDesi
46、gnerPowerDesigner是一种功能强大的数据库设计工具,其优点如下。(1)可以图形化地展现数据库的结构(2)可以方便地修改数据库和表结构(3)与数据库之间可以进行反向操作,既可以很方便的生成数据库,也可以将已有数据库的内容通过逆向工程显示在PowerDesigner中。综上所述,为了可以直观显示数据库的设计,并很好地体现数据库中各表之间的关系,采用PowerDesigner将使所有操作变得简单。5.3.2PowerDesigner的使用目前市场上通用的版本是PowerDesigner9.5,最新版本是PowerDesigner12。为了快速地掌握其应用,本项目所有的数据库设计都以比较容易上手的PowerDesigner9.5为例。PowerDesigner有4种模型文件。(1)概念数据模型(CDM):仅仅表示数据库的逻辑结构,与用什么软件没有关系,一般不用来实现的数据抽象表。(2)物理数据模型(PDM):具体表示表的结构和关系。(3)面向对象数据模型(OOM):用来设计类的一种模型,由于功能有限,并不通用。(4)业务程序模型(BPM):对任务的流程进行描述的模型,也不通用。这4种模型中,物理数据模型是目前数据库设计领域比较常用的一种模型。PowerDesigner的安装比较简单,不再介绍。下面学习使用PowerDesigner创建一个物理数据模型。(1)打开P