用python编写学生管理系统,python编辑学生信息系统

avatar
作者
筋斗云
阅读量:2

这篇文章主要介绍了python编写学生信息管理系统的学生信息保存在哪里,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

✅作者简介:大家好我是Xlong,一枚正在学习COMSOL、Python的工科研究僧
📃个人主页: Xlong的个人博客主页
🔥系列专栏:Python学习
💖如果觉得博主的文章还不错的话,请👍支持一下博主哦🤞

目录

一、需求分析

二、系统分析

三、系统开发必备

四、主函数设计

五、学生信息维护模块设计

六、查询/统计模块设计

七、排序模块设计

八、项目打包

九、代码


一、需求分析

1.学生管理系统应具备的功能:

(1)添加学生及成绩信息

(2)将学生信息保存到文件中

(3)修改和删除学生信息

(4)查询学生信息

(5)根据学生成绩进行排序

(6)统计学生的总分

二、系统分析

1.系统功能结构:学生信息管理系统的7大模块

(1)录入学生信息模块

(2)查找学生信息模块

(3)删除学生信息模块

(4)修改学生信息模块

(5)学生成绩排名模块

(6)统计学生总人数模块

(7)显示全部学生信息模块

2.系统业务流程:

三、系统开发必备

1.系统开发环境:

(1)操作系统:win10

(2)Python解释器版本:Python3.9.10

(3)开发工具:Pycharm

(4)Python内置模块:os,re

四、主函数设计

 1.实现主函数

五、学生信息维护模块设计

1.实现录入学生信息功能

 2.具体实现:

(1)save(student)函数,用于将学生信息保存到文件

(2)insert()函数,用于录入学生信息

3.删除学生信息功能:业务流程

 4.修改学生信息功能:业务流程

 5.查找学生信息功能:业务流程

六、查询/统计模块设计

1.统计学生总人数功能:业务流程

2.显示所有学生信息功能:业务流程

七、排序模块设计

八、项目打包

1.安装第三方模块:

(1)在线安装方式;pip install Pylnstaller

(2)执行打包操作:C:\Users\jjlu>pyinstaller -F E:\软件相关\Python\vippython\chap16\stusyste.py

最后打包的exe路径在C:\Users\jjlu\dist

九、代码

import os.path  #导入os.path模块  def menm():    #菜单     print('==========================学生信息管理系统==========================')     print('------------------------------功能菜单-----------------------------')     print('\t\t\t   1.录入学生信息')     print('\t\t\t   2.查找学生信息')     print('\t\t\t   3.删除学生信息')     print('\t\t\t   4.修改学生信息')     print('\t\t\t   5.排序')     print('\t\t\t   6.统计学生总人数')     print('\t\t\t   7.显示所有学生信息')     print('\t\t\t   0.退出系统')     print('-------------------------------------------------------------------')  filename = 'student.txt'# 文件名   def main(): #主程序     while True:         menm()  #调用菜单函数         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  #退出系统                 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(如1001):')         if not id:# 防止手滑             break         name = input('请输入姓名:')         if not name:             break          try:             english = int(input('请输入英语成绩:'))             python = int(input('请输入python成绩:'))             java = int(input('请输入Java成绩:'))         except:             print('输入无效,不是整数类型,请重新输入')             continue         #将录入的学生信息保存到字典当中         student ={'id':id,'name':name,'english':english,'python':python,'java':java}         #将学生信息添加到列表中         student_list.append(student)         answer = input('是否继续添加?y/n\n')         if answer == 'y':             continue         else:             break     #调用save()函数     save(student_list)     print('学生信息录入完毕!!!')   def save(lst):# 保存     try:         stu_txt = open(filename,'a',encoding='utf-8')     except:         stu_txt = open(filename,'w',encoding='utf-8')     for item in lst:         stu_txt.write(str(item)+'\n')# 将内容写入文件中   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\n')             if answer =='y':                 continue             else:                 break         else:             print('暂未保存学生信息')             return def show_student(lst):     if len(lst)==0:         print('没有查询到学生信息,无数据显示!!!')         return     #定义标题显示格式     format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'     print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))     #定义内容的显示格式     format_data ='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\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'),                                  int(item.get('english'))+int(item.get('python'))+int(item.get('java'))                                  )) 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\n')             if answer == 'y':                 continue             else:                 break 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('请输入英语成绩:')                         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\n')         if answer == 'y':             modify()  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('请选择排序方式(1.按英语成绩排序 2.按python成绩排序 3.按java成绩排序 0.按总成绩排序):')     if 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)     elif mode == '0':         student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_or_desc_bool)     else:         print('您的输入有误,请重新输入!!!')         sort()     show_student(student_new)  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('暂未保存数据信息......') 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('暂未保存过数据!!!')  if __name__ == '__main__':     main()

持续更新中......

原创不易,各位看官请随手点个赞和关注哦,感谢!!!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!