{/'title/':/'Python学生成绩管理系统:数据库实现,学生、教师、管理员功能/',/'description/':/'使用Python构建一个学生成绩管理系统,支持学生、教师、管理员三种角色,涵盖成绩录入、修改、查询、统计等功能,并使用SQLite数据库实现数据持久化。/',/'keywords/':/'学生成绩管理系统, Python, 数据库, SQLite, 学生, 教师, 管理员, 成绩录入, 修改, 查询, 统计/',/'content/':/'import sqlite3//n//n# 连接数据库//nconn = sqlite3.connect('grades.db')//ncursor = conn.cursor()//n//n# 创建学生表//ncursor.execute('''//n CREATE TABLE IF NOT EXISTS students(//n id INTEGER PRIMARY KEY AUTOINCREMENT,//n name TEXT NOT NULL,//n password TEXT NOT NULL,//n grade REAL//n )//n''')//n//n# 创建教师表//ncursor.execute('''//n CREATE TABLE IF NOT EXISTS teachers(//n id INTEGER PRIMARY KEY AUTOINCREMENT,//n name TEXT NOT NULL,//n password TEXT NOT NULL//n )//n''')//n//n# 创建管理员表//ncursor.execute('''//n CREATE TABLE IF NOT EXISTS admins(//n id INTEGER PRIMARY KEY AUTOINCREMENT,//n name TEXT NOT NULL,//n password TEXT NOT NULL//n )//n''')//n//n# 创建成绩表//ncursor.execute('''//n CREATE TABLE IF NOT EXISTS grades(//n student_id INTEGER,//n course TEXT NOT NULL,//n grade REAL,//n FOREIGN KEY(student_id) REFERENCES students(id)//n )//n''')//n//n# 学生登录函数//ndef student_login()://n name = input('请输入学生用户名:')//n password = input('请输入密码:')//n cursor.execute('SELECT * FROM students WHERE name=? AND password=?', (name, password))//n student = cursor.fetchone()//n if student://n print('登录成功!')//n student_menu(student)//n else://n print('用户名或密码错误!')//n//n# 学生菜单函数//ndef student_menu(student)://n while True://n print('--- 学生菜单 ---')//n print('1. 修改密码')//n print('2. 查看成绩')//n print('0. 退出')//n choice = input('请选择操作:')//n if choice == '1'://n change_password(student)//n elif choice == '2'://n view_grades(student)//n elif choice == '0'://n break//n else://n print('请输入正确的选项!')//n//n# 修改密码函数//ndef change_password(user)://n new_password = input('请输入新密码:')//n cursor.execute('UPDATE {} SET password=? WHERE id=?'.format(user[0]), (new_password, user[0]))//n conn.commit()//n print('密码修改成功!')//n//n# 查看成绩函数//ndef view_grades(student)://n cursor.execute('SELECT * FROM grades WHERE student_id=?', (student[0],))//n grades = cursor.fetchall()//n if grades://n for grade in grades://n print('课程:{},成绩:{}'.format(grade[1], grade[2]))//n else://n print('暂无成绩!')//n//n# 教师登录函数//ndef teacher_login()://n name = input('请输入教师用户名:')//n password = input('请输入密码:')//n cursor.execute('SELECT * FROM teachers WHERE name=? AND password=?', (name, password))//n teacher = cursor.fetchone()//n if teacher://n print('登录成功!')//n teacher_menu(teacher)//n else://n print('用户名或密码错误!')//n//n# 教师菜单函数//ndef teacher_menu(teacher)://n while True://n print('--- 教师菜单 ---')//n print('1. 修改密码')//n print('2. 录入学生成绩')//n print('3. 批量上传学生成绩')//n print('4. 查看学生成绩')//n print('0. 退出')//n choice = input('请选择操作:')//n if choice == '1'://n change_password(teacher)//n elif choice == '2'://n add_grade()//n elif choice == '3'://n upload_grades()//n elif choice == '4'://n view_grades()//n elif choice == '0'://n break//n else://n print('请输入正确的选项!')//n//n# 录入学生成绩函数//ndef add_grade()://n student_name = input('请输入学生姓名:')//n course = input('请输入课程名:')//n grade = input('请输入成绩:')//n cursor.execute('SELECT * FROM students WHERE name=?', (student_name,))//n student = cursor.fetchone()//n if student://n cursor.execute('INSERT INTO grades(student_id, course, grade) VALUES(?, ?, ?)', (student[0], course, grade))//n conn.commit()//n print('成绩录入成功!')//n else://n print('学生不存在!')//n//n# 批量上传学生成绩函数//ndef upload_grades()://n file_path = input('请输入文件路径:') # 假设文件中每行格式为:学生姓名,课程名,成绩//n with open(file_path, 'r') as file://n for line in file://n data = line.strip().split(',')//n student_name = data[0]//n course = data[1]//n grade = data[2]//n cursor.execute('SELECT * FROM students WHERE name=?', (student_name,))//n student = cursor.fetchone()//n if student://n cursor.execute('INSERT INTO grades(student_id, course, grade) VALUES(?, ?, ?)', (student[0], course, grade))//n conn.commit()//n print('成绩批量上传成功!')//n//n# 查看学生成绩函数//ndef view_grades()://n course = input('请输入课程名:')//n cursor.execute('SELECT * FROM grades WHERE course=?', (course,))//n grades = cursor.fetchall()//n if grades://n for grade in grades://n print('学生:{},成绩:{}'.format(get_student_name(grade[0]), grade[2]))//n else://n print('暂无成绩!')//n//n# 获取学生姓名函数//ndef get_student_name(student_id)://n cursor.execute('SELECT name FROM students WHERE id=?', (student_id,))//n student = cursor.fetchone()//n return student[0] if student else ''//n//n# 管理员登录函数//ndef admin_login()://n name = input('请输入管理员用户名:')//n password = input('请输入密码:')//n cursor.execute('SELECT * FROM admins WHERE name=? AND password=?', (name, password))//n admin = cursor.fetchone()//n if admin://n print('登录成功!')//n admin_menu()//n else://n print('用户名或密码错误!')//n//n# 管理员菜单函数//ndef admin_menu()://n while True://n print('--- 管理员菜单 ---')//n print('1. 修改密码')//n print('2. 重置密码')//n print('3. 核对成绩')//n print('4. 按姓名模糊查询成绩')//n print('5. 按分数段查询成绩')//n print('6. 成绩排序')//n print('7. 成绩导出')//n print('0. 退出')//n choice = input('请选择操作:')//n if choice == '1'://n change_password(admin)//n elif choice == '2'://n reset_password()//n elif choice == '3'://n verify_grade()//n elif choice == '4'://n search_grade_by_name()//n elif choice == '5'://n search_grade_by_score()//n elif choice == '6'://n sort_grades()//n elif choice == '7'://n export_grades()//n elif choice == '0'://n break//n else://n print('请输入正确的选项!')//n//n# 重置密码函数//ndef reset_password()://n user_type = input('请输入要重置密码的用户类型(学生、教师、管理员):')//n username = input('请输入要重置密码的用户名:')//n new_password = input('请输入新密码:')//n cursor.execute('UPDATE {} SET password=? WHERE name=?'.format(user_type + 's'), (new_password, username))//n conn.commit()//n print('密码重置成功!')//n//n# 核对成绩函数//ndef verify_grade()://n student_name = input('请输入学生姓名:')//n course = input('请输入课程名:')//n new_grade = input('请输入正确的成绩:')//n cursor.execute('SELECT * FROM students WHERE name=?', (student_name,))//n student = cursor.fetchone()//n if student://n cursor.execute('UPDATE grades SET grade=? WHERE student_id=? AND course=?', (new_grade, student[0], course))//n conn.commit()//n print('成绩核对成功!')//n else://n print('学生不存在!')//n//n# 按姓名模糊查询成绩函数//ndef search_grade_by_name()://n keyword = input('请输入姓名关键字:')//n cursor.execute('SELECT * FROM students WHERE name LIKE ?', ('%' + keyword + '%',))//n students = cursor.fetchall()//n if students://n for student in students://n cursor.execute('SELECT * FROM grades WHERE student_id=?', (student[0],))//n grades = cursor.fetchall()//n if grades://n for grade in grades://n print('学生:{},课程:{},成绩:{}'.format(student[1], grade[1], grade[2]))//n else://n print('未找到相关学生!')//n//n# 按分数段查询成绩函数//ndef search_grade_by_score()://n min_score = input('请输入最低分数:')//n max_score = input('请输入最高分数:')//n cursor.execute('SELECT * FROM grades WHERE grade BETWEEN ? AND ?', (min_score, max_score))//n grades = cursor.fetchall()//n if grades://n for grade in grades://n print('学生:{},课程:{},成绩:{}'.format(get_student_name(grade[0]), grade[1], grade[2]))//n else://n print('未找到相关成绩!')//n//n# 成绩排序函数//ndef sort_grades()://n course = input('请输入课程名:')//n cursor.execute('SELECT * FROM grades WHERE course=? ORDER BY grade DESC', (course,))//n grades = cursor.fetchall()//n if grades://n for grade in grades://n print('学生:{},成绩:{}'.format(get_student_name(grade[0]), grade[2]))//n else://n print('暂无成绩!')//n//n# 成绩导出函数//ndef export_grades()://n course = input('请输入课程名:')//n cursor.execute('SELECT * FROM grades WHERE course=?', (course,))//n grades = cursor.fetchall()//n if grades://n with open('grades.csv', 'w') as file://n file.write('学生姓名,课程名,成绩//n')//n for grade in grades://n file.write('{}, {}, {}//n'.format(get_student_name(grade[0]), grade[1], grade[2]))//n print('成绩导出成功!')//n else://n print('暂无成绩!')//n//n# 主程序//nwhile True://n print('--- 学生成绩管理系统 ---')//n print('1. 学生登录')//n print('2. 教师登录')//n print('3. 管理员登录')//n print('0. 退出')//n choice = input('请选择用户类型:')//n if choice == '1'://n student_login()//n elif choice == '2'://n teacher_login()//n elif choice == '3'://n admin_login()//n elif choice == '0'://n break//n else://n print('请输入正确的选项!')//n//n# 关闭数据库连接//nconn.close()//n/


原文地址: https://www.cveoy.top/t/topic/pvhn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录