python实现简易的学生信息管理系统
作者:长得丑就要多读书 发布时间:2021-08-24 12:07:09
标签:python,信息,管理系统
本文实例为大家分享了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文件的位置。
来源:https://blog.csdn.net/qq_40523659/article/details/119516527
0
投稿
猜你喜欢
- 蜜蜂可以看到紫外线,人则看不到;蛇和蚊子可以看到红外线,人则看不到。火狐(Firefox)浏览器也可以看到人们看不到的东西,但迄今为止,这些
- 引言最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器
- 题目:用 JavaScript 代码实现空位补零,比如 pad(12, 3) => 012实现一:/* 平淡无奇法 */functio
- 语法格式如下:assert expression等价于:if not expression: raise AssertionErrorass
- 开门见山自动化测试过程中,一般测试结果都会以邮件的形式发送给相关人员,那么,在Python中,如何编写代码将邮件发送给对应的用户?同时,发送
- 可以在Mac OS X 10.2.x(“Jaguar”)和以上版本上Mac OS X使用二进制安装软件包的PKG格式代替二进制分发版来安装M
- 一、不要使用可变对象作为函数默认值In [1]: def append_to_list(value, def_list=[]):
- Sun公司和Zmanda在3月18号声称他们正在一起合作,为MySQL Enterprise用户交付一种全面、全局数据备份与恢复解决方案。现
- 使用MySQL,目前你可以在三种基本数据库表格式间选择。当你创建一张表时,你可以告诉MySQL它应该对于表使用哪个表类型。MySQL将总是创
- 一.错误分类1. 语法错误也称为解析错误,发生在传统编程语言的编译时,在JavaScript中发生在解释时,这些错误是由代码中的意外字符直接
- 前言Python代码缩进和测试模块是大家学习python必不可少的一部分,本文主要介绍了关于Python代码缩进和测试模块的相关内容,分享出
- 建立池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户
- 一直以来,ACCESS数据库中的申报数据在分公司与总公司之间传递,用EXCEL或DBASE、TXT甚至ACCESS等格式,我总觉得不太理想。
- 本文实例讲述了php实现压缩多个CSS与JS文件的方法。分享给大家供大家参考。具体实现方法如下:1. 压缩css<?php
- 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8)MySQL 字符集:UTF-8 U
- oblog 推出了4.0的最新版本,这个不是重点,重点是4.0的版本中附带了xml-rpc支持。oblog的支持代表着大量的国内blog站点
- reload() 简介作用:用于重新载入之前载入的模块语法格式:reload(module)参数:module为模块对象,必须已经被加载返回
- Fucklt.py 使用了最先进的技术能够使你的代码不管里面有什么样的错误,你只管 FuckIt,程序就能"正常"执行,
- 引伸阅读解读absolute与relativeposition:relative/absolute无法冲破的等级定位一直是WEB标准应用中的
- 它在Lynx里也会运行得很好:<%@ Language=VBScript %><HTML><