代码(望采纳):
import sqlite3
import sys
# conn = sqlite3.connect(database="SQLite3.db")
# # 创建Account表
# sql="""create table Account
# ( username varchar(20) not null,
# password varchar(30) not null)
# """
# conn.execute(sql)
# conn.commit()
# conn.close()
# 创建GradeTable表
# sql="""create table GradeTable
# (Number varchar(20) not null,
# Name varchar(10),
# Chinese varchar(10),
# Math varchar(10),
# English varchar(10) )
# """
# conn.execute(sql)
# conn.commit()
# conn.close()
#账号登录
class Account:
def __init__(self):
__conn = sqlite3.connect(database="SQLite3.db")
self.__conn = __conn
def __Login(self):
print("\n-------------- 1.账号登录 --------------")
self.__cur = self.__conn.cursor()
self.__user = input("请输入账号:").strip()
self.__pwd = input("请输入密码:").strip()
self.__sql = """select count(*) from Account where username=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__user,))
self.__st = self.__result.fetchone()
if self.__user == "" or self.__pwd == "":
print("账号或密码不得为空!\n")
self.__Login()
elif self.__st[0] == False:
while True:
self.__num = input("账号不存在!是否选择注册一个新账号?\n1、是;2、否\n")
if self.__num == "1":
self.__Register()
elif self.__num == "2":
self.Main()
else:
self.__num = input("请重新选择:")
else:
self.__VerifyLogin(self.__user, self.__pwd)
def __VerifyLogin(self, user, pwd):
self.__cur = self.__conn.cursor()
self.__sql = """select password from Account where username=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__user,))
self.__st = self.__result.fetchone()
if self.__st[0] == self.__pwd:
print("账号登录成功!\n")
self.__st = GradeTable()
self.__st.Main2()
else:
print("账号密码错误!\n")
self.__Login()
def __Register(self):
print("\n-------------- 2.账号注册 --------------")
self.__cur = self.__conn.cursor()
self.__user = input("请输入账号:").strip()
self.__pwd = input("请输入密码:").strip()
self.__repwd = input("请确认密码:").strip()
self.__sql = "select count(*) from Account where username=?;"
self.__result = self.__cur.execute(self.__sql, (self.__user,))
self.__st = self.__result.fetchone()
while True:
if self.__user == "":
self.__user = input("账号不得为空!\n请输入账号:").strip()
elif self.__pwd == "":
self.__pwd = input("密码不得为空!\n请输入密码:").strip()
elif self.__repwd == "" or self.__pwd != self.__repwd:
repwd = input("请重新确认密码:").strip()
elif self.__st[0] == True:
print("该账号已存在!请重新注册!")
self.__Register()
else:
self.__SaveRegister(self.__user, self.__pwd)
def __SaveRegister(self, user, pwd):
self.__cur = self.__conn.cursor()
self.__sql = "insert into Account (username,password) values (?,?);"
self.__cur.execute(self.__sql, (self.__user, self.__pwd,))
self.__conn.commit()
print("账号注册成功!\n")
self.Main()
def __Change(self):
print("\n-------------- 3.修改密码 --------------")
self.__cur = self.__conn.cursor()
self.__user = input("请输入账号:").strip()
self.__oldpwd = input("请输入密码:").strip()
self.__newpwd = input("请输入新密码:").strip()
sql = """select count(*) from Account where username=?;"""
self.__result = self.__cur.execute(sql, (self.__user,))
self.__st = self.__result.fetchone()
while True:
if self.__user == "":
self.__user = input("账号不得为空!\n请输入账号:").strip()
elif self.__oldpwd == "":
self.__oldpwd = input("密码不得为空!\n请输入密码:").strip()
elif self.__oldpwd == self.__newpwd or self.__newpwd == "":
newpwd = input("请重新输入新密码:").strip()
elif self.__st[0] == False:
print("账号不存在!\n")
self.Main()
else:
self.__VerifyChange(self.__user, self.__oldpwd, self.__newpwd)
def __VerifyChange(self, user, oldpwd, newpwd):
self.__cur = self.__conn.cursor()
self.__sql = """select password from Account where username=?;"""
self.__result = self.__cur.execute(self.__sql, (user,))
self.__st = self.__result.fetchone()
if self.__st[0] == self.__oldpwd:
self.__SaveChange(self.__user, self.__newpwd)
else:
print("账号密码错误!\n")
self.__Change()
def __SaveChange(self, user, newpwd):
try:
print("账号密码修改成功!\n")
self.__cur = self.__conn.cursor()
self.__sql = """update Account set password=? where username=?;"""
self.__cur.execute(self.__sql, (self.__newpwd, self.__user))
self.__conn.commit()
self.Main()
except:
print("账号密码修改失败!\n")
self.Main()
def __Cancel(self):
print("\n-------------- 4.账号注销 --------------")
self.__cur = self.__conn.cursor()
self.__user = input("请输入账号:").strip()
self.__pwd = input("请输入密码:").strip()
self.__sql = """select count(*) from Account where username=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__user,))
self.__st = self.__result.fetchone()
if self.__user == "" or self.__pwd == "":
print("账号或密码不得为空!\n")
self.__Cancel()
elif self.__st[0] == False:
print("账号不存在!\n")
self.Main()
else:
self.__VerifyCancel(self.__user, self.__pwd)
def __VerifyCancel(self, user, pwd):
self.__cur = self.__conn.cursor()
self.__sql = """select password from Account where username=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__user,))
self.__st = self.__result.fetchone()
if self.__st[0] == self.__pwd:
self.__DeleteCancel(user)
else:
print("账号密码错误!\n")
self.Main()
def __DeleteCancel(self, user):
try:
cur = self.__conn.cursor()
sql = """delete from Account where username=?;"""
cur.execute(sql, (self.__user,))
self.__conn.commit()
print("账号注销成功!\n")
self.Main()
except:
print("账号注销失败!\n")
self.Main()
def Main(self):
print("1、账号登录;2、账号注册;3、修改密码;4、账号注销;0、退出.")
self.__num = input("请输入选择:").strip()
if self.__num == "1":
self.__Login()
elif self.__num == "2":
self.__Register()
elif self.__num == "3":
self.__Change()
elif self.__num == "4":
self.__Cancel()
elif self.__num == "0":
print("程序已退出!")
self.__conn.close()
sys.exit(0)
else:
self.Main()
#学生成绩管理类
class GradeTable:
def __init__(self):
__conn = sqlite3.connect(database="SQLite3.db")
self.__conn = __conn
def __GradeInput(self):
print("\n------------------ 1.学生成绩输入 -----------------")
self.__cur = self.__conn.cursor()
self.__number = input("请输入学生学号:").strip()
self.__name = input("请输入学生姓名:").strip()
self.__chinese = input("请输入语文成绩:").strip()
self.__math = input("请输入数学成绩:").strip()
self.__english = input("请输入英语成绩:").strip()
self.__sql = """select count(*) from GradeTable where Number=?;"""
self.__reslut = self.__cur.execute(self.__sql, (self.__number,))
self.__st = self.__reslut.fetchone()
while True:
if self.__name == "":
self.__number = input("学生学号不得为空!\n请输入学生学号:").strip()
elif self.__number == "":
self.__name = input("学生姓名不得为空!\n请输入学生姓名:").strip()
elif self.__chinese == "":
chinese = input("语文成绩不得为空!\n请输入语文成绩:").strip()
elif self.__math == "":
self.__math = input("数学成绩不得为空!\n请输入数学成绩:").strip()
elif self.__english == "":
self.__english = input("英语成绩不得为空!\n请输入英语成绩:").strip()
elif self.__st[0] == True:
print("该学生的成绩信息已输入!\n")
self.__GradeInput()
else:
self.__Input(self.__number, self.__name, self.__chinese, self.__math, self.__english)
def __Input(self, number, name, chinese, math, english):
try:
self.__cur = self.__conn.cursor()
self.__sql = """insert into GradeTable(Number,Name,Chinese,Math,English) values (?,?,?,?,?)"""
self.__cur.execute(self.__sql, (self.__name, self.__number, self.__chinese, self.__math, self.__english))
self.__conn.commit()
print("学生成绩输入成功!\n")
self.__GradeOutput()
except:
print("学生成绩输入失败!\n")
self.Main2()
def __GradeOutput(self):
print("\n************************* 2.学生成绩输出 *****************************")
print("-----------------------------------------------------------------------------")
print(" 学号 | 姓名 | 语文 | 数学 | 英语 | 总分 | 平均分 ")
print("------------------------------------------------------------------------------")
try:
self.__cur = self.__conn.cursor()
self.__sql = """select* from GradeTable"""
self.__result = self.__cur.execute(self.__sql)
self.__st = self.__result.fetchall()
for i in self.__st:
self.__sum = int(i[2]) + int(i[3]) + int(i[4])
self.__avg = self.__sum / 3.0
print(" " + i[0] + " | " + i[1] + " | " + i[2] + " | " + i[3] + " | " +
i[4] + " | " + str(self.__sum) + " | " + str(round(self.__avg, 2)) + " ")
print("------------------------------------------------------------------------------")
print()
self.Main2()
except:
print("学生成绩信息输出失败!\n")
self.Main2()
def __GradeSearch(self):
print("\n------------------ 3.学生成绩查询 -----------------")
print("1、按学生姓名查询;2、按学生学号查询;0、返回.")
self.__num = input("请输入选择:")
if self.__num == "1":
self.__SelectName()
elif self.__num == "2":
self.__SelectNumber()
elif self.__num == "0":
self.Main2()
else:
self.__GradeSearch()
def __SelectName(self):
self.__cur = self.__conn.cursor()
self.__name = input("请输入学生姓名:").strip()
self.__sql = """select count(*) from GradeTable where Name=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__name,))
self.__st = self.__result.fetchall()
if self.__st[0] == (0,):
print("查无此人!")
self.__GradeSearch()
elif self.__st[0] == (1,):
self.__OutputName(self.__name)
else:
print("该学生姓名有多个!请按学号查询!")
self.__GradeSearch()
def __OutputName(self, name):
print("\n-----------------------------------------------------------------------------")
print(" 学号 | 姓名 | 语文 | 数学 | 英语 | 总分 | 平均分 ")
print("------------------------------------------------------------------------------")
try:
self.__cur = self.__conn.cursor()
self.__sql = """select * from GradeTable where Name =?;"""
self.__result = self.__cur.execute(self.__sql, (self.__name,))
self.__st = self.__result.fetchall()
for i in self.__st:
self.__sum = int(i[2]) + int(i[3]) + int(i[4])
self.__avg = self.__sum / 3.0
print(" " + i[0] + " | " + i[1] + " | " + i[2] + " | " + i[3] + " | " +
i[4] + " | " + str(self.__sum) + " | " + str(round(self.__avg, 2)) + " ")
print("------------------------------------------------------------------------------")
self.__GradeSearch()
except:
print("学生成绩查询失败!\n")
self.__GradeSearch()
def __SelectNumber(self):
self.__cur = self.__conn.cursor()
self.__number = input("请输入学生学号:").strip()
self.__sql = """select count(*) from GradeTable where Number =?;"""
self.__result = self.__cur.execute(self.__sql, (self.__number,))
self.__st = self.__result.fetchall()
if self.__number == "":
print("学号不得为空!")
self.__SelectNumber()
elif self.__st[0] == True:
self.__OutputNumber(self.__number)
else:
print("该学号不存在!\n")
self.__GradeSearch()
def __OutputNumber(self, number):
print("\n-----------------------------------------------------------------------------")
print(" 学号 | 姓名 | 语文 | 数学 | 英语 | 总分 | 平均分 ")
print("------------------------------------------------------------------------------")
try:
self.__cur = self.__conn.cursor()
self.__sql = """select* from GradeTable where Number=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__number,))
self.__st = self.__result.fetchall()
for i in self.__st:
self.__sum = int(i[2]) + int(i[3]) + int(i[4])
self.__avg = self.__sum / 3.0
print(" " + i[0] + " | " + i[1] + " | " + i[2] + " | " + i[3] + " | " +
i[4] + " | " + str(self.__sum) + " | " + str(round(self.__avg, 2)) + " ")
print("------------------------------------------------------------------------------")
self.__GradeSearch()
except:
print("学生成绩查询失败!\n")
self.__GradeSearch()
def __GradeChange(self):
self.__cur = self.__conn.cursor()
print("\n------------------ 4.学生成绩修改 -----------------")
self.__number = input("请输入学生学号:").strip()
self.__name = input("请输入学生姓名:").strip()
self.__sql = """select count(*) from GradeTable where Number=? and Name=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__number, self.__name,))
self.__st = self.__result.fetchone()
if self.__number == "" or self.__name == "":
print("学号或姓名不得为空!\n")
self.__GradeChange()
elif self.__st[0] == True:
self.__ChangeNumber(self.__number)
else:
print("查无此人!\n")
self.Main2()
def __ChangeNumber(self, number):
print("\n1、语文;2、数学;3、英语;0、返回.")
self.__num = input("请选择要修改成绩的学科:").strip()
if self.__num == "1":
self.__chinese = input("请输入修改后的语文成绩:").strip()
self.__AlterChineser(self.__num, number, self.__chinese)
elif self.__num == "2":
self.__math = input("请输入修改后的数学成绩:").strip()
self.__AlterMath(self.__num, self.__number, self.__math)
elif self.__num == "3":
self.__english = input("请输入修改后的英语成绩:")
self.__AlterEnglish(self.__num, self.__number, self.__english)
elif self.__num == "0":
self.Main2()
else:
self.__ChangeNumber(self.__number)
def __AlterChineser(self, num, number, chinese):
self.__cur = self.__conn.cursor()
try:
self.__sql = """update GradeTable set Chinese=? where Number =?;"""
self.__cur.execute(self.__sql, (self.__chinese, self.__number))
self.__conn.commit()
print("语文成绩修改成功!\n")
self.__ChangeNumber(number)
except:
print("语文成绩修改失败!\n")
self.__ChangeNumber(self.__number)
finally:
self.__ChangeNumber(self.__number)
def __AlterMath(self, num, number, math):
try:
self.__cur = self.__conn.cursor()
self.__sql = """update GradeTable set Math=? where Number =?;"""
self.__cur.execute(self.__sql, (self.__math, self.__number))
self.__conn.commit()
print("数学成绩修改成功!\n")
self.__ChangeNumber(self.__number)
except:
print("数学成绩修改失败!\n")
self.__ChangeNumber(self.__number)
finally:
self.__ChangeNumber(self.__number)
def __AlterEnglish(self, num, number, english):
try:
self.__cur = self.__conn.cursor()
self.__sql = """update GradeTable set English=? where Number =?;"""
self.__cur.execute(self.__sql, (self.__english, self.__number))
self.__conn.commit()
print("英语成绩修改成功!\n")
self.__ChangeNumber(number)
except:
print("英语成绩修改失败!\n")
self.__ChangeNumber(number)
finally:
self.__ChangeNumber(number)
def __DeleteGrade(self):
print("\n------------------ 5.学生成绩删除 -----------------")
self.__cur = self.__conn.cursor()
self.__number = input("请输入学生学号:").strip()
self.__name = input("请输入学生姓名:").strip()
self.__sql = """select count(*) from GradeTable where Number=? and Name=?;"""
self.__result = self.__cur.execute(self.__sql, (self.__number, self.__name,))
self.__st = self.__result.fetchone()
if self.__number == "":
print("学号或姓名不得为空!\n")
self.__DeleteGrade()
elif self.__st[0] == True:
self.__CancelDelete(self.__number)
else:
print("查无此人!\n")
self.Main2()
def __CancelDelete(self, number):
try:
self.__cur = self.__conn.cursor()
self.__sql = """delete from GradeTable where Number =?;"""
self.__cur.execute(self.__sql, (self.__number,))
self.__conn.commit()
print("学生成绩信息删除成功!\n")
self.Main2()
except:
print("学生成绩信息删除失败!\n")
self.Main2()
def Main2(self):
print("**************************************************************************")
print("1、学生成绩输入;2、学生成绩输出;3、学生成绩查询;4、学生成绩修改;5、学生成绩删除;6、返回登录界面;0、退出当前程序.")
print("**************************************************************************")
self.__num = input("请输入选择:").strip()
if self.__num == "1":
self.__GradeInput()
elif self.__num == "2":
self.__GradeOutput()
elif self.__num == "3":
self.__GradeSearch()
elif self.__num == "4":
self.__GradeChange()
elif self.__num == "5":
self.__DeleteGrade()
elif self.__num == "6":
sd = Account()
sd.Main()
elif self.__num == "0" or self.__num == "":
self.__conn.close()
print("程序已退出!")
sys.exit(0)
else:
self.Main2()
if __name__ == '__main__':
st = Account()
st.Main()
如有帮助,望采纳
# -*- coding: utf-8 -*-
from datetime import datetime
from flask import Flask, render_template, request, flash, url_for, redirect
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms.fields import *
from wtforms.validators import DataRequired, Length
import numpy as np
from dbSqlite3 import *
app = Flask(__name__)
app.secret_key = 'dev'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
# set default button sytle and size, will be overwritten by macro parameters
app.config['BOOTSTRAP_BTN_STYLE'] = 'primary'
app.config['BOOTSTRAP_BTN_SIZE'] = 'sm'
bootstrap = Bootstrap(app)
db = SQLAlchemy(app)
#登陆界面设计
class HelloForm(FlaskForm):
username = StringField(u'用户名', validators=[DataRequired(), Length(1, 20)])
password = PasswordField(u'密码', validators=[Length(0, 10)])
select = SelectField(u'身份', choices=[('student', 'Student'), ('teacher', 'Teacher')])
submit = SubmitField(u'登录')
class AccountForm(FlaskForm):
secret = PasswordField(u'旧密码', validators=[DataRequired(), Length(0, 10)], render_kw={'placeholder': '旧密码'})
password = PasswordField(u'新密码', validators=[DataRequired(), Length(0, 10)], render_kw={'placeholder': '新密码'})
submit = SubmitField(u'修改密码')
class SelectForm(FlaskForm):
title = StringField(u'课程代码', render_kw={'placeholder': '课程代码'})
submit = SubmitField(u'选课')
class DeleteForm(FlaskForm):
title = StringField(u'课程代码', render_kw={'placeholder': '课程代码'})
submit = SubmitField(u'退课')
class ScoreForm(FlaskForm):
title_sno = StringField(u'学号', render_kw={'placeholder': '学号'})
title_cno = StringField(u'课程号', render_kw={'placeholder': '课程号'})
title_score = StringField(u'分数', render_kw={'placeholder': '分数'})
submit = SubmitField(u'录入')
class SortForm(FlaskForm):
title_keda = StringField(u'课程号', render_kw={'placeholder': '课程号'})
submit22 = SubmitField(u'成绩排序')
#调课界面设计
class ChangeForm(FlaskForm):
title_cno = StringField(u'课程号', render_kw={'placeholder': '课程号'})
select1 = SelectField(u'星期几', choices=[('星期一', '星期一'), ('星期二', '星期二'), ('星期三', '星期三'), ('星期四', '星期四'), ('星期五', '星期五'), ('星期六', '星期六'), ('星期日', '星期日')])
select2 = SelectField(u'时间段',choices=[('8:15~10:05', '8:15~10:05'), ('10:25~12:00', '10:25~12:00'), ('15:00~13:35', '15:00~13:35'), ('18:00~20:25', '18:00~20:25')])
submit = SubmitField(u'调课')
class AllsortForm(FlaskForm):
select = SelectField(u'班别',
choices=[('整个专业', '整个专业'), ('计科181', '计科181'),('计科182', '计科182'), ('计科183', '计科183'), ('计科184', '计科184'), ('计科185', '计科185'),
('计科186', '计科186'),('返回', '返回')])
submit = SubmitField(u'成绩排序')
# 登录页
@app.route('/', methods=['GET', 'POST'])
def index():
form = HelloForm()
if request.method == "GET":
return render_template('index.html', form=form)
if form.validate_on_submit():
if form.select.data == 'student':
result, _ = GetSql2("select * from student where sno='%s'" % form.username.data)
if not result:
flash(u'用户名不存在', 'warning')
return render_template('index.html', form=form)
if result[0][5] == form.password.data:
return render_template('student.html', sno=form.username.data)
else:
flash(u'密码错误', 'warning')
return render_template('index.html', form=form)
if form.select.data == 'teacher':
result, _ = GetSql2("select * from teacher where tno='%s'" % form.username.data)
if not result:
flash(u'用户名不存在', 'warning')
return render_template('index.html', form=form)
if result[0][2] == form.password.data:
if result[0][4] == 1:
return render_template('head_teacher.html', tno=form.username.data)
else:
return render_template('teacher.html', tno=form.username.data)
else:
flash(u'密码错误', 'warning')
return render_template('index.html', form=form)
# 学生主页
@app.route('/student/<int:sno>', methods=['GET', 'POST'])
def student(sno):
return render_template('student.html', sno=sno)
# 基本信息查看、学生个人登录密码修改功能
@app.route('/student/<int:sno>/account', methods=['GET', 'POST'])
def student_account(sno):
form = AccountForm()
result, _ = GetSql2("select * from student where sno='%s'" % sno)
name = result[0][1]
gender = result[0][2]
birthday = result[0][3]
birthtime = birthday
major = result[0][4]
classno = result[0][6]
result2, _ = GetSql2("select * from classes where classno='%s'" % classno)
classes = result2[0][1]
tno = result2[0][2]
result3, _ = GetSql2("select * from teacher where tno='%s'" % tno)
tea_name = result3[0][1]
if form.validate_on_submit():
result, _ = GetSql2("select * from student where sno='%s'" % sno)
if form.secret.data == result[0][5]:
data = dict(
sno=sno,
name=name,
gender=gender,
birthday=birthday,
major=major,
password=form.password.data,
classno = classno,
)
UpdateData(data, "student")
flash(u'修改成功!', 'success')
else:
flash(u'原密码错误', 'warning')
return render_template('student_account.html', sno=sno, name=name, gender=gender, birthday=birthtime,
major=major,classes = classes,tea_name = tea_name, form=form)
# 学生查看课表安排(开设课程基本信息、开设课程学生名单)
@app.route('/student/<int:sno>/course_table', methods=['GET', 'POST'])
def student_course_table(sno):
messages=[[],[],[],[], [],[],[],[], [],[],[],[], [],[],[],[], [],[],[],[] , [],[],[],[] , [],[],[],[]]
result_score, _ = GetSql2("select * from score where sno='%s'" % sno)
result_student, _ = GetSql2("select * from student where sno='%s'" % sno)
name = result_student[0][1]
for i in result_score:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[1])
result_teacher = GetSql2("select * from teacher where tno='%s'" % result_course[0][2])
result_group = GetSql2("select * from groups where gno='%s'" % result_course[0][3])
message =[]
time = result_course[0][4].split('/')[0]
strs = result_course[0][1]
message.append(strs)
strs = time + '/' + result_course[0][6] + '/' + result_teacher[0][0][1] + '/' + result_group[0][0][
3] + '/总学时:' + str(
result_group[0][0][4]) + '/学分:' + str(result_group[0][0][5])
message.append(strs)
dijijie = result_course[0][4].split('/')[2]
week = result_course[0][4].split('/')[1]
num = 0
if week == '星期一': num = 0
elif week == '星期二': num = 1
elif week == '星期三': num = 2
elif week == '星期四': num = 3
elif week == '星期五': num = 4
elif week == '星期六': num = 5
elif week == '星期日': num = 6
if dijijie =='8:15~10:05' : num = num*4 +0
elif dijijie == '10:25~12:00': num = num * 4 + 1
elif dijijie == '15:00~16:35': num = num * 4 + 2
elif dijijie == '18:00~20:25': num = num * 4 + 3
messages[num].append(message)
import time
now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
day = now[:10].split('-')[2]
kaoshi = 20 - int(day)
return render_template('student_course_table.html', sno=sno,messages=messages,name= name,kaoshi =kaoshi)
# 学生选课功能
@app.route('/student/<int:sno>/course_select', methods=['GET', 'POST'])
def student_course_select(sno):
form = SelectForm()
result_student, _ = GetSql2("select * from student where sno='%s'" % sno)
classno = result_student[0][6]
result_course_class, _ = GetSql2("select * from class_course where classno='%s'" % classno)
messages = []
message1=[]
message2 =[]
for i in result_course_class:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[0] )
result_teacher = GetSql2("select * from teacher where tno='%s'" % result_course[0][2])
result_score = GetSql2("select count(*) from score where cno='%s'" % i[0])
result_group = GetSql2("select * from groups where gno='%s'" % result_course[0][3])
message = {'category':result_group[0][0][2],'grade':result_group[0][0][5], 'gno': result_course[0][3], 'name': result_course[0][1], 'tname': result_teacher[0][0][1], 'count': result_score[0][0][0],'time':result_course[0][4]}
if result_group[0][0][2] == '专业必修课程':
message1.append(message)
else :message2.append(message)
messages.append(message1)
messages.append(message2)
titles = [('gno', '课程代码'), ('name', '课程名'), ('tname', '任课教师'),('grade','学分'),('time','上课时间'),('count', '已选课人数')]
if form.validate_on_submit():
if not form.title.data:
flash(u'请填写课程代码', 'warning')
else:
result =[]
for i in result_course_class:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[0])
if int(result_course[0][3]) == int(form.title.data):
result.append(result_course[0][0])
break
#result, _ = GetSql2("select * from course where cno='%s'" % form.title.data)
if not result:
flash(u'课程不存在', 'warning')
else:
result1 = result[0]
result, _ = GetSql2("select * from score where sno='%s' and cno='%s'" % (sno, result[0]))
if result:
flash(u'课程选过了', 'warning')
else:
data = dict(
sno=sno,
cno=result1
)
InsertData(data, "score")
flash('选课成功', 'success')
messages = []
message1 = []
message2 = []
for i in result_course_class:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[0])
result_teacher = GetSql2("select * from teacher where tno='%s'" % result_course[0][2])
result_score = GetSql2("select count(*) from score where cno='%s'" % i[0])
result_group = GetSql2("select * from groups where gno='%s'" % result_course[0][3])
message = {'category': result_group[0][0][2], 'grade': result_group[0][0][5],
'gno': result_course[0][3], 'name': result_course[0][1],
'tname': result_teacher[0][0][1], 'count': result_score[0][0][0],
'time': result_course[0][4]}
if result_group[0][0][2] == '专业必修课程':
message1.append(message)
else:
message2.append(message)
messages.append(message1)
messages.append(message2)
return render_template('student_course_select.html', sno=sno, messages=messages, titles=titles, form=form)
# 学生退课功能
@app.route('/student/<int:sno>/course_delete', methods=['GET', 'POST'])
def student_course_delete(sno):
form = DeleteForm()
result_score, _ = GetSql2("select * from score where sno='%s'" % sno)
messages = []
for i in result_score:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[1])
result_teacher, _ = GetSql2("select * from teacher where tno='%s'" % result_course[0][2])
result_group = GetSql2("select * from groups where gno='%s'" % result_course[0][3])
message = {'category': result_group[0][0][2],'method': result_group[0][0][3], 'grade': result_group[0][0][5], 'gno': result_course[0][3],
'name': result_course[0][1], 'tname': result_teacher[0][1],'time': result_course[0][4]}
messages.append(message)
titles = [('gno', '课程代码'), ('name', '课程名'), ('tname', '任课教师'),('grade','学分'),('category', '课程性质'),('method','考察方式')]
result_student, _ = GetSql2("select * from student where sno='%s'" % sno)
classno = result_student[0][6]
result_course_class, _ = GetSql2("select * from class_course where classno='%s'" % classno)
if form.validate_on_submit():
if not form.title.data:
flash(u'请填写课程号', 'warning')
else:
result = []
for i in result_course_class:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[0])
if int(result_course[0][3]) == int(form.title.data):
result.append(result_course[0][0])
break
if not result:
flash(u'课程不存在', 'warning')
else:
result_group, _ = GetSql2("select * from groups where gno='%s'" % form.title.data)
if result_group[0][2] == '专业必修课程':
flash(u'必修课程不可退!', 'warning')
else:
DelDataById('sno', 'cno', sno, result[0], "score")
flash('退课成功', 'success')
return redirect(url_for('student_course_delete', sno=sno, messages=messages, titles=titles,
form=form))
return render_template('student_course_delete.html', sno=sno, messages=messages, titles=titles, form=form)
# 学生成绩查询功能
@app.route('/student/<int:sno>/score', methods=['GET', 'POST'])
def student_score(sno):
result_score, _ = GetSql2("select * from score where sno='%s'" % sno)
all_jidian = 0
all_xuefen = 0
messages = []
for i in result_score:
result_course, _ = GetSql2("select * from course where cno='%s'" % i[1])
result_teacher, _ = GetSql2("select * from teacher where tno='%s'" % result_course[0][2])
result_group = GetSql2("select * from groups where gno='%s'" % result_course[0][3])
jidian = 0
if not i[2]:
message = {'gno': result_course[0][3], 'cname': result_course[0][1], 'tname': result_teacher[0][1], 'score': '无成绩','jidian':'无绩点'}
else:
if i[2]<60:
jidian = 1
else :
jidian = (i[2]-60)/10 + 1
if jidian>=4:
jidian =4
all_xuefen += result_group[0][0][5]
all_jidian += result_group[0][0][5] * jidian
message = {'gno': result_course[0][3], 'cname': result_course[0][1], 'tname': result_teacher[0][1], 'score': i[2],'jidian':jidian}
messages.append(message)
titles = [('gno', '已选课程号'), ('cname', '课程名'), ('tname', '任课教师'), ('score', '成绩'), ('jidian', '绩点')]
all_jidian = all_jidian /all_xuefen
return render_template('student_score.html', sno=sno, messages=messages, titles=titles, all_jidian=round(all_jidian,2))
# 老师主页
@app.route('/teacher/<int:tno>', methods=['GET', 'POST'])
def teacher(tno):
return render_template('teacher.html', tno=tno)
# 老师个人登录密码修改功能
@app.route('/teacher/<int:tno>/account', methods=['GET', 'POST'])
def teacher_account(tno):
form = AccountForm()
result, _ = GetSql2("select * from teacher where tno='%s'" % tno)
name = result[0][1]
gender = result[0][3]
head= result[0][4]
str = '任课教师'
if head:
str = "教导主任"
if form.is_submitted():
result, _ = GetSql2("select * from teacher where tno='%s'" % tno)
if form.secret.data == result[0][2]:
data = dict(
tno=tno,
name=result[0][1],
password=form.password.data,
gender = gender,
head = head
)
UpdateData(data, "teacher")
flash(u'修改成功!', 'success')
else:
flash(u'原密码错误', 'warning')
return render_template('teacher_account.html', tno=tno, name=name ,str = str,gender = gender,form=form)
# 老师开课信息查看(开设课程基本信息、开设课程学生名单)
@app.route('/teacher/<int:tno>/course', methods=['GET', 'POST'])
def teacher_course(tno):
form = ChangeForm()
result_course, _ = GetSql2("SELECT * FROM course WHERE tno='%s'" % tno)
classe = []
messages = []
for i in result_course:
result_group, _ = GetSql2("SELECT * FROM groups WHERE gno='%s'" % i[3])
row = {'cno': i[0],'gno': result_group[0][0], 'name': result_group[0][1], 'category': result_group[0][2], 'method': result_group[0][3],
'keshi': result_group[0][4], 'xuefen': result_group[0][5], 'time': i[4],'banji':i[5],'station':i[6]}
classe.append(row)
message = []
result_score, _ = GetSql2("SELECT sno FROM score WHERE cno='%s'" % i[0])
if not result_score:
continue
else:
for j in result_score:
result_student, _ = GetSql2("select * from student where sno='%s'" % j[0])
classno = result_student[0][6]
result2, _ = GetSql2("select * from classes where classno='%s'" % classno)
classes = result2[0][1]
row = {'cno': i[0], 'cname': i[1], 'sno': result_student[0][0], 'name': result_student[0][1],
'gender': result_student[0][2], 'major': result_student[0][4],'classes':classes }
message.append(row)
messages.append(message)