You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

342 lines
12 KiB

from flask import Flask, render_template, flash, session, redirect, url_for, request
from form import LoginForm, PassForm, TeaInfoForm, EvaInfoForm
from flask_sqlalchemy import SQLAlchemy
from flask_login import UserMixin
app = Flask(__name__)
app.config['SECRET_KEY'] = '123'
#设置密钥
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:10044006Lxlx@localhost:3306/fkkk'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 是否追踪数据库修改,
app.config['SQLALCHEMY_ECHO'] = True
# 是否显示底层执行的SQL语句
db = SQLAlchemy(app)
# 数据库实例,关联flask 项目
# 用户表
class USER(db.Model):
__table__name = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(45))
password = db.Column(db.String(45))
stu_id = db.Column(db.String(45), db.ForeignKey('stu_info.stu_id'))
tea_id = db.Column(db.String(45), db.ForeignKey('tea_info.tea_id'))
status = db.Column(db.String(45))
def __repr__(self):
return 'USER:%s' % self.username
# 创建教师信息表数据库模型
class TeaInfo(db.Model):
__table__name = 'tea_info'
tea_id = db.Column(db.String(45), primary_key=True)
name = db.Column(db.String(45))
tec_title = db.Column(db.String(45))
department = db.Column(db.String(45))
gender = db.Column(db.String(45))
en_year = db.Column(db.String(45))
birthday = db.Column(db.String(45))
email = db.Column(db.String(45))
number = db.Column(db.String(45))
pol_status = db.Column(db.String(45))
edu_background = db.Column(db.String(45))
address = db.Column(db.String(45))
user = db.relationship('USER', backref=db.backref('tea_info'), uselist=False)
def __repr__(self):
return 'TeaInfo:%s' % self.name
# 学生和课程关联信息表
registrations = db.Table('registrations',
db.Column('stu_id', db.String(45), db.ForeignKey('stu_info.stu_id')),
db.Column('course_id', db.String(45), db.ForeignKey('course_info.course_id'))
)
# 教师和课程关联信息表
tea_course = db.Table('tea_course',
db.Column('tea_id', db.String(45), db.ForeignKey('tea_info.tea_id')),
db.Column('course_id', db.String(45), db.ForeignKey('course_info.course_id'))
)
# 学生信息表
class StuInfo(db.Model):
__table__name = 'stu_info'
stu_id = db.Column(db.String(45), primary_key=True)
name = db.Column(db.String(45))
grade = db.Column(db.String(45))
department = db.Column(db.String(45))
gender = db.Column(db.String(45))
en_year = db.Column(db.String(45))
birthday = db.Column(db.String(45))
email = db.Column(db.String(45))
number = db.Column(db.String(45))
pol_status = db.Column(db.String(45))
edu_background = db.Column(db.String(45))
address = db.Column(db.String(45))
user = db.relationship('USER', backref=db.backref('stu_info'), uselist=False)
def __repr__(self):
return 'StuInfo:%s' % self.name
# 课程信息表
class CourseInfo(db.Model):
__table__name = 'course_info'
course_id = db.Column(db.String(45), primary_key=True)
course_name = db.Column(db.String(45))
course_teacher = db.Column(db.String(45))
course_credit = db.Column(db.String(45))
course_time = db.Column(db.String(45))
stu_info = db.relationship('StuInfo',
secondary=registrations,
backref=db.backref('course_info', lazy='dynamic'),
lazy='dynamic'
)
tea_info = db.relation('TeaInfo',
secondary=tea_course,
backref=db.backref('course_info', lazy='dynamic'),
lazy='dynamic'
)
def __repr__(self):
return 'CourseInfo:%s' % self.course_name
# 评教信息表
class EvaInfo(db.Model):
__table__name = 'eva_info'
#id = db.Column(db.Integer(), primary_key=True)
eva_course = db.Column(db.String(45), primary_key=True)
eva_teacher = db.Column(db.String(45))
eva_student = db.Column(db.String(45), primary_key=True)
index_one = db.Column(db.Integer())
index_two = db.Column(db.Integer())
index_three = db.Column(db.Integer())
index_four = db.Column(db.Integer())
opinion = db.Column(db.String(45))
def __repr__(self):
return 'EvaInfo:%s' % self.eva_student
@app.route('/mycourse')
def mycourse():
username = session.get('username')
user = StuInfo.query.filter_by(name=username).first()
course = user.course_info.all()
eva_info = EvaInfo.query.with_entities(EvaInfo.eva_teacher, EvaInfo.eva_student)
return render_template('mycourse.html', stu_course=course, eva_info=eva_info, username=username)
@app.route('/courseinfo')
def courseinfo():
user = USER.query.filter_by(username=session.get('username')).first()
courseid = request.args.get('course_id')
course = CourseInfo.query.filter_by(course_id=courseid).first()
context = {
'userstatus': user.status,
'courseid': course.course_id,
'coursename': course.course_name,
'courseteacher': course.course_teacher,
'coursecredit': course.course_credit,
'coursetime': course.course_time
}
return render_template('courseinfo.html', **context)
@app.route('/info')
def info():
return render_template('info.html')
@app.route('/pass', methods=['GET', 'POST'])
def pas():
form = PassForm()
if form.validate_on_submit():
print('验证通过')
mpass = request.form.get('mpass')
#print(mpass)
newpass = request.form.get('newpass')
#print(newpass)
username = session.get('username')
user = USER.query.filter_by(username=username).first()
if user and user.password == mpass:
user.password = newpass
db.session.commit()
return redirect(url_for('info'))
else:
return '修改失败'
return render_template('pass.html', form=form, username=session.get('username'))
@app.route('/tea_info', methods=['GET', 'POST'])
def tea_info():
form = TeaInfoForm()
user = TeaInfo.query.filter_by(name=session.get('username')).first()
if form.validate_on_submit():
tec_title = request.form.get('tec_title')
department = request.form.get('department')
gender = request.form.get('gender')
en_year = request.form.get('en_year')
birthday = request.form.get('birthday')
email = request.form.get('email')
number = request.form.get('number')
pol_status = request.form.get('pol_status')
edu_background = request.form.get('edu_background')
address = request.form.get('address')
user.address = address
user.edu_background = edu_background
user.pol_status = pol_status
user.number = number
user.email = email
user.birthday = birthday
user.en_year = en_year
user.gender = gender
user.department = department
user.tec_title = tec_title
db.session.commit()
context = {
'tea_id': user.tea_id,
'name': user.name,
'tec_title': user.tec_title,
'department': user.department,
'gender': user.gender,
'en_year': user.en_year,
'birthday': user.birthday,
'email': user.email,
'number': user.number,
'pol_status': user.pol_status,
'edu_background': user.edu_background,
'address': user.address
}
return render_template('tea_info.html', **context, form=form)
@app.route('/stu_info')
def stu_info():
user = StuInfo.query.filter_by(name=session.get('username')).first()
context = {
'stu_id': user.stu_id,
'name': user.name,
'tec_title': user.grade,
'department': user.department,
'grade': user.grade,
'gender': user.gender,
'en_year': user.en_year,
'birthday': user.birthday,
'email': user.email,
'number': user.number,
'pol_status': user.pol_status,
'edu_background': user.edu_background,
'address': user.address
}
return render_template('stu_info.html', **context)
@app.route('/teacourse')
def teacourse():
user = TeaInfo.query.filter_by(name=session.get('username')).first()
session['tea_id'] = user.tea_id
teacher = TeaInfo.query.get(session.get('tea_id'))
# print(student.name)
teacourse = teacher.course_info.all()
return render_template('teacourse.html', teacourse=teacourse)
@app.route('/eva_result')
def eva_result():
courseid = request.args.get('course_id')
coursename = request.args.get('course_name')
courseteacher = request.args.get('course_teacher')
course_info = EvaInfo.query.filter_by(eva_course=coursename, eva_teacher=courseteacher)
count = 0
j = 0
sum1 = []
sum2 = []
sum3 = []
sum4 = []
for i in course_info:
sum1.append(i.index_one)
sum2.append(i.index_two)
sum3.append(i.index_three)
sum4.append(i.index_four)
count += 1
su1 = sum(sum1)
su2 = sum(sum2)
su3 = sum(sum3)
su4 = sum(sum4)
return render_template('eva_result.html', courseid=courseid, coursename=coursename, courseteacher=courseteacher
, course_info=course_info, su1=su1, su2=su2, su3=su3, su4=su4, count=count)
@app.route('/eva_teacher', methods=['GET', 'POST'])
def eva_teacher():
username = session.get("username")
courseid = request.args.get('course_id')
coursename = request.args.get('course_name')
courseteacher = request.args.get('course_teacher')
form = EvaInfoForm()
try:
if form.validate_on_submit():
index_one = request.form.get('index_one')
index_two = request.form.get('index_two')
index_three = request.form.get('index_three')
index_four = request.form.get('index_four')
opinion = request.form.get('opinion')
eva_info = EvaInfo(eva_course=coursename, eva_teacher=courseteacher, eva_student=username,
index_one=index_one, index_two=index_two, index_three=index_three,
index_four=index_four, opinion=opinion)
db.session.add(eva_info)
db.session.commit()
return redirect(url_for('info'))
except:
return "不可重复评教"
return render_template('eva_teacher.html', form=form, courseid=courseid, coursename=coursename, courseteacher=courseteacher, username=username)
@app.route('/stu')
def stu():
return render_template('stu.html', username=session.get('username'))
@app.route('/tea')
def tea():
return render_template('tea.html', username=session.get('username'))
@app.route('/', methods=['GET', 'POST'])
def login():
form = LoginForm()
# username = form.username.data
# password = form.password.data
if form.validate_on_submit():
session['username'] = request.form.get('username', None)
status = request.form.get('status')
#status = request.form.get('status', None)
user = USER.query.filter_by(username=session.get('username')).first()
#if not user:
# flash('该用户不存在')
# flash('密码错误')
if user and request.form.get('password') == user.password:
if user.status == '0':
if status != user.status:
flash('用户类型错误')
else:
return render_template('stu.html', username=session.get('username'))
else:
if status != user.status:
flash('用户类型错误')
else:
return render_template('tea.html', username=session.get('username'))
return render_template('login.html', form=form)
if __name__ == '__main__':
app.run(debug=True)