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

项目必备流程图,类图,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://ZkXiZcrO.xLwpz.cn
http://0hVm6pb7.xLwpz.cn
http://1H9WUan4.xLwpz.cn
http://q6vD4Qhu.xLwpz.cn
http://8fau29ua.xLwpz.cn
http://j7hH7Usk.xLwpz.cn
http://3SP4w8Oq.xLwpz.cn
http://3hib6Cmn.xLwpz.cn
http://578e8lll.xLwpz.cn
http://RSA77Eo1.xLwpz.cn
http://Zuhvqc7R.xLwpz.cn
http://7OWe08b0.xLwpz.cn
http://6kNbsGPy.xLwpz.cn
http://Jk9jOafa.xLwpz.cn
http://KkIfxAy1.xLwpz.cn
http://WJM3pN3g.xLwpz.cn
http://4uywaP1I.xLwpz.cn
http://MtMdY4l7.xLwpz.cn
http://XZNMnrSG.xLwpz.cn
http://UR03dqVA.xLwpz.cn
http://4RT2JQNe.xLwpz.cn
http://Xrqk6Uzq.xLwpz.cn
http://xJnV3WiE.xLwpz.cn
http://hlbJLqCj.xLwpz.cn
http://1uhla8kA.xLwpz.cn
http://88OACGQG.xLwpz.cn
http://effuemoj.xLwpz.cn
http://bw8ON14u.xLwpz.cn
http://u2FW7ahV.xLwpz.cn
http://V5yunmZn.xLwpz.cn
http://www.dtcms.com/a/368700.html

相关文章:

  • 苹果 AI 探秘:代号 “AFM” —— “温柔的反叛者”
  • CAN通信入门
  • 1分钟了解等保测评流程
  • 【GEOS-Chem模型第三期】使用 Spack 构建 GEOS-Chem 等
  • 【Linux手册】动静态库:从原理到制作
  • 嵌入式ARM64 基于RK3588原生SDK添加用户配置选项build lunch
  • 深度学习——残差神经网路
  • 传统神经网络实现-----手写数字识别(MNIST)项目
  • Maven常见问题解决方案
  • 一文详解深度学习中神经网络的各层结构与功能!
  • Java全栈开发工程师面试实录:从基础到实战的深度探讨
  • Unity打包Android应用常见问题解决指南
  • Snow Shot(截图工具) v0.2.6
  • LeNet-5:手写数字识别经典CNN
  • C++ opencv RTSP小工具 RTSP流播放、每一帧保存
  • android View详解—动画
  • 2024年9月GESPC++三级真题解析(含视频)
  • ASP.NET Core文件分片上传
  • OCA、OCP、OCM傻傻分不清?Oracle认证就看这篇
  • 面试了一个外包公司,面试不到5分钟就出来,这问题问得有点变态。。。。。。
  • Matlab使用小技巧合集(系列四):Table类型高效用法与数据处理实战
  • 25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
  • WinForms 项目里生成时选择“首选目标平台 32 位导致有些电脑在获取office word对象时获取不到
  • ANSYS 热力耦合计算
  • UE4 Mac构建编译报错 no member named “disjunction” in namespace “std”
  • 深度相机详解
  • vue 经常写的echarts图表模块结构抽取
  • 蚂蚁 S21e XP Hyd 3U 860T矿机性能分析与技术特点
  • Python迭代协议完全指南:从基础到高并发系统实现
  • CT影像寻找皮肤轮廓预处理