【软件工程】3 ATM系统的设计

news2025/4/4 13:23:14

目录

3 ATM系统的设计

3.1体系结构设计

3.2 设计模式选择

3.3 补充、完善类图

3.4 数据库设计

3.4.1 类与表的映射关系

3.4.2 数据库设计规范

3.4.3 数据库表

3.5 界面设计

3.5.1 界面结构设计

3.5.2 界面设计

3.5.2.1 功能界面设计

3.5.2.2 交互界面

总博客:

【软件工程】ATM系统的设计与实现_早睡第一人的博客-CSDN博客


3 ATM系统的设计

3.1体系结构设计

(1)为使用户能够在简单' 易用、単一、统一的可视化界面下,轻松、方便地访问到各种 类型的数据,本系统釆用客户/服务器(B/S)体系结构。

客户层:用户通辻客户层与系统交互。该层可以是各种芝型的客户端。

表示层:用户通过表示层访问应用程序。表示层有 用户界面和控制器。

业务层:包含表示层中的控制器没有实现的一部分应用逻辑。负责确认和执行业务规 则和事务,并管理业务对象。

集成层:负责建立和维护与数据源的连接。

资源层:即数据库,可以分布在多个服务器上。

客户层请求将提交到表示层,由表示层调用业务层,业务层调用集成层,集成层读与资源层。

(2) 各层对应的组件是:客户层采用JSP 组件,表示层采用 Action 组件,业务层采用 Service组件,集成层采用 Dao 组件,之间的对应关系如图所示

根据体系结构及组件设计的包图,如下图所示;

        GUI包中是所有界面相关的页面。Action 包中是顶层的Action 接口,ActionImpl包中的所有类都实现Action 包中的接口,这些类分别是不同的业务控制器。

        Service 包中是负责业务处理的顶层 Service 接口和继承这个接口的其他负责不同业务的接口,ServiceImpl 中的类分别继承 Service 包中的接口。

        Dao 包中是访问数据的接口,Daolmpl 中的类实现了 Dao 中的接口。

        Entity 包中是所有的实体类。

3.2 设计模式选择

        设计模式是“对一些经过定制、能相互通信的对象和类的描述,用来解决特定场景下某个普遍的设计问题。”设计模式是面向对象的高层次解决方案。它不会过于关注具体问题的细节,所以应该把现实世界中存在的问题进行抽象。设计模式在选择对象和决定对象粒度方面都能起到作用。

  1. 抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角 色必须实现的接口或者必须继承的父类.用BaseService接口来实现.
  2. 具体工厂角色:它含有和具体业务逻辑有关的代码•由应用程序调用以创建对 应的具体产品的对象。如盘点单用InveBillService接口及其子类InveBillServicelmpl实现。
  3. 抽象产品角色:它是具悻产品继承的父类或者是实现的接口,用BaseDao接口 来实现。
  4. 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。如盘点单用Dao 接口及其子类实现。

3.3 补充、完善类图

面向对象设计 (Object-Oriented Design,OOD)最重要的是设计类图,体系结构和设计模式确定后,对象模型便过于简单,需要依据体系结构和设计模式进行调整。调整重点一是类的层次结构,二是类的属性方法。

对象模型中只有边界类、控制类和实体类,没有体现分层,不符合面向对象思想。因此需要依据体系结构调整类图,将控制类细分层次,分为客户层、表示层、业务层、集成层和资源层,将表示层、业务层、集成层采用设计模式进行调整,调整后图中不再绘制边界类和关联的实体类。

调整后的类图如下。

3.4 数据库设计

3.4.1 类与表的映射关系

  1. 一个对象类可以映射为一个以上的数据库表,当类间有一对多的关系时,一个表也可以对应多个类。
  2. 关系(一对一、一对多、多对多,以及三项关系)的映射可能有多种情况,但一般映射为一个表,也可以在对象类表间定义相应的外键。对于条件关系的映射,一个表至少应有 3 个属性。
  3. 单一继承的泛化关系可以对超类、子类分别映射表,也可以不定义父类表,而让子类表拥有父类属性;反之,也可以不定义子类表,而让父类表拥有全部子类属性。
  4. 对多重继承的超类(父类) 和子类分别映射表,对多次多重继承的泛化关系映射一个表。
  5. 对映射后的数据库表进行冗余控制调整,使其达到合理的关系范式。

3.4.2 数据库设计规范

        在本系统中,所有数据表、数据字段名的命名均釆用英文名称及其简写来完成。具体 为:第一个单词的全拼或简写+后面每一单词的全拼或简写。并且,每一个单词的第一个 字母为大写。如“储户名称”,其命名应为;Store_Name=

  1. 数据表的命名均釆用子系统英文单词首字母+数据表名"如:ATM系统 (ATM System)筒码是AS."储户信息表”的名字为:AS_CustomerInfo0
  2. 数据视图的命名与数据表相同,其前缀为“V_”・
  3. 数据库触发器的命名前綴为:“T_”
  4. 数据表约束的表示方法,
        1. Primary Key: PK
        2. 外键 Foreign Key: FK
        3. 不为空 Not Null: not null
        4. 校验:check(dealmoney >0),表示交易金额必须大于0; check(dealtype in('存款','取款','转账')),表示该字段取值只能是'存款','取款','转账'。
  5. (5)数据表约柬:约束类型一数据表名—约束相关字段,如账户信息表外键为:FK_SM_OutBill_Sys_Depl。
  6. (6)存储总程和函数的命名与其具体的功能相关(例如findAllDeal()(表示查询本账户交易信息)、insertCard()(表示申请新账户))等,与其作用的数据表和字段相联系,
  7. (7)在本系统中,所有与时间相关的属性字段,例如开卡日期opendate、交易日期dealdate,系统设计时均采用字符型进行,精确至天,共10位,其格式为“dd-mm-yyyy”,代表“日-月-年”。
  8. 据类型定义:统一采Varchar类型。

3.4.3 数据库表

AS_CustomerInfo储户信息表

字段名

数据类型

约束

级 联

Customer_Id

varchar

Primary key

储户编号

Customer_Name

varchar

not null

储户姓名

Customer_Tel

varchar

not null

储户电话

Customer_Pid

varchar

not null,unique

储户身份证号

Employee员工表

字段名

数据类型

级联

约束

Employee_Id

varchar

Primary key

员工编号

Employee_Name

varchar

not null

员工姓名

Employee_Tel

varchar

not null

 员工联系电话

Employee_Pid

varchar

not null,unique

  员工身份证号

Employee_Type

varchar

not null

员工类型

AS_CardInfo账户信息表

字段名

数据类型

约束

级 联

说 明

Card_Id

varchar

Primary key

账户编号

Card_Type

varchar

not null

货币类型

Card_Opendate

varchar

not null

开卡日期

Card_Password

varchar

nnl null,unique

账户密码

Customer_Id

varchar

not null,foreign key

储户编号

Card_Total

varchar

not null

账户余额

AS_DealInfo交易信息表

字段名    

数据类型

约束

级 联

说 明

Card_Id

varchar

not null,foreign key

账户编号

Deal_Person

varchar

not null,foreign key

交易对象

Deal_Money

varchar

not null,check(dealmoney >0)

交易金额

Deal_Type

varchar

not null,check(dealtype in('存款','取款','转账')),

交易类型

Deal_Date

varchar

not null

交易日期

3.5 界面设计

3.5.1 界面结构设计

(1)界面布局设计

  1. 界面平行方向分三栏:标题栏、主体栏和版权栏。
  2. 标题栏在右侧显示用户名称和注销。
  3. 主体栏包括左右两部分,左边是导航,右边是主窗口。
  4. 版权栏显示帮助、版本信息和问题反馈。

(2)色彩设计

  1. 色彩以蓝色为主,恰当使用图片。
  2. 一级菜单采用黑色,二级菜单采用蓝色,除了图片,界面色彩不要超过 3 种色彩、字体、字号要协调。

(3)交互设计

  1. 系统接受客户的正确输入并做出提示。
  2. 系统拒绝客户的错误输入并做出提示。
  3. 系统提示用户操作不成功的原因。
  4. 系统提示所用的图标或图形具有代表性和警示性
  5. 系统提示用语按警告级别和完成程度进行分级
  6. 系统在界面(主要是菜单、工具条)上提供突显功能(比如鼠标移动到控件时,控件图标变大或颜色变化至与背景有较大反差,当移动开后恢复原状)。系统在用户完成操作时给出操作成功的提示。

(4)一致设计

  1. 提示、菜单、帮助的格式和术语一致。
  2. 各个控件之间的对齐方式一致。
  3. 输入界面和输出界面在外观、布局、交互方式上一致。
  4. 功能类似的相关界面是否在外观、布局、交互方式上一致。
  5. 多个连续界面依次出现的情况下,界面的外观、操作方式一致。

(5)子系统管理界面设计

  1. 每个子系统都要有主界面。主界面显示在主窗口内,水平分为 5 栏,分别是标题栏查询区、功能区、记录列表区、分页区。

3.5.2 界面设计

3.5.2.1 功能界面设计

(1)登陆页面

         输入卡号和密码后点击登陆。

(2)注册界面

         点击首页面的注册按钮,输入卡号、密码及再次输入密码进行注册

 

(3)主页面

   登陆成功后进入主页面,主页面包含存款、查询、取款、转账、更改密码、退卡等按钮。

(4)存款页面

   在主页面点击存款按钮进入存款页面

(5)查询界面

         1)在主页面点击查询按钮进入查询页面

         2)点击查询记录按钮,显示过往银行流水

  

  1. 取款界面

在主页面点击取款按钮进入取款页面,在输入取款金额后点击确定即可取款

(7)转账界面

        在主页面点击转账按钮进入转账页面,输入要转账的账户id以及金额后,点击确定,即可转账。

(8)更改密码界面

        在主页面点击密码更改按钮进入密码更改页面,输入原密码以及新密码和再次输入密码后,点击确定,即可更改密码。

  1. 退卡界面

在主页面点击退卡按钮,系统退出到登陆界面,并弹出提示“请取走您的银行卡”

3.5.2.2 交互界面

(1)操作成功交互

“新增信息成功”的交互界面,反馈用户申请操作成功,如图所示。

“删除成功”的交互界面,反馈用户删除操作成功,如图所示。

“修改成功”的交互界面,反馈用户修改操作成功,如图所示。

“取款成功”的交互界面,反馈用户取款操作成功,如图所示。

“存款成功”的交互界面,反馈用户存款操作成功,如图所示。

“转账成功”的交互界面,反馈用户转账操作成功,如图所示。

“查询成功”的交互界面,反馈用户查询操作成功,如图所示。

(2)操作询问交互

“是否申请”的交互界面询问用户是否执行申请操作,可以确定或取消,如图所示。

“是否修改”的交互界面询问用户是否执行修改操作,可以确定或取消,如图所示。

“是否删除”的交互界面询问用户是否执行删除操作,可以确定或取消,如图所示。

“是否取款”的交互界面询问用户是否执行取款操作,可以确定或取消,如图所示。

“是否存款”的交互界面询问用户是否执行存款操作,可以确定或取消,如图所示。

“是否转账”的交互界面询问用户是否执行转账操作,可以确定或取消,如图所示。

“是否查询”的交互界面询问用户是否执行查询操作,可以确定或取消,如图所示。

(3)操作失败询问交互

1)“账户密码输入错误,请重新输入!”的提示界面,提示储户账户密码输入错误,可以确定,如图所示。

2)“转账对象账号在系统中不存在”的提示界面,提示储户转账对象账号在系统中不存在,可以确定,如图所示。

3)“余额不足,请重新输入转账金额!”的提示界面,提示储户余额不足,重新输入转账金额,可以确定,如图所示。

4)“本账户货币类型与账户对象货币类型不一致,请重新选择账户对象!”的提示界面,提示储户账户货币类型与账户对象货币类型不一致,重新选择账户对象,可以确定,如图所示。

5)“该账户余额未清空转移,请先清空转移余额!”的提示界面,提示储户该账户余额未清空转移,先清空转移余额,可以确定,如图所示。

总博客:

【软件工程】ATM系统的设计与实现_早睡第一人的博客-CSDN博客


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【性能类】—浏览器渲染机制

一、什么是DOCTYPE及作用 DTD(文档类型定义):是一系列的语法规则,用来定义XML或HTML的文档类型。浏览器会使用它来判断文档类型,决定使用何种协议来解析,以及切换浏览器模式 解释:DTD就定义DOC…

【13】SAP ABAP性能优化 - 共享对象 (Shared Objects)

1. 背景 “共享对象”是NetWeaver 6.40以上版本ABAP编程中的一个技术,在"共享对象"概念出来之前,在ABAP中可以通过EXPORT和IMPORT这样的关键字去访问服务器上的共享内存,实现不同进程中的数据交互。有关这方面的概念,我…

5分钟,带你了解低代码开发

在传统的理解中,企业内数字化应用的开发和迭代应该是 IT 部门的工作,但事实并非如此。一方面,激烈的市场竞争和反复出现的疫情给数字化提出了新的要求;另一方面,五花八门的零代码、低代码工具正如雨后春笋一般出现&…

【设计模式】——模板模式

什么是模板模式? 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行…

代码审计-RCE命令执行漏洞审计

代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…

通达信上涨回调选股公式,趋势指标和摆动指标结合使用

在前面的文章中,介绍了赫尔均线 (HMA)和随机RSI(StochRSI),这两个指标分别属于趋势指标和摆动指标。趋势指标和摆动指标是技术分析中常用的两类指标,用于分析市场的走势和波动,它们的计算方法、应用场景都是有区别的。今天利用两类…

架构实践方法

一、识别复杂度 将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的最主要的复杂度问题。对于按照复杂度优先级解决的方式,存在一个普遍的担忧:如果按照优先级来解决复杂度,可…

从安装 Seata 开始的分布式事务之旅 springboot集成seata

从安装 Seata 开始的分布式事务之旅 介绍什么是 Seata? 安装 Seata Server下载 Seata Server 发行版配置Seata解压文件配置Seata的yml文件把配置文件config.txt加载到nacos上修改config.txt文件加载到nacos上 启动Seata服务正常启动查看启动日志打开控制台页面 启动…

使用 PowerShell 将 Excel 中的每个工作表单独另存为独立的文件

导语:在日常工作中,我们经常需要处理 Excel 文件。本文介绍了如何使用 PowerShell 脚本将一个 Excel 文件中的每个工作表单独另存为独立的 Excel 文件,以提高工作效率。 1. 准备工作 在开始之前,请确保已经安装了 Microsoft Exc…

IMV7.0

一、背景 经历了多个版本,基础内容在前面,可以使用之前的基础环境: v1: https://blog.csdn.net/wtt234/article/details/132139454 v2: https://blog.csdn.net/wtt234/article/details/132144907 v3: https…

Vue调用硬件 接口报错

谷歌浏览器调用硬件报错 报错原因 调用身份证读卡器,使用谷歌浏览器 读卡器硬件的接口 有几率是被谷歌拦截 所以报错 在谷歌地址栏输入 chrome://flags/ 搜索 block 找到这个选项 切换状态之后重启浏览器即可 当时找的这篇文章 解决问题 参考链接 如果大家的问题没…

2023集成电路产业发展与产教融合高峰论坛会议顺利举行

8月5日,由中国半导体行业协会和市政府共同主办,天水师范学院、天水华天科技股份有限公司、杭州加速科技有限公司承办的2023集成电路产业发展与产教融合高峰论坛在天水举行。天水市委书记冯文戈,教育部学生服务与素质发展中心副主任方伟&#…

untiy 连接两个UI或一段固定一段跟随鼠标移动的线段

注意,仅适用于UI,且Canvas必须是Camera模式,不能用在3D物体上,3D物体请使用LineRenender 先创建一个图片,将锚点固定在左边 然后在脚本中添加如下内容 public RectTransform startObj;//起点物体public RectTransfor…

软件测试基本准侧与方法摘录

软件测试基本准侧与方法的摘录(应用实例待补充) 写在最开始:“测试是为发现错误而执行程序的过程”。————《软件测试的艺术》 🤩 本文中很多概念描述摘抄自还有很多概念没有列举。已写的部分概念缺少相应的实例,尚…

Java课题笔记~ Spring事务的程序举例环境搭建

举例:购买商品 trans_sale 项目 本例要实现购买商品,模拟用户下订单,向订单表添加销售记录,从商品表减少库存。 实现步骤: Step0:创建数据库表 创建两个数据库表 sale , goods sale 销售表:…

2021年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 下列哪个操作不能退出IDLE环境? A:AltF4 B:CtrlQ C:按ESC键 D:exit() 正确的答案是:B:CtrlQ 解…

LM2596S-adj电源芯片应用电路

手边有两块降压电源模块,使用芯片为LM2596S-adj,手册中给的使用电路为: 市面上买到的模块为: 电路为: 对比后发现苏守坤博客中存在错误,原博客中实物图应为输出可调的电源模块,博主所画原理…

深入理解PyTorch中的NoamOpt优化器

深入理解PyTorch中的NoamOpt优化器 作者:安静到无声 个人主页 今天,我们将深入探讨一个在自然语言处理领域广泛使用的优化器——NoamOpt。这个优化器是基于PyTorch实现的,并且在"Attention is All You Need"这篇论文中首次提出。…

若依后台管理系统06

哈喽!大家好,我是旷世奇才李先生 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟,回复【项目】获取我为大家准备的项目 最近打算把我手里之前做的项目分享给大家&#…

Rivian:一家已经在全球电动汽车领域站稳脚跟的热门电动汽车公司

来源:猛兽财经 作者 :猛兽财经 总结: (1)Rivian(RIVN)是全球电动汽车市场的主要参与者,由于全球电动汽车市场的不断增长和亚马逊(AMZN)的持续支持&#xf…