1. 运行效果

功能

  • 录入学生信息
  • 查找学生信息
  • 删除学生信息
  • 修改学生信息
  • 排序
  • 统计学生信息
  • 显示所有学生信息

基于python的学生成绩管理系统,具备基本的增删改查功能,包含:录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序、统计学生信息、显示所有学生信息。学生信息保存在文件中,系统通过读写文件来获取和写入学生信息,此外,本系统是通过控制台显示的,适合初学者学习使用。

代码运行效果如下:

2. 代码

源代码下载

函数 说明
menu() 显示主菜单
insert() 录入学生成绩信息
search() 查找学生成绩信息
delete() 删除学生成绩信息
modify() 修改学生成绩信息
sort() 成绩排序
total() 统计学生总人数
show() 显示所有学生成绩信息
import os
import re
filename = 'student.txt'print('================ 欢迎使用学生成绩管理系统V1.0 ================')# 主菜单函数
def menu():print('\n---------------- 主菜单 ----------------')print('1. 录入学生信息')print('2. 查找学生信息')print('3. 删除学生信息')print('4. 修改学生信息')print('5. 排序')print('6. 统计学生总人数')print('7. 显示所有学生信息')print('0. 退出系统')# 主界面函数
def main():x = 7while True:menu()    # 显示主菜单x = int(input('\n请选择功能:'))   # 输入需要使用的功能数字if x == 0:y = input('您确定要退出系统吗?y/n:')if y == 'y' or y == 'Y':print('\n感谢使用学生成绩管理系统V1.0!')breakelse:continueelif x == 1:insert()   # 录入学生信息elif x== 2:search()   # 查找学生信息elif x == 3:delete()   # 删除学生信息elif x == 4:modify()   # 修改学生信息elif x == 5:sort()    # 排序elif x == 6:total()   # 统计学生总人数elif x == 7:show()   # 显示所有学生信息else:print('输入有误,请重新输入!')def insert():   # 录入学生信息student_list = []while True:id = input('请输入学生学号:')if not id:breakname = input('请输入学生姓名:')if not name:breaktry:english = int(input('请输入学生英语成绩:'))python = int(input('请输入学生python成绩:'))math = int(input('请输入学生数学成绩:'))data = int(input('请输入学生数据结构成绩:'))except:print('成绩录入有错,请检查后重新录入!')continuestu = {'id': id, 'name': name, 'english': english, 'python': python, 'math': math, 'data': data}student_list.append(stu)a = input('\n是否继续录入?y/n:')if a == 'y' or a == 'Y':  # 当输入y时,执行下一轮循环,接着录入,否则终止循环continueelse:breaksave(student_list)     # 向文件中写入学生成绩数据print('\n学生成绩录入成功!')def search():   # 查找学生信息stu_query = []  # 定义一个空列表,用来保存查找出的学生信息while True:id = ''name = ''if os.path.exists(filename):   # 判断文件是否存在m = input('\n按id查询请输入1,按姓名查询请输入2,退出请输入0:')if m == '1':id = input('请输入id:')elif m == '2':name = input('请输入name:')elif m == '0':print('\n退出查询模块成功!')returnelse:print('输入有误!')continueelse:print('无学生信息!')with open(filename, 'r', encoding = 'UTF-8') as r_file:stu = r_file.readlines()      # 读取文件中所有信息for i in stu:    # 遍历每条学生信息d = dict(eval(i))   # 转成字典if id != '':if d['id'] == id:   # 判断id值与输入的是否相同,若相同则添加到结果列表中stu_query.append(d)elif name != '':if d['name'] == name:   # 判断name值与输入的是否相同,若相同则添加到结果列表中stu_query.append(d)# 显示查询结果if len(stu_query) == 0:print("暂未查询到学生信息!")else:show_stu(stu_query)   # 显示查询出的学生信息stu_query.clear()           # 清空列表,因为若用户要继续查找,则进入下一轮循环查找,所以要清空该列表def delete():   # 删除学生信息while True:show()id = input('请输入要删除的学生id(输入0结束本功能):')if id != '':if id == '0':print('\n删除模块已关闭!')breakif os.path.exists(filename):   # 查询文件是否存在with open(filename, 'r', encoding = 'UTF-8') as file:stu_old = file.readlines()   # 读取文件中所有信息else:stu_old = []   # 若文件不存在,则建立一个空列表flag = False   # 标记是否删除if stu_old:   # 判断学生列表否有数据with open(filename, 'w', encoding = 'UTF-8') as w_file:d = {}   # 建立一个空字典for i in stu_old:d = dict(eval(i))    # 将字符串转为字典if d['id'] != id:  # 当id值不同时,写入到文件中w_file.write(str(d)+'\n')else:flag = True  # 当查找出要删除的信息时,把标记设置成已删除状态if flag:     # 根据标记判断信息是否删除print(f'\nid为{id}的学生已被删除!')else:print(f'\n没有找到id为{id}的学生信息!')else:print('\n无学生信息!')breakshow()   # 删除后显示所有学生信息def modify():    # 修改学生信息while True:show()id = input('\n输入要修改的学生id(输入0退出):')if id == '0':print('\n退出修改模块成功!')returnif os.path.exists(filename):with open(filename, 'r', encoding = 'UTF-8') as r_file:stu_old = r_file.readlines()else:returnwith open(filename, 'w', encoding = 'UTF-8') as w_file:flag = Falsefor i in stu_old:d = dict(eval(i))if d['id'] == id:    # 查询出要修改的学生信息flag = True    # 设置修改标记为已修改状态a = {'id': id, 'name': '', 'english': 0, 'python': 0, 'math': 0, 'data': 0}while True:try:a['name'] = input(f"请输入姓名({d['name']}):")a['english'] = input(f"请输入英语成绩({d['english']}):")a['python'] = input(f"请输入python成绩({d['python']}):")a['math'] = input(f"请输入数学成绩({d['math']}):")a['data'] = input(f"请输入数据结构成绩({d['data']}):")x = input('\n是否确定修改y/n,')if x == 'y' or x == 'Y':d = a   # a为修改后的信息,当用户确认修改后,将a值赋给d,并将d值写入文件print('\n修改成功!')except:print('输入有误,请重新输入!')breakw_file.write(str(d) + '\n')   # 将修改后的信息写入文件else:w_file.write(str(d) + '\n')if not flag:print('\n未查询到该学生信息!')def sort():    # 排序show()    # 显示学生信息列表if os.path.exists(filename):with open(filename, 'r', encoding = 'UTF-8') as r_file:stu_list = r_file.readlines()stu_new = []for i in stu_list:d = dict(eval(i))stu_new.append(d)else:returnasc_or_desc = input('请选择(0。升序  1.降序):')if asc_or_desc == '0':asc_or_desc_bool = False   # 升序标记elif asc_or_desc == '1':asc_or_desc_bool = True    # 降序标记else:print('输入错误!')m = input('请选择排序方式:(1.按英语成绩排序  2.按python成绩排序  3.按数学成绩排序  4.按数据结构成绩排序 0.按总成绩排序):')if m == '1':    # 按英语成绩排序stu_new.sort(key = lambda x:int(x['english']), reverse = asc_or_desc_bool)elif m == '2':   # 按python成绩排序stu_new.sort(key = lambda x:int(x['python']), reverse = asc_or_desc_bool)elif m == '3':   # 按数学成绩排序stu_new.sort(key = lambda x:int(x['math']), reverse = asc_or_desc_bool)elif m == '4':   # 按数据结构成绩排序stu_new.sort(key = lambda x:int(x['data']), reverse = asc_or_desc_bool)elif m == '0':   # 按总成绩排序stu_new.sort(key = lambda x:int(x['english']) + int(x['python']) + int(x['math']) + int(x['data']), reverse = asc_or_desc_bool)else:print("输入有误!")show_stu(stu_new)def total():   # 统计学生总人数if os.path.exists(filename):with open(filename, 'r', encoding='UTF-8') as r_file:stu = r_file.readlines()if stu:print(f'一共有{len(stu)}名学生!')else:print('暂未录入学生信息!')else:print("暂未保存数据信息!")input('按任意键继续...')def show():   # 显示所有学生信息stu_lst = []if os.path.exists(filename):with open(filename, 'r', encoding = 'UTF-8') as r_file:stu = r_file.readlines()for i in stu:stu_lst.append(eval(i))if stu_lst:show_stu(stu_lst)else:print('\n暂未保存过数据!')def save(lst):try:stu_write = open(filename, 'a', encoding = 'UTF-8')   # 如果文件存在,则以追加的方式录入except:stu_write = open(filename, 'w', encoding = 'UTF-8')   # 如果文件不存在,则写入文件for i in lst:stu_write.write(str(i) + '\n')   # 写入文件并换行stu_write.close()   # 关闭I/O流def show_stu(lst):format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^6}\t{:^14}'print(format_title.format('id', '姓名', '英语成绩', 'python成绩', '数学成绩', '数据结构成绩', '总成绩'))print('=======================================================================================')format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^16}\t{:^8}'for i in lst:print(format_data.format(i.get('id'), i.get('name'), i.get('english'), i.get('python'), i.get('math'),i.get('data'),int(i.get('english')) + int(i.get('python')) + int(i.get('math')) + int(i.get('data'))))x = input('按任意键继续...')if __name__ == '__main__':main()

有问题qq联系1663301665

基于python的学生成绩管理系统相关推荐

  1. 基于python的学生成绩管理系统毕业设计源码071143

    Django学生成绩管理 摘   要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...

  2. (附源码)python+mysql+基于python的学生成绩管理系统 毕业设计071143

    Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷而又 ...

  3. python+mysql+基于python的学生成绩管理系统 毕业设计-附源码071143

    Django学生成绩管理 摘   要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...

  4. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  5. python学生管理系统-python实现学生成绩管理系统

    本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student ...

  6. 基于ssm的学生成绩管理系统

    CMS 基于ssm的学生成绩管理系统.管理员:admin密码:123456 一.说明 1.前端采用了layui这个框架,使用了freemark模板引擎: 后台采用Java编写,使用了spring+sp ...

  7. php简单学生管理系统设计与实现,基于PHP的学生成绩管理系统的设计与实现.doc...

    基于PHP的学生成绩管理系统的设计与实现.doc 基于PHP的学生成绩管理系统的设计与实现 摘 要: 我国高等职业教育迎来了蓬勃发展的新局面,各院校招生规模不断扩大,学校的教学管理负担越来越重.为了提 ...

  8. 学生成绩管理系统实验报告_学习60天python成果,Python变成学生成绩管理系统

    学习60天python成果,Python变成学生成绩管理系统 大家好,我是一名刚进入大学的python新秀,初次来到博客,希望通过博客想大家分享一下自己的学习成果,并记录自己的在大数据方向的经历,希望 ...

  9. 基于PHP的学生成绩管理系统

    一 项目介绍 基于PHP的学生成绩管理系统 原生PHP编写,数据库mysql 可搭建在phpstudy下,三分钟快速部署. 二 主要功能 1 用户注册/登录 修改密码 2 学生信息管理(增删改查) 3 ...

最新文章

  1. mysql innodb_data_file_path_关于innodb_data_file_path设置
  2. scipy.sparse.coo_matrix、csr_matrix、lil_matrix、dia_matrix
  3. 每天一个linux命令(16):which命令
  4. 区块链BaaS云服务(14)华大BGI区块链“安全多方计算“
  5. Nginx教程-location配置
  6. Vue v-for使用详解
  7. java的封装性的优点_18、Java的三大特性之封装
  8. Java提高篇 —— 抽象类与接口
  9. ES查询-基本查询续
  10. in、at和on作为时间介词_23
  11. 惠普打印机换硒鼓(墨盒)
  12. IntelliJ IDEA2017.3 破解
  13. 企业管理系统可视化权限功能设计
  14. Dracoo Master天龙卡牌大师
  15. (4)pokeman_用图片对模型进行测试
  16. 查看表空间和解决表空间扩容ORA-01119:ORA-27040问题
  17. iOS 手机安装Charles证书失败解决方法
  18. 三个Python自动化测试高效工具的使用总结
  19. DPU芯片企业中科驭数加入龙蜥社区,构建异构算力生态
  20. java 实现导出excel模板

热门文章

  1. NOIP2012提高组day1题解
  2. 身份证过期了,补办的身份证还没拿到,可以参考全国计算机等级考试吗?
  3. 3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)
  4. Docker私有镜像仓库是什么?
  5. 用Portainer安装Jellyfin媒体服务器(安装篇)
  6. time_t与SYSTEMTIME相互转换
  7. 入坑爬虫(二)编写第一个python小爬虫
  8. 2023招商Fintech数据赛道rank33 赛后分享
  9. C++JZ83 剪绳子(进阶版)
  10. 如何解决并修理Windows XP SP2的“受限制或无连接”的错误信息