From 0b5c459120b938d7393385f419a53e848d8057ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=A0=E6=98=AF=E4=B8=80=E4=B8=AA=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=BC=80=E5=8F=91=E8=80=85=E5=95=8A?= <60928003+C-a-r-r-y@users.noreply.github.com> Date: Tue, 20 Jun 2023 12:03:01 +0800 Subject: [PATCH] Add files via upload --- school system/__pycache__/app.cpython-310.pyc | Bin 0 -> 6817 bytes school system/app.py | 204 +++++++++++++ school system/templates/admin.html | 268 ++++++++++++++++++ school system/templates/login.html | 27 ++ school system/templates/student.html | 94 ++++++ 5 files changed, 593 insertions(+) create mode 100644 school system/__pycache__/app.cpython-310.pyc create mode 100644 school system/app.py create mode 100644 school system/templates/admin.html create mode 100644 school system/templates/login.html create mode 100644 school system/templates/student.html diff --git a/school system/__pycache__/app.cpython-310.pyc b/school system/__pycache__/app.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91ab85e20c4807e36bd30ee5f85c89acee1ad3c3 GIT binary patch literal 6817 zcmb_hU2I&%6~2Fa_xkR7y>^_~PC_sV2`m(w@K5RnOhRZ1m>(NeT&3D>c5a+q?;msT zLTouz+oUB>OsSeYL_%UMMX0F+sd(W}EfQ_t`q1b5TI}GbwxT~0qD{YZ=B~3z>{6t9 zb?45UnK^ULnKS2nb6xN5b~XHc@8eg+13NVBPt@rAbI^DYPw<$oX+jfvMXTzbUNt6nrMrCVe`$;6Z%PDsq7F>Gm;cEZ%PnzLIA&b*-OpzGSRc>JWeVaAZ>Fmp4F7Q>VL9gC!enss(wBnx%qsxE}9jpr}O#e znuSW-V~E3%y{}$rR%?+x8Ol;^Ix>S=JxT;LBC>+OKNckq)UmuMEI{m5**AkJ%Y z2Cc}DCB*tVvG#mRC?^_81Rkn2!P zM}p!S68w;PX1tf<+sjVJpGI1Q}0GjqYwly)TL-r zWV(3v!=+!JSw8jJ(#vmru8%Tp>B5gMwtld3`s}9{E+EdT5FRB8KQjG=H1N6#38x}#gjOBsC_E$e@xSpSrJz+f&j8XIkN43TGVk zubuoz;o$lBe6)A$ZgG!AJ@W=r5@Am{D-!TY zFYFceyk73ZvjI>4DQ(`IPl)6~66c3TK_2-oY8yot&a#WvtMj^ig(;~aZC=m!aXroT z4P5W$dOz1QnAJ05$`{)$%-F=b19Jj7W_caOy%*fy4+q08!mTH@`NRoClH)dPL+kg0 zt2S?!hY0^JSjUshW%E2@3Zes9Q*j&s7KPWd=MPR?u`LF+gM4R_wuQp|G+2Hod0d|d zup83K+Ru#Vj7jahzCxRs)8#I_&Kr?2a(kp7yV|4Nu}Ucji}h+_@6*JPxNp+twzTun zSfySpRD!)Dm&dIs4JDt?C|a{L&T$=^pu=pCNXa9=j!w1uH&7#J*aSStt9++x>y0e4e8U)wTLaa^>MUL{kE{%Cz$&fRy;YOAuZgQN8 zD`k`q5see*s$^3{qKq-O>%W+&!&*5bO2|TuaB0P_Nz#2izHIyvO~tu%n>|H3q)~^g zMR>?_sW#0Q5HCq}fL=vZw)9eAJuFldRPwTcU%{27a2TaRWVbm0m{mMVqLpe# z>XF6FZN)e;!BkSlkF+Lj>nHF1@{(wd&AXQh z3WV}LDk$B`bQjeqT}ZkG$&FMH zTxC^Nc7P$O)l!I^@Q;O@6~ImiASLopuZzzM?^Q~fEKg?_o5-Lzk3~I;ZlqrCaDt-E9JTB5o8cD{`?SHve2DLQ*GALcN zG8i)$*R8)=t|U%#=~2#^qhmmFSEd#MgY?ir3jPB7#EHbj+iE4a1kfrw0NMH?k_kYS z8=B=*h|dx;0B5+cnxG}oPGcOPiK4Z-X%rGn1_`E}o(QZ^+lW^|O5hcG5t92BX_VEX zpx?i!FPh+h{&)t-LkW(;wAI>()i%ZB2RiD#s=jC;<+&scNyRC!n_4k1E9T{*-AyB6 zdLkS|Iv{|#5N;NUd41kM`m&I~>;(Wy?oG}Zuj%q{sBaMtqG}gL|32nN>3A#mxC}>a zu2WjG^Ve~m(wd#$#&t?-cK&*Q?9_ETxRi8W60>I2Xw znZJ?igIv$Hr2}1QJjC?A4vjZ=tg?kyDaAVX@NBHm=HBMq=E`qy6kD&+`MM6S+nDQ* zVx4=@$zZ`n` zc1e*~r8t$=-g@)m={HoOQwhOy5rkt7xy1TB=$p;*yB{vS+*)ED@$7Da1RUb~A%7U- zJBjLFdiR~BQ>~S==h{-n>Z$v{Fu2JZsMwC8L%`)TXP4ePb&Y`WWC+Nq?ecV1l6hPf zQ1Q4@z?gx$H1Qgj1$1IF7CGbP3}pn$ev)%2b3XOj#ShObY!GwCoe6jDc4B9k#luM? zm2zV>*lO`4C$?9yNjuXyY*n7zO>3oS+{2o+qURLrg^C{(efcEGw}T3Tz>+eX%HS*s zN$)w+vfgau56{XcsF%K(vC%!V@ccAeK1#sBaAzZ{MrO5ej5S6L>Hn(4PM}5Mgf(1D zK1IC*gd$sMD2LJTx)geV2vOolNd{rAi?4xR8vv>#pN_XjwKld}?T>;?mQ%zq85C8E za+)dRu1rzA&>3Sn~#qeQu%)ecWINidWtlwGpv&^N_ zfO6MhOan?VmLRAW;ub(3Q-Ceyt!M*B63WMCAl<*p3{j>5oSU!J!~7BKviKO|7*aZh zq_5=@^p(0=DAn@$+!pK){Xam`VruJ&En_+_%UyYV^#|~#{{cvw`npj7!!;TNa%)FQ z)9kli;_*6MK;cSuId)P8m-HC`7X}W9dx!<^BJEa`Mu@CS0CrJ9jl_#mU=4(a&)>&F ze7~>Z!', methods=['GET', 'POST']) +def student(sno): + user_info = db.session.query(Student).get(sno) + user_course = db.session.query(SC,Course).join(SC,SC.cno == Course.cno).filter(SC.sno == sno).all() + course_list = db.session.query(Course).all() + credit_sum = sum([x[1].ccredit for x in user_course]) + temp = [user_course[x][1] for x in range(len(user_course))] + selectable_course = [x for x in course_list if x not in [user_course[x][1] for x in range(len(user_course))]] + + if request.method == 'GET': + return render_template('student.html', + username = user_info.sname,usergender = user_info.ssex,userage = user_info.sage, + usercourse = user_course,totalcredit = credit_sum, + selectablecourse = selectable_course) + if request.method == 'POST': + if request.form['type'] == 'changeinfo': + if user_info: + user_info.sname = request.form['name'] + user_info.ssex = request.form['gender'] + user_info.sage = request.form['age'] + if request.form['password'] != "": + user_info.pwd = request.form['password'] + db.session.commit() + return "个人信息修改完毕" + elif request.form['type'] == 'courseselection': + to_select = next(filter(lambda x: x.cno == request.form['course'],selectable_course)) + to_submit = SC(cno = request.form['course'],sno = sno,tno = to_select.tno,grade = 0) + db.session.add(to_submit) + db.session.commit() + return "选课成功" + +@app.route('/admin/', methods=['GET', 'POST']) +def admin(ano): + student_list = db.session.query(Student,db.func.coalesce(db.func.sum(Course.ccredit),0)).\ + join(SC,Student.sno == SC.sno, isouter=True).join(Course,SC.cno == Course.cno, isouter=True).group_by(Student.sno).all() + + teacher_list = db.session.query(Teacher).all() + teacher_position_list = db.session.query(Teacher.tposition,db.func.avg(Teacher.tsalary),db.func.count(Teacher.tno)).\ + group_by(Teacher.tposition).all() + + course_list = db.session.query(Course,db.func.max(SC.grade),db.func.min(SC.grade),db.func.avg(SC.grade)).\ + join(SC,Course.cno == SC.cno).group_by(Course.cno).all() + + sc_list = db.session.query(SC).group_by(SC.cno).all() + + if request.method == 'GET': + return render_template("admin.html",studentlist=student_list, + teacherlist=teacher_list, + salary=teacher_position_list, + courselist=course_list, + sclist=sc_list) + + if request.method == 'POST': + if request.form['type'] == 'changestudent': + student = db.session.query(Student).get(request.form['sno']) + student.sname = request.form['sname'] + student.sage = request.form['sage'] + student.pwd = request.form['pwd'] + student.ssex = request.form['ssex'] + db.session.commit() + return "修改学生信息成功" + elif request.form['type'] == 'addstudent': + db.session.add(Student(sno = request.form['sno'], + sname=request.form['sname'], + sage = request.form['sage'], + pwd = request.form['pwd'], + ssex=request.form['ssex'] + )) + db.session.commit() + return "添加学生成功" + elif request.form['type'] == 'deletestudent': + db.session.delete(Student.query.get(request.form['sno'])) + db.session.commit() + return "学生已删除" + + elif request.form['type'] == 'changeteacher': + teacher = db.session.query(Teacher).get(request.form['tno']) + teacher.tname = request.form['tname'] + teacher.tposition = request.form['tposition'] + teacher.pwd = request.form['pwd'] + teacher.tsalary = request.form['tsalary'] + db.session.commit() + return "修改教师信息成功" + elif request.form['type'] == 'addteacher': + db.session.add(Teacher(tno = request.form['tno'], + tname=request.form['tname'], + tposition = request.form['tposition'], + pwd = request.form['pwd'], + tsalary=request.form['tsalary'] + )) + db.session.commit() + return "添加教师成功" + elif request.form['type'] == 'deleteteacher': + db.session.delete(Teacher.query.get(request.form['tno'])) + db.session.commit() + return "教师已删除" + + elif request.form['type'] == 'changesc': + sc = db.session.query(SC).filter_by(sno=request.form['sno'],cno=request.form['cno']).first() + sc.grade = request.form['grade'] + db.session.commit() + return "成绩修改成功" + elif request.form['type'] == 'addsc': + db.session.add(SC(cno = request.form['cno'], + sno=request.form['sno'], + grade = request.form['grade'] + )) + db.session.commit() + return "选课信息添加成功" + elif request.form['type'] == 'deletesc': + db.session.delete(Teacher.query().filter_by(sno=request.form['sno'],cno=request.form['cno']).first()) + db.session.commit() + return "选课信息已删除" + + + + +@app.errorhandler(404) +def page_not_found(e): + return redirect('/login') + + +with app.app_context(): + db.engine.connect() + + +if __name__ == '__main__': + app.run() diff --git a/school system/templates/admin.html b/school system/templates/admin.html new file mode 100644 index 0000000..1be0fcf --- /dev/null +++ b/school system/templates/admin.html @@ -0,0 +1,268 @@ + + + + + 管理员系统 + + +

数据库实验-管理员系统

+
+

学生信息修改

+ + + + + + + + + + + + + + + {% for i in studentlist %} + + + + + + + + + + + + + {% endfor %} + + + + + + + + + + + + +
学号姓名性别年龄密码总学分提交修改删除学生
+ {{ i[0].sno }} + + + + {% if i[0].ssex == '男' %} + + {% else %} + + {% endif %} + + + + + + {{ i[1] }} + + + + +
+ + + + + + + + + + + +
+
+ +

教师信息修改

+ + + + + + + + + + + + + + {% for i in teacherlist %} + + + + + + + + + + + + {% endfor %} + + + + + + + + + + + + +
教师号姓名职称工资密码提交修改删除教师
+ {{ i.tno }} + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+ +

教师信息统计

+ + + + + + + + + + {% for i in salary %} + + + + + + {% endfor %} + +
职称平均工资人数
+ {{ i[0] }} + + {{ i[1] }} + + {{ i[2] }} +
+
+ +

课程信息统计

+ + + + + + + + + + + + {% for i in courselist %} + + + + + + + + {% endfor %} + +
课程号课程名最高成绩最低成绩平均成绩
{{i[0].cno}}{{ i[0].cname }}{{i[1]}}{{i[2]}}{{i[3]}}
a +
+ +

选课及成绩统计

+ + + + + + + + + + + + {% for i in sclist %} + + + + + + + + + + {% endfor %} + + + + + + + + + + +
课程号学生号成绩修改删除
+ {{ i.cno }} + + {{ i.sno }} + + + + + + +
+ + + + + + + +
+ + \ No newline at end of file diff --git a/school system/templates/login.html b/school system/templates/login.html new file mode 100644 index 0000000..5dc07b0 --- /dev/null +++ b/school system/templates/login.html @@ -0,0 +1,27 @@ + + + + 数据库实验 + + + +

数据库实验-学校管理系统

+
+ +

+ + +

+ + +

+ + +
+ + + \ No newline at end of file diff --git a/school system/templates/student.html b/school system/templates/student.html new file mode 100644 index 0000000..8d6d187 --- /dev/null +++ b/school system/templates/student.html @@ -0,0 +1,94 @@ + + + + 学生系统 + + + +

数据库实验-学生系统

+
+

个人信息修改

+
+ + +
+ + {% if usergender == '男' %} + 男 + {% else %} + 男 + {% endif %} + + {% if usergender == '女' %} + 女 + {% else %} + 女 + {% endif %} + + +
+ + +
+ + +
+
+ +

选课信息

+ + + + + + + + + + + {% for i in usercourse %} + + + + + + + {% endfor %} + +
课程号课程名科任老师编号学分
{{ i[1].cno }}{{ i[1].cname }}{{ i[1].tno }}{{ i[1].ccredit }}
+
合计学分:{{ totalcredit }}
+
+ +

选课

+ + + + + + + + + + + + {% for i in selectablecourse %} + + + + + + + + {% endfor %} + +
课程号课程名科任老师编号学分选择
{{ i.cno }}{{ i.cname }}{{ i.tno }}{{ i.ccredit }} +
+ + + +
+
+ + + + \ No newline at end of file