实验二 结构化分析与设计
一.作业信息
| 这个作业属于那个课程 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/ |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11548 |
| 学号 | 3180701341 |
| 作业目标 | 参考一个熟悉的系统绘制数据流图和软件结构图 |
二.实验内容
(1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;
(2)绘制系统的分层数据流图,并给出数据字典;
(3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;
(4)为关键模块进行详细设计,如绘制关键模块的流程图;
(5)实现系统部分功能并测试。
三.实验步骤
(1)复习结构化的分析与设计方法的主要过程;
结构化分析:
①分析当前的情况,做出反映当前物理模型的DFD;
②推导出等价的逻辑模型的DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约。
结构化设计:
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口。
(2)讨论系统存在的用户角色、工作流等;
携程网机票预订
存在的用户角色:用户、管理员
工作流:用户(登录、查询航班、购票、退票、改签)
管理员(添加航班信息、查询航班信息、修改航班信息、删除航班信息)
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
旅客订票流程图:

旅客取票图:

数据词典:

(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;

(5)选择对应的结构化程序设计语言,实现并测试部分功能模
机票预定主要代码
<tr>
<td colspan="6">您目前订有如下航班:</td>
<tr align="center">
立即体验>>
<th>
序号</th><th>城市</th><th>日期</th><th>价格</th><th>舱位</th><th>删除此订单</th><%
String sql="";ResultSet rs=null;
for (int i=O; i<id.length; i++)
out.println("<tr align='center'>");out.println("<td>"+(i+1)+"</td>");
sql="select* from ticket where ticketid="+id[i];
rs=conn.executeQuery(sql);
if(rs.next())
out.println("<td>"+rs.getString("city")+"</td>");out.println("<td>"+rs.getString("date")+"</td>");out.println("<td>"+rs.getString("time")+"</td>");out.println("<td>"+rs.getString("price")+"</td>");
out.println("<td><a href='dealcart.jsp?dealid="+id[i]+"&act=remove'>从订单中删除</a></td>");
}
rs.close(;
%>
<tr align="center">
<td colspan="6">
<a href="buy.jsp">立即预订</a> <a href="list.jsp">返回</a>
</td>
<%
}
%>
用户确定航班信息的界面
<tr>
<th align="center" background="images/bg04.gif" height="26">预订信息确认</th><tr>
<td>您预订的机票如下:<ol>
<%
ResultSet rs=null;String sql="";float sum=0.Of;
String[] id = cart.getItems();
for (int i=O; i<id.length; i++){
sql="select* from ticket where ticketid="+id[i];rs=conn.executeQuery(sql);
if(rs.next())
float p=rs.getFloat("price");sum+=p;
out.println("<li>");
out.println(rs.getString("city"));
out.println("["+rs.getString("date")+"]");out.println("---"+p+" 元");
)
rs.close();
out.println("<p>共计: "+sum+" 元");
%>
</ol></td>
<tr align="center"><td>
<a href="javaScript:openWin(<%=sum%>)">确定</a> <a href="listorder. jsp">返回</a>
</td>
航班信息的修改界面
String city="";String date="";String time="";String price="";String berth="";String type="";
String updateid="O";ResultSet rs=null;
request.setCharacterEncoding("gb2312");if(request.getParameter("updateid")!=null)updateid=request.getParameter("updateid");if(request.getParameter("city")!=null)
city=request.getParameter("city");
if(request.getParameter("date")!=null&& !request.getParameter("date").equals("">)date=request.getParameter("date");
if(request.getParameter("time")!=null&&!request.getParameter("time").equals(""time=request.getParameter("time");
if(request.getParameter("price")!=null&& !request.getParameter("price").equals("">)price=request.getParameter("price");
if(request.getParameter("berth")!=null&& !request.getParameter("berth").equals("">)berth=request.getParameter("berth");
if(request.getParameter("type")!=null)type=request.getParameter("type");
String
sql="update
ticket
set
city=""+-city+ ",date=""+date+",time="+time+",price="+price+",berth=""+berth+",type="+type+" where ticketid="+updateid;
conn.executeUpdate(sql);
conn.close();
response.sendRedirect("list.jsp");
四.思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
结构化系统分析方法是采用自项向下,由外到内,逐层分解"的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。
而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。
两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。
(3)对数据流图进行审查有何意义?
1、便于用户表达功能需求和数据需求及其联系;
2、便于两类人员共同理解现行系统和规划系统的框架;
3、清晰表达数据流的情况;
4、有利于系统建模.
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
议题:如何改进数据流图
结果:
先全局后局部,先整体后细节,先抽象后具体,分为顶层、中间层、底层。
顶层图说明了系统的边界,及系统的输入和输出数据流,顶层图只有一张。
底层图由一些不能再分解的加工组成,称为基本加工。
议题:机票预订系统的可行性分析
结果:
1.技术可行性:
这些年来,计算机技术的发展异常迅猛,而绝大多数的企业和单位,都已经把计算机作为信息和数据处理、保存和管理的重要工具。
JSP技术使用Java编程语言编写类XML的 tags 和 scriptlets,来封闭产生动态网页的处理逻辑。Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java 技术的简单易用,完全的面向对象,具有平台无关性县城安全可行,主要面向因特网的所有特点。同时,微软公司开发的Microsoft Access 2003,为数据库的开发和管理带来了极大的方便。
2.经济可行性:
一方面,对于新系统的开发和研究,不需要花费更多的费用,而且对于人员的培训,不同样不需要花费很多;另一方面,航空公司的原有服务器和计算机系统,同样可以用来使用,不需要更新系统。
3.操作可行性:
对于用Java开发的本系统,通过简单的学习就可以熟练操作,同时,对于票务的管理,也同样因为本系统的高效性、及时性和方便性而易于管理。
通过以上的分析,航空公司机票预定系统在经济上、技术上、操作上都是可行的。
4.psp表格
| psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
|---|---|---|---|
| Planning | 计划 | 30 | 60 |
| Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 6 | 6 |
| Development | 开发 | 120 | 120 |
| Analysis | 需求分析(包括学习新技术) | 10 | 10 |
| Design Spec | 生成设计文档 | 20 | 20 |
| Design Review | 设计复审 | 5 | 10 |
| Coding Standard | 代码规范 | 5 | 8 |
| Design | 具体设计 | 15 | 22 |
| Coding | 具体编码 | 40 | 35 |
| Code Review | 代码复审 | 5 | 4 |
| Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 |
| Reporting | 报告 | 10 | 10 |
| Test Report | 测试报告 | 2 | 3 |
| Size Measurement | 计算工作量 | 3 | 3 |
| Postmortem & Process improvement Plan | 事后总结,并提出过程改进计划 | 4 | 4 |

浙公网安备 33010602011771号