软件开发案例分析主讲:蔡靖7—314B课程目的学习语言的目的是为了开发项目/产品,很多初学者在学习技术时很顺利,但要真正开发起项目,往往会感到迷茫和手足无措课程目标:温故而知新——综合运用过去所学知识(编程语言、数据库、软件工程、数据结构…)增强实践能力提高自学新知识、新技术能力提高团队沟通、协作能力软件的生命周期软件生命周期软件定义软件开发软件维护问题定义可行性研究需求分析总体设计详细设计软件维护编码与单元测试综合测试逆向工程软件的逆向工程:分析程序以便在更高的抽象层次上创建出程序的某种表示。逆向工程是一个由源代码恢复设计结果的过程。软件案例分析:采用逆向工程的手段,由项目的源代码,分析、恢复出软件项目的需求、设计文档,并于此过程中学习、巩固、提高软件开发的技术、技能、技巧。课程安排(32学时=16+16)课件链接:案例代码:Javaanli27661-6.rar第一周第二周第四周星期六上课(4)上课(4)星期日上课(8)实验(8)7-219实验(8)7-219参考书目《JAVA项目案例分析》,明日科技,清华大学出版社涉及的相关技术:JAVASwingSSH框架SpringStrutsHibernateSQLServer/MySql成绩评定成绩评定=考勤*30%+项目分析*70%考勤缺勤1次,扣10分缺勤2次及以上,取消考试资格(零分计)项目分析(截止日期:2017-10-31)项目来源:自己感兴趣的项目,但代码量必须合格,并事先经过教师批准1~3人一组,每人角色分工可以不同,每人的工作成果分清楚分析结果:需求分析文档总体设计文档详细设计文档项目一、超市管理系统mr01采用技术语言:JAVA数据库:SQLServerUI:Swing(用于开发Java应用程序用户界面的开发工具包)UI(服务)逻辑数据应用程序SwingSQLServerJAVA问题的定义及可行性分析目的用最小的代价在尽可能短的时间内确定问题能否解决三方面考虑技术可行性经济可行性操作可行性成本一般占总成本的5~10%需求分析信息来源用户沟通用户往往不能准确、全面地提出系统需求设计开发人员可按信息系统建设的思路来引导用户必要时可先按照用户最初的描述,建立系统原型设计开发人员以往类似系统经验(文档)同行业类似系统的经验通过操作使用类似软件系统,整理最初的需求文档,并在此基础上,与用户沟通、改进需求需求分析——超市管理系统需求分析登录功能主界面1.菜单2.工具3.功能面板需求分析——业务流程订单供货商商品采购入库信息到货发货出库信息销售商品销售商需求分析——实体登录管理员信息运营管理订单(记录)信息入库(记录)信息出库(记录)信息人员管理部门信息(部门+负责人)员工信息(基本信息+联系方式+部门信息+职务信息)基本档案供货商信息销售商信息商品信息仓库信息需求分析——实体联系图运营管理订单信息入库信息仓库信息出库信息买存取1nn1n1供货商信息销售商信息商品信息卖1n需求分析——实体联系图公司管理基本信息部门信息职位信息属于m1联系信息拥有1拥有11需求分析——功能模块超市管理系统基本档案管理采购订货管理仓库入库管理仓库出库管理人员管理部门管理供货商管理销售商管理货品档案管理仓库管理登录需求分析——需求列表功能模块子模块功能描述基本档案管理供货商管理添加添加供货商信息删除删除供货商信息查询根据供货商名称或地址,查询供货商信息修改修改供货商信息销售商管理添加添加销售商信息删除删除销售商信息查询根据销售商名称或地址,查询销售商信息修改修改销售商信息货品档案管理添加添加货品信息删除删除货品信息查询根据货品名称,查询货品信息修改修改货品信息仓库管理添加添加仓库信息删除删除仓库信息查询根据仓库编号或者管理员,查询仓库信息修改修改仓库信息需求分析——需求列表功能模块功能描述采购订货添加订单添加一条新订单(及相关信息)删除订单删除所选择的订单查询订单根据条件(客户、订单号、交换日期)查询订单修改订单修改所选择的订单由订单入库由订单表入库,并改变订单状态(由“未入库”改为“已经入库”状态)商品入库添加入库信息添加一条入库信息——选择一条已有订单的(全部或部分)商品,将其转移至指定的仓库中删除入库信息删除所选择的入库信息查询入库信息根据条件(订单号、入库时间)查询入库信息修改入库信息修改所选择的入库信息商品出库添加出库信息添加一条出库信息——选择仓库及该仓库中已有的商品,以及重量、时间等信息,同时更新剩余商品的数量删除出库信息删除所选择的出库信息查询出库信息根据条件(仓库号、出库时间)查询出库信息修改出库信息修改所选择的出库信息需求分析——需求列表功能模块功能描述人员管理添加新员工添加一条新员工信息——选择部门、职位,并填写姓名、年龄、性别等信息删除员工删除所选择的员工信息查询员工根据部门,查询该部门某员工信息(基本信息,及详细的联系方式)修改员工修改所选择的员工信息部门管理添加新部门添加一条新部门信息——指定部门名称及负责人删除部门删除所选择的部门信息查询部门信息根据条件(部门名称、负责人)查询部门信息修改部门信息修改所选择的部门信息权限管理登录管理员用户、密码登录需求分析——需求总结超市管理系统商品管理公司管理买卖订单入库出库人员管理部门管理登录基本档案需求分析——需求总结实体登录管理员信息运营管理订单(记录)信息入库(记录)信息出库(记录)信息人员管理部门信息员工信息(基本信息+联系方式+职务信息)基本档案供货商信息销售商信息商品信息仓库信息需求分析——实体联系图运营管理、基本档案订单信息入库信息仓库信息出库信息买存取1nn1n1供货商信息销售商信息商品信息卖1nn11nn1需求分析——需求总结实体联系图——公司管理基本信息部门信息职位信息属于m1联系信息拥有1拥有11总体设计——数据库设计总体设计——数据库设计功能模块表实体登录tb_users管理员信息人员管理tb_basicMessage基本信息tb_contact联系方式tb_headship职务信息部门管理tb_dept部门信息运营管理tb_stock订单信息tb_joinDepot入库信息tb_outDepot出库信息基本档案tb_provide供货商信息tb_sell销售商信息tb_ware货品信息tb_depot仓库信息总体设计——数据库设计管理员信息表(tb_users)列名类型允许空描述idint不能为空主键userNamevarchar(20)用户名passWordvarchar(20)密码总体设计——数据库设计基本档案——供货商信息表(tb_provide)列名类型允许空描述idint不能为空主键cNamevarchar(20)不能为空供货商名称addressvarchar(40)地址linkmanvarchar(50)联系人linkPhonevarchar(20)电话faxesvarchar(20)传真postNumvarchar(10)邮编bankNumvarchar(30)银行账号netAddressvarchar(30)网址emaillAddressvarchar(50)电子邮件remarkvarchar(200)备注总体设计——数据库设计基本档案——销售商信息表(tb_sell)列名类型允许空描述idint不能为空主键sellNamevarchar(50)销售商名称addressvarchar(50)地址linkmanvarchar(50)联系人linkPhonevarchar(50)联系地址faxNumvarchar(50)传真postNumvarchar(50)邮编bankNumvarchar(50)银行账号netAddressvarchar(50)网址emaillAddressvarchar(50)电子邮件remarkvarchar(50)备注总体设计——数据库设计基本档案——货品档案信息表(tb_ware)列名类型允许空描述idint不能为空主键wareNamevarchar(50)货品名称warBewritevarchar(50)货品描述specvarchar(50)单位stockPricefloat进货价retailPricefloat零售价associatorPricefloat会员价总体设计——数据库设计基本档案——仓库管理信息表(tb_depot)列名类型允许空描述idint不能为空主键managevarchar(50)管理员functionalvarchar(200)描述总体设计——数据库设计采购订货信息表(tb_stock)列名类型允许空描述idint不能为空主键sNamevarchar(50)客户orderIdvarchar(50)订单号consignmentDatevarchar(50)交货日期baleNamevarchar(50)商品名countvarchar(50)数量moneyfloat金额总体设计——数据库设计仓库入库信息表(tb_joinDepot)列名类型允许空描述idint不能为空主键oidvarchar(50)订单号dIdint仓库编号wareNamevarchar(40)货品名称joinTimevarchar(50)入库时间weightfloat重量remarkvarchar(200)备注总体设计——数据库设计仓库出库信息表(tb_outDepot)列名类型允许空描述idint不能为空主键didint仓库编号wNamevarchar(50)货品名称outDatevarchar(50)出库时间wightfloat重量remarkvarchar(500)备注总体设计——数据库设计部门信息表(tb_dept)职位信息表(tb_headship)列名类型允许空描述idint不能为空主键dNamevarchar(50)部门名称principalvarchar(50)负责人bewritevarchar(500)(部门)描述列名类型允许空描述idint不能为空主键headshipNamevarchar(50)(职位)描述总体设计——数据库设计员工信息表基本信息表(tb_basicMessage)联系方式信息表(tb_contact)列名类型允许空描述idint不能为空主键namevarchar(10)姓名ageint年龄sexvarchar(50)性别deptint部门headshipint职务列名类型允许空描述idint不能为空主键hidint外键,与员工基本信息表主键对应contactvarchar(20)手机officePhonevarchar(30)办公室电话faxvarchar(20)不能为空传真emailvarchar(50)电子邮件faddressvarchar(50)家庭住址总体设计——界面设计Swing简介——百度百科Swing是一个用于开发Java应用程序用户界面的开发工具包。以抽象窗口工具包(AWT)为基础,使跨平台应用程序可以使用任何可插拔的外观风格。AWT(AbstractWindowToolkit):提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面总体设计——界面设计Swing顶级容器图形界面至少要有一个顶级Swing容器顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持常用的顶级容器:JFrame(框架):表示主程序窗口JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口JApplet(小