学生成绩管理系统是用计算机对学生的基本信息和各门课程成绩进行日常管理,例如显示所有学生信息、增加学生、修改学生信息、查询学生成绩、删除学生、统计总分平均分最高分、学生成绩排序等功能。
请编写一个程序实现学生成绩管理系统,要求:
(1)所有学生的信息都存储在云服务器MySQL数据库(Mariadb)中。
(2)打印“学生成绩管理系统”的功能菜单,提示用户选择对应的功能序号;
(3)通过操作云服务器MySQL数据库实现显示所有学生信息、增加学生、修改学生信息、查询学生成绩、删除学生、统计总分平均分最高分、学生成绩排序等功能。
ssh终端显示
进入数据库
显示数据库的表
本人创建了一个表名为studentinfo,7个字段的表
代码实现
import pymysql
#打开数据库连接,参数:Mysql服务器IP、用户名、密码、数据库名称。
db = pymysql.connect(host="你的服务器ip",
user="用户名",
password="密码",
db="数据库名",
charset="utf8",
cursorclass=pymysql.cursors.DictCursor)
# 使用cursor()方法创建游标对象cursor
cursor = db.cursor()
#提交数据
db.commit()
# 定义sql查询语句
sql_search = "select * from studentinfo;"
# 执行sql语句
cursor.execute(sql_search)
# 使用fetchall()方法获取数据,并将数据赋值给data变量
data = cursor.fetchall()
# print(type(data))
def main():
while True:
printMenu() # 打印菜单
key = int(input('请输入功能对应的数字:'))
if key == 1:
showstuInfo()
elif key == 2:
addInfo()
elif key == 3:
modifystuInfo()
elif key == 4:
showstuScr()
elif key == 5:
deleteInfo()
elif key == 6:
statiScr()
elif key == 7:
scoreSort()
elif key == 8:
quitConfirm = input('真的要退出吗?(Yes or No):')
if quitConfirm == 'Yes':
break # 结束循环
else:
print('输入有误,请重新输入')
'''打印功能提示'''
def printMenu():
print('=' * 40)
print(' 学生信息管理系统')
print(' 1.显示学生信息')
print(' 2.增加学生信息')
print(' 3.修改学生信息')
print(' 4.查询学生信息成绩')
print(' 5.删除学生')
print(' 6.统计总分平均分最高分')
print(' 7.学生成绩排序')
print(' 8.退出系统')
print('=' * 40)
'''1.显示学生信息'''
def showstuInfo():
# 遍历数据
print("**********************学生信息表***********************")
print("id 姓名 性别 语文成绩 数学成绩 英语成绩 总分")
for i in data:
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" % (i["id"], i["name"], i["sex"], i["yuwen"], i["shuxue"], i["yingyu"],i["totall"]))
print('*'*53)
'''2.增加学生信息'''
def addInfo():
new_id = int(input("学生id:"))
new_name = input("学生姓名:")
new_sex = input("学生姓别:")
new_s1 = int(input("学生语文成绩:"))
new_s2 = int(input("学生数学成绩:"))
new_s3 = int(input("学生英语成绩:"))
# 定义sql插入语句
sql_insert = "insert into studentinfo (id,name,sex,yuwen,shuxue,yingyu,totall) values(%d,'%s','%s',%d,%d,%d,%d);"%(new_id,new_name,new_sex,new_s1,new_s2,new_s3,new_s1+new_s2+new_s3)
# 使用execute方法执行sql语句
cursor.execute(sql_insert)
db.commit()
'''3.修改学生信息'''
def modifystuInfo():
modi_id = int(input("输入要修改学生的id:"))
modi_name = input("学生姓名:")
modi_sex = input("学生姓别:")
modi_s1 = int(input("学生语文成绩:"))
modi_s2 = int(input("学生数学成绩:"))
modi_s3 = int(input("学生英语成绩:"))
# 修改数据
sql_update = "update studentinfo set name = '%s',sex = '%s',yuwen = %d,shuxue = %d,yingyu = %d,totall = %d where id = '%d'"%(modi_name,modi_sex,modi_s1,modi_s2,modi_s3,modi_s1+modi_s2+modi_s3,modi_id)
cursor.execute(sql_update)
db.commit()
'''4.显示学生成绩'''
def showstuScr():
# 遍历数据
print("**********************学生成绩表************************")
print("id 姓名 性别 语文成绩 数学成绩 英语成绩 总分")
for i in data:
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" % (i["id"], i["name"], i["sex"], i["yuwen"], i["shuxue"], i["yingyu"], i["totall"]))
print('*' * 53)
'''5.删除学生'''
def deleteInfo():
delete_id = int(input("要删除学生的id:"))
# 删除数据
sql_dele = "delete from studentinfo where id =%d"%(delete_id)
cursor.execute(sql_dele)
db.commit()
'''6.统计总分平均分最高分'''
def statiScr():
#统计总分
temp = 0
for i in data:
name = i["name"]
sum = int(i["totall"])
print("%s学生总分%d:"%(name,sum))
#平均分
avg = sum/3
print("%s学生平均分%f"%(name,avg))
#总分最高分
if sum >= temp:
max = sum
else:
max = temp
temp = sum
print("总分最高分为%d"%max)
'''max_yuwen = "select max(yuwem) from studentinfo"
cursor.execute(max_yuwen)
db.commit()
print("语文最高分%s"%max_yuwen)
max_shuxue = "select max(shuxue) from studentinfo"
cursor.execute(max_shuxue)
print("语文最高分%s"%max_shuxue)
max_yingyu = "select max(yingyu) from studentinfo"
cursor.execute(max_yingyu)
print("语文最高分%s"%max_yingyu)'''
'''7.学生成绩排序'''
def scoreSort():
print("********************学生成绩升序表**********************")
print("id 姓名 性别 语文成绩 数学成绩 英语成绩 总分")
#sql语句排序
sql_sort = "select id,name,sex,yuwen,shuxue,yingyu,totall from studentinfo order by totall asc;"
cursor.execute(sql_sort)
db.commit()
data = cursor.fetchall()
for i in data:
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" % (i["id"], i["name"], i["sex"], i["yuwen"], i["shuxue"], i["yingyu"], i["totall"]))
'''函数入口'''
if __name__ == "__main__":
main()
#关闭游标
cursor.close()
对sql语句的应用要改为你建立的表名和字段。