用Mysql编写学生管理系统(数据库版本)

学生成绩管理系统是用计算机对学生的基本信息和各门课程成绩进行日常管理,例如显示所有学生信息、增加学生、修改学生信息、查询学生成绩、删除学生、统计总分平均分最高分、学生成绩排序等功能。

请编写一个程序实现学生成绩管理系统,要求:

(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语句的应用要改为你建立的表名和字段。

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值