# 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
使用Python的Flask框架来构建Web应用程序。Flask提供了路由、模板等功能可以方便地构建Web应用。
使用SQLite数据库来存储项目和执行事件的数据。可以定义Project和Execution两张表,Project表存储项目信息,Execution表存储每次执行事件的开始时间、结束时间等信息。
在models.py中定义Project和Execution两个模型类,用于对数据库进行CRUD操作。
在views.py中处理不同URL的逻辑,比如展示项目视图、添加项目、开始/结束执行等。渲染html模板展示数据。
使用Jinja2模板引擎来生成html页面。base.html作为基模板,其他页面继承它。
用Flask-SQLAlchemy package来简化数据库操作。
用Flask-WTF处理表单,如项目添加表单、登录表单等。
使用Flask-Login来处理用户认证系统。
用JavaScript/jQuery来实现页面交互效果,如计时器、统计信息实时更新等。
用Chart.js等库展示统计图表。
用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