C++课程设计:目录结构

Home Doc Changelog Download About

# 2023-08-12
├── ATimer
│   ├── __init__.py
│   ├── db.py
│   ├── views.py              # 处理不同URL的逻辑,比如展示项目视图、添加项目、开始/结束执行等。渲染html模板展示数据。
│   ├── auth.py               # register & login & profile
│   ├── models.py             # 定义Project和 record 两个模型类,用于对数据库进行CRUD操作
│   ├── schema.sql    
│   ├── static
│   │   ├── css
│   │   │   └── style.css
│   │   └── js
│   │       └── script.js
│   └── templates
│       ├── auth
│       │   ├── login.html
│       │   ├── profile.html
│       │   └── register.html
│       ├── views
│       │   ├── all.html
│       │   ├── day.html
│       │   ├── week.html
│       │   ├── month.html
│       │   └── year.html
│       ├── create.html
│       ├── index.html
│       └── base.html          # 使用Jinja2模板引擎来生成html页面。base.html作为基模板,其他页面继承它。
├── MANIFEST.in
├── requirements.txt
├── .env
├── .gitignore
└── setup.py                   # python setup.py install
  1. 使用Python的Flask框架来构建Web应用程序。Flask提供了路由、模板等功能可以方便地构建Web应用。

  2. 使用SQLite数据库来存储项目和执行事件的数据。可以定义Project和Execution两张表,Project表存储项目信息,Execution表存储每次执行事件的开始时间、结束时间等信息。

  3. 在models.py中定义Project和Execution两个模型类,用于对数据库进行CRUD操作。

  4. 在views.py中处理不同URL的逻辑,比如展示项目视图、添加项目、开始/结束执行等。渲染html模板展示数据。

  5. 使用Jinja2模板引擎来生成html页面。base.html作为基模板,其他页面继承它。

  6. 用Flask-SQLAlchemy package来简化数据库操作。

  7. 用Flask-WTF处理表单,如项目添加表单、登录表单等。

  8. 使用Flask-Login来处理用户认证系统。

  9. 用JavaScript/jQuery来实现页面交互效果,如计时器、统计信息实时更新等。

  10. 用Chart.js等库展示统计图表。

  11. 用Python的时间日期模块处理时间统计计算。


/ATimer
├── 0.课设要求
│   ├── 1《面向对象程序设计》课程设计题.doc
│   └── 2 《面向对象程序设计》课程设计封面.doc
├── 1.课程设计报告
│   └── 时子延:《面向对象程序设计》课程设计.doc
├── 2.历史版本
│   └── README.md
├── ATimer
│   ├── bin-env
│   │   ├── bin
|	│   │   └── activate
│   │   └── ...
│   ├── env
│   │   ├── Scripts
|	│   │   └── activate
│   │   └── ...
│   ├── data
│   │   ├── Done
│   │   ├── In Planning
│   │   ├── In Process
│   │   └── Pause
│   ├── requirements.txt
│   ├── setup.py
│   ├── static
│   │   ├── css
│   │   └── js
│   └── templates
│       ├── base.html
│       ├── home.html
│       ├── intro.html
│       └── new_project.html
└── README.md


$ pip list
Package      Version
------------ -------
blinker      1.6.2
click        8.1.6
Flask        2.3.2
itsdangerous 2.1.2
Jinja2       3.1.2
MarkupSafe   2.1.3
pip          22.0.2
setuptools   59.6.0
Werkzeug     2.3.6



ATimer 
|-- env                  # env/Scripts/activate (Windows)    (先 python -m venv env)
|-- bin-env              # source bin-env/bin/activate (Linux or MacOS) (先 python -m venv bin-env)
|-- app.py               # python app.py
|-- requirements.txt     # pip install -r requirements.txt
|-- templates            # HTML 模板
	|-- base.html        # 存放项目数据的目
	|-- home.html        # 首页模板,继承并扩展自base.html
	|-- new_project.html # 新建项目页面的模板,也继承自base.html
|-- static               # 存放静态资源如CSS、JS等的目录
	|-- css              # CSS
		|-- style.css    
	|-- js               # JavaScript
		|-- script.js    
|-- data                 # 存放项目数据
	|-- In Planning      # project的status
	|-- In Process 
		|-- C++课程设计.md # 以.md格式存储的项目数据,yaml部分是参数,content部分是时间日志
	|-- Pause
	|-- Done
|-- api         ?
|-- .old                 # 回收站





class Project:
    def __init__(self, name, status,note,stats):
        """
        name: 项目名称
        status: 项目状态: In Planning, In Process, Done, Pause
        note: 项目描述
        stats[daily,weekly,monthly,yearly]: 项目统计信息
        """
        self.name = name
        self.status = status
        self.note = note
        self.stats = stats