Skip to content

Creating an MVC application using NODEjs and MariaDB

Notifications You must be signed in to change notification settings

Kaiwhat/Exploit_market

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Electronic Tendering System

Creating an MVC application using NODEjs and MariaDB

需求分析(Requirements Analysis):

  • 確定系統的主要功能和目標
  • 定義使用者需求和系統需求
  • 明確系統的輸入和輸出

:::info

  1. 必須使用帳號密碼登入
  2. 登入後可以新增/修改/刪除自己的拍賣品 (包含名稱、說明內容、與底價)
  3. 可以查看所有人的拍賣品清單(產品名稱、目前最高價),並可進一步查看拍賣品的內容與所有出價紀錄
  4. 可以對物品提出競標價格(新價格必須比現有最高價格與底價要高) :::

系統設計(System Design):

  • 架構設計:決定整體系統架構,包括前端和後端
  • 模組設計:將系統分解為幾個主要模組
  • 數據設計:需要的資料結構和資料庫

檔案階層設計

image

Exploit_market
│
├── controllers
│   ├── login.route.js
│   ├── market.route.js
│   └── profile.route.js
│
├── models
│   ├── market.model.js
│   └── user.model.js
│
├── package.json
├── package-lock.json
│
├── public
│   ├── image.png
│   ├── javascripts
│   │   └── script.js
│   └── stylesheet
│       └── style.css
│
├── README.md
├── server.js
├── utils
│   ├── auth.js
│   └── db.js
│
└── views
    ├── index.ejs
    ├── login.ejs
    ├── partials
    │   └── header.ejs
    └── profile.ejs

資料表設計

image

Bids

CREATE TABLE `Bids` (
  `bid_id` int(11) NOT NULL AUTO_INCREMENT,
  `item_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `bid_amount` decimal(10,2) NOT NULL,
  `bid_time` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`bid_id`),
  KEY `item_id` (`item_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `Bids_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `Products` (`item_id`) ON DELETE CASCADE,
  CONSTRAINT `Bids_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE
)

Products

CREATE TABLE `Products` (
  `item_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `starting_price` decimal(10,2) NOT NULL,
  `highest_bid` decimal(10,2) DEFAULT 0.00,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `due_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE current_timestamp(),
  `status` enum('active','completed','canceled') DEFAULT 'active',
  PRIMARY KEY (`item_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `Products_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE
)

Users

CREATE TABLE `Users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(100) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `role` enum('user','admin') DEFAULT 'user',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `username` (`username`),
  UNIQUE KEY `email` (`email`)
);

物件導向分析與設計(Object-Oriented Analysis and Design, OOAD):

  • 識別主要的類別:
  • 定義類別之間的關係和互動
  • 設計類別的屬性和方法

EST.drawio

  1. 所有請求進入伺服器時都會經過 Route 所設定的規則。
  2. Route 會分析請求方法為何,並將程式分配到對應的Controller。
    • express : 負責解析不同的請求方法以及路由設定。
  3. Controller 將頁面解析的結果經過判斷以及處理過傳送給Model。
  4. Model 接收到 Controller 的動作後執行查詢。
    • mariadb : 與資料庫進行連接。
  5. DB 回傳對應資訊給 Model
  6. Model 將資訊回傳給 Controller,包含查詢成功或失敗。
  7. 將正確結果回傳給請求方,或者是錯誤失敗的狀態及訊息。

使用者介面設計(User Interface Design):

  • 設計2D畫面的佈局
  • 規劃使用者控制和互動方式

image

文檔設計(Documentation Design):

  • 規劃系統文檔的結構和內容
  • 設計使用者手冊和技術文檔

實施計劃(Implementation Planning):

  • 選擇適當的開發工具和環境
  • 制定開發時間表和里程碑

Front-end 語言:HTML, CSS, Javascript

Back-end 語言:Javascript

Framework:Node.js

Template engine EJS

CSS layout module:css

Database:mariaDB

迭代和增量開發(Iterative and Incremental Development):

  • 計劃如何分階段開發和改進系統
  • 設定每個迭代的目標和可交付成果

參考文獻

http://151.80.37.64/ https://medium.com/codex/creating-an-mvc-application-using-nodejs-and-mariadb-9510c7b91716 https://hackmd.io/@monkenWu/Sk9Q5VoV4/https%3A%2F%2Fhackmd.io%2F%40gen6UjQISdy0QDN62cYPYQ%2FSyDGCsF44?type=book https://github.com/lrpt/myrep

About

Creating an MVC application using NODEjs and MariaDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published