python怎么实现简易的学生信息管理系统
来源:亿速云
2024-04-04 10:36:35
0浏览
收藏
今天golang学习网给大家带来了《python怎么实现简易的学生信息管理系统》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~
一、系统功能
1.录入学生信息
2.查找学生信息
3.修改学生信息
4.删除学生信息
5.成绩排序
6.统计学生总人数
7.显示所有学生信息
0.退出系统
二、系统开发环境
1.操作系统:win7
2.开发工具:PyCharm
3.Python内置模块:os,re
三、实现代码
import os
filename='students.txt'
def main():
while True:
menum()
choice=int(input('请选择功能:'))
if choice in [0,1,2,3,4,5,6,7]:
if choice==0:
answer=input('您确定要退出系统吗?(y/n)')
if answer=='y' or answer=='Y':
print('感谢您的使用!')
break #退出while循环并退出系统
else:
continue
elif choice == 1:
insert() #录入学生信息
elif choice == 2:
search() #查找学生信息
elif choice == 3:
delete() #删除学生信息
elif choice == 4:
modify() #修改学生信息
elif choice == 5:
sort() #成绩排序
elif choice == 6:
total() #统计学生总人数
elif choice == 7:
show() #显示所有学生信息
def insert():
student_list=[] #用于存储学生信息,列表每个元素是字典。
while True:
id=input('请输入学生ID:')
if not id:
break
name=input('请输入学生姓名:')
if not name:
break
try:
Englist=int(input('请输入英语成绩:'))
Python=int(input('请输入Python成绩:'))
Java=int(input('请输入Java成绩:'))
except:
print('输入无效,不是整数类型,请重新输入!')
continue
#将录入的学生信息保存到字典中
student={'id':id,'name':name,'English':Englist,'Python':Python,'Java':Java}
#将学生信息添加到列表中
student_list.append(student)
answer=input('是否继续添加?(y/n)')
if answer=='y' or answer=='Y':
continue
else:
break
#将学生信息保存在文件中
save(student_list)
print('学生信息录入完毕!')
pass
def search():
student_query=[] #用列表存储,防止有同名学生。
while True:
id=''
name=''
if os.path.exists(filename):
mode=input('按ID查找请输入1,按姓名查找请输入2:')
if mode == '1':
id=input('请输入要查找的学生ID:')
elif mode == '2':
name=input('请输入要查找的学生姓名:')
else:
print('您的输入有误,请重新输入!')
search()
with open(filename,'r',encoding='utf-8') as rfile:
student=rfile.readlines()
for item in student:
d=dict(eval(item))
if id!='':
if d['id']==id:
student_query.append(d)
elif name!='':
if d['name']==name:
student_query.append(d)
#显示查询结果
show_student(student_query)
student_query.clear() #清空列表
answer=input('是否要继续查询?(y/n)')
if answer=='y' or answer=='Y':
continue
else:
break
else:
print('暂未保存学生信息。')
return
pass
def delete():
while True:
student_id=input('请输入要删除的学生ID:')
if student_id != '':
if os.path.exists(filename): #判断文件是否存在
with open(filename,'r',encoding='utf-8') as file:
student_old=file.readlines() #读取所有学生信息并保存在列表中
else:
student_old=[]
flag=False #用于标记是否删除
if student_old:
with open(filename,'w',encoding='utf-8') as wfile:
d={}
for item in student_old: #遍历学生信息列表
d=dict(eval(item)) #将字符串转成字典
if d['id']!=student_id:
wfile.write(str(d)+'\n')
else:
flag=True
if flag:
print(f'id为{student_id}的学生信息已被删除')
else:
print(f'没有找到ID为{student_id}的学生信息')
else:
print('无此学生信息')
break
show() #删完之后重新显示所有学生信息
answer=input('是否继续删除?(y/n)')
if answer=='y' or answer=='Y':
continue
else:
break
pass
def modify():
show()
if os.path.exists(filename): #判断文件是否存在
with open(filename,'r',encoding='utf-8') as rfile:
student_old=rfile.readlines()
else:
return #结束函数
student_id=input('请输入要修改信息的学生ID:')
with open(filename,'w',encoding='utf-8') as wfile:
for item in student_old:
d=dict(eval(item))
if d['id']==student_id:
print('找到此学生信息,可以修改。')
while True:
try:
d['name']=input('请输入学生姓名:')
d['English']=input('请输入English成绩:')
d['Python']=input('请输入Python成绩:')
d['Java']=input('请输入Java成绩:')
except:
print('您的输入有误请重新输入!')
else:
break
wfile.write(str(d)+'\n')
print('修改成功!')
else:
wfile.write(str(d)+'\n')
answer=input('是否继续修改其他学生信息?(y/n)')
if answer=='y':
modify()
pass
def sort():
show()
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8') as rfile:
student_list=rfile.readlines()
student_new=[]
for item in student_list:
d=dict(eval(item))
student_new.append(d)
else:
return
asc_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('您的输入有误,请重新输入!')
sort()
mode=input('请选择排序方式(0:按总成绩排序,1:按English成绩排序,2:按Python成绩排序,3:按Java成绩排序)')
if mode=='0':
student_new.sort(key=lambda x: int(x['English'])+int(x['Python'])+int(x['Java']), reverse=asc_or_desc_bool)
elif mode=='1':
student_new.sort(key=lambda x:int(x['English']),reverse=asc_or_desc_bool)
elif mode=='2':
student_new.sort(key=lambda x: int(x['Python']), reverse=asc_or_desc_bool)
elif mode=='3':
student_new.sort(key=lambda x: int(x['Java']), reverse=asc_or_desc_bool)
else:
print('您的输入有误,请重新输入!')
sort()
show_student(student_new)
pass
def total():
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8') as rfile:
students=rfile.readlines()
if students:
print(f'一共有{len(students)}名学生')
else:
print('还没有录入学生信息!')
else:
print('暂未保存学生信息......')
pass
def show():
student_lst=[]
if os.path.exists(filename):
with open(filename,'r',encoding='utf-8') as rfile:
students=rfile.readlines()
for item in students:
student_lst.append(eval(item))
if student_lst:
show_student(student_lst)
else:
print('暂未保存过数据!')
pass
def save(stu_list):
try:
stu_txt=open(filename,'a',encoding='utf=8')
except:
stu_txt=open(filename,'w',encoding='utf-8')
for item in stu_list:
stu_txt.write(str(item)+'\n')
stu_txt.close()
def show_student(lst):
if len(lst)==0:
print('没有查到学生信息,无数据显示!')
return
#定义标题显示格式
format_title='{:^6}\t{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:^8}'
print(format_title.format('ID','姓名','English成绩','Python成绩','Java成绩','总成绩'))
#定义内容显示格式
format_data='{:^6}\t{:^12}\t{:^10}\t{:^18}\t{:^14}\t{:^8}'
for item in lst:
print(format_data.format(item.get('id'),item.get('name'),item.get('English'),item.get('Python'),item.get('Java'),str(int(item.get('English'))+int(item.get('Python'))+int(item.get('Java')))))
pass
def menum():
print('-------------------学生信息管理系统--------------------')
print('-----------------------功能菜单------------------------')
print(' 1.录入学生信息')
print(' 2.查找学生信息')
print(' 3.删除学生信息')
print(' 4.修改学生信息')
print(' 5.成绩排序')
print(' 6.统计学生总人数')
print(' 7.显示所有学生信息')
print(' 0.退出系统')
print('------------------------------------------------------')
main()四、项目打包并生成.exe可执行文件
1.安装第三方模块,打开dos窗口,输入:pip install PyInstaller并回车,
2.输入:pyinstaller -F 程序文件具体位置,
3.回车后即可在输出内容的倒数第二行看到.exe文件的位置。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
版本声明
本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
解析 PostgreSQL TIMESTAMP 类型的值时出现问题
- 上一篇
- 解析 PostgreSQL TIMESTAMP 类型的值时出现问题
- 下一篇
- 东风风行中大型轿车星海 S7 实车亮相,官方称售价区间 13 万-20 万元
查看更多
最新文章
-
- 文章 · python教程 | 11分钟前 |
- Python文件读取技巧:strip与split使用解析
- 349浏览 收藏
-
- 文章 · python教程 | 26分钟前 |
- Python处理CSV列数不一致与编码问题详解
- 490浏览 收藏
-
- 文章 · python教程 | 26分钟前 | docker Python 虚拟环境 跨平台 pyinstaller
- Python跨平台开发全解析
- 424浏览 收藏
-
- 文章 · python教程 | 37分钟前 | Python 环境搭建
- Python新手环境搭建全攻略
- 399浏览 收藏
-
- 文章 · python教程 | 1小时前 |
- SlackBoltSocket模式自动重载方法
- 261浏览 收藏
-
- 文章 · python教程 | 1小时前 |
- 多进程与多线程区别全解析
- 174浏览 收藏
-
- 文章 · python教程 | 1小时前 |
- 彻底卸载WindowsPython的完整方法
- 118浏览 收藏
-
- 文章 · python教程 | 2小时前 |
- Python内存访问优化技巧分享
- 180浏览 收藏
-
- 文章 · python教程 | 3小时前 |
- 合并两棵二叉搜索树的有序列表方法
- 488浏览 收藏
-
- 文章 · python教程 | 4小时前 | Python GitHubActions 多版本测试 setup-python 缓存依赖
- GitHubActions配置Python环境教程
- 471浏览 收藏
-
- 文章 · python教程 | 4小时前 |
- Python多继承中Mixin用法详解
- 411浏览 收藏
查看更多
课程推荐
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
查看更多
AI推荐
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3196次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3409次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3439次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4547次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3817次使用
查看更多
相关文章
-
- Flask框架安装技巧:让你的开发更高效
- 2024-01-03 501浏览
-
- Django框架中的并发处理技巧
- 2024-01-22 501浏览
-
- 提升Python包下载速度的方法——正确配置pip的国内源
- 2024-01-17 501浏览
-
- Python与C++:哪个编程语言更适合初学者?
- 2024-03-25 501浏览
-
- 品牌建设技巧
- 2024-04-06 501浏览

