当前位置: 首页 > web >正文

项目必备流程图,类图,E-R图实例速通

一、流程图:用 ATM 取款流程示例

流程图用于描述算法或业务的执行步骤和分支逻辑,我们以 ATM 取款流程为例,结合代码逻辑来画流程图。

代码逻辑(简化版)

// ATM取款流程伪代码
bool withdrawMoney(double amount) {// 1. 验证银行卡if (!validateCard()) {showMessage("卡片无效");return false;}// 2. 验证密码if (!validatePin()) {showMessage("密码错误");return false;}// 3. 检查余额if (getBalance() < amount) {showMessage("余额不足");return false;}// 4. 检查取款金额是否符合规定if (amount > MAX_WITHDRAW || amount % 100 != 0) {showMessage("金额不符合要求");return false;}// 5. 执行取款操作deductBalance(amount);dispenseCash(amount);printReceipt();showMessage("取款成功");return true;
}

对应的流程图

流程图绘制要点

  1. 从左到右或从上到下布局,保持流程清晰
  2. 用箭头明确指示流程走向,避免交叉
  3. 判断节点(菱形)必须有两个或以上出口
  4. 每个流程都应有明确的开始和结束点
  5. 复杂流程可拆分多个子流程

二、类图:用 C++ 图书管理系统类为例

类图用于描述类的结构和类之间的关系,我们以一个简单的图书管理系统为例,根据 C++ 类代码来绘制类图。

C++ 类代码

#include <string>
#include <vector>// 图书类
class Book {
private:std::string isbn;       // 图书ISBNstd::string title;      // 书名std::string author;     // 作者int publishYear;        // 出版年份bool isBorrowed;        // 是否被借出public:Book(std::string isbn, std::string title, std::string author, int year);std::string getISBN() const;std::string getTitle() const;bool borrowBook();      // 借阅图书bool returnBook();      // 归还图书bool isAvailable() const; // 检查是否可借
};// 读者类
class Reader {
private:std::string readerId;   // 读者IDstd::string name;       // 姓名std::vector<std::string> borrowedBooks; // 已借图书ISBN列表public:Reader(std::string id, std::string name);std::string getReaderId() const;bool borrowBook(Book& book);  // 借阅图书bool returnBook(Book& book);  // 归还图书int getBorrowedCount() const; // 获取已借数量
};// 图书馆类
class Library {
private:std::vector<Book> books;     // 馆藏图书std::vector<Reader> readers; // 读者列表public:bool addBook(const Book& book);        // 添加图书bool removeBook(const std::string& isbn); // 移除图书Book* findBook(const std::string& isbn);  // 查找图书bool registerReader(const Reader& reader); // 注册读者Reader* findReader(const std::string& id); // 查找读者
};

对应的类图

类图绘制要点

  1. 类名、属性和方法分三行展示
  2. 访问修饰符表示:+ public,- private,# protected
  3. 明确标注类之间的关系类型:
    • 关联(实线):表示对象之间的联系
    • 聚合 / 组合:表示整体与部分的关系
    • 继承(空心三角箭头):表示类的继承关系
  4. 在关系线上标注 multiplicity(数量关系):1*(多个)、0..1(0 或 1 个)等

三、E-R 图:用电商订单系统为例

E-R 图用于数据库设计,描述实体、属性及实体间关系。我们以电商订单系统为例,结合数据库表结构来绘制 E-R 图。

数据库表结构(简化版)

-- 用户表
CREATE TABLE users (user_id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(100) NOT NULL,email VARCHAR(100) UNIQUE NOT NULL,phone VARCHAR(20),register_time DATETIME NOT NULL
);-- 商品表
CREATE TABLE products (product_id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,price DECIMAL(10,2) NOT NULL,stock INT NOT NULL,category VARCHAR(50),description TEXT
);-- 订单表
CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,order_time DATETIME NOT NULL,total_amount DECIMAL(10,2) NOT NULL,status VARCHAR(20) NOT NULL,address VARCHAR(200) NOT NULL,FOREIGN KEY (user_id) REFERENCES users(user_id)
);-- 订单项表
CREATE TABLE order_items (item_id INT PRIMARY KEY AUTO_INCREMENT,order_id INT NOT NULL,product_id INT NOT NULL,quantity INT NOT NULL,unit_price DECIMAL(10,2) NOT NULL,FOREIGN KEY (order_id) REFERENCES orders(order_id),FOREIGN KEY (product_id) REFERENCES products(product_id)
);

对应的 E-R 图

E-R 图绘制要点

  1. 实体用矩形表示,属性用椭圆表示
  2. 主键(PK)用下划线标注,外键(FK)标注清楚
  3. 关系用菱形表示,并用动词描述关系
  4. 明确标注关系的基数:
    • 1:1 表示一对一
    • 1:N 表示一对多
    • N:M 表示多对多(通常需要中间表)
  5. 对于复杂属性可以进一步细分,如用户的地址可以拆分为省、市、街道等
http://www.xdnf.cn/news/20320.html

相关文章:

  • 面试 TOP101 贪心专题题解汇总Java版(BM95 —— BM96)
  • 实力登榜!美创科技荣膺数说安全《2025中国网络安全企业100强》
  • IDEA中Transaction翻译插件无法使用,重新配置Transaction插件方法
  • 基于飞算JavaAI的在线图书借阅平台设计实现
  • Process Explorer 学习笔记(第三章 3.2.2):定制可显示的列与数据保存
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十七天
  • Bug排查日记:从崩溃到修复的实战记录
  • Nginx +Tomcat架构的必要性与应用示例
  • Kafka 消息队列:揭秘海量数据流动的技术心脏
  • 具身智能多模态感知与场景理解:融合语言模型的多模态大模型
  • 【关系型数据库SQL】MySql数据库基础学习(一)
  • 高级RAG策略学习(五)——llama_index实现上下文窗口增强检索RAG
  • 在本地使用Node.js和Express框架来连接和操作远程数据库
  • 从“找新家”到“走向全球”,布尔云携手涂鸦智能开启机器人新冒险
  • 突发奇想,还未实践,在Vben5的Antd模式下,将表单从「JS 配置化」改写成「模板可视化」形式(豆包版)
  • langchain 提示模版 PromptTemplate
  • Coze源码分析-资源库-编辑提示词-后端源码
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 如何选择靠谱的软文推广平台?这份行业TOP5清单请查收~
  • AGENTS.md: AI编码代理的开放标准
  • RL【3】:Bellman Optimality Equation
  • 支付DDD建模
  • [光学原理与应用-409]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 窗口镜设计:高透射率、抗损伤与精密调控的终极方案
  • 容器镜像全生命周期管理:从Artifactory制品库搭建到构建节点高效运维
  • Go语言实现以太坊Web3开发
  • 【LeetCode 热题 100】1. 两数之和——(解法二)哈希表
  • 使用tensorRT8部署yolov8/11目标检测模型(1)
  • 无密码登录与设备信任:ABP + WebAuthn/FIDO2
  • IPD模式下跨部门团队管理
  • 力扣152:乘积最大子数组