《学生成绩管理系统软件开发设计实训报告.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统软件开发设计实训报告.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数学与计算机学院实训报告课 程 名 称: 软件开发设计实训 课 程 代 码: 6014409 题 目: 学生成绩管理系统 年级/专业/班: 2011级软件工程 组 员 姓 名: 组 员 学 号: 312011080611XXX 开 始 时 间: 2013 年 10 月 16 日完 成 时 间: 2013 年 12 月 13 日课程设计成绩:技术水平与实际能力(50)说明书撰写质量(50)总 分(100)指导学生签名: 年 月 日目 录1 需求分析模型重构 41.1 业务需求分析41.2 非功能性需求分析62 业务分析模型62.1 业务主角62.2 业务用例分析72.3 业务用例场景分析72.4
2、业务用例实现82.5 业务用例完整的包图83概念分析模型83.1核心业务活动图83.2关键业务概念用例图83.3概念用例分析(活动图)93.4概念用例实现分析93.5 概念用例完整的包图94 系统分析模型104.1 系统用户分析104.2 系统用例分析104.3 系统用例实现分析104.4 分析类104.5 组件模型分析114.6 系统分析完整的包图125系统设计模型125.1软件架构/框架选择125.2基于架构的设计类126设计类优化136.1设计类优化结果136.2采用的设计模式说明137面向对象数据库分析设计 137.1概念数据模型137.2概念数据模型优化/调整137.3物理数据模型1
3、3总结14附录A 部分生成的SQL语句14附录B 部分生成的程序结构性代码141 需求分析模型重构 1.1 业务需求分析1.1.1.背景、业务概况学生成绩管理系统是学院组织开发的一个系统。在组长的分工下,我负责管理员管理学生信息这个模块。用户主要分两类:管理员和学生。管理员能够维护系统,也可对学生信息进行添加、删除、修改等操作;学生能够查询自己相关的信息。1.1.2业务目标通过对业务概况的了解和整理(业务目标既可以由客户提出也可以由开发方整理得出)得出该系统的业务目标如下:BO-1:为管理员管理学生信息提供自助化服务。BO-2:节省管理员的工作,提高效率。1.1.3涉众分析1.1.3.1 涉众
4、涉众(stakehoder)是指与要建设系统相关的一切人和事情。通过需求陈述分析,得出管理员管理学生信息系统的利益相关者(涉众)如图1.1以及涉众的信息如表1-2:图1.1涉众分析表1.1涉众概要信息编号名称说明期望SH001管理员系统的直接操作者,能管理学生的信息以及学生的成绩1、可以方便的进行各信息的录入。2、可以简单的对系统进行维护。SH002学生学生查询自己的信息以及对自己的个人信息进行管理1、 查询成绩简单2、 管理个人信息简单。1.1.3.2边界分析业务目标,得到系统边界。 系统边界的划分如图1.2所示。图1.2 边界定义1.2 非功能性需求分析1.2.1性能(PEformance
5、)需求PE-1:管理员可以对学生信息进行录入、删除、修改、查询。PE-2:管理员对系统进行维护1.2.2 安全性(SEcurity)需求SE-1:每条录入记录都需要有日志文件能够查询。SE-2:保证学生信息的安全性、完整性、一致性。2 业务分析模型2.1 业务主角 2.1.1 学生信息管理业务主角 对于学生信息管理模块来说,管理员是直接管理学生信息的涉众,学生也可以对自己的信息进行管理。所以通过分析,可以得到学生信息管理业务的主角。如图2.1所示: 图2.1学生信息管理业务主角2.2 业务用例分析2.2.1 学生信息管理业务用例管理员可以对学生的信息进行录入、删除、修改、查看。所以根据学生信息
6、管理业务分析,得到其用例如图2.3所示:图2.2 学生信息管理业务用例2.3 业务用例场景分析2.3.1 学生信息管理业务用例场景分析根据业务用例对学生信息管理业务用例场景分析得到时序图如图2.3所示:图2.3学生信息管理时序图由时序图生产协作图如图2.4所示:图2.4学生信息管理协作图2.4业务用例实现2.4.1 学生信息管理业务用例实现由上述学生信息管理业务用例和用例场景分析得到用例实现,如图2.5所示:图2.5用例实现2.5 业务用例完整的包图业务用例完整包图如图2.6所示:图2.6完整包图3概念分析模型3.1核心业务活动图管理员管理学生信息首先要确定好学生的入学信息及考试信息,由所选课
7、程决定所需添加的学生,对整个模块分析得到核心业务活动图如图3.1所示:图3.1核心业务活动图3.2关键业务概念用例图由核心业务分析得到关键业务,关键业务概念用例图如图3.2所示:3.2关键业务概念用例图3.3概念用例分析(活动图)3.3.1 管理员添加学生信息概念用例分析管理员可以对学生信息进行录入、删除、修改、查询。这里显示管理员录入信息的概念用例分析,如图3.3所示:图3.3添加学生信息用例分析3.3.1.1管理员添加学生信息概念用例场景分析(活动图)管理员通过选定课程对学生信息进行添加,得到概念用例场景分析的活动图,如图3.4所示:图3.4用例场景分析活动图3.4概念用例实现分析3.4.
8、1 管理员添加学生信息概念用例实现分析3.4.1.1 管理员添加学生信息概念用例实现分析(时序图)管理员添加学生信息概念用例实现时序图如图3.5所示:图3.5时序图3.4.1.2 管理员添加学生信息概念用例场景分析对象(类图)管理员添加学生信息概念用例场景分析对象类图如图3.6所示:图3.6用例场景分析对象3.5 概念用例完整的包图根据上述概念用例分析、概念场景分析、概念用例实现得到完整包图如图3.7所示:图3.7完整包图4 系统分析模型4.1 系统用户分析对系统进行分析,首先要对系统用户进行分析,对系统用户进行分析得到如图4.1所示:图4.1系统用户4.2 系统用例分析分析完系统用户就要接着
9、对系统用例进行分析。4.2.1 系统用例图对系统用例进行分析,得到系统用例图如图4.2所示:图4.2系统用例图4.2.2 系统用例图场景分析(活动图)根据系统用例图分析得到用例图场景,如图4.3所示:图4.3活动图4.3 系统用例实现分析4.3.1 系统用例实现用例图根据用例场景分析得到系统用例实现图,如图4.4所示:图4.4用例实现图4.3.2 用例实现场景分析(时序图)时序图如图4.5所示:图4.5时序图4.4 分析类将用例实现场景中的关键对象找出并加上已知的方法得到完整的分析类图。4.4.1 实体类得到实体类分析类图如图4.6所示:图4.6实体类4.4.2 控制类得到控制类分析类图如图4
10、.7所示:图4.7控制类4.4.3 边界类得到边界类分析类图如图4.8所示:图4.8边界类4.4.4各系统分析模型4.4.4.1 BusinessControl层分析模型得到BusinessControl层分析模型如图4.9所示:图4.9BusinessControl层分析模型4.4.4.2 Entity层分析模型得到Entity层分析模型如图4.10所示:图4.10Entity层实现4.4.4.3 Window层分析模型得到Window层分析模型如图4.11所示:图4.11Window层实现4.4.5各系统分析类图4.4.5.1 BusinessControl层分析类图得到BusinessC
11、ontrol层分析类图如图4.12所示:图4.12BusinessControl层类图4.4.5.2 Entity层分析类图得到Entity层分析类图如图4.13所示:图4.13Entity层分析类图4.4.5.3 Window层分析类图得到Window层分析模型如图4.14所示:图4.14Window层分析类图4.4.6 总分析类图由上述各图得到总分析类图如图4.15所示:图4.15总分析类图4.5 组件模型分析根据上述能够实现需求的类,得到如图4.16用例组件图:图4.16用例组件图4.6 系统分析完整的包图根据对系统完整的分析得到系统分析的完整包图如图4.17所示:图4.17系统分析完整
12、包图5系统设计模型5.1软件架构/框架选择5.1.1软件架构描述用包图描述软件架构。其中V采用可视窗体界面,实际上就是边界类,M实际上就是实体类,C就是前面控制类。因此该架构显然很清晰,再加入数据库控制,得到软件架构如图5.1所示:图5.1用包图描述软件架构5.1.2软件架构包图根据上述软件架构的描述,得到软件架构包图如图5.2所示:图5.2软件架构包图5.2基于架构的设计类从之前的实验中我们得到了“录入学生信息”分析模型,并得到了相应的分析类。进一步对这些分析类进行映射,得到设计类。5.2.1 Business 设计类 将设计类图结合软件架构分析类,映射出Business层设计类,如图5.3
13、所示:图5.3Business层设计类5.2.2 Window层设计类 得到Window层设计类如图5.4所示:图5.4Window层设计类5.2.3总体设计类对边界类、控制类进行映射得到总体设计类,如图5.5所示:图5.5总体设计类6设计类优化6.1设计类优化结果对设计类进行优化,得到如图6.1所示:图6.1设计类优化6.2采用的设计模式说明采用的是FactoryMethod模式进行。定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。7面向对象数据库分析设计 7.1概念数据模型得到概念数据模型,如图7.1所示:图7.1概念数据模型7
14、.2概念数据模型优化/调整优化后得到数据模型如图7.2所示:图7.2优化后模型7.3物理数据模型得到物理数据模型如图7.3所示:图7.3物理数据模型总结在本次软件开发设计实训中,我与小组队友共同开发一个学生成绩管理系统,我组要负责系统管理员管理学生信息这个模块。通过这次实训,我基本熟练地掌握了使用软件powerdesigner对软件系统进行有效的开发。在设计管理员管理学生信息这个模块之前,我们组五个组员通过初步的讨论,确定了业务概况和业务目标,以及组员的分工。我在设计这个模块时,根据实验指导书的知道,先对需求分析进行重构,从项目出发,进行涉众分析;从业务目标出发推导出边界定义;结合涉众以及边界
15、寻找边界外并且直接与边界所代表的系统交互,从而寻找出业务主角;继而再找出这些业务主角的业务需求,并从中获取业务用例。获取业务用例后,建立完整的业务模型,对业务用例编写业务用例场景,用UML中的活动图、时序图、协作图来表示业务用例场景,并书写用例描述。再初步生成分析类图。然后从业务用例构建概念模型,分析系统用例构建分析模型,接着推导并实现软件架构和框架、设计模型以及设计类。再对设计类进行优化,最后用powerdesigner进行自动生成数据库。通过此次实训,我也认识到了自己的许多不足,在实训过程中与组员沟通不足,使得该系统的需求考虑不完善。因为该系统业务主角较少,通过小组成员讨论便能很好找出业务
16、需求,并从中获取业务用例,所以在构建概念模型和分析系统用例构建分析模型过程中阻碍是较少的。在实现软件架构和框架时,由于我对其概念及其实现的方法模糊,实验结果不尽人意,在与组长与组员讨论分析后,我改进系统设计模型,重新获得实验结果。在建立设计模型与设计类优化过程中,我对数据访问层、Model层、业务逻辑层等概念理解不清,只能通过谭三老师的讲解依葫芦画瓢得出实验结果。最后,在面向对象数据库分析设计这一块,我平时训练不多,这也看出了我对powerdesigner软件的更高层功能的不熟练精通,不过我相信通过我更多的使用该软件与软件系统开发过程,我能更好的完成软件的开发设计。附录A 部分生成的SQL语句
17、if exists(select 1 from sys.sysforeignkey where role=FK_学生信息_GENERALIZ_学生) then alter table 学生信息 delete foreign key FK_学生信息_GENERALIZ_学生end if;drop index if exists 学生信息.Generalization_1_FK;drop table if exists 学生信息;/*=*/* Table: 学生信息 */*=*/create table 学生信息 ( );/*=*/* Index: Generalization_1_FK */*=
18、*/create index Generalization_1_FK on 学生信息 ();alter table 学生信息 add constraint FK_学生信息_GENERALIZ_学生 foreign key () references 学生 on update restrict on delete restrict;附录B 部分生成的程序结构性代码 * Module: SimpleApply.java * Author: Administrator * Purpose: Defines the Class SimpleApply */package 逻辑视图.04设计模型;imp
19、ort java.util.*;/* pdOid 5bb1d2b9-0a1c-47ed-bdb9-c61384089d0d */public class SimpleApply /* pdRoleInfo migr=no name=ApplyControl assc=association2 coll=java.util.Collection impl=java.util.HashSet mult=0.* */ public java.util.Collection applyControl; /* pdOid b2e39b41-6fd8-4de5-8bd7-7d600b987a55 */ p
20、ublic void submit() / TODO: implement /* pdOid f262ef12-7f1f-42ab-bc03-ba7df1c0fd60 */ public int save() / TODO: implement return 0; /* pdGenerated default getter */ public java.util.Collection getApplyControl() if (applyControl = null) applyControl = new java.util.HashSet(); return applyControl; /*
21、 pdGenerated default iterator getter */ public java.util.Iterator getIteratorApplyControl() if (applyControl = null) applyControl = new java.util.HashSet(); return applyControl.iterator(); /* pdGenerated default setter * param newApplyControl */ public void setApplyControl(java.util.Collection newAp
22、plyControl) removeAllApplyControl(); for (java.util.Iterator iter = newApplyControl.iterator(); iter.hasNext();) addApplyControl(ApplyControl)iter.next(); /* pdGenerated default add * param newApplyControl */ public void addApplyControl(ApplyControl newApplyControl) if (newApplyControl = null) retur
23、n; if (this.applyControl = null) this.applyControl = new java.util.HashSet(); if (!this.applyControl.contains(newApplyControl) this.applyControl.add(newApplyControl); /* pdGenerated default remove * param oldApplyControl */ public void removeApplyControl(ApplyControl oldApplyControl) if (oldApplyControl = null) return; if (this.applyControl != null) if (this.applyControl.contains(oldApplyControl) this.applyControl.remove(oldApplyControl); /* pdGenerated default removeAll */ public void removeAllApplyControl() if (applyControl != null) applyControl.clear();
限制150内