好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python实现简易的学生信息管理系统

本文实例为大家分享了python实现简易学生信息管理系统的具体代码,供大家参考,具体内容如下

一、系统功能

1.录入学生信息

2.查找学生信息

3.修改学生信息

4.删除学生信息

5.成绩排序

6.统计学生总人数

7.显示所有学生信息

0.退出系统

二、系统开发环境

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文件的位置。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

查看更多关于python实现简易的学生信息管理系统的详细内容...

  阅读:52次