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

目录

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.rhkb.cn/news/81252.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记

文章目录 编码器-解码器Batch Normalization好处 编码器-解码器 第二个input与transformer中的解码器类似。 Batch Normalization 尽量使得w1和w2之间呈现为正圆 训练模型的时候, μ \mu μ和 σ \sigma σ不可以认为是常数,而是包含数据的变量&…

Stable Diffusion - 哥特 (Goth) 风格服装与背景的 LoRA 配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132177882 图像来源于 Goth Clothing 的 LoRA 效果,配合哥特 (Goth) 风格服饰的相关提示词。 测试模型:DreamShaper 8 哥…

Linux 权限

1. shell命令及其运行原理 1.1 是什么shell? shell是一个命令行解释器。 1.2 shell的作用? 在Linux操作系统中,用户一般是不与操作系统直接交互的,而是通过一个外壳程序来传递用户的需求和反馈结果给用户,shell就是一…

c++:day4

1.思维导图 2.shell函数获取uid和gid,并用变量接 #!/bin/bashfunction fun() {read -p "输入用户名" necho uid:id -u $necho gid:id -g $n } afun echo $a3.冒泡、选择和快排代码整理 /**************************************************************…

ChatGPT下架官方检测工具,承认无法鉴别AI内容

去年底,OpenAI 推出的 ChatGPT ,带来了生成式人工智能涌现的热潮。它不仅能够协助完成撰写邮件、视频脚本、文案、翻译、代码等任务,还能通过学习和理解人类的语言来进行对话,并根据聊天的上下文进行互动。 但随之而来的争议也让人…

神码ai火车头伪原创插件怎么用【php源码】

本篇文章给大家谈谈python小程序代码50 到100行,以及python小程序代码100行,希望对各位有所帮助,不要忘了收藏本站喔。 火车头采集ai伪原创插件截图: 目录 1 新建文件夹 2 获取指定文件或文件夹的绝对路径 3 删除指定路径的文件 …

中文版开源Llama 2同时有了语言、多模态大模型,完全可商用

可以说,AI 初创公司 LinkSoul.Al 的这些开源项目让海外开源大模型在国内的普及和推广速度与国际几乎保持了一致。 7 月 19 日,Meta 终于发布了免费可商用版本 Llama 2,让开源大模型领域的格局发生了巨大变化。 Llama 2 模型系列包含 70 亿、…

使用docker搭建GPT服务

不用ChatGPT账号,不用API,直接免费使用上官方原版的GPT4.0! 这个操作主要使用的是GitHub上的一个开源项目freegpt。 通过docker把这个项目打包到本地电脑上,直接就能使用上原版GPT4.0。 第一步:下载Docker 下载网址:docker.com 根据自己的电脑系统下载对应的版本即可 下…

rk3399移植linux kernel

rk3399移植linux kernel 0.前言一、移植ubuntu根文件系统二、移植linux1.支持NFS(可选)2.配置uevent helper3.支持etx4文件系统(默认已支持)4.配置DRM驱动5.有线网卡驱动6.无线网卡驱动 三、设备树四、内核镜像文件制作五、烧录六、总结 参考文章: 1.RK3399移植u-bo…

python高阶技巧

目录 设计模式 单例模式 具体用法 工厂模式 优点 闭包 案例 修改闭包外部变量 闭包优缺点 装饰器 装饰器原理 装饰器写法 递归 递归的调用过程 递归的优缺点 用递归计算阶乘 设计模式 含义:设计模式是一种编程套路,通过这种编程套路可…

数字员工助力农行安全生产数字化转型应用实践

党的二十大指出,“以数字中国建设助力中国式现代化,加快建设网络强国、数字中国”,2022年1月发布《“十四五”数字经济发展规划》提出,加强类人智能、自然交互与虚拟现实等技术研究。近年来,各大银行纷纷推出自己的数字…

2023年8月份华为H12-811更新了

801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案:A 试题解析:在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…

python简单的病毒编程代码,如何用python做恶搞病毒

这篇文章主要介绍了python简单的病毒编程代码,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 相信各位好奇心重的朋友们,特别是接触过爬虫的朋友们都想试一试如何做一个爬虫,别…

git使用(常见用法)

一.下载git git官方下载跳转 安装简单,有手就行 二. git的简单使用 1. 连接远程仓库 #初始化 git init #配置账户 git config --global user.name “输入你的用户名” git config --global user.email “输入你的邮箱” git config --list #--q退出 #配置验证邮箱 ssh-key…

2023.8.7论文阅读

文章目录 CMUNeXt: An Efficient Medical Image Segmentation Network based on Large Kernel and Skip Fusion摘要本文方法实验结果 Boundary Difference Over Union Loss For Medical Image Segmentation(损失函数)摘要本文方法实验结果 CMUNeXt: An E…

ASP.NET Core学习路线图

说明 1. 先决条件 - [C#](https://www.pluralsight.com/paths/csharp) - [Entity Framework](https://www.pluralsight.com/search?qentity%20framework%20core) - [ASP.NET Core](https://www.pluralsight.com/search?qasp.net%20core) - SQL基础知识 2. 通用开发技能 -…

[每周一更]-(第57期):用Docker、Docker-compose部署一个完整的前后端go+vue分离项目

文章目录 1.参考项目2.技能点3.GO的Dockerfile配置后端的结构如图Dockerfile先手动docker调试服务是否可以启动报错 4.Vue的Dockerfile配置前端的结构如图nginx_docker.confDockerfile构建 5.docker-compose 整合前后端docker-compose.yml错误记录(1)ip端…

1. Git基础知识

文章目录 Git基础知识一、集中式与分布式二、中心服务器三、工作流四、分支实现五、冲突六、Fast forward七、储藏(Stashing)八、SSH 传输设置九、.gitignore 文件十、Git 命令一览十一、和远端仓库交互 Git基础知识 一、集中式与分布式 Git 属于分布式…

【机器学习 | 决策树】利用数据的潜力:用决策树解锁洞察力

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

QT充当客户端模拟浏览器等第三方客户端对https进行双向验证

在 ssl单向证书和双向证书校验测试及搭建流程 文章中,已经做了基于https的单向认证和双向认证,,, 在进行双向认证时,采用的是curl工具或浏览器充当客户端去验证。 此次采用QT提供的接口去开发客户端向服务器发送请求&a…