python 实现学生信息管理系统的示例


Posted in Python onNovember 28, 2020

这个是用python实现的基本的增删改查的学生管理系统,其中主要是对输入的数据进行合法性检测的问题,这次又对函数进行了练习!掌握函数更加熟练了!二话不说先贴代码,一切问题请看注释,都很详细,非常适合python3初学者!

以下是操作流程和实现代码:

"""
学生管理系统
主要特点:1.可以检测学号是否重复/有误(不为纯数字)
  2.可以检测手机号是否合法(是否为纯数字)
  3.可以检测性别是否为男或者女
  4.能选择性修个学生的某个属性信息,比如只修改某个学生的手机号码
  5.能够实现基本的增删改查
  6.优化了代码
"""
 
 
name_list = [] # 存储学生信息字典,学生信息用字典存,再用列表存储字典
 
 
# 菜单
def display_menu():
 print("-"*30)
 print(" 学生管理系统 v8.8 ")
 print("1.添加学生信息")
 print("2.删除学生信息")
 print("3.修改学生信息")
 print("4.查询单个学生信息")
 print("5.查询所有学生信息")
 print("6.退出系统")
 print("-"*30)
 
 
# 选择序号的获得
def get_choice():
 selected_key = input("请输入选择的序号:")
 return selected_key
 
 
# 检查性别是否合法
def check_sex(new_sex):
 flag = True
 while flag:
  if new_sex == '男' or new_sex == '女':
   flag = False
  else:
   new_sex = input("输入性别有误,请重新输入(男/女):")
 return new_sex
 
 
# 检查电话号码是否合法
def check_phone(new_phone):
 flag = True
 while flag:
  if new_phone.isdigit():
   flag = False
  else:
   new_phone = input("您输入的电话号码有误,请重新输入:")
 return new_phone
 
 
# 检查学号是否重复或者有误
def check_id(new_id):
 flag = True
 while flag:
  # 先检查是不是纯数字再去考虑是否重复的事情,如果不是纯数字直接pass
  if new_id.isdigit():
   for i in range(len(name_list)):
    if name_list[i]['id'] == new_id:
     new_id = check_id(input("您输入的学号重复,请重新输入:"))
   flag = False
  else:
   new_id = input("您输入的学号有误,请重新输入:")
 return new_id
 
 
# 添加学生信息
def add_name():
 new_info = {}
 new_id = check_id(input("请输入学号:"))
 new_info['id'] = new_id
 new_name = input("请输入姓名:")
 new_info['name'] = new_name
 new_sex = check_sex(input("请输入性别(男/女):"))
 new_info['sex'] = new_sex
 new_phone = check_phone(input("请输入电话号码:"))
 new_info['phone'] = new_phone
 name_list.append(new_info)
 print("添加成功!")
 
 
# 查询所有学生信息
def find_all():
 print("="*30)
 for name in name_list:
  print(name['id'], name['name'], name['sex'], name['phone'])
 print("=" * 30)
 
 
# 删除学生信息
def del_name():
 del_id_is = input("请输入要删除的学生学号:")
 flag = False
 index = 0
 for i in range(len(name_list)):
  if name_list[i]['id'] == del_id_is:
   flag = True
   index = i
   break
 if flag:
  name_list.pop(index)
  print("删除成功!")
 else:
  print("学生未找到!请检查学号输入是否有误!")
 
 
# 名字修改细节函数
def choice_of_name(index):
 while True:
  choice = input("请输入要修改学生的(1.id 2.姓名 3.性别 4.电话号码,5.全部修改):")
  if choice == '5':
   new_id = input("请输入新的学号:")
   name_list[index]['id'] = new_id
   new_name = input("请输入新的姓名:")
   name_list[index]['name'] = new_name
   new_sex = check_sex(input("请输入性别(男/女):"))
   name_list[index]['sex'] = new_sex
   new_phone = check_phone(input("请输入电话号码:"))
   name_list[index]['phone'] = new_phone
   break
  elif choice == '1':
   new_id = input("请输入新的学号:")
   name_list[index]['id'] = new_id
   break
  elif choice == '2':
   new_name = input("请输入新的姓名:")
   name_list[index]['name'] = new_name
   break
  elif choice == '3':
   new_sex = check_sex(input("请输入性别(男/女):"))
   name_list[index]['sex'] = new_sex
   break
  elif choice == '4':
   new_phone = check_phone(input("请输入电话号码:"))
   name_list[index]['phone'] = new_phone
   break
  else:
   print("输入有误,请重新输入!")
 
 
# 修改学生信息
def re_name():
 id_is = input("请输入要修改的学生学号:")
 flag = False
 index = 0
 # 先找到要修改的学生的下标
 for i in range(len(name_list)):
  if name_list[i]['id'] == id_is:
   flag = True
   index = i
   break
 if flag:
  choice_of_name(index)
  print("修改成功!")
 else:
  print("修改失败,学生信息未找到!")
 
 
# 查询单个学生信息
def find_name():
 find_id_is = input("请输入要查询的学生学号:")
 flag = False
 index = 0
 for i in range(len(name_list)):
  if name_list[i]['id'] == find_id_is:
   flag = True
   index = i
   break
 if flag:
  print("学生查询到,学生信息为:")
  print(name_list[index]['id'], name_list[index]['name'], name_list[index]['sex'], name_list[index]['phone'])
 else:
  print("学生未找到!")
 
 
def main():
 exit_name = True
 while exit_name:
  display_menu()
  key = get_choice()
  if key == '1':
   add_name()
  elif key == '2':
   del_name()
  elif key == '3':
   re_name()
  elif key == '4':
   find_name()
  elif key == '5':
   find_all()
  elif key == '6':
   exit_name = False
  else:
   print("请输入正确的数值!")
 
 
main()

以上就是python 实现学生信息管理系统的详细内容,更多关于python 信息管理系统的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
pygame播放音乐的方法
May 19 Python
python+selenium识别验证码并登录的示例代码
Dec 21 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
python多线程与多进程及其区别详解
Aug 08 Python
python文字转语音的实例代码分析
Nov 12 Python
python实现按关键字筛选日志文件
Dec 24 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 #Python
Python3 用什么IDE开发工具比较好
Nov 28 #Python
Pycharm配置autopep8实现流程解析
Nov 28 #Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 #Python
Python安装Bs4的多种方法
Nov 28 #Python
Pycharm Plugins加载失败问题解决方案
Nov 28 #Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 28 #Python
You might like
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
JS 时间显示效果代码
2009/08/23 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
python逐行读取文件内容的三种方法
2014/01/20 Python
python中文编码问题小结
2014/09/28 Python
python中set常用操作汇总
2016/06/30 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
文史专业毕业生自荐信
2013/11/17 职场文书
同学会邀请书大全
2014/01/12 职场文书
实习公司领导推荐函
2014/05/21 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
以下牛机,你有几个
2022/04/05 无线电
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL