学生信息管理系统的七大模块

  • 学生信息管理系统基本理解
  • 系统业务流程
  • 系统开发环境
  • 主函数数设计流程
  • 由函数图得出函数基本骨架
  • 录入学生信息
    • 业务流程
    • 代码如下
  • 删除学生信息
    • 业务流程
    • 代码如下
  • 修改学生信息
    • 业务流程图
    • 代码如下
  • 查找学生信息功能
    • 业务流程图
    • 代码如下
  • 统计学生总人数
    • 业务流程图
    • 代码如下
  • 排序
    • 业务流程图
    • 代码如下
  • 显示所有学生信息
    • 业务图
    • 代码如下
  • 最后得出这个工程完整的代码

学生信息管理系统基本理解

系统业务流程

系统开发环境

·操作系统:Win10·Python解释器版本:Python3.8·开发工具:PyCharm·Python内置模块:os,re

·系统主界面运行效果图如下:

主函数数设计流程

由函数图得出函数基本骨架

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("谢谢使用")breakelse:continueelif choice == 1:insert()  # 录入学生信息elif choice == 2:search()elif choice == 3:delete()elif choice == 4:modifyelif choice == 5:sort()elif choice == 6:total()elif choice == 7:show()def menm():print("=======================学生信息管理系统=====================")print("=======================功能菜单===========================")print("\t\t\t\t\t1.录入学生信息")print("\t\t\t\t\t2.查找学生信息")print("\t\t\t\t\t3.删除学生信息")print("\t\t\t\t\t4.修改学生信息")print("\t\t\t\t\t5.排序")print("\t\t\t\t\t6.统计学生总人数")print("\t\t\t\t\t7.显示所有学生信息")print("\t\t\t\t\t0.退出")def insert():passdef search():passdef delete():passdef modify():passdef sort():passdef total():passdef show():passif __name__ == "__main__":main()

录入学生信息

业务流程

代码如下

def insert():student_list = []while True:id = input("请输入id:")if not id:breakname = input("请输入姓名:")if not name:breaktry: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("是否继续相加")if answer == "y":continueelse: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")stu_txt.close()

删除学生信息

业务流程

代码如下

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=Trueif flag:print(f"id为{student_id}的学生信息已被删除")else:print(f"没有找到id为{student_id}的学生信息")else:print("无学生信息")breakshow()    #删除之后要重新显示学生信息answer=input("是否继续删除?y/n")if answer=="y":continueelse:break

修改学生信息

业务流程图

代码如下

def modify():show()if os.path.exists(filename):with open(filename,"r",encoding="utf-8") as rfile:student_old=rfile.readlines()else:returnstudent_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:breakwfile.write(str(d)+"\n")print("修改成功!!!")else:wfile.write(str(d)+"\n")answer=input("是否要继续修改其他学生信息?y/n")if answer=="y":modify()

查找学生信息功能

业务流程图

代码如下

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()anser = input("是否要继续查询?y/n\n")if anser == "y":continueelse:breakelse:print("暂未保存学员信息")return
def show_student(lst):if len(lst) == 0:print("没查到学生信息,无数据显示!!!")return# 定义标准的显示格式format_title = "{:^6}\t{:^12}\t{:^8}\t{:^01}\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 total():if os.path.exists(filename):with open(filename,"r",encoding="utf-8") as rfile:student=rfile.readlines()if student:print(f"一共有{len(student)}名学生")else:print("还没有录入学生信息")else:print("暂未保存数据信息.....")

排序

业务流程图

代码如下

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:returnasc_or_desc=input("请选择(0.升序  1.降序):")if asc_or_desc=="0":asc_or_desc_bool=Falseelif asc_or_desc=="1":asc_or_desc_bool=Trueelse: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 show():student_lst=[]if os.path.exists(filename):with open(filename,"r",encoding="utf-8") as rfile:student=rfile.readlines()for item in student:student_lst.append(eval(item))if student_lst:show_student(student_lst)else:print("暂未保存过数据!!")

最后得出这个工程完整的代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:杜小皮
# datetime:2021/1/30 10:12
# software: PyCharm
import os  # 删除操作导入os模块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("谢谢使用")breakelse:continueelif 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 menm():print("=======================学生信息管理系统=====================")print("=======================功能菜单===========================")print("\t\t\t\t\t1.录入学生信息")print("\t\t\t\t\t2.查找学生信息")print("\t\t\t\t\t3.删除学生信息")print("\t\t\t\t\t4.修改学生信息")print("\t\t\t\t\t5.排序")print("\t\t\t\t\t6.统计学生总人数")print("\t\t\t\t\t7.显示所有学生信息")print("\t\t\t\t\t0.退出")def insert():student_list = []while True:id = input("请输入id:")if not id:breakname = input("请输入姓名:")if not name:breaktry: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("是否继续相加")if answer == "y":continueelse: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")stu_txt.close()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()anser = input("是否要继续查询?y/n\n")if anser == "y":continueelse:breakelse:print("暂未保存学员信息")returndef show_student(lst):if len(lst) == 0:print("没查到学生信息,无数据显示!!!")return# 定义标准的显示格式format_title = "{:^6}\t{:^12}\t{:^8}\t{:^01}\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 = Trueif flag:print(f"id为{student_id}的学生信息已被删除")else:print(f"没有找到id为{student_id}的学生信息")else:print("无学生信息")breakshow()  # 删除之后要重新显示学生信息answer = input("是否继续删除?y/n")if answer == "y":continueelse:breakdef modify():show()if os.path.exists(filename):with open(filename, "r", encoding="utf-8") as rfile:student_old = rfile.readlines()else:returnstudent_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:breakwfile.write(str(d) + "\n")print("修改成功!!!")else:wfile.write(str(d) + "\n")answer = input("是否要继续修改其他学生信息?y/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:returnasc_or_desc=input("请选择(0.升序  1.降序):")if asc_or_desc=="0":asc_or_desc_bool=Falseelif asc_or_desc=="1":asc_or_desc_bool=Trueelse: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:student=rfile.readlines()if student:print(f"一共有{len(student)}名学生")else:print("还没有录入学生信息")else:print("暂未保存数据信息.....")def show():student_lst=[]if os.path.exists(filename):with open(filename,"r",encoding="utf-8") as rfile:student=rfile.readlines()for item in student:student_lst.append(eval(item))if student_lst:show_student(student_lst)else:print("暂未保存过数据!!")if __name__ == "__main__":main()

学生信息管理系统的解析相关推荐

  1. 学生信息管理系统中遇到的问题解析

    项目概述:做一个简单的学生信息管理系统 要求:学生信息的增删查改,成绩的增删.自动生成的编号. 工具:微软企业库与MiniUI 遇到的问题与解决方法:(前面的博文也有类似的问题和解决方法,这里不再写冗 ...

  2. (解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储

    根据学校对学生信息日常管理需要,学生信息管理系统包括以下功能: 登录系统: 新建学生信息:添加学生信息: 删除学生信息:对指定学生信息进行删除: 修改学生信息:对指定学生信息进行修改 查找学生信息:输 ...

  3. php编写一个学生类_PHP实现简单的学生信息管理系统(web版)

    (∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...

  4. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  5. php学籍信息管理系统心得_PHP实现简单的学生信息管理系统(web版)

    (∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...

  6. WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(一)

    最近通过WPF开发项目,为了对WPF知识点进行总结,所以利用业余时间,开发一个学生信息管理系统[Student Information Management System].本文主要简述如何通过WPF ...

  7. 嘉明SSM学习之基于SSM框架的学生信息管理系统

    项目的github:https://github.com/zjm-cityboy/sims-GitHub.git 可以的话点个小星星嘿嘿 1.项目介绍 1.1.项目环境配置 操作系统:Windows1 ...

  8. 学生管理系统软件实现与测试,学生信息管理系统实现

    <学生信息管理系统实现>由会员分享,可在线阅读,更多相关<学生信息管理系统实现(29页珍藏版)>请在人人文库网上搜索. 1.武汉理工大学VC课程设计学 号: 课 程 设 计课程 ...

  9. 基于C++实现的学生信息管理系统

    点击获取(源码+课程设计报告文档+截图) 摘要 学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化.科学化.规范化和自动化 ...

最新文章

  1. Spring踩坑记录
  2. 安徽建筑大学计算机专业年新,2017年安徽建筑大学计算机技术909数据结构[专业硕士]考研题库...
  3. d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported
  4. MySql取得日期(前一天、某一天)
  5. 关于ARM的22个常用概念
  6. android内部类broadcastreceiver,android 公开静态内部类BroadcastReceiver
  7. 手把手教你如何在安卓平台上实现打电话发短信的功能
  8. kubernetes 部署 dashboard(详细步骤)
  9. java的获取声音振幅_录音获取声音振幅波形显示
  10. [转]bookmark整理之.NET编程相关
  11. 安卓手机管理_安卓手机用户大福利,谷歌将改善手机内存管理,运行更流畅
  12. 有道词典pc离线包打包下载_【超福利】安卓手机上最好用的离线词典
  13. ADRC自抗扰控制学习
  14. 苹果手机如何深度清理_手机应用 | 推荐5款深度清理手机内存的软件
  15. 计算机应用专业的简历自我介绍,计算机应用个人简历模板
  16. 安卓模拟器,需要的自取
  17. RMON学习笔记(一)
  18. CCF C类会议:PAKDD叶老师和闵老师意见反馈
  19. 满足功能安全要求的代码测试方案:Parasoft C++test
  20. 氧含量测量方法:燃料电池法

热门文章

  1. 年终盘点!2017年超有价值的Golang文章
  2. java.sql.SQLSyntaxErrorException
  3. 漂亮好看的小姐姐高颜值美女女神说:习惯是对缺点最好的包容
  4. pyecharts 显示坐标轴线_实战PyQt5: 153-QChart图表之对数坐标轴
  5. 不想上班,有五万块钱闲钱,自己可以做点小生意吗?
  6. 直方图hist函数解释
  7. 经纬度坐标转换成px_知道经纬度坐标如何转换成 X Y坐标
  8. 关系户?Windows 的 Linux 子系统引入最新版本的 Ubuntu。。。
  9. 用理科思想看文科[进阶版] V1.0.0.0.1
  10. 虹软人脸识别-sdk4.1 c++ for linux + Qt5.15 demo 实现