python学生教务管理系统

基本架构
#----------------------python学生信息管理统---------------------#
需求设计:
1.添加学生的成绩信息
2.学生信息保存在文件夹中
3.修改及删除学生信息
4.查询学生的信息
5.根据学生的成绩进行排名
6.计算总成绩进行排列
基本系统设定
模块一:
学生成绩维护部分
1.录入学生信息
2.删除学生信息
3.修改学生信息
模块二:
查询/统计模块
1.按姓名查找
2.按学号查找
3查询显示所有学生的信息
4.统计学生总人数
模块三:
排序:
1。每门程序排列
2.综合成绩排列
内置模块 :re 、os

需要导入函数

import os
import re

界面模块

def menu():
print( " |-----------------------------学生信息管理系统-----------------------------|\n",
“| |\n”,
“| 1.学生信息录入 |\n”,
“| 2.学生信息修改 |\n”,
“| 3.学生信息查询 |\n”,
“| 4.学生信息删除 |\n”,
“| 5.排序 |\n”,
“| 6.统计总人数 |\n”,
“| 7. 显示所有学生的信息 |\n”,
“| 0.系统退出 |\n”,
“|--------------------------------------------------------------------------|\n”
" |-----------------------------说明:通过数字或上下方向键选择菜单-----------|")`在这里插入图片描述

主程序部分 `

主程序部分 `

在这里插入代码片def main():
     exit = True    #标记是否退出
     while(exit):
            menu()   #显示菜单
            option = input("请选择:") #选择序号进行
            option_str = re.sub("\D","",option)#提取数字
            if option_str in ['0','1','2','3','4','5','6','7',]:
                   option_int = int(option_str)
                   if option_int == 0:
                          print("你已退出该系统")
                          exit = False
                   elif option_int == 1:
                          insert()
                   elif option_int == 2:
                          modify()
                   elif option_int == 3:
                          seach()
                   elif option_int == 4:
                          deleter()
                          '''
                   elif option_int == 5:
                          sort()
                          '''''
                   elif option_int == 6:
                          total()
                   elif option_int == 7:
                          show()`

## 学生信息加入

def insert():
       studentlist = []
       mark = True
       while mark:
              id = input("请输入你的id(如1001):")
              if not id:
                     break
              name = input("请输入你的名字:")
              if not name:
                     break
              age = input("请输入你的年龄:")
              if not age:
                     break
              try:
                     chinese_score = int(input("请输入你的语文成绩"))
                     math_score = int(input("请输入你的数学成绩"))
                     english_score = int(input("请输入你的英语成绩"))
              except:
                     print("输入无效不是整型")
                     continue
              student_dict = {"id":id,"name":name,"age":age,"chinese_score":chinese_score,"math_score":math_score,"english_score":english_score}
              studentlist.append(student_dict)
              inputmark = input("是否继续添加(Y/n):")
              if inputmark == "Y":
                      mark = True
              if inputmark == "n":
                      mark = False
       save(studentlist)
       print("学生信息录入完毕")

## 修改学生信息 ```
def modify():
   show()
   if os.path.exists("student_systeminfo.txt"):
          with open("student_systeminfo.txt",'r') as rfile:
                 student_old = rfile.readlines()
   else:
          return
   studentid = input("请输入你要修改的学生id:")
   with open("student_systeminfo.txt","w") as wfile:
          for student in student_old:
             d = dict(eval(student))
             if d["id"] == studentid:
               print("已找到该名学生,是否进行修改")
               while True:
                  try:
                     d["name"] = input("请输入姓名")
                     d["chinese_score"] = int(input("请输入你的语文成绩"))
                     d["math_score"] = int(input("请输入你的数学成绩"))
                     d["english_score"] = int(input("请输入你的英语成绩"))
                  except:
                     print("您输入的有误,请重新输入")
                  else:
                     break
               student = str(d)
               wfile.write(student+"\n")
               print("修改成功")
             else:
                   wfile.write(student)
   mark = input("是否还需要修改其他学生的信息")
   if mark == "y":
      modify()

## 学生信息查找



def seach():
    mark = True
    student_query = []
    while mark:
        id = ""
        name = ""
        if os.path.exists("student_systeminfo.txt"):
            mode = input("按id查找输入1,按姓名查找输入2:")
            if mode == "1":
                id = input("请输入学生的id:")
            elif mode == "2":
                name = input("请输入学生姓名:")
            else:
                print("输入错误")
                seach()
            with open("student_systeminfo.txt","r") as file:
                student = file.readline()
                for list in student:
                    d = dict(eval(list))
                    if id is not "":
                        if d [id] == id:
                            student_query.append(d)
                    elif name is not "":
                        if d[name] == name:
                            student_query.append(d)
                show_student(student_query)
                student_query.clear()
                inputMark = input("是否继续查询(x/y)")
                if inputMark == "y":
                            mark = True
                else:
                            mark = False
        else:
            print("暂时未保存信息。。。")
            return
          

## 学生包含信息显示
def show_student(studentlist):
    if not studentlist:
        print("无信息")
        return
    format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
    print(format_title.format("id","名字","chinese_score","语文成绩","math_score","数学成绩","english_score","英语成绩"))
    format_data = "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"
    for info in studentlist:
        print(format_data.format(info.get("id")))
        info.get("name"),str(info.get("chinese_score")),str(info.get("math_score")),str(info.get("english_score"))
        str(info.get("chinese_score")+ info.get("math_score")+info.get("english_score").center(12))
        def show():
    student_new = []
    if os.path.exists("student_systeminfo.txt"):
        with open("student_systeminfo.txt","r") as rfile:
            student_old = rfile.readline()
        for list in  student_old:
            student_new.append(eval(list))
        if student_new:
            show_student(student_new)
    else:
        print("暂未保存数据信息")

## 学生信息删除

```def deleter():
       mark = True
       while mark:
              student_id = input("请输入你要删除的学生id去的")
              if student_id is not '':
                     if os.path.exists("student_systeminfo.txt"):#判断文件是否存在
                            with open("student_systeminfo.txt","r") as rfile:
                                   student_old = rfile.readline()
                     else:
                            student_old = []
                     ifdel = False
                     if student_old:
                            with open("student_systeminfo.txt","w") as wfile:
                                   d = {}
                                   for list in student_old:
                                      d = dict(eval(list))
                                      if d['id'] != student_id:
                                             wfile.write(str(d)+'\d')
                                      else:
                                             ifdel = True
                                   if ifdel:
                                          print("id为%s的学生已被删除"%student_id)
                                   else:
                                          print("没有找到id为%s的信息"%student_id)
                     else:
                            print("无信息。。。")
                            break
                     show()
                     inputMark = input("是否要继续删除?【y/n】:")
                     if inputMark == "y":
                            mark = True
                     else:
                            mark = False
                            

## 学生信息排序模块
def sort()

## 成绩总和计算
def total():
    if os.path.exists("student_systeminfo.txt"):
        with open("student_systeminfo.txt","r") as  rfile:
            student_old = rfile.readline()
            if student_old:
                print("一共有%d个学生"%len(student_old))
            else:
                print("没有录入学生信息")
    else:
        print("暂未保存数据信息")
     

## 学生信息运行模块
if __name__=="__main__":
      main()
    

## `源码`
#-*- codeing = utf-8 -*-
#@Time:2021/3/6 22:53
#@Author:publishment ghost
#@File:studentssystem.py
#@Software:PyCharm
#内置模块
import re #re模块为正则表达式
import os #os模块为提供多接口模式
#菜单模块
def menu():
    print( " |-----------------------------学生信息管理系统-----------------------------|\n",
           "|                                                                          |\n",
           "|                            1.学生信息录入                                |\n",
           "|                            2.学生信息修改                                |\n",
           "|                            3.学生信息查询                                |\n",
           "|                            4.学生信息删除                                |\n",
           "|                            5.排序                                        |\n",
           "|                            6.统计总人数                                  |\n",
           "|                            7. 显示所有学生的信息                         |\n",
           "|                            0.系统退出                                    |\n",
           "|--------------------------------------------------------------------------|\n"
           " |-----------------------------说明:通过数字或上下方向键选择菜单-----------|")
#主程序部分
def main():
     exit = True    #标记是否退出
     while(exit):
            menu()   #显示菜单
            option = input("请选择:") #选择序号进行
            option_str = re.sub("\D","",option)#提取数字
            if option_str in ['0','1','2','3','4','5','6','7',]:
                   option_int = int(option_str)
                   if option_int == 0:
                          print("你已退出该系统")
                          exit = False
                   elif option_int == 1:
                          insert()
                   elif option_int == 2:
                          modify()
                   elif option_int == 3:
                          seach()
                   elif option_int == 4:
                          deleter()
                          '''
                   elif option_int == 5:
                          sort()
                          '''''
                   elif option_int == 6:
                          total()
                   elif option_int == 7:
                          show()
def save(student):
       try:
              student_txt = open("student_systeminfo.txt","a")
       except Exception as e:
              student_txt = open("student_systeminfo.txt","w")
       for info in student:
              student_txt.write(str(info)+"\n")
       student_txt.close()
def insert():
       studentlist = []
       mark = True
       while mark:
              id = input("请输入你的id(如1001):")
              if not id:
                     break
              name = input("请输入你的名字:")
              if not name:
                     break
              age = input("请输入你的年龄:")
              if not age:
                     break
              try:
                     chinese_score = int(input("请输入你的语文成绩"))
                     math_score = int(input("请输入你的数学成绩"))
                     english_score = int(input("请输入你的英语成绩"))
              except:
                     print("输入无效不是整型")
                     continue
              student_dict = {"id":id,"name":name,"age":age,"chinese_score":chinese_score,"math_score":math_score,"english_score":english_score}
              studentlist.append(student_dict)
              inputmark = input("是否继续添加(Y/n):")
              if inputmark == "Y":
                      mark = True
              if inputmark == "n":
                      mark = False
       save(studentlist)
       print("学生信息录入完毕")

def modify():
   show()
   if os.path.exists("student_systeminfo.txt"):
          with open("student_systeminfo.txt",'r') as rfile:
                 student_old = rfile.readlines()
   else:
          return
   studentid = input("请输入你要修改的学生id:")
   with open("student_systeminfo.txt","w") as wfile:
          for student in student_old:
             d = dict(eval(student))
             if d["id"] == studentid:
               print("已找到该名学生,是否进行修改")
               while True:
                  try:
                     d["name"] = input("请输入姓名")
                     d["chinese_score"] = int(input("请输入你的语文成绩"))
                     d["math_score"] = int(input("请输入你的数学成绩"))
                     d["english_score"] = int(input("请输入你的英语成绩"))
                  except:
                     print("您输入的有误,请重新输入")
                  else:
                     break
               student = str(d)
               wfile.write(student+"\n")
               print("修改成功")
             else:
                   wfile.write(student)
   mark = input("是否还需要修改其他学生的信息")
   if mark == "y":
      modify()
def seach():
    mark = True
    student_query = []
    while mark:
        id = ""
        name = ""
        if os.path.exists("student_systeminfo.txt"):
            mode = input("按id查找输入1,按姓名查找输入2:")
            if mode == "1":
                id = input("请输入学生的id:")
            elif mode == "2":
                name = input("请输入学生姓名:")
            else:
                print("输入错误")
                seach()
            with open("student_systeminfo.txt","r") as file:
                student = file.readline()
                for list in student:
                    d = dict(eval(list))
                    if id is not "":
                        if d [id] == id:
                            student_query.append(d)
                    elif name is not "":
                        if d[name] == name:
                            student_query.append(d)
                show_student(student_query)
                student_query.clear()
                inputMark = input("是否继续查询(x/y)")
                if inputMark == "y":
                            mark = True
                else:
                            mark = False
        else:
            print("暂时未保存信息。。。")
            return
def show_student(studentlist):
    if not studentlist:
        print("无信息")
        return
    format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
    print(format_title.format("id","名字","chinese_score","语文成绩","math_score","数学成绩","english_score","英语成绩"))
    format_data = "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"
    for info in studentlist:
        print(format_data.format(info.get("id")))
        info.get("name"),str(info.get("chinese_score")),str(info.get("math_score")),str(info.get("english_score"))
        str(info.get("chinese_score")+ info.get("math_score")+info.get("english_score").center(12))
def deleter():
       mark = True
       while mark:
              student_id = input("请输入你要删除的学生id去的")
              if student_id is not '':
                     if os.path.exists("student_systeminfo.txt"):#判断文件是否存在
                            with open("student_systeminfo.txt","r") as rfile:
                                   student_old = rfile.readline()
                     else:
                            student_old = []
                     ifdel = False
                     if student_old:
                            with open("student_systeminfo.txt","w") as wfile:
                                   d = {}
                                   for list in student_old:
                                      d = dict(eval(list))
                                      if d['id'] != student_id:
                                             wfile.write(str(d)+'\d')
                                      else:
                                             ifdel = True
                                   if ifdel:
                                          print("id为%s的学生已被删除"%student_id)
                                   else:
                                          print("没有找到id为%s的信息"%student_id)
                     else:
                            print("无信息。。。")
                            break
                     show()
                     inputMark = input("是否要继续删除?【y/n】:")
                     if inputMark == "y":
                            mark = True
                     else:
                            mark = False
#def sort():

def total():
    if os.path.exists("student_systeminfo.txt"):
        with open("student_systeminfo.txt","r") as  rfile:
            student_old = rfile.readline()
            if student_old:
                print("一共有%d个学生"%len(student_old))
            else:
                print("没有录入学生信息")
    else:
        print("暂未保存数据信息")


def show():
    student_new = []
    if os.path.exists("student_systeminfo.txt"):
        with open("student_systeminfo.txt","r") as rfile:
            student_old = rfile.readline()
        for list in  student_old:
            student_new.append(eval(list))
        if student_new:
            show_student(student_new)
    else:
        print("暂未保存数据信息")
if __name__=="__main__":
      main()

运行程序

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210317154701276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NqanNrc2hz,size_16,color_FFFFFF,t_70)


  • 4
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值