第一篇:系统软件设计的铁路运输论文
1企业铁路运输概述
此处以某石化企业作为说明,这个企业的铁路作业地点的组成部分为工业站、装卸站以及化纤工作区。其中,工作站包含了24个股道,装卸站则有25个,化纤工作区有8个。负责运输生产部门由运输轻油以及机务等几个部分组成,负责的主要内容为货车的接送,装货、卸货、清洗机车以及车的调度等。这几个部门都有共同的特点,那就是都是负责有关车辆的调度和货物装卸,因而对于车的本身信息的一致性和协调性具有很高的要求。这个企业内部设立两套衡计量系统,主要针对轨道展开运作,其位置为工作站以及场内作业区之间,负责二者之间的联系,轨道衡可以对车的重量信息进行测定,然后将其传送到生产调度管理系统之中。这个企业在制定运输计划的时候需要对生产和运输进行综合考量,侧重于对规划内容和作业的调控。将实时的车辆信息进行收集,让车的调度工作更加体现出智能化水平,使整个工作具有安全性,提高作业进展效率,然后将所得的信息传送到其它部门,实现信息的共享,提高配合的积极性和协调性,是整个企业的运作效率提高。
2系统功能设定
2.1用户和权限方面
系统中必然存有大量的客户信息,它们呈现出繁杂混乱的状况,因此必须对其进行整理。企业中的部门类别很多,其功能也各有不同,企业必须据此对系统的功能进行划分,将客户也相应的进行分类,确定其服务责任归属于哪个部门,并开发出相应的功能模块提供给部门使用。
2.2车辆接发放面
当车辆到达目的地之后,系统会对车次的编号信息进行查询,然后进行辨别,此时就是车辆信息在系统中开始阶段。由于车次较多,为了避免发生对车次信息进行混淆判别的行为,还要在系统识别之后进行人工识别,只有在校对人员结束核实之后才能将信息输入数据库。
2.3实时车辆信息控制
当车进入现场之后,就会因为位移和作业变化情况而产生一些信息上的变动,这些信息的维护工作都要依据系统操作人员的操作特点来进行,而且对于发生变化的所有信息细节都要记录并保存,这样做有利于信息的查询和报表的统计。
2.4生产作业方面
围绕运输和生产计划展开工作的过程中,调度中心需要下发装货、卸货以及车辆清洗计划,负责各个工作环节的部门需要在任务完成之后对现实情况进行客观记录,转换成信息反馈给系统。在这个过程中,会因为工作内容的繁多而产生大量的工作单。
2.5调车作业方面
调度中心在车辆进行装货或者卸货的过程中,需要对车辆的位置安排以及移动情况作出安排。为了保证工作顺畅进行,调查人员会制定规划,等到规划下达以后传送到信号楼,值班人员对内容进行审核并确认通过之后,会将其发送到无线调查系统,然后其将有关数据直接发送到机车当中。
3系统结构安排
系统设计需要C/S和B/S进行交叉融合,其中的C/S负责业务逻辑分析,B/S结构负责对信息的维护和信息检索工作。整个系统可以分为4个层级。核心层级应该由数据库和服务器共同组成,这个层级主要负责业务的信息存储以及读取情况、最关键业务的逻辑和C/S与服务器之间的信息传递。WEB服务器单独成为一个层级,负责B/S终端对数据库进行查阅的逻辑以及核心方面的逻辑。所有调度站点和车间方面共同连接成系统的逻辑层级,负责的是与其有关的业务逻辑。基础的层级有车站、无线调车以及车辆信息判定系统共同连成,负责整个过程的基础数据处理。
4软件设计
4.1客户端
在客户端的设计过程中,上层设计要着重于界面,还要兼顾其它弹出的控件设计。中间的设计层主要是逻辑部件,这个部分需要用到的运算相较于服务器来说是简单的,但是逻辑层承担的任务较多,需要涵盖用户传送以及接收部件、浏览部件等之间的信息传递。
4.2服务器软件
这个部分的软件与客户端有很多相似之处,但是这个终端软件与客户的接触不多,因此可以将UI层采取清除处理。这个部分的逻辑问题比较难解,因为它需要对各种类型的客户端的浏览以及操作进行管理。这个部分的设计结构与客户端基本一致,上层设计就是对软件的窗口和系统进行联系处理,中间层级也是几个部件之间的逻辑处理,下部层级处理数据浏览,对其存取进行管理。
4.3WEB服务器
这个部分主要设计三个功能模块,涉及岗位权限管理、搜索等。其表示层主要负责给出界面,与用户之间进行的所有互动,可以根据用户的需要显示出相应的窗口,为他们提供方便的服务。业务的逻辑层面包含了信息验证、业务安排等,这个层级是最为复杂,也是最为重要的一环。
5结论
我国铁路的信息化建设过程不断推进,虽然取得诸多成果,但也存在一些急需解决的问题。在设计与其相关的调度管理系统的过程中必须以现实为依据,设计出符合企业特点的系统。本文分析对企业铁路运输进行概述,分析了企业运输调度管理系统在功能方面的设定,对整个系统的结构进行安排,最后描述了系统软件的设计。
作者:王静 单位:兖矿集团铁路运输处
第二篇:交流电动机调速系统软件设计-本科论文(精)
XXX大学本科毕业设计(论文电机交流调速软件设计 学生姓名: 学生学号: 院(系: 年级专业: 指导教师:教授 助理指导教师:副教授 二〇一一年六月
Xxx大学本科毕业设计(论文摘要 摘要
本文主要介绍基于意法公司STM32处理器的三相交流异步电动机调速系统的软件设计。详细阐述异步电动机矢量控制系统和电压空间矢量PWM(SVPWM调制技术原理及软件实现。使用IAR公司的EWARM开发环境进行C语言程序开发,同时嵌入μcos-ii实时操作系统,以提高系统的实时性。然后通过MATLAB/Simulink 软件进行仿真验证。实验及仿真结果表明,所设计的三相交流异步电动机调速系统具有转矩脉动小,输出电流波形好,系统响应速度快等优点。
关键词三相异步电动机,矢量控制,SVPWM,STM32,μcos-ii实时操作系统,MATLAB仿真
本科毕业设计(论文 ABSTRACT 目录 绪论 矢量控制的基本原理 电压空间矢量PWM(SVPWM的基本原理 4 STM32简介 μcos-ii实时操作系统简介 基于STM32的μcos-ii实时操作系统移植 7 MATLAB/Simulink仿真软件简介 8 调速系统软件实现 9 调速系统仿真模型及仿真 1 绪论
当前,三相交流异步电动机已广泛应用于现代工业及相关领域,其调速系统显然成为应用的关键,而调速系统的实现有很多种方式。20世纪70年代德国学者Blaschke等人提出了矢量控制方法。这种控制方法就是采用矢量变换使交流异步电机定子电流励磁分量和转矩分量之间实现解耦,交流异步电动机的磁通和转矩分别进行独立控制,从而使交流异步电动机变频调速系统具有了直流调速系统的优点。因此,近几年来得到相当广泛的应用。
矢量控制采用脉宽调制(PWM技术控制输出电压,PWM技术主要有正弦PWM(SPWM、消除指定次数谐波的PWM(SHEPWM、电流滞环跟踪PWM(CHBPWM、电压空间矢量PWM(SVPWM等控制技术。其中经典的SPWM控制主要着眼于使变压变频器的输出电压尽量接近正弦波,并未顾及输出电流的波形。而电流滞环跟踪控制则直接控制输出电流,使之在正弦波附近变化,这就比只要求正弦电压前进了一步。然而交流电动机需要输入三相正弦电流的最终目标是在电
动机空间形成圆形旋转磁场,从而产生恒定的电磁转矩,这正是电压空间矢量PWM(SVPWM控制技术的控制目标。如此,SVPWM控制技术具有系统逆变器直流端母线电压利用率高、开关损耗小、电动机转矩波动小等优越性能,应用更为广泛。
本文详细阐述异步电动机矢量控制系统和电压空间矢量PWM(SVPWM调制技术原理及基于意法公司STM32处理器的软件实现,同时嵌入μcos-ii实时操作系统,以提高系统的实时性,然后通过MATLAB/Simulink软件进行仿真验证。实验及仿真结果表明,该设计的三相交流异步电动机调速系统具有转矩脉动小,输出电流波形好,系统响应速度快等优点。矢量控制的基本原理 2.1矢量控制的基本思路
通过坐标变换,使异步电动机等效成直流电动机,模仿直流电动机的控制策略,得到直流电动机的控制量,然后经过相应的坐标反变换,就能够控制异步电动机。即通过坐标变换实现的控制系统就叫作矢量控制系统(VC 系统。基结构框图如图2-1。
2.2坐标变换 2.2.1坐标变换引出
由于异步电动机的动态数学模型复杂,即是一个多变量(多输入输出,并且电压(电流、磁通、转速、频率之间相互影响的高阶、强耦合、非线性系统,因此,要分析和求解这样的数学模型所列的方程显然是十分困难的。在实际应用中必须设法予以简化,而简化的基本方法就是坐标变换。
2.2.2坐标变换的基本思路
坐标变换的基本思路是能把异步电动机的物理模型等效的变换为类似直流电动机的模式,所依据的原则是:在不同的坐标下所产生的磁动势完全一样。
首先看看直流电动机的物理模型,如图2-1中所示。图中F 为励磁绕组,A 为电枢绕组,其中F 在定子上,A 在转子上。这里把F 的轴线称作d 轴,主磁通Ф的方向就是沿着d 轴的方向;A 的轴线则称为q 轴,由于换向器电刷的作用,电刷两侧每条支路中导线的电流方向总是相同的,因此,电枢磁动势的轴线始终被电刷限定在q 轴位置上,其效果好象一个在q 轴上静止的绕组一样,即电枢绕组。由此可描述直流电动机的物理模型是建立在两个相互垂直的坐标系上的,其中d 轴励磁绕组A 的励磁电流a i 决定主磁通Ф,而q 轴电枢绕组F 的电枢电流f i 在主磁通Ф下产生电磁转矩,与主磁通Ф无关。
在交流电动机三相对称的静止绕组A、B、C 中,通以三相平衡的正弦电流A i ,B i ,C i 时,所产生的合成磁动势是旋转磁动势F ,它在空间呈正弦分布,以同步转速 1 顺着 A-B-C 的相序旋转。其物理模型如图2-2(a 所示。
依据坐标变换的原则,要建立与直流电动机的物理模型等效的物理模型,可由下面的方法进行坐标变换:一是将三相静止坐标系转换为两相静止坐标系(3/2变换,二是将两相静止坐标系转换为两相旋转坐标系(3s/2r 变换,如图2-2。如
此得到与直流电动机的物理模型的等效的坐标系。2.2.3坐标变换之三相二相变换(2s/2r 变换
2s/2r 变换即二相静止坐标系到两相旋转坐标系的变换,α、β轴为静止的, d,q 轴是以转速 1ω旋转的,α轴与d 轴的夹角为ϕ,根据文献[8]知,(式2-4 ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---=⎥⎦⎤⎢⎣⎡C B A β232302121132αi i i i i
⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---=2323021211322/3C ⎥⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡---=2321232110322/3C ⎥⎦ ⎤⎢⎣⎡=⎥⎦
⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡q d s 2/r 2q d βαcos sin sin cos i i C i i i i ϕϕϕϕ 则两相旋转坐标系到二相静止坐标系的变换的变换阵为,(式2-5 由(式2-4两边左乘以变换阵的逆矩阵,可得(式2-6 则二相静止坐标系到两相旋转坐标系变换的变换阵为,(式2-7 2.3异步电动机在两相同步旋转坐标上的数学模型 2.3.1磁链方程
在dq 坐标系的磁链方程为,(式2-8 其中, —— dq 坐标系定子与转子同轴等效绕组间的互感;
—— dq 坐标系定子等效两相绕组的自感;——dq 坐标系转子等效两相绕组的自感;sd ψ、sq ψ、rd ψ、rq ψ分别表示d、q 轴上定子磁链,d、q 轴上转子磁 链;⎥⎦⎤⎢⎣⎡-=ϕϕϕϕcos sin sin cos s 2/r 2C ⎥⎦
⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡βαq d cos sin sin cos i i i i ϕϕϕϕ⎥⎦⎤⎢⎣⎡-=ϕϕϕϕcos sin sin cos r 2/s 2C ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡rq rd sq sd r m r m m s m s rq rd sq sd 00000000i i i i L L L L L L L L ψψψψr m r l L L L +=ms m 23L L =s m s l L L L += sd i、sq i、rd i、rq i 分别表示d、q 轴方向定子绕组电流,d、q 轴方向转子绕组电流;2.3.2电压方程
在dq 坐标系的电压方程为,(式2-9 其中, s R 为转子内电阻,r R 为定子内电阻;1ω为同步角转速,其等于定子频率;s ω为转差,ωωω-=1s ,ω为转子转速;sd u、sq u、rd u、rq u 分别表示d、q 轴方向定子绕组电压,d、q 轴方向转子绕组电压。
2.3.3转矩与运动方程 在dq 坐标系的电转矩方程为,(式2-10 运动方程为,(式2-11 2.3.4异步电动机在两相同步旋转坐标上的状态方程 由于鼠笼型转子内部是短路的,故有 rd u = rq u = 0 ,由代数变换可知,其状 态方程,即s r i--ψω状态方程, ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+-+-+--+=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡rq rd sq sd r r r s m m s r s r r m 1m m m 1s s s 1m 1m s 1s s rq rd sq sd i i i i p L R L p L L L p L R L p L p L L p L R L L p L L p L R u u u u ωωωωωωωω(rq sd rd sq m p e i i i i L n T-=t n J T T d d p L e ω+=(式2-12(式2-13(式2-14(式2-15(式2-16 其中, ——电机漏磁系数;——转子电磁时间常数。2.4按转子磁链定向的矢量控制 2.4.1按转子定向的旋转坐标系
现令d 轴沿着转子总磁链矢量方向,并称之为M 轴,而q 轴再逆时针转90°,即垂直于转子总磁链矢量,称之为T 轴。即有
r rm rd ψψψ==, 0==rt rq ψψ(式2-17 2.4.2按转子定向的旋转坐标系的状态方程 转矩方程为(式2-18 L p rq sd rd sq r m 2p(d d T J n i i JL L n t--=ψψωsd
r m rq 1rd r rd(1d d i T L T t +-+-=ψωωψψsq r m rd 1rq r rq(1d d i T L T t +---=ψωωψψs sd sq 1sd 2r s 2m r 2r s rq r s m rd r r s m sd d d L u i i L L L R L R L L L T L L L t i σωσωψσψσ+++-+=s sq sd 1sq 2r s 2m r 2r s rd r s m rd r r s m sq d d L u i i L L L R L R L L L T L L L t i σωσωψσψσ+-+--=r r r R L T =r s 2m 1L L L-=σr st r m p e ψi L L n T = 转差方程为(式2-19 d、q 解耦方程(式2-19 2.4.3按转子磁链模型(计算 ϕ 按转子磁链模型如下图图2-3, 2.4.4按转子磁链定向的矢量控制 矢量控制的结构框图如下图2-4,r r st m s 1ψωωωT i L ==-sm r m r 1i p T L +=ψ 电压空间矢量PWM(SVPWM的基本原理 4 STM32简介
4.1基于CORTEX-M3内核的STM32 CORTEX-M3是ARM公司最新推出的基于ARM v7体系架构的处理器核,具有高性能、低成本、低功耗的特点,专门为嵌入式应用领域设计。ARM v7架构采用了Thumb.2技术。保持了对现存ARM解决方案完整的代码兼容性,比单纯 ARM代码少使用3l%的内存,减少了系统开销,同时能够比Thumb技术高出38%的性能。在中断处理方面,CORTEX-M3集成了嵌套向量中断控制器 NVIC。NVIC可以配置 1~ 240 个带有256个优先级、8级抢占优先权的物理中断。同时,抢占(Pre-eruption、尾
链(Tail-chaining、迟到技术(Late-arriving的使用,大大缩短了异常事件的响应事件。CORTEX-M3异常处理过程中由硬件自动保存和恢复处理器状态,进一步缩短了中断响应时间,降低了软件设计的复杂性。
STM32是意法公司基于CORTEX-M3内核的一款高性能单片机,在具有与其它单片机相同功能的同时,在电机控制方面尤为突出,可产生高精度的可控6路PWM 波,其可设置死区时间与故障输出保护,并且设有正交编码器速度反馈接口,实现高精度速度检测。并且意法公司针对交流感应电动机还专门设计了应用程序库,方便使用者二次开发。ARM是目前嵌入式领域应用最广泛的 R I S C微处理器结构,它以低成本、低功耗、高性能等优点占据了嵌入式系统应用领域的领先地位。
C o r t e x-M3内核是 A R M新型 V 7架构系列的微控制器版本,广泛应用于企业、汽车系统、家庭网络和无线技术领域,特别在电机数字控制领域的性能尤为突出。
4.2STM32的高级定时器 4.2.1高级定时器的结构图 参考文献[11],其结构如下图4-1, 4.2.2高精度PWM产生
时钟可为APB总线频率的2倍,最大72MHz,可提供13.8ns 定时精度。有边沿或中心对称模式,方便PWM波的结构调整。在更新率倍频模式,中心对称模式下无精度损失,每个PWM周期可产生两次中断或DMA连续传输。
4.2.2高精度PWM管理
可编程的死区产生是其最大的特点,由8位寄存器控制死区时间,在时钟为
72MHz时13.8ns 最大精度(从0 到14µs, 非线性。有专门的故障停机输入控制,由关闭6路PWM输出且发出中断请求来实现,且异步操作(无须时钟同步,更适合实时控制。
4.3STM32的速度检测
STM32可直接与增量式正交编码器相连而无需外部逻辑电路,其中正交编码器的第三个输出口,可连至外部中断口来触发定时器的计数器复位。当自动重载寄存器的值配置为正交编码器每转产生的计数脉冲时,则计数器的值直接为转子的角度/位置,非常方便速度检测。
4.4STM32的ADC ADC转换速度可达1MHZ,精度为达12位,采样时间可编程(1.5-239.5个时钟周期,最小采样时间达107ns,满足高性能异步电动机调速的采样频率要求。有多通道基于定时器的扫描采样功能,且每个ADC通道可被来自定时器的6个事件触发,或由外部事件和软件触发,由此可将ADC与定时器并联控制,得到更好的调速性能。μcos-ii实时操作系统简介
µC/OS-II是著名的源代码公开的实时内核,是一个完整的,易移植、易固化、易裁剪的占先式实时多任务内核。µC/OS-II是用ANSI C编写的,包含一小部分与微处理器类型相关的汇编语言代码,使之可供不同架构的微处理器使用。虽然µC/OS-II是在PC机上开发和测试的,但µC/OS-II的实际对象是嵌入式系统,并且很容易移植到不同架构的微处理器上。至今,从8位到64位,µC/OS-II已在超过40中不同架构的微处理器上运行。基于STM32的μcos-ii实时操作系统移植 7 MATLAB/Simulink仿真软件简介 8 调速系统软件实现
8.1调速系统软件的结构图 调速系统软件的结构图如图8-1,磁场定向控制(FOC 软件的流程图如图8-2, 8.2 9 调速系统仿真模型及仿真 电流采样
(A i ,B i ,C i =得到相电流(αi ,βi = Clarke(A i ,B i ,C i(d i ,q i = Park(αi ,βi *d V = PID 调节(d i ,*d i *q V = PID 调节(q i ,*d i(q V ,d V = 饱和处理(*q V ,*d V(αV ,βV = 反Park(q V ,d V SVPWM(αV ,βV
结 束 结论
参考文献
[1] 华成英,童诗白.模拟电子技术基础[M] 北京:高等教育出版社,2006 攀枝花学院本科毕业设计(论文参考文献
[2] 杨路明.C语言程序设计教程[M] 北京:北京邮电大学出版社,2005 [3] 王晓明.电动机的单片机控制.北京:北极航空航天大学出版社,2002.[4] 王兆安,黄俊.电力电子技术.北京:机械工业出版社,2000.[5] 李华德,白晶,李志明.交流调速控制系统.北京:电子工业出版社,2004.[6] 罗政球.提高电子电路抗干扰能力经验谈[J].电子制作,2006,10.[7] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2006,3.[8] 陈伯时.电力拖动自动控制系统.北京:机械工业出版社,2004,07.[9](澳霍姆斯(Holmes,D.G.,(美利波(Lipo,T.A.著;周克亮译.电力电子变换 器PWM技术原理与实践.北京:人民邮电出版社,2010,02.[10](英姚文详,宋岩译.ARM Cortex-M3权威指南.北京:北京航空航天大 学出版社,2009,7.[11] 彭刚,春志强.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践.北京:电子
工业出版社,2011,01.[12] 侯殿有,才华.ARM嵌入式C编程标准教程.北京:电子工业出版社,2011,01.[13](美Jean J.Labrosse著,邵贝贝等译.嵌入式实时操作系统μCOS-Ⅱ(第2版.北京: 北京航天航空大学出版社,2003,05.[14] 陈瑶,李佳,宋宝华.Cortex-M3 + μC/OS-II嵌入式系统开发入门与应用.北京:人民邮
电出版社,2010,08.[15] 马小亮.大功率交--交变频调速及矢量控制技术(第3版.北京:机械工业出版社,2004, 07.[16] Schildt, Herbert.c: The complete Reference(c 4/E.McGraw-Hill/Osborne Media ,2000,4.[17] Jean J.Labrosse.Embedded Software.Newnes ,2007,9.65 攀枝花学院本科毕业设计(论文)(空 1 行 附录 A:XX 公式的推导 附录 A:XX 公式的推导(空 1 行(空 1 行 黑体三号居中 XX 公式的推导过程是:(宋体五号,距行固定值 20 磅,英文用 Times New Roman 五号)65 攀枝花学院本科毕业设计(论文)(空 1 行 致谢 致 谢(空 1 行 黑体三号居中 XXX…(宋体小四号,距行固定值 20 磅)67
第三篇:软件设计模式浅析论文
软件设计模式浅析
陈亚东
(中原工学院软件学院,河南 郑州450000)
摘要:什么是软件设计模式呢?其实广义的来讲,软件设计模式是可解决一类软件问题并且能反复使用的软件设计方案;狭义的来讲,软件设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。是在类和对象的层次描述的可反复使用的软件设计问题的解决方案。软件设计模式通常描述了一组相互紧密作用的类与对象。
在课堂学到的软件设计模式,我学习的并不好,对各种模式的运用和实现,感觉简单,但是要做起来还是有些难度。本文简单讲述了以面向对象技术为基础的软件设计模式的分析。
关键词:设计模式;设计方案;面向对象
中国分类号:TP311.5文献标志码:A
Software design patterns is
analysed
Chenyadong
(Zhongyuan University of TechnologySoftware college,henan zhengzhou450000)Abstract: What is a software design pattern? Actually, broadly speaking, the software design pattern is a type of the software can solve the problem and the repeated use of the software design;Narrowly speaking, the software design pattern is to be used in specific scenarios and communicate with each other to solve the problem of general design of the description of the object.Is described in the level of the classes and objects can be repeated use of the software design of the solution of the problem.Software design patterns usually describes a set of mutually close function classes and objects.Learned in the class of software design pattern, I'm not a very good learning, for the use of various patterns and implementation, feeling is simple, but want to do or some difficulty.This article simply describes the software design based on object-oriented technology pattern analysis.Key words: design patterns;Design scheme;object-oriented
对于软件设计模式,从上课到现在,我在头脑中还没有一个完整的概念,主要是因
为我的基础比较差,凭自身能力还不能写出
来一个项目。通过上网搜索,知道了什么是
软件设计模式,它是一套被反复使用,多数
人知晓的,经过分类编目的,代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
[1]厂模式、单例模式、生成器模式、工厂方法模式、原型模式、适配器模式等等。
一、设计模式 模式是用来描述所交流的问题及解决方案的,一个完整的设计模式主要由模式名称、问题、解决方案、效果四个基本要素组成。设计模式体现的是程序整体的一种构思,所以有时候它也会出现在分析或者是概要设计阶段中,设计模式的核心思想是通
过增加抽象层,把变化部分从那些不变的部[2][2]。软件设计模式分为基础模式、委托模式、接口模式、代理模式、创建型模式、抽象工
分中分离出来。这就是我所了解的设计模式。设计模式有五种原则,“开-闭”原则(OCP)、单一职责原则(SRP)、里氏代换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP)[3],设计模式就是实现了上面所说的五种原则,从而达到了代码复用、增加可维护性的目的。
在设计模式经典著作《GOF95》中,设计模式从应用的角度上被分为三个大的类型,分别是创建型模式、结构型模式和行为型模式。又根据模式的范围分,模式既用于类又用于对象,类模式是处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了;对象模式是处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式”只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式的范畴。
二、设计模式的分类
创建型设计模式是用来创建对象的模式,抽象了实例化过程,工厂模式、抽象工厂模式、单件模式、生成器模式、原型模式都属于创建型设计模式。简单来说一下创建型结构模式有哪几种模式吧,首先说一下工厂模式,工厂模式:客户类和工厂类分开,消费者任何时候需要某种产品,只需要向工厂请求即可,消费者无须修改就可以接纳新产品;缺点就是当产品修改时,工厂类也要做出相应的修改。比如:如何创建及如何向客户端提供。抽象工厂模式:为一个产品族提供统一的创建接口,当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体的工厂类。单件模式:保证一个类有且仅有一个实例,提供一个全局访问点。生成器模式:将复杂对象创建与表示分离,同样的创建过程可创建不同的表示,允许用户通过指定复杂对象类型和内容来创建对象,用户不需要知道对象内部的具体构建细节。原型模式:通过“复制”一个已经存在的实例来返回新的实例(不新建实例)。被复制的实例就是“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。这几种模式老师也让做过作业,做起来感觉也挺简单的。
结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象来实现新的功能(对象结构型模式)。结构型模式有这几种模式,组合模式:定义一个接口,使之用于单一对象,也可以应用于多个单一对象组成的对象组。装饰模式:给对象动态添加额外的职责,就好像给一个物体加上装饰物,完善其功能。代理模式:在软件系统中,有些对象有时候由于跨越网络或者其他障碍,而不能够或者不想直接访问另一个对象,直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切,这就是代理模式。享元模式:Flyweight是一个共享对象,它可以同时在不同上下文(Context)使用。外观模式:外观模式为子系统提供了一个更高层次、更简单的接口,从而降低了子系统的复杂度,使子系统更易于使用和管理。外观承担了子系统中类交互的责任。桥梁模式:桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题。适配器模式:将一个类的接口适配成用户所期待的接口。一个适配器允许因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包装在一个已存在的类中。对于这几种模式,我理解的太笼统,也不太明白,只是根据这些定义来用心理解来消化。
行为型设计模式着力解决的是类实体之间的通讯关系,希望以面向对象的方式描述一个控制流程。行为型设计模式种类比较多,其中观察者模式和访问者模式运用的比较多。模版模式:定义了一个算法步骤,并允许子类为一个或多个步骤提供实现。子类在不改变算法架构的情况下,可重新定义算法中某些步骤。观察者模式:定义了对象之
间一对多的依赖,当这个对象的状态发生改变的时候,多个对象会接受到通知,有机会做出反馈。迭代子模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。责任链模式:很多对象由每一个对象对其下一个对象的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使系统可以在不影响客户端的情况下动态的重新组织链和分配责任。备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。命令模式:将请求及其参数封装成一个对象,作为命令发起者和接收者的中介,可以对这些请求排队或记录请求日志,以及支持可撤销操作。状态模式:允许一个“对象”在其内部状态改变的时候改变其行为,即不同的状态,不同的行为。访问者模式:表示一个作用于某对象结构中的各元素的操作。可以在不改变各元素的类的前提下定义作用于这些元素的新操作。解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。中介者模式:用一个中介对象来封装一系列的对象交互。策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。因为是学时太少的原因,老师讲的模式并不多,这几个模式好多都没有讲,我们只能根据一些书籍和资料来学习。
三、模式分析
对于工厂模式,是最常见的一种模式之一。在面向对象编程中, 常用的方法是用new操作符构造对象实例,但在有些情况下,new操作符直接生成对象会带来一些问题。创建对象之前必须清楚所要创建对象的类信息,但个别情况下无法达到此要求,譬如打开一个视频文件需要一个播放器对象,但是用户可能不知道具体播放器叫什么名字,需要系统分派给这个视频文件一个合适的播放器,这种情况下用new运算符并不合适。许多类型对象的创造需要一系列步骤,比如需要计算或取得对象的初始设置,需要选择生成哪个子对象实例,在生成需要对象之前必须先生成一些辅助功能对象。在这些情况, 新对象的建立就是一个 “过程”,而不仅仅是一个操作。为了能方便地完成这些复杂的对象创建工作,可引入工厂模式。工厂模式的实例分析: // EventFactory类
public class EventFactory:LogFactory{
public override EventLog Create(){
return new EventLog();} }
// FileFactory类
public class FileFactory:LogFactory{
public override FileLog Create(){
return new FileLog();} }
客户程序有效避免了具体产品对象和应用程序之间的耦合,增加了具体工厂对象和应用程序之间的耦合,在类内部创建对象通常比直接创建对象更灵活,通过面向对象的手法,将具体对象的创建工作延迟到子类,提供了一种扩展策略,较好的解决了紧耦合问题。
工厂模式客户端程序: public class App {
public static void Main(string[] args){
LogFactory factory = new EventFactory();
//FileFactory factory = new FileFactory();
Log log = factory.Create();
log.Write();} }
对于抽象工厂模式,在软件系统中,经常面临“一系列相互依赖对象”的创建工作,由于需求变化,这“一系列相互依赖的对象”也要改变,如何应对这种变化呢?如何像工厂模式一样绕过常规的”new”,提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合呢?其中有一种说法就是可以将这些对象一个个通过工厂模式来创建。但是,既然是一系列相互依赖的对象,它们是有联系的,每个对象都这样解决,如何保证他们的联系呢?所以运用抽象工厂模式,是一种有效的解决途径。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。适用于一个系统独立于其产品创建、组合和表示时,一个系统由多个产品系列中的一个来配置时,强调一系列相关产品对象的设计以便进行联合时,提供一个产品类库,只想显示其接口而非实现时。抽象工厂模式的结构,如下图:
图1抽象工厂模式的结构
抽象工厂模式与工厂模式的区别就在于工厂模式提供一个接口,用于创建相关和依赖对象的家族,而不需要明确指定具体类。抽象工厂模式允许客户使用抽象接口来创建一组相关产品,而不需要关心具体实际产出的产品是什么。
对于适配器模式,是将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以一起工作。打个比方
说,一个team要为外界提供S类服务,但team里面没有能够完成此项任务的member,只有team外的A可以完成这项服务。为保证对外服务类别的一致性(提供S服务),一是将A招安到team内,负责提供S类服务,二是A不准备接受招安,可安排B去完成这项任务,并让B做好A的工作,让B工作的时候向A请教,此时,B是一个复合体(提供S服务,是A的继承弟子)。这种模式的使用过程是客户通过目标接口调用适配器的方法对适配器发出请求,适配器使用被适配者接口把请求转换成被适配者的一个或者多个调用接口,客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。就是将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式有三种适用场合,一是使用一个已经存在的类,而它的接口不符合要求,二是创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作,三是使用一些已经存在的子类,但不可能通过子类化以匹配各自接口。对象适配器可以适配它的父类接口。适配器模式还分为了累适配器和对象适配器两种,这里就不再具体介绍了。适配器模式的优点就是方便设计者自由定义接口,不用担心匹配问题,而它的缺点是这个模式属于静态结构,由于只能单继承,所以不适用于多种不同的源适配到同一个目标。
对于命令模式,将一个请求封装为一个对象,可用不同请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。这种模式的适用性是抽象出待执行的动作以参数化某对象,在不同时刻指定、排列和执行请求,支持取消操作,支持修改日志,用构建在原语操作上的高层操作构造一个系统。命令模式的实现:
public class Receiver{//接收者public void action(){
System.out.println(“我在行动
");} }
public interface Command {//抽象命令
public abstract void execute();} public
class
ConcreteCommand
implements Command{//具体命令Receiver rcv;//含有接收者的引用
ConcreteCommand(Receiverrcv){this.rcv=rcv;}publicvoid execute(){rcv.action();}//执行命令}
public class Invoker{//请求者Command command;public command){
this.command=command;}
public void startExecuteCommand(){command.execute();} }
public class Application{//客户程序public static void main(String args[]){Command ConcreteCommand(r);
Invoker i=new Invoker();i.startExecuteCommand();} }
命令模式的结构:
command=new
void
setCommand(Command
图2命令模式的结构
命令模式中请求者不直接与接收者交互,即请求者不包接收者的引用,彻底消除了彼此之间的耦合。满足“开-闭原则”。如果增加新的具体命令和该命令的接受者,不必修改调用者的代码,调用者就可以使用新的命令对象;反之,如果增加新的调用者,不必修改现有的具体命令和接受者,新增加的调用者就可以使用已有的具体命令。由于请求者的请求被封装到了具体命令中,就可以将具体命令保存到持久化的媒介中,在需要的时候,重新执行这个具体命令。因此,使用命令模式可以记录日志。使用命令模式可以对“请求”进行排队。每个请求都各自对应一个具体命令,因此可以按一定顺序执行这些具体命令。
四、总结
在现代软件开发当中,软件设计模式起
到至关重要的作用。尤其是自从面向对象的语言普遍使用以后,促成了团队合作设计的软件设计几乎成了不可能完成的任务。软件设计模式在程序中的运用是非常广的,在程序设计的过程中,是对反复出现的问题的很用设计模式可确保更快的开发正确的代码,并且降低在设计或者视线中出现的错误的可能性。通过学习软件设计模式这门课程,了解到这么多种模式,虽然还不能熟练运用和操作,但是我会在以后的工作和实践中去多加锻炼。
Receiverr=new Receiver();热潮,而在此时,没有一个好的设计模式,i.setCommand(command);好的解决办法,是良好思路的经验集成。使
参考文献:
[1]钟茂生,王文明。软件设计模式及其使用[J].计算机应用,2002,22(8):32-35 [2]Gamma E.Design patterns elements of reusable object-oriented software[M].北京:机械工业出版社,2002
[3]廖志刚,李增智。设计模式在系统中的应用[J]。计算机工程与应用,2002,(12):7-10
第四篇:库存管理系统软件设计说明书
引言........................................................................................2
1.1 编写目的........................................................................2
1.2 背景及意义....................................................................3
1.3 国内外研究现状............................................................4 2 系统总体设计分析...............................................................5
2.1 软件功能及模块设计....................................................5
2.1.1 软件主要功能.........................................................6
2.1.2 软件模块组成.........................................................6
2.2 开发环境及性能优化....................................................7
2.2.1开发环境....................................................................7 3 各模块软件设计与实现.......................................................7
3.1系统管理模块...................................................................7
3.2进货管理模块.................................................................14
3.3 出货管理模块.................................................................17
3.4报表统计模块.................................................................17
3.5信息查询模块.................................................................18
引言 1.1 编写目的
“公正、公平、合理”的企业管理理念和企业管理水平的提高,使社会对库存管理系统有了更高的需求;同时由于个人电脑的普及,数据库技术、客户/服务器技术,特别是Internet/Intranet技术的发展,使的三代库存管理系统的出现才成为必然。库存管理系统的特点是从物品管理的角度出发,用集中的数据库将几乎所有与物品相关的数据统一管理起来,形成了集成的信息源。有好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得物品管理人员得以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业物品规划和政策。
企业的库存物资管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
根据当前的企业管理体制,一般的库存管理系统,总是根据所掌握的物资类别,相应分成几个科室来进行物资的计划,订货,核销托收,验收入库,根据企业各个部门的需求来发送物资设备,并随时按期进行库存盘点,作台帐,根据企业领导和自身管理的需要按月、季度、进行统计分析,产生相应报表。为了加强关键物资、设备的管理,要定期掌握其储备,消耗情况,根据计划定额和实际纤毫定额的比较,进行定额管理,使得资金使用合理,物资设备的储备最佳。
一个完整的企业物资供应管理系统应包括采购计划管理,合同收托管理、仓库库存管理、定额管理、统计管理、财务管理等模块。其中仓库的库存管理是整个物资供应管理系统的核心。因此有必要开发一套独立的库存管理系统来提高企业工作效率, 而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。
1.2背景及意义
进行库存管理的意义就在于:它能确保物畅其流,促使企业经营
活动繁荣兴旺。不论什么企业,都要储备一些物资。以生产为主的企业,不储备一定的物资,不能维持其连续生产;服务性行业,也要备置某些需用的设备和服务用具;就连一般的事业单位,也要备有某些办公用品等。因此,各行各业都存在不同程度的库存管理业务。
实行库存管理有如下优点:
(一)有利于资金周转
因为在某些特殊情况下,可以做到将库存需要的投资额规定为零。为此可使经营活动更为灵活,把用于建立原材料、制成品、商品等常备库存所需要占用的资金转为经营其他项目,这就有可能使经营活动向更新、更高的阶段发展。
(二)促使生产管理更为合理
这是因为库存管理工作的目标之一就是必需的物资,即在需要时,按需要量供应。目前生产管理较为混乱的主要原因在于一些急需的物资不能及时供应,要从根本上杜绝此类现象,就要认真搞好库存管理。
(三)有利于顺利地进行运输管理,也有助于有效地开展仓库管理工作
通过库存管理,可将原来零零散散放置的物料整理得井然有序,可使企业的生产环境整洁一新,实现文明生产。废旧物料堆放整齐、报废的设备及时运走,工厂的空地整洁干净,这样的环境,自然令人感到心情舒畅。此外。还可以把经常动用的物料以及危险性物料分片保管,以保证工厂的安全生产。
库存管理工作的好坏,对改善企业生产环境将起着举足轻重的作用。
1.3 国内外研究现状
由于库存管理在经济管理中占重要地位,其计算机化在发达国家中也已经达到了相当高的水平。我国在全国范围内推广计算机在管理中的应用,是在70年代末开始的,虽然起步较晚,近几年发展却较快,特别是微型计算机的出现和普及为信息处理提供了物美价廉的手段,对于推动我国管理信息处理的现代化起了重要的作用。
库存管理对企业来说是一项繁琐复杂的工作,每天要处理大量的单据数据。为及时结清每笔业务,盘点库存和货物流动情况,保证企业生产用料以及货物安全,库管人员要花费大量人力物力和时间来做数据记录统计工作。
在世界发达国家,库存管理的计算机化水平已经很高了,尽管我国的生产企业在这方面也有了很强的意识和长足的进步,但仍存在这样、那样的一些问题。
有的企业单位的库存管理部分目前仍为手工、半手工操作。从供应单位办理入库登记开始,到使用单位输领料出库手续为止,所有操作基本上都是由仓库管理人员笔写,手理,加上算盘、计算器来完成。这不仅烦琐,效率低,而且缺乏库存管理的一些基本手段,如库存状况统计,查询经济订货量计算等,这给企业在一定程度上造成了管理上的落后,及经济利益上的损失。有的单位的库存管理部已上了微机,但对微机的利用效率极低,有的在用它打游戏,有的仅把它当计算器或打字机来用。有的企业单位既有了微机同时也有了库存管理软件,但硬件上去了,软件上不去。因为他们用的库存管理软件,大多为自己的工作人员及其他一些非专业人员所开发的简单的管理程序,很难称得上是“库存管理信息系统软件”这些程序的弱点多表现为:
1、系统开发时无科学的理论支持。
2、开发过程中调研不全面。
3、软件编写时模型不清晰完整。
4、所用开发工具落后(如Fox base)。
计算机在管理中的应用开始于1954年,当时美国首先用计算机处理工资单。40多年来,计算机在处理管理信息方面发展迅速。例如,60年代美国计算机在管理中应用项目不到300项,到了1975年达到2670项。而现在,美国在财务会计上90%的工作由计算机完成;物资管理中80—100%的信息处理由计算机完成;计划管理中是80—90%。据计算机应用方面发展较快的国家统计,计算机用于经济管理的约占80%;用于科技运算的占8%;用于生产过程控制的占12%。因此,经济管理是计算机应用的主要领域。系统总体设计分析 2.1 软件功能及模块设计 2.1.1 软件主要功能
库存管理系统软件能达到如下具体功能要求: 1)系统管理模块 2)进货管理模块 3)出货管理模块 4)报表统计模块 5)信息查询模块 2.1.2 软件模块组成
本软件包括五个模块:系统管理、进货管理、出货管理、报表统计、信息查询。库存管理系统总体设计框图
图2-1 系统总体设计框图
2.2 开发环境及性能优化
2.2.1开发环境
数据库:Microsoft SQL Server 2000 前端开发工具:Visual C#.NET 数据访问对象:ADO 各模块软件设计与实现 3.1 系统管理模块
系统管理模块分为4种功能:身份验证功能、注册用户功能、修改删除用户功能、修改密码功能。身份验证功能
在进入系统主界面之前,会出现一个身份验证对话框,要验证用户的身份。本系统中用户分为管理员、仓库管理员和经理三种。不同用户其权限也不同。
用户通过库存管理系统界面登录进入系统。在其输入用户编号与密码之后,单击“确定”按钮登录数据库(为了方便用户,本系统允许用户在输入密码之后直接按回车键登录数据库,而无须使用鼠标单击“确定”按钮)。此时触发“确定”按钮的Click事件相应函数。在这个事件响应函数中,需要首先判断用户,因为他们具有不同的权限。如果权限是0,则进入系统管理员界面;权限是1,则进入经理界面;权限是2,则进入仓库管理员界面。
图3-1 系统登录界面
由于用户权限的差异,他们所能进入的系统主界面也相应的不同。
图3-2 系统主界面一(系统管理员身份进入)
图3-3 系统主界面二(经理身份进入)
图3-4 系统主界面三(仓库管理员身份进入)
注册用户功能 以下为注册用户界面:
图3-5 系统管理员注册用户界面
注册用户成功界面:
图3-6 注册用户成功界面
修改删除用户功能 修改删除用户界面如下:
图3-7 系统管理员修改删除用户界面
修改密码功能
对一个完整的系统而言,用户是应该可以修改自己的密码的,因此系统中应该具有修改密码的功能,提高数据的安全性,用户可以在进入系统主界面后可以修改自己的密码。当用户输入完成之后,按“确定”按钮来关闭对话框,系统会自动检查用户两次输入的密码是否一致,如果不一致,会出现出错提示并建议用户重新输入。
图3-8 修改密码界面
用户只能通过此界面修改自己的密码,如果试图修改别人的密码,则提示如下图:
图3-9 修改密码界面
修改密码成功则显示重新登录界面,图如下:
图3-10重新登录界面
3.2 进货管理模块
进货管理模块包括填写货品信息、入库单、修改最低库存三个子模块。
图3-11 仓库管理员填写入库单界面
入库单中涉及数据一致性,货品编号为1开头的库别自动为饮料库,货品编号为2开头的库别自动为主仓库,货品编号为3开头的库别自动为酒库。数量和进货单价设置只能输入数字类型。其中货品编号如果在库存信息表中不存在,那么提示先输入货品信息,点击确定后界
面自动跳转到如下图:
图3-12 仓库管理员填写入库单界面
图3-13 仓库管理员填写货品信息界面
3.3 出货管理模块
出库时如果出库数量低于库存信息表中的最低库存时报警,提醒仓库管理员及时通知采购员采购,如果不清楚此货品的采购员是谁可以根据货品编号查询采购员信息,报警显示如下图:
图3-14 填写出库单
3.4报表统计模块
本系统的报表分为日报表和月报表,日报表在添加入库单和出库单时就已经自动添加进数据库中的日报表了,所以在此只需再手动添加月
报表。
图3-15 月报表统计
3.5信息查询模块
该模块三种用户都会用到,用户根据不同的权限分别可以查询不同的内容,如系统管理员为了修改仓库信息表、采购员信息表、客户信息表而查询相关信息,仓库管理员为了通知采购员及时采购而查询采购员信息,经理查询仓库管理的各种信息等。
图3-24 库存信息查询
第五篇:汽车租赁系统软件设计说明书
汽车租赁系统 软件设计说明书
目录
1.介绍....................................................................................................................................1 1.1 目的..........................................................................................................................1 1.2 范围..........................................................................................................................1 1.3 内容概览..................................................................................................................1 2.体系结构表示方法............................................................................................................2 3.系统要达到的目标和限制................................................................................................2 4.用例视图............................................................................................................................2 4.1 创建系统用例图......................................................................................................2 4.2 创建系统静态模型..................................................................................................4 4.3 创建活动图..............................................................................................................4 4.4 创建状态图...........................................................................错误!未定义书签。5.逻辑视图............................................................................................................................7 5.1 参与者相关的类......................................................................................................8 5.2 系统中用到的其他类..............................................................................................9 5.3 各类之间的关系....................................................................................................10 6.过程视图..........................................................................................................................10 6.1 客户取车................................................................................................................10 6.2 客户还车................................................................................................................12 6.3 客户预订车辆........................................................................................................13 6.4 出租汽车................................................................................................................15 6.5 增加汽车................................................................................................................15 6.6 删除汽车................................................................................................................16 6.7 增加客户................................................................................................................17 6.8 车辆信息管理........................................................................................................18 7.部署视图..........................................................................................................................18 8.规模和性能......................................................................................................................20 9.质量..................................................................................................................................20
《软件工程实践》
2012-2013-02
软件设计说明书
1.介绍
1.1 目的
汽车租赁系统是一套针对汽车租赁业务的实际特点而开发的应用与管理软件,其功能覆盖了汽车租赁业务的全部流程。主要包括车辆预定、租赁业务、车辆管理、客户管理、车辆检修、租金统计等功能。它包括了四个模块:基本数据维护模块、基本业务模块、数据库管理模块和信息查询模块。其中,基本数据模块提供了使用者录入、修改并维护基本数据的途径,主要包括了添加车辆信息、修改车辆信息、添加员工信息、修改员工数据几大主要功能。基本业务模块则提供,基本业务模块中,客户可以填写汽车租赁申请表,工作人员负责处理这些表格;同时,技术人员可以提交每辆车的状态,以便工作人员根据这些资料决定是否批准客户的请求,它包含的功能有:用户填写预定申请、工作人员处理预定请求、技术人员填写服务记录和工作人员处理还车。数据库模块是对客户、工作人员及车辆的信息都要进行统一管理,车辆的租赁情况也要进行详细的登记,它的功能则是客户信息管理、车辆信息管理、租赁信息管理和志愿信息管理。信息查询模块主要用于查询数据库中的相关信息,包括查询客户信息、查询职员信息、查询车辆信息和客户记录等。
这篇文档提供了对在线汽车租赁系统的系统架构的总览,从不同的视角描述了该系统。同时介绍了在线汽车租赁网站有关架构的想法,包含架构分析的关键决策,目的在于帮助开发人员理解汽车租赁系统的基本结构。
1.2 范围
介绍了汽车租赁系统的客户取车、客户还车、客户预订车辆。
1.3 内容概览
登录系统
用户如果要进行汽车租赁操作,需要输入正确的用户名和密码,如果输入错误,则停留在登录页; 注册系统
客户如果从来没有在本网站租赁过汽车,需要注册一个客户账号; 浏览汽车系统
进入汽车租赁系统后,客户必须知道有关的汽车信息,可以得到汽车的名称、价格、各种属性信息,并能根据需要输入相关信息进行搜索; 汽车系统
当客户看中某辆汽车后,可以根据需要进行预定,操作后生成订单,然后可以提交订单。
《软件工程实践》
2012-2013-02 2.体系结构表示方法
这篇文档使用一系列视图反映系统架构的某个方面;
用例视图:概括了架构上最为重要的用例和它们的非功能性需求; 逻辑视图:展示了描述系统关键方面的重要用例实现场景(使用交互图);
部署视图:展示构建在处理节点上的物理部署以及节点之间的网络配置(使用部署图); 3.系统要达到的目标和限制 目标
客户可以正确登录,在登录页面输入信息时能够在输入错误的同时看到错误提示;正确登录后可以看到汽车的列表,点击其中一条信息后可以看到某辆汽车的详细信息,看中后可以很方便的进行预定,在生成订单之后客户可以看到。
客户在首页可以很方便地进行注册,输入的注册信息要进行验证,验证正确后将信息存入数据库。
管理员正确登录后可以修改用户信息,汽车信息。 限制
客户和管理员的界面分开,客户不能修改逻辑上不能修改的信息; 管理员不能修改用户密码,还有同级别的管理员的信息。4.用例视图
4.1 创建系统用例图
汽车租赁系统主要是对各种信息的管理,而在系统中,只有租赁管理人员才有权限使用本系统,才能对数据库进行操作。
(1)管理人员对汽车信息的管理,包括汽车租出时将汽车状态更改为已租出,而当汽车归还时则将状态置为可出租。再者就是当购进新车或者汽车报废时更改可出租汽车的数量信息等。
(2)管理人员对于客户信息的管理主要是对会员的管理,比如更改会员类型,增删会员信息。
(3)而对于工作人员的管理主要是指增删工作人员以及修改工作人员的信息,这有为重要,因为工作人员有权处理汽车的租赁流程。
系统用例图如下:
《软件工程实践》
2012-2013-02 缴纳罚金客户<
图4.1客户用例图
系统登录查询预订记录处理预定拒绝租车请求工作人员汽车交付介绍租车程序<
图4.2工作人员用例图
《软件工程实践》
2012-2013-02
增加汽车汽车信息管理更改汽车状态客户信息管理租赁系统管理者删除汽车工作人员信息管理图4.3租赁系统管理者用例图
4.2 创建系统静态模型
从前面的需求分析中,我们可以依据主要的七个类对象:汽车、客户、职员、工作记录、请求订单、客户记录和服务记录创建完整的类图如图4.3所示。
商品类别的活动图如下:
图4.3 系统类图
4.3 创建活动图
利用系统的活动图来描述系统的参与者是如何协同工作的。汽车租赁系统中,根据客户和职员的活动步骤我们可以创建活动图如下图4.4所示。
《软件工程实践》
2012-2013-02
图4.4 客户和职员的活动图
图4.5 系统管理员维护汽车信息的活动图 5
《软件工程实践》
4.4 创建状态图
2012-2013-02 在汽车租赁系统中,从客户开始发送租车请求道最后客户归还租借的车辆为止,整个系统的状态图如下图4.5所示。
图4.6 汽车租赁系统的活动图
图4.7 车的活动图
《软件工程实践》
2012-2013-02
图4.8 客户的活动图
5.逻辑视图
逻辑视图部分主要叙述了设计阶段的工作。汽车租赁系统的数据类中共有8个:Person,Customer,Worker,Administrator,Car,RequestOrder,ServiceRecord,CustomerRecord.《软件工程实践》
5.1 参与者相关的类:
2012-2013-02
[类图说明] Person类是所有类的父类,包含3个属性:姓名(name),身份证号(ID)和电话号码(PhoneNO)。它包含的方法都是用来设置和获取这些属性值。
Customer类是包含客户信息的类,除了继承了父类的属性和方法,还包括了车辆类型(CarType),性别(gender)和驾驶证号(licenseNo)等属性。
Worker类是包含员工信息的类,其中包含了员工的类型(type)和工作证号(WorkID)等属性,方法中的calculate()用来进行结算,checkRequest用来查询是否有没处理的申请单,checkCar()是用来查询汽车状况的。
Administrator类是系统管理员类,主要属性有工作证号(WorkID),主要方法是update()。
《软件工程实践》
5.2 系统中用到的其他类:
2012-2013-02
[类图说明] CustomerRecord类表示客户记录。customerID是客户的身份证号码,customerName是客户名称,RentDate是租车日期,CarType是所租车辆的类型,CarNumber是该车的车牌号码。IsFinish代表该交易时否结束。check()用来得到该客户的记录,end()用来结束该交易。
Car类代表汽车记录。CarType是该车的车型,CarNumber是车牌号码,status是指该车是否被预订、正在使用中或空闲状态,condition是指该车的状态。InServiced()用来判断该车是否空闲,updateStatus()用来修改车辆所处的状态。
RequestOrder类表示的是填写客户申请资料的表格。CarType表示客户申请的车型,RentDate是租车时间,IsAllow表示该客户的申请是否得到批准。Allow()用来接收客户的请求,fillOrder()是指客户填写表格,check()用来检查是否存在这个申请,isHandled()设置该申请已被处理。
ServiceRecord类是服务记录,属性包括交易中涉及的员工、客户、车辆、已经租赁信息。fillWorkRecord()用来填写这份记录,viewRecord()用来查看这份记录,updateRecord()用来修改这份记录。
《软件工程实践》
5.3 各类之间的关系:
2012-2013-02
[类图说明] 从图中可以看出,工作人员(Worker)可以查看所有客户(Customer)的租赁历史记录(CustomerRecord),可以处理多个用户的租赁申请(RequestOrder)。由于工作人员可以同时处理多个业务,所以他可以拥有多个服务记录(ServiceRecord)。
6.过程视图
过程视图部分叙述几个主要子系统的处理流程。主要包括客户取车,客户还车,客户预订车辆。
6.1 客户取车 6.1.1 用例简述
客户取车:客户出示取车的通知,职员查看通知无误,客户支付押金,职员填写工作记录,更新车辆的状态,客户取车。
6.1.2 基本事件流 客户:客户出示取车的通知; 2 职员:职员查看通知无误; 3 客户:客户支付押金; 4 职员:职员填写工作记录;
《软件工程实践》
2012-2013-02 5 职员:更新车辆的状态; 6 客户:客户取车 7 系统:用例结束。
6.1.3 客户取车顺序图见图6.1
图6.1 客户取车的系统顺序图
6.1.4 客户取车的协作图见图6.2
图6.2 客户取车的协作图
《软件工程实践》
2012-2013-02
6.2 客户还车 6.2.1 用例简述
客户还车:客户归还车辆,职员检查车辆的状态并添加服务记录,通知付款,客户付清钱款,职员更新车辆状态。
6.2.2 基本事件流 客户:客户归还车辆; 职员:职员检查车辆的状态并添加服务记录; 3 职员:通知付款; 4 客户:客户付清钱款; 5 职员:更新车辆的状态; 6 系统:用例结束。
6.2.3 客户还车的系统顺序图见图6.3
图6.3 客户还车的系统顺序图
6.2.4 客户还车的协作图见图6.4
《软件工程实践》
2012-2013-02
图6.4 客户还车的协作图
6.3 客户预定车辆 6.3.1 用例简述
客户预订车辆:客户填写预订单,职员检查预订单并检查客户记录,办理租车的手续,完成手续后,建立新的客户手续,同意租车请求,通知客户。
6.3.2 基本事件流 客户:客户填写预订单; 职员:职员检查预订单并检查客户记录; 3 职员:办理租车的手续; 职员:完成手续后,建立新的客户手续; 5 职员:同意租车请求; 6 职员:通知客户 7 系统:用例结束。
《软件工程实践》
6.3.3 客户预订车辆的系统顺序图见图6.5
2012-2013-02
图6.5 客户预订车辆的系统顺序图
6.3.4 客户预订车辆的协作图见图6.6
图6.6 客户预订车辆的协作图
《软件工程实践》
6.4 出租汽车 6.4.1 用例简述
2012-2013-02 出租车辆:查询汽车,验证客户身份,查询可租汽车,查询客户信息,修改客户租车信息,修改服务信息。
6.4.2 基本事件流 职员:查询汽车; 2 职员:验证客户身份; 3 职员:查询可租汽车; 4 职员:查询客户信息; 5 职员:修改客户租车信息; 6 职员:修改服务信息; 7 系统:用例结束。
6.4.3 出租车辆的系统顺序图见图6.7
图6.7 出租车辆的时序图
6.5 增加汽车 6.5.1 用例简述
增加汽车:增加汽车,查询汽车是否已存在,创建新车信息存入系统。
6.5.2 基本事件流 职员:增加汽车; 职员:查询汽车是否已存在;
《软件工程实践》
2012-2013-02 3 职员:创建新车信息存入系统; 4 系统:用例结束。
6.5.3 增加车辆的系统顺序图见图6.8
图6.8 增加车辆的时序图
6.6 删除汽车 6.6.1 用例简述
删除汽车:删除汽车,查询汽车,删除车辆信息。
6.6.2 基本事件流 职员:删除汽车; 2 职员:查询汽车; 3 职员:删除车辆信息; 4 系统:用例结束。
6.6.3 删除汽车的系统顺序图见图6.9
《软件工程实践》
2012-2013-02
图6.9 删除汽车的时序图
6.7 增加客户 6.7.1 用例简述
增加客户:添加新的租车用户信息。
6.7.2 基本事件流 职员:添加新的租车用户信息; 2 系统:用例结束。
6.7.3 增加客户的系统顺序图见图6.10
图6.10 增加客户的时序图
《软件工程实践》
6.8 车辆信息管理 6.8.1 用例简述
2012-2013-02 汽车信息管理:查询汽车状态信息,更改汽车状态信息,用例结束。
6.8.2 基本事件流 职员:查询汽车状态信息; 2 职员:更改汽车状态信息; 3 系统:用例结束。
6.8.3 汽车信息管理的系统顺序图见图6.8
图6.11 汽车信息管理的时序图
7.部署视图
部署视图描述了如何将具体软件制品分配到计算节点(具有处理服务的某种事物)上,表示了软件元素在物理架构上的部署,以及物理元素之间的通信。
在本系统中,我们可以对汽车类、职员类、服务记录类、客户类、工作记录类、客户记录类和请求订单类分别创建对应的构件进行映射。汽车租赁系统的构件图如图7.1所示。
《软件工程实践》
2012-2013-02
图7.1系统构件图
图7.1 汽车租赁系统的构件图
汽车租赁系统的部署图描绘的是系统节点上运行资源的安排。包括三个节点,分别是:客户端浏览器、Http服务器、数据库服务器,创建后的汽车租赁系统部署图如图7.2所示。
图7.2 汽车租赁系统的部署图
Generic PC 普通的个人计算机。 Web Browser 通用个人计算机上的网页浏览器,如:IE6.0,Firefox等。 Apache Web服务器,可以运行在所有广泛使用的计算机平台上。 Struts 一个为开发基于模型-视图-控制器模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。事件从客户端(浏览器)由用户操作出发的事件,Struts使用Action来接受浏览器表单提交的事件。 Tomcat 6.0 Tomcat 6.0提供Servlet容器。 Hibernate Hibernate提供对象关系映射框架,对JDBC进行了非常轻量级的对象封装,使得可以使用对象编程思维来操纵数据库,完成数据持久化。 MySQL MySQL是小型关系型数据库管理系统,其体积小、速度快、总体拥有成本低,开放源码数据库。
《软件工程实践》
2012-2013-02 8.规模和性能 满足的规模
能够满足100人同时在线浏览网页,20人同时进行有关数据库的操作。 满足的性能
能够满足让顾客可以认同的相应时间。9.质量
系统正式使用时,登录、注册、查看汽车信息、生产订单的流程正常。