首页 > 编程 > Python > 正文

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

2019-11-25 11:41:30
字体:
来源:转载
供稿:网友

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

简易学生信息管理系统主要功能有

1 录入学生信息
2 查找学生信息
3 删除学生信息
4 修改学生信息
5 排序
6 统计学生总人数
7 显示所有学生信息
0 退出系统

系统运行效果

主菜单的代码方法:

# Author: dry# 开发时间:2019/9/11# 开发工具:PyCharmimport re # 导入正则表达式模块import os # 导入操作系统模块filename = "student.txt" # 学生信息保存文件def menu(): # 输出菜单 print('''  ---------------学生信息管理系统------------  ==================功能菜单================     1 录入学生信息     2 查找学生信息     3 删除学生信息     4 修改学生信息     5 排序     6 统计学生总人数     7 显示所有学生信息     0 退出系统  =======================================      说明:通过数字选择菜单  ======================================= ''')

系统主方法:

def main(): ctrl = True # 标记是否退出系统 while (ctrl):  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('您已退出学生成绩管理系统!')    ctrl = False   elif option_int == 1: # 录入学生成绩信息    insert()   elif option_int == 2: # 查找学生成绩信息    search()   elif option_int == 3: # 删除学生成绩信息    delete()   elif option_int == 4: # 修改学生成绩信息    modify()   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  try:   english = int(input("请输入英语成绩:"))   python = int(input("请输入python成绩:"))   c = int(input("请输入C语言成绩:"))  except:   print("输入无效,不是整型数值,请重新输入信息")   continue   # 将输入的学生信息保存到字典  student = {"id": id, "name": name, "english": english, "python": python, "c": c}  studentList.append(student) # 将学生字典添加到列表中  inputList = input("是否继续添加?(y/n):")  if inputList == 'y': # 继续添加   mark = True  else:   mark = False  save(studentList) # 将学生信息保存到文件  print("学生信息录入完毕!!!")

保存学生信息方法:

'''将学生信息保存到文件'''def save(student): try:  student_txt = open(filename, 'a') # 以追加模式打开 except Exception as e:  student_txt = open(filename, 'w') # 文件不存在,创建文件并打开 for info in student:  student_txt.write(str(info) + "/n") # 执行存储,添加换行符 student_txt.close() # 关闭文件

查询学生信息方法:

'''查询学生信息'''def search(): mark = True student_query = [] while mark:  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") as file:    student = file.readlines()    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("是否继续查询?(y/n):")    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", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩")) format_data = "{:^6}{:^12}/t{:^10}/t{:^10}/t{:^10}/t{:10}" for info in studentList:  print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),         str(info.get("c")),         str(info.get("english") + info.get("python") + info.get("c")).center(12)))

删除学生信息方法:

'''删除学生信息'''def delete(): mark = True # 标记是否循环 while mark:  studentId = input("请输入要删除的学生ID:")  if studentId is not "": # 判断要删除的学生ID是否存在   if os.path.exists(filename):    with open(filename, 'r') as rfile:     student_old = rfile.readlines()   else:    student_old = []   ifdel = False # 标记是否删除   if student_old: # 如果存在学生信息    with open(filename, 'w') as wfile:     d = {} # 定义空字典     for list in student_old:      d = dict(eval(list)) # 字符串转字典      if d['id'] != studentId:       wfile.write(str(d) + "/n") # 将一条信息写入文件      else:       ifdel = True # 标记已经删除     if ifdel:      print("ID为%s的学生信息已经被删除..." % studentId)     else:      print("没有找到ID为%s的学生信息..." % studentId)   else:    print("不存在学生信息")    break   show() # 显示全部学生信息   inputMark = input("是否继续删除?(y/n):")   if inputMark == "y":    mark = True # 继续删除   else:    mark = False # 退出删除学生信息操作

修改学生信息方法:

'''修改学生信息'''def modify(): show() # 显示全部学生信息 if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines() else:  return studentid = input("请输入要修改的学生ID:") with open(filename, 'w') as wfile:  for student in student_old:   d = dict(eval(student))   if d['id'] == studentid:    print("找到了这名学生,可以修改他的信息")    while True: # 输入要修改的信息     try:      d["name"] = input("请输入姓名:")      d["english"] = int(input("请输入英语成绩:"))      d["python"] = int(input("请输入python成绩:"))      d['c'] = int(input("请输入C语言成绩:"))     except:      print("您输入有误,请重新输入!")     else:      break    student = str(d) # 将字典转为字符串    wfile.write(student + "/n") # 将修改信息写入到文件    print("修改成功")   else:    wfile.write(student) # 将未修改的信息写入文件 mark = input("是否继续修改其他学生信息?(y/n):") if mark == "y":  modify()

学生信息排序方法:

'''排序'''def sort(): show() if os.path.exists(filename):  with open(filename, 'r') as file:   student_old = file.readlines()   student_new = []  for list in student_old:   d = dict(eval(list))   student_new.append(d) else:  return ascORdesc = input("请选择(0升序;1降序)") if ascORdesc == "0":  ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序 elif ascORdesc == "1":  ascORdescBool = True else:  print("您输入的信息有误,请重新输入!")  sort() mode = input("请选择排序方式(1按英语成绩排序;2按python成绩排序;3按C语言成绩排序;0按总成绩排序):") if mode == "1": # 按英语成绩排序  student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool) elif mode == "2": # 按python成绩排序  student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool) elif mode == "3": # 按C语言成绩排序  student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool) elif mode == "0": # 按总成绩排序  student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool) else:  print("您的输入有误,请重新输入!")  sort() show_student(student_new) # 显示排序结果

统计学生总数方法:

'''统计学生总数'''def total(): if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines()   if student_old:    print("一共有%d名学生!" % len(student_old))   else:    print("还没有录入学生信息") else:  print("暂未保存数据信息")

显示所有学生信息方法:

'''显示所有学生信息'''def show(): student_new = [] if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines()  for list in student_old:   student_new.append(eval(list))  if student_new:   show_student(student_new)  else:   print("暂未保存数据信息")

开始函数:

if __name__ == '__main__': main()

完整代码如下:

# Author: dry# 开发时间:2019/9/11# 开发工具:PyCharmimport re # 导入正则表达式模块import os # 导入操作系统模块filename = "student.txt" # 学生信息保存文件def menu(): # 输出菜单 print('''  ---------------学生信息管理系统------------  ==================功能菜单================     1 录入学生信息     2 查找学生信息     3 删除学生信息     4 修改学生信息     5 排序     6 统计学生总人数     7 显示所有学生信息     0 退出系统  =======================================      说明:通过数字选择菜单  ======================================= ''')def main(): ctrl = True # 标记是否退出系统 while (ctrl):  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('您已退出学生成绩管理系统!')    ctrl = False   elif option_int == 1: # 录入学生成绩信息    insert()   elif option_int == 2: # 查找学生成绩信息    search()   elif option_int == 3: # 删除学生成绩信息    delete()   elif option_int == 4: # 修改学生成绩信息    modify()   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  try:   english = int(input("请输入英语成绩:"))   python = int(input("请输入python成绩:"))   c = int(input("请输入C语言成绩:"))  except:   print("输入无效,不是整形数值,请重新输入信息")   continue   # 将输入的学生信息保存到字典  student = {"id": id, "name": name, "english": english, "python": python, "c": c}  studentList.append(student) # 将学生字典添加到列表中  inputList = input("是否继续添加?(y/n):")  if inputList == 'y': # 继续添加   mark = True  else:   mark = False  save(studentList) # 将学生信息保存到文件  print("学生信息录入完毕!!!")'''将学生信息保存到文件'''def save(student): try:  student_txt = open(filename, 'a') # 以追加模式打开 except Exception as e:  student_txt = open(filename, 'w') # 文件不存在,创建文件并打开 for info in student:  student_txt.write(str(info) + "/n") # 执行存储,添加换行符 student_txt.close() # 关闭文件'''查询学生信息'''def search(): mark = True student_query = [] while mark:  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") as file:    student = file.readlines()    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("是否继续查询?(y/n):")    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", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩")) format_data = "{:^6}{:^12}/t{:^10}/t{:^10}/t{:^10}/t{:10}" for info in studentList:  print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),         str(info.get("c")),         str(info.get("english") + info.get("python") + info.get("c")).center(12)))'''删除学生信息'''def delete(): mark = True # 标记是否循环 while mark:  studentId = input("请输入要删除的学生ID:")  if studentId is not "": # 判断要删除的学生ID是否存在   if os.path.exists(filename):    with open(filename, 'r') as rfile:     student_old = rfile.readlines()   else:    student_old = []   ifdel = False # 标记是否删除   if student_old: # 如果存在学生信息    with open(filename, 'w') as wfile:     d = {} # 定义空字典     for list in student_old:      d = dict(eval(list)) # 字符串转字典      if d['id'] != studentId:       wfile.write(str(d) + "/n") # 将一条信息写入文件      else:       ifdel = True # 标记已经删除     if ifdel:      print("ID为%s的学生信息已经被删除..." % studentId)     else:      print("没有找到ID为%s的学生信息..." % studentId)   else:    print("不存在学生信息")    break   show() # 显示全部学生信息   inputMark = input("是否继续删除?(y/n):")   if inputMark == "y":    mark = True # 继续删除   else:    mark = False # 退出删除学生信息操作'''修改学生信息'''def modify(): show() # 显示全部学生信息 if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines() else:  return studentid = input("请输入要修改的学生ID:") with open(filename, 'w') as wfile:  for student in student_old:   d = dict(eval(student))   if d['id'] == studentid:    print("找到了这名学生,可以修改他的信息")    while True: # 输入要修改的信息     try:      d["name"] = input("请输入姓名:")      d["english"] = int(input("请输入英语成绩:"))      d["python"] = int(input("请输入python成绩:"))      d['c'] = int(input("请输入C语言成绩:"))     except:      print("您输入有误,请重新输入!")     else:      break    student = str(d) # 将字典转为字符串    wfile.write(student + "/n") # 将修改信息写入到文件    print("修改成功")   else:    wfile.write(student) # 将未修改的信息写入文件 mark = input("是否继续修改其他学生信息?(y/n):") if mark == "y":  modify()'''排序'''def sort(): show() if os.path.exists(filename):  with open(filename, 'r') as file:   student_old = file.readlines()   student_new = []  for list in student_old:   d = dict(eval(list))   student_new.append(d) else:  return ascORdesc = input("请选择(0升序;1降序)") if ascORdesc == "0":  ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序 elif ascORdesc == "1":  ascORdescBool = True else:  print("您输入的信息有误,请重新输入!")  sort() mode = input("请选择排序方式(1按英语成绩排序;2按python成绩排序;3按C语言成绩排序;0按总成绩排序):") if mode == "1": # 按英语成绩排序  student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool) elif mode == "2": # 按python成绩排序  student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool) elif mode == "3": # 按C语言成绩排序  student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool) elif mode == "0": # 按总成绩排序  student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool) else:  print("您的输入有误,请重新输入!")  sort() show_student(student_new) # 显示排序结果'''统计学生总数'''def total(): if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines()   if student_old:    print("一共有%d名学生!" % len(student_old))   else:    print("还没有录入学生信息") else:  print("暂未保存数据信息")'''显示所有学生信息'''def show(): student_new = [] if os.path.exists(filename):  with open(filename, 'r') as rfile:   student_old = rfile.readlines()  for list in student_old:   student_new.append(eval(list))  if student_new:   show_student(student_new)  else:   print("暂未保存数据信息")if __name__ == '__main__': main()

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表