基于python的学生成绩管理系统
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的学生成绩管理系统相关推荐
- 基于python的学生成绩管理系统毕业设计源码071143
Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...
- (附源码)python+mysql+基于python的学生成绩管理系统 毕业设计071143
Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷而又 ...
- python+mysql+基于python的学生成绩管理系统 毕业设计-附源码071143
Django学生成绩管理 摘 要 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革.多样性.质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化.依照这一现实为基础,设计一个快捷 ...
- 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统
<C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...
- python学生管理系统-python实现学生成绩管理系统
本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student ...
- 基于ssm的学生成绩管理系统
CMS 基于ssm的学生成绩管理系统.管理员:admin密码:123456 一.说明 1.前端采用了layui这个框架,使用了freemark模板引擎: 后台采用Java编写,使用了spring+sp ...
- php简单学生管理系统设计与实现,基于PHP的学生成绩管理系统的设计与实现.doc...
基于PHP的学生成绩管理系统的设计与实现.doc 基于PHP的学生成绩管理系统的设计与实现 摘 要: 我国高等职业教育迎来了蓬勃发展的新局面,各院校招生规模不断扩大,学校的教学管理负担越来越重.为了提 ...
- 学生成绩管理系统实验报告_学习60天python成果,Python变成学生成绩管理系统
学习60天python成果,Python变成学生成绩管理系统 大家好,我是一名刚进入大学的python新秀,初次来到博客,希望通过博客想大家分享一下自己的学习成果,并记录自己的在大数据方向的经历,希望 ...
- 基于PHP的学生成绩管理系统
一 项目介绍 基于PHP的学生成绩管理系统 原生PHP编写,数据库mysql 可搭建在phpstudy下,三分钟快速部署. 二 主要功能 1 用户注册/登录 修改密码 2 学生信息管理(增删改查) 3 ...
最新文章
- mysql innodb_data_file_path_关于innodb_data_file_path设置
- scipy.sparse.coo_matrix、csr_matrix、lil_matrix、dia_matrix
- 每天一个linux命令(16):which命令
- 区块链BaaS云服务(14)华大BGI区块链“安全多方计算“
- Nginx教程-location配置
- Vue v-for使用详解
- java的封装性的优点_18、Java的三大特性之封装
- Java提高篇 —— 抽象类与接口
- ES查询-基本查询续
- in、at和on作为时间介词_23
- 惠普打印机换硒鼓(墨盒)
- IntelliJ IDEA2017.3 破解
- 企业管理系统可视化权限功能设计
- Dracoo Master天龙卡牌大师
- (4)pokeman_用图片对模型进行测试
- 查看表空间和解决表空间扩容ORA-01119:ORA-27040问题
- iOS 手机安装Charles证书失败解决方法
- 三个Python自动化测试高效工具的使用总结
- DPU芯片企业中科驭数加入龙蜥社区,构建异构算力生态
- java 实现导出excel模板
热门文章
- NOIP2012提高组day1题解
- 身份证过期了,补办的身份证还没拿到,可以参考全国计算机等级考试吗?
- 3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)
- Docker私有镜像仓库是什么?
- 用Portainer安装Jellyfin媒体服务器(安装篇)
- time_t与SYSTEMTIME相互转换
- 入坑爬虫(二)编写第一个python小爬虫
- 2023招商Fintech数据赛道rank33 赛后分享
- C++JZ83 剪绳子(进阶版)
- 如何解决并修理Windows XP SP2的“受限制或无连接”的错误信息