python初学者,用python实现基本的学生管理系统(python3)代码实例


Posted in Python onApril 10, 2019

这个是用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 实现文件的全备份和差异备份详解
Dec 27 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python面向对象程序设计之继承与多继承用法分析
Jul 13 Python
python读取Excel实例详解
Aug 17 Python
python事件驱动event实现详解
Nov 21 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
python编写微信公众号首图思路详解
Dec 13 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
python如何建立全零数组
Jul 19 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
Python将json文件写入ES数据库的方法
Apr 10 #Python
pycharm创建一个python包方法图解
Apr 10 #Python
Python socket模块实现的udp通信功能示例
Apr 10 #Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 #Python
一个可以套路别人的python小程序实例代码
Apr 09 #Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 #Python
详解Python 解压缩文件
Apr 09 #Python
You might like
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
webpack多页面开发实践
2017/12/18 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
Python Logging 日志记录入门学习
2018/06/02 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
Java程序员面试90题
2013/10/19 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
大学迎新标语
2014/06/26 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
canvas实现贪食蛇的实践
2022/02/15 Javascript
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android