您现在的位置是:网站首页> 编程资料编程资料

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

2023-05-26 426人已围观

简介 python实现简易的学生信息管理系统_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文件的位置。

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

-六神源码网