Python开发小程序学籍报名系统
随着互联网技术的发展,学籍管理系统已经从传统的纸质化管理转变为电子化管理,这种管理模式效率更高,能够有效减轻工作压力,并且能够有效提高管理质量与效率。本文将介绍如何使用Python语言开发一个小型的学籍报名系统,该系统主要功能是管理学生的报名信息,方便管理员对学生信息进行查询和修改。
1. 系统设计分析
我们首先需要进行系统的设计分析,确定本系统的需求和功能,可以将系统分为以下几个模块:
1.1 系统登录模块
在该模块中,系统管理员需要输入正确的用户名和密码才能够登录系统,系统可以记录管理员的登录状态,当管理员关闭系统时,系统能够自动退出管理员的账户。
1.2 学生信息管理模块
该模块主要是实现对学生基本信息的录入、查询、删除等操作。管理员可以通过该模块进行对学生信息的管理,并且能够快速查找到某个学生是否已经完成报名,并且可以快速修改某个学生的基本信息。
1.3 考试报名管理模块
在该模块中,我们需要实现对学生进行考试报名的管理,并且能够查看每个学生所报名的考试信息。
2. 系统架构设计
在系统架构设计中,我们需要使用Python语言作为系统的开发语言,并且需要使用一些常用的库和框架来实现系统的功能。本系统主要使用以下几个库和框架:
2.1 flask:是一个轻量级的Python web应用框架,其具有简单、易懂的API,可以快速地开发Web应用。
2.2 flask_sqlalchemy:是flask的一个扩展,是一个ORM库,用于管理与数据库的交互。
2.3 flask_login:也是flask的一个扩展,用于管理登录状态和权限控制。
2.4 wtforms:是一个对web表单的处理库,可以方便地创建表单,并且可以使用其自定义表单验证逻辑。
3. 编写代码
在进行系统的代码编写时,我们需要按照以下步骤进行:
3.1 创建flask应用程序
在项目文件夹下创建`app.py`文件,首先需要导入一些常用的库,并且进行flask应用程序的创建,如下所示:
```python
from flask import Flask
app = Flask(__name__)
```
3.2 创建数据库模型
在进行flask应用程序的创建之后,我们还需要使用flask_sqlalchemy库来创建数据库模型。首先需要导入该库,然后创建一个`db`对象,用于操作数据库。在`models`文件夹下,我们需要创建一个`student.py`文件,创建一个`Student`模型,其具有以下几个属性:
- sid:学生ID号(唯一标识)
- name:学生姓名
- age:学生年龄
- phone:手机号码
- email:电子邮件
- created_time:创建时间
- updated_time:更新时间
创建代码如下所示:
```python
from app import db
class Student(db.Model):
id = db.Column(db.Integer, primary_key=True)
sid = db.Column(db.String(20), unique=True, nullable=False)
name = db.Column(db.String(100), nullable=False)
age = db.Column(db.Integer, nullable=True)
phone = db.Column(db.String(20), nullable=True)
email = db.Column(db.String(100), nullable=True)
created_time = db.Column(db.DateTime, default=datetime.now)
updated_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)
```
3.3 创建用户登录和权限控制
在进行学生信息管理和考试报名管理时,需要对管理员进行登录和权限控制,我们可以借助flask_login库进行实现。首先需要导入该库,并创建一个login_manager对象,用于管理用户登录状态。在`models`文件夹下,我们需要创建一个`user.py`文件,创建一个`User`模型,其具有以下几个属性:
- id:管理员ID号(唯一标识)
- username:管理员用户名
- password_hash:密码哈希值
创建代码如下所示:
```python
from app import db
from werkzeug.security import generate_password_hash, check_password_hash
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), unique=True, nullable=False)
password_hash = db.Column(db.String(128), nullable=False)
@property
def password(self):
raise AttributeError('password is not a readable attribute')
@password.setter
def password(self, password):
self.password_hash = generate_password_hash(password)
def verify_password(self, password):
return check_password_hash(self.password_hash, password)
```
进行用户登录和权限控制,需要在`app.py`文件中进行如下操作:
```python
from flask_login import LoginManager
# 创建登录管理器对象
login_manager = LoginManager(app)
# 设置登录连接地址
login_manager.login_view = 'login'
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
```
3.4 创建Web路由
在完成以上几个步骤之后,我们就可以开始编写本系统的Web路由。在处理Web路由时,我们需要分别处理登录、注册、学生信息管理、考试报名管理等操作。在`views`文件夹下,我们需要创建`auth.py`文件,用于处理用户登录和注册;还需要创建`student.py`文件,用于处理学生信息管理操作;同时还需要创建`exam.py`文件,用于处理考试报名管理操作。在该文件夹下还需要创建`__init__.py`文件,用于标识这是一个Python包。
代码如下所示:
```python
from app import app
from flask import render_template
# 处理login页面的请求
@app.route('/login')
def login():
return render_template('login.html')
# 处理register页面的请求
@app.route('/register')
def register():
return render_template('register.html')
```
以上是`auth.py`的部分代码,可以看到该文件主要处理登录和注册的请求。
```python
from app import app
from flask import render_template
# 处理index页面的请求
@app.route('/')
def index():
return render_template('index.html')
# 处理stu_info页面的请求
@app.route('/stu_info')
def stu_info():
return render_template('stu_info.html')
# 处理exam_reg页面的请求
@app.route('/exam_reg')
def exam_reg():
return render_template('exam_reg.html')
```
以上是`student.py`和`exam.py`的部分代码,可以看到该文件主要处理学生信息管理和考试报名管理的请求。
4. 编写HTML模板
在本系统中,我们需要编写一些HTML模板,用于渲染出页面,并且将数据展示给用户。在`templates`文件夹下,我们需要创建一个`base.html`文件,它是整个系统模板的基础。后面需要创建一些继承它的Page模板,包括`login.html`、`register.html`、`index.html`、`stu_info.html`、`exam_reg.html`等。
代码样例:
```html
{% extends "base.html" %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
{{ header }}
{% endblock %}
```
在模板中,我们可以使用jinja2的模板语言,将动态的数据渲染到模板中进行展示。
5. 运行系统
在进行以上几个步骤之后,我们就可以使用以下代码来启动系统了:
```python
if __name__ == '__main__':
app.run(debug=True, port=8000)
```
访问系统的首页时,会自动跳转到登录页面,输入正确的用户名和密码后,就可以进入系统的主界面了。
本文所介绍的是一个简单的学籍报名系统。我们可以在其基础上,进一步对其进行功能的增加和改进,如添加学生成绩管理、课程管理等功能,提高整个系统的通用性和实用性。